...
1# Copyright 2020 Google LLC
2#
3# Licensed under the Apache License, Version 2.0 (the "License");
4# you may not use this file except in compliance with the License.
5# You may obtain a copy of the License at
6#
7# http://www.apache.org/licenses/LICENSE-2.0
8#
9# Unless required by applicable law or agreed to in writing, software
10# distributed under the License is distributed on an "AS IS" BASIS,
11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12# See the License for the specific language governing permissions and
13# limitations under the License.
14
15apiVersion: apiextensions.k8s.io/v1
16kind: CustomResourceDefinition
17metadata:
18 annotations:
19 cnrm.cloud.google.com/version: 1.106.0
20 creationTimestamp: null
21 labels:
22 cnrm.cloud.google.com/managed-by-kcc: "true"
23 cnrm.cloud.google.com/stability-level: alpha
24 cnrm.cloud.google.com/system: "true"
25 cnrm.cloud.google.com/tf2crd: "true"
26 name: gkebackupbackupplans.gkebackup.cnrm.cloud.google.com
27spec:
28 group: gkebackup.cnrm.cloud.google.com
29 names:
30 categories:
31 - gcp
32 kind: GKEBackupBackupPlan
33 plural: gkebackupbackupplans
34 shortNames:
35 - gcpgkebackupbackupplan
36 - gcpgkebackupbackupplans
37 singular: gkebackupbackupplan
38 scope: Namespaced
39 versions:
40 - additionalPrinterColumns:
41 - jsonPath: .metadata.creationTimestamp
42 name: Age
43 type: date
44 - description: When 'True', the most recent reconcile of the resource succeeded
45 jsonPath: .status.conditions[?(@.type=='Ready')].status
46 name: Ready
47 type: string
48 - description: The reason for the value in 'Ready'
49 jsonPath: .status.conditions[?(@.type=='Ready')].reason
50 name: Status
51 type: string
52 - description: The last transition time for the value in 'Status'
53 jsonPath: .status.conditions[?(@.type=='Ready')].lastTransitionTime
54 name: Status Age
55 type: date
56 name: v1alpha1
57 schema:
58 openAPIV3Schema:
59 properties:
60 apiVersion:
61 description: 'apiVersion defines the versioned schema of this representation
62 of an object. Servers should convert recognized schemas to the latest
63 internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'
64 type: string
65 kind:
66 description: 'kind is a string value representing the REST resource this
67 object represents. Servers may infer this from the endpoint the client
68 submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'
69 type: string
70 metadata:
71 type: object
72 spec:
73 properties:
74 backupConfig:
75 description: Defines the configuration of Backups created via this
76 BackupPlan.
77 properties:
78 allNamespaces:
79 description: If True, include all namespaced resources.
80 type: boolean
81 encryptionKey:
82 description: |-
83 This defines a customer managed encryption key that will be used to encrypt the "config"
84 portion (the Kubernetes resources) of Backups created via this plan.
85 properties:
86 gcpKmsEncryptionKey:
87 description: 'Google Cloud KMS encryption key. Format: projects/*/locations/*/keyRings/*/cryptoKeys/*.'
88 type: string
89 required:
90 - gcpKmsEncryptionKey
91 type: object
92 includeSecrets:
93 description: |-
94 This flag specifies whether Kubernetes Secret resources should be included
95 when they fall into the scope of Backups.
96 type: boolean
97 includeVolumeData:
98 description: |-
99 This flag specifies whether volume data should be backed up when PVCs are
100 included in the scope of a Backup.
101 type: boolean
102 selectedApplications:
103 description: A list of namespaced Kubernetes Resources.
104 properties:
105 namespacedNames:
106 description: A list of namespaced Kubernetes resources.
107 items:
108 properties:
109 name:
110 description: The name of a Kubernetes Resource.
111 type: string
112 namespace:
113 description: The namespace of a Kubernetes Resource.
114 type: string
115 required:
116 - name
117 - namespace
118 type: object
119 type: array
120 required:
121 - namespacedNames
122 type: object
123 selectedNamespaces:
124 description: If set, include just the resources in the listed
125 namespaces.
126 properties:
127 namespaces:
128 description: A list of Kubernetes Namespaces.
129 items:
130 type: string
131 type: array
132 required:
133 - namespaces
134 type: object
135 type: object
136 backupSchedule:
137 description: Defines a schedule for automatic Backup creation via
138 this BackupPlan.
139 properties:
140 cronSchedule:
141 description: |-
142 A standard cron string that defines a repeating schedule for
143 creating Backups via this BackupPlan.
144 If this is defined, then backupRetainDays must also be defined.
145 type: string
146 paused:
147 description: This flag denotes whether automatic Backup creation
148 is paused for this BackupPlan.
149 type: boolean
150 type: object
151 cluster:
152 description: Immutable. The source cluster from which Backups will
153 be created via this BackupPlan.
154 type: string
155 deactivated:
156 description: |-
157 This flag indicates whether this BackupPlan has been deactivated.
158 Setting this field to True locks the BackupPlan such that no further updates will be allowed
159 (except deletes), including the deactivated field itself. It also prevents any new Backups
160 from being created via this BackupPlan (including scheduled Backups).
161 type: boolean
162 description:
163 description: User specified descriptive string for this BackupPlan.
164 type: string
165 location:
166 description: Immutable. The region of the Backup Plan.
167 type: string
168 projectRef:
169 description: The project that this resource belongs to.
170 oneOf:
171 - not:
172 required:
173 - external
174 required:
175 - name
176 - not:
177 anyOf:
178 - required:
179 - name
180 - required:
181 - namespace
182 required:
183 - external
184 properties:
185 external:
186 description: 'Allowed value: The `name` field of a `Project` resource.'
187 type: string
188 name:
189 description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
190 type: string
191 namespace:
192 description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
193 type: string
194 type: object
195 resourceID:
196 description: Immutable. Optional. The name of the resource. Used for
197 creation and acquisition. When unset, the value of `metadata.name`
198 is used as the default.
199 type: string
200 retentionPolicy:
201 description: RetentionPolicy governs lifecycle of Backups created
202 under this plan.
203 properties:
204 backupDeleteLockDays:
205 description: |-
206 Minimum age for a Backup created via this BackupPlan (in days).
207 Must be an integer value between 0-90 (inclusive).
208 A Backup created under this BackupPlan will not be deletable
209 until it reaches Backup's (create time + backup_delete_lock_days).
210 Updating this field of a BackupPlan does not affect existing Backups.
211 Backups created after a successful update will inherit this new value.
212 type: integer
213 backupRetainDays:
214 description: |-
215 The default maximum age of a Backup created via this BackupPlan.
216 This field MUST be an integer value >= 0 and <= 365. If specified,
217 a Backup created under this BackupPlan will be automatically deleted
218 after its age reaches (createTime + backupRetainDays).
219 If not specified, Backups created under this BackupPlan will NOT be
220 subject to automatic deletion. Updating this field does NOT affect
221 existing Backups under it. Backups created AFTER a successful update
222 will automatically pick up the new value.
223 NOTE: backupRetainDays must be >= backupDeleteLockDays.
224 If cronSchedule is defined, then this must be <= 360 * the creation interval.].
225 type: integer
226 locked:
227 description: |-
228 This flag denotes whether the retention policy of this BackupPlan is locked.
229 If set to True, no further update is allowed on this policy, including
230 the locked field itself.
231 type: boolean
232 type: object
233 required:
234 - cluster
235 - location
236 - projectRef
237 type: object
238 status:
239 properties:
240 conditions:
241 description: Conditions represent the latest available observation
242 of the resource's current state.
243 items:
244 properties:
245 lastTransitionTime:
246 description: Last time the condition transitioned from one status
247 to another.
248 type: string
249 message:
250 description: Human-readable message indicating details about
251 last transition.
252 type: string
253 reason:
254 description: Unique, one-word, CamelCase reason for the condition's
255 last transition.
256 type: string
257 status:
258 description: Status is the status of the condition. Can be True,
259 False, Unknown.
260 type: string
261 type:
262 description: Type is the type of the condition.
263 type: string
264 type: object
265 type: array
266 etag:
267 description: |-
268 etag is used for optimistic concurrency control as a way to help prevent simultaneous
269 updates of a backup plan from overwriting each other. It is strongly suggested that
270 systems make use of the 'etag' in the read-modify-write cycle to perform BackupPlan updates
271 in order to avoid race conditions: An etag is returned in the response to backupPlans.get,
272 and systems are expected to put that etag in the request to backupPlans.patch or
273 backupPlans.delete to ensure that their change will be applied to the same version of the resource.
274 type: string
275 observedGeneration:
276 description: ObservedGeneration is the generation of the resource
277 that was most recently observed by the Config Connector controller.
278 If this is equal to metadata.generation, then that means that the
279 current reported status reflects the most recent desired state of
280 the resource.
281 type: integer
282 protectedPodCount:
283 description: The number of Kubernetes Pods backed up in the last successful
284 Backup created via this BackupPlan.
285 type: integer
286 uid:
287 description: Server generated, unique identifier of UUID format.
288 type: string
289 type: object
290 required:
291 - spec
292 type: object
293 served: true
294 storage: true
295 subresources:
296 status: {}
297status:
298 acceptedNames:
299 kind: ""
300 plural: ""
301 conditions: []
302 storedVersions: []
View as plain text