|
173 | 173 | "description": "Kind of the referent.", |
174 | 174 | "enum": [ |
175 | 175 | "OCIRepository", |
176 | | - "HelmChart" |
| 176 | + "HelmChart", |
| 177 | + "ExternalArtifact" |
177 | 178 | ], |
178 | 179 | "type": "string" |
179 | 180 | }, |
|
197 | 198 | "type": "object", |
198 | 199 | "additionalProperties": false |
199 | 200 | }, |
| 201 | + "commonMetadata": { |
| 202 | + "description": "CommonMetadata specifies the common labels and annotations that are\napplied to all resources. Any existing label or annotation will be\noverridden if its key matches a common one.", |
| 203 | + "properties": { |
| 204 | + "annotations": { |
| 205 | + "additionalProperties": { |
| 206 | + "type": "string" |
| 207 | + }, |
| 208 | + "description": "Annotations to be added to the object's metadata.", |
| 209 | + "type": "object" |
| 210 | + }, |
| 211 | + "labels": { |
| 212 | + "additionalProperties": { |
| 213 | + "type": "string" |
| 214 | + }, |
| 215 | + "description": "Labels to be added to the object's metadata.", |
| 216 | + "type": "object" |
| 217 | + } |
| 218 | + }, |
| 219 | + "type": "object", |
| 220 | + "additionalProperties": false |
| 221 | + }, |
200 | 222 | "dependsOn": { |
201 | | - "description": "DependsOn may contain a meta.NamespacedObjectReference slice with\nreferences to HelmRelease resources that must be ready before this HelmRelease\ncan be reconciled.", |
| 223 | + "description": "DependsOn may contain a DependencyReference slice with\nreferences to HelmRelease resources that must be ready before this HelmRelease\ncan be reconciled.", |
202 | 224 | "items": { |
203 | | - "description": "NamespacedObjectReference contains enough information to locate the referenced Kubernetes resource object in any\nnamespace.", |
| 225 | + "description": "DependencyReference defines a HelmRelease dependency on another HelmRelease resource.", |
204 | 226 | "properties": { |
205 | 227 | "name": { |
206 | 228 | "description": "Name of the referent.", |
207 | 229 | "type": "string" |
208 | 230 | }, |
209 | 231 | "namespace": { |
210 | | - "description": "Namespace of the referent, when not specified it acts as LocalObjectReference.", |
| 232 | + "description": "Namespace of the referent, defaults to the namespace of the HelmRelease\nresource object that contains the reference.", |
| 233 | + "type": "string" |
| 234 | + }, |
| 235 | + "readyExpr": { |
| 236 | + "description": "ReadyExpr is a CEL expression that can be used to assess the readiness\nof a dependency. When specified, the built-in readiness check\nis replaced by the logic defined in the CEL expression.\nTo make the CEL expression additive to the built-in readiness check,\nthe feature gate `AdditiveCELDependencyCheck` must be set to `true`.", |
211 | 237 | "type": "string" |
212 | 238 | } |
213 | 239 | }, |
|
358 | 384 | "description": "SkipCRDs tells the Helm install action to not install any CRDs. By default,\nCRDs are installed if not already present.\n\nDeprecated use CRD policy (`crds`) attribute with value `Skip` instead.", |
359 | 385 | "type": "boolean" |
360 | 386 | }, |
| 387 | + "strategy": { |
| 388 | + "description": "Strategy defines the install strategy to use for this HelmRelease.\nDefaults to 'RemediateOnFailure'.", |
| 389 | + "properties": { |
| 390 | + "name": { |
| 391 | + "description": "Name of the install strategy.", |
| 392 | + "enum": [ |
| 393 | + "RemediateOnFailure", |
| 394 | + "RetryOnFailure" |
| 395 | + ], |
| 396 | + "type": "string" |
| 397 | + }, |
| 398 | + "retryInterval": { |
| 399 | + "description": "RetryInterval is the interval at which to retry a failed install.\nCan be used only when Name is set to RetryOnFailure.\nDefaults to '5m'.", |
| 400 | + "pattern": "^([0-9]+(\\.[0-9]+)?(ms|s|m|h))+$", |
| 401 | + "type": "string" |
| 402 | + } |
| 403 | + }, |
| 404 | + "required": [ |
| 405 | + "name" |
| 406 | + ], |
| 407 | + "type": "object", |
| 408 | + "x-kubernetes-validations": [ |
| 409 | + { |
| 410 | + "message": ".retryInterval cannot be set when .name is 'RemediateOnFailure'", |
| 411 | + "rule": "!has(self.retryInterval) || self.name != 'RemediateOnFailure'" |
| 412 | + } |
| 413 | + ], |
| 414 | + "additionalProperties": false |
| 415 | + }, |
361 | 416 | "timeout": { |
362 | 417 | "description": "Timeout is the time to wait for any individual Kubernetes operation (like\nJobs for hooks) during the performance of a Helm install action. Defaults to\n'HelmReleaseSpec.Timeout'.", |
363 | 418 | "pattern": "^([0-9]+(\\.[0-9]+)?(ms|s|m|h))+$", |
|
375 | 430 | "kubeConfig": { |
376 | 431 | "description": "KubeConfig for reconciling the HelmRelease on a remote cluster.\nWhen used in combination with HelmReleaseSpec.ServiceAccountName,\nforces the controller to act on behalf of that Service Account at the\ntarget cluster.\nIf the --default-service-account flag is set, its value will be used as\na controller level fallback for when HelmReleaseSpec.ServiceAccountName\nis empty.", |
377 | 432 | "properties": { |
| 433 | + "configMapRef": { |
| 434 | + "description": "ConfigMapRef holds an optional name of a ConfigMap that contains\nthe following keys:\n\n- `provider`: the provider to use. One of `aws`, `azure`, `gcp`, or\n `generic`. Required.\n- `cluster`: the fully qualified resource name of the Kubernetes\n cluster in the cloud provider API. Not used by the `generic`\n provider. Required when one of `address` or `ca.crt` is not set.\n- `address`: the address of the Kubernetes API server. Required\n for `generic`. For the other providers, if not specified, the\n first address in the cluster resource will be used, and if\n specified, it must match one of the addresses in the cluster\n resource.\n If audiences is not set, will be used as the audience for the\n `generic` provider.\n- `ca.crt`: the optional PEM-encoded CA certificate for the\n Kubernetes API server. If not set, the controller will use the\n CA certificate from the cluster resource.\n- `audiences`: the optional audiences as a list of\n line-break-separated strings for the Kubernetes ServiceAccount\n token. Defaults to the `address` for the `generic` provider, or\n to specific values for the other providers depending on the\n provider.\n- `serviceAccountName`: the optional name of the Kubernetes\n ServiceAccount in the same namespace that should be used\n for authentication. If not specified, the controller\n ServiceAccount will be used.\n\nMutually exclusive with SecretRef.", |
| 435 | + "properties": { |
| 436 | + "name": { |
| 437 | + "description": "Name of the referent.", |
| 438 | + "type": "string" |
| 439 | + } |
| 440 | + }, |
| 441 | + "required": [ |
| 442 | + "name" |
| 443 | + ], |
| 444 | + "type": "object", |
| 445 | + "additionalProperties": false |
| 446 | + }, |
378 | 447 | "secretRef": { |
379 | | - "description": "SecretRef holds the name of a secret that contains a key with\nthe kubeconfig file as the value. If no key is set, the key will default\nto 'value'.\nIt is recommended that the kubeconfig is self-contained, and the secret\nis regularly updated if credentials such as a cloud-access-token expire.\nCloud specific `cmd-path` auth helpers will not function without adding\nbinaries and credentials to the Pod that is responsible for reconciling\nKubernetes resources.", |
| 448 | + "description": "SecretRef holds an optional name of a secret that contains a key with\nthe kubeconfig file as the value. If no key is set, the key will default\nto 'value'. Mutually exclusive with ConfigMapRef.\nIt is recommended that the kubeconfig is self-contained, and the secret\nis regularly updated if credentials such as a cloud-access-token expire.\nCloud specific `cmd-path` auth helpers will not function without adding\nbinaries and credentials to the Pod that is responsible for reconciling\nKubernetes resources. Supported only for the generic provider.", |
380 | 449 | "properties": { |
381 | 450 | "key": { |
382 | 451 | "description": "Key in the Secret, when not specified an implementation-specific default key is used.", |
|
394 | 463 | "additionalProperties": false |
395 | 464 | } |
396 | 465 | }, |
397 | | - "required": [ |
398 | | - "secretRef" |
399 | | - ], |
400 | 466 | "type": "object", |
| 467 | + "x-kubernetes-validations": [ |
| 468 | + { |
| 469 | + "message": "exactly one of spec.kubeConfig.configMapRef or spec.kubeConfig.secretRef must be specified", |
| 470 | + "rule": "has(self.configMapRef) || has(self.secretRef)" |
| 471 | + }, |
| 472 | + { |
| 473 | + "message": "exactly one of spec.kubeConfig.configMapRef or spec.kubeConfig.secretRef must be specified", |
| 474 | + "rule": "!has(self.configMapRef) || !has(self.secretRef)" |
| 475 | + } |
| 476 | + ], |
401 | 477 | "additionalProperties": false |
402 | 478 | }, |
403 | 479 | "maxHistory": { |
|
731 | 807 | "type": "object", |
732 | 808 | "additionalProperties": false |
733 | 809 | }, |
| 810 | + "strategy": { |
| 811 | + "description": "Strategy defines the upgrade strategy to use for this HelmRelease.\nDefaults to 'RemediateOnFailure'.", |
| 812 | + "properties": { |
| 813 | + "name": { |
| 814 | + "description": "Name of the upgrade strategy.", |
| 815 | + "enum": [ |
| 816 | + "RemediateOnFailure", |
| 817 | + "RetryOnFailure" |
| 818 | + ], |
| 819 | + "type": "string" |
| 820 | + }, |
| 821 | + "retryInterval": { |
| 822 | + "description": "RetryInterval is the interval at which to retry a failed upgrade.\nCan be used only when Name is set to RetryOnFailure.\nDefaults to '5m'.", |
| 823 | + "pattern": "^([0-9]+(\\.[0-9]+)?(ms|s|m|h))+$", |
| 824 | + "type": "string" |
| 825 | + } |
| 826 | + }, |
| 827 | + "required": [ |
| 828 | + "name" |
| 829 | + ], |
| 830 | + "type": "object", |
| 831 | + "x-kubernetes-validations": [ |
| 832 | + { |
| 833 | + "message": ".retryInterval can only be set when .name is 'RetryOnFailure'", |
| 834 | + "rule": "!has(self.retryInterval) || self.name == 'RetryOnFailure'" |
| 835 | + } |
| 836 | + ], |
| 837 | + "additionalProperties": false |
| 838 | + }, |
734 | 839 | "timeout": { |
735 | 840 | "description": "Timeout is the time to wait for any individual Kubernetes operation (like\nJobs for hooks) during the performance of a Helm upgrade action. Defaults to\n'HelmReleaseSpec.Timeout'.", |
736 | 841 | "pattern": "^([0-9]+(\\.[0-9]+)?(ms|s|m|h))+$", |
|
995 | 1100 | "type": "integer" |
996 | 1101 | }, |
997 | 1102 | "lastAttemptedReleaseAction": { |
998 | | - "description": "LastAttemptedReleaseAction is the last release action performed for this\nHelmRelease. It is used to determine the active remediation strategy.", |
| 1103 | + "description": "LastAttemptedReleaseAction is the last release action performed for this\nHelmRelease. It is used to determine the active retry or remediation\nstrategy.", |
999 | 1104 | "enum": [ |
1000 | 1105 | "install", |
1001 | 1106 | "upgrade" |
1002 | 1107 | ], |
1003 | 1108 | "type": "string" |
1004 | 1109 | }, |
| 1110 | + "lastAttemptedReleaseActionDuration": { |
| 1111 | + "description": "LastAttemptedReleaseActionDuration is the duration of the last\nrelease action performed for this HelmRelease.", |
| 1112 | + "type": "string" |
| 1113 | + }, |
1005 | 1114 | "lastAttemptedRevision": { |
1006 | 1115 | "description": "LastAttemptedRevision is the Source revision of the last reconciliation\nattempt. For OCIRepository sources, the 12 first characters of the digest are\nappended to the chart version e.g. \"1.2.3+1234567890ab\".", |
1007 | 1116 | "type": "string" |
|
1011 | 1120 | "type": "string" |
1012 | 1121 | }, |
1013 | 1122 | "lastAttemptedValuesChecksum": { |
1014 | | - "description": "LastAttemptedValuesChecksum is the SHA1 checksum for the values of the last\nreconciliation attempt.\nDeprecated: Use LastAttemptedConfigDigest instead.", |
| 1123 | + "description": "LastAttemptedValuesChecksum is the SHA1 checksum for the values of the last\nreconciliation attempt.\n\nDeprecated: Use LastAttemptedConfigDigest instead.", |
1015 | 1124 | "type": "string" |
1016 | 1125 | }, |
1017 | 1126 | "lastHandledForceAt": { |
1018 | | - "description": "LastHandledForceAt holds the value of the most recent force request\nvalue, so a change of the annotation value can be detected.", |
| 1127 | + "description": "LastHandledForceAt holds the value of the most recent\nforce request value, so a change of the annotation value\ncan be detected.", |
1019 | 1128 | "type": "string" |
1020 | 1129 | }, |
1021 | 1130 | "lastHandledReconcileAt": { |
|
1027 | 1136 | "type": "string" |
1028 | 1137 | }, |
1029 | 1138 | "lastReleaseRevision": { |
1030 | | - "description": "LastReleaseRevision is the revision of the last successful Helm release.\nDeprecated: Use History instead.", |
| 1139 | + "description": "LastReleaseRevision is the revision of the last successful Helm release.\n\nDeprecated: Use History instead.", |
1031 | 1140 | "type": "integer" |
1032 | 1141 | }, |
| 1142 | + "observedCommonMetadataDigest": { |
| 1143 | + "description": "ObservedCommonMetadataDigest is the digest for the common metadata of\nthe last successful reconciliation attempt.", |
| 1144 | + "type": "string" |
| 1145 | + }, |
1033 | 1146 | "observedGeneration": { |
1034 | 1147 | "description": "ObservedGeneration is the last observed generation.", |
1035 | 1148 | "format": "int64", |
|
0 commit comments