diff --git a/apis/types/types.go b/apis/types/types.go index 0680be140..4179dcfe7 100644 --- a/apis/types/types.go +++ b/apis/types/types.go @@ -85,4 +85,5 @@ var DefaultFilterAnnots = []string{ oam.AnnotationInplaceUpgrade, oam.AnnotationFilterLabelKeys, oam.AnnotationFilterAnnotationKeys, + oam.AnnotationLastAppliedConfiguration, } diff --git a/charts/vela-core/templates/addons/fluxcd.yaml b/charts/vela-core/templates/addons/fluxcd.yaml index e6d25426e..eeb0ecafd 100644 --- a/charts/vela-core/templates/addons/fluxcd.yaml +++ b/charts/vela-core/templates/addons/fluxcd.yaml @@ -1,607 +1,632 @@ apiVersion: v1 data: - initializer: | + application: | apiVersion: core.oam.dev/v1beta1 - kind: Initializer + kind: Application metadata: annotations: addons.oam.dev/description: Flux is a set of continuous and progressive delivery solutions for Kubernetes + filter.oam.dev/annotation-keys: app.oam.dev/last-applied-configuration name: fluxcd namespace: vela-system spec: - appTemplate: - spec: - components: - - name: alerts.notification.toolkit.fluxcd.io - properties: - apiVersion: apiextensions.k8s.io/v1 - kind: CustomResourceDefinition - metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.5.0 - labels: - app.kubernetes.io/instance: flux-system - name: alerts.notification.toolkit.fluxcd.io - spec: - group: notification.toolkit.fluxcd.io - names: - kind: Alert - listKind: AlertList - plural: alerts - singular: alert - scope: Namespaced - versions: - - additionalPrinterColumns: - - jsonPath: .status.conditions[?(@.type=="Ready")].status - name: Ready - type: string - - jsonPath: .status.conditions[?(@.type=="Ready")].message - name: Status - type: string - - jsonPath: .metadata.creationTimestamp - name: Age - type: date - name: v1beta1 - schema: - openAPIV3Schema: - description: Alert is the Schema for the alerts API + components: + - name: ns-flux-system + properties: + apiVersion: v1 + kind: Namespace + metadata: + name: flux-system + type: raw + - name: alerts.notification.toolkit.fluxcd.io + properties: + apiVersion: apiextensions.k8s.io/v1 + kind: CustomResourceDefinition + metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.5.0 + labels: + app.kubernetes.io/instance: flux-system + name: alerts.notification.toolkit.fluxcd.io + spec: + group: notification.toolkit.fluxcd.io + names: + kind: Alert + listKind: AlertList + plural: alerts + singular: alert + scope: Namespaced + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=="Ready")].status + name: Ready + type: string + - jsonPath: .status.conditions[?(@.type=="Ready")].message + name: Status + type: string + - jsonPath: .metadata.creationTimestamp + name: Age + type: date + name: v1beta1 + schema: + openAPIV3Schema: + description: Alert is the Schema for the alerts API + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the + latest internal value, and may reject unrecognized values. More + info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource + this object represents. Servers may infer this from the endpoint + the client submits requests to. Cannot be updated. In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: AlertSpec defines an alerting rule for events involving + a list of objects properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this - representation of an object. Servers should convert recognized - schemas to the latest internal value, and may reject unrecognized - values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + eventSeverity: + default: info + description: Filter events based on severity, defaults to ('info'). + If set to 'info' no events will be filtered. + enum: + - info + - error type: string - kind: - description: 'Kind is a string value representing the REST resource - this object represents. Servers may infer this from the endpoint - the client submits requests to. Cannot be updated. In CamelCase. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: AlertSpec defines an alerting rule for events involving - a list of objects + eventSources: + description: Filter events based on the involved objects. + items: + description: CrossNamespaceObjectReference contains enough + information to let you locate the typed referenced object + at cluster level + properties: + apiVersion: + description: API version of the referent + type: string + kind: + description: Kind of the referent + enum: + - Bucket + - GitRepository + - Kustomization + - HelmRelease + - HelmChart + - HelmRepository + - ImageRepository + - ImagePolicy + - ImageUpdateAutomation + type: string + name: + description: Name of the referent + maxLength: 53 + minLength: 1 + type: string + namespace: + description: Namespace of the referent + maxLength: 53 + minLength: 1 + type: string + required: + - name + type: object + type: array + exclusionList: + description: A list of Golang regular expressions to be used + for excluding messages. + items: + type: string + type: array + providerRef: + description: Send events using this provider. properties: - eventSeverity: - default: info - description: Filter events based on severity, defaults to - ('info'). If set to 'info' no events will be filtered. - enum: - - info - - error + name: + description: Name of the referent type: string - eventSources: - description: Filter events based on the involved objects. - items: - description: CrossNamespaceObjectReference contains enough - information to let you locate the typed referenced object - at cluster level + required: + - name + type: object + summary: + description: Short description of the impact and affected cluster. + type: string + suspend: + description: This flag tells the controller to suspend subsequent + events dispatching. Defaults to false. + type: boolean + required: + - eventSources + - providerRef + type: object + status: + description: AlertStatus defines the observed state of Alert + properties: + conditions: + items: + description: "Condition contains details for one aspect of + the current state of this API Resource. --- This struct + is intended for direct use as an array at the field path + .status.conditions. For example, type FooStatus struct{ + \ // Represents the observations of a foo's current state. + \ // Known .status.conditions.type are: \"Available\", + \"Progressing\", and \"Degraded\" // +patchMergeKey=type + \ // +patchStrategy=merge // +listType=map // + +listMapKey=type Conditions []metav1.Condition `json:\"conditions,omitempty\" + patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` + \n // other fields }" + properties: + lastTransitionTime: + description: lastTransitionTime is the last time the condition + transitioned from one status to another. This should + be when the underlying condition changed. If that is + not known, then using the time when the API field changed + is acceptable. + format: date-time + type: string + message: + description: message is a human readable message indicating + details about the transition. This may be an empty string. + maxLength: 32768 + type: string + observedGeneration: + description: observedGeneration represents the .metadata.generation + that the condition was set based upon. For instance, + if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration + is 9, the condition is out of date with respect to the + current state of the instance. + format: int64 + minimum: 0 + type: integer + reason: + description: reason contains a programmatic identifier + indicating the reason for the condition's last transition. + Producers of specific condition types may define expected + values and meanings for this field, and whether the + values are considered a guaranteed API. The value should + be a CamelCase string. This field may not be empty. + maxLength: 1024 + minLength: 1 + pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ + type: string + status: + description: status of the condition, one of True, False, + Unknown. + enum: + - "True" + - "False" + - Unknown + type: string + type: + description: type of condition in CamelCase or in foo.example.com/CamelCase. + --- Many .condition.type values are consistent across + resources like Available, but because arbitrary conditions + can be useful (see .node.status.conditions), the ability + to deconflict is important. The regex it matches is + (dns1123SubdomainFmt/)?(qualifiedNameFmt) + maxLength: 316 + pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ + type: string + required: + - lastTransitionTime + - message + - reason + - status + - type + type: object + type: array + observedGeneration: + description: ObservedGeneration is the last observed generation. + format: int64 + type: integer + type: object + type: object + served: true + storage: true + subresources: + status: {} + type: raw + - name: buckets.source.toolkit.fluxcd.io + properties: + apiVersion: apiextensions.k8s.io/v1 + kind: CustomResourceDefinition + metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.5.0 + labels: + app.kubernetes.io/instance: flux-system + name: buckets.source.toolkit.fluxcd.io + spec: + group: source.toolkit.fluxcd.io + names: + kind: Bucket + listKind: BucketList + plural: buckets + singular: bucket + scope: Namespaced + versions: + - additionalPrinterColumns: + - jsonPath: .spec.url + name: URL + type: string + - jsonPath: .status.conditions[?(@.type=="Ready")].status + name: Ready + type: string + - jsonPath: .status.conditions[?(@.type=="Ready")].message + name: Status + type: string + - jsonPath: .metadata.creationTimestamp + name: Age + type: date + name: v1beta1 + schema: + openAPIV3Schema: + description: Bucket is the Schema for the buckets API + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the + latest internal value, and may reject unrecognized values. More + info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource + this object represents. Servers may infer this from the endpoint + the client submits requests to. Cannot be updated. In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: BucketSpec defines the desired state of an S3 compatible + bucket + properties: + bucketName: + description: The bucket name. + type: string + endpoint: + description: The bucket endpoint address. + type: string + ignore: + description: Ignore overrides the set of excluded patterns in + the .sourceignore format (which is the same as .gitignore). + If not provided, a default will be used, consult the documentation + for your version to find out what those are. + type: string + insecure: + description: Insecure allows connecting to a non-TLS S3 HTTP + endpoint. + type: boolean + interval: + description: The interval at which to check for bucket updates. + type: string + provider: + default: generic + description: The S3 compatible storage provider name, default + ('generic'). + enum: + - generic + - aws + type: string + region: + description: The bucket region. + type: string + secretRef: + description: The name of the secret containing authentication + credentials for the Bucket. + properties: + name: + description: Name of the referent + type: string + required: + - name + type: object + suspend: + description: This flag tells the controller to suspend the reconciliation + of this source. + type: boolean + timeout: + default: 20s + description: The timeout for download operations, defaults to + 20s. + type: string + required: + - bucketName + - endpoint + - interval + type: object + status: + description: BucketStatus defines the observed state of a bucket + properties: + artifact: + description: Artifact represents the output of the last successful + Bucket sync. + properties: + checksum: + description: Checksum is the SHA1 checksum of the artifact. + type: string + lastUpdateTime: + description: LastUpdateTime is the timestamp corresponding + to the last update of this artifact. + format: date-time + type: string + path: + description: Path is the relative file path of this artifact. + type: string + revision: + description: Revision is a human readable identifier traceable + in the origin source system. It can be a Git commit SHA, + Git tag, a Helm index timestamp, a Helm chart version, + etc. + type: string + url: + description: URL is the HTTP address of this artifact. + type: string + required: + - path + - url + type: object + conditions: + description: Conditions holds the conditions for the Bucket. + items: + description: "Condition contains details for one aspect of + the current state of this API Resource. --- This struct + is intended for direct use as an array at the field path + .status.conditions. For example, type FooStatus struct{ + \ // Represents the observations of a foo's current state. + \ // Known .status.conditions.type are: \"Available\", + \"Progressing\", and \"Degraded\" // +patchMergeKey=type + \ // +patchStrategy=merge // +listType=map // + +listMapKey=type Conditions []metav1.Condition `json:\"conditions,omitempty\" + patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` + \n // other fields }" + properties: + lastTransitionTime: + description: lastTransitionTime is the last time the condition + transitioned from one status to another. This should + be when the underlying condition changed. If that is + not known, then using the time when the API field changed + is acceptable. + format: date-time + type: string + message: + description: message is a human readable message indicating + details about the transition. This may be an empty string. + maxLength: 32768 + type: string + observedGeneration: + description: observedGeneration represents the .metadata.generation + that the condition was set based upon. For instance, + if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration + is 9, the condition is out of date with respect to the + current state of the instance. + format: int64 + minimum: 0 + type: integer + reason: + description: reason contains a programmatic identifier + indicating the reason for the condition's last transition. + Producers of specific condition types may define expected + values and meanings for this field, and whether the + values are considered a guaranteed API. The value should + be a CamelCase string. This field may not be empty. + maxLength: 1024 + minLength: 1 + pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ + type: string + status: + description: status of the condition, one of True, False, + Unknown. + enum: + - "True" + - "False" + - Unknown + type: string + type: + description: type of condition in CamelCase or in foo.example.com/CamelCase. + --- Many .condition.type values are consistent across + resources like Available, but because arbitrary conditions + can be useful (see .node.status.conditions), the ability + to deconflict is important. The regex it matches is + (dns1123SubdomainFmt/)?(qualifiedNameFmt) + maxLength: 316 + pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ + type: string + required: + - lastTransitionTime + - message + - reason + - status + - type + type: object + type: array + lastHandledReconcileAt: + description: LastHandledReconcileAt holds the value of the most + recent reconcile request value, so a change can be detected. + type: string + observedGeneration: + description: ObservedGeneration is the last observed generation. + format: int64 + type: integer + url: + description: URL is the download link for the artifact output + of the last Bucket sync. + type: string + type: object + type: object + served: true + storage: true + subresources: + status: {} + type: raw + - name: gitrepositories.source.toolkit.fluxcd.io + properties: + apiVersion: apiextensions.k8s.io/v1 + kind: CustomResourceDefinition + metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.5.0 + labels: + app.kubernetes.io/instance: flux-system + name: gitrepositories.source.toolkit.fluxcd.io + spec: + group: source.toolkit.fluxcd.io + names: + kind: GitRepository + listKind: GitRepositoryList + plural: gitrepositories + shortNames: + - gitrepo + singular: gitrepository + scope: Namespaced + versions: + - additionalPrinterColumns: + - jsonPath: .spec.url + name: URL + type: string + - jsonPath: .status.conditions[?(@.type=="Ready")].status + name: Ready + type: string + - jsonPath: .status.conditions[?(@.type=="Ready")].message + name: Status + type: string + - jsonPath: .metadata.creationTimestamp + name: Age + type: date + name: v1beta1 + schema: + openAPIV3Schema: + description: GitRepository is the Schema for the gitrepositories API + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the + latest internal value, and may reject unrecognized values. More + info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource + this object represents. Servers may infer this from the endpoint + the client submits requests to. Cannot be updated. In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: GitRepositorySpec defines the desired state of a Git + repository. + properties: + gitImplementation: + default: go-git + description: Determines which git client library to use. Defaults + to go-git, valid values are ('go-git', 'libgit2'). + enum: + - go-git + - libgit2 + type: string + ignore: + description: Ignore overrides the set of excluded patterns in + the .sourceignore format (which is the same as .gitignore). + If not provided, a default will be used, consult the documentation + for your version to find out what those are. + type: string + include: + description: Extra git repositories to map into the repository + items: + description: GitRepositoryInclude defines a source with a + from and to path. + properties: + fromPath: + description: The path to copy contents from, defaults + to the root directory. + type: string + repository: + description: Reference to a GitRepository to include. properties: - apiVersion: - description: API version of the referent - type: string - kind: - description: Kind of the referent - enum: - - Bucket - - GitRepository - - Kustomization - - HelmRelease - - HelmChart - - HelmRepository - - ImageRepository - - ImagePolicy - - ImageUpdateAutomation - type: string name: description: Name of the referent - maxLength: 53 - minLength: 1 - type: string - namespace: - description: Namespace of the referent - maxLength: 53 - minLength: 1 type: string required: - name type: object - type: array - exclusionList: - description: A list of Golang regular expressions to be - used for excluding messages. - items: + toPath: + description: The path to copy contents to, defaults to + the name of the source ref. type: string - type: array - providerRef: - description: Send events using this provider. - properties: - name: - description: Name of the referent - type: string - required: - - name - type: object - summary: - description: Short description of the impact and affected - cluster. - type: string - suspend: - description: This flag tells the controller to suspend subsequent - events dispatching. Defaults to false. - type: boolean - required: - - eventSources - - providerRef - type: object - status: - description: AlertStatus defines the observed state of Alert - properties: - conditions: - items: - description: "Condition contains details for one aspect - of the current state of this API Resource. --- This - struct is intended for direct use as an array at the - field path .status.conditions. For example, type FooStatus - struct{ // Represents the observations of a foo's - current state. // Known .status.conditions.type - are: \"Available\", \"Progressing\", and \"Degraded\" - \ // +patchMergeKey=type // +patchStrategy=merge - \ // +listType=map // +listMapKey=type Conditions - []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" - patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` - \n // other fields }" - properties: - lastTransitionTime: - description: lastTransitionTime is the last time the - condition transitioned from one status to another. - This should be when the underlying condition changed. If - that is not known, then using the time when the - API field changed is acceptable. - format: date-time - type: string - message: - description: message is a human readable message indicating - details about the transition. This may be an empty - string. - maxLength: 32768 - type: string - observedGeneration: - description: observedGeneration represents the .metadata.generation - that the condition was set based upon. For instance, - if .metadata.generation is currently 12, but the - .status.conditions[x].observedGeneration is 9, the - condition is out of date with respect to the current - state of the instance. - format: int64 - minimum: 0 - type: integer - reason: - description: reason contains a programmatic identifier - indicating the reason for the condition's last transition. - Producers of specific condition types may define - expected values and meanings for this field, and - whether the values are considered a guaranteed API. - The value should be a CamelCase string. This field - may not be empty. - maxLength: 1024 - minLength: 1 - pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ - type: string - status: - description: status of the condition, one of True, - False, Unknown. - enum: - - "True" - - "False" - - Unknown - type: string - type: - description: type of condition in CamelCase or in - foo.example.com/CamelCase. --- Many .condition.type - values are consistent across resources like Available, - but because arbitrary conditions can be useful (see - .node.status.conditions), the ability to deconflict - is important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) - maxLength: 316 - pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ - type: string - required: - - lastTransitionTime - - message - - reason - - status - - type - type: object - type: array - observedGeneration: - description: ObservedGeneration is the last observed generation. - format: int64 - type: integer - type: object - type: object - served: true - storage: true - subresources: - status: {} - type: raw - - name: buckets.source.toolkit.fluxcd.io - properties: - apiVersion: apiextensions.k8s.io/v1 - kind: CustomResourceDefinition - metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.5.0 - labels: - app.kubernetes.io/instance: flux-system - name: buckets.source.toolkit.fluxcd.io - spec: - group: source.toolkit.fluxcd.io - names: - kind: Bucket - listKind: BucketList - plural: buckets - singular: bucket - scope: Namespaced - versions: - - additionalPrinterColumns: - - jsonPath: .spec.url - name: URL - type: string - - jsonPath: .status.conditions[?(@.type=="Ready")].status - name: Ready - type: string - - jsonPath: .status.conditions[?(@.type=="Ready")].message - name: Status - type: string - - jsonPath: .metadata.creationTimestamp - name: Age - type: date - name: v1beta1 - schema: - openAPIV3Schema: - description: Bucket is the Schema for the buckets API - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this - representation of an object. Servers should convert recognized - schemas to the latest internal value, and may reject unrecognized - values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + required: + - repository + type: object + type: array + interval: + description: The interval at which to check for repository updates. type: string - kind: - description: 'Kind is a string value representing the REST resource - this object represents. Servers may infer this from the endpoint - the client submits requests to. Cannot be updated. In CamelCase. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: BucketSpec defines the desired state of an S3 compatible - bucket + recurseSubmodules: + description: When enabled, after the clone is created, initializes + all submodules within, using their default settings. This + option is available only when using the 'go-git' GitImplementation. + type: boolean + ref: + description: The Git reference to checkout and monitor for changes, + defaults to master branch. properties: - bucketName: - description: The bucket name. + branch: + default: master + description: The Git branch to checkout, defaults to master. type: string - endpoint: - description: The bucket endpoint address. + commit: + description: The Git commit SHA to checkout, if specified + Tag filters will be ignored. type: string - ignore: - description: Ignore overrides the set of excluded patterns - in the .sourceignore format (which is the same as .gitignore). - If not provided, a default will be used, consult the documentation - for your version to find out what those are. + semver: + description: The Git tag semver expression, takes precedence + over Tag. type: string - insecure: - description: Insecure allows connecting to a non-TLS S3 - HTTP endpoint. - type: boolean - interval: - description: The interval at which to check for bucket updates. + tag: + description: The Git tag to checkout, takes precedence over + Branch. type: string - provider: - default: generic - description: The S3 compatible storage provider name, default - ('generic'). - enum: - - generic - - aws - type: string - region: - description: The bucket region. - type: string - secretRef: - description: The name of the secret containing authentication - credentials for the Bucket. - properties: - name: - description: Name of the referent - type: string - required: - - name - type: object - suspend: - description: This flag tells the controller to suspend the - reconciliation of this source. - type: boolean - timeout: - default: 20s - description: The timeout for download operations, defaults - to 20s. + type: object + secretRef: + description: The secret name containing the Git credentials. + For HTTPS repositories the secret must contain username and + password fields. For SSH repositories the secret must contain + identity, identity.pub and known_hosts fields. + properties: + name: + description: Name of the referent type: string required: - - bucketName - - endpoint - - interval + - name type: object - status: - description: BucketStatus defines the observed state of a bucket - properties: - artifact: - description: Artifact represents the output of the last - successful Bucket sync. - properties: - checksum: - description: Checksum is the SHA1 checksum of the artifact. - type: string - lastUpdateTime: - description: LastUpdateTime is the timestamp corresponding - to the last update of this artifact. - format: date-time - type: string - path: - description: Path is the relative file path of this - artifact. - type: string - revision: - description: Revision is a human readable identifier - traceable in the origin source system. It can be a - Git commit SHA, Git tag, a Helm index timestamp, a - Helm chart version, etc. - type: string - url: - description: URL is the HTTP address of this artifact. - type: string - required: - - path - - url - type: object - conditions: - description: Conditions holds the conditions for the Bucket. - items: - description: "Condition contains details for one aspect - of the current state of this API Resource. --- This - struct is intended for direct use as an array at the - field path .status.conditions. For example, type FooStatus - struct{ // Represents the observations of a foo's - current state. // Known .status.conditions.type - are: \"Available\", \"Progressing\", and \"Degraded\" - \ // +patchMergeKey=type // +patchStrategy=merge - \ // +listType=map // +listMapKey=type Conditions - []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" - patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` - \n // other fields }" - properties: - lastTransitionTime: - description: lastTransitionTime is the last time the - condition transitioned from one status to another. - This should be when the underlying condition changed. If - that is not known, then using the time when the - API field changed is acceptable. - format: date-time - type: string - message: - description: message is a human readable message indicating - details about the transition. This may be an empty - string. - maxLength: 32768 - type: string - observedGeneration: - description: observedGeneration represents the .metadata.generation - that the condition was set based upon. For instance, - if .metadata.generation is currently 12, but the - .status.conditions[x].observedGeneration is 9, the - condition is out of date with respect to the current - state of the instance. - format: int64 - minimum: 0 - type: integer - reason: - description: reason contains a programmatic identifier - indicating the reason for the condition's last transition. - Producers of specific condition types may define - expected values and meanings for this field, and - whether the values are considered a guaranteed API. - The value should be a CamelCase string. This field - may not be empty. - maxLength: 1024 - minLength: 1 - pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ - type: string - status: - description: status of the condition, one of True, - False, Unknown. - enum: - - "True" - - "False" - - Unknown - type: string - type: - description: type of condition in CamelCase or in - foo.example.com/CamelCase. --- Many .condition.type - values are consistent across resources like Available, - but because arbitrary conditions can be useful (see - .node.status.conditions), the ability to deconflict - is important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) - maxLength: 316 - pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ - type: string - required: - - lastTransitionTime - - message - - reason - - status - - type - type: object - type: array - lastHandledReconcileAt: - description: LastHandledReconcileAt holds the value of the - most recent reconcile request value, so a change can be - detected. - type: string - observedGeneration: - description: ObservedGeneration is the last observed generation. - format: int64 - type: integer - url: - description: URL is the download link for the artifact output - of the last Bucket sync. - type: string - type: object - type: object - served: true - storage: true - subresources: - status: {} - type: raw - - name: gitrepositories.source.toolkit.fluxcd.io - properties: - apiVersion: apiextensions.k8s.io/v1 - kind: CustomResourceDefinition - metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.5.0 - labels: - app.kubernetes.io/instance: flux-system - name: gitrepositories.source.toolkit.fluxcd.io - spec: - group: source.toolkit.fluxcd.io - names: - kind: GitRepository - listKind: GitRepositoryList - plural: gitrepositories - shortNames: - - gitrepo - singular: gitrepository - scope: Namespaced - versions: - - additionalPrinterColumns: - - jsonPath: .spec.url - name: URL - type: string - - jsonPath: .status.conditions[?(@.type=="Ready")].status - name: Ready - type: string - - jsonPath: .status.conditions[?(@.type=="Ready")].message - name: Status - type: string - - jsonPath: .metadata.creationTimestamp - name: Age - type: date - name: v1beta1 - schema: - openAPIV3Schema: - description: GitRepository is the Schema for the gitrepositories - API - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this - representation of an object. Servers should convert recognized - schemas to the latest internal value, and may reject unrecognized - values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + suspend: + description: This flag tells the controller to suspend the reconciliation + of this source. + type: boolean + timeout: + default: 20s + description: The timeout for remote Git operations like cloning, + defaults to 20s. type: string - kind: - description: 'Kind is a string value representing the REST resource - this object represents. Servers may infer this from the endpoint - the client submits requests to. Cannot be updated. In CamelCase. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + url: + description: The repository URL, can be a HTTP/S or SSH address. + pattern: ^(http|https|ssh):// type: string - metadata: - type: object - spec: - description: GitRepositorySpec defines the desired state of - a Git repository. + verify: + description: Verify OpenPGP signature for the Git commit HEAD + points to. properties: - gitImplementation: - default: go-git - description: Determines which git client library to use. - Defaults to go-git, valid values are ('go-git', 'libgit2'). + mode: + description: Mode describes what git object should be verified, + currently ('head'). enum: - - go-git - - libgit2 + - head type: string - ignore: - description: Ignore overrides the set of excluded patterns - in the .sourceignore format (which is the same as .gitignore). - If not provided, a default will be used, consult the documentation - for your version to find out what those are. - type: string - include: - description: Extra git repositories to map into the repository - items: - description: GitRepositoryInclude defines a source with - a from and to path. - properties: - fromPath: - description: The path to copy contents from, defaults - to the root directory. - type: string - repository: - description: Reference to a GitRepository to include. - properties: - name: - description: Name of the referent - type: string - required: - - name - type: object - toPath: - description: The path to copy contents to, defaults - to the name of the source ref. - type: string - required: - - repository - type: object - type: array - interval: - description: The interval at which to check for repository - updates. - type: string - recurseSubmodules: - description: When enabled, after the clone is created, initializes - all submodules within, using their default settings. This - option is available only when using the 'go-git' GitImplementation. - type: boolean - ref: - description: The Git reference to checkout and monitor for - changes, defaults to master branch. - properties: - branch: - default: master - description: The Git branch to checkout, defaults to - master. - type: string - commit: - description: The Git commit SHA to checkout, if specified - Tag filters will be ignored. - type: string - semver: - description: The Git tag semver expression, takes precedence - over Tag. - type: string - tag: - description: The Git tag to checkout, takes precedence - over Branch. - type: string - type: object secretRef: - description: The secret name containing the Git credentials. - For HTTPS repositories the secret must contain username - and password fields. For SSH repositories the secret must - contain identity, identity.pub and known_hosts fields. + description: The secret name containing the public keys + of all trusted Git authors. properties: name: description: Name of the referent @@ -609,1562 +634,2632 @@ data: required: - name type: object - suspend: - description: This flag tells the controller to suspend the - reconciliation of this source. - type: boolean - timeout: - default: 20s - description: The timeout for remote Git operations like - cloning, defaults to 20s. + required: + - mode + type: object + required: + - interval + - url + type: object + status: + description: GitRepositoryStatus defines the observed state of a + Git repository. + properties: + artifact: + description: Artifact represents the output of the last successful + repository sync. + properties: + checksum: + description: Checksum is the SHA1 checksum of the artifact. + type: string + lastUpdateTime: + description: LastUpdateTime is the timestamp corresponding + to the last update of this artifact. + format: date-time + type: string + path: + description: Path is the relative file path of this artifact. + type: string + revision: + description: Revision is a human readable identifier traceable + in the origin source system. It can be a Git commit SHA, + Git tag, a Helm index timestamp, a Helm chart version, + etc. type: string url: - description: The repository URL, can be a HTTP/S or SSH - address. - pattern: ^(http|https|ssh):// + description: URL is the HTTP address of this artifact. type: string - verify: - description: Verify OpenPGP signature for the Git commit - HEAD points to. + required: + - path + - url + type: object + conditions: + description: Conditions holds the conditions for the GitRepository. + items: + description: "Condition contains details for one aspect of + the current state of this API Resource. --- This struct + is intended for direct use as an array at the field path + .status.conditions. For example, type FooStatus struct{ + \ // Represents the observations of a foo's current state. + \ // Known .status.conditions.type are: \"Available\", + \"Progressing\", and \"Degraded\" // +patchMergeKey=type + \ // +patchStrategy=merge // +listType=map // + +listMapKey=type Conditions []metav1.Condition `json:\"conditions,omitempty\" + patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` + \n // other fields }" + properties: + lastTransitionTime: + description: lastTransitionTime is the last time the condition + transitioned from one status to another. This should + be when the underlying condition changed. If that is + not known, then using the time when the API field changed + is acceptable. + format: date-time + type: string + message: + description: message is a human readable message indicating + details about the transition. This may be an empty string. + maxLength: 32768 + type: string + observedGeneration: + description: observedGeneration represents the .metadata.generation + that the condition was set based upon. For instance, + if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration + is 9, the condition is out of date with respect to the + current state of the instance. + format: int64 + minimum: 0 + type: integer + reason: + description: reason contains a programmatic identifier + indicating the reason for the condition's last transition. + Producers of specific condition types may define expected + values and meanings for this field, and whether the + values are considered a guaranteed API. The value should + be a CamelCase string. This field may not be empty. + maxLength: 1024 + minLength: 1 + pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ + type: string + status: + description: status of the condition, one of True, False, + Unknown. + enum: + - "True" + - "False" + - Unknown + type: string + type: + description: type of condition in CamelCase or in foo.example.com/CamelCase. + --- Many .condition.type values are consistent across + resources like Available, but because arbitrary conditions + can be useful (see .node.status.conditions), the ability + to deconflict is important. The regex it matches is + (dns1123SubdomainFmt/)?(qualifiedNameFmt) + maxLength: 316 + pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ + type: string + required: + - lastTransitionTime + - message + - reason + - status + - type + type: object + type: array + includedArtifacts: + description: IncludedArtifacts represents the included artifacts + from the last successful repository sync. + items: + description: Artifact represents the output of a source synchronisation. + properties: + checksum: + description: Checksum is the SHA1 checksum of the artifact. + type: string + lastUpdateTime: + description: LastUpdateTime is the timestamp corresponding + to the last update of this artifact. + format: date-time + type: string + path: + description: Path is the relative file path of this artifact. + type: string + revision: + description: Revision is a human readable identifier traceable + in the origin source system. It can be a Git commit + SHA, Git tag, a Helm index timestamp, a Helm chart version, + etc. + type: string + url: + description: URL is the HTTP address of this artifact. + type: string + required: + - path + - url + type: object + type: array + lastHandledReconcileAt: + description: LastHandledReconcileAt holds the value of the most + recent reconcile request value, so a change can be detected. + type: string + observedGeneration: + description: ObservedGeneration is the last observed generation. + format: int64 + type: integer + url: + description: URL is the download link for the artifact output + of the last repository sync. + type: string + type: object + type: object + served: true + storage: true + subresources: + status: {} + type: raw + - name: helmcharts.source.toolkit.fluxcd.io + properties: + apiVersion: apiextensions.k8s.io/v1 + kind: CustomResourceDefinition + metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.5.0 + labels: + app.kubernetes.io/instance: flux-system + name: helmcharts.source.toolkit.fluxcd.io + spec: + group: source.toolkit.fluxcd.io + names: + kind: HelmChart + listKind: HelmChartList + plural: helmcharts + shortNames: + - hc + singular: helmchart + scope: Namespaced + versions: + - additionalPrinterColumns: + - jsonPath: .spec.chart + name: Chart + type: string + - jsonPath: .spec.version + name: Version + type: string + - jsonPath: .spec.sourceRef.kind + name: Source Kind + type: string + - jsonPath: .spec.sourceRef.name + name: Source Name + type: string + - jsonPath: .status.conditions[?(@.type=="Ready")].status + name: Ready + type: string + - jsonPath: .status.conditions[?(@.type=="Ready")].message + name: Status + type: string + - jsonPath: .metadata.creationTimestamp + name: Age + type: date + name: v1beta1 + schema: + openAPIV3Schema: + description: HelmChart is the Schema for the helmcharts API + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the + latest internal value, and may reject unrecognized values. More + info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource + this object represents. Servers may infer this from the endpoint + the client submits requests to. Cannot be updated. In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: HelmChartSpec defines the desired state of a Helm chart. + properties: + chart: + description: The name or path the Helm chart is available at + in the SourceRef. + type: string + interval: + description: The interval at which to check the Source for updates. + type: string + sourceRef: + description: The reference to the Source the chart is available + at. + properties: + apiVersion: + description: APIVersion of the referent. + type: string + kind: + description: Kind of the referent, valid values are ('HelmRepository', + 'GitRepository', 'Bucket'). + enum: + - HelmRepository + - GitRepository + - Bucket + type: string + name: + description: Name of the referent. + type: string + required: + - kind + - name + type: object + suspend: + description: This flag tells the controller to suspend the reconciliation + of this source. + type: boolean + valuesFile: + description: Alternative values file to use as the default chart + values, expected to be a relative path in the SourceRef. Deprecated + in favor of ValuesFiles, for backwards compatibility the file + defined here is merged before the ValuesFiles items. Ignored + when omitted. + type: string + valuesFiles: + description: Alternative list of values files to use as the + chart values (values.yaml is not included by default), expected + to be a relative path in the SourceRef. Values files are merged + in the order of this list with the last file overriding the + first. Ignored when omitted. + items: + type: string + type: array + version: + default: '*' + description: The chart version semver expression, ignored for + charts from GitRepository and Bucket sources. Defaults to + latest when omitted. + type: string + required: + - chart + - interval + - sourceRef + type: object + status: + description: HelmChartStatus defines the observed state of the HelmChart. + properties: + artifact: + description: Artifact represents the output of the last successful + chart sync. + properties: + checksum: + description: Checksum is the SHA1 checksum of the artifact. + type: string + lastUpdateTime: + description: LastUpdateTime is the timestamp corresponding + to the last update of this artifact. + format: date-time + type: string + path: + description: Path is the relative file path of this artifact. + type: string + revision: + description: Revision is a human readable identifier traceable + in the origin source system. It can be a Git commit SHA, + Git tag, a Helm index timestamp, a Helm chart version, + etc. + type: string + url: + description: URL is the HTTP address of this artifact. + type: string + required: + - path + - url + type: object + conditions: + description: Conditions holds the conditions for the HelmChart. + items: + description: "Condition contains details for one aspect of + the current state of this API Resource. --- This struct + is intended for direct use as an array at the field path + .status.conditions. For example, type FooStatus struct{ + \ // Represents the observations of a foo's current state. + \ // Known .status.conditions.type are: \"Available\", + \"Progressing\", and \"Degraded\" // +patchMergeKey=type + \ // +patchStrategy=merge // +listType=map // + +listMapKey=type Conditions []metav1.Condition `json:\"conditions,omitempty\" + patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` + \n // other fields }" + properties: + lastTransitionTime: + description: lastTransitionTime is the last time the condition + transitioned from one status to another. This should + be when the underlying condition changed. If that is + not known, then using the time when the API field changed + is acceptable. + format: date-time + type: string + message: + description: message is a human readable message indicating + details about the transition. This may be an empty string. + maxLength: 32768 + type: string + observedGeneration: + description: observedGeneration represents the .metadata.generation + that the condition was set based upon. For instance, + if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration + is 9, the condition is out of date with respect to the + current state of the instance. + format: int64 + minimum: 0 + type: integer + reason: + description: reason contains a programmatic identifier + indicating the reason for the condition's last transition. + Producers of specific condition types may define expected + values and meanings for this field, and whether the + values are considered a guaranteed API. The value should + be a CamelCase string. This field may not be empty. + maxLength: 1024 + minLength: 1 + pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ + type: string + status: + description: status of the condition, one of True, False, + Unknown. + enum: + - "True" + - "False" + - Unknown + type: string + type: + description: type of condition in CamelCase or in foo.example.com/CamelCase. + --- Many .condition.type values are consistent across + resources like Available, but because arbitrary conditions + can be useful (see .node.status.conditions), the ability + to deconflict is important. The regex it matches is + (dns1123SubdomainFmt/)?(qualifiedNameFmt) + maxLength: 316 + pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ + type: string + required: + - lastTransitionTime + - message + - reason + - status + - type + type: object + type: array + lastHandledReconcileAt: + description: LastHandledReconcileAt holds the value of the most + recent reconcile request value, so a change can be detected. + type: string + observedGeneration: + description: ObservedGeneration is the last observed generation. + format: int64 + type: integer + url: + description: URL is the download link for the last chart pulled. + type: string + type: object + type: object + served: true + storage: true + subresources: + status: {} + type: raw + - name: helmreleases.helm.toolkit.fluxcd.io + properties: + apiVersion: apiextensions.k8s.io/v1 + kind: CustomResourceDefinition + metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.5.0 + labels: + app.kubernetes.io/instance: flux-system + name: helmreleases.helm.toolkit.fluxcd.io + spec: + group: helm.toolkit.fluxcd.io + names: + kind: HelmRelease + listKind: HelmReleaseList + plural: helmreleases + shortNames: + - hr + singular: helmrelease + scope: Namespaced + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=="Ready")].status + name: Ready + type: string + - jsonPath: .status.conditions[?(@.type=="Ready")].message + name: Status + type: string + - jsonPath: .metadata.creationTimestamp + name: Age + type: date + name: v2beta1 + schema: + openAPIV3Schema: + description: HelmRelease is the Schema for the helmreleases API + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the + latest internal value, and may reject unrecognized values. More + info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource + this object represents. Servers may infer this from the endpoint + the client submits requests to. Cannot be updated. In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: HelmReleaseSpec defines the desired state of a Helm + release. + properties: + chart: + description: Chart defines the template of the v1beta1.HelmChart + that should be created for this HelmRelease. + properties: + spec: + description: Spec holds the template for the v1beta1.HelmChartSpec + for this HelmRelease. properties: - mode: - description: Mode describes what git object should be - verified, currently ('head'). - enum: - - head + chart: + description: The name or path the Helm chart is available + at in the SourceRef. type: string - secretRef: - description: The secret name containing the public keys - of all trusted Git authors. + interval: + description: Interval at which to check the v1beta1.Source + for updates. Defaults to 'HelmReleaseSpec.Interval'. + type: string + sourceRef: + description: The name and namespace of the v1beta1.Source + the chart is available at. properties: + apiVersion: + description: APIVersion of the referent. + type: string + kind: + description: Kind of the referent. + enum: + - HelmRepository + - GitRepository + - Bucket + type: string name: - description: Name of the referent + description: Name of the referent. + maxLength: 253 + minLength: 1 + type: string + namespace: + description: Namespace of the referent. + maxLength: 63 + minLength: 1 type: string required: - name type: object + valuesFile: + description: Alternative values file to use as the default + chart values, expected to be a relative path in the + SourceRef. Deprecated in favor of ValuesFiles, for + backwards compatibility the file defined here is merged + before the ValuesFiles items. Ignored when omitted. + type: string + valuesFiles: + description: Alternative list of values files to use + as the chart values (values.yaml is not included by + default), expected to be a relative path in the SourceRef. + Values files are merged in the order of this list + with the last file overriding the first. Ignored when + omitted. + items: + type: string + type: array + version: + default: '*' + description: Version semver expression, ignored for + charts from v1beta1.GitRepository and v1beta1.Bucket + sources. Defaults to latest when omitted. + type: string required: - - mode + - chart + - sourceRef type: object required: - - interval - - url + - spec type: object - status: - description: GitRepositoryStatus defines the observed state - of a Git repository. + dependsOn: + description: DependsOn may contain a dependency.CrossNamespaceDependencyReference + slice with references to HelmRelease resources that must be + ready before this HelmRelease can be reconciled. + items: + description: CrossNamespaceDependencyReference holds the reference + to a dependency. + properties: + name: + description: Name holds the name reference of a dependency. + type: string + namespace: + description: Namespace holds the namespace reference of + a dependency. + type: string + required: + - name + type: object + type: array + install: + description: Install holds the configuration for Helm install + actions for this HelmRelease. properties: - artifact: - description: Artifact represents the output of the last - successful repository sync. + crds: + description: "CRDs upgrade CRDs from the Helm Chart's crds + directory according to the CRD upgrade policy provided + here. Valid values are `Skip`, `Create` or `CreateReplace`. + Default is `Create` and if omitted CRDs are installed + but not updated. \n Skip: do neither install nor replace + (update) any CRDs. \n Create: new CRDs are created, existing + CRDs are neither updated nor deleted. \n CreateReplace: + new CRDs are created, existing CRDs are updated (replaced) + but not deleted. \n By default, CRDs are applied (installed) + during Helm install action. With this option users can + opt-in to CRD replace existing CRDs on Helm install actions, + which is not (yet) natively supported by Helm. https://helm.sh/docs/chart_best_practices/custom_resource_definitions." + enum: + - Skip + - Create + - CreateReplace + type: string + createNamespace: + description: CreateNamespace tells the Helm install action + to create the HelmReleaseSpec.TargetNamespace if it does + not exist yet. On uninstall, the namespace will not be + garbage collected. + type: boolean + disableHooks: + description: DisableHooks prevents hooks from running during + the Helm install action. + type: boolean + disableOpenAPIValidation: + description: DisableOpenAPIValidation prevents the Helm + install action from validating rendered templates against + the Kubernetes OpenAPI Schema. + type: boolean + disableWait: + description: DisableWait disables the waiting for resources + to be ready after a Helm install has been performed. + type: boolean + disableWaitForJobs: + description: DisableWaitForJobs disables waiting for jobs + to complete after a Helm install has been performed. + type: boolean + remediation: + description: Remediation holds the remediation configuration + for when the Helm install action for the HelmRelease fails. + The default is to not perform any action. properties: - checksum: - description: Checksum is the SHA1 checksum of the artifact. - type: string - lastUpdateTime: - description: LastUpdateTime is the timestamp corresponding - to the last update of this artifact. - format: date-time - type: string - path: - description: Path is the relative file path of this - artifact. - type: string - revision: - description: Revision is a human readable identifier - traceable in the origin source system. It can be a - Git commit SHA, Git tag, a Helm index timestamp, a - Helm chart version, etc. - type: string - url: - description: URL is the HTTP address of this artifact. - type: string - required: - - path - - url + ignoreTestFailures: + description: IgnoreTestFailures tells the controller + to skip remediation when the Helm tests are run after + an install action but fail. Defaults to 'Test.IgnoreFailures'. + type: boolean + remediateLastFailure: + description: RemediateLastFailure tells the controller + to remediate the last failure, when no retries remain. + Defaults to 'false'. + type: boolean + retries: + description: Retries is the number of retries that should + be attempted on failures before bailing. Remediation, + using an uninstall, is performed between each attempt. + Defaults to '0', a negative integer equals to unlimited + retries. + type: integer type: object - conditions: - description: Conditions holds the conditions for the GitRepository. - items: - description: "Condition contains details for one aspect - of the current state of this API Resource. --- This - struct is intended for direct use as an array at the - field path .status.conditions. For example, type FooStatus - struct{ // Represents the observations of a foo's - current state. // Known .status.conditions.type - are: \"Available\", \"Progressing\", and \"Degraded\" - \ // +patchMergeKey=type // +patchStrategy=merge - \ // +listType=map // +listMapKey=type Conditions - []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" - patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` - \n // other fields }" - properties: - lastTransitionTime: - description: lastTransitionTime is the last time the - condition transitioned from one status to another. - This should be when the underlying condition changed. If - that is not known, then using the time when the - API field changed is acceptable. - format: date-time - type: string - message: - description: message is a human readable message indicating - details about the transition. This may be an empty - string. - maxLength: 32768 - type: string - observedGeneration: - description: observedGeneration represents the .metadata.generation - that the condition was set based upon. For instance, - if .metadata.generation is currently 12, but the - .status.conditions[x].observedGeneration is 9, the - condition is out of date with respect to the current - state of the instance. - format: int64 - minimum: 0 - type: integer - reason: - description: reason contains a programmatic identifier - indicating the reason for the condition's last transition. - Producers of specific condition types may define - expected values and meanings for this field, and - whether the values are considered a guaranteed API. - The value should be a CamelCase string. This field - may not be empty. - maxLength: 1024 - minLength: 1 - pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ - type: string - status: - description: status of the condition, one of True, - False, Unknown. - enum: - - "True" - - "False" - - Unknown - type: string - type: - description: type of condition in CamelCase or in - foo.example.com/CamelCase. --- Many .condition.type - values are consistent across resources like Available, - but because arbitrary conditions can be useful (see - .node.status.conditions), the ability to deconflict - is important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) - maxLength: 316 - pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ - type: string - required: - - lastTransitionTime - - message - - reason - - status - - type - type: object - type: array - includedArtifacts: - description: IncludedArtifacts represents the included artifacts - from the last successful repository sync. - items: - description: Artifact represents the output of a source - synchronisation. - properties: - checksum: - description: Checksum is the SHA1 checksum of the - artifact. - type: string - lastUpdateTime: - description: LastUpdateTime is the timestamp corresponding - to the last update of this artifact. - format: date-time - type: string - path: - description: Path is the relative file path of this - artifact. - type: string - revision: - description: Revision is a human readable identifier - traceable in the origin source system. It can be - a Git commit SHA, Git tag, a Helm index timestamp, - a Helm chart version, etc. - type: string - url: - description: URL is the HTTP address of this artifact. - type: string - required: - - path - - url - type: object - type: array - lastHandledReconcileAt: - description: LastHandledReconcileAt holds the value of the - most recent reconcile request value, so a change can be - detected. - type: string - observedGeneration: - description: ObservedGeneration is the last observed generation. - format: int64 - type: integer - url: - description: URL is the download link for the artifact output - of the last repository sync. + replace: + description: Replace tells the Helm install action to re-use + the 'ReleaseName', but only if that name is a deleted + release which remains in the history. + type: boolean + skipCRDs: + description: "SkipCRDs tells the Helm install action to + not install any CRDs. By default, CRDs are installed if + not already present. \n Deprecated use CRD policy (`crds`) + attribute with value `Skip` instead." + type: boolean + timeout: + description: Timeout is the time to wait for any individual + Kubernetes operation (like Jobs for hooks) during the + performance of a Helm install action. Defaults to 'HelmReleaseSpec.Timeout'. type: string type: object - type: object - served: true - storage: true - subresources: - status: {} - type: raw - - name: helmcharts.source.toolkit.fluxcd.io - properties: - apiVersion: apiextensions.k8s.io/v1 - kind: CustomResourceDefinition - metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.5.0 - labels: - app.kubernetes.io/instance: flux-system - name: helmcharts.source.toolkit.fluxcd.io - spec: - group: source.toolkit.fluxcd.io - names: - kind: HelmChart - listKind: HelmChartList - plural: helmcharts - shortNames: - - hc - singular: helmchart - scope: Namespaced - versions: - - additionalPrinterColumns: - - jsonPath: .spec.chart - name: Chart - type: string - - jsonPath: .spec.version - name: Version - type: string - - jsonPath: .spec.sourceRef.kind - name: Source Kind - type: string - - jsonPath: .spec.sourceRef.name - name: Source Name - type: string - - jsonPath: .status.conditions[?(@.type=="Ready")].status - name: Ready - type: string - - jsonPath: .status.conditions[?(@.type=="Ready")].message - name: Status - type: string - - jsonPath: .metadata.creationTimestamp - name: Age - type: date - name: v1beta1 - schema: - openAPIV3Schema: - description: HelmChart is the Schema for the helmcharts API - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this - representation of an object. Servers should convert recognized - schemas to the latest internal value, and may reject unrecognized - values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + interval: + description: Interval at which to reconcile the Helm release. type: string - kind: - description: 'Kind is a string value representing the REST resource - this object represents. Servers may infer this from the endpoint - the client submits requests to. Cannot be updated. In CamelCase. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: HelmChartSpec defines the desired state of a Helm - chart. + kubeConfig: + description: KubeConfig for reconciling the HelmRelease on a + remote cluster. When specified, KubeConfig takes precedence + over ServiceAccountName. properties: - chart: - description: The name or path the Helm chart is available - at in the SourceRef. - type: string - interval: - description: The interval at which to check the Source for - updates. - type: string - sourceRef: - description: The reference to the Source the chart is available - at. + secretRef: + description: SecretRef holds the name to a secret that contains + a 'value' key with the kubeconfig file as the value. It + must be in the same namespace as the HelmRelease. It is + recommended that the kubeconfig is self-contained, and + the secret is regularly updated if credentials such as + a cloud-access-token expire. Cloud specific `cmd-path` + auth helpers will not function without adding binaries + and credentials to the Pod that is responsible for reconciling + the HelmRelease. properties: - apiVersion: - description: APIVersion of the referent. - type: string - kind: - description: Kind of the referent, valid values are - ('HelmRepository', 'GitRepository', 'Bucket'). - enum: - - HelmRepository - - GitRepository - - Bucket - type: string name: - description: Name of the referent. + description: Name of the referent type: string required: - - kind - name type: object - suspend: - description: This flag tells the controller to suspend the - reconciliation of this source. - type: boolean - valuesFile: - description: Alternative values file to use as the default - chart values, expected to be a relative path in the SourceRef. - Deprecated in favor of ValuesFiles, for backwards compatibility - the file defined here is merged before the ValuesFiles - items. Ignored when omitted. - type: string - valuesFiles: - description: Alternative list of values files to use as - the chart values (values.yaml is not included by default), - expected to be a relative path in the SourceRef. Values - files are merged in the order of this list with the last - file overriding the first. Ignored when omitted. - items: - type: string - type: array - version: - default: '*' - description: The chart version semver expression, ignored - for charts from GitRepository and Bucket sources. Defaults - to latest when omitted. - type: string - required: - - chart - - interval - - sourceRef type: object - status: - description: HelmChartStatus defines the observed state of the - HelmChart. - properties: - artifact: - description: Artifact represents the output of the last - successful chart sync. - properties: - checksum: - description: Checksum is the SHA1 checksum of the artifact. - type: string - lastUpdateTime: - description: LastUpdateTime is the timestamp corresponding - to the last update of this artifact. - format: date-time - type: string - path: - description: Path is the relative file path of this - artifact. - type: string - revision: - description: Revision is a human readable identifier - traceable in the origin source system. It can be a - Git commit SHA, Git tag, a Helm index timestamp, a - Helm chart version, etc. - type: string - url: - description: URL is the HTTP address of this artifact. - type: string - required: - - path - - url - type: object - conditions: - description: Conditions holds the conditions for the HelmChart. - items: - description: "Condition contains details for one aspect - of the current state of this API Resource. --- This - struct is intended for direct use as an array at the - field path .status.conditions. For example, type FooStatus - struct{ // Represents the observations of a foo's - current state. // Known .status.conditions.type - are: \"Available\", \"Progressing\", and \"Degraded\" - \ // +patchMergeKey=type // +patchStrategy=merge - \ // +listType=map // +listMapKey=type Conditions - []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" - patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` - \n // other fields }" + maxHistory: + description: MaxHistory is the number of revisions saved by + Helm for this HelmRelease. Use '0' for an unlimited number + of revisions; defaults to '10'. + type: integer + postRenderers: + description: PostRenderers holds an array of Helm PostRenderers, + which will be applied in order of their definition. + items: + description: PostRenderer contains a Helm PostRenderer specification. + properties: + kustomize: + description: Kustomization to apply as PostRenderer. properties: - lastTransitionTime: - description: lastTransitionTime is the last time the - condition transitioned from one status to another. - This should be when the underlying condition changed. If - that is not known, then using the time when the - API field changed is acceptable. - format: date-time - type: string - message: - description: message is a human readable message indicating - details about the transition. This may be an empty - string. - maxLength: 32768 - type: string - observedGeneration: - description: observedGeneration represents the .metadata.generation - that the condition was set based upon. For instance, - if .metadata.generation is currently 12, but the - .status.conditions[x].observedGeneration is 9, the - condition is out of date with respect to the current - state of the instance. - format: int64 - minimum: 0 - type: integer - reason: - description: reason contains a programmatic identifier - indicating the reason for the condition's last transition. - Producers of specific condition types may define - expected values and meanings for this field, and - whether the values are considered a guaranteed API. - The value should be a CamelCase string. This field - may not be empty. - maxLength: 1024 - minLength: 1 - pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ - type: string - status: - description: status of the condition, one of True, - False, Unknown. - enum: - - "True" - - "False" - - Unknown - type: string - type: - description: type of condition in CamelCase or in - foo.example.com/CamelCase. --- Many .condition.type - values are consistent across resources like Available, - but because arbitrary conditions can be useful (see - .node.status.conditions), the ability to deconflict - is important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) - maxLength: 316 - pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ - type: string - required: - - lastTransitionTime - - message - - reason - - status - - type - type: object - type: array - lastHandledReconcileAt: - description: LastHandledReconcileAt holds the value of the - most recent reconcile request value, so a change can be - detected. - type: string - observedGeneration: - description: ObservedGeneration is the last observed generation. - format: int64 - type: integer - url: - description: URL is the download link for the last chart - pulled. - type: string - type: object - type: object - served: true - storage: true - subresources: - status: {} - type: raw - - name: helmreleases.helm.toolkit.fluxcd.io - properties: - apiVersion: apiextensions.k8s.io/v1 - kind: CustomResourceDefinition - metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.5.0 - labels: - app.kubernetes.io/instance: flux-system - name: helmreleases.helm.toolkit.fluxcd.io - spec: - group: helm.toolkit.fluxcd.io - names: - kind: HelmRelease - listKind: HelmReleaseList - plural: helmreleases - shortNames: - - hr - singular: helmrelease - scope: Namespaced - versions: - - additionalPrinterColumns: - - jsonPath: .status.conditions[?(@.type=="Ready")].status - name: Ready - type: string - - jsonPath: .status.conditions[?(@.type=="Ready")].message - name: Status - type: string - - jsonPath: .metadata.creationTimestamp - name: Age - type: date - name: v2beta1 - schema: - openAPIV3Schema: - description: HelmRelease is the Schema for the helmreleases API - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this - representation of an object. Servers should convert recognized - schemas to the latest internal value, and may reject unrecognized - values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource - this object represents. Servers may infer this from the endpoint - the client submits requests to. Cannot be updated. In CamelCase. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: HelmReleaseSpec defines the desired state of a - Helm release. - properties: - chart: - description: Chart defines the template of the v1beta1.HelmChart - that should be created for this HelmRelease. - properties: - spec: - description: Spec holds the template for the v1beta1.HelmChartSpec - for this HelmRelease. - properties: - chart: - description: The name or path the Helm chart is - available at in the SourceRef. - type: string - interval: - description: Interval at which to check the v1beta1.Source - for updates. Defaults to 'HelmReleaseSpec.Interval'. - type: string - sourceRef: - description: The name and namespace of the v1beta1.Source - the chart is available at. + images: + description: Images is a list of (image name, new + name, new tag or digest) for changing image names, + tags or digests. This can also be achieved with + a patch, but this operator is simpler to specify. + items: + description: Image contains an image name, a new + name, a new tag or digest, which will replace + the original name and tag. properties: - apiVersion: - description: APIVersion of the referent. - type: string - kind: - description: Kind of the referent. - enum: - - HelmRepository - - GitRepository - - Bucket + digest: + description: Digest is the value used to replace + the original image tag. If digest is present + NewTag value is ignored. type: string name: - description: Name of the referent. - maxLength: 253 - minLength: 1 + description: Name is a tag-less image name. type: string - namespace: - description: Namespace of the referent. - maxLength: 63 - minLength: 1 + newName: + description: NewName is the value used to replace + the original name. + type: string + newTag: + description: NewTag is the value used to replace + the original tag. type: string required: - name type: object - valuesFile: - description: Alternative values file to use as the - default chart values, expected to be a relative - path in the SourceRef. Deprecated in favor of - ValuesFiles, for backwards compatibility the file - defined here is merged before the ValuesFiles - items. Ignored when omitted. - type: string - valuesFiles: - description: Alternative list of values files to - use as the chart values (values.yaml is not included - by default), expected to be a relative path in - the SourceRef. Values files are merged in the - order of this list with the last file overriding - the first. Ignored when omitted. - items: - type: string - type: array - version: - default: '*' - description: Version semver expression, ignored - for charts from v1beta1.GitRepository and v1beta1.Bucket - sources. Defaults to latest when omitted. - type: string - required: - - chart - - sourceRef - type: object - required: - - spec - type: object - dependsOn: - description: DependsOn may contain a dependency.CrossNamespaceDependencyReference - slice with references to HelmRelease resources that must - be ready before this HelmRelease can be reconciled. - items: - description: CrossNamespaceDependencyReference holds the - reference to a dependency. - properties: - name: - description: Name holds the name reference of a dependency. - type: string - namespace: - description: Namespace holds the namespace reference - of a dependency. - type: string - required: - - name - type: object - type: array - install: - description: Install holds the configuration for Helm install - actions for this HelmRelease. - properties: - crds: - description: "CRDs upgrade CRDs from the Helm Chart's - crds directory according to the CRD upgrade policy - provided here. Valid values are `Skip`, `Create` or - `CreateReplace`. Default is `Create` and if omitted - CRDs are installed but not updated. \n Skip: do neither - install nor replace (update) any CRDs. \n Create: - new CRDs are created, existing CRDs are neither updated - nor deleted. \n CreateReplace: new CRDs are created, - existing CRDs are updated (replaced) but not deleted. - \n By default, CRDs are applied (installed) during - Helm install action. With this option users can opt-in - to CRD replace existing CRDs on Helm install actions, - which is not (yet) natively supported by Helm. https://helm.sh/docs/chart_best_practices/custom_resource_definitions." - enum: - - Skip - - Create - - CreateReplace - type: string - createNamespace: - description: CreateNamespace tells the Helm install - action to create the HelmReleaseSpec.TargetNamespace - if it does not exist yet. On uninstall, the namespace - will not be garbage collected. - type: boolean - disableHooks: - description: DisableHooks prevents hooks from running - during the Helm install action. - type: boolean - disableOpenAPIValidation: - description: DisableOpenAPIValidation prevents the Helm - install action from validating rendered templates - against the Kubernetes OpenAPI Schema. - type: boolean - disableWait: - description: DisableWait disables the waiting for resources - to be ready after a Helm install has been performed. - type: boolean - disableWaitForJobs: - description: DisableWaitForJobs disables waiting for - jobs to complete after a Helm install has been performed. - type: boolean - remediation: - description: Remediation holds the remediation configuration - for when the Helm install action for the HelmRelease - fails. The default is to not perform any action. - properties: - ignoreTestFailures: - description: IgnoreTestFailures tells the controller - to skip remediation when the Helm tests are run - after an install action but fail. Defaults to - 'Test.IgnoreFailures'. - type: boolean - remediateLastFailure: - description: RemediateLastFailure tells the controller - to remediate the last failure, when no retries - remain. Defaults to 'false'. - type: boolean - retries: - description: Retries is the number of retries that - should be attempted on failures before bailing. - Remediation, using an uninstall, is performed - between each attempt. Defaults to '0', a negative - integer equals to unlimited retries. - type: integer - type: object - replace: - description: Replace tells the Helm install action to - re-use the 'ReleaseName', but only if that name is - a deleted release which remains in the history. - type: boolean - skipCRDs: - description: "SkipCRDs tells the Helm install action - to not install any CRDs. By default, CRDs are installed - if not already present. \n Deprecated use CRD policy - (`crds`) attribute with value `Skip` instead." - type: boolean - timeout: - description: Timeout is the time to wait for any individual - Kubernetes operation (like Jobs for hooks) during - the performance of a Helm install action. Defaults - to 'HelmReleaseSpec.Timeout'. - type: string - type: object - interval: - description: Interval at which to reconcile the Helm release. - type: string - kubeConfig: - description: KubeConfig for reconciling the HelmRelease - on a remote cluster. When specified, KubeConfig takes - precedence over ServiceAccountName. - properties: - secretRef: - description: SecretRef holds the name to a secret that - contains a 'value' key with the kubeconfig file as - the value. It must be in the same namespace as the - HelmRelease. It is recommended that the kubeconfig - is self-contained, and the secret is regularly updated - if credentials such as a cloud-access-token expire. - Cloud specific `cmd-path` auth helpers will not function - without adding binaries and credentials to the Pod - that is responsible for reconciling the HelmRelease. - properties: - name: - description: Name of the referent - type: string - required: - - name - type: object - type: object - maxHistory: - description: MaxHistory is the number of revisions saved - by Helm for this HelmRelease. Use '0' for an unlimited - number of revisions; defaults to '10'. - type: integer - postRenderers: - description: PostRenderers holds an array of Helm PostRenderers, - which will be applied in order of their definition. - items: - description: PostRenderer contains a Helm PostRenderer - specification. - properties: - kustomize: - description: Kustomization to apply as PostRenderer. - properties: - images: - description: Images is a list of (image name, - new name, new tag or digest) for changing image - names, tags or digests. This can also be achieved - with a patch, but this operator is simpler to - specify. - items: - description: Image contains an image name, a - new name, a new tag or digest, which will - replace the original name and tag. - properties: - digest: - description: Digest is the value used to - replace the original image tag. If digest - is present NewTag value is ignored. - type: string - name: - description: Name is a tag-less image name. - type: string - newName: - description: NewName is the value used to - replace the original name. - type: string - newTag: - description: NewTag is the value used to - replace the original tag. - type: string - required: - - name - type: object - type: array - patchesJson6902: - description: JSON 6902 patches, defined as inline - YAML objects. - items: - description: JSON6902Patch contains a JSON6902 - patch and the target the patch should be applied + type: array + patchesJson6902: + description: JSON 6902 patches, defined as inline + YAML objects. + items: + description: JSON6902Patch contains a JSON6902 patch + and the target the patch should be applied to. + properties: + patch: + description: Patch contains the JSON6902 patch + document with an array of operation objects. + items: + description: JSON6902 is a JSON6902 operation + object. https://tools.ietf.org/html/rfc6902#section-4 + properties: + from: + type: string + op: + enum: + - test + - remove + - add + - replace + - move + - copy + type: string + path: + type: string + value: + x-kubernetes-preserve-unknown-fields: true + required: + - op + - path + type: object + type: array + target: + description: Target points to the resources + that the patch document should be applied to. properties: - patch: - description: Patch contains the JSON6902 - patch document with an array of operation - objects. - items: - description: JSON6902 is a JSON6902 operation - object. https://tools.ietf.org/html/rfc6902#section-4 - properties: - from: - type: string - op: - enum: - - test - - remove - - add - - replace - - move - - copy - type: string - path: - type: string - value: - x-kubernetes-preserve-unknown-fields: true - required: - - op - - path - type: object - type: array - target: - description: Target points to the resources - that the patch document should be applied - to. - properties: - annotationSelector: - description: AnnotationSelector is a - string that follows the label selection - expression https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#api - It matches with the resource annotations. - type: string - group: - description: Group is the API group - to select resources from. Together - with Version and Kind it is capable - of unambiguously identifying and/or - selecting resources. https://github.com/kubernetes/community/blob/master/contributors/design-proposals/api-machinery/api-group.md - type: string - kind: - description: Kind of the API Group to - select resources from. Together with - Group and Version it is capable of - unambiguously identifying and/or selecting - resources. https://github.com/kubernetes/community/blob/master/contributors/design-proposals/api-machinery/api-group.md - type: string - labelSelector: - description: LabelSelector is a string - that follows the label selection expression - https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#api - It matches with the resource labels. - type: string - name: - description: Name to match resources - with. - type: string - namespace: - description: Namespace to select resources - from. - type: string - version: - description: Version of the API Group - to select resources from. Together - with Group and Kind it is capable - of unambiguously identifying and/or - selecting resources. https://github.com/kubernetes/community/blob/master/contributors/design-proposals/api-machinery/api-group.md - type: string - type: object - required: - - patch - - target + annotationSelector: + description: AnnotationSelector is a string + that follows the label selection expression + https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#api + It matches with the resource annotations. + type: string + group: + description: Group is the API group to select + resources from. Together with Version + and Kind it is capable of unambiguously + identifying and/or selecting resources. + https://github.com/kubernetes/community/blob/master/contributors/design-proposals/api-machinery/api-group.md + type: string + kind: + description: Kind of the API Group to select + resources from. Together with Group and + Version it is capable of unambiguously + identifying and/or selecting resources. + https://github.com/kubernetes/community/blob/master/contributors/design-proposals/api-machinery/api-group.md + type: string + labelSelector: + description: LabelSelector is a string that + follows the label selection expression + https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#api + It matches with the resource labels. + type: string + name: + description: Name to match resources with. + type: string + namespace: + description: Namespace to select resources + from. + type: string + version: + description: Version of the API Group to + select resources from. Together with Group + and Kind it is capable of unambiguously + identifying and/or selecting resources. + https://github.com/kubernetes/community/blob/master/contributors/design-proposals/api-machinery/api-group.md + type: string type: object - type: array - patchesStrategicMerge: - description: Strategic merge patches, defined - as inline YAML objects. - items: - x-kubernetes-preserve-unknown-fields: true - type: array - type: object + required: + - patch + - target + type: object + type: array + patchesStrategicMerge: + description: Strategic merge patches, defined as inline + YAML objects. + items: + x-kubernetes-preserve-unknown-fields: true + type: array type: object - type: array - releaseName: - description: ReleaseName used for the Helm release. Defaults - to a composition of '[TargetNamespace-]Name'. - maxLength: 53 - minLength: 1 - type: string - rollback: - description: Rollback holds the configuration for Helm rollback - actions for this HelmRelease. - properties: - cleanupOnFail: - description: CleanupOnFail allows deletion of new resources - created during the Helm rollback action when it fails. - type: boolean - disableHooks: - description: DisableHooks prevents hooks from running - during the Helm rollback action. - type: boolean - disableWait: - description: DisableWait disables the waiting for resources - to be ready after a Helm rollback has been performed. - type: boolean - disableWaitForJobs: - description: DisableWaitForJobs disables waiting for - jobs to complete after a Helm rollback has been performed. - type: boolean - force: - description: Force forces resource updates through a - replacement strategy. - type: boolean - recreate: - description: Recreate performs pod restarts for the - resource if applicable. - type: boolean - timeout: - description: Timeout is the time to wait for any individual - Kubernetes operation (like Jobs for hooks) during - the performance of a Helm rollback action. Defaults - to 'HelmReleaseSpec.Timeout'. - type: string - type: object - serviceAccountName: - description: The name of the Kubernetes service account - to impersonate when reconciling this HelmRelease. - type: string - storageNamespace: - description: StorageNamespace used for the Helm storage. - Defaults to the namespace of the HelmRelease. - maxLength: 63 - minLength: 1 - type: string - suspend: - description: Suspend tells the controller to suspend reconciliation - for this HelmRelease, it does not apply to already started - reconciliations. Defaults to false. + type: object + type: array + releaseName: + description: ReleaseName used for the Helm release. Defaults + to a composition of '[TargetNamespace-]Name'. + maxLength: 53 + minLength: 1 + type: string + rollback: + description: Rollback holds the configuration for Helm rollback + actions for this HelmRelease. + properties: + cleanupOnFail: + description: CleanupOnFail allows deletion of new resources + created during the Helm rollback action when it fails. type: boolean - targetNamespace: - description: TargetNamespace to target when performing operations - for the HelmRelease. Defaults to the namespace of the - HelmRelease. - maxLength: 63 - minLength: 1 + disableHooks: + description: DisableHooks prevents hooks from running during + the Helm rollback action. + type: boolean + disableWait: + description: DisableWait disables the waiting for resources + to be ready after a Helm rollback has been performed. + type: boolean + disableWaitForJobs: + description: DisableWaitForJobs disables waiting for jobs + to complete after a Helm rollback has been performed. + type: boolean + force: + description: Force forces resource updates through a replacement + strategy. + type: boolean + recreate: + description: Recreate performs pod restarts for the resource + if applicable. + type: boolean + timeout: + description: Timeout is the time to wait for any individual + Kubernetes operation (like Jobs for hooks) during the + performance of a Helm rollback action. Defaults to 'HelmReleaseSpec.Timeout'. type: string - test: - description: Test holds the configuration for Helm test - actions for this HelmRelease. + type: object + serviceAccountName: + description: The name of the Kubernetes service account to impersonate + when reconciling this HelmRelease. + type: string + storageNamespace: + description: StorageNamespace used for the Helm storage. Defaults + to the namespace of the HelmRelease. + maxLength: 63 + minLength: 1 + type: string + suspend: + description: Suspend tells the controller to suspend reconciliation + for this HelmRelease, it does not apply to already started + reconciliations. Defaults to false. + type: boolean + targetNamespace: + description: TargetNamespace to target when performing operations + for the HelmRelease. Defaults to the namespace of the HelmRelease. + maxLength: 63 + minLength: 1 + type: string + test: + description: Test holds the configuration for Helm test actions + for this HelmRelease. + properties: + enable: + description: Enable enables Helm test actions for this HelmRelease + after an Helm install or upgrade action has been performed. + type: boolean + ignoreFailures: + description: IgnoreFailures tells the controller to skip + remediation when the Helm tests are run but fail. Can + be overwritten for tests run after install or upgrade + actions in 'Install.IgnoreTestFailures' and 'Upgrade.IgnoreTestFailures'. + type: boolean + timeout: + description: Timeout is the time to wait for any individual + Kubernetes operation during the performance of a Helm + test action. Defaults to 'HelmReleaseSpec.Timeout'. + type: string + type: object + timeout: + description: Timeout is the time to wait for any individual + Kubernetes operation (like Jobs for hooks) during the performance + of a Helm action. Defaults to '5m0s'. + type: string + uninstall: + description: Uninstall holds the configuration for Helm uninstall + actions for this HelmRelease. + properties: + disableHooks: + description: DisableHooks prevents hooks from running during + the Helm rollback action. + type: boolean + keepHistory: + description: KeepHistory tells Helm to remove all associated + resources and mark the release as deleted, but retain + the release history. + type: boolean + timeout: + description: Timeout is the time to wait for any individual + Kubernetes operation (like Jobs for hooks) during the + performance of a Helm uninstall action. Defaults to 'HelmReleaseSpec.Timeout'. + type: string + type: object + upgrade: + description: Upgrade holds the configuration for Helm upgrade + actions for this HelmRelease. + properties: + cleanupOnFail: + description: CleanupOnFail allows deletion of new resources + created during the Helm upgrade action when it fails. + type: boolean + crds: + description: "CRDs upgrade CRDs from the Helm Chart's crds + directory according to the CRD upgrade policy provided + here. Valid values are `Skip`, `Create` or `CreateReplace`. + Default is `Skip` and if omitted CRDs are neither installed + nor upgraded. \n Skip: do neither install nor replace + (update) any CRDs. \n Create: new CRDs are created, existing + CRDs are neither updated nor deleted. \n CreateReplace: + new CRDs are created, existing CRDs are updated (replaced) + but not deleted. \n By default, CRDs are not applied during + Helm upgrade action. With this option users can opt-in + to CRD upgrade, which is not (yet) natively supported + by Helm. https://helm.sh/docs/chart_best_practices/custom_resource_definitions." + enum: + - Skip + - Create + - CreateReplace + type: string + disableHooks: + description: DisableHooks prevents hooks from running during + the Helm upgrade action. + type: boolean + disableOpenAPIValidation: + description: DisableOpenAPIValidation prevents the Helm + upgrade action from validating rendered templates against + the Kubernetes OpenAPI Schema. + type: boolean + disableWait: + description: DisableWait disables the waiting for resources + to be ready after a Helm upgrade has been performed. + type: boolean + disableWaitForJobs: + description: DisableWaitForJobs disables waiting for jobs + to complete after a Helm upgrade has been performed. + type: boolean + force: + description: Force forces resource updates through a replacement + strategy. + type: boolean + preserveValues: + description: PreserveValues will make Helm reuse the last + release's values and merge in overrides from 'Values'. + Setting this flag makes the HelmRelease non-declarative. + type: boolean + remediation: + description: Remediation holds the remediation configuration + for when the Helm upgrade action for the HelmRelease fails. + The default is to not perform any action. properties: - enable: - description: Enable enables Helm test actions for this - HelmRelease after an Helm install or upgrade action - has been performed. + ignoreTestFailures: + description: IgnoreTestFailures tells the controller + to skip remediation when the Helm tests are run after + an upgrade action but fail. Defaults to 'Test.IgnoreFailures'. type: boolean - ignoreFailures: - description: IgnoreFailures tells the controller to - skip remediation when the Helm tests are run but fail. - Can be overwritten for tests run after install or - upgrade actions in 'Install.IgnoreTestFailures' and - 'Upgrade.IgnoreTestFailures'. + remediateLastFailure: + description: RemediateLastFailure tells the controller + to remediate the last failure, when no retries remain. + Defaults to 'false' unless 'Retries' is greater than + 0. type: boolean - timeout: - description: Timeout is the time to wait for any individual - Kubernetes operation during the performance of a Helm - test action. Defaults to 'HelmReleaseSpec.Timeout'. + retries: + description: Retries is the number of retries that should + be attempted on failures before bailing. Remediation, + using 'Strategy', is performed between each attempt. + Defaults to '0', a negative integer equals to unlimited + retries. + type: integer + strategy: + description: Strategy to use for failure remediation. + Defaults to 'rollback'. + enum: + - rollback + - uninstall type: string type: object timeout: description: Timeout is the time to wait for any individual Kubernetes operation (like Jobs for hooks) during the - performance of a Helm action. Defaults to '5m0s'. + performance of a Helm upgrade action. Defaults to 'HelmReleaseSpec.Timeout'. type: string - uninstall: - description: Uninstall holds the configuration for Helm - uninstall actions for this HelmRelease. - properties: - disableHooks: - description: DisableHooks prevents hooks from running - during the Helm rollback action. - type: boolean - keepHistory: - description: KeepHistory tells Helm to remove all associated - resources and mark the release as deleted, but retain - the release history. - type: boolean - timeout: - description: Timeout is the time to wait for any individual - Kubernetes operation (like Jobs for hooks) during - the performance of a Helm uninstall action. Defaults - to 'HelmReleaseSpec.Timeout'. - type: string - type: object - upgrade: - description: Upgrade holds the configuration for Helm upgrade - actions for this HelmRelease. - properties: - cleanupOnFail: - description: CleanupOnFail allows deletion of new resources - created during the Helm upgrade action when it fails. - type: boolean - crds: - description: "CRDs upgrade CRDs from the Helm Chart's - crds directory according to the CRD upgrade policy - provided here. Valid values are `Skip`, `Create` or - `CreateReplace`. Default is `Skip` and if omitted - CRDs are neither installed nor upgraded. \n Skip: - do neither install nor replace (update) any CRDs. - \n Create: new CRDs are created, existing CRDs are - neither updated nor deleted. \n CreateReplace: new - CRDs are created, existing CRDs are updated (replaced) - but not deleted. \n By default, CRDs are not applied - during Helm upgrade action. With this option users - can opt-in to CRD upgrade, which is not (yet) natively - supported by Helm. https://helm.sh/docs/chart_best_practices/custom_resource_definitions." - enum: - - Skip - - Create - - CreateReplace - type: string - disableHooks: - description: DisableHooks prevents hooks from running - during the Helm upgrade action. - type: boolean - disableOpenAPIValidation: - description: DisableOpenAPIValidation prevents the Helm - upgrade action from validating rendered templates - against the Kubernetes OpenAPI Schema. - type: boolean - disableWait: - description: DisableWait disables the waiting for resources - to be ready after a Helm upgrade has been performed. - type: boolean - disableWaitForJobs: - description: DisableWaitForJobs disables waiting for - jobs to complete after a Helm upgrade has been performed. - type: boolean - force: - description: Force forces resource updates through a - replacement strategy. - type: boolean - preserveValues: - description: PreserveValues will make Helm reuse the - last release's values and merge in overrides from - 'Values'. Setting this flag makes the HelmRelease - non-declarative. - type: boolean - remediation: - description: Remediation holds the remediation configuration - for when the Helm upgrade action for the HelmRelease - fails. The default is to not perform any action. - properties: - ignoreTestFailures: - description: IgnoreTestFailures tells the controller - to skip remediation when the Helm tests are run - after an upgrade action but fail. Defaults to - 'Test.IgnoreFailures'. - type: boolean - remediateLastFailure: - description: RemediateLastFailure tells the controller - to remediate the last failure, when no retries - remain. Defaults to 'false' unless 'Retries' is - greater than 0. - type: boolean - retries: - description: Retries is the number of retries that - should be attempted on failures before bailing. - Remediation, using 'Strategy', is performed between - each attempt. Defaults to '0', a negative integer - equals to unlimited retries. - type: integer - strategy: - description: Strategy to use for failure remediation. - Defaults to 'rollback'. - enum: - - rollback - - uninstall - type: string - type: object - timeout: - description: Timeout is the time to wait for any individual - Kubernetes operation (like Jobs for hooks) during - the performance of a Helm upgrade action. Defaults - to 'HelmReleaseSpec.Timeout'. - type: string - type: object - values: - description: Values holds the values for this Helm release. - x-kubernetes-preserve-unknown-fields: true - valuesFrom: - description: ValuesFrom holds references to resources containing - Helm values for this HelmRelease, and information about - how they should be merged. - items: - description: ValuesReference contains a reference to a - resource containing Helm values, and optionally the - key they can be found at. - properties: - kind: - description: Kind of the values referent, valid values - are ('Secret', 'ConfigMap'). - enum: - - Secret - - ConfigMap - type: string - name: - description: Name of the values referent. Should reside - in the same namespace as the referring resource. - maxLength: 253 - minLength: 1 - type: string - optional: - description: Optional marks this ValuesReference as - optional. When set, a not found error for the values - reference is ignored, but any ValuesKey, TargetPath - or transient error will still result in a reconciliation - failure. - type: boolean - targetPath: - description: TargetPath is the YAML dot notation path - the value should be merged at. When set, the ValuesKey - is expected to be a single flat value. Defaults - to 'None', which results in the values getting merged - at the root. - type: string - valuesKey: - description: ValuesKey is the data key where the values.yaml - or a specific value can be found at. Defaults to - 'values.yaml'. - type: string - required: - - kind - - name - type: object - type: array - required: - - chart - - interval - type: object - status: - description: HelmReleaseStatus defines the observed state of - a HelmRelease. - properties: - conditions: - description: Conditions holds the conditions for the HelmRelease. - items: - description: "Condition contains details for one aspect - of the current state of this API Resource. --- This - struct is intended for direct use as an array at the - field path .status.conditions. For example, type FooStatus - struct{ // Represents the observations of a foo's - current state. // Known .status.conditions.type - are: \"Available\", \"Progressing\", and \"Degraded\" - \ // +patchMergeKey=type // +patchStrategy=merge - \ // +listType=map // +listMapKey=type Conditions - []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" - patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` - \n // other fields }" - properties: - lastTransitionTime: - description: lastTransitionTime is the last time the - condition transitioned from one status to another. - This should be when the underlying condition changed. If - that is not known, then using the time when the - API field changed is acceptable. - format: date-time - type: string - message: - description: message is a human readable message indicating - details about the transition. This may be an empty - string. - maxLength: 32768 - type: string - observedGeneration: - description: observedGeneration represents the .metadata.generation - that the condition was set based upon. For instance, - if .metadata.generation is currently 12, but the - .status.conditions[x].observedGeneration is 9, the - condition is out of date with respect to the current - state of the instance. - format: int64 - minimum: 0 - type: integer - reason: - description: reason contains a programmatic identifier - indicating the reason for the condition's last transition. - Producers of specific condition types may define - expected values and meanings for this field, and - whether the values are considered a guaranteed API. - The value should be a CamelCase string. This field - may not be empty. - maxLength: 1024 - minLength: 1 - pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ - type: string - status: - description: status of the condition, one of True, - False, Unknown. - enum: - - "True" - - "False" - - Unknown - type: string - type: - description: type of condition in CamelCase or in - foo.example.com/CamelCase. --- Many .condition.type - values are consistent across resources like Available, - but because arbitrary conditions can be useful (see - .node.status.conditions), the ability to deconflict - is important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) - maxLength: 316 - pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ - type: string - required: - - lastTransitionTime - - message - - reason - - status - - type - type: object - type: array - failures: - description: Failures is the reconciliation failure count - against the latest desired state. It is reset after a - successful reconciliation. - format: int64 - type: integer - helmChart: - description: HelmChart is the namespaced name of the HelmChart - resource created by the controller for the HelmRelease. - type: string - installFailures: - description: InstallFailures is the install failure count - against the latest desired state. It is reset after a - successful reconciliation. - format: int64 - type: integer - lastAppliedRevision: - description: LastAppliedRevision is the revision of the - last successfully applied source. - type: string - lastAttemptedRevision: - description: LastAttemptedRevision is the revision of the - last reconciliation attempt. - type: string - lastAttemptedValuesChecksum: - description: LastAttemptedValuesChecksum is the SHA1 checksum - of the values of the last reconciliation attempt. - type: string - lastHandledReconcileAt: - description: LastHandledReconcileAt holds the value of the - most recent reconcile request value, so a change can be - detected. - type: string - lastReleaseRevision: - description: LastReleaseRevision is the revision of the - last successful Helm release. - type: integer - observedGeneration: - description: ObservedGeneration is the last observed generation. - format: int64 - type: integer - upgradeFailures: - description: UpgradeFailures is the upgrade failure count - against the latest desired state. It is reset after a - successful reconciliation. - format: int64 - type: integer type: object + values: + description: Values holds the values for this Helm release. + x-kubernetes-preserve-unknown-fields: true + valuesFrom: + description: ValuesFrom holds references to resources containing + Helm values for this HelmRelease, and information about how + they should be merged. + items: + description: ValuesReference contains a reference to a resource + containing Helm values, and optionally the key they can + be found at. + properties: + kind: + description: Kind of the values referent, valid values + are ('Secret', 'ConfigMap'). + enum: + - Secret + - ConfigMap + type: string + name: + description: Name of the values referent. Should reside + in the same namespace as the referring resource. + maxLength: 253 + minLength: 1 + type: string + optional: + description: Optional marks this ValuesReference as optional. + When set, a not found error for the values reference + is ignored, but any ValuesKey, TargetPath or transient + error will still result in a reconciliation failure. + type: boolean + targetPath: + description: TargetPath is the YAML dot notation path + the value should be merged at. When set, the ValuesKey + is expected to be a single flat value. Defaults to 'None', + which results in the values getting merged at the root. + type: string + valuesKey: + description: ValuesKey is the data key where the values.yaml + or a specific value can be found at. Defaults to 'values.yaml'. + type: string + required: + - kind + - name + type: object + type: array + required: + - chart + - interval type: object - served: true - storage: true - subresources: - status: {} - type: raw - - name: helmrepositories.source.toolkit.fluxcd.io - properties: - apiVersion: apiextensions.k8s.io/v1 - kind: CustomResourceDefinition - metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.5.0 - labels: - app.kubernetes.io/instance: flux-system - name: helmrepositories.source.toolkit.fluxcd.io - spec: - group: source.toolkit.fluxcd.io - names: - kind: HelmRepository - listKind: HelmRepositoryList - plural: helmrepositories - shortNames: - - helmrepo - singular: helmrepository - scope: Namespaced - versions: - - additionalPrinterColumns: - - jsonPath: .spec.url - name: URL - type: string - - jsonPath: .status.conditions[?(@.type=="Ready")].status - name: Ready - type: string - - jsonPath: .status.conditions[?(@.type=="Ready")].message - name: Status - type: string - - jsonPath: .metadata.creationTimestamp - name: Age - type: date - name: v1beta1 - schema: - openAPIV3Schema: - description: HelmRepository is the Schema for the helmrepositories - API + status: + description: HelmReleaseStatus defines the observed state of a HelmRelease. properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this - representation of an object. Servers should convert recognized - schemas to the latest internal value, and may reject unrecognized - values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + conditions: + description: Conditions holds the conditions for the HelmRelease. + items: + description: "Condition contains details for one aspect of + the current state of this API Resource. --- This struct + is intended for direct use as an array at the field path + .status.conditions. For example, type FooStatus struct{ + \ // Represents the observations of a foo's current state. + \ // Known .status.conditions.type are: \"Available\", + \"Progressing\", and \"Degraded\" // +patchMergeKey=type + \ // +patchStrategy=merge // +listType=map // + +listMapKey=type Conditions []metav1.Condition `json:\"conditions,omitempty\" + patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` + \n // other fields }" + properties: + lastTransitionTime: + description: lastTransitionTime is the last time the condition + transitioned from one status to another. This should + be when the underlying condition changed. If that is + not known, then using the time when the API field changed + is acceptable. + format: date-time + type: string + message: + description: message is a human readable message indicating + details about the transition. This may be an empty string. + maxLength: 32768 + type: string + observedGeneration: + description: observedGeneration represents the .metadata.generation + that the condition was set based upon. For instance, + if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration + is 9, the condition is out of date with respect to the + current state of the instance. + format: int64 + minimum: 0 + type: integer + reason: + description: reason contains a programmatic identifier + indicating the reason for the condition's last transition. + Producers of specific condition types may define expected + values and meanings for this field, and whether the + values are considered a guaranteed API. The value should + be a CamelCase string. This field may not be empty. + maxLength: 1024 + minLength: 1 + pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ + type: string + status: + description: status of the condition, one of True, False, + Unknown. + enum: + - "True" + - "False" + - Unknown + type: string + type: + description: type of condition in CamelCase or in foo.example.com/CamelCase. + --- Many .condition.type values are consistent across + resources like Available, but because arbitrary conditions + can be useful (see .node.status.conditions), the ability + to deconflict is important. The regex it matches is + (dns1123SubdomainFmt/)?(qualifiedNameFmt) + maxLength: 316 + pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ + type: string + required: + - lastTransitionTime + - message + - reason + - status + - type + type: object + type: array + failures: + description: Failures is the reconciliation failure count against + the latest desired state. It is reset after a successful reconciliation. + format: int64 + type: integer + helmChart: + description: HelmChart is the namespaced name of the HelmChart + resource created by the controller for the HelmRelease. type: string - kind: - description: 'Kind is a string value representing the REST resource - this object represents. Servers may infer this from the endpoint - the client submits requests to. Cannot be updated. In CamelCase. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + installFailures: + description: InstallFailures is the install failure count against + the latest desired state. It is reset after a successful reconciliation. + format: int64 + type: integer + lastAppliedRevision: + description: LastAppliedRevision is the revision of the last + successfully applied source. type: string - metadata: - type: object - spec: - description: HelmRepositorySpec defines the reference to a Helm - repository. + lastAttemptedRevision: + description: LastAttemptedRevision is the revision of the last + reconciliation attempt. + type: string + lastAttemptedValuesChecksum: + description: LastAttemptedValuesChecksum is the SHA1 checksum + of the values of the last reconciliation attempt. + type: string + lastHandledReconcileAt: + description: LastHandledReconcileAt holds the value of the most + recent reconcile request value, so a change can be detected. + type: string + lastReleaseRevision: + description: LastReleaseRevision is the revision of the last + successful Helm release. + type: integer + observedGeneration: + description: ObservedGeneration is the last observed generation. + format: int64 + type: integer + upgradeFailures: + description: UpgradeFailures is the upgrade failure count against + the latest desired state. It is reset after a successful reconciliation. + format: int64 + type: integer + type: object + type: object + served: true + storage: true + subresources: + status: {} + type: raw + - name: helmrepositories.source.toolkit.fluxcd.io + properties: + apiVersion: apiextensions.k8s.io/v1 + kind: CustomResourceDefinition + metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.5.0 + labels: + app.kubernetes.io/instance: flux-system + name: helmrepositories.source.toolkit.fluxcd.io + spec: + group: source.toolkit.fluxcd.io + names: + kind: HelmRepository + listKind: HelmRepositoryList + plural: helmrepositories + shortNames: + - helmrepo + singular: helmrepository + scope: Namespaced + versions: + - additionalPrinterColumns: + - jsonPath: .spec.url + name: URL + type: string + - jsonPath: .status.conditions[?(@.type=="Ready")].status + name: Ready + type: string + - jsonPath: .status.conditions[?(@.type=="Ready")].message + name: Status + type: string + - jsonPath: .metadata.creationTimestamp + name: Age + type: date + name: v1beta1 + schema: + openAPIV3Schema: + description: HelmRepository is the Schema for the helmrepositories API + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the + latest internal value, and may reject unrecognized values. More + info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource + this object represents. Servers may infer this from the endpoint + the client submits requests to. Cannot be updated. In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: HelmRepositorySpec defines the reference to a Helm + repository. + properties: + interval: + description: The interval at which to check the upstream for + updates. + type: string + passCredentials: + description: PassCredentials allows the credentials from the + SecretRef to be passed on to a host that does not match the + host as defined in URL. This may be required if the host of + the advertised chart URLs in the index differ from the defined + URL. Enabling this should be done with caution, as it can + potentially result in credentials getting stolen in a MITM-attack. + type: boolean + secretRef: + description: The name of the secret containing authentication + credentials for the Helm repository. For HTTP/S basic auth + the secret must contain username and password fields. For + TLS the secret must contain a certFile and keyFile, and/or + caCert fields. properties: - interval: - description: The interval at which to check the upstream - for updates. + name: + description: Name of the referent type: string - passCredentials: - description: PassCredentials allows the credentials from - the SecretRef to be passed on to a host that does not - match the host as defined in URL. This may be required - if the host of the advertised chart URLs in the index - differ from the defined URL. Enabling this should be done - with caution, as it can potentially result in credentials - getting stolen in a MITM-attack. - type: boolean - secretRef: - description: The name of the secret containing authentication - credentials for the Helm repository. For HTTP/S basic - auth the secret must contain username and password fields. - For TLS the secret must contain a certFile and keyFile, - and/or caCert fields. - properties: - name: - description: Name of the referent - type: string - required: - - name - type: object - suspend: - description: This flag tells the controller to suspend the - reconciliation of this source. - type: boolean - timeout: - default: 60s - description: The timeout of index downloading, defaults - to 60s. + required: + - name + type: object + suspend: + description: This flag tells the controller to suspend the reconciliation + of this source. + type: boolean + timeout: + default: 60s + description: The timeout of index downloading, defaults to 60s. + type: string + url: + description: The Helm repository URL, a valid URL contains at + least a protocol and host. + type: string + required: + - interval + - url + type: object + status: + description: HelmRepositoryStatus defines the observed state of + the HelmRepository. + properties: + artifact: + description: Artifact represents the output of the last successful + repository sync. + properties: + checksum: + description: Checksum is the SHA1 checksum of the artifact. + type: string + lastUpdateTime: + description: LastUpdateTime is the timestamp corresponding + to the last update of this artifact. + format: date-time + type: string + path: + description: Path is the relative file path of this artifact. + type: string + revision: + description: Revision is a human readable identifier traceable + in the origin source system. It can be a Git commit SHA, + Git tag, a Helm index timestamp, a Helm chart version, + etc. type: string url: - description: The Helm repository URL, a valid URL contains - at least a protocol and host. + description: URL is the HTTP address of this artifact. type: string required: - - interval + - path - url type: object - status: - description: HelmRepositoryStatus defines the observed state - of the HelmRepository. + conditions: + description: Conditions holds the conditions for the HelmRepository. + items: + description: "Condition contains details for one aspect of + the current state of this API Resource. --- This struct + is intended for direct use as an array at the field path + .status.conditions. For example, type FooStatus struct{ + \ // Represents the observations of a foo's current state. + \ // Known .status.conditions.type are: \"Available\", + \"Progressing\", and \"Degraded\" // +patchMergeKey=type + \ // +patchStrategy=merge // +listType=map // + +listMapKey=type Conditions []metav1.Condition `json:\"conditions,omitempty\" + patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` + \n // other fields }" + properties: + lastTransitionTime: + description: lastTransitionTime is the last time the condition + transitioned from one status to another. This should + be when the underlying condition changed. If that is + not known, then using the time when the API field changed + is acceptable. + format: date-time + type: string + message: + description: message is a human readable message indicating + details about the transition. This may be an empty string. + maxLength: 32768 + type: string + observedGeneration: + description: observedGeneration represents the .metadata.generation + that the condition was set based upon. For instance, + if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration + is 9, the condition is out of date with respect to the + current state of the instance. + format: int64 + minimum: 0 + type: integer + reason: + description: reason contains a programmatic identifier + indicating the reason for the condition's last transition. + Producers of specific condition types may define expected + values and meanings for this field, and whether the + values are considered a guaranteed API. The value should + be a CamelCase string. This field may not be empty. + maxLength: 1024 + minLength: 1 + pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ + type: string + status: + description: status of the condition, one of True, False, + Unknown. + enum: + - "True" + - "False" + - Unknown + type: string + type: + description: type of condition in CamelCase or in foo.example.com/CamelCase. + --- Many .condition.type values are consistent across + resources like Available, but because arbitrary conditions + can be useful (see .node.status.conditions), the ability + to deconflict is important. The regex it matches is + (dns1123SubdomainFmt/)?(qualifiedNameFmt) + maxLength: 316 + pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ + type: string + required: + - lastTransitionTime + - message + - reason + - status + - type + type: object + type: array + lastHandledReconcileAt: + description: LastHandledReconcileAt holds the value of the most + recent reconcile request value, so a change can be detected. + type: string + observedGeneration: + description: ObservedGeneration is the last observed generation. + format: int64 + type: integer + url: + description: URL is the download link for the last index fetched. + type: string + type: object + type: object + served: true + storage: true + subresources: + status: {} + type: raw + - name: imagepolicies.image.toolkit.fluxcd.io + properties: + apiVersion: apiextensions.k8s.io/v1 + kind: CustomResourceDefinition + metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.5.0 + labels: + app.kubernetes.io/instance: flux-system + name: imagepolicies.image.toolkit.fluxcd.io + spec: + group: image.toolkit.fluxcd.io + names: + kind: ImagePolicy + listKind: ImagePolicyList + plural: imagepolicies + singular: imagepolicy + scope: Namespaced + versions: + - additionalPrinterColumns: + - jsonPath: .status.latestImage + name: LatestImage + type: string + name: v1alpha1 + schema: + openAPIV3Schema: + description: ImagePolicy is the Schema for the imagepolicies API + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the + latest internal value, and may reject unrecognized values. More + info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource + this object represents. Servers may infer this from the endpoint + the client submits requests to. Cannot be updated. In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: ImagePolicySpec defines the parameters for calculating + the ImagePolicy + properties: + filterTags: + description: FilterTags enables filtering for only a subset + of tags based on a set of rules. If no rules are provided, + all the tags from the repository will be ordered and compared. properties: - artifact: - description: Artifact represents the output of the last - successful repository sync. + extract: + description: Extract allows a capture group to be extracted + from the specified regular expression pattern, useful + before tag evaluation. + type: string + pattern: + description: Pattern specifies a regular expression pattern + used to filter for image tags. + type: string + type: object + imageRepositoryRef: + description: ImageRepositoryRef points at the object specifying + the image being scanned + properties: + name: + description: Name of the referent + type: string + required: + - name + type: object + policy: + description: Policy gives the particulars of the policy to be + followed in selecting the most recent image + properties: + alphabetical: + description: Alphabetical set of rules to use for alphabetical + ordering of the tags. properties: - checksum: - description: Checksum is the SHA1 checksum of the artifact. + order: + default: asc + description: Order specifies the sorting order of the + tags. Given the letters of the alphabet as tags, ascending + order would select Z, and descending order would select + A. + enum: + - asc + - desc type: string - lastUpdateTime: - description: LastUpdateTime is the timestamp corresponding - to the last update of this artifact. - format: date-time + type: object + numerical: + description: Numerical set of rules to use for numerical + ordering of the tags. + properties: + order: + default: asc + description: Order specifies the sorting order of the + tags. Given the integer values from 0 to 9 as tags, + ascending order would select 9, and descending order + would select 0. + enum: + - asc + - desc type: string - path: - description: Path is the relative file path of this - artifact. - type: string - revision: - description: Revision is a human readable identifier - traceable in the origin source system. It can be a - Git commit SHA, Git tag, a Helm index timestamp, a - Helm chart version, etc. - type: string - url: - description: URL is the HTTP address of this artifact. + type: object + semver: + description: SemVer gives a semantic version range to check + against the tags available. + properties: + range: + description: Range gives a semver range for the image + tag; the highest version within the range that's a + tag yields the latest image. type: string required: - - path - - url + - range type: object - conditions: - description: Conditions holds the conditions for the HelmRepository. - items: - description: "Condition contains details for one aspect - of the current state of this API Resource. --- This - struct is intended for direct use as an array at the - field path .status.conditions. For example, type FooStatus - struct{ // Represents the observations of a foo's - current state. // Known .status.conditions.type - are: \"Available\", \"Progressing\", and \"Degraded\" - \ // +patchMergeKey=type // +patchStrategy=merge - \ // +listType=map // +listMapKey=type Conditions - []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" - patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` - \n // other fields }" - properties: - lastTransitionTime: - description: lastTransitionTime is the last time the - condition transitioned from one status to another. - This should be when the underlying condition changed. If - that is not known, then using the time when the - API field changed is acceptable. - format: date-time - type: string - message: - description: message is a human readable message indicating - details about the transition. This may be an empty - string. - maxLength: 32768 - type: string - observedGeneration: - description: observedGeneration represents the .metadata.generation - that the condition was set based upon. For instance, - if .metadata.generation is currently 12, but the - .status.conditions[x].observedGeneration is 9, the - condition is out of date with respect to the current - state of the instance. - format: int64 - minimum: 0 - type: integer - reason: - description: reason contains a programmatic identifier - indicating the reason for the condition's last transition. - Producers of specific condition types may define - expected values and meanings for this field, and - whether the values are considered a guaranteed API. - The value should be a CamelCase string. This field - may not be empty. - maxLength: 1024 - minLength: 1 - pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ - type: string - status: - description: status of the condition, one of True, - False, Unknown. - enum: - - "True" - - "False" - - Unknown - type: string - type: - description: type of condition in CamelCase or in - foo.example.com/CamelCase. --- Many .condition.type - values are consistent across resources like Available, - but because arbitrary conditions can be useful (see - .node.status.conditions), the ability to deconflict - is important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) - maxLength: 316 - pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ - type: string - required: - - lastTransitionTime - - message - - reason - - status - - type - type: object - type: array - lastHandledReconcileAt: - description: LastHandledReconcileAt holds the value of the - most recent reconcile request value, so a change can be - detected. - type: string - observedGeneration: - description: ObservedGeneration is the last observed generation. - format: int64 - type: integer - url: - description: URL is the download link for the last index - fetched. - type: string type: object + required: + - imageRepositoryRef + - policy type: object - served: true - storage: true - subresources: - status: {} - type: raw - - name: imagepolicies.image.toolkit.fluxcd.io - properties: - apiVersion: apiextensions.k8s.io/v1 - kind: CustomResourceDefinition - metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.5.0 - labels: - app.kubernetes.io/instance: flux-system - name: imagepolicies.image.toolkit.fluxcd.io - spec: - group: image.toolkit.fluxcd.io - names: - kind: ImagePolicy - listKind: ImagePolicyList - plural: imagepolicies - singular: imagepolicy - scope: Namespaced - versions: - - additionalPrinterColumns: - - jsonPath: .status.latestImage - name: LatestImage - type: string - name: v1alpha1 - schema: - openAPIV3Schema: - description: ImagePolicy is the Schema for the imagepolicies API + status: + description: ImagePolicyStatus defines the observed state of ImagePolicy properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this - representation of an object. Servers should convert recognized - schemas to the latest internal value, and may reject unrecognized - values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + conditions: + items: + description: "Condition contains details for one aspect of + the current state of this API Resource. --- This struct + is intended for direct use as an array at the field path + .status.conditions. For example, type FooStatus struct{ + \ // Represents the observations of a foo's current state. + \ // Known .status.conditions.type are: \"Available\", + \"Progressing\", and \"Degraded\" // +patchMergeKey=type + \ // +patchStrategy=merge // +listType=map // + +listMapKey=type Conditions []metav1.Condition `json:\"conditions,omitempty\" + patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` + \n // other fields }" + properties: + lastTransitionTime: + description: lastTransitionTime is the last time the condition + transitioned from one status to another. This should + be when the underlying condition changed. If that is + not known, then using the time when the API field changed + is acceptable. + format: date-time + type: string + message: + description: message is a human readable message indicating + details about the transition. This may be an empty string. + maxLength: 32768 + type: string + observedGeneration: + description: observedGeneration represents the .metadata.generation + that the condition was set based upon. For instance, + if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration + is 9, the condition is out of date with respect to the + current state of the instance. + format: int64 + minimum: 0 + type: integer + reason: + description: reason contains a programmatic identifier + indicating the reason for the condition's last transition. + Producers of specific condition types may define expected + values and meanings for this field, and whether the + values are considered a guaranteed API. The value should + be a CamelCase string. This field may not be empty. + maxLength: 1024 + minLength: 1 + pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ + type: string + status: + description: status of the condition, one of True, False, + Unknown. + enum: + - "True" + - "False" + - Unknown + type: string + type: + description: type of condition in CamelCase or in foo.example.com/CamelCase. + --- Many .condition.type values are consistent across + resources like Available, but because arbitrary conditions + can be useful (see .node.status.conditions), the ability + to deconflict is important. The regex it matches is + (dns1123SubdomainFmt/)?(qualifiedNameFmt) + maxLength: 316 + pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ + type: string + required: + - lastTransitionTime + - message + - reason + - status + - type + type: object + type: array + latestImage: + description: LatestImage gives the first in the list of images + scanned by the image repository, when filtered and ordered + according to the policy. type: string - kind: - description: 'Kind is a string value representing the REST resource - this object represents. Servers may infer this from the endpoint - the client submits requests to. Cannot be updated. In CamelCase. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: ImagePolicySpec defines the parameters for calculating - the ImagePolicy + observedGeneration: + format: int64 + type: integer + type: object + type: object + served: true + storage: false + subresources: + status: {} + - additionalPrinterColumns: + - jsonPath: .status.latestImage + name: LatestImage + type: string + name: v1alpha2 + schema: + openAPIV3Schema: + description: ImagePolicy is the Schema for the imagepolicies API + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the + latest internal value, and may reject unrecognized values. More + info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource + this object represents. Servers may infer this from the endpoint + the client submits requests to. Cannot be updated. In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: ImagePolicySpec defines the parameters for calculating + the ImagePolicy + properties: + filterTags: + description: FilterTags enables filtering for only a subset + of tags based on a set of rules. If no rules are provided, + all the tags from the repository will be ordered and compared. properties: - filterTags: - description: FilterTags enables filtering for only a subset - of tags based on a set of rules. If no rules are provided, - all the tags from the repository will be ordered and compared. + extract: + description: Extract allows a capture group to be extracted + from the specified regular expression pattern, useful + before tag evaluation. + type: string + pattern: + description: Pattern specifies a regular expression pattern + used to filter for image tags. + type: string + type: object + imageRepositoryRef: + description: ImageRepositoryRef points at the object specifying + the image being scanned + properties: + name: + description: Name of the referent + type: string + required: + - name + type: object + policy: + description: Policy gives the particulars of the policy to be + followed in selecting the most recent image + properties: + alphabetical: + description: Alphabetical set of rules to use for alphabetical + ordering of the tags. properties: - extract: - description: Extract allows a capture group to be extracted - from the specified regular expression pattern, useful - before tag evaluation. - type: string - pattern: - description: Pattern specifies a regular expression - pattern used to filter for image tags. + order: + default: asc + description: Order specifies the sorting order of the + tags. Given the letters of the alphabet as tags, ascending + order would select Z, and descending order would select + A. + enum: + - asc + - desc type: string type: object - imageRepositoryRef: - description: ImageRepositoryRef points at the object specifying - the image being scanned + numerical: + description: Numerical set of rules to use for numerical + ordering of the tags. + properties: + order: + default: asc + description: Order specifies the sorting order of the + tags. Given the integer values from 0 to 9 as tags, + ascending order would select 9, and descending order + would select 0. + enum: + - asc + - desc + type: string + type: object + semver: + description: SemVer gives a semantic version range to check + against the tags available. + properties: + range: + description: Range gives a semver range for the image + tag; the highest version within the range that's a + tag yields the latest image. + type: string + required: + - range + type: object + type: object + required: + - imageRepositoryRef + - policy + type: object + status: + description: ImagePolicyStatus defines the observed state of ImagePolicy + properties: + conditions: + items: + description: "Condition contains details for one aspect of + the current state of this API Resource. --- This struct + is intended for direct use as an array at the field path + .status.conditions. For example, type FooStatus struct{ + \ // Represents the observations of a foo's current state. + \ // Known .status.conditions.type are: \"Available\", + \"Progressing\", and \"Degraded\" // +patchMergeKey=type + \ // +patchStrategy=merge // +listType=map // + +listMapKey=type Conditions []metav1.Condition `json:\"conditions,omitempty\" + patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` + \n // other fields }" + properties: + lastTransitionTime: + description: lastTransitionTime is the last time the condition + transitioned from one status to another. This should + be when the underlying condition changed. If that is + not known, then using the time when the API field changed + is acceptable. + format: date-time + type: string + message: + description: message is a human readable message indicating + details about the transition. This may be an empty string. + maxLength: 32768 + type: string + observedGeneration: + description: observedGeneration represents the .metadata.generation + that the condition was set based upon. For instance, + if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration + is 9, the condition is out of date with respect to the + current state of the instance. + format: int64 + minimum: 0 + type: integer + reason: + description: reason contains a programmatic identifier + indicating the reason for the condition's last transition. + Producers of specific condition types may define expected + values and meanings for this field, and whether the + values are considered a guaranteed API. The value should + be a CamelCase string. This field may not be empty. + maxLength: 1024 + minLength: 1 + pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ + type: string + status: + description: status of the condition, one of True, False, + Unknown. + enum: + - "True" + - "False" + - Unknown + type: string + type: + description: type of condition in CamelCase or in foo.example.com/CamelCase. + --- Many .condition.type values are consistent across + resources like Available, but because arbitrary conditions + can be useful (see .node.status.conditions), the ability + to deconflict is important. The regex it matches is + (dns1123SubdomainFmt/)?(qualifiedNameFmt) + maxLength: 316 + pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ + type: string + required: + - lastTransitionTime + - message + - reason + - status + - type + type: object + type: array + latestImage: + description: LatestImage gives the first in the list of images + scanned by the image repository, when filtered and ordered + according to the policy. + type: string + observedGeneration: + format: int64 + type: integer + type: object + type: object + served: true + storage: false + subresources: + status: {} + - additionalPrinterColumns: + - jsonPath: .status.latestImage + name: LatestImage + type: string + name: v1beta1 + schema: + openAPIV3Schema: + description: ImagePolicy is the Schema for the imagepolicies API + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the + latest internal value, and may reject unrecognized values. More + info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource + this object represents. Servers may infer this from the endpoint + the client submits requests to. Cannot be updated. In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: ImagePolicySpec defines the parameters for calculating + the ImagePolicy + properties: + filterTags: + description: FilterTags enables filtering for only a subset + of tags based on a set of rules. If no rules are provided, + all the tags from the repository will be ordered and compared. + properties: + extract: + description: Extract allows a capture group to be extracted + from the specified regular expression pattern, useful + before tag evaluation. + type: string + pattern: + description: Pattern specifies a regular expression pattern + used to filter for image tags. + type: string + type: object + imageRepositoryRef: + description: ImageRepositoryRef points at the object specifying + the image being scanned + properties: + name: + description: Name of the referent + type: string + required: + - name + type: object + policy: + description: Policy gives the particulars of the policy to be + followed in selecting the most recent image + properties: + alphabetical: + description: Alphabetical set of rules to use for alphabetical + ordering of the tags. + properties: + order: + default: asc + description: Order specifies the sorting order of the + tags. Given the letters of the alphabet as tags, ascending + order would select Z, and descending order would select + A. + enum: + - asc + - desc + type: string + type: object + numerical: + description: Numerical set of rules to use for numerical + ordering of the tags. + properties: + order: + default: asc + description: Order specifies the sorting order of the + tags. Given the integer values from 0 to 9 as tags, + ascending order would select 9, and descending order + would select 0. + enum: + - asc + - desc + type: string + type: object + semver: + description: SemVer gives a semantic version range to check + against the tags available. + properties: + range: + description: Range gives a semver range for the image + tag; the highest version within the range that's a + tag yields the latest image. + type: string + required: + - range + type: object + type: object + required: + - imageRepositoryRef + - policy + type: object + status: + description: ImagePolicyStatus defines the observed state of ImagePolicy + properties: + conditions: + items: + description: "Condition contains details for one aspect of + the current state of this API Resource. --- This struct + is intended for direct use as an array at the field path + .status.conditions. For example, type FooStatus struct{ + \ // Represents the observations of a foo's current state. + \ // Known .status.conditions.type are: \"Available\", + \"Progressing\", and \"Degraded\" // +patchMergeKey=type + \ // +patchStrategy=merge // +listType=map // + +listMapKey=type Conditions []metav1.Condition `json:\"conditions,omitempty\" + patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` + \n // other fields }" + properties: + lastTransitionTime: + description: lastTransitionTime is the last time the condition + transitioned from one status to another. This should + be when the underlying condition changed. If that is + not known, then using the time when the API field changed + is acceptable. + format: date-time + type: string + message: + description: message is a human readable message indicating + details about the transition. This may be an empty string. + maxLength: 32768 + type: string + observedGeneration: + description: observedGeneration represents the .metadata.generation + that the condition was set based upon. For instance, + if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration + is 9, the condition is out of date with respect to the + current state of the instance. + format: int64 + minimum: 0 + type: integer + reason: + description: reason contains a programmatic identifier + indicating the reason for the condition's last transition. + Producers of specific condition types may define expected + values and meanings for this field, and whether the + values are considered a guaranteed API. The value should + be a CamelCase string. This field may not be empty. + maxLength: 1024 + minLength: 1 + pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ + type: string + status: + description: status of the condition, one of True, False, + Unknown. + enum: + - "True" + - "False" + - Unknown + type: string + type: + description: type of condition in CamelCase or in foo.example.com/CamelCase. + --- Many .condition.type values are consistent across + resources like Available, but because arbitrary conditions + can be useful (see .node.status.conditions), the ability + to deconflict is important. The regex it matches is + (dns1123SubdomainFmt/)?(qualifiedNameFmt) + maxLength: 316 + pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ + type: string + required: + - lastTransitionTime + - message + - reason + - status + - type + type: object + type: array + latestImage: + description: LatestImage gives the first in the list of images + scanned by the image repository, when filtered and ordered + according to the policy. + type: string + observedGeneration: + format: int64 + type: integer + type: object + type: object + served: true + storage: true + subresources: + status: {} + type: raw + - name: imagerepositories.image.toolkit.fluxcd.io + properties: + apiVersion: apiextensions.k8s.io/v1 + kind: CustomResourceDefinition + metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.5.0 + labels: + app.kubernetes.io/instance: flux-system + name: imagerepositories.image.toolkit.fluxcd.io + spec: + group: image.toolkit.fluxcd.io + names: + kind: ImageRepository + listKind: ImageRepositoryList + plural: imagerepositories + singular: imagerepository + scope: Namespaced + versions: + - additionalPrinterColumns: + - jsonPath: .status.lastScanResult.scanTime + name: Last scan + type: string + - jsonPath: .status.lastScanResult.tagCount + name: Tags + type: string + name: v1alpha1 + schema: + openAPIV3Schema: + description: ImageRepository is the Schema for the imagerepositories + API + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the + latest internal value, and may reject unrecognized values. More + info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource + this object represents. Servers may infer this from the endpoint + the client submits requests to. Cannot be updated. In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: ImageRepositorySpec defines the parameters for scanning + an image repository, e.g., `fluxcd/flux`. + properties: + certSecretRef: + description: "CertSecretRef can be given the name of a secret + containing either or both of \n - a PEM-encoded client certificate + (`certFile`) and private key (`keyFile`); - a PEM-encoded + CA certificate (`caFile`) \n and whichever are supplied, + will be used for connecting to the registry. The client cert + and key are useful if you are authenticating with a certificate; + the CA cert is useful if you are using a self-signed server + certificate." + properties: + name: + description: Name of the referent + type: string + required: + - name + type: object + image: + description: Image is the name of the image repository + type: string + interval: + description: Interval is the length of time to wait between + scans of the image repository. + type: string + secretRef: + description: SecretRef can be given the name of a secret containing + credentials to use for the image registry. The secret should + be created with `kubectl create secret docker-registry`, or + the equivalent. + properties: + name: + description: Name of the referent + type: string + required: + - name + type: object + suspend: + description: This flag tells the controller to suspend subsequent + image scans. It does not apply to already started scans. Defaults + to false. + type: boolean + timeout: + description: Timeout for image scanning. Defaults to 'Interval' + duration. + type: string + type: object + status: + description: ImageRepositoryStatus defines the observed state of + ImageRepository + properties: + canonicalImageName: + description: CanonicalName is the name of the image repository + with all the implied bits made explicit; e.g., `docker.io/library/alpine` + rather than `alpine`. + type: string + conditions: + items: + description: "Condition contains details for one aspect of + the current state of this API Resource. --- This struct + is intended for direct use as an array at the field path + .status.conditions. For example, type FooStatus struct{ + \ // Represents the observations of a foo's current state. + \ // Known .status.conditions.type are: \"Available\", + \"Progressing\", and \"Degraded\" // +patchMergeKey=type + \ // +patchStrategy=merge // +listType=map // + +listMapKey=type Conditions []metav1.Condition `json:\"conditions,omitempty\" + patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` + \n // other fields }" + properties: + lastTransitionTime: + description: lastTransitionTime is the last time the condition + transitioned from one status to another. This should + be when the underlying condition changed. If that is + not known, then using the time when the API field changed + is acceptable. + format: date-time + type: string + message: + description: message is a human readable message indicating + details about the transition. This may be an empty string. + maxLength: 32768 + type: string + observedGeneration: + description: observedGeneration represents the .metadata.generation + that the condition was set based upon. For instance, + if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration + is 9, the condition is out of date with respect to the + current state of the instance. + format: int64 + minimum: 0 + type: integer + reason: + description: reason contains a programmatic identifier + indicating the reason for the condition's last transition. + Producers of specific condition types may define expected + values and meanings for this field, and whether the + values are considered a guaranteed API. The value should + be a CamelCase string. This field may not be empty. + maxLength: 1024 + minLength: 1 + pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ + type: string + status: + description: status of the condition, one of True, False, + Unknown. + enum: + - "True" + - "False" + - Unknown + type: string + type: + description: type of condition in CamelCase or in foo.example.com/CamelCase. + --- Many .condition.type values are consistent across + resources like Available, but because arbitrary conditions + can be useful (see .node.status.conditions), the ability + to deconflict is important. The regex it matches is + (dns1123SubdomainFmt/)?(qualifiedNameFmt) + maxLength: 316 + pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ + type: string + required: + - lastTransitionTime + - message + - reason + - status + - type + type: object + type: array + lastHandledReconcileAt: + description: LastHandledReconcileAt holds the value of the most + recent reconcile request value, so a change can be detected. + type: string + lastScanResult: + description: LastScanResult contains the number of fetched tags. + properties: + scanTime: + format: date-time + type: string + tagCount: + type: integer + required: + - tagCount + type: object + observedGeneration: + description: ObservedGeneration is the last reconciled generation. + format: int64 + type: integer + type: object + type: object + served: true + storage: false + subresources: + status: {} + - additionalPrinterColumns: + - jsonPath: .status.lastScanResult.scanTime + name: Last scan + type: string + - jsonPath: .status.lastScanResult.tagCount + name: Tags + type: string + name: v1alpha2 + schema: + openAPIV3Schema: + description: ImageRepository is the Schema for the imagerepositories + API + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the + latest internal value, and may reject unrecognized values. More + info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource + this object represents. Servers may infer this from the endpoint + the client submits requests to. Cannot be updated. In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: ImageRepositorySpec defines the parameters for scanning + an image repository, e.g., `fluxcd/flux`. + properties: + certSecretRef: + description: "CertSecretRef can be given the name of a secret + containing either or both of \n - a PEM-encoded client certificate + (`certFile`) and private key (`keyFile`); - a PEM-encoded + CA certificate (`caFile`) \n and whichever are supplied, + will be used for connecting to the registry. The client cert + and key are useful if you are authenticating with a certificate; + the CA cert is useful if you are using a self-signed server + certificate." + properties: + name: + description: Name of the referent + type: string + required: + - name + type: object + image: + description: Image is the name of the image repository + type: string + interval: + description: Interval is the length of time to wait between + scans of the image repository. + type: string + secretRef: + description: SecretRef can be given the name of a secret containing + credentials to use for the image registry. The secret should + be created with `kubectl create secret docker-registry`, or + the equivalent. + properties: + name: + description: Name of the referent + type: string + required: + - name + type: object + suspend: + description: This flag tells the controller to suspend subsequent + image scans. It does not apply to already started scans. Defaults + to false. + type: boolean + timeout: + description: Timeout for image scanning. Defaults to 'Interval' + duration. + type: string + type: object + status: + description: ImageRepositoryStatus defines the observed state of + ImageRepository + properties: + canonicalImageName: + description: CanonicalName is the name of the image repository + with all the implied bits made explicit; e.g., `docker.io/library/alpine` + rather than `alpine`. + type: string + conditions: + items: + description: "Condition contains details for one aspect of + the current state of this API Resource. --- This struct + is intended for direct use as an array at the field path + .status.conditions. For example, type FooStatus struct{ + \ // Represents the observations of a foo's current state. + \ // Known .status.conditions.type are: \"Available\", + \"Progressing\", and \"Degraded\" // +patchMergeKey=type + \ // +patchStrategy=merge // +listType=map // + +listMapKey=type Conditions []metav1.Condition `json:\"conditions,omitempty\" + patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` + \n // other fields }" + properties: + lastTransitionTime: + description: lastTransitionTime is the last time the condition + transitioned from one status to another. This should + be when the underlying condition changed. If that is + not known, then using the time when the API field changed + is acceptable. + format: date-time + type: string + message: + description: message is a human readable message indicating + details about the transition. This may be an empty string. + maxLength: 32768 + type: string + observedGeneration: + description: observedGeneration represents the .metadata.generation + that the condition was set based upon. For instance, + if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration + is 9, the condition is out of date with respect to the + current state of the instance. + format: int64 + minimum: 0 + type: integer + reason: + description: reason contains a programmatic identifier + indicating the reason for the condition's last transition. + Producers of specific condition types may define expected + values and meanings for this field, and whether the + values are considered a guaranteed API. The value should + be a CamelCase string. This field may not be empty. + maxLength: 1024 + minLength: 1 + pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ + type: string + status: + description: status of the condition, one of True, False, + Unknown. + enum: + - "True" + - "False" + - Unknown + type: string + type: + description: type of condition in CamelCase or in foo.example.com/CamelCase. + --- Many .condition.type values are consistent across + resources like Available, but because arbitrary conditions + can be useful (see .node.status.conditions), the ability + to deconflict is important. The regex it matches is + (dns1123SubdomainFmt/)?(qualifiedNameFmt) + maxLength: 316 + pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ + type: string + required: + - lastTransitionTime + - message + - reason + - status + - type + type: object + type: array + lastHandledReconcileAt: + description: LastHandledReconcileAt holds the value of the most + recent reconcile request value, so a change can be detected. + type: string + lastScanResult: + description: LastScanResult contains the number of fetched tags. + properties: + scanTime: + format: date-time + type: string + tagCount: + type: integer + required: + - tagCount + type: object + observedGeneration: + description: ObservedGeneration is the last reconciled generation. + format: int64 + type: integer + type: object + type: object + served: true + storage: false + subresources: + status: {} + - additionalPrinterColumns: + - jsonPath: .status.lastScanResult.scanTime + name: Last scan + type: string + - jsonPath: .status.lastScanResult.tagCount + name: Tags + type: string + name: v1beta1 + schema: + openAPIV3Schema: + description: ImageRepository is the Schema for the imagerepositories + API + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the + latest internal value, and may reject unrecognized values. More + info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource + this object represents. Servers may infer this from the endpoint + the client submits requests to. Cannot be updated. In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: ImageRepositorySpec defines the parameters for scanning + an image repository, e.g., `fluxcd/flux`. + properties: + certSecretRef: + description: "CertSecretRef can be given the name of a secret + containing either or both of \n - a PEM-encoded client certificate + (`certFile`) and private key (`keyFile`); - a PEM-encoded + CA certificate (`caFile`) \n and whichever are supplied, + will be used for connecting to the registry. The client cert + and key are useful if you are authenticating with a certificate; + the CA cert is useful if you are using a self-signed server + certificate." + properties: + name: + description: Name of the referent + type: string + required: + - name + type: object + image: + description: Image is the name of the image repository + type: string + interval: + description: Interval is the length of time to wait between + scans of the image repository. + type: string + secretRef: + description: SecretRef can be given the name of a secret containing + credentials to use for the image registry. The secret should + be created with `kubectl create secret docker-registry`, or + the equivalent. + properties: + name: + description: Name of the referent + type: string + required: + - name + type: object + suspend: + description: This flag tells the controller to suspend subsequent + image scans. It does not apply to already started scans. Defaults + to false. + type: boolean + timeout: + description: Timeout for image scanning. Defaults to 'Interval' + duration. + type: string + type: object + status: + description: ImageRepositoryStatus defines the observed state of + ImageRepository + properties: + canonicalImageName: + description: CanonicalName is the name of the image repository + with all the implied bits made explicit; e.g., `docker.io/library/alpine` + rather than `alpine`. + type: string + conditions: + items: + description: "Condition contains details for one aspect of + the current state of this API Resource. --- This struct + is intended for direct use as an array at the field path + .status.conditions. For example, type FooStatus struct{ + \ // Represents the observations of a foo's current state. + \ // Known .status.conditions.type are: \"Available\", + \"Progressing\", and \"Degraded\" // +patchMergeKey=type + \ // +patchStrategy=merge // +listType=map // + +listMapKey=type Conditions []metav1.Condition `json:\"conditions,omitempty\" + patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` + \n // other fields }" + properties: + lastTransitionTime: + description: lastTransitionTime is the last time the condition + transitioned from one status to another. This should + be when the underlying condition changed. If that is + not known, then using the time when the API field changed + is acceptable. + format: date-time + type: string + message: + description: message is a human readable message indicating + details about the transition. This may be an empty string. + maxLength: 32768 + type: string + observedGeneration: + description: observedGeneration represents the .metadata.generation + that the condition was set based upon. For instance, + if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration + is 9, the condition is out of date with respect to the + current state of the instance. + format: int64 + minimum: 0 + type: integer + reason: + description: reason contains a programmatic identifier + indicating the reason for the condition's last transition. + Producers of specific condition types may define expected + values and meanings for this field, and whether the + values are considered a guaranteed API. The value should + be a CamelCase string. This field may not be empty. + maxLength: 1024 + minLength: 1 + pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ + type: string + status: + description: status of the condition, one of True, False, + Unknown. + enum: + - "True" + - "False" + - Unknown + type: string + type: + description: type of condition in CamelCase or in foo.example.com/CamelCase. + --- Many .condition.type values are consistent across + resources like Available, but because arbitrary conditions + can be useful (see .node.status.conditions), the ability + to deconflict is important. The regex it matches is + (dns1123SubdomainFmt/)?(qualifiedNameFmt) + maxLength: 316 + pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ + type: string + required: + - lastTransitionTime + - message + - reason + - status + - type + type: object + type: array + lastHandledReconcileAt: + description: LastHandledReconcileAt holds the value of the most + recent reconcile request value, so a change can be detected. + type: string + lastScanResult: + description: LastScanResult contains the number of fetched tags. + properties: + scanTime: + format: date-time + type: string + tagCount: + type: integer + required: + - tagCount + type: object + observedGeneration: + description: ObservedGeneration is the last reconciled generation. + format: int64 + type: integer + type: object + type: object + served: true + storage: true + subresources: + status: {} + type: raw + - name: imageupdateautomations.image.toolkit.fluxcd.io + properties: + apiVersion: apiextensions.k8s.io/v1 + kind: CustomResourceDefinition + metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.5.0 + labels: + app.kubernetes.io/instance: flux-system + name: imageupdateautomations.image.toolkit.fluxcd.io + spec: + group: image.toolkit.fluxcd.io + names: + kind: ImageUpdateAutomation + listKind: ImageUpdateAutomationList + plural: imageupdateautomations + singular: imageupdateautomation + scope: Namespaced + versions: + - additionalPrinterColumns: + - jsonPath: .status.lastAutomationRunTime + name: Last run + type: string + name: v1alpha1 + schema: + openAPIV3Schema: + description: ImageUpdateAutomation is the Schema for the imageupdateautomations + API + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the + latest internal value, and may reject unrecognized values. More + info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource + this object represents. Servers may infer this from the endpoint + the client submits requests to. Cannot be updated. In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: ImageUpdateAutomationSpec defines the desired state + of ImageUpdateAutomation + properties: + checkout: + description: Checkout gives the parameters for cloning the git + repository, ready to make changes. + properties: + branch: + description: Branch gives the branch to clone from the git + repository. If `.spec.push` is not supplied, commits will + also be pushed to this branch. + type: string + gitRepositoryRef: + description: GitRepositoryRef refers to the resource giving + access details to a git repository to update files in. properties: name: description: Name of the referent @@ -2172,1196 +3267,36 @@ data: required: - name type: object - policy: - description: Policy gives the particulars of the policy - to be followed in selecting the most recent image - properties: - alphabetical: - description: Alphabetical set of rules to use for alphabetical - ordering of the tags. - properties: - order: - default: asc - description: Order specifies the sorting order of - the tags. Given the letters of the alphabet as - tags, ascending order would select Z, and descending - order would select A. - enum: - - asc - - desc - type: string - type: object - numerical: - description: Numerical set of rules to use for numerical - ordering of the tags. - properties: - order: - default: asc - description: Order specifies the sorting order of - the tags. Given the integer values from 0 to 9 - as tags, ascending order would select 9, and descending - order would select 0. - enum: - - asc - - desc - type: string - type: object - semver: - description: SemVer gives a semantic version range to - check against the tags available. - properties: - range: - description: Range gives a semver range for the - image tag; the highest version within the range - that's a tag yields the latest image. - type: string - required: - - range - type: object - type: object required: - - imageRepositoryRef - - policy + - branch + - gitRepositoryRef type: object - status: - description: ImagePolicyStatus defines the observed state of - ImagePolicy + commit: + description: Commit specifies how to commit to the git repository. properties: - conditions: - items: - description: "Condition contains details for one aspect - of the current state of this API Resource. --- This - struct is intended for direct use as an array at the - field path .status.conditions. For example, type FooStatus - struct{ // Represents the observations of a foo's - current state. // Known .status.conditions.type - are: \"Available\", \"Progressing\", and \"Degraded\" - \ // +patchMergeKey=type // +patchStrategy=merge - \ // +listType=map // +listMapKey=type Conditions - []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" - patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` - \n // other fields }" - properties: - lastTransitionTime: - description: lastTransitionTime is the last time the - condition transitioned from one status to another. - This should be when the underlying condition changed. If - that is not known, then using the time when the - API field changed is acceptable. - format: date-time - type: string - message: - description: message is a human readable message indicating - details about the transition. This may be an empty - string. - maxLength: 32768 - type: string - observedGeneration: - description: observedGeneration represents the .metadata.generation - that the condition was set based upon. For instance, - if .metadata.generation is currently 12, but the - .status.conditions[x].observedGeneration is 9, the - condition is out of date with respect to the current - state of the instance. - format: int64 - minimum: 0 - type: integer - reason: - description: reason contains a programmatic identifier - indicating the reason for the condition's last transition. - Producers of specific condition types may define - expected values and meanings for this field, and - whether the values are considered a guaranteed API. - The value should be a CamelCase string. This field - may not be empty. - maxLength: 1024 - minLength: 1 - pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ - type: string - status: - description: status of the condition, one of True, - False, Unknown. - enum: - - "True" - - "False" - - Unknown - type: string - type: - description: type of condition in CamelCase or in - foo.example.com/CamelCase. --- Many .condition.type - values are consistent across resources like Available, - but because arbitrary conditions can be useful (see - .node.status.conditions), the ability to deconflict - is important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) - maxLength: 316 - pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ - type: string - required: - - lastTransitionTime - - message - - reason - - status - - type - type: object - type: array - latestImage: - description: LatestImage gives the first in the list of - images scanned by the image repository, when filtered - and ordered according to the policy. + authorEmail: + description: AuthorEmail gives the email to provide when + making a commit type: string - observedGeneration: - format: int64 - type: integer - type: object - type: object - served: true - storage: false - subresources: - status: {} - - additionalPrinterColumns: - - jsonPath: .status.latestImage - name: LatestImage - type: string - name: v1alpha2 - schema: - openAPIV3Schema: - description: ImagePolicy is the Schema for the imagepolicies API - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this - representation of an object. Servers should convert recognized - schemas to the latest internal value, and may reject unrecognized - values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource - this object represents. Servers may infer this from the endpoint - the client submits requests to. Cannot be updated. In CamelCase. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: ImagePolicySpec defines the parameters for calculating - the ImagePolicy - properties: - filterTags: - description: FilterTags enables filtering for only a subset - of tags based on a set of rules. If no rules are provided, - all the tags from the repository will be ordered and compared. + authorName: + description: AuthorName gives the name to provide when making + a commit + type: string + messageTemplate: + description: MessageTemplate provides a template for the + commit message, into which will be interpolated the details + of the change made. + type: string + signingKey: + description: SigningKey provides the option to sign commits + with a GPG key properties: - extract: - description: Extract allows a capture group to be extracted - from the specified regular expression pattern, useful - before tag evaluation. - type: string - pattern: - description: Pattern specifies a regular expression - pattern used to filter for image tags. - type: string - type: object - imageRepositoryRef: - description: ImageRepositoryRef points at the object specifying - the image being scanned - properties: - name: - description: Name of the referent - type: string - required: - - name - type: object - policy: - description: Policy gives the particulars of the policy - to be followed in selecting the most recent image - properties: - alphabetical: - description: Alphabetical set of rules to use for alphabetical - ordering of the tags. - properties: - order: - default: asc - description: Order specifies the sorting order of - the tags. Given the letters of the alphabet as - tags, ascending order would select Z, and descending - order would select A. - enum: - - asc - - desc - type: string - type: object - numerical: - description: Numerical set of rules to use for numerical - ordering of the tags. - properties: - order: - default: asc - description: Order specifies the sorting order of - the tags. Given the integer values from 0 to 9 - as tags, ascending order would select 9, and descending - order would select 0. - enum: - - asc - - desc - type: string - type: object - semver: - description: SemVer gives a semantic version range to - check against the tags available. - properties: - range: - description: Range gives a semver range for the - image tag; the highest version within the range - that's a tag yields the latest image. - type: string - required: - - range - type: object - type: object - required: - - imageRepositoryRef - - policy - type: object - status: - description: ImagePolicyStatus defines the observed state of - ImagePolicy - properties: - conditions: - items: - description: "Condition contains details for one aspect - of the current state of this API Resource. --- This - struct is intended for direct use as an array at the - field path .status.conditions. For example, type FooStatus - struct{ // Represents the observations of a foo's - current state. // Known .status.conditions.type - are: \"Available\", \"Progressing\", and \"Degraded\" - \ // +patchMergeKey=type // +patchStrategy=merge - \ // +listType=map // +listMapKey=type Conditions - []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" - patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` - \n // other fields }" - properties: - lastTransitionTime: - description: lastTransitionTime is the last time the - condition transitioned from one status to another. - This should be when the underlying condition changed. If - that is not known, then using the time when the - API field changed is acceptable. - format: date-time - type: string - message: - description: message is a human readable message indicating - details about the transition. This may be an empty - string. - maxLength: 32768 - type: string - observedGeneration: - description: observedGeneration represents the .metadata.generation - that the condition was set based upon. For instance, - if .metadata.generation is currently 12, but the - .status.conditions[x].observedGeneration is 9, the - condition is out of date with respect to the current - state of the instance. - format: int64 - minimum: 0 - type: integer - reason: - description: reason contains a programmatic identifier - indicating the reason for the condition's last transition. - Producers of specific condition types may define - expected values and meanings for this field, and - whether the values are considered a guaranteed API. - The value should be a CamelCase string. This field - may not be empty. - maxLength: 1024 - minLength: 1 - pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ - type: string - status: - description: status of the condition, one of True, - False, Unknown. - enum: - - "True" - - "False" - - Unknown - type: string - type: - description: type of condition in CamelCase or in - foo.example.com/CamelCase. --- Many .condition.type - values are consistent across resources like Available, - but because arbitrary conditions can be useful (see - .node.status.conditions), the ability to deconflict - is important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) - maxLength: 316 - pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ - type: string - required: - - lastTransitionTime - - message - - reason - - status - - type - type: object - type: array - latestImage: - description: LatestImage gives the first in the list of - images scanned by the image repository, when filtered - and ordered according to the policy. - type: string - observedGeneration: - format: int64 - type: integer - type: object - type: object - served: true - storage: false - subresources: - status: {} - - additionalPrinterColumns: - - jsonPath: .status.latestImage - name: LatestImage - type: string - name: v1beta1 - schema: - openAPIV3Schema: - description: ImagePolicy is the Schema for the imagepolicies API - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this - representation of an object. Servers should convert recognized - schemas to the latest internal value, and may reject unrecognized - values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource - this object represents. Servers may infer this from the endpoint - the client submits requests to. Cannot be updated. In CamelCase. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: ImagePolicySpec defines the parameters for calculating - the ImagePolicy - properties: - filterTags: - description: FilterTags enables filtering for only a subset - of tags based on a set of rules. If no rules are provided, - all the tags from the repository will be ordered and compared. - properties: - extract: - description: Extract allows a capture group to be extracted - from the specified regular expression pattern, useful - before tag evaluation. - type: string - pattern: - description: Pattern specifies a regular expression - pattern used to filter for image tags. - type: string - type: object - imageRepositoryRef: - description: ImageRepositoryRef points at the object specifying - the image being scanned - properties: - name: - description: Name of the referent - type: string - required: - - name - type: object - policy: - description: Policy gives the particulars of the policy - to be followed in selecting the most recent image - properties: - alphabetical: - description: Alphabetical set of rules to use for alphabetical - ordering of the tags. - properties: - order: - default: asc - description: Order specifies the sorting order of - the tags. Given the letters of the alphabet as - tags, ascending order would select Z, and descending - order would select A. - enum: - - asc - - desc - type: string - type: object - numerical: - description: Numerical set of rules to use for numerical - ordering of the tags. - properties: - order: - default: asc - description: Order specifies the sorting order of - the tags. Given the integer values from 0 to 9 - as tags, ascending order would select 9, and descending - order would select 0. - enum: - - asc - - desc - type: string - type: object - semver: - description: SemVer gives a semantic version range to - check against the tags available. - properties: - range: - description: Range gives a semver range for the - image tag; the highest version within the range - that's a tag yields the latest image. - type: string - required: - - range - type: object - type: object - required: - - imageRepositoryRef - - policy - type: object - status: - description: ImagePolicyStatus defines the observed state of - ImagePolicy - properties: - conditions: - items: - description: "Condition contains details for one aspect - of the current state of this API Resource. --- This - struct is intended for direct use as an array at the - field path .status.conditions. For example, type FooStatus - struct{ // Represents the observations of a foo's - current state. // Known .status.conditions.type - are: \"Available\", \"Progressing\", and \"Degraded\" - \ // +patchMergeKey=type // +patchStrategy=merge - \ // +listType=map // +listMapKey=type Conditions - []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" - patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` - \n // other fields }" - properties: - lastTransitionTime: - description: lastTransitionTime is the last time the - condition transitioned from one status to another. - This should be when the underlying condition changed. If - that is not known, then using the time when the - API field changed is acceptable. - format: date-time - type: string - message: - description: message is a human readable message indicating - details about the transition. This may be an empty - string. - maxLength: 32768 - type: string - observedGeneration: - description: observedGeneration represents the .metadata.generation - that the condition was set based upon. For instance, - if .metadata.generation is currently 12, but the - .status.conditions[x].observedGeneration is 9, the - condition is out of date with respect to the current - state of the instance. - format: int64 - minimum: 0 - type: integer - reason: - description: reason contains a programmatic identifier - indicating the reason for the condition's last transition. - Producers of specific condition types may define - expected values and meanings for this field, and - whether the values are considered a guaranteed API. - The value should be a CamelCase string. This field - may not be empty. - maxLength: 1024 - minLength: 1 - pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ - type: string - status: - description: status of the condition, one of True, - False, Unknown. - enum: - - "True" - - "False" - - Unknown - type: string - type: - description: type of condition in CamelCase or in - foo.example.com/CamelCase. --- Many .condition.type - values are consistent across resources like Available, - but because arbitrary conditions can be useful (see - .node.status.conditions), the ability to deconflict - is important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) - maxLength: 316 - pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ - type: string - required: - - lastTransitionTime - - message - - reason - - status - - type - type: object - type: array - latestImage: - description: LatestImage gives the first in the list of - images scanned by the image repository, when filtered - and ordered according to the policy. - type: string - observedGeneration: - format: int64 - type: integer - type: object - type: object - served: true - storage: true - subresources: - status: {} - type: raw - - name: imagerepositories.image.toolkit.fluxcd.io - properties: - apiVersion: apiextensions.k8s.io/v1 - kind: CustomResourceDefinition - metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.5.0 - labels: - app.kubernetes.io/instance: flux-system - name: imagerepositories.image.toolkit.fluxcd.io - spec: - group: image.toolkit.fluxcd.io - names: - kind: ImageRepository - listKind: ImageRepositoryList - plural: imagerepositories - singular: imagerepository - scope: Namespaced - versions: - - additionalPrinterColumns: - - jsonPath: .status.lastScanResult.scanTime - name: Last scan - type: string - - jsonPath: .status.lastScanResult.tagCount - name: Tags - type: string - name: v1alpha1 - schema: - openAPIV3Schema: - description: ImageRepository is the Schema for the imagerepositories - API - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this - representation of an object. Servers should convert recognized - schemas to the latest internal value, and may reject unrecognized - values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource - this object represents. Servers may infer this from the endpoint - the client submits requests to. Cannot be updated. In CamelCase. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: ImageRepositorySpec defines the parameters for - scanning an image repository, e.g., `fluxcd/flux`. - properties: - certSecretRef: - description: "CertSecretRef can be given the name of a secret - containing either or both of \n - a PEM-encoded client - certificate (`certFile`) and private key (`keyFile`); - \ - a PEM-encoded CA certificate (`caFile`) \n and whichever - are supplied, will be used for connecting to the registry. - The client cert and key are useful if you are authenticating - with a certificate; the CA cert is useful if you are - using a self-signed server certificate." - properties: - name: - description: Name of the referent - type: string - required: - - name - type: object - image: - description: Image is the name of the image repository - type: string - interval: - description: Interval is the length of time to wait between - scans of the image repository. - type: string - secretRef: - description: SecretRef can be given the name of a secret - containing credentials to use for the image registry. - The secret should be created with `kubectl create secret - docker-registry`, or the equivalent. - properties: - name: - description: Name of the referent - type: string - required: - - name - type: object - suspend: - description: This flag tells the controller to suspend subsequent - image scans. It does not apply to already started scans. - Defaults to false. - type: boolean - timeout: - description: Timeout for image scanning. Defaults to 'Interval' - duration. - type: string - type: object - status: - description: ImageRepositoryStatus defines the observed state - of ImageRepository - properties: - canonicalImageName: - description: CanonicalName is the name of the image repository - with all the implied bits made explicit; e.g., `docker.io/library/alpine` - rather than `alpine`. - type: string - conditions: - items: - description: "Condition contains details for one aspect - of the current state of this API Resource. --- This - struct is intended for direct use as an array at the - field path .status.conditions. For example, type FooStatus - struct{ // Represents the observations of a foo's - current state. // Known .status.conditions.type - are: \"Available\", \"Progressing\", and \"Degraded\" - \ // +patchMergeKey=type // +patchStrategy=merge - \ // +listType=map // +listMapKey=type Conditions - []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" - patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` - \n // other fields }" - properties: - lastTransitionTime: - description: lastTransitionTime is the last time the - condition transitioned from one status to another. - This should be when the underlying condition changed. If - that is not known, then using the time when the - API field changed is acceptable. - format: date-time - type: string - message: - description: message is a human readable message indicating - details about the transition. This may be an empty - string. - maxLength: 32768 - type: string - observedGeneration: - description: observedGeneration represents the .metadata.generation - that the condition was set based upon. For instance, - if .metadata.generation is currently 12, but the - .status.conditions[x].observedGeneration is 9, the - condition is out of date with respect to the current - state of the instance. - format: int64 - minimum: 0 - type: integer - reason: - description: reason contains a programmatic identifier - indicating the reason for the condition's last transition. - Producers of specific condition types may define - expected values and meanings for this field, and - whether the values are considered a guaranteed API. - The value should be a CamelCase string. This field - may not be empty. - maxLength: 1024 - minLength: 1 - pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ - type: string - status: - description: status of the condition, one of True, - False, Unknown. - enum: - - "True" - - "False" - - Unknown - type: string - type: - description: type of condition in CamelCase or in - foo.example.com/CamelCase. --- Many .condition.type - values are consistent across resources like Available, - but because arbitrary conditions can be useful (see - .node.status.conditions), the ability to deconflict - is important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) - maxLength: 316 - pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ - type: string - required: - - lastTransitionTime - - message - - reason - - status - - type - type: object - type: array - lastHandledReconcileAt: - description: LastHandledReconcileAt holds the value of the - most recent reconcile request value, so a change can be - detected. - type: string - lastScanResult: - description: LastScanResult contains the number of fetched - tags. - properties: - scanTime: - format: date-time - type: string - tagCount: - type: integer - required: - - tagCount - type: object - observedGeneration: - description: ObservedGeneration is the last reconciled generation. - format: int64 - type: integer - type: object - type: object - served: true - storage: false - subresources: - status: {} - - additionalPrinterColumns: - - jsonPath: .status.lastScanResult.scanTime - name: Last scan - type: string - - jsonPath: .status.lastScanResult.tagCount - name: Tags - type: string - name: v1alpha2 - schema: - openAPIV3Schema: - description: ImageRepository is the Schema for the imagerepositories - API - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this - representation of an object. Servers should convert recognized - schemas to the latest internal value, and may reject unrecognized - values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource - this object represents. Servers may infer this from the endpoint - the client submits requests to. Cannot be updated. In CamelCase. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: ImageRepositorySpec defines the parameters for - scanning an image repository, e.g., `fluxcd/flux`. - properties: - certSecretRef: - description: "CertSecretRef can be given the name of a secret - containing either or both of \n - a PEM-encoded client - certificate (`certFile`) and private key (`keyFile`); - \ - a PEM-encoded CA certificate (`caFile`) \n and whichever - are supplied, will be used for connecting to the registry. - The client cert and key are useful if you are authenticating - with a certificate; the CA cert is useful if you are - using a self-signed server certificate." - properties: - name: - description: Name of the referent - type: string - required: - - name - type: object - image: - description: Image is the name of the image repository - type: string - interval: - description: Interval is the length of time to wait between - scans of the image repository. - type: string - secretRef: - description: SecretRef can be given the name of a secret - containing credentials to use for the image registry. - The secret should be created with `kubectl create secret - docker-registry`, or the equivalent. - properties: - name: - description: Name of the referent - type: string - required: - - name - type: object - suspend: - description: This flag tells the controller to suspend subsequent - image scans. It does not apply to already started scans. - Defaults to false. - type: boolean - timeout: - description: Timeout for image scanning. Defaults to 'Interval' - duration. - type: string - type: object - status: - description: ImageRepositoryStatus defines the observed state - of ImageRepository - properties: - canonicalImageName: - description: CanonicalName is the name of the image repository - with all the implied bits made explicit; e.g., `docker.io/library/alpine` - rather than `alpine`. - type: string - conditions: - items: - description: "Condition contains details for one aspect - of the current state of this API Resource. --- This - struct is intended for direct use as an array at the - field path .status.conditions. For example, type FooStatus - struct{ // Represents the observations of a foo's - current state. // Known .status.conditions.type - are: \"Available\", \"Progressing\", and \"Degraded\" - \ // +patchMergeKey=type // +patchStrategy=merge - \ // +listType=map // +listMapKey=type Conditions - []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" - patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` - \n // other fields }" - properties: - lastTransitionTime: - description: lastTransitionTime is the last time the - condition transitioned from one status to another. - This should be when the underlying condition changed. If - that is not known, then using the time when the - API field changed is acceptable. - format: date-time - type: string - message: - description: message is a human readable message indicating - details about the transition. This may be an empty - string. - maxLength: 32768 - type: string - observedGeneration: - description: observedGeneration represents the .metadata.generation - that the condition was set based upon. For instance, - if .metadata.generation is currently 12, but the - .status.conditions[x].observedGeneration is 9, the - condition is out of date with respect to the current - state of the instance. - format: int64 - minimum: 0 - type: integer - reason: - description: reason contains a programmatic identifier - indicating the reason for the condition's last transition. - Producers of specific condition types may define - expected values and meanings for this field, and - whether the values are considered a guaranteed API. - The value should be a CamelCase string. This field - may not be empty. - maxLength: 1024 - minLength: 1 - pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ - type: string - status: - description: status of the condition, one of True, - False, Unknown. - enum: - - "True" - - "False" - - Unknown - type: string - type: - description: type of condition in CamelCase or in - foo.example.com/CamelCase. --- Many .condition.type - values are consistent across resources like Available, - but because arbitrary conditions can be useful (see - .node.status.conditions), the ability to deconflict - is important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) - maxLength: 316 - pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ - type: string - required: - - lastTransitionTime - - message - - reason - - status - - type - type: object - type: array - lastHandledReconcileAt: - description: LastHandledReconcileAt holds the value of the - most recent reconcile request value, so a change can be - detected. - type: string - lastScanResult: - description: LastScanResult contains the number of fetched - tags. - properties: - scanTime: - format: date-time - type: string - tagCount: - type: integer - required: - - tagCount - type: object - observedGeneration: - description: ObservedGeneration is the last reconciled generation. - format: int64 - type: integer - type: object - type: object - served: true - storage: false - subresources: - status: {} - - additionalPrinterColumns: - - jsonPath: .status.lastScanResult.scanTime - name: Last scan - type: string - - jsonPath: .status.lastScanResult.tagCount - name: Tags - type: string - name: v1beta1 - schema: - openAPIV3Schema: - description: ImageRepository is the Schema for the imagerepositories - API - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this - representation of an object. Servers should convert recognized - schemas to the latest internal value, and may reject unrecognized - values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource - this object represents. Servers may infer this from the endpoint - the client submits requests to. Cannot be updated. In CamelCase. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: ImageRepositorySpec defines the parameters for - scanning an image repository, e.g., `fluxcd/flux`. - properties: - certSecretRef: - description: "CertSecretRef can be given the name of a secret - containing either or both of \n - a PEM-encoded client - certificate (`certFile`) and private key (`keyFile`); - \ - a PEM-encoded CA certificate (`caFile`) \n and whichever - are supplied, will be used for connecting to the registry. - The client cert and key are useful if you are authenticating - with a certificate; the CA cert is useful if you are - using a self-signed server certificate." - properties: - name: - description: Name of the referent - type: string - required: - - name - type: object - image: - description: Image is the name of the image repository - type: string - interval: - description: Interval is the length of time to wait between - scans of the image repository. - type: string - secretRef: - description: SecretRef can be given the name of a secret - containing credentials to use for the image registry. - The secret should be created with `kubectl create secret - docker-registry`, or the equivalent. - properties: - name: - description: Name of the referent - type: string - required: - - name - type: object - suspend: - description: This flag tells the controller to suspend subsequent - image scans. It does not apply to already started scans. - Defaults to false. - type: boolean - timeout: - description: Timeout for image scanning. Defaults to 'Interval' - duration. - type: string - type: object - status: - description: ImageRepositoryStatus defines the observed state - of ImageRepository - properties: - canonicalImageName: - description: CanonicalName is the name of the image repository - with all the implied bits made explicit; e.g., `docker.io/library/alpine` - rather than `alpine`. - type: string - conditions: - items: - description: "Condition contains details for one aspect - of the current state of this API Resource. --- This - struct is intended for direct use as an array at the - field path .status.conditions. For example, type FooStatus - struct{ // Represents the observations of a foo's - current state. // Known .status.conditions.type - are: \"Available\", \"Progressing\", and \"Degraded\" - \ // +patchMergeKey=type // +patchStrategy=merge - \ // +listType=map // +listMapKey=type Conditions - []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" - patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` - \n // other fields }" - properties: - lastTransitionTime: - description: lastTransitionTime is the last time the - condition transitioned from one status to another. - This should be when the underlying condition changed. If - that is not known, then using the time when the - API field changed is acceptable. - format: date-time - type: string - message: - description: message is a human readable message indicating - details about the transition. This may be an empty - string. - maxLength: 32768 - type: string - observedGeneration: - description: observedGeneration represents the .metadata.generation - that the condition was set based upon. For instance, - if .metadata.generation is currently 12, but the - .status.conditions[x].observedGeneration is 9, the - condition is out of date with respect to the current - state of the instance. - format: int64 - minimum: 0 - type: integer - reason: - description: reason contains a programmatic identifier - indicating the reason for the condition's last transition. - Producers of specific condition types may define - expected values and meanings for this field, and - whether the values are considered a guaranteed API. - The value should be a CamelCase string. This field - may not be empty. - maxLength: 1024 - minLength: 1 - pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ - type: string - status: - description: status of the condition, one of True, - False, Unknown. - enum: - - "True" - - "False" - - Unknown - type: string - type: - description: type of condition in CamelCase or in - foo.example.com/CamelCase. --- Many .condition.type - values are consistent across resources like Available, - but because arbitrary conditions can be useful (see - .node.status.conditions), the ability to deconflict - is important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) - maxLength: 316 - pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ - type: string - required: - - lastTransitionTime - - message - - reason - - status - - type - type: object - type: array - lastHandledReconcileAt: - description: LastHandledReconcileAt holds the value of the - most recent reconcile request value, so a change can be - detected. - type: string - lastScanResult: - description: LastScanResult contains the number of fetched - tags. - properties: - scanTime: - format: date-time - type: string - tagCount: - type: integer - required: - - tagCount - type: object - observedGeneration: - description: ObservedGeneration is the last reconciled generation. - format: int64 - type: integer - type: object - type: object - served: true - storage: true - subresources: - status: {} - type: raw - - name: imageupdateautomations.image.toolkit.fluxcd.io - properties: - apiVersion: apiextensions.k8s.io/v1 - kind: CustomResourceDefinition - metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.5.0 - labels: - app.kubernetes.io/instance: flux-system - name: imageupdateautomations.image.toolkit.fluxcd.io - spec: - group: image.toolkit.fluxcd.io - names: - kind: ImageUpdateAutomation - listKind: ImageUpdateAutomationList - plural: imageupdateautomations - singular: imageupdateautomation - scope: Namespaced - versions: - - additionalPrinterColumns: - - jsonPath: .status.lastAutomationRunTime - name: Last run - type: string - name: v1alpha1 - schema: - openAPIV3Schema: - description: ImageUpdateAutomation is the Schema for the imageupdateautomations - API - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this - representation of an object. Servers should convert recognized - schemas to the latest internal value, and may reject unrecognized - values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource - this object represents. Servers may infer this from the endpoint - the client submits requests to. Cannot be updated. In CamelCase. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: ImageUpdateAutomationSpec defines the desired state - of ImageUpdateAutomation - properties: - checkout: - description: Checkout gives the parameters for cloning the - git repository, ready to make changes. - properties: - branch: - description: Branch gives the branch to clone from the - git repository. If `.spec.push` is not supplied, commits - will also be pushed to this branch. - type: string - gitRepositoryRef: - description: GitRepositoryRef refers to the resource - giving access details to a git repository to update - files in. + secretRef: + description: SecretRef holds the name to a secret that + contains a 'git.asc' key corresponding to the ASCII + Armored file containing the GPG signing keypair as + the value. It must be in the same namespace as the + ImageUpdateAutomation. properties: name: description: Name of the referent @@ -3369,21 +3304,245 @@ data: required: - name type: object + type: object + required: + - authorEmail + - authorName + type: object + interval: + description: Interval gives an lower bound for how often the + automation run should be attempted. + type: string + push: + description: Push specifies how and where to push commits made + by the automation. If missing, commits are pushed (back) to + `.spec.checkout.branch`. + properties: + branch: + description: Branch specifies that commits should be pushed + to the branch named. The branch is created using `.spec.checkout.branch` + as the starting point, if it doesn't already exist. + type: string + required: + - branch + type: object + suspend: + description: Suspend tells the controller to not run this automation, + until it is unset (or set to false). Defaults to false. + type: boolean + update: + default: + strategy: Setters + description: Update gives the specification for how to update + the files in the repository. This can be left empty, to use + the default value. + properties: + path: + description: Path to the directory containing the manifests + to be updated. Defaults to 'None', which translates to + the root path of the GitRepositoryRef. + type: string + strategy: + default: Setters + description: Strategy names the strategy to be used. + enum: + - Setters + type: string + required: + - strategy + type: object + required: + - checkout + - commit + - interval + type: object + status: + description: ImageUpdateAutomationStatus defines the observed state + of ImageUpdateAutomation + properties: + conditions: + items: + description: "Condition contains details for one aspect of + the current state of this API Resource. --- This struct + is intended for direct use as an array at the field path + .status.conditions. For example, type FooStatus struct{ + \ // Represents the observations of a foo's current state. + \ // Known .status.conditions.type are: \"Available\", + \"Progressing\", and \"Degraded\" // +patchMergeKey=type + \ // +patchStrategy=merge // +listType=map // + +listMapKey=type Conditions []metav1.Condition `json:\"conditions,omitempty\" + patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` + \n // other fields }" + properties: + lastTransitionTime: + description: lastTransitionTime is the last time the condition + transitioned from one status to another. This should + be when the underlying condition changed. If that is + not known, then using the time when the API field changed + is acceptable. + format: date-time + type: string + message: + description: message is a human readable message indicating + details about the transition. This may be an empty string. + maxLength: 32768 + type: string + observedGeneration: + description: observedGeneration represents the .metadata.generation + that the condition was set based upon. For instance, + if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration + is 9, the condition is out of date with respect to the + current state of the instance. + format: int64 + minimum: 0 + type: integer + reason: + description: reason contains a programmatic identifier + indicating the reason for the condition's last transition. + Producers of specific condition types may define expected + values and meanings for this field, and whether the + values are considered a guaranteed API. The value should + be a CamelCase string. This field may not be empty. + maxLength: 1024 + minLength: 1 + pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ + type: string + status: + description: status of the condition, one of True, False, + Unknown. + enum: + - "True" + - "False" + - Unknown + type: string + type: + description: type of condition in CamelCase or in foo.example.com/CamelCase. + --- Many .condition.type values are consistent across + resources like Available, but because arbitrary conditions + can be useful (see .node.status.conditions), the ability + to deconflict is important. The regex it matches is + (dns1123SubdomainFmt/)?(qualifiedNameFmt) + maxLength: 316 + pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ + type: string + required: + - lastTransitionTime + - message + - reason + - status + - type + type: object + type: array + lastAutomationRunTime: + description: LastAutomationRunTime records the last time the + controller ran this automation through to completion (even + if no updates were made). + format: date-time + type: string + lastHandledReconcileAt: + description: LastHandledReconcileAt holds the value of the most + recent reconcile request value, so a change can be detected. + type: string + lastPushCommit: + description: LastPushCommit records the SHA1 of the last commit + made by the controller, for this automation object + type: string + lastPushTime: + description: LastPushTime records the time of the last pushed + change. + format: date-time + type: string + observedGeneration: + format: int64 + type: integer + type: object + type: object + served: true + storage: false + subresources: + status: {} + - additionalPrinterColumns: + - jsonPath: .status.lastAutomationRunTime + name: Last run + type: string + name: v1alpha2 + schema: + openAPIV3Schema: + description: ImageUpdateAutomation is the Schema for the imageupdateautomations + API + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the + latest internal value, and may reject unrecognized values. More + info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource + this object represents. Servers may infer this from the endpoint + the client submits requests to. Cannot be updated. In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: ImageUpdateAutomationSpec defines the desired state + of ImageUpdateAutomation + properties: + git: + description: GitSpec contains all the git-specific definitions. + This is technically optional, but in practice mandatory until + there are other kinds of source allowed. + properties: + checkout: + description: Checkout gives the parameters for cloning the + git repository, ready to make changes. If not present, + the `spec.ref` field from the referenced `GitRepository` + or its default will be used. + properties: + ref: + description: Reference gives a branch, tag or commit + to clone from the Git repository. + properties: + branch: + default: master + description: The Git branch to checkout, defaults + to master. + type: string + commit: + description: The Git commit SHA to checkout, if + specified Tag filters will be ignored. + type: string + semver: + description: The Git tag semver expression, takes + precedence over Tag. + type: string + tag: + description: The Git tag to checkout, takes precedence + over Branch. + type: string + type: object required: - - branch - - gitRepositoryRef + - ref type: object commit: description: Commit specifies how to commit to the git repository. properties: - authorEmail: - description: AuthorEmail gives the email to provide - when making a commit - type: string - authorName: - description: AuthorName gives the name to provide when - making a commit - type: string + author: + description: Author gives the email and optionally the + name to use as the author of commits. + properties: + email: + description: Email gives the email to provide when + making a commit. + type: string + name: + description: Name gives the name to provide when + making a commit. + type: string + required: + - email + type: object messageTemplate: description: MessageTemplate provides a template for the commit message, into which will be interpolated @@ -3408,17 +3567,12 @@ data: type: object type: object required: - - authorEmail - - authorName + - author type: object - interval: - description: Interval gives an lower bound for how often - the automation run should be attempted. - type: string push: description: Push specifies how and where to push commits made by the automation. If missing, commits are pushed - (back) to `.spec.checkout.branch`. + (back) to `.spec.checkout.branch` or its default. properties: branch: description: Branch specifies that commits should be @@ -3429,2740 +3583,2431 @@ data: required: - branch type: object - suspend: - description: Suspend tells the controller to not run this - automation, until it is unset (or set to false). Defaults - to false. - type: boolean - update: - default: - strategy: Setters - description: Update gives the specification for how to update - the files in the repository. This can be left empty, to - use the default value. - properties: - path: - description: Path to the directory containing the manifests - to be updated. Defaults to 'None', which translates - to the root path of the GitRepositoryRef. - type: string - strategy: - default: Setters - description: Strategy names the strategy to be used. - enum: - - Setters - type: string - required: - - strategy - type: object required: - - checkout - commit - - interval type: object - status: - description: ImageUpdateAutomationStatus defines the observed - state of ImageUpdateAutomation + interval: + description: Interval gives an lower bound for how often the + automation run should be attempted. + type: string + sourceRef: + description: SourceRef refers to the resource giving access + details to a git repository. properties: - conditions: - items: - description: "Condition contains details for one aspect - of the current state of this API Resource. --- This - struct is intended for direct use as an array at the - field path .status.conditions. For example, type FooStatus - struct{ // Represents the observations of a foo's - current state. // Known .status.conditions.type - are: \"Available\", \"Progressing\", and \"Degraded\" - \ // +patchMergeKey=type // +patchStrategy=merge - \ // +listType=map // +listMapKey=type Conditions - []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" - patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` - \n // other fields }" - properties: - lastTransitionTime: - description: lastTransitionTime is the last time the - condition transitioned from one status to another. - This should be when the underlying condition changed. If - that is not known, then using the time when the - API field changed is acceptable. - format: date-time - type: string - message: - description: message is a human readable message indicating - details about the transition. This may be an empty - string. - maxLength: 32768 - type: string - observedGeneration: - description: observedGeneration represents the .metadata.generation - that the condition was set based upon. For instance, - if .metadata.generation is currently 12, but the - .status.conditions[x].observedGeneration is 9, the - condition is out of date with respect to the current - state of the instance. - format: int64 - minimum: 0 - type: integer - reason: - description: reason contains a programmatic identifier - indicating the reason for the condition's last transition. - Producers of specific condition types may define - expected values and meanings for this field, and - whether the values are considered a guaranteed API. - The value should be a CamelCase string. This field - may not be empty. - maxLength: 1024 - minLength: 1 - pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ - type: string - status: - description: status of the condition, one of True, - False, Unknown. - enum: - - "True" - - "False" - - Unknown - type: string - type: - description: type of condition in CamelCase or in - foo.example.com/CamelCase. --- Many .condition.type - values are consistent across resources like Available, - but because arbitrary conditions can be useful (see - .node.status.conditions), the ability to deconflict - is important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) - maxLength: 316 - pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ - type: string - required: - - lastTransitionTime - - message - - reason - - status - - type - type: object - type: array - lastAutomationRunTime: - description: LastAutomationRunTime records the last time - the controller ran this automation through to completion - (even if no updates were made). - format: date-time + apiVersion: + description: API version of the referent type: string - lastHandledReconcileAt: - description: LastHandledReconcileAt holds the value of the - most recent reconcile request value, so a change can be - detected. + kind: + default: GitRepository + description: Kind of the referent + enum: + - GitRepository type: string - lastPushCommit: - description: LastPushCommit records the SHA1 of the last - commit made by the controller, for this automation object + name: + description: Name of the referent type: string - lastPushTime: - description: LastPushTime records the time of the last pushed - change. - format: date-time - type: string - observedGeneration: - format: int64 - type: integer + required: + - kind + - name type: object + suspend: + description: Suspend tells the controller to not run this automation, + until it is unset (or set to false). Defaults to false. + type: boolean + update: + default: + strategy: Setters + description: Update gives the specification for how to update + the files in the repository. This can be left empty, to use + the default value. + properties: + path: + description: Path to the directory containing the manifests + to be updated. Defaults to 'None', which translates to + the root path of the GitRepositoryRef. + type: string + strategy: + default: Setters + description: Strategy names the strategy to be used. + enum: + - Setters + type: string + required: + - strategy + type: object + required: + - interval + - sourceRef type: object - served: true - storage: false - subresources: - status: {} - - additionalPrinterColumns: - - jsonPath: .status.lastAutomationRunTime - name: Last run - type: string - name: v1alpha2 - schema: - openAPIV3Schema: - description: ImageUpdateAutomation is the Schema for the imageupdateautomations - API + status: + description: ImageUpdateAutomationStatus defines the observed state + of ImageUpdateAutomation properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this - representation of an object. Servers should convert recognized - schemas to the latest internal value, and may reject unrecognized - values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + conditions: + items: + description: "Condition contains details for one aspect of + the current state of this API Resource. --- This struct + is intended for direct use as an array at the field path + .status.conditions. For example, type FooStatus struct{ + \ // Represents the observations of a foo's current state. + \ // Known .status.conditions.type are: \"Available\", + \"Progressing\", and \"Degraded\" // +patchMergeKey=type + \ // +patchStrategy=merge // +listType=map // + +listMapKey=type Conditions []metav1.Condition `json:\"conditions,omitempty\" + patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` + \n // other fields }" + properties: + lastTransitionTime: + description: lastTransitionTime is the last time the condition + transitioned from one status to another. This should + be when the underlying condition changed. If that is + not known, then using the time when the API field changed + is acceptable. + format: date-time + type: string + message: + description: message is a human readable message indicating + details about the transition. This may be an empty string. + maxLength: 32768 + type: string + observedGeneration: + description: observedGeneration represents the .metadata.generation + that the condition was set based upon. For instance, + if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration + is 9, the condition is out of date with respect to the + current state of the instance. + format: int64 + minimum: 0 + type: integer + reason: + description: reason contains a programmatic identifier + indicating the reason for the condition's last transition. + Producers of specific condition types may define expected + values and meanings for this field, and whether the + values are considered a guaranteed API. The value should + be a CamelCase string. This field may not be empty. + maxLength: 1024 + minLength: 1 + pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ + type: string + status: + description: status of the condition, one of True, False, + Unknown. + enum: + - "True" + - "False" + - Unknown + type: string + type: + description: type of condition in CamelCase or in foo.example.com/CamelCase. + --- Many .condition.type values are consistent across + resources like Available, but because arbitrary conditions + can be useful (see .node.status.conditions), the ability + to deconflict is important. The regex it matches is + (dns1123SubdomainFmt/)?(qualifiedNameFmt) + maxLength: 316 + pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ + type: string + required: + - lastTransitionTime + - message + - reason + - status + - type + type: object + type: array + lastAutomationRunTime: + description: LastAutomationRunTime records the last time the + controller ran this automation through to completion (even + if no updates were made). + format: date-time type: string - kind: - description: 'Kind is a string value representing the REST resource - this object represents. Servers may infer this from the endpoint - the client submits requests to. Cannot be updated. In CamelCase. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + lastHandledReconcileAt: + description: LastHandledReconcileAt holds the value of the most + recent reconcile request value, so a change can be detected. type: string - metadata: - type: object - spec: - description: ImageUpdateAutomationSpec defines the desired state - of ImageUpdateAutomation + lastPushCommit: + description: LastPushCommit records the SHA1 of the last commit + made by the controller, for this automation object + type: string + lastPushTime: + description: LastPushTime records the time of the last pushed + change. + format: date-time + type: string + observedGeneration: + format: int64 + type: integer + type: object + type: object + served: true + storage: false + subresources: + status: {} + - additionalPrinterColumns: + - jsonPath: .status.lastAutomationRunTime + name: Last run + type: string + name: v1beta1 + schema: + openAPIV3Schema: + description: ImageUpdateAutomation is the Schema for the imageupdateautomations + API + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the + latest internal value, and may reject unrecognized values. More + info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource + this object represents. Servers may infer this from the endpoint + the client submits requests to. Cannot be updated. In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: ImageUpdateAutomationSpec defines the desired state + of ImageUpdateAutomation + properties: + git: + description: GitSpec contains all the git-specific definitions. + This is technically optional, but in practice mandatory until + there are other kinds of source allowed. properties: - git: - description: GitSpec contains all the git-specific definitions. - This is technically optional, but in practice mandatory - until there are other kinds of source allowed. + checkout: + description: Checkout gives the parameters for cloning the + git repository, ready to make changes. If not present, + the `spec.ref` field from the referenced `GitRepository` + or its default will be used. properties: - checkout: - description: Checkout gives the parameters for cloning - the git repository, ready to make changes. If not - present, the `spec.ref` field from the referenced - `GitRepository` or its default will be used. - properties: - ref: - description: Reference gives a branch, tag or commit - to clone from the Git repository. - properties: - branch: - default: master - description: The Git branch to checkout, defaults - to master. - type: string - commit: - description: The Git commit SHA to checkout, - if specified Tag filters will be ignored. - type: string - semver: - description: The Git tag semver expression, - takes precedence over Tag. - type: string - tag: - description: The Git tag to checkout, takes - precedence over Branch. - type: string - type: object - required: - - ref - type: object - commit: - description: Commit specifies how to commit to the git - repository. - properties: - author: - description: Author gives the email and optionally - the name to use as the author of commits. - properties: - email: - description: Email gives the email to provide - when making a commit. - type: string - name: - description: Name gives the name to provide - when making a commit. - type: string - required: - - email - type: object - messageTemplate: - description: MessageTemplate provides a template - for the commit message, into which will be interpolated - the details of the change made. - type: string - signingKey: - description: SigningKey provides the option to sign - commits with a GPG key - properties: - secretRef: - description: SecretRef holds the name to a secret - that contains a 'git.asc' key corresponding - to the ASCII Armored file containing the GPG - signing keypair as the value. It must be in - the same namespace as the ImageUpdateAutomation. - properties: - name: - description: Name of the referent - type: string - required: - - name - type: object - type: object - required: - - author - type: object - push: - description: Push specifies how and where to push commits - made by the automation. If missing, commits are pushed - (back) to `.spec.checkout.branch` or its default. + ref: + description: Reference gives a branch, tag or commit + to clone from the Git repository. properties: branch: - description: Branch specifies that commits should - be pushed to the branch named. The branch is created - using `.spec.checkout.branch` as the starting - point, if it doesn't already exist. + default: master + description: The Git branch to checkout, defaults + to master. type: string - required: - - branch - type: object - required: - - commit - type: object - interval: - description: Interval gives an lower bound for how often - the automation run should be attempted. - type: string - sourceRef: - description: SourceRef refers to the resource giving access - details to a git repository. - properties: - apiVersion: - description: API version of the referent - type: string - kind: - default: GitRepository - description: Kind of the referent - enum: - - GitRepository - type: string - name: - description: Name of the referent - type: string - required: - - kind - - name - type: object - suspend: - description: Suspend tells the controller to not run this - automation, until it is unset (or set to false). Defaults - to false. - type: boolean - update: - default: - strategy: Setters - description: Update gives the specification for how to update - the files in the repository. This can be left empty, to - use the default value. - properties: - path: - description: Path to the directory containing the manifests - to be updated. Defaults to 'None', which translates - to the root path of the GitRepositoryRef. - type: string - strategy: - default: Setters - description: Strategy names the strategy to be used. - enum: - - Setters - type: string - required: - - strategy - type: object - required: - - interval - - sourceRef - type: object - status: - description: ImageUpdateAutomationStatus defines the observed - state of ImageUpdateAutomation - properties: - conditions: - items: - description: "Condition contains details for one aspect - of the current state of this API Resource. --- This - struct is intended for direct use as an array at the - field path .status.conditions. For example, type FooStatus - struct{ // Represents the observations of a foo's - current state. // Known .status.conditions.type - are: \"Available\", \"Progressing\", and \"Degraded\" - \ // +patchMergeKey=type // +patchStrategy=merge - \ // +listType=map // +listMapKey=type Conditions - []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" - patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` - \n // other fields }" - properties: - lastTransitionTime: - description: lastTransitionTime is the last time the - condition transitioned from one status to another. - This should be when the underlying condition changed. If - that is not known, then using the time when the - API field changed is acceptable. - format: date-time - type: string - message: - description: message is a human readable message indicating - details about the transition. This may be an empty - string. - maxLength: 32768 - type: string - observedGeneration: - description: observedGeneration represents the .metadata.generation - that the condition was set based upon. For instance, - if .metadata.generation is currently 12, but the - .status.conditions[x].observedGeneration is 9, the - condition is out of date with respect to the current - state of the instance. - format: int64 - minimum: 0 - type: integer - reason: - description: reason contains a programmatic identifier - indicating the reason for the condition's last transition. - Producers of specific condition types may define - expected values and meanings for this field, and - whether the values are considered a guaranteed API. - The value should be a CamelCase string. This field - may not be empty. - maxLength: 1024 - minLength: 1 - pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ - type: string - status: - description: status of the condition, one of True, - False, Unknown. - enum: - - "True" - - "False" - - Unknown - type: string - type: - description: type of condition in CamelCase or in - foo.example.com/CamelCase. --- Many .condition.type - values are consistent across resources like Available, - but because arbitrary conditions can be useful (see - .node.status.conditions), the ability to deconflict - is important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) - maxLength: 316 - pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ - type: string - required: - - lastTransitionTime - - message - - reason - - status - - type - type: object - type: array - lastAutomationRunTime: - description: LastAutomationRunTime records the last time - the controller ran this automation through to completion - (even if no updates were made). - format: date-time - type: string - lastHandledReconcileAt: - description: LastHandledReconcileAt holds the value of the - most recent reconcile request value, so a change can be - detected. - type: string - lastPushCommit: - description: LastPushCommit records the SHA1 of the last - commit made by the controller, for this automation object - type: string - lastPushTime: - description: LastPushTime records the time of the last pushed - change. - format: date-time - type: string - observedGeneration: - format: int64 - type: integer - type: object - type: object - served: true - storage: false - subresources: - status: {} - - additionalPrinterColumns: - - jsonPath: .status.lastAutomationRunTime - name: Last run - type: string - name: v1beta1 - schema: - openAPIV3Schema: - description: ImageUpdateAutomation is the Schema for the imageupdateautomations - API - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this - representation of an object. Servers should convert recognized - schemas to the latest internal value, and may reject unrecognized - values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource - this object represents. Servers may infer this from the endpoint - the client submits requests to. Cannot be updated. In CamelCase. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: ImageUpdateAutomationSpec defines the desired state - of ImageUpdateAutomation - properties: - git: - description: GitSpec contains all the git-specific definitions. - This is technically optional, but in practice mandatory - until there are other kinds of source allowed. - properties: - checkout: - description: Checkout gives the parameters for cloning - the git repository, ready to make changes. If not - present, the `spec.ref` field from the referenced - `GitRepository` or its default will be used. - properties: - ref: - description: Reference gives a branch, tag or commit - to clone from the Git repository. - properties: - branch: - default: master - description: The Git branch to checkout, defaults - to master. - type: string - commit: - description: The Git commit SHA to checkout, - if specified Tag filters will be ignored. - type: string - semver: - description: The Git tag semver expression, - takes precedence over Tag. - type: string - tag: - description: The Git tag to checkout, takes - precedence over Branch. - type: string - type: object - required: - - ref - type: object - commit: - description: Commit specifies how to commit to the git - repository. - properties: - author: - description: Author gives the email and optionally - the name to use as the author of commits. - properties: - email: - description: Email gives the email to provide - when making a commit. - type: string - name: - description: Name gives the name to provide - when making a commit. - type: string - required: - - email - type: object - messageTemplate: - description: MessageTemplate provides a template - for the commit message, into which will be interpolated - the details of the change made. + commit: + description: The Git commit SHA to checkout, if + specified Tag filters will be ignored. type: string - signingKey: - description: SigningKey provides the option to sign - commits with a GPG key - properties: - secretRef: - description: SecretRef holds the name to a secret - that contains a 'git.asc' key corresponding - to the ASCII Armored file containing the GPG - signing keypair as the value. It must be in - the same namespace as the ImageUpdateAutomation. - properties: - name: - description: Name of the referent - type: string - required: - - name - type: object - type: object - required: - - author - type: object - push: - description: Push specifies how and where to push commits - made by the automation. If missing, commits are pushed - (back) to `.spec.checkout.branch` or its default. - properties: - branch: - description: Branch specifies that commits should - be pushed to the branch named. The branch is created - using `.spec.checkout.branch` as the starting - point, if it doesn't already exist. + semver: + description: The Git tag semver expression, takes + precedence over Tag. + type: string + tag: + description: The Git tag to checkout, takes precedence + over Branch. type: string - required: - - branch type: object required: - - commit + - ref type: object - interval: - description: Interval gives an lower bound for how often - the automation run should be attempted. - type: string - sourceRef: - description: SourceRef refers to the resource giving access - details to a git repository. + commit: + description: Commit specifies how to commit to the git repository. properties: - apiVersion: - description: API version of the referent - type: string - kind: - default: GitRepository - description: Kind of the referent - enum: - - GitRepository - type: string - name: - description: Name of the referent - type: string - required: - - kind - - name - type: object - suspend: - description: Suspend tells the controller to not run this - automation, until it is unset (or set to false). Defaults - to false. - type: boolean - update: - default: - strategy: Setters - description: Update gives the specification for how to update - the files in the repository. This can be left empty, to - use the default value. - properties: - path: - description: Path to the directory containing the manifests - to be updated. Defaults to 'None', which translates - to the root path of the GitRepositoryRef. - type: string - strategy: - default: Setters - description: Strategy names the strategy to be used. - enum: - - Setters - type: string - required: - - strategy - type: object - required: - - interval - - sourceRef - type: object - status: - description: ImageUpdateAutomationStatus defines the observed - state of ImageUpdateAutomation - properties: - conditions: - items: - description: "Condition contains details for one aspect - of the current state of this API Resource. --- This - struct is intended for direct use as an array at the - field path .status.conditions. For example, type FooStatus - struct{ // Represents the observations of a foo's - current state. // Known .status.conditions.type - are: \"Available\", \"Progressing\", and \"Degraded\" - \ // +patchMergeKey=type // +patchStrategy=merge - \ // +listType=map // +listMapKey=type Conditions - []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" - patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` - \n // other fields }" - properties: - lastTransitionTime: - description: lastTransitionTime is the last time the - condition transitioned from one status to another. - This should be when the underlying condition changed. If - that is not known, then using the time when the - API field changed is acceptable. - format: date-time - type: string - message: - description: message is a human readable message indicating - details about the transition. This may be an empty - string. - maxLength: 32768 - type: string - observedGeneration: - description: observedGeneration represents the .metadata.generation - that the condition was set based upon. For instance, - if .metadata.generation is currently 12, but the - .status.conditions[x].observedGeneration is 9, the - condition is out of date with respect to the current - state of the instance. - format: int64 - minimum: 0 - type: integer - reason: - description: reason contains a programmatic identifier - indicating the reason for the condition's last transition. - Producers of specific condition types may define - expected values and meanings for this field, and - whether the values are considered a guaranteed API. - The value should be a CamelCase string. This field - may not be empty. - maxLength: 1024 - minLength: 1 - pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ - type: string - status: - description: status of the condition, one of True, - False, Unknown. - enum: - - "True" - - "False" - - Unknown - type: string - type: - description: type of condition in CamelCase or in - foo.example.com/CamelCase. --- Many .condition.type - values are consistent across resources like Available, - but because arbitrary conditions can be useful (see - .node.status.conditions), the ability to deconflict - is important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) - maxLength: 316 - pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ - type: string - required: - - lastTransitionTime - - message - - reason - - status - - type - type: object - type: array - lastAutomationRunTime: - description: LastAutomationRunTime records the last time - the controller ran this automation through to completion - (even if no updates were made). - format: date-time - type: string - lastHandledReconcileAt: - description: LastHandledReconcileAt holds the value of the - most recent reconcile request value, so a change can be - detected. - type: string - lastPushCommit: - description: LastPushCommit records the SHA1 of the last - commit made by the controller, for this automation object - type: string - lastPushTime: - description: LastPushTime records the time of the last pushed - change. - format: date-time - type: string - observedGeneration: - format: int64 - type: integer - type: object - type: object - served: true - storage: true - subresources: - status: {} - type: raw - - name: kustomizations.kustomize.toolkit.fluxcd.io - properties: - apiVersion: apiextensions.k8s.io/v1 - kind: CustomResourceDefinition - metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.5.0 - labels: - app.kubernetes.io/instance: flux-system - name: kustomizations.kustomize.toolkit.fluxcd.io - spec: - group: kustomize.toolkit.fluxcd.io - names: - kind: Kustomization - listKind: KustomizationList - plural: kustomizations - shortNames: - - ks - singular: kustomization - scope: Namespaced - versions: - - additionalPrinterColumns: - - jsonPath: .status.conditions[?(@.type=="Ready")].status - name: Ready - type: string - - jsonPath: .status.conditions[?(@.type=="Ready")].message - name: Status - type: string - - jsonPath: .metadata.creationTimestamp - name: Age - type: date - name: v1beta1 - schema: - openAPIV3Schema: - description: Kustomization is the Schema for the kustomizations - API. - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this - representation of an object. Servers should convert recognized - schemas to the latest internal value, and may reject unrecognized - values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource - this object represents. Servers may infer this from the endpoint - the client submits requests to. Cannot be updated. In CamelCase. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: KustomizationSpec defines the desired state of - a kustomization. - properties: - decryption: - description: Decrypt Kubernetes secrets before applying - them on the cluster. - properties: - provider: - description: Provider is the name of the decryption - engine. - enum: - - sops - type: string - secretRef: - description: The secret name containing the private - OpenPGP keys used for decryption. + author: + description: Author gives the email and optionally the + name to use as the author of commits. properties: + email: + description: Email gives the email to provide when + making a commit. + type: string name: - description: Name of the referent + description: Name gives the name to provide when + making a commit. type: string required: - - name + - email + type: object + messageTemplate: + description: MessageTemplate provides a template for + the commit message, into which will be interpolated + the details of the change made. + type: string + signingKey: + description: SigningKey provides the option to sign + commits with a GPG key + properties: + secretRef: + description: SecretRef holds the name to a secret + that contains a 'git.asc' key corresponding to + the ASCII Armored file containing the GPG signing + keypair as the value. It must be in the same namespace + as the ImageUpdateAutomation. + properties: + name: + description: Name of the referent + type: string + required: + - name + type: object type: object required: - - provider + - author type: object - dependsOn: - description: DependsOn may contain a dependency.CrossNamespaceDependencyReference - slice with references to Kustomization resources that - must be ready before this Kustomization can be reconciled. - items: - description: CrossNamespaceDependencyReference holds the - reference to a dependency. + push: + description: Push specifies how and where to push commits + made by the automation. If missing, commits are pushed + (back) to `.spec.checkout.branch` or its default. + properties: + branch: + description: Branch specifies that commits should be + pushed to the branch named. The branch is created + using `.spec.checkout.branch` as the starting point, + if it doesn't already exist. + type: string + required: + - branch + type: object + required: + - commit + type: object + interval: + description: Interval gives an lower bound for how often the + automation run should be attempted. + type: string + sourceRef: + description: SourceRef refers to the resource giving access + details to a git repository. + properties: + apiVersion: + description: API version of the referent + type: string + kind: + default: GitRepository + description: Kind of the referent + enum: + - GitRepository + type: string + name: + description: Name of the referent + type: string + required: + - kind + - name + type: object + suspend: + description: Suspend tells the controller to not run this automation, + until it is unset (or set to false). Defaults to false. + type: boolean + update: + default: + strategy: Setters + description: Update gives the specification for how to update + the files in the repository. This can be left empty, to use + the default value. + properties: + path: + description: Path to the directory containing the manifests + to be updated. Defaults to 'None', which translates to + the root path of the GitRepositoryRef. + type: string + strategy: + default: Setters + description: Strategy names the strategy to be used. + enum: + - Setters + type: string + required: + - strategy + type: object + required: + - interval + - sourceRef + type: object + status: + description: ImageUpdateAutomationStatus defines the observed state + of ImageUpdateAutomation + properties: + conditions: + items: + description: "Condition contains details for one aspect of + the current state of this API Resource. --- This struct + is intended for direct use as an array at the field path + .status.conditions. For example, type FooStatus struct{ + \ // Represents the observations of a foo's current state. + \ // Known .status.conditions.type are: \"Available\", + \"Progressing\", and \"Degraded\" // +patchMergeKey=type + \ // +patchStrategy=merge // +listType=map // + +listMapKey=type Conditions []metav1.Condition `json:\"conditions,omitempty\" + patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` + \n // other fields }" + properties: + lastTransitionTime: + description: lastTransitionTime is the last time the condition + transitioned from one status to another. This should + be when the underlying condition changed. If that is + not known, then using the time when the API field changed + is acceptable. + format: date-time + type: string + message: + description: message is a human readable message indicating + details about the transition. This may be an empty string. + maxLength: 32768 + type: string + observedGeneration: + description: observedGeneration represents the .metadata.generation + that the condition was set based upon. For instance, + if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration + is 9, the condition is out of date with respect to the + current state of the instance. + format: int64 + minimum: 0 + type: integer + reason: + description: reason contains a programmatic identifier + indicating the reason for the condition's last transition. + Producers of specific condition types may define expected + values and meanings for this field, and whether the + values are considered a guaranteed API. The value should + be a CamelCase string. This field may not be empty. + maxLength: 1024 + minLength: 1 + pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ + type: string + status: + description: status of the condition, one of True, False, + Unknown. + enum: + - "True" + - "False" + - Unknown + type: string + type: + description: type of condition in CamelCase or in foo.example.com/CamelCase. + --- Many .condition.type values are consistent across + resources like Available, but because arbitrary conditions + can be useful (see .node.status.conditions), the ability + to deconflict is important. The regex it matches is + (dns1123SubdomainFmt/)?(qualifiedNameFmt) + maxLength: 316 + pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ + type: string + required: + - lastTransitionTime + - message + - reason + - status + - type + type: object + type: array + lastAutomationRunTime: + description: LastAutomationRunTime records the last time the + controller ran this automation through to completion (even + if no updates were made). + format: date-time + type: string + lastHandledReconcileAt: + description: LastHandledReconcileAt holds the value of the most + recent reconcile request value, so a change can be detected. + type: string + lastPushCommit: + description: LastPushCommit records the SHA1 of the last commit + made by the controller, for this automation object + type: string + lastPushTime: + description: LastPushTime records the time of the last pushed + change. + format: date-time + type: string + observedGeneration: + format: int64 + type: integer + type: object + type: object + served: true + storage: true + subresources: + status: {} + type: raw + - name: kustomizations.kustomize.toolkit.fluxcd.io + properties: + apiVersion: apiextensions.k8s.io/v1 + kind: CustomResourceDefinition + metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.5.0 + labels: + app.kubernetes.io/instance: flux-system + name: kustomizations.kustomize.toolkit.fluxcd.io + spec: + group: kustomize.toolkit.fluxcd.io + names: + kind: Kustomization + listKind: KustomizationList + plural: kustomizations + shortNames: + - ks + singular: kustomization + scope: Namespaced + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=="Ready")].status + name: Ready + type: string + - jsonPath: .status.conditions[?(@.type=="Ready")].message + name: Status + type: string + - jsonPath: .metadata.creationTimestamp + name: Age + type: date + name: v1beta1 + schema: + openAPIV3Schema: + description: Kustomization is the Schema for the kustomizations API. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the + latest internal value, and may reject unrecognized values. More + info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource + this object represents. Servers may infer this from the endpoint + the client submits requests to. Cannot be updated. In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: KustomizationSpec defines the desired state of a kustomization. + properties: + decryption: + description: Decrypt Kubernetes secrets before applying them + on the cluster. + properties: + provider: + description: Provider is the name of the decryption engine. + enum: + - sops + type: string + secretRef: + description: The secret name containing the private OpenPGP + keys used for decryption. + properties: + name: + description: Name of the referent + type: string + required: + - name + type: object + required: + - provider + type: object + dependsOn: + description: DependsOn may contain a dependency.CrossNamespaceDependencyReference + slice with references to Kustomization resources that must + be ready before this Kustomization can be reconciled. + items: + description: CrossNamespaceDependencyReference holds the reference + to a dependency. + properties: + name: + description: Name holds the name reference of a dependency. + type: string + namespace: + description: Namespace holds the namespace reference of + a dependency. + type: string + required: + - name + type: object + type: array + force: + default: false + description: Force instructs the controller to recreate resources + when patching fails due to an immutable field change. + type: boolean + healthChecks: + description: A list of resources to be included in the health + assessment. + items: + description: NamespacedObjectKindReference contains enough + information to let you locate the typed referenced object + in any namespace + properties: + apiVersion: + description: API version of the referent, if not specified + the Kubernetes preferred version will be used + type: string + kind: + description: Kind of the referent + type: string + name: + description: Name of the referent + type: string + namespace: + description: Namespace of the referent, when not specified + it acts as LocalObjectReference + type: string + required: + - kind + - name + type: object + type: array + images: + description: Images is a list of (image name, new name, new + tag or digest) for changing image names, tags or digests. + This can also be achieved with a patch, but this operator + is simpler to specify. + items: + description: Image contains an image name, a new name, a new + tag or digest, which will replace the original name and + tag. + properties: + digest: + description: Digest is the value used to replace the original + image tag. If digest is present NewTag value is ignored. + type: string + name: + description: Name is a tag-less image name. + type: string + newName: + description: NewName is the value used to replace the + original name. + type: string + newTag: + description: NewTag is the value used to replace the original + tag. + type: string + required: + - name + type: object + type: array + interval: + description: The interval at which to reconcile the Kustomization. + type: string + kubeConfig: + description: The KubeConfig for reconciling the Kustomization + on a remote cluster. When specified, KubeConfig takes precedence + over ServiceAccountName. + properties: + secretRef: + description: SecretRef holds the name to a secret that contains + a 'value' key with the kubeconfig file as the value. It + must be in the same namespace as the Kustomization. It + is recommended that the kubeconfig is self-contained, + and the secret is regularly updated if credentials such + as a cloud-access-token expire. Cloud specific `cmd-path` + auth helpers will not function without adding binaries + and credentials to the Pod that is responsible for reconciling + the Kustomization. + properties: + name: + description: Name of the referent + type: string + required: + - name + type: object + type: object + patches: + description: Strategic merge and JSON patches, defined as inline + YAML objects, capable of targeting objects based on kind, + label and annotation selectors. + items: + description: Patch contains either a StrategicMerge or a JSON6902 + patch, either a file or inline, and the target the patch + should be applied to. + properties: + patch: + description: Patch contains the JSON6902 patch document + with an array of operation objects. + type: string + target: + description: Target points to the resources that the patch + document should be applied to. properties: - name: - description: Name holds the name reference of a dependency. + annotationSelector: + description: AnnotationSelector is a string that follows + the label selection expression https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#api + It matches with the resource annotations. type: string - namespace: - description: Namespace holds the namespace reference - of a dependency. - type: string - required: - - name - type: object - type: array - force: - default: false - description: Force instructs the controller to recreate - resources when patching fails due to an immutable field - change. - type: boolean - healthChecks: - description: A list of resources to be included in the health - assessment. - items: - description: NamespacedObjectKindReference contains enough - information to let you locate the typed referenced object - in any namespace - properties: - apiVersion: - description: API version of the referent, if not specified - the Kubernetes preferred version will be used + group: + description: Group is the API group to select resources + from. Together with Version and Kind it is capable + of unambiguously identifying and/or selecting resources. + https://github.com/kubernetes/community/blob/master/contributors/design-proposals/api-machinery/api-group.md type: string kind: - description: Kind of the referent + description: Kind of the API Group to select resources + from. Together with Group and Version it is capable + of unambiguously identifying and/or selecting resources. + https://github.com/kubernetes/community/blob/master/contributors/design-proposals/api-machinery/api-group.md + type: string + labelSelector: + description: LabelSelector is a string that follows + the label selection expression https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#api + It matches with the resource labels. type: string name: - description: Name of the referent + description: Name to match resources with. type: string namespace: - description: Namespace of the referent, when not specified - it acts as LocalObjectReference + description: Namespace to select resources from. + type: string + version: + description: Version of the API Group to select resources + from. Together with Group and Kind it is capable + of unambiguously identifying and/or selecting resources. + https://github.com/kubernetes/community/blob/master/contributors/design-proposals/api-machinery/api-group.md + type: string + type: object + type: object + type: array + patchesJson6902: + description: JSON 6902 patches, defined as inline YAML objects. + items: + description: JSON6902Patch contains a JSON6902 patch and the + target the patch should be applied to. + properties: + patch: + description: Patch contains the JSON6902 patch document + with an array of operation objects. + items: + description: JSON6902 is a JSON6902 operation object. + https://tools.ietf.org/html/rfc6902#section-4 + properties: + from: + type: string + op: + enum: + - test + - remove + - add + - replace + - move + - copy + type: string + path: + type: string + value: + x-kubernetes-preserve-unknown-fields: true + required: + - op + - path + type: object + type: array + target: + description: Target points to the resources that the patch + document should be applied to. + properties: + annotationSelector: + description: AnnotationSelector is a string that follows + the label selection expression https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#api + It matches with the resource annotations. + type: string + group: + description: Group is the API group to select resources + from. Together with Version and Kind it is capable + of unambiguously identifying and/or selecting resources. + https://github.com/kubernetes/community/blob/master/contributors/design-proposals/api-machinery/api-group.md + type: string + kind: + description: Kind of the API Group to select resources + from. Together with Group and Version it is capable + of unambiguously identifying and/or selecting resources. + https://github.com/kubernetes/community/blob/master/contributors/design-proposals/api-machinery/api-group.md + type: string + labelSelector: + description: LabelSelector is a string that follows + the label selection expression https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#api + It matches with the resource labels. + type: string + name: + description: Name to match resources with. + type: string + namespace: + description: Namespace to select resources from. + type: string + version: + description: Version of the API Group to select resources + from. Together with Group and Kind it is capable + of unambiguously identifying and/or selecting resources. + https://github.com/kubernetes/community/blob/master/contributors/design-proposals/api-machinery/api-group.md + type: string + type: object + required: + - patch + - target + type: object + type: array + patchesStrategicMerge: + description: Strategic merge patches, defined as inline YAML + objects. + items: + x-kubernetes-preserve-unknown-fields: true + type: array + path: + description: Path to the directory containing the kustomization.yaml + file, or the set of plain YAMLs a kustomization.yaml should + be generated for. Defaults to 'None', which translates to + the root path of the SourceRef. + type: string + postBuild: + description: PostBuild describes which actions to perform on + the YAML manifest generated by building the kustomize overlay. + properties: + substitute: + additionalProperties: + type: string + description: Substitute holds a map of key/value pairs. + The variables defined in your YAML manifests that match + any of the keys defined in the map will be substituted + with the set value. Includes support for bash string replacement + functions e.g. ${var:=default}, ${var:position} and ${var/substring/replacement}. + type: object + substituteFrom: + description: SubstituteFrom holds references to ConfigMaps + and Secrets containing the variables and their values + to be substituted in the YAML manifests. The ConfigMap + and the Secret data keys represent the var names and they + must match the vars declared in the manifests for the + substitution to happen. + items: + description: SubstituteReference contains a reference + to a resource containing the variables name and value. + properties: + kind: + description: Kind of the values referent, valid values + are ('Secret', 'ConfigMap'). + enum: + - Secret + - ConfigMap + type: string + name: + description: Name of the values referent. Should reside + in the same namespace as the referring resource. + maxLength: 253 + minLength: 1 type: string required: - kind - name type: object type: array - images: - description: Images is a list of (image name, new name, - new tag or digest) for changing image names, tags or digests. - This can also be achieved with a patch, but this operator - is simpler to specify. - items: - description: Image contains an image name, a new name, - a new tag or digest, which will replace the original - name and tag. - properties: - digest: - description: Digest is the value used to replace the - original image tag. If digest is present NewTag - value is ignored. - type: string - name: - description: Name is a tag-less image name. - type: string - newName: - description: NewName is the value used to replace - the original name. - type: string - newTag: - description: NewTag is the value used to replace the - original tag. - type: string - required: - - name - type: object - type: array - interval: - description: The interval at which to reconcile the Kustomization. + type: object + prune: + description: Prune enables garbage collection. + type: boolean + retryInterval: + description: The interval at which to retry a previously failed + reconciliation. When not specified, the controller uses the + KustomizationSpec.Interval value to retry failures. + type: string + serviceAccountName: + description: The name of the Kubernetes service account to impersonate + when reconciling this Kustomization. + type: string + sourceRef: + description: Reference of the source where the kustomization + file is. + properties: + apiVersion: + description: API version of the referent type: string - kubeConfig: - description: The KubeConfig for reconciling the Kustomization - on a remote cluster. When specified, KubeConfig takes - precedence over ServiceAccountName. - properties: - secretRef: - description: SecretRef holds the name to a secret that - contains a 'value' key with the kubeconfig file as - the value. It must be in the same namespace as the - Kustomization. It is recommended that the kubeconfig - is self-contained, and the secret is regularly updated - if credentials such as a cloud-access-token expire. - Cloud specific `cmd-path` auth helpers will not function - without adding binaries and credentials to the Pod - that is responsible for reconciling the Kustomization. - properties: - name: - description: Name of the referent - type: string - required: - - name - type: object - type: object - patches: - description: Strategic merge and JSON patches, defined as - inline YAML objects, capable of targeting objects based - on kind, label and annotation selectors. - items: - description: Patch contains either a StrategicMerge or - a JSON6902 patch, either a file or inline, and the target - the patch should be applied to. - properties: - patch: - description: Patch contains the JSON6902 patch document - with an array of operation objects. - type: string - target: - description: Target points to the resources that the - patch document should be applied to. - properties: - annotationSelector: - description: AnnotationSelector is a string that - follows the label selection expression https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#api - It matches with the resource annotations. - type: string - group: - description: Group is the API group to select - resources from. Together with Version and Kind - it is capable of unambiguously identifying and/or - selecting resources. https://github.com/kubernetes/community/blob/master/contributors/design-proposals/api-machinery/api-group.md - type: string - kind: - description: Kind of the API Group to select resources - from. Together with Group and Version it is - capable of unambiguously identifying and/or - selecting resources. https://github.com/kubernetes/community/blob/master/contributors/design-proposals/api-machinery/api-group.md - type: string - labelSelector: - description: LabelSelector is a string that follows - the label selection expression https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#api - It matches with the resource labels. - type: string - name: - description: Name to match resources with. - type: string - namespace: - description: Namespace to select resources from. - type: string - version: - description: Version of the API Group to select - resources from. Together with Group and Kind - it is capable of unambiguously identifying and/or - selecting resources. https://github.com/kubernetes/community/blob/master/contributors/design-proposals/api-machinery/api-group.md - type: string - type: object - type: object - type: array - patchesJson6902: - description: JSON 6902 patches, defined as inline YAML objects. - items: - description: JSON6902Patch contains a JSON6902 patch and - the target the patch should be applied to. - properties: - patch: - description: Patch contains the JSON6902 patch document - with an array of operation objects. - items: - description: JSON6902 is a JSON6902 operation object. - https://tools.ietf.org/html/rfc6902#section-4 - properties: - from: - type: string - op: - enum: - - test - - remove - - add - - replace - - move - - copy - type: string - path: - type: string - value: - x-kubernetes-preserve-unknown-fields: true - required: - - op - - path - type: object - type: array - target: - description: Target points to the resources that the - patch document should be applied to. - properties: - annotationSelector: - description: AnnotationSelector is a string that - follows the label selection expression https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#api - It matches with the resource annotations. - type: string - group: - description: Group is the API group to select - resources from. Together with Version and Kind - it is capable of unambiguously identifying and/or - selecting resources. https://github.com/kubernetes/community/blob/master/contributors/design-proposals/api-machinery/api-group.md - type: string - kind: - description: Kind of the API Group to select resources - from. Together with Group and Version it is - capable of unambiguously identifying and/or - selecting resources. https://github.com/kubernetes/community/blob/master/contributors/design-proposals/api-machinery/api-group.md - type: string - labelSelector: - description: LabelSelector is a string that follows - the label selection expression https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#api - It matches with the resource labels. - type: string - name: - description: Name to match resources with. - type: string - namespace: - description: Namespace to select resources from. - type: string - version: - description: Version of the API Group to select - resources from. Together with Group and Kind - it is capable of unambiguously identifying and/or - selecting resources. https://github.com/kubernetes/community/blob/master/contributors/design-proposals/api-machinery/api-group.md - type: string - type: object - required: - - patch - - target - type: object - type: array - patchesStrategicMerge: - description: Strategic merge patches, defined as inline - YAML objects. - items: - x-kubernetes-preserve-unknown-fields: true - type: array - path: - description: Path to the directory containing the kustomization.yaml - file, or the set of plain YAMLs a kustomization.yaml should - be generated for. Defaults to 'None', which translates - to the root path of the SourceRef. - type: string - postBuild: - description: PostBuild describes which actions to perform - on the YAML manifest generated by building the kustomize - overlay. - properties: - substitute: - additionalProperties: - type: string - description: Substitute holds a map of key/value pairs. - The variables defined in your YAML manifests that - match any of the keys defined in the map will be substituted - with the set value. Includes support for bash string - replacement functions e.g. ${var:=default}, ${var:position} - and ${var/substring/replacement}. - type: object - substituteFrom: - description: SubstituteFrom holds references to ConfigMaps - and Secrets containing the variables and their values - to be substituted in the YAML manifests. The ConfigMap - and the Secret data keys represent the var names and - they must match the vars declared in the manifests - for the substitution to happen. - items: - description: SubstituteReference contains a reference - to a resource containing the variables name and - value. - properties: - kind: - description: Kind of the values referent, valid - values are ('Secret', 'ConfigMap'). - enum: - - Secret - - ConfigMap - type: string - name: - description: Name of the values referent. Should - reside in the same namespace as the referring - resource. - maxLength: 253 - minLength: 1 - type: string - required: - - kind - - name - type: object - type: array - type: object - prune: - description: Prune enables garbage collection. - type: boolean - retryInterval: - description: The interval at which to retry a previously - failed reconciliation. When not specified, the controller - uses the KustomizationSpec.Interval value to retry failures. - type: string - serviceAccountName: - description: The name of the Kubernetes service account - to impersonate when reconciling this Kustomization. - type: string - sourceRef: - description: Reference of the source where the kustomization - file is. - properties: - apiVersion: - description: API version of the referent - type: string - kind: - description: Kind of the referent - enum: - - GitRepository - - Bucket - type: string - name: - description: Name of the referent - type: string - namespace: - description: Namespace of the referent, defaults to - the Kustomization namespace - type: string - required: - - kind - - name - type: object - suspend: - description: This flag tells the controller to suspend subsequent - kustomize executions, it does not apply to already started - executions. Defaults to false. - type: boolean - targetNamespace: - description: TargetNamespace sets or overrides the namespace - in the kustomization.yaml file. - maxLength: 63 - minLength: 1 - type: string - timeout: - description: Timeout for validation, apply and health checking - operations. Defaults to 'Interval' duration. - type: string - validation: - description: Validate the Kubernetes objects before applying - them on the cluster. The validation strategy can be 'client' - (local dry-run), 'server' (APIServer dry-run) or 'none'. - When 'Force' is 'true', validation will fallback to 'client' - if set to 'server' because server-side validation is not - supported in this scenario. + kind: + description: Kind of the referent enum: - - none - - client - - server + - GitRepository + - Bucket + type: string + name: + description: Name of the referent + type: string + namespace: + description: Namespace of the referent, defaults to the + Kustomization namespace type: string required: - - interval - - prune - - sourceRef - type: object - status: - description: KustomizationStatus defines the observed state - of a kustomization. - properties: - conditions: - items: - description: "Condition contains details for one aspect - of the current state of this API Resource. --- This - struct is intended for direct use as an array at the - field path .status.conditions. For example, type FooStatus - struct{ // Represents the observations of a foo's - current state. // Known .status.conditions.type - are: \"Available\", \"Progressing\", and \"Degraded\" - \ // +patchMergeKey=type // +patchStrategy=merge - \ // +listType=map // +listMapKey=type Conditions - []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" - patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` - \n // other fields }" - properties: - lastTransitionTime: - description: lastTransitionTime is the last time the - condition transitioned from one status to another. - This should be when the underlying condition changed. If - that is not known, then using the time when the - API field changed is acceptable. - format: date-time - type: string - message: - description: message is a human readable message indicating - details about the transition. This may be an empty - string. - maxLength: 32768 - type: string - observedGeneration: - description: observedGeneration represents the .metadata.generation - that the condition was set based upon. For instance, - if .metadata.generation is currently 12, but the - .status.conditions[x].observedGeneration is 9, the - condition is out of date with respect to the current - state of the instance. - format: int64 - minimum: 0 - type: integer - reason: - description: reason contains a programmatic identifier - indicating the reason for the condition's last transition. - Producers of specific condition types may define - expected values and meanings for this field, and - whether the values are considered a guaranteed API. - The value should be a CamelCase string. This field - may not be empty. - maxLength: 1024 - minLength: 1 - pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ - type: string - status: - description: status of the condition, one of True, - False, Unknown. - enum: - - "True" - - "False" - - Unknown - type: string - type: - description: type of condition in CamelCase or in - foo.example.com/CamelCase. --- Many .condition.type - values are consistent across resources like Available, - but because arbitrary conditions can be useful (see - .node.status.conditions), the ability to deconflict - is important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) - maxLength: 316 - pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ - type: string - required: - - lastTransitionTime - - message - - reason - - status - - type - type: object - type: array - lastAppliedRevision: - description: The last successfully applied revision. The - revision format for Git sources is /. - type: string - lastAttemptedRevision: - description: LastAttemptedRevision is the revision of the - last reconciliation attempt. - type: string - lastHandledReconcileAt: - description: LastHandledReconcileAt holds the value of the - most recent reconcile request value, so a change can be - detected. - type: string - observedGeneration: - description: ObservedGeneration is the last reconciled generation. - format: int64 - type: integer - snapshot: - description: The last successfully applied revision metadata. - properties: - checksum: - description: The manifests sha1 checksum. - type: string - entries: - description: A list of Kubernetes kinds grouped by namespace. - items: - description: Snapshot holds the metadata of namespaced - Kubernetes objects - properties: - kinds: - additionalProperties: - type: string - description: The list of Kubernetes kinds. - type: object - namespace: - description: The namespace of this entry. - type: string - required: - - kinds - type: object - type: array - required: - - checksum - - entries - type: object + - kind + - name type: object + suspend: + description: This flag tells the controller to suspend subsequent + kustomize executions, it does not apply to already started + executions. Defaults to false. + type: boolean + targetNamespace: + description: TargetNamespace sets or overrides the namespace + in the kustomization.yaml file. + maxLength: 63 + minLength: 1 + type: string + timeout: + description: Timeout for validation, apply and health checking + operations. Defaults to 'Interval' duration. + type: string + validation: + description: Validate the Kubernetes objects before applying + them on the cluster. The validation strategy can be 'client' + (local dry-run), 'server' (APIServer dry-run) or 'none'. When + 'Force' is 'true', validation will fallback to 'client' if + set to 'server' because server-side validation is not supported + in this scenario. + enum: + - none + - client + - server + type: string + required: + - interval + - prune + - sourceRef type: object - served: true - storage: true - subresources: - status: {} - type: raw - - name: providers.notification.toolkit.fluxcd.io - properties: - apiVersion: apiextensions.k8s.io/v1 - kind: CustomResourceDefinition - metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.5.0 - labels: - app.kubernetes.io/instance: flux-system - name: providers.notification.toolkit.fluxcd.io - spec: - group: notification.toolkit.fluxcd.io - names: - kind: Provider - listKind: ProviderList - plural: providers - singular: provider - scope: Namespaced - versions: - - additionalPrinterColumns: - - jsonPath: .status.conditions[?(@.type=="Ready")].status - name: Ready - type: string - - jsonPath: .status.conditions[?(@.type=="Ready")].message - name: Status - type: string - - jsonPath: .metadata.creationTimestamp - name: Age - type: date - name: v1beta1 - schema: - openAPIV3Schema: - description: Provider is the Schema for the providers API + status: + description: KustomizationStatus defines the observed state of a + kustomization. properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this - representation of an object. Servers should convert recognized - schemas to the latest internal value, and may reject unrecognized - values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource - this object represents. Servers may infer this from the endpoint - the client submits requests to. Cannot be updated. In CamelCase. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: ProviderSpec defines the desired state of Provider - properties: - address: - description: HTTP/S webhook address of this provider - pattern: ^(http|https):// - type: string - certSecretRef: - description: CertSecretRef can be given the name of a secret - containing a PEM-encoded CA certificate (`caFile`) - properties: - name: - description: Name of the referent - type: string - required: - - name - type: object - channel: - description: Alert channel for this provider - type: string - proxy: - description: HTTP/S address of the proxy - pattern: ^(http|https):// - type: string - secretRef: - description: Secret reference containing the provider webhook - URL using "address" as data key - properties: - name: - description: Name of the referent - type: string - required: - - name - type: object - type: - description: Type of provider - enum: - - slack - - discord - - msteams - - rocket - - generic - - github - - gitlab - - bitbucket - - azuredevops - - googlechat - - webex - - sentry - - azureeventhub - type: string - username: - description: Bot username for this provider - type: string - required: - - type - type: object - status: - description: ProviderStatus defines the observed state of Provider - properties: - conditions: - items: - description: "Condition contains details for one aspect - of the current state of this API Resource. --- This - struct is intended for direct use as an array at the - field path .status.conditions. For example, type FooStatus - struct{ // Represents the observations of a foo's - current state. // Known .status.conditions.type - are: \"Available\", \"Progressing\", and \"Degraded\" - \ // +patchMergeKey=type // +patchStrategy=merge - \ // +listType=map // +listMapKey=type Conditions - []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" - patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` - \n // other fields }" - properties: - lastTransitionTime: - description: lastTransitionTime is the last time the - condition transitioned from one status to another. - This should be when the underlying condition changed. If - that is not known, then using the time when the - API field changed is acceptable. - format: date-time - type: string - message: - description: message is a human readable message indicating - details about the transition. This may be an empty - string. - maxLength: 32768 - type: string - observedGeneration: - description: observedGeneration represents the .metadata.generation - that the condition was set based upon. For instance, - if .metadata.generation is currently 12, but the - .status.conditions[x].observedGeneration is 9, the - condition is out of date with respect to the current - state of the instance. - format: int64 - minimum: 0 - type: integer - reason: - description: reason contains a programmatic identifier - indicating the reason for the condition's last transition. - Producers of specific condition types may define - expected values and meanings for this field, and - whether the values are considered a guaranteed API. - The value should be a CamelCase string. This field - may not be empty. - maxLength: 1024 - minLength: 1 - pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ - type: string - status: - description: status of the condition, one of True, - False, Unknown. - enum: - - "True" - - "False" - - Unknown - type: string - type: - description: type of condition in CamelCase or in - foo.example.com/CamelCase. --- Many .condition.type - values are consistent across resources like Available, - but because arbitrary conditions can be useful (see - .node.status.conditions), the ability to deconflict - is important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) - maxLength: 316 - pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ - type: string - required: - - lastTransitionTime - - message - - reason - - status - - type - type: object - type: array - type: object - type: object - served: true - storage: true - subresources: - status: {} - type: raw - - name: receivers.notification.toolkit.fluxcd.io - properties: - apiVersion: apiextensions.k8s.io/v1 - kind: CustomResourceDefinition - metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.5.0 - labels: - app.kubernetes.io/instance: flux-system - name: receivers.notification.toolkit.fluxcd.io - spec: - group: notification.toolkit.fluxcd.io - names: - kind: Receiver - listKind: ReceiverList - plural: receivers - singular: receiver - scope: Namespaced - versions: - - additionalPrinterColumns: - - jsonPath: .status.conditions[?(@.type=="Ready")].status - name: Ready - type: string - - jsonPath: .status.conditions[?(@.type=="Ready")].message - name: Status - type: string - - jsonPath: .metadata.creationTimestamp - name: Age - type: date - name: v1beta1 - schema: - openAPIV3Schema: - description: Receiver is the Schema for the receivers API - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this - representation of an object. Servers should convert recognized - schemas to the latest internal value, and may reject unrecognized - values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource - this object represents. Servers may infer this from the endpoint - the client submits requests to. Cannot be updated. In CamelCase. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: ReceiverSpec defines the desired state of Receiver - properties: - events: - description: A list of events to handle, e.g. 'push' for - GitHub or 'Push Hook' for GitLab. - items: + conditions: + items: + description: "Condition contains details for one aspect of + the current state of this API Resource. --- This struct + is intended for direct use as an array at the field path + .status.conditions. For example, type FooStatus struct{ + \ // Represents the observations of a foo's current state. + \ // Known .status.conditions.type are: \"Available\", + \"Progressing\", and \"Degraded\" // +patchMergeKey=type + \ // +patchStrategy=merge // +listType=map // + +listMapKey=type Conditions []metav1.Condition `json:\"conditions,omitempty\" + patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` + \n // other fields }" + properties: + lastTransitionTime: + description: lastTransitionTime is the last time the condition + transitioned from one status to another. This should + be when the underlying condition changed. If that is + not known, then using the time when the API field changed + is acceptable. + format: date-time type: string - type: array - resources: - description: A list of resources to be notified about changes. - items: - description: CrossNamespaceObjectReference contains enough - information to let you locate the typed referenced object - at cluster level - properties: - apiVersion: - description: API version of the referent - type: string - kind: - description: Kind of the referent - enum: - - Bucket - - GitRepository - - Kustomization - - HelmRelease - - HelmChart - - HelmRepository - - ImageRepository - - ImagePolicy - - ImageUpdateAutomation - type: string - name: - description: Name of the referent - maxLength: 53 - minLength: 1 - type: string - namespace: - description: Namespace of the referent - maxLength: 53 - minLength: 1 - type: string - required: - - name - type: object - type: array - secretRef: - description: Secret reference containing the token used - to validate the payload authenticity - properties: - name: - description: Name of the referent - type: string - required: - - name - type: object - suspend: - description: This flag tells the controller to suspend subsequent - events handling. Defaults to false. - type: boolean - type: - description: Type of webhook sender, used to determine the - validation procedure and payload deserialization. - enum: - - generic - - generic-hmac - - github - - gitlab - - bitbucket - - harbor - - dockerhub - - quay - - gcr - - nexus - - acr - type: string - required: - - resources - - type - type: object - status: - description: ReceiverStatus defines the observed state of Receiver + message: + description: message is a human readable message indicating + details about the transition. This may be an empty string. + maxLength: 32768 + type: string + observedGeneration: + description: observedGeneration represents the .metadata.generation + that the condition was set based upon. For instance, + if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration + is 9, the condition is out of date with respect to the + current state of the instance. + format: int64 + minimum: 0 + type: integer + reason: + description: reason contains a programmatic identifier + indicating the reason for the condition's last transition. + Producers of specific condition types may define expected + values and meanings for this field, and whether the + values are considered a guaranteed API. The value should + be a CamelCase string. This field may not be empty. + maxLength: 1024 + minLength: 1 + pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ + type: string + status: + description: status of the condition, one of True, False, + Unknown. + enum: + - "True" + - "False" + - Unknown + type: string + type: + description: type of condition in CamelCase or in foo.example.com/CamelCase. + --- Many .condition.type values are consistent across + resources like Available, but because arbitrary conditions + can be useful (see .node.status.conditions), the ability + to deconflict is important. The regex it matches is + (dns1123SubdomainFmt/)?(qualifiedNameFmt) + maxLength: 316 + pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ + type: string + required: + - lastTransitionTime + - message + - reason + - status + - type + type: object + type: array + lastAppliedRevision: + description: The last successfully applied revision. The revision + format for Git sources is /. + type: string + lastAttemptedRevision: + description: LastAttemptedRevision is the revision of the last + reconciliation attempt. + type: string + lastHandledReconcileAt: + description: LastHandledReconcileAt holds the value of the most + recent reconcile request value, so a change can be detected. + type: string + observedGeneration: + description: ObservedGeneration is the last reconciled generation. + format: int64 + type: integer + snapshot: + description: The last successfully applied revision metadata. properties: - conditions: + checksum: + description: The manifests sha1 checksum. + type: string + entries: + description: A list of Kubernetes kinds grouped by namespace. items: - description: "Condition contains details for one aspect - of the current state of this API Resource. --- This - struct is intended for direct use as an array at the - field path .status.conditions. For example, type FooStatus - struct{ // Represents the observations of a foo's - current state. // Known .status.conditions.type - are: \"Available\", \"Progressing\", and \"Degraded\" - \ // +patchMergeKey=type // +patchStrategy=merge - \ // +listType=map // +listMapKey=type Conditions - []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" - patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` - \n // other fields }" + description: Snapshot holds the metadata of namespaced + Kubernetes objects properties: - lastTransitionTime: - description: lastTransitionTime is the last time the - condition transitioned from one status to another. - This should be when the underlying condition changed. If - that is not known, then using the time when the - API field changed is acceptable. - format: date-time - type: string - message: - description: message is a human readable message indicating - details about the transition. This may be an empty - string. - maxLength: 32768 - type: string - observedGeneration: - description: observedGeneration represents the .metadata.generation - that the condition was set based upon. For instance, - if .metadata.generation is currently 12, but the - .status.conditions[x].observedGeneration is 9, the - condition is out of date with respect to the current - state of the instance. - format: int64 - minimum: 0 - type: integer - reason: - description: reason contains a programmatic identifier - indicating the reason for the condition's last transition. - Producers of specific condition types may define - expected values and meanings for this field, and - whether the values are considered a guaranteed API. - The value should be a CamelCase string. This field - may not be empty. - maxLength: 1024 - minLength: 1 - pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ - type: string - status: - description: status of the condition, one of True, - False, Unknown. - enum: - - "True" - - "False" - - Unknown - type: string - type: - description: type of condition in CamelCase or in - foo.example.com/CamelCase. --- Many .condition.type - values are consistent across resources like Available, - but because arbitrary conditions can be useful (see - .node.status.conditions), the ability to deconflict - is important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) - maxLength: 316 - pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ + kinds: + additionalProperties: + type: string + description: The list of Kubernetes kinds. + type: object + namespace: + description: The namespace of this entry. type: string required: - - lastTransitionTime - - message - - reason - - status - - type + - kinds type: object type: array - observedGeneration: - description: ObservedGeneration is the last observed generation. - format: int64 - type: integer - url: - description: Generated webhook URL in the format of '/hook/sha256sum(token+name+namespace)'. - type: string + required: + - checksum + - entries type: object type: object - served: true - storage: true - subresources: - status: {} - type: raw - - name: helm-controller - properties: - apiVersion: apps/v1 - kind: Deployment + type: object + served: true + storage: true + subresources: + status: {} + type: raw + - name: providers.notification.toolkit.fluxcd.io + properties: + apiVersion: apiextensions.k8s.io/v1 + kind: CustomResourceDefinition + metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.5.0 + labels: + app.kubernetes.io/instance: flux-system + name: providers.notification.toolkit.fluxcd.io + spec: + group: notification.toolkit.fluxcd.io + names: + kind: Provider + listKind: ProviderList + plural: providers + singular: provider + scope: Namespaced + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=="Ready")].status + name: Ready + type: string + - jsonPath: .status.conditions[?(@.type=="Ready")].message + name: Status + type: string + - jsonPath: .metadata.creationTimestamp + name: Age + type: date + name: v1beta1 + schema: + openAPIV3Schema: + description: Provider is the Schema for the providers API + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the + latest internal value, and may reject unrecognized values. More + info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource + this object represents. Servers may infer this from the endpoint + the client submits requests to. Cannot be updated. In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: ProviderSpec defines the desired state of Provider + properties: + address: + description: HTTP/S webhook address of this provider + pattern: ^(http|https):// + type: string + certSecretRef: + description: CertSecretRef can be given the name of a secret + containing a PEM-encoded CA certificate (`caFile`) + properties: + name: + description: Name of the referent + type: string + required: + - name + type: object + channel: + description: Alert channel for this provider + type: string + proxy: + description: HTTP/S address of the proxy + pattern: ^(http|https):// + type: string + secretRef: + description: Secret reference containing the provider webhook + URL using "address" as data key + properties: + name: + description: Name of the referent + type: string + required: + - name + type: object + type: + description: Type of provider + enum: + - slack + - discord + - msteams + - rocket + - generic + - github + - gitlab + - bitbucket + - azuredevops + - googlechat + - webex + - sentry + - azureeventhub + type: string + username: + description: Bot username for this provider + type: string + required: + - type + type: object + status: + description: ProviderStatus defines the observed state of Provider + properties: + conditions: + items: + description: "Condition contains details for one aspect of + the current state of this API Resource. --- This struct + is intended for direct use as an array at the field path + .status.conditions. For example, type FooStatus struct{ + \ // Represents the observations of a foo's current state. + \ // Known .status.conditions.type are: \"Available\", + \"Progressing\", and \"Degraded\" // +patchMergeKey=type + \ // +patchStrategy=merge // +listType=map // + +listMapKey=type Conditions []metav1.Condition `json:\"conditions,omitempty\" + patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` + \n // other fields }" + properties: + lastTransitionTime: + description: lastTransitionTime is the last time the condition + transitioned from one status to another. This should + be when the underlying condition changed. If that is + not known, then using the time when the API field changed + is acceptable. + format: date-time + type: string + message: + description: message is a human readable message indicating + details about the transition. This may be an empty string. + maxLength: 32768 + type: string + observedGeneration: + description: observedGeneration represents the .metadata.generation + that the condition was set based upon. For instance, + if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration + is 9, the condition is out of date with respect to the + current state of the instance. + format: int64 + minimum: 0 + type: integer + reason: + description: reason contains a programmatic identifier + indicating the reason for the condition's last transition. + Producers of specific condition types may define expected + values and meanings for this field, and whether the + values are considered a guaranteed API. The value should + be a CamelCase string. This field may not be empty. + maxLength: 1024 + minLength: 1 + pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ + type: string + status: + description: status of the condition, one of True, False, + Unknown. + enum: + - "True" + - "False" + - Unknown + type: string + type: + description: type of condition in CamelCase or in foo.example.com/CamelCase. + --- Many .condition.type values are consistent across + resources like Available, but because arbitrary conditions + can be useful (see .node.status.conditions), the ability + to deconflict is important. The regex it matches is + (dns1123SubdomainFmt/)?(qualifiedNameFmt) + maxLength: 316 + pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ + type: string + required: + - lastTransitionTime + - message + - reason + - status + - type + type: object + type: array + type: object + type: object + served: true + storage: true + subresources: + status: {} + type: raw + - name: receivers.notification.toolkit.fluxcd.io + properties: + apiVersion: apiextensions.k8s.io/v1 + kind: CustomResourceDefinition + metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.5.0 + labels: + app.kubernetes.io/instance: flux-system + name: receivers.notification.toolkit.fluxcd.io + spec: + group: notification.toolkit.fluxcd.io + names: + kind: Receiver + listKind: ReceiverList + plural: receivers + singular: receiver + scope: Namespaced + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=="Ready")].status + name: Ready + type: string + - jsonPath: .status.conditions[?(@.type=="Ready")].message + name: Status + type: string + - jsonPath: .metadata.creationTimestamp + name: Age + type: date + name: v1beta1 + schema: + openAPIV3Schema: + description: Receiver is the Schema for the receivers API + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the + latest internal value, and may reject unrecognized values. More + info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource + this object represents. Servers may infer this from the endpoint + the client submits requests to. Cannot be updated. In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: ReceiverSpec defines the desired state of Receiver + properties: + events: + description: A list of events to handle, e.g. 'push' for GitHub + or 'Push Hook' for GitLab. + items: + type: string + type: array + resources: + description: A list of resources to be notified about changes. + items: + description: CrossNamespaceObjectReference contains enough + information to let you locate the typed referenced object + at cluster level + properties: + apiVersion: + description: API version of the referent + type: string + kind: + description: Kind of the referent + enum: + - Bucket + - GitRepository + - Kustomization + - HelmRelease + - HelmChart + - HelmRepository + - ImageRepository + - ImagePolicy + - ImageUpdateAutomation + type: string + name: + description: Name of the referent + maxLength: 53 + minLength: 1 + type: string + namespace: + description: Namespace of the referent + maxLength: 53 + minLength: 1 + type: string + required: + - name + type: object + type: array + secretRef: + description: Secret reference containing the token used to validate + the payload authenticity + properties: + name: + description: Name of the referent + type: string + required: + - name + type: object + suspend: + description: This flag tells the controller to suspend subsequent + events handling. Defaults to false. + type: boolean + type: + description: Type of webhook sender, used to determine the validation + procedure and payload deserialization. + enum: + - generic + - generic-hmac + - github + - gitlab + - bitbucket + - harbor + - dockerhub + - quay + - gcr + - nexus + - acr + type: string + required: + - resources + - type + type: object + status: + description: ReceiverStatus defines the observed state of Receiver + properties: + conditions: + items: + description: "Condition contains details for one aspect of + the current state of this API Resource. --- This struct + is intended for direct use as an array at the field path + .status.conditions. For example, type FooStatus struct{ + \ // Represents the observations of a foo's current state. + \ // Known .status.conditions.type are: \"Available\", + \"Progressing\", and \"Degraded\" // +patchMergeKey=type + \ // +patchStrategy=merge // +listType=map // + +listMapKey=type Conditions []metav1.Condition `json:\"conditions,omitempty\" + patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` + \n // other fields }" + properties: + lastTransitionTime: + description: lastTransitionTime is the last time the condition + transitioned from one status to another. This should + be when the underlying condition changed. If that is + not known, then using the time when the API field changed + is acceptable. + format: date-time + type: string + message: + description: message is a human readable message indicating + details about the transition. This may be an empty string. + maxLength: 32768 + type: string + observedGeneration: + description: observedGeneration represents the .metadata.generation + that the condition was set based upon. For instance, + if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration + is 9, the condition is out of date with respect to the + current state of the instance. + format: int64 + minimum: 0 + type: integer + reason: + description: reason contains a programmatic identifier + indicating the reason for the condition's last transition. + Producers of specific condition types may define expected + values and meanings for this field, and whether the + values are considered a guaranteed API. The value should + be a CamelCase string. This field may not be empty. + maxLength: 1024 + minLength: 1 + pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ + type: string + status: + description: status of the condition, one of True, False, + Unknown. + enum: + - "True" + - "False" + - Unknown + type: string + type: + description: type of condition in CamelCase or in foo.example.com/CamelCase. + --- Many .condition.type values are consistent across + resources like Available, but because arbitrary conditions + can be useful (see .node.status.conditions), the ability + to deconflict is important. The regex it matches is + (dns1123SubdomainFmt/)?(qualifiedNameFmt) + maxLength: 316 + pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ + type: string + required: + - lastTransitionTime + - message + - reason + - status + - type + type: object + type: array + observedGeneration: + description: ObservedGeneration is the last observed generation. + format: int64 + type: integer + url: + description: Generated webhook URL in the format of '/hook/sha256sum(token+name+namespace)'. + type: string + type: object + type: object + served: true + storage: true + subresources: + status: {} + type: raw + - name: helm-controller + properties: + apiVersion: apps/v1 + kind: Deployment + metadata: + labels: + app.kubernetes.io/instance: flux-system + control-plane: controller + name: helm-controller + namespace: flux-system + spec: + replicas: 1 + selector: + matchLabels: + app: helm-controller + template: metadata: + annotations: + prometheus.io/port: "8080" + prometheus.io/scrape: "true" labels: - app.kubernetes.io/instance: flux-system - control-plane: controller - name: helm-controller - namespace: flux-system + app: helm-controller spec: - replicas: 1 - selector: - matchLabels: - app: helm-controller - template: - metadata: - annotations: - prometheus.io/port: "8080" - prometheus.io/scrape: "true" - labels: - app: helm-controller - spec: - containers: - - args: - - --events-addr=http://notification-controller/ - - --watch-all-namespaces - - --log-level=info - - --log-encoding=json - - --enable-leader-election - env: - - name: RUNTIME_NAMESPACE - valueFrom: - fieldRef: - fieldPath: metadata.namespace - image: fluxcd/helm-controller:v0.11.1 - imagePullPolicy: IfNotPresent - livenessProbe: - httpGet: - path: /healthz - port: healthz - name: manager - ports: - - containerPort: 8080 - name: http-prom - - containerPort: 9440 - name: healthz - protocol: TCP - readinessProbe: - httpGet: - path: /readyz - port: healthz - resources: - limits: - cpu: 1000m - memory: 1Gi - requests: - cpu: 100m - memory: 64Mi - securityContext: - allowPrivilegeEscalation: false - readOnlyRootFilesystem: true - volumeMounts: - - mountPath: /tmp - name: temp - serviceAccountName: sa-helm-controller - terminationGracePeriodSeconds: 600 - volumes: - - emptyDir: {} - name: temp - type: raw - - name: image-automation-controller - properties: - apiVersion: apps/v1 - kind: Deployment - metadata: - labels: - app.kubernetes.io/instance: flux-system - control-plane: controller - name: image-automation-controller - namespace: flux-system - spec: - replicas: 1 - selector: - matchLabels: - app: image-automation-controller - template: - metadata: - annotations: - prometheus.io/port: "8080" - prometheus.io/scrape: "true" - labels: - app: image-automation-controller - spec: - containers: - - args: - - --events-addr=http://notification-controller/ - - --watch-all-namespaces - - --log-level=info - - --log-encoding=json - - --enable-leader-election - env: - - name: RUNTIME_NAMESPACE - valueFrom: - fieldRef: - fieldPath: metadata.namespace - image: fluxcd/image-automation-controller:v0.14.0 - imagePullPolicy: IfNotPresent - livenessProbe: - httpGet: - path: /healthz - port: healthz - name: manager - ports: - - containerPort: 8080 - name: http-prom - - containerPort: 9440 - name: healthz - protocol: TCP - readinessProbe: - httpGet: - path: /readyz - port: healthz - resources: - limits: - cpu: 1000m - memory: 1Gi - requests: - cpu: 100m - memory: 64Mi - securityContext: - allowPrivilegeEscalation: false - readOnlyRootFilesystem: true - volumeMounts: - - mountPath: /tmp - name: temp - securityContext: - fsGroup: 1337 - serviceAccountName: sa-image-automation-controller - terminationGracePeriodSeconds: 10 - volumes: - - emptyDir: {} - name: temp - type: raw - - name: image-reflector-controller - properties: - apiVersion: apps/v1 - kind: Deployment - metadata: - labels: - app.kubernetes.io/instance: flux-system - control-plane: controller - name: image-reflector-controller - namespace: flux-system - spec: - replicas: 1 - selector: - matchLabels: - app: image-reflector-controller - template: - metadata: - annotations: - prometheus.io/port: "8080" - prometheus.io/scrape: "true" - labels: - app: image-reflector-controller - spec: - containers: - - args: - - --events-addr=http://notification-controller/ - - --watch-all-namespaces - - --log-level=info - - --log-encoding=json - - --enable-leader-election - env: - - name: RUNTIME_NAMESPACE - valueFrom: - fieldRef: - fieldPath: metadata.namespace - image: fluxcd/image-reflector-controller:v0.11.0 - imagePullPolicy: IfNotPresent - livenessProbe: - httpGet: - path: /healthz - port: healthz - name: manager - ports: - - containerPort: 8080 - name: http-prom - - containerPort: 9440 - name: healthz - protocol: TCP - readinessProbe: - httpGet: - path: /readyz - port: healthz - resources: - limits: - cpu: 1000m - memory: 1Gi - requests: - cpu: 100m - memory: 64Mi - securityContext: - allowPrivilegeEscalation: false - readOnlyRootFilesystem: true - volumeMounts: - - mountPath: /tmp - name: temp - - mountPath: /data - name: data - securityContext: - fsGroup: 1337 - serviceAccountName: sa-image-reflector-controller - terminationGracePeriodSeconds: 10 - volumes: - - emptyDir: {} - name: temp - - emptyDir: {} - name: data - type: raw - - name: kustomize-controller - properties: - apiVersion: apps/v1 - kind: Deployment - metadata: - labels: - app.kubernetes.io/instance: flux-system - control-plane: controller - name: kustomize-controller - namespace: flux-system - spec: - replicas: 1 - selector: - matchLabels: - app: kustomize-controller - template: - metadata: - annotations: - prometheus.io/port: "8080" - prometheus.io/scrape: "true" - labels: - app: kustomize-controller - spec: - containers: - - args: - - --events-addr=http://notification-controller/ - - --watch-all-namespaces - - --log-level=info - - --log-encoding=json - - --enable-leader-election - env: - - name: RUNTIME_NAMESPACE - valueFrom: - fieldRef: - fieldPath: metadata.namespace - image: fluxcd/kustomize-controller:v0.13.1 - imagePullPolicy: IfNotPresent - livenessProbe: - httpGet: - path: /healthz - port: healthz - name: manager - ports: - - containerPort: 8080 - name: http-prom - - containerPort: 9440 - name: healthz - protocol: TCP - readinessProbe: - httpGet: - path: /readyz - port: healthz - resources: - limits: - cpu: 1000m - memory: 1Gi - requests: - cpu: 100m - memory: 64Mi - securityContext: - allowPrivilegeEscalation: false - readOnlyRootFilesystem: true - volumeMounts: - - mountPath: /tmp - name: temp - securityContext: - fsGroup: 1337 - serviceAccountName: sa-kustomize-controller - terminationGracePeriodSeconds: 60 - volumes: - - emptyDir: {} - name: temp - type: raw - - name: flux-notification-controller - properties: - apiVersion: apps/v1 - kind: Deployment - metadata: - labels: - app.kubernetes.io/instance: flux-system - control-plane: controller - name: flux-notification-controller - namespace: flux-system - spec: - replicas: 1 - selector: - matchLabels: - app: notification-controller - template: - metadata: - annotations: - prometheus.io/port: "8080" - prometheus.io/scrape: "true" - labels: - app: notification-controller - spec: - containers: - - args: - - --watch-all-namespaces - - --log-level=info - - --log-encoding=json - - --enable-leader-election - env: - - name: RUNTIME_NAMESPACE - valueFrom: - fieldRef: - fieldPath: metadata.namespace - image: fluxcd/notification-controller:v0.15.0 - imagePullPolicy: IfNotPresent - livenessProbe: - httpGet: - path: /healthz - port: healthz - name: manager - ports: - - containerPort: 9090 - name: http - - containerPort: 9292 - name: http-webhook - - containerPort: 8080 - name: http-prom - - containerPort: 9440 - name: healthz - protocol: TCP - readinessProbe: - httpGet: - path: /readyz - port: healthz - resources: - limits: - cpu: 1000m - memory: 1Gi - requests: - cpu: 100m - memory: 64Mi - securityContext: - allowPrivilegeEscalation: false - readOnlyRootFilesystem: true - volumeMounts: - - mountPath: /tmp - name: temp - serviceAccountName: sa-notification-controller - terminationGracePeriodSeconds: 10 - volumes: - - emptyDir: {} - name: temp - type: raw - - name: flux-source-controller - properties: - apiVersion: apps/v1 - kind: Deployment - metadata: - labels: - app.kubernetes.io/instance: flux-system - control-plane: controller - name: flux-source-controller - namespace: flux-system - spec: - replicas: 1 - selector: - matchLabels: - app: source-controller - strategy: - type: Recreate - template: - metadata: - annotations: - prometheus.io/port: "8080" - prometheus.io/scrape: "true" - labels: - app: source-controller - spec: - containers: - - args: - - --events-addr=http://notification-controller/ - - --watch-all-namespaces - - --log-level=info - - --log-encoding=json - - --enable-leader-election - - --storage-path=/data - - --storage-adv-addr=source-controller.$(RUNTIME_NAMESPACE).svc.cluster.local. - env: - - name: RUNTIME_NAMESPACE - valueFrom: - fieldRef: - fieldPath: metadata.namespace - image: fluxcd/source-controller:v0.15.3 - imagePullPolicy: IfNotPresent - livenessProbe: - httpGet: - path: /healthz - port: healthz - name: manager - ports: - - containerPort: 9090 - name: http - - containerPort: 8080 - name: http-prom - - containerPort: 9440 - name: healthz - readinessProbe: - httpGet: - path: / - port: http - resources: - limits: - cpu: 1000m - memory: 1Gi - requests: - cpu: 50m - memory: 64Mi - securityContext: - allowPrivilegeEscalation: false - readOnlyRootFilesystem: true - volumeMounts: - - mountPath: /data - name: data - - mountPath: /tmp - name: tmp - securityContext: - fsGroup: 1337 - serviceAccountName: sa-source-controller - terminationGracePeriodSeconds: 10 - volumes: - - emptyDir: {} - name: data - - emptyDir: {} - name: tmp - type: raw - - name: allow-egress - properties: - apiVersion: networking.k8s.io/v1 - kind: NetworkPolicy - metadata: - labels: - app.kubernetes.io/instance: flux-system - name: allow-egress - namespace: flux-system - spec: - egress: - - {} - ingress: - - from: - - podSelector: {} - podSelector: {} - policyTypes: - - Ingress - - Egress - type: raw - - name: allow-scraping - properties: - apiVersion: networking.k8s.io/v1 - kind: NetworkPolicy - metadata: - labels: - app.kubernetes.io/instance: flux-system - name: allow-scraping - namespace: flux-system - spec: - ingress: - - from: - - namespaceSelector: {} + containers: + - args: + - --events-addr=http://notification-controller/ + - --watch-all-namespaces + - --log-level=info + - --log-encoding=json + - --enable-leader-election + env: + - name: RUNTIME_NAMESPACE + valueFrom: + fieldRef: + fieldPath: metadata.namespace + image: fluxcd/helm-controller:v0.11.1 + imagePullPolicy: IfNotPresent + livenessProbe: + httpGet: + path: /healthz + port: healthz + name: manager ports: - - port: 8080 + - containerPort: 8080 + name: http-prom + - containerPort: 9440 + name: healthz protocol: TCP - podSelector: {} - policyTypes: - - Ingress - type: raw - - name: allow-webhooks - properties: - apiVersion: networking.k8s.io/v1 - kind: NetworkPolicy + readinessProbe: + httpGet: + path: /readyz + port: healthz + resources: + limits: + cpu: 1000m + memory: 1Gi + requests: + cpu: 100m + memory: 64Mi + securityContext: + allowPrivilegeEscalation: false + readOnlyRootFilesystem: true + volumeMounts: + - mountPath: /tmp + name: temp + serviceAccountName: sa-helm-controller + terminationGracePeriodSeconds: 600 + volumes: + - emptyDir: {} + name: temp + type: raw + - name: image-automation-controller + properties: + apiVersion: apps/v1 + kind: Deployment + metadata: + labels: + app.kubernetes.io/instance: flux-system + control-plane: controller + name: image-automation-controller + namespace: flux-system + spec: + replicas: 1 + selector: + matchLabels: + app: image-automation-controller + template: metadata: + annotations: + prometheus.io/port: "8080" + prometheus.io/scrape: "true" labels: - app.kubernetes.io/instance: flux-system - name: allow-webhooks - namespace: flux-system + app: image-automation-controller spec: - ingress: - - from: - - namespaceSelector: {} - podSelector: - matchLabels: - app: notification-controller - policyTypes: - - Ingress - type: raw - - name: cluster-reconciler - properties: - apiVersion: rbac.authorization.k8s.io/v1 - kind: ClusterRoleBinding + containers: + - args: + - --events-addr=http://notification-controller/ + - --watch-all-namespaces + - --log-level=info + - --log-encoding=json + - --enable-leader-election + env: + - name: RUNTIME_NAMESPACE + valueFrom: + fieldRef: + fieldPath: metadata.namespace + image: fluxcd/image-automation-controller:v0.14.0 + imagePullPolicy: IfNotPresent + livenessProbe: + httpGet: + path: /healthz + port: healthz + name: manager + ports: + - containerPort: 8080 + name: http-prom + - containerPort: 9440 + name: healthz + protocol: TCP + readinessProbe: + httpGet: + path: /readyz + port: healthz + resources: + limits: + cpu: 1000m + memory: 1Gi + requests: + cpu: 100m + memory: 64Mi + securityContext: + allowPrivilegeEscalation: false + readOnlyRootFilesystem: true + volumeMounts: + - mountPath: /tmp + name: temp + securityContext: + fsGroup: 1337 + serviceAccountName: sa-image-automation-controller + terminationGracePeriodSeconds: 10 + volumes: + - emptyDir: {} + name: temp + type: raw + - name: image-reflector-controller + properties: + apiVersion: apps/v1 + kind: Deployment + metadata: + labels: + app.kubernetes.io/instance: flux-system + control-plane: controller + name: image-reflector-controller + namespace: flux-system + spec: + replicas: 1 + selector: + matchLabels: + app: image-reflector-controller + template: metadata: + annotations: + prometheus.io/port: "8080" + prometheus.io/scrape: "true" labels: - app.kubernetes.io/instance: flux-system - name: cluster-reconciler - roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: cluster-admin - subjects: - - kind: ServiceAccount - name: sa-kustomize-controller - namespace: flux-system - - kind: ServiceAccount - name: sa-helm-controller - namespace: flux-system - type: raw - - name: crd-controller - properties: - apiVersion: rbac.authorization.k8s.io/v1 - kind: ClusterRoleBinding - metadata: - labels: - app.kubernetes.io/instance: flux-system - name: crd-controller - roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: cr-crd-controller - subjects: - - kind: ServiceAccount - name: sa-kustomize-controller - namespace: flux-system - - kind: ServiceAccount - name: sa-helm-controller - namespace: flux-system - - kind: ServiceAccount - name: sa-source-controller - namespace: flux-system - - kind: ServiceAccount - name: sa-notification-controller - namespace: flux-system - - kind: ServiceAccount - name: sa-image-reflector-controller - namespace: flux-system - - kind: ServiceAccount - name: sa-image-automation-controller - namespace: flux-system - type: raw - - name: cr-crd-controller - properties: - apiVersion: rbac.authorization.k8s.io/v1 - kind: ClusterRole - metadata: - labels: - app.kubernetes.io/instance: flux-system - name: cr-crd-controller - rules: - - apiGroups: - - source.toolkit.fluxcd.io - resources: - - '*' - verbs: - - '*' - - apiGroups: - - kustomize.toolkit.fluxcd.io - resources: - - '*' - verbs: - - '*' - - apiGroups: - - helm.toolkit.fluxcd.io - resources: - - '*' - verbs: - - '*' - - apiGroups: - - notification.toolkit.fluxcd.io - resources: - - '*' - verbs: - - '*' - - apiGroups: - - image.toolkit.fluxcd.io - resources: - - '*' - verbs: - - '*' - - apiGroups: - - "" - resources: - - secrets - verbs: - - get - - list - - watch - - apiGroups: - - "" - resources: - - events - verbs: - - create - - patch - - apiGroups: - - "" - resources: - - configmaps - - configmaps/status - verbs: - - get - - list - - watch - - create - - update - - patch - - delete - - apiGroups: - - coordination.k8s.io - resources: - - leases - verbs: - - get - - list - - watch - - create - - update - - patch - - delete - type: raw - - name: sa-helm-controller - properties: - apiVersion: v1 - kind: ServiceAccount - metadata: - labels: - app.kubernetes.io/instance: flux-system - name: sa-helm-controller - namespace: flux-system - type: raw - - name: sa-image-automation-controller - properties: - apiVersion: v1 - kind: ServiceAccount - metadata: - labels: - app.kubernetes.io/instance: flux-system - name: sa-image-automation-controller - namespace: flux-system - type: raw - - name: sa-image-reflector-controller - properties: - apiVersion: v1 - kind: ServiceAccount - metadata: - labels: - app.kubernetes.io/instance: flux-system - name: sa-image-reflector-controller - namespace: flux-system - type: raw - - name: sa-kustomize-controller - properties: - apiVersion: v1 - kind: ServiceAccount - metadata: - labels: - app.kubernetes.io/instance: flux-system - name: sa-kustomize-controller - namespace: flux-system - type: raw - - name: sa-notification-controller - properties: - apiVersion: v1 - kind: ServiceAccount - metadata: - labels: - app.kubernetes.io/instance: flux-system - name: sa-notification-controller - namespace: flux-system - type: raw - - name: sa-source-controller - properties: - apiVersion: v1 - kind: ServiceAccount - metadata: - labels: - app.kubernetes.io/instance: flux-system - name: sa-source-controller - namespace: flux-system - type: raw - - name: notification-controller - properties: - apiVersion: v1 - kind: Service - metadata: - labels: - app.kubernetes.io/instance: flux-system - control-plane: controller - name: notification-controller - namespace: flux-system + app: image-reflector-controller spec: - ports: - - name: http - port: 80 - protocol: TCP - targetPort: http - selector: + containers: + - args: + - --events-addr=http://notification-controller/ + - --watch-all-namespaces + - --log-level=info + - --log-encoding=json + - --enable-leader-election + env: + - name: RUNTIME_NAMESPACE + valueFrom: + fieldRef: + fieldPath: metadata.namespace + image: fluxcd/image-reflector-controller:v0.11.0 + imagePullPolicy: IfNotPresent + livenessProbe: + httpGet: + path: /healthz + port: healthz + name: manager + ports: + - containerPort: 8080 + name: http-prom + - containerPort: 9440 + name: healthz + protocol: TCP + readinessProbe: + httpGet: + path: /readyz + port: healthz + resources: + limits: + cpu: 1000m + memory: 1Gi + requests: + cpu: 100m + memory: 64Mi + securityContext: + allowPrivilegeEscalation: false + readOnlyRootFilesystem: true + volumeMounts: + - mountPath: /tmp + name: temp + - mountPath: /data + name: data + securityContext: + fsGroup: 1337 + serviceAccountName: sa-image-reflector-controller + terminationGracePeriodSeconds: 10 + volumes: + - emptyDir: {} + name: temp + - emptyDir: {} + name: data + type: raw + - name: kustomize-controller + properties: + apiVersion: apps/v1 + kind: Deployment + metadata: + labels: + app.kubernetes.io/instance: flux-system + control-plane: controller + name: kustomize-controller + namespace: flux-system + spec: + replicas: 1 + selector: + matchLabels: + app: kustomize-controller + template: + metadata: + annotations: + prometheus.io/port: "8080" + prometheus.io/scrape: "true" + labels: + app: kustomize-controller + spec: + containers: + - args: + - --events-addr=http://notification-controller/ + - --watch-all-namespaces + - --log-level=info + - --log-encoding=json + - --enable-leader-election + env: + - name: RUNTIME_NAMESPACE + valueFrom: + fieldRef: + fieldPath: metadata.namespace + image: fluxcd/kustomize-controller:v0.13.1 + imagePullPolicy: IfNotPresent + livenessProbe: + httpGet: + path: /healthz + port: healthz + name: manager + ports: + - containerPort: 8080 + name: http-prom + - containerPort: 9440 + name: healthz + protocol: TCP + readinessProbe: + httpGet: + path: /readyz + port: healthz + resources: + limits: + cpu: 1000m + memory: 1Gi + requests: + cpu: 100m + memory: 64Mi + securityContext: + allowPrivilegeEscalation: false + readOnlyRootFilesystem: true + volumeMounts: + - mountPath: /tmp + name: temp + securityContext: + fsGroup: 1337 + serviceAccountName: sa-kustomize-controller + terminationGracePeriodSeconds: 60 + volumes: + - emptyDir: {} + name: temp + type: raw + - name: flux-notification-controller + properties: + apiVersion: apps/v1 + kind: Deployment + metadata: + labels: + app.kubernetes.io/instance: flux-system + control-plane: controller + name: flux-notification-controller + namespace: flux-system + spec: + replicas: 1 + selector: + matchLabels: + app: notification-controller + template: + metadata: + annotations: + prometheus.io/port: "8080" + prometheus.io/scrape: "true" + labels: app: notification-controller - type: ClusterIP - type: raw - - name: source-controller - properties: - apiVersion: v1 - kind: Service - metadata: - labels: - app.kubernetes.io/instance: flux-system - control-plane: controller - name: source-controller - namespace: flux-system spec: - ports: - - name: http - port: 80 - protocol: TCP - targetPort: http - selector: + containers: + - args: + - --watch-all-namespaces + - --log-level=info + - --log-encoding=json + - --enable-leader-election + env: + - name: RUNTIME_NAMESPACE + valueFrom: + fieldRef: + fieldPath: metadata.namespace + image: fluxcd/notification-controller:v0.15.0 + imagePullPolicy: IfNotPresent + livenessProbe: + httpGet: + path: /healthz + port: healthz + name: manager + ports: + - containerPort: 9090 + name: http + - containerPort: 9292 + name: http-webhook + - containerPort: 8080 + name: http-prom + - containerPort: 9440 + name: healthz + protocol: TCP + readinessProbe: + httpGet: + path: /readyz + port: healthz + resources: + limits: + cpu: 1000m + memory: 1Gi + requests: + cpu: 100m + memory: 64Mi + securityContext: + allowPrivilegeEscalation: false + readOnlyRootFilesystem: true + volumeMounts: + - mountPath: /tmp + name: temp + serviceAccountName: sa-notification-controller + terminationGracePeriodSeconds: 10 + volumes: + - emptyDir: {} + name: temp + type: raw + - name: flux-source-controller + properties: + apiVersion: apps/v1 + kind: Deployment + metadata: + labels: + app.kubernetes.io/instance: flux-system + control-plane: controller + name: flux-source-controller + namespace: flux-system + spec: + replicas: 1 + selector: + matchLabels: + app: source-controller + strategy: + type: Recreate + template: + metadata: + annotations: + prometheus.io/port: "8080" + prometheus.io/scrape: "true" + labels: app: source-controller - type: ClusterIP - type: raw - - name: webhook-receiver - properties: - apiVersion: v1 - kind: Service - metadata: - labels: - app.kubernetes.io/instance: flux-system - control-plane: controller - name: webhook-receiver - namespace: flux-system spec: - ports: - - name: http - port: 80 - protocol: TCP - targetPort: http-webhook - selector: - app: notification-controller - type: ClusterIP - type: raw - - name: helm - properties: - apiVersion: core.oam.dev/v1beta1 - kind: ComponentDefinition - metadata: - annotations: - definition.oam.dev/description: helm release is a group of K8s resources - from either git repository or helm repo - name: helm - namespace: vela-system - spec: - schematic: - cue: - template: "output: {\n\tapiVersion: \"source.toolkit.fluxcd.io/v1beta1\"\n\tmetadata: - {\n\t\tname: context.name\n\t}\n\tif parameter.repoType == \"git\" - {\n\t\tkind: \"GitRepository\"\n\t\tspec: {\n\t\t\turl: parameter.url\n\t\t\tif - parameter.git.branch != _|_ {\n\t\t\t\tref: branch: parameter.git.branch\n\t\t\t}\n\t\t\t_secret\n\t\t\t_sourceCommonArgs\n\t\t}\n\t}\n\tif - parameter.repoType == \"oss\" {\n\t\tkind: \"Bucket\"\n\t\tspec: - {\n\t\t\tendpoint: parameter.url\n\t\t\tbucketName: parameter.oss.bucketName\n\t\t\tprovider: - \ parameter.oss.provider\n\t\t\tif parameter.oss.region != _|_ - {\n\t\t\t\tregion: parameter.oss.region\n\t\t\t}\n\t\t\t_secret\n\t\t\t_sourceCommonArgs\n\t\t}\n\t}\n\tif - parameter.repoType == \"helm\" {\n\t\tkind: \"HelmRepository\"\n\t\tspec: - {\n\t\t\turl: parameter.url\n\t\t\t_secret\n\t\t\t_sourceCommonArgs\n\t\t}\n\t}\n}\n\noutputs: - release: {\n\tapiVersion: \"helm.toolkit.fluxcd.io/v2beta1\"\n\tkind: - \ \"HelmRelease\"\n\tmetadata: {\n\t\tname: context.name\n\t}\n\tspec: - {\n\t\tinterval: parameter.pullInterval\n\t\tchart: {\n\t\t\tspec: - {\n\t\t\t\tchart: parameter.chart\n\t\t\t\tversion: parameter.version\n\t\t\t\tsourceRef: - {\n\t\t\t\t\tif parameter.repoType == \"git\" {\n\t\t\t\t\t\tkind: - \"GitRepository\"\n\t\t\t\t\t}\n\t\t\t\t\tif parameter.repoType - == \"helm\" {\n\t\t\t\t\t\tkind: \"HelmRepository\"\n\t\t\t\t\t}\n\t\t\t\t\tif - parameter.repoType == \"oss\" {\n\t\t\t\t\t\tkind: \"Bucket\"\n\t\t\t\t\t}\n\t\t\t\t\tname: - \ context.name\n\t\t\t\t\tnamespace: context.namespace\n\t\t\t\t}\n\t\t\t\tinterval: - parameter.pullInterval\n\t\t\t}\n\t\t}\n\t\tif parameter.targetNamespace - != _|_ {\n\t\t\ttargetNamespace: parameter.targetNamespace\n\t\t}\n\t\tif - parameter.releaseName != _|_ {\n\t\t\treleaseName: parameter.releaseName\n\t\t}\n\t\tif - parameter.values != _|_ {\n\t\t\tvalues: parameter.values\n\t\t}\n\t}\n}\n\n_secret: - {\n\tif parameter.secretRef != _|_ {\n\t\tsecretRef: {\n\t\t\tname: - parameter.secretRef\n\t\t}\n\t}\n}\n\n_sourceCommonArgs: {\n\tinterval: - parameter.pullInterval\n\tif parameter.timeout != _|_ {\n\t\ttimeout: - parameter.timeout\n\t}\n}\n\nparameter: {\n\trepoType: *\"helm\" - | \"git\" | \"oss\"\n\t// +usage=The interval at which to check - for repository/bucket and relese updates, default to 5m\n\tpullInterval: - *\"5m\" | string\n\t// +usage=The Git or Helm repository URL, OSS - endpoint, accept HTTP/S or SSH address as git url,\n\turl: string\n\t// - +usage=The name of the secret containing authentication credentials\n\tsecretRef?: - string\n\t// +usage=The timeout for operations like download index/clone - repository, optional\n\ttimeout?: string\n\n\tgit?: {\n\t\t// +usage=The - Git reference to checkout and monitor for changes, defaults to master - branch\n\t\tbranch: string\n\t}\n\toss?: {\n\t\t// +usage=The bucket's - name, required if repoType is oss\n\t\tbucketName: string\n\t\t// - +usage=\"generic\" for Minio, Amazon S3, Google Cloud Storage, Alibaba - Cloud OSS, \"aws\" for retrieve credentials from the EC2 service - when credentials not specified, default \"generic\"\n\t\tprovider: - *\"generic\" | \"aws\"\n\t\t// +usage=The bucket region, optional\n\t\tregion?: - string\n\t}\n\n\t// +usage=1.The relative path to helm chart for - git/oss source. 2. chart name for helm resource 3. relative path - for chart package(e.g. ./charts/podinfo-1.2.3.tgz)\n\tchart: string\n\t// - +usage=Chart version\n\tversion: *\"*\" | string\n\t// +usage=The - namespace for helm chart, optional\n\ttargetNamespace?: string\n\t// - +usage=The release name\n\treleaseName?: string\n\t// +usage=Chart - values\n\tvalues?: #nestedmap\n}\n\n#nestedmap: {\n\t...\n}\n" - status: - healthPolicy: 'isHealth: len(context.outputs.release.status.conditions) - != 0 && context.outputs.release.status.conditions[0]["status"]=="True"' - workload: - type: autodetects.core.oam.dev - type: raw - - name: kustomize-json-patch - properties: - apiVersion: core.oam.dev/v1beta1 - kind: TraitDefinition - metadata: - annotations: - definition.oam.dev/description: A list of JSON6902 patch to selected - target - name: kustomize-json-patch - spec: - schematic: - cue: - template: "patch: {\n\tspec: {\n\t\tpatchesJson6902: parameter.patchesJson\n\t}\n}\n\nparameter: - {\n\t// +usage=A list of JSON6902 patch.\n\tpatchesJson: [...#jsonPatchItem]\n}\n\n// - +usage=Contains a JSON6902 patch\n#jsonPatchItem: {\n\ttarget: #selector\n\tpatch: - [...{\n\t\t// +usage=operation to perform\n\t\top: string | \"add\" - | \"remove\" | \"replace\" | \"move\" | \"copy\" | \"test\"\n\t\t// - +usage=operate path e.g. /foo/bar\n\t\tpath: string\n\t\t// +usage=specify - source path when op is copy/move\n\t\tfrom?: string\n\t\t// +usage=specify - opraation value when op is test/add/replace\n\t\tvalue?: string\n\t}]\n}\n\n// - +usage=Selector specifies a set of resources\n#selector: {\n\tgroup?: - \ string\n\tversion?: string\n\tkind?: string\n\tnamespace?: - \ string\n\tname?: string\n\tannotationSelector?: - string\n\tlabelSelector?: string\n}\n" - type: raw - - name: kustomize-patch - properties: - apiVersion: core.oam.dev/v1beta1 - kind: TraitDefinition - metadata: - annotations: - definition.oam.dev/description: A list of StrategicMerge or JSON6902 - patch to selected target - name: kustomize-patch - spec: - schematic: - cue: - template: "patch: {\n\tspec: {\n\t\tpatches: parameter.patches\n\t}\n}\nparameter: - {\n\t// +usage=a list of StrategicMerge or JSON6902 patch to selected - target\n\tpatches: [...#patchItem]\n}\n\n// +usage=Contains a strategicMerge - or JSON6902 patch\n#patchItem: {\n\t// +usage=Inline patch string, - in yaml style\n\tpatch: string\n\t// +usage=Specify the target the - patch should be applied to\n\ttarget: #selector\n}\n\n// +usage=Selector - specifies a set of resources\n#selector: {\n\tgroup?: string\n\tversion?: - \ string\n\tkind?: string\n\tnamespace?: - \ string\n\tname?: string\n\tannotationSelector?: - string\n\tlabelSelector?: string\n}\n" - type: raw - - name: kustomize - properties: - apiVersion: core.oam.dev/v1beta1 - kind: ComponentDefinition - metadata: - annotations: - definition.oam.dev/description: kustomize can fetching, building, updating - and applying Kustomize manifests from git repo. - name: kustomize - namespace: vela-system - spec: - schematic: - cue: - template: "output: {\n\tapiVersion: \"kustomize.toolkit.fluxcd.io/v1beta1\"\n\tkind: - \ \"Kustomization\"\n\tmetadata: {\n\t\tname: context.name\n - \ namespace: context.namespace\n\t}\n\tspec: {\n\t\tinterval: - parameter.pullInterval\n\t\tsourceRef: {\n\t\t\tif parameter.repoType - == \"git\" {\n\t\t\t\tkind: \"GitRepository\"\n\t\t\t}\n\t\t\tif - parameter.repoType == \"oss\" {\n\t\t\t\tkind: \"Bucket\"\n\t\t\t}\n\t\t\tname: - \ context.name\n\t\t\tnamespace: context.namespace\n\t\t}\n\t\tpath: - \ parameter.path\n\t\tprune: true\n\t\tvalidation: \"client\"\n\t}\n}\n\noutputs: - {\n repo: {\n\t apiVersion: \"source.toolkit.fluxcd.io/v1beta1\"\n\t - \ metadata: {\n\t\t name: context.name\n namespace: context.namespace\n\t - \ }\n\t if parameter.repoType == \"git\" {\n\t\t kind: \"GitRepository\"\n\t\t - \ spec: {\n\t\t\t url: parameter.url\n\t\t\t if parameter.git.branch - != _|_ {\n\t\t\t\t ref: branch: parameter.git.branch\n\t\t\t }\n\t\t\t - \ _secret\n\t\t\t _sourceCommonArgs\n\t\t }\n\t }\n\t if parameter.repoType - == \"oss\" {\n\t\t kind: \"Bucket\"\n\t\t spec: {\n\t\t\t endpoint: - \ parameter.url\n\t\t\t bucketName: parameter.oss.bucketName\n\t\t\t - \ provider: parameter.oss.provider\n\t\t\t if parameter.oss.region - != _|_ {\n\t\t\t\t region: parameter.oss.region\n\t\t\t }\n\t\t\t - \ _secret\n\t\t\t _sourceCommonArgs\n\t\t }\n\t }\n }\n\n if - parameter.imageRepository != _|_ {\n imageRepo: {\n apiVersion: - \"image.toolkit.fluxcd.io/v1beta1\"\n kind: \"ImageRepository\"\n\t - \ metadata: {\n\t\t name: context.name\n namespace: - context.namespace\n\t }\n spec: {\n image: parameter.imageRepository.image\n - \ interval: parameter.pullInterval\n if parameter.imageRepository.secretRef - != _|_ {\n secretRef: name: parameter.imageRepository.secretRef\n - \ }\n }\n }\n\n imagePolicy: {\n apiVersion: - \"image.toolkit.fluxcd.io/v1beta1\"\n kind: \"ImagePolicy\"\n\t - \ metadata: {\n\t\t name: context.name\n namespace: - context.namespace\n\t }\n spec: {\n imageRepositoryRef: - name: context.name\n policy: parameter.imageRepository.policy\n - \ if parameter.imageRepository.filterTags != _|_ {\n filterTags: - parameter.imageRepository.filterTags\n }\n }\n }\n\n - \ imageUpdate: {\n apiVersion: \"image.toolkit.fluxcd.io/v1beta1\"\n - \ kind: \"ImageUpdateAutomation\"\n\t metadata: {\n\t\t name: - context.name\n namespace: context.namespace\n\t }\n spec: - {\n interval: parameter.pullInterval\n sourceRef: - {\n kind: \"GitRepository\"\n name: context.name\n - \ }\n git: {\n checkout: ref: branch: parameter.git.branch\n - \ commit: {\n author: {\n email: - \"kubevelabot@users.noreply.github.com\"\n name: \"kubevelabot\"\n - \ }\n if parameter.imageRepository.commitMessage - != _|_ {\n messageTemplate: \"Update image automatically.\\n\" - + parameter.imageRepository.commitMessage\n }\n if - parameter.imageRepository.commitMessage == _|_ {\n messageTemplate: - \"Update image automatically.\"\n }\n }\n push: - branch: parameter.git.branch\n }\n update: {\n path:\tparameter.path\n - \ strategy: \"Setters\"\n }\n }\n }\n }\n}\n\n_secret: - {\n\tif parameter.secretRef != _|_ {\n\t\tsecretRef: {\n\t\t\tname: - parameter.secretRef\n\t\t}\n\t}\n}\n\n_sourceCommonArgs: {\n\tinterval: - parameter.pullInterval\n\tif parameter.timeout != _|_ {\n\t\ttimeout: - parameter.timeout\n\t}\n}\n\nparameter: {\n\trepoType: *\"git\" - | \"oss\"\n // +usage=The image repository for automatically update - image to git\n imageRepository?: {\n // +usage=The image url\n - \ image: string\n // +usage=The name of the secret containing - authentication credentials\n secretRef?: string\n // +usage=Policy - gives the particulars of the policy to be followed in selecting - the most recent image.\n policy: {\n // +usage=Alphabetical - set of rules to use for alphabetical ordering of the tags.\n alphabetical?: - {\n // +usage=Order specifies the sorting order of the tags.\n - \ // +usage=Given the letters of the alphabet as tags, ascending - order would select Z, and descending order would select A.\n order?: - \"asc\" | \"desc\"\n }\n // +usage=Numerical set of rules - to use for numerical ordering of the tags.\n numerical?: {\n - \ // +usage=Order specifies the sorting order of the tags.\n - \ // +usage=Given the integer values from 0 to 9 as tags, - ascending order would select 9, and descending order would select - 0.\n order: \"asc\" | \"desc\"\n }\n // +usage=SemVer - gives a semantic version range to check against the tags available.\n - \ semver?: {\n // +usage=Range gives a semver range for - the image tag; the highest version within the range that's a tag - yields the latest image.\n range: string\n }\n }\n - \ // +usage=FilterTags enables filtering for only a subset of - tags based on a set of rules. If no rules are provided, all the - tags from the repository will be ordered and compared.\n filterTags?: - {\n // +usage=Extract allows a capture group to be extracted - from the specified regular expression pattern, useful before tag - evaluation.\n extract?: string\n // +usage=Pattern specifies - a regular expression pattern used to filter for image tags.\n pattern?: - string\n }\n // +usage=The image url\n commitMessage?: - string\n }\n\t// +usage=The interval at which to check for repository/bucket - and release updates, default to 5m\n\tpullInterval: *\"5m\" | string\n\t// - +usage=The Git or Helm repository URL, OSS endpoint, accept HTTP/S - or SSH address as git url,\n\turl: string\n\t// +usage=The name - of the secret containing authentication credentials\n\tsecretRef?: - string\n\t// +usage=The timeout for operations like download index/clone - repository, optional\n\ttimeout?: string\n\tgit?: {\n\t\t// +usage=The - Git reference to checkout and monitor for changes, defaults to master - branch\n\t\tbranch: string\n\t}\n\toss?: {\n\t\t// +usage=The bucket's - name, required if repoType is oss\n\t\tbucketName: string\n\t\t// - +usage=\"generic\" for Minio, Amazon S3, Google Cloud Storage, Alibaba - Cloud OSS, \"aws\" for retrieve credentials from the EC2 service - when credentials not specified, default \"generic\"\n\t\tprovider: - *\"generic\" | \"aws\"\n\t\t// +usage=The bucket region, optional\n\t\tregion?: - string\n\t}\n\t//+usage=Path to the directory containing the kustomization.yaml - file, or the set of plain YAMLs a kustomization.yaml should be generated - for.\n\tpath: string\n} \n" - workload: - type: autodetects.core.oam.dev - type: raw - - name: kustomize-strategy-merge - properties: - apiVersion: core.oam.dev/v1beta1 - kind: TraitDefinition - metadata: - annotations: - definition.oam.dev/description: A list of strategic merge to kustomize - config - name: kustomize-strategy-merge - spec: - schematic: - cue: - template: "patch: {\n\tspec: {\n\t\tpatchesStrategicMerge: parameter.patchesStrategicMerge\n\t}\n}\n\nparameter: - {\n\t// +usage=a list of strategicmerge, defined as inline yaml - objects.\n\tpatchesStrategicMerge: [...#nestedmap]\n}\n\n#nestedmap: - {\n\t...\n}\n" - type: raw - status: - rollout: - batchRollingState: "" - currentBatch: 0 - lastTargetAppRevision: "" - rollingState: "" - upgradedReadyReplicas: 0 - upgradedReplicas: 0 - dependsOn: - - ref: + containers: + - args: + - --events-addr=http://notification-controller/ + - --watch-all-namespaces + - --log-level=info + - --log-encoding=json + - --enable-leader-election + - --storage-path=/data + - --storage-adv-addr=source-controller.$(RUNTIME_NAMESPACE).svc.cluster.local. + env: + - name: RUNTIME_NAMESPACE + valueFrom: + fieldRef: + fieldPath: metadata.namespace + image: fluxcd/source-controller:v0.15.3 + imagePullPolicy: IfNotPresent + livenessProbe: + httpGet: + path: /healthz + port: healthz + name: manager + ports: + - containerPort: 9090 + name: http + - containerPort: 8080 + name: http-prom + - containerPort: 9440 + name: healthz + readinessProbe: + httpGet: + path: / + port: http + resources: + limits: + cpu: 1000m + memory: 1Gi + requests: + cpu: 50m + memory: 64Mi + securityContext: + allowPrivilegeEscalation: false + readOnlyRootFilesystem: true + volumeMounts: + - mountPath: /data + name: data + - mountPath: /tmp + name: tmp + securityContext: + fsGroup: 1337 + serviceAccountName: sa-source-controller + terminationGracePeriodSeconds: 10 + volumes: + - emptyDir: {} + name: data + - emptyDir: {} + name: tmp + type: raw + - name: allow-egress + properties: + apiVersion: networking.k8s.io/v1 + kind: NetworkPolicy + metadata: + labels: + app.kubernetes.io/instance: flux-system + name: allow-egress + namespace: flux-system + spec: + egress: + - {} + ingress: + - from: + - podSelector: {} + podSelector: {} + policyTypes: + - Ingress + - Egress + type: raw + - name: allow-scraping + properties: + apiVersion: networking.k8s.io/v1 + kind: NetworkPolicy + metadata: + labels: + app.kubernetes.io/instance: flux-system + name: allow-scraping + namespace: flux-system + spec: + ingress: + - from: + - namespaceSelector: {} + ports: + - port: 8080 + protocol: TCP + podSelector: {} + policyTypes: + - Ingress + type: raw + - name: allow-webhooks + properties: + apiVersion: networking.k8s.io/v1 + kind: NetworkPolicy + metadata: + labels: + app.kubernetes.io/instance: flux-system + name: allow-webhooks + namespace: flux-system + spec: + ingress: + - from: + - namespaceSelector: {} + podSelector: + matchLabels: + app: notification-controller + policyTypes: + - Ingress + type: raw + - name: cluster-reconciler + properties: + apiVersion: rbac.authorization.k8s.io/v1 + kind: ClusterRoleBinding + metadata: + labels: + app.kubernetes.io/instance: flux-system + name: cluster-reconciler + roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: cluster-admin + subjects: + - kind: ServiceAccount + name: sa-kustomize-controller + namespace: flux-system + - kind: ServiceAccount + name: sa-helm-controller + namespace: flux-system + type: raw + - name: crd-controller + properties: + apiVersion: rbac.authorization.k8s.io/v1 + kind: ClusterRoleBinding + metadata: + labels: + app.kubernetes.io/instance: flux-system + name: crd-controller + roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: cr-crd-controller + subjects: + - kind: ServiceAccount + name: sa-kustomize-controller + namespace: flux-system + - kind: ServiceAccount + name: sa-helm-controller + namespace: flux-system + - kind: ServiceAccount + name: sa-source-controller + namespace: flux-system + - kind: ServiceAccount + name: sa-notification-controller + namespace: flux-system + - kind: ServiceAccount + name: sa-image-reflector-controller + namespace: flux-system + - kind: ServiceAccount + name: sa-image-automation-controller + namespace: flux-system + type: raw + - name: cr-crd-controller + properties: + apiVersion: rbac.authorization.k8s.io/v1 + kind: ClusterRole + metadata: + labels: + app.kubernetes.io/instance: flux-system + name: cr-crd-controller + rules: + - apiGroups: + - source.toolkit.fluxcd.io + resources: + - '*' + verbs: + - '*' + - apiGroups: + - kustomize.toolkit.fluxcd.io + resources: + - '*' + verbs: + - '*' + - apiGroups: + - helm.toolkit.fluxcd.io + resources: + - '*' + verbs: + - '*' + - apiGroups: + - notification.toolkit.fluxcd.io + resources: + - '*' + verbs: + - '*' + - apiGroups: + - image.toolkit.fluxcd.io + resources: + - '*' + verbs: + - '*' + - apiGroups: + - "" + resources: + - secrets + verbs: + - get + - list + - watch + - apiGroups: + - "" + resources: + - events + verbs: + - create + - patch + - apiGroups: + - "" + resources: + - configmaps + - configmaps/status + verbs: + - get + - list + - watch + - create + - update + - patch + - delete + - apiGroups: + - coordination.k8s.io + resources: + - leases + verbs: + - get + - list + - watch + - create + - update + - patch + - delete + type: raw + - name: sa-helm-controller + properties: + apiVersion: v1 + kind: ServiceAccount + metadata: + labels: + app.kubernetes.io/instance: flux-system + name: sa-helm-controller + namespace: flux-system + type: raw + - name: sa-image-automation-controller + properties: + apiVersion: v1 + kind: ServiceAccount + metadata: + labels: + app.kubernetes.io/instance: flux-system + name: sa-image-automation-controller + namespace: flux-system + type: raw + - name: sa-image-reflector-controller + properties: + apiVersion: v1 + kind: ServiceAccount + metadata: + labels: + app.kubernetes.io/instance: flux-system + name: sa-image-reflector-controller + namespace: flux-system + type: raw + - name: sa-kustomize-controller + properties: + apiVersion: v1 + kind: ServiceAccount + metadata: + labels: + app.kubernetes.io/instance: flux-system + name: sa-kustomize-controller + namespace: flux-system + type: raw + - name: sa-notification-controller + properties: + apiVersion: v1 + kind: ServiceAccount + metadata: + labels: + app.kubernetes.io/instance: flux-system + name: sa-notification-controller + namespace: flux-system + type: raw + - name: sa-source-controller + properties: + apiVersion: v1 + kind: ServiceAccount + metadata: + labels: + app.kubernetes.io/instance: flux-system + name: sa-source-controller + namespace: flux-system + type: raw + - name: notification-controller + properties: + apiVersion: v1 + kind: Service + metadata: + labels: + app.kubernetes.io/instance: flux-system + control-plane: controller + name: notification-controller + namespace: flux-system + spec: + ports: + - name: http + port: 80 + protocol: TCP + targetPort: http + selector: + app: notification-controller + type: ClusterIP + type: raw + - name: source-controller + properties: + apiVersion: v1 + kind: Service + metadata: + labels: + app.kubernetes.io/instance: flux-system + control-plane: controller + name: source-controller + namespace: flux-system + spec: + ports: + - name: http + port: 80 + protocol: TCP + targetPort: http + selector: + app: source-controller + type: ClusterIP + type: raw + - name: webhook-receiver + properties: + apiVersion: v1 + kind: Service + metadata: + labels: + app.kubernetes.io/instance: flux-system + control-plane: controller + name: webhook-receiver + namespace: flux-system + spec: + ports: + - name: http + port: 80 + protocol: TCP + targetPort: http-webhook + selector: + app: notification-controller + type: ClusterIP + type: raw + - name: helm + properties: apiVersion: core.oam.dev/v1beta1 - kind: Initializer - name: ns-flux-system - namespace: vela-system + kind: ComponentDefinition + metadata: + annotations: + definition.oam.dev/description: helm release is a group of K8s resources + from either git repository or helm repo + name: helm + namespace: vela-system + spec: + schematic: + cue: + template: "output: {\n\tapiVersion: \"source.toolkit.fluxcd.io/v1beta1\"\n\tmetadata: + {\n\t\tname: context.name\n\t}\n\tif parameter.repoType == \"git\" {\n\t\tkind: + \"GitRepository\"\n\t\tspec: {\n\t\t\turl: parameter.url\n\t\t\tif parameter.git.branch + != _|_ {\n\t\t\t\tref: branch: parameter.git.branch\n\t\t\t}\n\t\t\t_secret\n\t\t\t_sourceCommonArgs\n\t\t}\n\t}\n\tif + parameter.repoType == \"oss\" {\n\t\tkind: \"Bucket\"\n\t\tspec: {\n\t\t\tendpoint: + \ parameter.url\n\t\t\tbucketName: parameter.oss.bucketName\n\t\t\tprovider: + \ parameter.oss.provider\n\t\t\tif parameter.oss.region != _|_ {\n\t\t\t\tregion: + parameter.oss.region\n\t\t\t}\n\t\t\t_secret\n\t\t\t_sourceCommonArgs\n\t\t}\n\t}\n\tif + parameter.repoType == \"helm\" {\n\t\tkind: \"HelmRepository\"\n\t\tspec: + {\n\t\t\turl: parameter.url\n\t\t\t_secret\n\t\t\t_sourceCommonArgs\n\t\t}\n\t}\n}\n\noutputs: + release: {\n\tapiVersion: \"helm.toolkit.fluxcd.io/v2beta1\"\n\tkind: + \ \"HelmRelease\"\n\tmetadata: {\n\t\tname: context.name\n\t}\n\tspec: + {\n\t\tinterval: parameter.pullInterval\n\t\tchart: {\n\t\t\tspec: {\n\t\t\t\tchart: + \ parameter.chart\n\t\t\t\tversion: parameter.version\n\t\t\t\tsourceRef: + {\n\t\t\t\t\tif parameter.repoType == \"git\" {\n\t\t\t\t\t\tkind: \"GitRepository\"\n\t\t\t\t\t}\n\t\t\t\t\tif + parameter.repoType == \"helm\" {\n\t\t\t\t\t\tkind: \"HelmRepository\"\n\t\t\t\t\t}\n\t\t\t\t\tif + parameter.repoType == \"oss\" {\n\t\t\t\t\t\tkind: \"Bucket\"\n\t\t\t\t\t}\n\t\t\t\t\tname: + \ context.name\n\t\t\t\t\tnamespace: context.namespace\n\t\t\t\t}\n\t\t\t\tinterval: + parameter.pullInterval\n\t\t\t}\n\t\t}\n\t\tif parameter.targetNamespace + != _|_ {\n\t\t\ttargetNamespace: parameter.targetNamespace\n\t\t}\n\t\tif + parameter.releaseName != _|_ {\n\t\t\treleaseName: parameter.releaseName\n\t\t}\n\t\tif + parameter.values != _|_ {\n\t\t\tvalues: parameter.values\n\t\t}\n\t}\n}\n\n_secret: + {\n\tif parameter.secretRef != _|_ {\n\t\tsecretRef: {\n\t\t\tname: + parameter.secretRef\n\t\t}\n\t}\n}\n\n_sourceCommonArgs: {\n\tinterval: + parameter.pullInterval\n\tif parameter.timeout != _|_ {\n\t\ttimeout: + parameter.timeout\n\t}\n}\n\nparameter: {\n\trepoType: *\"helm\" | \"git\" + | \"oss\"\n\t// +usage=The interval at which to check for repository/bucket + and relese updates, default to 5m\n\tpullInterval: *\"5m\" | string\n\t// + +usage=The Git or Helm repository URL, OSS endpoint, accept HTTP/S or + SSH address as git url,\n\turl: string\n\t// +usage=The name of the + secret containing authentication credentials\n\tsecretRef?: string\n\t// + +usage=The timeout for operations like download index/clone repository, + optional\n\ttimeout?: string\n\n\tgit?: {\n\t\t// +usage=The Git reference + to checkout and monitor for changes, defaults to master branch\n\t\tbranch: + string\n\t}\n\toss?: {\n\t\t// +usage=The bucket's name, required if + repoType is oss\n\t\tbucketName: string\n\t\t// +usage=\"generic\" for + Minio, Amazon S3, Google Cloud Storage, Alibaba Cloud OSS, \"aws\" for + retrieve credentials from the EC2 service when credentials not specified, + default \"generic\"\n\t\tprovider: *\"generic\" | \"aws\"\n\t\t// +usage=The + bucket region, optional\n\t\tregion?: string\n\t}\n\n\t// +usage=1.The + relative path to helm chart for git/oss source. 2. chart name for helm + resource 3. relative path for chart package(e.g. ./charts/podinfo-1.2.3.tgz)\n\tchart: + string\n\t// +usage=Chart version\n\tversion: *\"*\" | string\n\t// + +usage=The namespace for helm chart, optional\n\ttargetNamespace?: string\n\t// + +usage=The release name\n\treleaseName?: string\n\t// +usage=Chart values\n\tvalues?: + #nestedmap\n}\n\n#nestedmap: {\n\t...\n}\n" + status: + healthPolicy: 'isHealth: len(context.outputs.release.status.conditions) + != 0 && context.outputs.release.status.conditions[0]["status"]=="True"' + workload: + type: autodetects.core.oam.dev + type: raw + - name: kustomize-json-patch + properties: + apiVersion: core.oam.dev/v1beta1 + kind: TraitDefinition + metadata: + annotations: + definition.oam.dev/description: A list of JSON6902 patch to selected target + name: kustomize-json-patch + spec: + schematic: + cue: + template: "patch: {\n\tspec: {\n\t\tpatchesJson6902: parameter.patchesJson\n\t}\n}\n\nparameter: + {\n\t// +usage=A list of JSON6902 patch.\n\tpatchesJson: [...#jsonPatchItem]\n}\n\n// + +usage=Contains a JSON6902 patch\n#jsonPatchItem: {\n\ttarget: #selector\n\tpatch: + [...{\n\t\t// +usage=operation to perform\n\t\top: string | \"add\" + | \"remove\" | \"replace\" | \"move\" | \"copy\" | \"test\"\n\t\t// + +usage=operate path e.g. /foo/bar\n\t\tpath: string\n\t\t// +usage=specify + source path when op is copy/move\n\t\tfrom?: string\n\t\t// +usage=specify + opraation value when op is test/add/replace\n\t\tvalue?: string\n\t}]\n}\n\n// + +usage=Selector specifies a set of resources\n#selector: {\n\tgroup?: + \ string\n\tversion?: string\n\tkind?: string\n\tnamespace?: + \ string\n\tname?: string\n\tannotationSelector?: + string\n\tlabelSelector?: string\n}\n" + type: raw + - name: kustomize-patch + properties: + apiVersion: core.oam.dev/v1beta1 + kind: TraitDefinition + metadata: + annotations: + definition.oam.dev/description: A list of StrategicMerge or JSON6902 patch + to selected target + name: kustomize-patch + spec: + schematic: + cue: + template: "patch: {\n\tspec: {\n\t\tpatches: parameter.patches\n\t}\n}\nparameter: + {\n\t// +usage=a list of StrategicMerge or JSON6902 patch to selected + target\n\tpatches: [...#patchItem]\n}\n\n// +usage=Contains a strategicMerge + or JSON6902 patch\n#patchItem: {\n\t// +usage=Inline patch string, in + yaml style\n\tpatch: string\n\t// +usage=Specify the target the patch + should be applied to\n\ttarget: #selector\n}\n\n// +usage=Selector specifies + a set of resources\n#selector: {\n\tgroup?: string\n\tversion?: + \ string\n\tkind?: string\n\tnamespace?: string\n\tname?: + \ string\n\tannotationSelector?: string\n\tlabelSelector?: + \ string\n}\n" + type: raw + - name: kustomize + properties: + apiVersion: core.oam.dev/v1beta1 + kind: ComponentDefinition + metadata: + annotations: + definition.oam.dev/description: kustomize can fetching, building, updating + and applying Kustomize manifests from git repo. + name: kustomize + namespace: vela-system + spec: + schematic: + cue: + template: "output: {\n\tapiVersion: \"kustomize.toolkit.fluxcd.io/v1beta1\"\n\tkind: + \ \"Kustomization\"\n\tmetadata: {\n\t\tname: context.name\n namespace: + context.namespace\n\t}\n\tspec: {\n\t\tinterval: parameter.pullInterval\n\t\tsourceRef: + {\n\t\t\tif parameter.repoType == \"git\" {\n\t\t\t\tkind: \"GitRepository\"\n\t\t\t}\n\t\t\tif + parameter.repoType == \"oss\" {\n\t\t\t\tkind: \"Bucket\"\n\t\t\t}\n\t\t\tname: + \ context.name\n\t\t\tnamespace: context.namespace\n\t\t}\n\t\tpath: + \ parameter.path\n\t\tprune: true\n\t\tvalidation: \"client\"\n\t}\n}\n\noutputs: + {\n repo: {\n\t apiVersion: \"source.toolkit.fluxcd.io/v1beta1\"\n\t + \ metadata: {\n\t\t name: context.name\n namespace: context.namespace\n\t + \ }\n\t if parameter.repoType == \"git\" {\n\t\t kind: \"GitRepository\"\n\t\t + \ spec: {\n\t\t\t url: parameter.url\n\t\t\t if parameter.git.branch + != _|_ {\n\t\t\t\t ref: branch: parameter.git.branch\n\t\t\t }\n\t\t\t + \ _secret\n\t\t\t _sourceCommonArgs\n\t\t }\n\t }\n\t if parameter.repoType + == \"oss\" {\n\t\t kind: \"Bucket\"\n\t\t spec: {\n\t\t\t endpoint: + \ parameter.url\n\t\t\t bucketName: parameter.oss.bucketName\n\t\t\t + \ provider: parameter.oss.provider\n\t\t\t if parameter.oss.region + != _|_ {\n\t\t\t\t region: parameter.oss.region\n\t\t\t }\n\t\t\t + \ _secret\n\t\t\t _sourceCommonArgs\n\t\t }\n\t }\n }\n\n if parameter.imageRepository + != _|_ {\n imageRepo: {\n apiVersion: \"image.toolkit.fluxcd.io/v1beta1\"\n + \ kind: \"ImageRepository\"\n\t metadata: {\n\t\t name: context.name\n + \ namespace: context.namespace\n\t }\n spec: {\n image: + parameter.imageRepository.image\n interval: parameter.pullInterval\n + \ if parameter.imageRepository.secretRef != _|_ {\n secretRef: + name: parameter.imageRepository.secretRef\n }\n }\n }\n\n + \ imagePolicy: {\n apiVersion: \"image.toolkit.fluxcd.io/v1beta1\"\n + \ kind: \"ImagePolicy\"\n\t metadata: {\n\t\t name: context.name\n + \ namespace: context.namespace\n\t }\n spec: {\n imageRepositoryRef: + name: context.name\n policy: parameter.imageRepository.policy\n + \ if parameter.imageRepository.filterTags != _|_ {\n filterTags: + parameter.imageRepository.filterTags\n }\n }\n }\n\n + \ imageUpdate: {\n apiVersion: \"image.toolkit.fluxcd.io/v1beta1\"\n + \ kind: \"ImageUpdateAutomation\"\n\t metadata: {\n\t\t name: + context.name\n namespace: context.namespace\n\t }\n spec: + {\n interval: parameter.pullInterval\n sourceRef: {\n + \ kind: \"GitRepository\"\n name: context.name\n }\n + \ git: {\n checkout: ref: branch: parameter.git.branch\n + \ commit: {\n author: {\n email: \"kubevelabot@users.noreply.github.com\"\n + \ name: \"kubevelabot\"\n }\n if parameter.imageRepository.commitMessage + != _|_ {\n messageTemplate: \"Update image automatically.\\n\" + + parameter.imageRepository.commitMessage\n }\n if + parameter.imageRepository.commitMessage == _|_ {\n messageTemplate: + \"Update image automatically.\"\n }\n }\n push: + branch: parameter.git.branch\n }\n update: {\n path:\tparameter.path\n + \ strategy: \"Setters\"\n }\n }\n }\n }\n}\n\n_secret: + {\n\tif parameter.secretRef != _|_ {\n\t\tsecretRef: {\n\t\t\tname: + parameter.secretRef\n\t\t}\n\t}\n}\n\n_sourceCommonArgs: {\n\tinterval: + parameter.pullInterval\n\tif parameter.timeout != _|_ {\n\t\ttimeout: + parameter.timeout\n\t}\n}\n\nparameter: {\n\trepoType: *\"git\" | \"oss\"\n + \ // +usage=The image repository for automatically update image to git\n + \ imageRepository?: {\n // +usage=The image url\n image: string\n + \ // +usage=The name of the secret containing authentication credentials\n + \ secretRef?: string\n // +usage=Policy gives the particulars of + the policy to be followed in selecting the most recent image.\n policy: + {\n // +usage=Alphabetical set of rules to use for alphabetical + ordering of the tags.\n alphabetical?: {\n // +usage=Order + specifies the sorting order of the tags.\n // +usage=Given the + letters of the alphabet as tags, ascending order would select Z, and + descending order would select A.\n order?: \"asc\" | \"desc\"\n + \ }\n // +usage=Numerical set of rules to use for numerical + ordering of the tags.\n numerical?: {\n // +usage=Order + specifies the sorting order of the tags.\n // +usage=Given the + integer values from 0 to 9 as tags, ascending order would select 9, + and descending order would select 0.\n order: \"asc\" | \"desc\"\n + \ }\n // +usage=SemVer gives a semantic version range to check + against the tags available.\n semver?: {\n // +usage=Range + gives a semver range for the image tag; the highest version within the + range that's a tag yields the latest image.\n range: string\n + \ }\n }\n // +usage=FilterTags enables filtering for only + a subset of tags based on a set of rules. If no rules are provided, + all the tags from the repository will be ordered and compared.\n filterTags?: + {\n // +usage=Extract allows a capture group to be extracted from + the specified regular expression pattern, useful before tag evaluation.\n + \ extract?: string\n // +usage=Pattern specifies a regular + expression pattern used to filter for image tags.\n pattern?: string\n + \ }\n // +usage=The image url\n commitMessage?: string\n }\n\t// + +usage=The interval at which to check for repository/bucket and release + updates, default to 5m\n\tpullInterval: *\"5m\" | string\n\t// +usage=The + Git or Helm repository URL, OSS endpoint, accept HTTP/S or SSH address + as git url,\n\turl: string\n\t// +usage=The name of the secret containing + authentication credentials\n\tsecretRef?: string\n\t// +usage=The timeout + for operations like download index/clone repository, optional\n\ttimeout?: + string\n\tgit?: {\n\t\t// +usage=The Git reference to checkout and monitor + for changes, defaults to master branch\n\t\tbranch: string\n\t}\n\toss?: + {\n\t\t// +usage=The bucket's name, required if repoType is oss\n\t\tbucketName: + string\n\t\t// +usage=\"generic\" for Minio, Amazon S3, Google Cloud + Storage, Alibaba Cloud OSS, \"aws\" for retrieve credentials from the + EC2 service when credentials not specified, default \"generic\"\n\t\tprovider: + *\"generic\" | \"aws\"\n\t\t// +usage=The bucket region, optional\n\t\tregion?: + string\n\t}\n\t//+usage=Path to the directory containing the kustomization.yaml + file, or the set of plain YAMLs a kustomization.yaml should be generated + for.\n\tpath: string\n} \n" + workload: + type: autodetects.core.oam.dev + type: raw + - name: kustomize-strategy-merge + properties: + apiVersion: core.oam.dev/v1beta1 + kind: TraitDefinition + metadata: + annotations: + definition.oam.dev/description: A list of strategic merge to kustomize config + name: kustomize-strategy-merge + spec: + schematic: + cue: + template: "patch: {\n\tspec: {\n\t\tpatchesStrategicMerge: parameter.patchesStrategicMerge\n\t}\n}\n\nparameter: + {\n\t// +usage=a list of strategicmerge, defined as inline yaml objects.\n\tpatchesStrategicMerge: + [...#nestedmap]\n}\n\n#nestedmap: {\n\t...\n}\n" + type: raw + workflow: + steps: + - name: apply-ns + properties: + component: ns-flux-system + type: apply-component + - name: apply-resources + type: apply-remaining status: - observedGeneration: 0 + rollout: + batchRollingState: "" + currentBatch: 0 + lastTargetAppRevision: "" + rollingState: "" + upgradedReadyReplicas: 0 + upgradedReplicas: 0 kind: ConfigMap metadata: annotations: diff --git a/charts/vela-core/templates/addons/istio.yaml b/charts/vela-core/templates/addons/istio.yaml index 0abab96f5..920495045 100644 --- a/charts/vela-core/templates/addons/istio.yaml +++ b/charts/vela-core/templates/addons/istio.yaml @@ -1,8 +1,8 @@ apiVersion: v1 data: - initializer: | + application: | apiVersion: core.oam.dev/v1beta1 - kind: Initializer + kind: Application metadata: annotations: addons.oam.dev/description: istio Controller is a Kubernetes Controller for manage @@ -10,246 +10,248 @@ data: name: istio namespace: istio-system spec: - appTemplate: - spec: - components: - - name: istio - properties: - chart: istio - repoType: helm - url: https://charts.kubevela.net/addons - version: 1.11.1 - type: helm - - name: canary-rollout - properties: - apiVersion: core.oam.dev/v1beta1 - kind: WorkflowStepDefinition - metadata: - name: canary-rollout - namespace: vela-system - spec: - schematic: - cue: - template: |- - import ("vela/op") + components: + - name: ns-istio-system + properties: + apiVersion: v1 + kind: Namespace + metadata: + name: istio-system + type: raw + - name: istio + properties: + chart: istio + repoType: helm + url: https://charts.kubevela.net/addons + version: 1.11.1 + type: helm + - name: canary-rollout + properties: + apiVersion: core.oam.dev/v1beta1 + kind: WorkflowStepDefinition + metadata: + name: canary-rollout + namespace: vela-system + spec: + schematic: + cue: + template: |- + import ("vela/op") - parameter: { - batchPartition: int - traffic: weightedTargets: [...{ - revision: string - weight: int + parameter: { + batchPartition: int + traffic: weightedTargets: [...{ + revision: string + weight: int + }] + } + + comps__: op.#Load + compNames__: [ for name, c in comps__.value {name}] + comp__: compNames__[0] + + apply: op.#ApplyComponent & { + value: comps__.value[comp__] + patch: { + traits: "rollout": { + spec: rolloutPlan: batchPartition: parameter.batchPartition + } + + traits: "virtualService": { + spec: + // +patchStrategy=retainKeys + http: [ + { + route: [ + for i, t in parameter.traffic.weightedTargets { + destination: { + host: comp__ + subset: t.revision + } + weight: t.weight + }] + }, + ] + } + + traits: "destinationRule": { + // +patchStrategy=retainKeys + spec: { + host: comp__ + subsets: [ + for i, t in parameter.traffic.weightedTargets { + name: t.revision + labels: {"app.oam.dev/revision": t.revision} + }, + ]} + } + } + } + + applyRemaining: op.#ApplyRemaining & { + exceptions: [comp__] + } + type: raw + - name: istio-gateway + properties: + apiVersion: core.oam.dev/v1beta1 + kind: TraitDefinition + metadata: + annotations: + definition.oam.dev/description: use istio to manage in-cluster traffic + name: istio-gateway + namespace: vela-system + spec: + appliesToWorkloads: + - deployments.apps + podDisruptive: true + schematic: + cue: + template: "\noutputs: gateway: {\n apiVersion: \"networking.istio.io/v1alpha3\"\n + \ kind: \"Gateway\"\n metadata: {\n name: context.name\n + \ namespace: context.namespace\n }\n spec: {\n selector: + {\n istio: parameter.gateway\n }\n servers: [{\n hosts: + parameter.hosts\n port: {\n name: \"http\"\n number: + 80\n protocol: \"HTTP\"\n }\n }]\n }\n}\n\noutputs: + virtualService: {\n apiVersion: \"networking.istio.io/v1alpha3\"\n + \ kind: \"VirtualService\"\n metadata: {\n name: context.name\n + \ namespace: context.namespace\n }\n spec: {\n gateways: + [context.name]\n hosts: parameter.hosts\n http:[{\n match: + [ for i, u in parameter.match { uri: u} ]\n route: [{destination: + {\n host: context.name\n port: number: parameter.port\n + \ }}]\n }]\n }\n}\n\nparameter: {\n hosts: [string]\n + \ gateway: *\"ingressgateway\"|string\n match: [...#uri]\n port: + int\n}\n\n#uri: {\n exact?: string\n prefix?: string\n} \n" + type: raw + - name: canary-rollback + properties: + apiVersion: core.oam.dev/v1beta1 + kind: WorkflowStepDefinition + metadata: + name: canary-rollback + namespace: vela-system + spec: + schematic: + cue: + template: |- + import ("vela/op") + + parameter: {...} + + comps: op.#Load + compNames: [ for name, c in comps.value {name}] + firstcomp: compNames[0] + + rolloutObj: op.#Read & { + value: { + apiVersion: "standard.oam.dev/v1alpha1" + kind: "Rollout" + metadata: { + name: firstcomp + namespace: context.namespace + } + } + } + + _sourceRevision: rolloutObj.value.status.LastSourceRevision + + apply: op.#ApplyComponent & { + value: comps.value[firstcomp] + patch: { + traits: "rollout": { + spec: { + targetRevisionName: _sourceRevision + } + } + + traits: "virtualService": { + spec: + // +patchStrategy=retainKeys + http: [ + { + route: [{ + destination: { + host: firstcomp + subset: _sourceRevision + } + weight: 100 }] + }, + ] } - comps__: op.#Load - compNames__: [ for name, c in comps__.value {name}] - comp__: compNames__[0] - - apply: op.#ApplyComponent & { - value: comps__.value[comp__] - patch: { - traits: "rollout": { - spec: rolloutPlan: batchPartition: parameter.batchPartition - } - - traits: "virtualService": { - spec: - // +patchStrategy=retainKeys - http: [ - { - route: [ - for i, t in parameter.traffic.weightedTargets { - destination: { - host: comp__ - subset: t.revision - } - weight: t.weight - }] - }, - ] - } - - traits: "destinationRule": { - // +patchStrategy=retainKeys - spec: { - host: comp__ - subsets: [ - for i, t in parameter.traffic.weightedTargets { - name: t.revision - labels: {"app.oam.dev/revision": t.revision} - }, - ]} - } - } - } - - applyRemaining: op.#ApplyRemaining & { - exceptions: [comp__] - } - type: raw - - name: istio-gateway - properties: - apiVersion: core.oam.dev/v1beta1 - kind: TraitDefinition - metadata: - annotations: - definition.oam.dev/description: use istio to manage in-cluster traffic - name: istio-gateway - namespace: vela-system - spec: - appliesToWorkloads: - - deployments.apps - podDisruptive: true - schematic: - cue: - template: "\noutputs: gateway: {\n apiVersion: \"networking.istio.io/v1alpha3\"\n - \ kind: \"Gateway\"\n metadata: {\n name: context.name\n - \ namespace: context.namespace\n }\n spec: {\n selector: - {\n istio: parameter.gateway\n }\n servers: [{\n - \ hosts: parameter.hosts\n port: {\n name: - \"http\"\n number: 80\n protocol: \"HTTP\"\n - \ }\n }]\n }\n}\n\noutputs: virtualService: {\n apiVersion: - \"networking.istio.io/v1alpha3\"\n kind: \"VirtualService\"\n - \ metadata: {\n name: context.name\n namespace: - context.namespace\n }\n spec: {\n gateways: [context.name]\n - \ hosts: parameter.hosts\n http:[{\n match: [ for - i, u in parameter.match { uri: u} ]\n route: [{destination: - {\n host: context.name\n port: number: parameter.port\n - \ }}]\n }]\n }\n}\n\nparameter: {\n hosts: [string]\n - \ gateway: *\"ingressgateway\"|string\n match: [...#uri]\n - \ port: int\n}\n\n#uri: {\n exact?: string\n prefix?: string\n} - \n" - type: raw - - name: canary-rollback - properties: - apiVersion: core.oam.dev/v1beta1 - kind: WorkflowStepDefinition - metadata: - name: canary-rollback - namespace: vela-system - spec: - schematic: - cue: - template: |- - import ("vela/op") - - parameter: {...} - - comps: op.#Load - compNames: [ for name, c in comps.value {name}] - firstcomp: compNames[0] - - rolloutObj: op.#Read & { - value: { - apiVersion: "standard.oam.dev/v1alpha1" - kind: "Rollout" - metadata: { - name: firstcomp - namespace: context.namespace - } + traits: "destinationRule": { + // +patchStrategy=retainKeys + spec: { + host: firstcomp + subsets: [ + { + name: _sourceRevision + labels: {"app.oam.dev/revision": _sourceRevision} + }, + ] } } + } + } - _sourceRevision: rolloutObj.value.status.LastSourceRevision - - apply: op.#ApplyComponent & { - value: comps.value[firstcomp] - patch: { - traits: "rollout": { - spec: { - targetRevisionName: _sourceRevision - } - } - - traits: "virtualService": { - spec: - // +patchStrategy=retainKeys - http: [ - { - route: [{ - destination: { - host: firstcomp - subset: _sourceRevision - } - weight: 100 - }] - }, - ] - } - - traits: "destinationRule": { - // +patchStrategy=retainKeys - spec: { - host: firstcomp - subsets: [ - { - name: _sourceRevision - labels: {"app.oam.dev/revision": _sourceRevision} - }, - ] - } - } - } - } - - applyRemaining: op.#ApplyRemaining & { - exceptions: [firstcomp] - } - type: raw - - name: canary-traffic - properties: - apiVersion: core.oam.dev/v1beta1 - kind: TraitDefinition - metadata: - annotations: - definition.oam.dev/description: use istio to manage traffic - name: canary-traffic - namespace: vela-system - spec: - appliesToWorkloads: - - deployments.apps - podDisruptive: true - schematic: - cue: - template: "outputs: service: {\n\t\tapiVersion: \"v1\"\n\t\tkind: - \ \"Service\"\n\t\tmetadata: name: context.name\n\t\tspec: - {\n\t\t\tselector: \"app.oam.dev/component\": context.name\n\t\t\tports: - [\n\t\t\t\tfor p in parameter.port {\n\t\t\t\t\tport: p\n\t\t\t\t\ttargetPort: - p\n\t\t\t\t},\n\t\t\t]\n\t\t\ttype: \"ClusterIP\"\n\t\t}\n}\n\noutputs: - virtualService: {\n apiVersion: \"networking.istio.io/v1alpha3\"\n - \ kind: \"VirtualService\"\n metadata: {\n name: context.name\n - \ namespace: context.namespace\n }\n spec: {\n hosts: - [context.name]\n http: [{route: [\n {destination: {\n - \ host: context.name\n port: {number: parameter.port[0]}\n - \ }}]}]\n }\n}\n\noutputs: destinationRule: {\n apiVersion: - \"networking.istio.io/v1alpha3\"\n kind: \"DestinationRule\"\n - \ metadata: {\n name: context.name\n namespace: - context.namespace\n }\n spec: {\n host: context.name\n - \ subsets: [{\n name: context.revision\n labels: - {\"app.oam.dev/revision\": context.revision}\n }]\n }\n}\n\nparameter: - {\n port: [int]\n} \n" - type: raw - status: - rollout: - batchRollingState: "" - currentBatch: 0 - lastTargetAppRevision: "" - rollingState: "" - upgradedReadyReplicas: 0 - upgradedReplicas: 0 - dependsOn: - - ref: + applyRemaining: op.#ApplyRemaining & { + exceptions: [firstcomp] + } + type: raw + - name: canary-traffic + properties: apiVersion: core.oam.dev/v1beta1 - kind: Initializer - name: fluxcd - namespace: vela-system - - ref: - apiVersion: core.oam.dev/v1beta1 - kind: Initializer - name: ns-istio-system - namespace: vela-system + kind: TraitDefinition + metadata: + annotations: + definition.oam.dev/description: use istio to manage traffic + name: canary-traffic + namespace: vela-system + spec: + appliesToWorkloads: + - deployments.apps + podDisruptive: true + schematic: + cue: + template: "outputs: service: {\n\t\tapiVersion: \"v1\"\n\t\tkind: \"Service\"\n\t\tmetadata: + name: context.name\n\t\tspec: {\n\t\t\tselector: \"app.oam.dev/component\": + context.name\n\t\t\tports: [\n\t\t\t\tfor p in parameter.port {\n\t\t\t\t\tport: + \ p\n\t\t\t\t\ttargetPort: p\n\t\t\t\t},\n\t\t\t]\n\t\t\ttype: + \"ClusterIP\"\n\t\t}\n}\n\noutputs: virtualService: {\n apiVersion: + \"networking.istio.io/v1alpha3\"\n kind: \"VirtualService\"\n metadata: + {\n name: context.name\n namespace: context.namespace\n + \ }\n spec: {\n hosts: [context.name]\n http: [{route: + [\n {destination: {\n host: context.name\n port: + {number: parameter.port[0]}\n }}]}]\n }\n}\n\noutputs: destinationRule: + {\n apiVersion: \"networking.istio.io/v1alpha3\"\n kind: + \"DestinationRule\"\n metadata: {\n name: context.name\n + \ namespace: context.namespace\n }\n spec: {\n + \ host: context.name\n subsets: [{\n name: + context.revision\n labels: {\"app.oam.dev/revision\": context.revision}\n + \ }]\n }\n}\n\nparameter: {\n port: [int]\n} \n" + type: raw + workflow: + steps: + - name: checking-depends-on + properties: + name: fluxcd + namespace: vela-system + type: depends-on-app + - name: apply-ns + properties: + component: ns-istio-system + type: apply-component + - name: apply-resources + type: apply-remaining status: - observedGeneration: 0 + rollout: + batchRollingState: "" + currentBatch: 0 + lastTargetAppRevision: "" + rollingState: "" + upgradedReadyReplicas: 0 + upgradedReplicas: 0 kind: ConfigMap metadata: annotations: diff --git a/charts/vela-core/templates/addons/keda.yaml b/charts/vela-core/templates/addons/keda.yaml index d34f7a244..15450582c 100644 --- a/charts/vela-core/templates/addons/keda.yaml +++ b/charts/vela-core/templates/addons/keda.yaml @@ -1,39 +1,38 @@ apiVersion: v1 data: - initializer: | + application: | apiVersion: core.oam.dev/v1beta1 - kind: Initializer + kind: Application metadata: annotations: addons.oam.dev/description: KEDA is a Kubernetes-based Event Driven Autoscaler. name: keda namespace: vela-system spec: - appTemplate: - spec: - components: - - name: keda - properties: - chart: keda - repoType: helm - url: https://kedacore.github.io/charts - type: helm - status: - rollout: - batchRollingState: "" - currentBatch: 0 - lastTargetAppRevision: "" - rollingState: "" - upgradedReadyReplicas: 0 - upgradedReplicas: 0 - dependsOn: - - ref: - apiVersion: core.oam.dev/v1beta1 - kind: Initializer - name: fluxcd - namespace: vela-system + components: + - name: keda + properties: + chart: keda + repoType: helm + url: https://kedacore.github.io/charts + type: helm + workflow: + steps: + - name: checking-depends-on + properties: + name: fluxcd + namespace: vela-system + type: depends-on-app + - name: apply-resources + type: apply-application status: - observedGeneration: 0 + rollout: + batchRollingState: "" + currentBatch: 0 + lastTargetAppRevision: "" + rollingState: "" + upgradedReadyReplicas: 0 + upgradedReplicas: 0 kind: ConfigMap metadata: annotations: diff --git a/charts/vela-core/templates/addons/kruise.yaml b/charts/vela-core/templates/addons/kruise.yaml index 5c7956008..b49110830 100644 --- a/charts/vela-core/templates/addons/kruise.yaml +++ b/charts/vela-core/templates/addons/kruise.yaml @@ -1,8 +1,8 @@ apiVersion: v1 data: - initializer: | + application: | apiVersion: core.oam.dev/v1beta1 - kind: Initializer + kind: Application metadata: annotations: addons.oam.dev/description: Kruise is a Kubernetes extended suite for application @@ -10,182 +10,173 @@ data: name: kruise namespace: vela-system spec: - appTemplate: - spec: - components: - - name: kruise - properties: - chart: ./charts/kruise/v0.9.0 - git: - branch: master - repoType: git - url: https://github.com/openkruise/kruise - values: - featureGates: PreDownloadImageForInPlaceUpdate=true - type: helm - - name: cloneset - properties: - apiVersion: core.oam.dev/v1beta1 - kind: ComponentDefinition - metadata: - annotations: - definition.oam.dev/description: Describes long-running, scalable, containerized - services that have a stable network endpoint to receive external network - traffic from customers. If workload type is skipped for any service - defined in Appfile, it will be defaulted to `webservice` type. - name: cloneset - namespace: vela-system - spec: - schematic: - cue: - template: "output: {\n\tapiVersion: \"apps.kruise.io/v1alpha1\"\n\tkind: - \ \"CloneSet\"\n\tmetadata: labels: {\n\t\t\"app.oam.dev/component\": - context.name\n\t}\n\tspec: {\n\t\tselector: matchLabels: {\n\t\t\t\"app.oam.dev/component\": - context.name\n\t\t}\n\n\t\ttemplate: {\n\t\t\tmetadata: labels: - {\n\t\t\t\t\"app.oam.dev/component\": context.name\n\t\t\t}\n\n\t\t\tspec: - {\n\t\t\t\tcontainers: [{\n\t\t\t\t\tname: context.name\n\t\t\t\t\timage: - parameter.image\n\n\t\t\t\t\tif parameter.cmd != _|_ {\n\t\t\t\t\t\tcommand: - parameter.cmd\n\t\t\t\t\t}\n\t\t\t\t\tif parameter.args != _|_ {\n\t\t\t\t\t\targs: - parameter.args\n\t\t\t\t\t}\n\t\t\t\t\tif parameter.env != _|_ {\n\t\t\t\t\t\tenv: - parameter.env\n\t\t\t\t\t}\n\n\t\t\t\t\tif context.config != _|_ - {\n\t\t\t\t\t\tenv: context.config\n\t\t\t\t\t}\n\n\t\t\t\t\tif - parameter[\"imagePullPolicy\"] != _|_ {\n\t\t\t\t\t\timagePullPolicy: - parameter.imagePullPolicy\n\t\t\t\t\t}\n\n\t\t\t\t\tports: [{\n\t\t\t\t\t\tcontainerPort: - parameter.port\n\t\t\t\t\t}]\n\n\t\t\t\t\tif parameter[\"cpu\"] - != _|_ {\n\t\t\t\t\t\tresources: {\n\t\t\t\t\t\t\tlimits: cpu: parameter.cpu\n\t\t\t\t\t\t\trequests: - cpu: parameter.cpu\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif parameter[\"memory\"] - != _|_ {\n\t\t\t\t\t\tresources: {\n\t\t\t\t\t\t\tlimits: memory: - \ parameter.memory\n\t\t\t\t\t\t\trequests: memory: parameter.memory\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif - parameter[\"livenessProbe\"] != _|_ {\n\t\t\t\t\t\tlivenessProbe: - parameter.livenessProbe\n\t\t\t\t\t}\n\n\t\t\t\t\tif parameter[\"readinessProbe\"] - != _|_ {\n\t\t\t\t\t\treadinessProbe: parameter.readinessProbe\n\t\t\t\t\t}\n\n\t\t\t\t\tlifecycle: - {\n\t\t\t\t\t\tif parameter.postStart != _|_ {\n\t\t\t\t\t\t\tpostStart: - exec: command: parameter.postStart\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif - parameter.preStop != _|_ {\n\t\t\t\t\t\t\tpreStop: exec: command: - parameter.preStop\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}]\n\t\t\t\tif - parameter.hostAliases != _|_ {\n\t\t\t\t\thostAliases: parameter.hostAliases\n\t\t\t\t}\n\t\t\t\tif - parameter[\"imagePullSecrets\"] != _|_ {\n\t\t\t\t\timagePullSecrets: - [ for v in parameter.imagePullSecrets {name: v}]\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif - parameter.updateStrategyType != _|_ {\n\t\t\tupdateStrategy: {\n\t\t\t\ttype: - parameter.updateStrategyType\n\t\t\t}\n\t\t}\n\t}\n}\nparameter: - {\n\t// +usage=Which image would you like to use for your service\n\t// - +short=i\n\timage: string\n\n\t// +usage=Specify image pull policy - for your service\n\timagePullPolicy?: string\n\n\t// +usage=Specify - image pull secrets for your service\n\timagePullSecrets?: [...string]\n\n\t// - +usage=Number of CPU units for the service, like `0.5` (0.5 CPU - core), `1` (1 CPU core)\n\tcpu?: string\n\n\t// +usage=Specify the - amount of memory to limit\n\tmemory?: *\"2048Mi\" | =~\"^([1-9][0-9]{0,63})(E|P|T|G|M|K|Ei|Pi|Ti|Gi|Mi|Ki)$\"\n\n\t// - +usage=Commands to run in the container\n\tcmd?: [...string]\n\n\t// - +usage=Arguments to the command.\n\targs?: [...string]\n\n\t// +usage=postStart - commands will be called immediately after a container is created.\n\tpostStart?: - [...string]\n\n\t// +usage=PreStop is called immediately before - a container is terminated due to an API request or management event - such as liveness/startup probe failure, preemption, resource contention, - etc. The handler is not called if the container crashes or exits. - The reason for termination is passed to the handler. The Pod's termination - grace period countdown begins before the PreStop hooked is executed. - Regardless of the outcome of the handler, the container will eventually - terminate within the Pod's termination grace period. Other management - of the container blocks until the hook completes or until the termination - grace period is reached. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\n\tpreStop?: - [...string]\n\n\t// +usage=Which port do you want customer traffic - sent to\n\t// +short=p\n\tport: *80 | int\n\n\t// +usage=Define - arguments by using environment variables\n\tenv?: [...#ENV]\n\n\t// - +usage=Cloneset updateStrategy, candidates are `ReCreate`/`InPlaceIfPossible`/`InPlaceOnly`\n\tupdateStrategyType?: - string\n\n\t// +usage=HostAliases is a list of hosts and IPs that - will be write into the pod's hosts file\n\thostAliases?: [...{\n\t\thostnames: - [...string]\n\t\tip: string\n\t}]\n\n\t// +usage=Instructions for - assessing whether the container is alive.\n\tlivenessProbe?: #HealthProbe\n\n\t// - +usage=Instructions for assessing whether the container is in a - suitable state to serve traffic.\n\treadinessProbe?: #HealthProbe\n}\n\n#ENV: - {\n\t// +usage=Environment variable name\n\tname: string\n\t// +usage=The - value of the environment variable\n\tvalue?: string\n\t// +usage=Specifies - a source the value of this var should come from\n\tvalueFrom?: {\n\t\t// - +usage=Selects a key of a secret in the pod's namespace\n\t\tsecretKeyRef: - {\n\t\t\t// +usage=The name of the secret in the pod's namespace - to select from\n\t\t\tname: string\n\t\t\t// +usage=The key of the - secret to select from. Must be a valid secret key\n\t\t\tkey: string\n\t\t}\n\t}\n}\n\n#HealthProbe: - {\n\n\t// +usage=Instructions for assessing container health by - executing a command. Either this attribute or the httpGet attribute - or the tcpSocket attribute MUST be specified. This attribute is - mutually exclusive with both the httpGet attribute and the tcpSocket - attribute.\n\texec?: {\n\t\t// +usage=A command to be executed inside - the container to assess its health. Each space delimited token of - the command is a separate array element. Commands exiting 0 are - considered to be successful probes, whilst all other exit codes - are considered failures.\n\t\tcommand: [...string]\n\t}\n\n\t// - +usage=Instructions for assessing container health by executing - an HTTP GET request. Either this attribute or the exec attribute - or the tcpSocket attribute MUST be specified. This attribute is - mutually exclusive with both the exec attribute and the tcpSocket - attribute.\n\thttpGet?: {\n\t\t// +usage=The endpoint, relative - to the port, to which the HTTP GET request should be directed.\n\t\tpath: - string\n\t\t// +usage=The TCP socket within the container to which - the HTTP GET request should be directed.\n\t\tport: int\n\t\thttpHeaders?: - [...{\n\t\t\tname: string\n\t\t\tvalue: string\n\t\t}]\n\t}\n\n\t// - +usage=Instructions for assessing container health by probing a - TCP socket. Either this attribute or the exec attribute or the httpGet - attribute MUST be specified. This attribute is mutually exclusive - with both the exec attribute and the httpGet attribute.\n\ttcpSocket?: - {\n\t\t// +usage=The TCP socket within the container that should - be probed to assess container health.\n\t\tport: int\n\t}\n\n\t// - +usage=Number of seconds after the container is started before the - first probe is initiated.\n\tinitialDelaySeconds: *0 | int\n\n\t// - +usage=How often, in seconds, to execute the probe.\n\tperiodSeconds: - *10 | int\n\n\t// +usage=Number of seconds after which the probe - times out.\n\ttimeoutSeconds: *1 | int\n\n\t// +usage=Minimum consecutive - successes for the probe to be considered successful after having - failed.\n\tsuccessThreshold: *1 | int\n\n\t// +usage=Number of consecutive - failures required to determine the container is not alive (liveness - probe) or not ready (readiness probe).\n\tfailureThreshold: *3 | - int\n} \n" - workload: - definition: - apiVersion: apps.kruise.io/v1alpha1 - kind: CloneSet - type: raw - - name: predownloadimage - properties: - apiVersion: core.oam.dev/v1beta1 - kind: WorkflowStepDefinition - metadata: - name: predownloadimage - spec: - schematic: - cue: - template: "import (\"vela/op\")\nparameter: {\n image: string\n parallel: - int\n kvs: [string]: string\n type: *\"Always\" | string\n activeDeadlineSeconds: - *1200 | int\n ttlSecondsAfterFinished: *300 | int\n backoffLimit?: - int\n timeoutSeconds?: int\n arr: [...string]\n}\n\npullImageJob: - op.#Apply & {\n value:{\n apiVersion: \"apps.kruise.io/v1alpha1\"\n - \ kind: \"ImagePullJob\"\n metadata: {\n name: \"pull-image-job\"\n - \ }\n spec: {\n image: parameter.image\n parallelism: - parameter.parallel\n selector: matchLabels: parameter.kvs\n - \ completionPolicy: {\n type: parameter.type\n activeDeadlineSeconds: - parameter.activeDeadlineSeconds\n ttlSecondsAfterFinished: - parameter.ttlSecondsAfterFinished\n }\n pullPolicy: {\n - \ if parameter.backoffLimit != _|_ {\n backoffLimit: - parameter.backoffLimit\n }\n if parameter.timeoutSeconds - != _|_ {\n timeoutSeconds: parameter.timeoutSeconds\n }\n - \ }\n pullSecrets: parameter.arr\n } \n } - \ \n} \n" - type: raw - status: - rollout: - batchRollingState: "" - currentBatch: 0 - lastTargetAppRevision: "" - rollingState: "" - upgradedReadyReplicas: 0 - upgradedReplicas: 0 - dependsOn: - - ref: + components: + - name: kruise + properties: + chart: ./charts/kruise/v0.9.0 + git: + branch: master + repoType: git + url: https://github.com/openkruise/kruise + values: + featureGates: PreDownloadImageForInPlaceUpdate=true + type: helm + - name: cloneset + properties: apiVersion: core.oam.dev/v1beta1 - kind: Initializer - name: fluxcd - namespace: vela-system + kind: ComponentDefinition + metadata: + annotations: + definition.oam.dev/description: Describes long-running, scalable, containerized + services that have a stable network endpoint to receive external network + traffic from customers. If workload type is skipped for any service defined + in Appfile, it will be defaulted to `webservice` type. + name: cloneset + namespace: vela-system + spec: + schematic: + cue: + template: "output: {\n\tapiVersion: \"apps.kruise.io/v1alpha1\"\n\tkind: + \ \"CloneSet\"\n\tmetadata: labels: {\n\t\t\"app.oam.dev/component\": + context.name\n\t}\n\tspec: {\n\t\tselector: matchLabels: {\n\t\t\t\"app.oam.dev/component\": + context.name\n\t\t}\n\n\t\ttemplate: {\n\t\t\tmetadata: labels: {\n\t\t\t\t\"app.oam.dev/component\": + context.name\n\t\t\t}\n\n\t\t\tspec: {\n\t\t\t\tcontainers: [{\n\t\t\t\t\tname: + \ context.name\n\t\t\t\t\timage: parameter.image\n\n\t\t\t\t\tif parameter.cmd + != _|_ {\n\t\t\t\t\t\tcommand: parameter.cmd\n\t\t\t\t\t}\n\t\t\t\t\tif + parameter.args != _|_ {\n\t\t\t\t\t\targs: parameter.args\n\t\t\t\t\t}\n\t\t\t\t\tif + parameter.env != _|_ {\n\t\t\t\t\t\tenv: parameter.env\n\t\t\t\t\t}\n\n\t\t\t\t\tif + context.config != _|_ {\n\t\t\t\t\t\tenv: context.config\n\t\t\t\t\t}\n\n\t\t\t\t\tif + parameter[\"imagePullPolicy\"] != _|_ {\n\t\t\t\t\t\timagePullPolicy: + parameter.imagePullPolicy\n\t\t\t\t\t}\n\n\t\t\t\t\tports: [{\n\t\t\t\t\t\tcontainerPort: + parameter.port\n\t\t\t\t\t}]\n\n\t\t\t\t\tif parameter[\"cpu\"] != _|_ + {\n\t\t\t\t\t\tresources: {\n\t\t\t\t\t\t\tlimits: cpu: parameter.cpu\n\t\t\t\t\t\t\trequests: + cpu: parameter.cpu\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif parameter[\"memory\"] + != _|_ {\n\t\t\t\t\t\tresources: {\n\t\t\t\t\t\t\tlimits: memory: parameter.memory\n\t\t\t\t\t\t\trequests: + memory: parameter.memory\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif + parameter[\"livenessProbe\"] != _|_ {\n\t\t\t\t\t\tlivenessProbe: parameter.livenessProbe\n\t\t\t\t\t}\n\n\t\t\t\t\tif + parameter[\"readinessProbe\"] != _|_ {\n\t\t\t\t\t\treadinessProbe: + parameter.readinessProbe\n\t\t\t\t\t}\n\n\t\t\t\t\tlifecycle: {\n\t\t\t\t\t\tif + parameter.postStart != _|_ {\n\t\t\t\t\t\t\tpostStart: exec: command: + parameter.postStart\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif parameter.preStop + != _|_ {\n\t\t\t\t\t\t\tpreStop: exec: command: parameter.preStop\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}]\n\t\t\t\tif + parameter.hostAliases != _|_ {\n\t\t\t\t\thostAliases: parameter.hostAliases\n\t\t\t\t}\n\t\t\t\tif + parameter[\"imagePullSecrets\"] != _|_ {\n\t\t\t\t\timagePullSecrets: + [ for v in parameter.imagePullSecrets {name: v}]\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif + parameter.updateStrategyType != _|_ {\n\t\t\tupdateStrategy: {\n\t\t\t\ttype: + parameter.updateStrategyType\n\t\t\t}\n\t\t}\n\t}\n}\nparameter: {\n\t// + +usage=Which image would you like to use for your service\n\t// +short=i\n\timage: + string\n\n\t// +usage=Specify image pull policy for your service\n\timagePullPolicy?: + string\n\n\t// +usage=Specify image pull secrets for your service\n\timagePullSecrets?: + [...string]\n\n\t// +usage=Number of CPU units for the service, like + `0.5` (0.5 CPU core), `1` (1 CPU core)\n\tcpu?: string\n\n\t// +usage=Specify + the amount of memory to limit\n\tmemory?: *\"2048Mi\" | =~\"^([1-9][0-9]{0,63})(E|P|T|G|M|K|Ei|Pi|Ti|Gi|Mi|Ki)$\"\n\n\t// + +usage=Commands to run in the container\n\tcmd?: [...string]\n\n\t// + +usage=Arguments to the command.\n\targs?: [...string]\n\n\t// +usage=postStart + commands will be called immediately after a container is created.\n\tpostStart?: + [...string]\n\n\t// +usage=PreStop is called immediately before a container + is terminated due to an API request or management event such as liveness/startup + probe failure, preemption, resource contention, etc. The handler is + not called if the container crashes or exits. The reason for termination + is passed to the handler. The Pod's termination grace period countdown + begins before the PreStop hooked is executed. Regardless of the outcome + of the handler, the container will eventually terminate within the Pod's + termination grace period. Other management of the container blocks until + the hook completes or until the termination grace period is reached. + More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\n\tpreStop?: + [...string]\n\n\t// +usage=Which port do you want customer traffic sent + to\n\t// +short=p\n\tport: *80 | int\n\n\t// +usage=Define arguments + by using environment variables\n\tenv?: [...#ENV]\n\n\t// +usage=Cloneset + updateStrategy, candidates are `ReCreate`/`InPlaceIfPossible`/`InPlaceOnly`\n\tupdateStrategyType?: + string\n\n\t// +usage=HostAliases is a list of hosts and IPs that will + be write into the pod's hosts file\n\thostAliases?: [...{\n\t\thostnames: + [...string]\n\t\tip: string\n\t}]\n\n\t// +usage=Instructions for assessing + whether the container is alive.\n\tlivenessProbe?: #HealthProbe\n\n\t// + +usage=Instructions for assessing whether the container is in a suitable + state to serve traffic.\n\treadinessProbe?: #HealthProbe\n}\n\n#ENV: + {\n\t// +usage=Environment variable name\n\tname: string\n\t// +usage=The + value of the environment variable\n\tvalue?: string\n\t// +usage=Specifies + a source the value of this var should come from\n\tvalueFrom?: {\n\t\t// + +usage=Selects a key of a secret in the pod's namespace\n\t\tsecretKeyRef: + {\n\t\t\t// +usage=The name of the secret in the pod's namespace to + select from\n\t\t\tname: string\n\t\t\t// +usage=The key of the secret + to select from. Must be a valid secret key\n\t\t\tkey: string\n\t\t}\n\t}\n}\n\n#HealthProbe: + {\n\n\t// +usage=Instructions for assessing container health by executing + a command. Either this attribute or the httpGet attribute or the tcpSocket + attribute MUST be specified. This attribute is mutually exclusive with + both the httpGet attribute and the tcpSocket attribute.\n\texec?: {\n\t\t// + +usage=A command to be executed inside the container to assess its health. + Each space delimited token of the command is a separate array element. + Commands exiting 0 are considered to be successful probes, whilst all + other exit codes are considered failures.\n\t\tcommand: [...string]\n\t}\n\n\t// + +usage=Instructions for assessing container health by executing an HTTP + GET request. Either this attribute or the exec attribute or the tcpSocket + attribute MUST be specified. This attribute is mutually exclusive with + both the exec attribute and the tcpSocket attribute.\n\thttpGet?: {\n\t\t// + +usage=The endpoint, relative to the port, to which the HTTP GET request + should be directed.\n\t\tpath: string\n\t\t// +usage=The TCP socket + within the container to which the HTTP GET request should be directed.\n\t\tport: + int\n\t\thttpHeaders?: [...{\n\t\t\tname: string\n\t\t\tvalue: string\n\t\t}]\n\t}\n\n\t// + +usage=Instructions for assessing container health by probing a TCP + socket. Either this attribute or the exec attribute or the httpGet attribute + MUST be specified. This attribute is mutually exclusive with both the + exec attribute and the httpGet attribute.\n\ttcpSocket?: {\n\t\t// +usage=The + TCP socket within the container that should be probed to assess container + health.\n\t\tport: int\n\t}\n\n\t// +usage=Number of seconds after the + container is started before the first probe is initiated.\n\tinitialDelaySeconds: + *0 | int\n\n\t// +usage=How often, in seconds, to execute the probe.\n\tperiodSeconds: + *10 | int\n\n\t// +usage=Number of seconds after which the probe times + out.\n\ttimeoutSeconds: *1 | int\n\n\t// +usage=Minimum consecutive + successes for the probe to be considered successful after having failed.\n\tsuccessThreshold: + *1 | int\n\n\t// +usage=Number of consecutive failures required to determine + the container is not alive (liveness probe) or not ready (readiness + probe).\n\tfailureThreshold: *3 | int\n} \n" + workload: + definition: + apiVersion: apps.kruise.io/v1alpha1 + kind: CloneSet + type: raw + - name: predownloadimage + properties: + apiVersion: core.oam.dev/v1beta1 + kind: WorkflowStepDefinition + metadata: + name: predownloadimage + spec: + schematic: + cue: + template: "import (\"vela/op\")\nparameter: {\n image: string\n parallel: + int\n kvs: [string]: string\n type: *\"Always\" | string\n activeDeadlineSeconds: + *1200 | int\n ttlSecondsAfterFinished: *300 | int\n backoffLimit?: + int\n timeoutSeconds?: int\n arr: [...string]\n}\n\npullImageJob: + op.#Apply & {\n value:{\n apiVersion: \"apps.kruise.io/v1alpha1\"\n + \ kind: \"ImagePullJob\"\n metadata: {\n name: \"pull-image-job\"\n + \ }\n spec: {\n image: parameter.image\n parallelism: + parameter.parallel\n selector: matchLabels: parameter.kvs\n completionPolicy: + {\n type: parameter.type\n activeDeadlineSeconds: parameter.activeDeadlineSeconds\n + \ ttlSecondsAfterFinished: parameter.ttlSecondsAfterFinished\n + \ }\n pullPolicy: {\n if parameter.backoffLimit != _|_ + {\n backoffLimit: parameter.backoffLimit\n }\n if + parameter.timeoutSeconds != _|_ {\n timeoutSeconds: parameter.timeoutSeconds\n + \ }\n }\n pullSecrets: parameter.arr\n } \n + \ } \n} \n" + type: raw + workflow: + steps: + - name: checking-depends-on + properties: + name: fluxcd + namespace: vela-system + type: depends-on-app + - name: apply-resources + type: apply-application status: - observedGeneration: 0 + rollout: + batchRollingState: "" + currentBatch: 0 + lastTargetAppRevision: "" + rollingState: "" + upgradedReadyReplicas: 0 + upgradedReplicas: 0 kind: ConfigMap metadata: annotations: diff --git a/charts/vela-core/templates/addons/ns-flux-system.yaml b/charts/vela-core/templates/addons/ns-flux-system.yaml deleted file mode 100644 index cc3b740e5..000000000 --- a/charts/vela-core/templates/addons/ns-flux-system.yaml +++ /dev/null @@ -1,40 +0,0 @@ -apiVersion: v1 -data: - initializer: | - apiVersion: core.oam.dev/v1beta1 - kind: Initializer - metadata: - annotations: - addons.oam.dev/description: Create namespace for flux-system - name: ns-flux-system - namespace: vela-system - spec: - appTemplate: - spec: - components: - - name: flux-system - properties: - apiVersion: v1 - kind: Namespace - metadata: - name: flux-system - type: raw - status: - rollout: - batchRollingState: "" - currentBatch: 0 - lastTargetAppRevision: "" - rollingState: "" - upgradedReadyReplicas: 0 - upgradedReplicas: 0 - status: - observedGeneration: 0 -kind: ConfigMap -metadata: - annotations: - addons.oam.dev/description: Create namespace for flux-system - addons.oam.dev/name: ns-flux-system - labels: - addons.oam.dev/type: ns-flux-system - name: ns-flux-system - namespace: {{.Values.systemDefinitionNamespace}} diff --git a/charts/vela-core/templates/addons/ns-istio-system.yaml b/charts/vela-core/templates/addons/ns-istio-system.yaml deleted file mode 100644 index 6a791a6e1..000000000 --- a/charts/vela-core/templates/addons/ns-istio-system.yaml +++ /dev/null @@ -1,40 +0,0 @@ -apiVersion: v1 -data: - initializer: | - apiVersion: core.oam.dev/v1beta1 - kind: Initializer - metadata: - annotations: - addons.oam.dev/description: Create namespace for istio-system - name: ns-istio-system - namespace: vela-system - spec: - appTemplate: - spec: - components: - - name: istio-system - properties: - apiVersion: v1 - kind: Namespace - metadata: - name: istio-system - type: raw - status: - rollout: - batchRollingState: "" - currentBatch: 0 - lastTargetAppRevision: "" - rollingState: "" - upgradedReadyReplicas: 0 - upgradedReplicas: 0 - status: - observedGeneration: 0 -kind: ConfigMap -metadata: - annotations: - addons.oam.dev/description: Create namespace for istio-system - addons.oam.dev/name: ns-istio-system - labels: - addons.oam.dev/type: ns-istio-system - name: ns-istio-system - namespace: {{.Values.systemDefinitionNamespace}} diff --git a/charts/vela-core/templates/addons/observability-asset.yaml b/charts/vela-core/templates/addons/observability-asset.yaml deleted file mode 100644 index 1751bfbcb..000000000 --- a/charts/vela-core/templates/addons/observability-asset.yaml +++ /dev/null @@ -1,128 +0,0 @@ -apiVersion: v1 -data: - initializer: | - apiVersion: core.oam.dev/v1beta1 - kind: Initializer - metadata: - annotations: - addons.oam.dev/description: Preparations that observability need - name: observability-asset - namespace: vela-system - spec: - appTemplate: - spec: - components: - - name: observability - properties: - apiVersion: v1 - kind: Namespace - metadata: - name: observability - type: raw - - name: import-grafana-dashboard - properties: - apiVersion: core.oam.dev/v1beta1 - kind: TraitDefinition - metadata: - annotations: - definition.oam.dev/description: Import dashboards to Grafana - name: import-grafana-dashboard - namespace: vela-system - spec: - schematic: - cue: - template: "outputs: registerdatasource: {\n\tapiVersion: \"grafana.extension.oam.dev/v1alpha1\"\n\tkind: - \ \"ImportDashboard\"\n\tspec: {\n\t\tgrafana: {\n\t\t\tservice: - \ parameter.grafanaServiceName\n\t\t\tnamespace: - \ parameter.grafanaServiceNamespace\n\t\t\tcredentialSecret: - \ parameter.credentialSecret\n\t\t\tcredentialSecretNamespace: - parameter.credentialSecretNamespace\n\t\t}\n\t\turls: parameter.urls\n\t}\n}\nparameter: - {\n\tgrafanaServiceName: string\n\tgrafanaServiceNamespace: - \ *\"default\" | string\n\tcredentialSecret: string\n\tcredentialSecretNamespace: - *\"default\" | string\n\turls: [...string]\n} \n" - type: raw - - name: pure-ingress - properties: - apiVersion: core.oam.dev/v1beta1 - kind: TraitDefinition - metadata: - annotations: - definition.oam.dev/description: Enable public web traffic for the component - without creating a Service. - name: pure-ingress - namespace: vela-system - spec: - schematic: - cue: - template: "\noutputs: ingress: {\n\tapiVersion: \"networking.k8s.io/v1beta1\"\n\tkind: - \ \"Ingress\"\n\tmetadata:\n\t\tname: context.name\n\tspec: - {\n\t\trules: [{\n\t\t\thost: parameter.domain\n\t\t\thttp: {\n\t\t\t\tpaths: - [\n\t\t\t\t\tfor k, v in parameter.http {\n\t\t\t\t\t\tpath: k\n\t\t\t\t\t\tbackend: - {\n\t\t\t\t\t\t\tserviceName: context.name\n\t\t\t\t\t\t\tservicePort: - v\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t]\n\t\t\t}\n\t\t}]\n\t}\n}\n\nparameter: - {\n\t// +usage=Specify the domain you want to expose\n\tdomain: - string\n\n\t// +usage=Specify the mapping relationship between the - http path and the workload port\n\thttp: [string]: int\n}\n" - status: - customStatus: |- - let igs = context.outputs.ingress.status.loadBalancer.ingress - if igs == _|_ { - message: "No loadBalancer found, visiting by using 'vela port-forward " + context.appName + " --route'\n" - } - if len(igs) > 0 { - if igs[0].ip != _|_ { - message: "Visiting URL: " + context.outputs.ingress.spec.rules[0].host + ", IP: " + igs[0].ip - } - if igs[0].ip == _|_ { - message: "Visiting URL: " + context.outputs.ingress.spec.rules[0].host - } - } - healthPolicy: | - isHealth: len(context.outputs.ingress.status.loadBalancer.ingress) > 0 - type: raw - - name: register-grafana-datasource - properties: - apiVersion: core.oam.dev/v1beta1 - kind: TraitDefinition - metadata: - annotations: - definition.oam.dev/description: Add a datasource to Grafana - name: register-grafana-datasource - namespace: vela-system - spec: - schematic: - cue: - template: "outputs: registerdatasource: {\n\tapiVersion: \"grafana.extension.oam.dev/v1alpha1\"\n\tkind: - \ \"DatasourceRegistration\"\n\tspec: {\n\t\tgrafana: {\n\t\t\tservice: - \ parameter.grafanaServiceName\n\t\t\tnamespace: - \ parameter.grafanaServiceNamespace\n\t\t\tcredentialSecret: - \ parameter.credentialSecret\n\t\t\tcredentialSecretNamespace: - parameter.credentialSecretNamespace\n\t\t}\n\t\tdatasource: {\n\t\t\tname: - \ parameter.name\n\t\t\ttype: parameter.type\n\t\t\taccess: - \ parameter.access\n\t\t\tservice: parameter.service\n\t\t\tnamespace: - parameter.namespace\n\t\t}\n\t}\n}\n\nparameter: {\n\tgrafanaServiceName: - \ string\n\tgrafanaServiceNamespace: *\"default\" | string\n\tcredentialSecret: - \ string\n\tcredentialSecretNamespace: string\n\tname: string\n\ttype: - \ string\n\taccess: *\"proxy\" - | string\n\tservice: string\n\tnamespace: *\"default\" - | string\n}\n" - type: raw - status: - rollout: - batchRollingState: "" - currentBatch: 0 - lastTargetAppRevision: "" - rollingState: "" - upgradedReadyReplicas: 0 - upgradedReplicas: 0 - status: - observedGeneration: 0 -kind: ConfigMap -metadata: - annotations: - addons.oam.dev/description: Preparations that observability need - addons.oam.dev/name: observability-asset - labels: - addons.oam.dev/type: observability-asset - name: observability-asset - namespace: {{.Values.systemDefinitionNamespace}} diff --git a/charts/vela-core/templates/addons/observability.yaml b/charts/vela-core/templates/addons/observability.yaml index ea68dec8e..804e514b4 100644 --- a/charts/vela-core/templates/addons/observability.yaml +++ b/charts/vela-core/templates/addons/observability.yaml @@ -1,141 +1,243 @@ apiVersion: v1 data: - initializer: | + application: | apiVersion: core.oam.dev/v1beta1 - kind: Initializer + kind: Application metadata: annotations: addons.oam.dev/description: An out of the box solution for KubeVela observability name: observability - namespace: observability + namespace: vela-system spec: - appTemplate: - spec: - components: - - name: grafana-registration - properties: - chart: ./chart - git: - branch: master - repoType: git - targetNamespace: observability - url: https://github.com/oam-dev/grafana-registration - values: - replicaCount: 1 - type: helm - - name: grafana - properties: - chart: grafana - releaseName: grafana - repoType: helm - targetNamespace: observability - url: https://charts.kubevela.net/addons - version: 6.14.1 - traits: - - properties: - domain: '[[ index .Args "grafana-domain" ]]' - http: - /: 80 - type: pure-ingress - - properties: - credentialSecret: grafana - credentialSecretNamespace: observability - grafanaServiceName: grafana - grafanaServiceNamespace: observability - urls: - - https://charts.kubevela.net/addons/dashboards/kubevela_core_logging.json - - https://charts.kubevela.net/addons/dashboards/kubevela_core_monitoring.json - - https://charts.kubevela.net/addons/dashboards/kubevela_application_logging.json - - https://charts.kubevela.net/addons/dashboards/flux2/cluster.json - type: import-grafana-dashboard - type: helm - - name: loki - properties: - chart: loki-stack - releaseName: loki - repoType: helm - targetNamespace: observability - url: https://charts.kubevela.net/addons - version: 2.4.1 - traits: - - properties: - access: proxy - credentialSecret: grafana - credentialSecretNamespace: observability - grafanaServiceName: grafana - grafanaServiceNamespace: observability - name: loki - namespace: observability - service: loki - type: loki - type: register-grafana-datasource - type: helm - - name: prometheus-server - properties: - chart: prometheus - releaseName: prometheus - repoType: helm - targetNamespace: observability - url: https://charts.kubevela.net/addons - values: - alertmanager: - persistentVolume: - enabled: '[[ index .Args "alertmanager-pvc-enabled" | default "true" - ]]' - size: '[[ index .Args "alertmanager-pvc-size" | default "20Gi" ]]' - storageClass: '[[ index .Args "alertmanager-pvc-class" ]]' - server: - persistentVolume: - enabled: '[[ index .Args "server-pvc-enabled" | default "true" ]]' - size: '[[ index .Args "server-pvc-size" | default "20Gi" ]]' - storageClass: '[[ index .Args "server-pvc-class" ]]' - version: 14.4.1 - traits: - - properties: - access: proxy - credentialSecret: grafana - credentialSecretNamespace: observability - grafanaServiceName: grafana - grafanaServiceNamespace: observability - name: prometheus - namespace: observability - service: prometheus-server - type: prometheus - type: register-grafana-datasource - type: helm - - name: kube-state-metrics - properties: - chart: kube-state-metrics - repoType: helm - targetNamespace: observability - url: https://charts.kubevela.net/addons - values: - image: - repository: oamdev/kube-state-metrics - tag: v2.1.0 - version: 3.4.1 - type: helm - status: - rollout: - batchRollingState: "" - currentBatch: 0 - lastTargetAppRevision: "" - rollingState: "" - upgradedReadyReplicas: 0 - upgradedReplicas: 0 - dependsOn: - - ref: + components: + - name: ns-observability + properties: + apiVersion: v1 + kind: Namespace + metadata: + name: observability + type: raw + - name: import-grafana-dashboard-traitdef + properties: apiVersion: core.oam.dev/v1beta1 - kind: Initializer - name: fluxcd - namespace: vela-system - - ref: + kind: TraitDefinition + metadata: + annotations: + definition.oam.dev/description: Import dashboards to Grafana + name: import-grafana-dashboard + namespace: vela-system + spec: + schematic: + cue: + template: "outputs: registerdatasource: {\n\tapiVersion: \"grafana.extension.oam.dev/v1alpha1\"\n\tkind: + \ \"ImportDashboard\"\n\tspec: {\n\t\tgrafana: {\n\t\t\tservice: + \ parameter.grafanaServiceName\n\t\t\tnamespace: parameter.grafanaServiceNamespace\n\t\t\tcredentialSecret: + \ parameter.credentialSecret\n\t\t\tcredentialSecretNamespace: + parameter.credentialSecretNamespace\n\t\t}\n\t\turls: parameter.urls\n\t}\n}\nparameter: + {\n\tgrafanaServiceName: string\n\tgrafanaServiceNamespace: *\"default\" + | string\n\tcredentialSecret: string\n\tcredentialSecretNamespace: + *\"default\" | string\n\turls: [...string]\n}\n" + type: raw + - name: pure-ingress-traitdef + properties: apiVersion: core.oam.dev/v1beta1 - kind: Initializer - name: observability-asset - namespace: vela-system + kind: TraitDefinition + metadata: + annotations: + definition.oam.dev/description: Enable public web traffic for the component + without creating a Service. + name: pure-ingress + namespace: vela-system + spec: + schematic: + cue: + template: "\noutputs: ingress: {\n\tapiVersion: \"networking.k8s.io/v1beta1\"\n\tkind: + \ \"Ingress\"\n\tmetadata:\n\t\tname: context.name\n\tspec: {\n\t\trules: + [{\n\t\t\thost: parameter.domain\n\t\t\thttp: {\n\t\t\t\tpaths: [\n\t\t\t\t\tfor + k, v in parameter.http {\n\t\t\t\t\t\tpath: k\n\t\t\t\t\t\tbackend: + {\n\t\t\t\t\t\t\tserviceName: context.name\n\t\t\t\t\t\t\tservicePort: + v\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t]\n\t\t\t}\n\t\t}]\n\t}\n}\n\nparameter: + {\n\t// +usage=Specify the domain you want to expose\n\tdomain: string\n\n\t// + +usage=Specify the mapping relationship between the http path and the + workload port\n\thttp: [string]: int\n}\n" + status: + customStatus: |- + let igs = context.outputs.ingress.status.loadBalancer.ingress + if igs == _|_ { + message: "No loadBalancer found, visiting by using 'vela port-forward " + context.appName + " --route'\n" + } + if len(igs) > 0 { + if igs[0].ip != _|_ { + message: "Visiting URL: " + context.outputs.ingress.spec.rules[0].host + ", IP: " + igs[0].ip + } + if igs[0].ip == _|_ { + message: "Visiting URL: " + context.outputs.ingress.spec.rules[0].host + } + } + healthPolicy: | + isHealth: len(context.outputs.ingress.status.loadBalancer.ingress) > 0 + type: raw + - name: register-grafana-datasource-traitdef + properties: + apiVersion: core.oam.dev/v1beta1 + kind: TraitDefinition + metadata: + annotations: + definition.oam.dev/description: Add a datasource to Grafana + name: register-grafana-datasource + namespace: vela-system + spec: + schematic: + cue: + template: "outputs: registerdatasource: {\n\tapiVersion: \"grafana.extension.oam.dev/v1alpha1\"\n\tkind: + \ \"DatasourceRegistration\"\n\tspec: {\n\t\tgrafana: {\n\t\t\tservice: + \ parameter.grafanaServiceName\n\t\t\tnamespace: parameter.grafanaServiceNamespace\n\t\t\tcredentialSecret: + \ parameter.credentialSecret\n\t\t\tcredentialSecretNamespace: + parameter.credentialSecretNamespace\n\t\t}\n\t\tdatasource: {\n\t\t\tname: + \ parameter.name\n\t\t\ttype: parameter.type\n\t\t\taccess: + \ parameter.access\n\t\t\tservice: parameter.service\n\t\t\tnamespace: + parameter.namespace\n\t\t}\n\t}\n}\n\nparameter: {\n\tgrafanaServiceName: + \ string\n\tgrafanaServiceNamespace: *\"default\" | string\n\tcredentialSecret: + \ string\n\tcredentialSecretNamespace: string\n\tname: string\n\ttype: + \ string\n\taccess: *\"proxy\" + | string\n\tservice: string\n\tnamespace: *\"default\" + | string\n}\n" + type: raw + - name: grafana-registration + properties: + chart: ./chart + git: + branch: master + repoType: git + targetNamespace: observability + url: https://github.com/oam-dev/grafana-registration + values: + replicaCount: 1 + type: helm + - name: grafana + properties: + chart: grafana + releaseName: grafana + repoType: helm + targetNamespace: observability + url: https://charts.kubevela.net/addons + version: 6.14.1 + traits: + - properties: + domain: '[[ index .Args "grafana-domain" ]]' + http: + /: 80 + type: pure-ingress + - properties: + credentialSecret: grafana + credentialSecretNamespace: observability + grafanaServiceName: grafana + grafanaServiceNamespace: observability + urls: + - https://charts.kubevela.net/addons/dashboards/kubevela_core_logging.json + - https://charts.kubevela.net/addons/dashboards/kubevela_core_monitoring.json + - https://charts.kubevela.net/addons/dashboards/kubevela_application_logging.json + - https://charts.kubevela.net/addons/dashboards/flux2/cluster.json + type: import-grafana-dashboard + type: helm + - name: loki + properties: + chart: loki-stack + releaseName: loki + repoType: helm + targetNamespace: observability + url: https://charts.kubevela.net/addons + version: 2.4.1 + traits: + - properties: + access: proxy + credentialSecret: grafana + credentialSecretNamespace: observability + grafanaServiceName: grafana + grafanaServiceNamespace: observability + name: loki + namespace: observability + service: loki + type: loki + type: register-grafana-datasource + type: helm + - name: prometheus-server + properties: + chart: prometheus + releaseName: prometheus + repoType: helm + targetNamespace: observability + url: https://charts.kubevela.net/addons + values: + alertmanager: + persistentVolume: + enabled: '[[ index .Args "alertmanager-pvc-enabled" | default "true" ]]' + size: '[[ index .Args "alertmanager-pvc-size" | default "20Gi" ]]' + storageClass: '[[ index .Args "alertmanager-pvc-class" ]]' + server: + persistentVolume: + enabled: '[[ index .Args "server-pvc-enabled" | default "true" ]]' + size: '[[ index .Args "server-pvc-size" | default "20Gi" ]]' + storageClass: '[[ index .Args "server-pvc-class" ]]' + version: 14.4.1 + traits: + - properties: + access: proxy + credentialSecret: grafana + credentialSecretNamespace: observability + grafanaServiceName: grafana + grafanaServiceNamespace: observability + name: prometheus + namespace: observability + service: prometheus-server + type: prometheus + type: register-grafana-datasource + type: helm + - name: kube-state-metrics + properties: + chart: kube-state-metrics + repoType: helm + targetNamespace: observability + url: https://charts.kubevela.net/addons + values: + image: + repository: oamdev/kube-state-metrics + tag: v2.1.0 + version: 3.4.1 + type: helm + workflow: + steps: + - name: checking-depends-on + properties: + name: fluxcd + namespace: vela-system + type: depends-on-app + - name: apply-ns + properties: + component: ns-observability + type: apply-component + - name: apply-trait-1 + properties: + component: import-grafana-dashboard-traitdef + type: apply-component + - name: apply-trait-2 + properties: + component: pure-ingress-traitdef + type: apply-component + - name: apply-trait-3 + properties: + component: register-grafana-datasource-traitdef + type: apply-component + - name: apply-resources + type: apply-remaining status: - observedGeneration: 0 + rollout: + batchRollingState: "" + currentBatch: 0 + lastTargetAppRevision: "" + rollingState: "" + upgradedReadyReplicas: 0 + upgradedReplicas: 0 kind: ConfigMap metadata: annotations: diff --git a/charts/vela-core/templates/addons/ocm-cluster-manager.yaml b/charts/vela-core/templates/addons/ocm-cluster-manager.yaml index 76ae1c72f..6899414c5 100644 --- a/charts/vela-core/templates/addons/ocm-cluster-manager.yaml +++ b/charts/vela-core/templates/addons/ocm-cluster-manager.yaml @@ -1,8 +1,8 @@ apiVersion: v1 data: - initializer: | + application: | apiVersion: core.oam.dev/v1beta1 - kind: Initializer + kind: Application metadata: annotations: addons.oam.dev/description: ocm-cluster-manager can deploy an OCM hub cluster @@ -10,508 +10,506 @@ data: name: ocm-cluster-manager namespace: vela-system spec: - appTemplate: - spec: - components: - - name: cluster-manager-role-binding - properties: - apiVersion: rbac.authorization.k8s.io/v1 - kind: ClusterRoleBinding - metadata: - name: cluster-manager-role-binding - roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: cluster-manager-cluster-role - subjects: - - kind: ServiceAccount - name: cluster-manager-service-account - namespace: open-cluster-management - type: raw - - name: cluster-manager-cluster-role - properties: - apiVersion: rbac.authorization.k8s.io/v1 - kind: ClusterRole - metadata: - name: cluster-manager-cluster-role - rules: - - apiGroups: - - "" - resources: - - configmaps - - namespaces - - serviceaccounts - - services - - secrets - verbs: - - create - - get - - list - - update - - watch - - patch - - delete - - apiGroups: - - "" - resources: - - nodes - verbs: - - get - - list - - watch - - apiGroups: - - authorization.k8s.io - resources: - - subjectaccessreviews - verbs: - - create - - apiGroups: - - "" - - events.k8s.io - resources: - - events - verbs: - - create - - patch - - update - - apiGroups: - - apps - resources: - - deployments - verbs: - - create - - get - - list - - update - - watch - - patch - - delete - - apiGroups: - - rbac.authorization.k8s.io - resources: - - clusterrolebindings - - rolebindings - verbs: - - create - - get - - list - - update - - watch - - patch - - delete - - apiGroups: - - rbac.authorization.k8s.io - resources: - - clusterroles - - roles - verbs: - - create - - get - - list - - update - - watch - - patch - - delete - - escalate - - bind - - apiGroups: - - apiextensions.k8s.io - resources: - - customresourcedefinitions - verbs: - - create - - get - - list - - update - - watch - - patch - - delete - - apiGroups: - - apiregistration.k8s.io - resources: - - apiservices - verbs: - - create - - get - - list - - update - - watch - - patch - - delete - - apiGroups: - - admissionregistration.k8s.io - resources: - - validatingwebhookconfigurations - - mutatingwebhookconfigurations - verbs: - - create - - get - - list - - update - - watch - - patch - - delete - - apiGroups: - - operator.open-cluster-management.io - resources: - - clustermanagers - verbs: - - get - - list - - watch - - update - - delete - - apiGroups: - - operator.open-cluster-management.io - resources: - - clustermanagers/status - verbs: - - update - - patch - type: raw - - name: cluster-manager-service-account - properties: - apiVersion: v1 - kind: ServiceAccount - metadata: - name: cluster-manager-service-account - namespace: open-cluster-management - type: raw - - name: clustermanagers.operator.open-cluster-management.io - properties: - apiVersion: apiextensions.k8s.io/v1 - kind: CustomResourceDefinition - metadata: - name: clustermanagers.operator.open-cluster-management.io - spec: - group: operator.open-cluster-management.io - names: - kind: ClusterManager - listKind: ClusterManagerList - plural: clustermanagers - singular: clustermanager - preserveUnknownFields: false - scope: Cluster - versions: - - name: v1 - schema: - openAPIV3Schema: - description: ClusterManager configures the controllers on the hub - that govern registration and work distribution for attached Klusterlets. - ClusterManager will only be deployed in open-cluster-management-hub - namespace. - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this - representation of an object. Servers should convert recognized - schemas to the latest internal value, and may reject unrecognized - values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource - this object represents. Servers may infer this from the endpoint - the client submits requests to. Cannot be updated. In CamelCase. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: Spec represents a desired deployment configuration - of controllers that govern registration and work distribution - for attached Klusterlets. - properties: - placementImagePullSpec: - default: quay.io/open-cluster-management/placement - description: PlacementImagePullSpec represents the desired - image configuration of placement controller/webhook installed - on hub. - type: string - registrationImagePullSpec: - default: quay.io/open-cluster-management/registration - description: RegistrationImagePullSpec represents the desired - image of registration controller/webhook installed on - hub. - type: string - workImagePullSpec: - default: quay.io/open-cluster-management/work - description: WorkImagePullSpec represents the desired image - configuration of work controller/webhook installed on - hub. - type: string - type: object - status: - description: Status represents the current status of controllers - that govern the lifecycle of managed clusters. - properties: - conditions: - description: 'Conditions contain the different condition - statuses for this ClusterManager. Valid condition types - are: Applied: Components in hub are applied. Available: - Components in hub are available and ready to serve. Progressing: - Components in hub are in a transitioning state. Degraded: - Components in hub do not match the desired configuration - and only provide degraded service.' - items: - description: "Condition contains details for one aspect - of the current state of this API Resource. --- This - struct is intended for direct use as an array at the - field path .status.conditions. For example, type FooStatus - struct{ // Represents the observations of a foo's - current state. // Known .status.conditions.type - are: \"Available\", \"Progressing\", and \"Degraded\" - \ // +patchMergeKey=type // +patchStrategy=merge - \ // +listType=map // +listMapKey=type Conditions - []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" - patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` - \n // other fields }" - properties: - lastTransitionTime: - description: lastTransitionTime is the last time the - condition transitioned from one status to another. - This should be when the underlying condition changed. If - that is not known, then using the time when the - API field changed is acceptable. - format: date-time - type: string - message: - description: message is a human readable message indicating - details about the transition. This may be an empty - string. - maxLength: 32768 - type: string - observedGeneration: - description: observedGeneration represents the .metadata.generation - that the condition was set based upon. For instance, - if .metadata.generation is currently 12, but the - .status.conditions[x].observedGeneration is 9, the - condition is out of date with respect to the current - state of the instance. - format: int64 - minimum: 0 - type: integer - reason: - description: reason contains a programmatic identifier - indicating the reason for the condition's last transition. - Producers of specific condition types may define - expected values and meanings for this field, and - whether the values are considered a guaranteed API. - The value should be a CamelCase string. This field - may not be empty. - maxLength: 1024 - minLength: 1 - pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ - type: string - status: - description: status of the condition, one of True, - False, Unknown. - enum: - - "True" - - "False" - - Unknown - type: string - type: - description: type of condition in CamelCase or in - foo.example.com/CamelCase. --- Many .condition.type - values are consistent across resources like Available, - but because arbitrary conditions can be useful (see - .node.status.conditions), the ability to deconflict - is important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) - maxLength: 316 - pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ - type: string - required: - - lastTransitionTime - - message - - reason - - status - - type - type: object - type: array - generations: - description: Generations are used to determine when an item - needs to be reconciled or has changed in a way that needs - a reaction. - items: - description: GenerationStatus keeps track of the generation - for a given resource so that decisions about forced - updates can be made. The definition matches the GenerationStatus - defined in github.com/openshift/api/v1 - properties: - group: - description: group is the group of the resource that - you're tracking - type: string - lastGeneration: - description: lastGeneration is the last generation - of the resource that controller applies - format: int64 - type: integer - name: - description: name is the name of the resource that - you're tracking - type: string - namespace: - description: namespace is where the resource that - you're tracking is - type: string - resource: - description: resource is the resource type of the - resource that you're tracking - type: string - version: - description: version is the version of the resource - that you're tracking - type: string - type: object - type: array - observedGeneration: - description: ObservedGeneration is the last generation change - you've dealt with - format: int64 - type: integer - relatedResources: - description: RelatedResources are used to track the resources - that are related to this ClusterManager. - items: - description: RelatedResourceMeta represents the resource - that is managed by an operator - properties: - group: - description: group is the group of the resource that - you're tracking - type: string - name: - description: name is the name of the resource that - you're tracking - type: string - namespace: - description: namespace is where the thing you're tracking - is - type: string - resource: - description: resource is the resource type of the - resource that you're tracking - type: string - version: - description: version is the version of the thing you're - tracking - type: string - type: object - type: array - type: object - type: object - served: true - storage: true - subresources: - status: {} - status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] - type: raw - - name: cluster-manager-hub - properties: - apiVersion: operator.open-cluster-management.io/v1 + components: + - name: ns-open-cluster-management + properties: + apiVersion: v1 + kind: Namespace + metadata: + name: open-cluster-management + type: raw + - name: cluster-manager-role-binding + properties: + apiVersion: rbac.authorization.k8s.io/v1 + kind: ClusterRoleBinding + metadata: + name: cluster-manager-role-binding + roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: cluster-manager-cluster-role + subjects: + - kind: ServiceAccount + name: cluster-manager-service-account + namespace: open-cluster-management + type: raw + - name: cluster-manager-cluster-role + properties: + apiVersion: rbac.authorization.k8s.io/v1 + kind: ClusterRole + metadata: + name: cluster-manager-cluster-role + rules: + - apiGroups: + - "" + resources: + - configmaps + - namespaces + - serviceaccounts + - services + - secrets + verbs: + - create + - get + - list + - update + - watch + - patch + - delete + - apiGroups: + - "" + resources: + - nodes + verbs: + - get + - list + - watch + - apiGroups: + - authorization.k8s.io + resources: + - subjectaccessreviews + verbs: + - create + - apiGroups: + - "" + - events.k8s.io + resources: + - events + verbs: + - create + - patch + - update + - apiGroups: + - apps + resources: + - deployments + verbs: + - create + - get + - list + - update + - watch + - patch + - delete + - apiGroups: + - rbac.authorization.k8s.io + resources: + - clusterrolebindings + - rolebindings + verbs: + - create + - get + - list + - update + - watch + - patch + - delete + - apiGroups: + - rbac.authorization.k8s.io + resources: + - clusterroles + - roles + verbs: + - create + - get + - list + - update + - watch + - patch + - delete + - escalate + - bind + - apiGroups: + - apiextensions.k8s.io + resources: + - customresourcedefinitions + verbs: + - create + - get + - list + - update + - watch + - patch + - delete + - apiGroups: + - apiregistration.k8s.io + resources: + - apiservices + verbs: + - create + - get + - list + - update + - watch + - patch + - delete + - apiGroups: + - admissionregistration.k8s.io + resources: + - validatingwebhookconfigurations + - mutatingwebhookconfigurations + verbs: + - create + - get + - list + - update + - watch + - patch + - delete + - apiGroups: + - operator.open-cluster-management.io + resources: + - clustermanagers + verbs: + - get + - list + - watch + - update + - delete + - apiGroups: + - operator.open-cluster-management.io + resources: + - clustermanagers/status + verbs: + - update + - patch + type: raw + - name: cluster-manager-service-account + properties: + apiVersion: v1 + kind: ServiceAccount + metadata: + name: cluster-manager-service-account + namespace: open-cluster-management + type: raw + - name: clustermanagers.operator.open-cluster-management.io + properties: + apiVersion: apiextensions.k8s.io/v1 + kind: CustomResourceDefinition + metadata: + name: clustermanagers.operator.open-cluster-management.io + spec: + group: operator.open-cluster-management.io + names: kind: ClusterManager - metadata: - name: cluster-manager-hub - spec: - placementImagePullSpec: quay.io/open-cluster-management/placement - registrationImagePullSpec: quay.io/open-cluster-management/registration - workImagePullSpec: quay.io/open-cluster-management/work - type: raw - - name: open-cluster-management - properties: - apiVersion: v1 - kind: Namespace - metadata: - name: open-cluster-management - type: raw - - name: cluster-manager-controller - properties: - apiVersion: apps/v1 - kind: Deployment + listKind: ClusterManagerList + plural: clustermanagers + singular: clustermanager + preserveUnknownFields: false + scope: Cluster + versions: + - name: v1 + schema: + openAPIV3Schema: + description: ClusterManager configures the controllers on the hub that + govern registration and work distribution for attached Klusterlets. + ClusterManager will only be deployed in open-cluster-management-hub + namespace. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the + latest internal value, and may reject unrecognized values. More + info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource + this object represents. Servers may infer this from the endpoint + the client submits requests to. Cannot be updated. In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: Spec represents a desired deployment configuration + of controllers that govern registration and work distribution + for attached Klusterlets. + properties: + placementImagePullSpec: + default: quay.io/open-cluster-management/placement + description: PlacementImagePullSpec represents the desired image + configuration of placement controller/webhook installed on + hub. + type: string + registrationImagePullSpec: + default: quay.io/open-cluster-management/registration + description: RegistrationImagePullSpec represents the desired + image of registration controller/webhook installed on hub. + type: string + workImagePullSpec: + default: quay.io/open-cluster-management/work + description: WorkImagePullSpec represents the desired image + configuration of work controller/webhook installed on hub. + type: string + type: object + status: + description: Status represents the current status of controllers + that govern the lifecycle of managed clusters. + properties: + conditions: + description: 'Conditions contain the different condition statuses + for this ClusterManager. Valid condition types are: Applied: + Components in hub are applied. Available: Components in hub + are available and ready to serve. Progressing: Components + in hub are in a transitioning state. Degraded: Components + in hub do not match the desired configuration and only provide + degraded service.' + items: + description: "Condition contains details for one aspect of + the current state of this API Resource. --- This struct + is intended for direct use as an array at the field path + .status.conditions. For example, type FooStatus struct{ + \ // Represents the observations of a foo's current state. + \ // Known .status.conditions.type are: \"Available\", + \"Progressing\", and \"Degraded\" // +patchMergeKey=type + \ // +patchStrategy=merge // +listType=map // + +listMapKey=type Conditions []metav1.Condition `json:\"conditions,omitempty\" + patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` + \n // other fields }" + properties: + lastTransitionTime: + description: lastTransitionTime is the last time the condition + transitioned from one status to another. This should + be when the underlying condition changed. If that is + not known, then using the time when the API field changed + is acceptable. + format: date-time + type: string + message: + description: message is a human readable message indicating + details about the transition. This may be an empty string. + maxLength: 32768 + type: string + observedGeneration: + description: observedGeneration represents the .metadata.generation + that the condition was set based upon. For instance, + if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration + is 9, the condition is out of date with respect to the + current state of the instance. + format: int64 + minimum: 0 + type: integer + reason: + description: reason contains a programmatic identifier + indicating the reason for the condition's last transition. + Producers of specific condition types may define expected + values and meanings for this field, and whether the + values are considered a guaranteed API. The value should + be a CamelCase string. This field may not be empty. + maxLength: 1024 + minLength: 1 + pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ + type: string + status: + description: status of the condition, one of True, False, + Unknown. + enum: + - "True" + - "False" + - Unknown + type: string + type: + description: type of condition in CamelCase or in foo.example.com/CamelCase. + --- Many .condition.type values are consistent across + resources like Available, but because arbitrary conditions + can be useful (see .node.status.conditions), the ability + to deconflict is important. The regex it matches is + (dns1123SubdomainFmt/)?(qualifiedNameFmt) + maxLength: 316 + pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ + type: string + required: + - lastTransitionTime + - message + - reason + - status + - type + type: object + type: array + generations: + description: Generations are used to determine when an item + needs to be reconciled or has changed in a way that needs + a reaction. + items: + description: GenerationStatus keeps track of the generation + for a given resource so that decisions about forced updates + can be made. The definition matches the GenerationStatus + defined in github.com/openshift/api/v1 + properties: + group: + description: group is the group of the resource that you're + tracking + type: string + lastGeneration: + description: lastGeneration is the last generation of + the resource that controller applies + format: int64 + type: integer + name: + description: name is the name of the resource that you're + tracking + type: string + namespace: + description: namespace is where the resource that you're + tracking is + type: string + resource: + description: resource is the resource type of the resource + that you're tracking + type: string + version: + description: version is the version of the resource that + you're tracking + type: string + type: object + type: array + observedGeneration: + description: ObservedGeneration is the last generation change + you've dealt with + format: int64 + type: integer + relatedResources: + description: RelatedResources are used to track the resources + that are related to this ClusterManager. + items: + description: RelatedResourceMeta represents the resource that + is managed by an operator + properties: + group: + description: group is the group of the resource that you're + tracking + type: string + name: + description: name is the name of the resource that you're + tracking + type: string + namespace: + description: namespace is where the thing you're tracking + is + type: string + resource: + description: resource is the resource type of the resource + that you're tracking + type: string + version: + description: version is the version of the thing you're + tracking + type: string + type: object + type: array + type: object + type: object + served: true + storage: true + subresources: + status: {} + status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] + type: raw + - name: cluster-manager-hub + properties: + apiVersion: operator.open-cluster-management.io/v1 + kind: ClusterManager + metadata: + name: cluster-manager-hub + spec: + placementImagePullSpec: quay.io/open-cluster-management/placement + registrationImagePullSpec: quay.io/open-cluster-management/registration + workImagePullSpec: quay.io/open-cluster-management/work + type: raw + - name: cluster-manager-controller + properties: + apiVersion: apps/v1 + kind: Deployment + metadata: + labels: + app: cluster-manager + name: cluster-manager-controller + namespace: open-cluster-management + spec: + replicas: 1 + selector: + matchLabels: + app: cluster-manager + template: metadata: labels: app: cluster-manager - name: cluster-manager-controller - namespace: open-cluster-management spec: - replicas: 1 - selector: - matchLabels: - app: cluster-manager - template: - metadata: - labels: - app: cluster-manager - spec: - affinity: - podAntiAffinity: - preferredDuringSchedulingIgnoredDuringExecution: - - podAffinityTerm: - labelSelector: - matchExpressions: - - key: app - operator: In - values: - - cluster-manager - topologyKey: failure-domain.beta.kubernetes.io/zone - weight: 70 - - podAffinityTerm: - labelSelector: - matchExpressions: - - key: app - operator: In - values: - - cluster-manager - topologyKey: kubernetes.io/hostname - weight: 30 - containers: - - args: - - /registration-operator - - hub - image: quay.io/open-cluster-management/registration-operator:latest - imagePullPolicy: IfNotPresent - livenessProbe: - httpGet: - path: /healthz - port: 8443 - scheme: HTTPS - initialDelaySeconds: 2 - periodSeconds: 10 - name: registration-operator - readinessProbe: - httpGet: - path: /healthz - port: 8443 - scheme: HTTPS - initialDelaySeconds: 2 - resources: - requests: - cpu: 10m - memory: 128Mi - securityContext: - allowPrivilegeEscalation: false - capabilities: - drop: - - ALL - privileged: false - runAsNonRoot: true - serviceAccountName: cluster-manager-service-account - type: raw - status: - rollout: - batchRollingState: "" - currentBatch: 0 - lastTargetAppRevision: "" - rollingState: "" - upgradedReadyReplicas: 0 - upgradedReplicas: 0 + affinity: + podAntiAffinity: + preferredDuringSchedulingIgnoredDuringExecution: + - podAffinityTerm: + labelSelector: + matchExpressions: + - key: app + operator: In + values: + - cluster-manager + topologyKey: failure-domain.beta.kubernetes.io/zone + weight: 70 + - podAffinityTerm: + labelSelector: + matchExpressions: + - key: app + operator: In + values: + - cluster-manager + topologyKey: kubernetes.io/hostname + weight: 30 + containers: + - args: + - /registration-operator + - hub + image: quay.io/open-cluster-management/registration-operator:latest + imagePullPolicy: IfNotPresent + livenessProbe: + httpGet: + path: /healthz + port: 8443 + scheme: HTTPS + initialDelaySeconds: 2 + periodSeconds: 10 + name: registration-operator + readinessProbe: + httpGet: + path: /healthz + port: 8443 + scheme: HTTPS + initialDelaySeconds: 2 + resources: + requests: + cpu: 10m + memory: 128Mi + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + runAsNonRoot: true + serviceAccountName: cluster-manager-service-account + type: raw + workflow: + steps: + - name: apply-ns + properties: + component: ns-open-cluster-management + type: apply-component + - name: apply-resources + type: apply-remaining status: - observedGeneration: 0 + rollout: + batchRollingState: "" + currentBatch: 0 + lastTargetAppRevision: "" + rollingState: "" + upgradedReadyReplicas: 0 + upgradedReplicas: 0 kind: ConfigMap metadata: annotations: diff --git a/charts/vela-core/templates/addons/prometheus.yaml b/charts/vela-core/templates/addons/prometheus.yaml index b4a1bbd6b..fd9d41f2f 100644 --- a/charts/vela-core/templates/addons/prometheus.yaml +++ b/charts/vela-core/templates/addons/prometheus.yaml @@ -1,8 +1,8 @@ apiVersion: v1 data: - initializer: | + application: | apiVersion: core.oam.dev/v1beta1 - kind: Initializer + kind: Application metadata: annotations: addons.oam.dev/description: Prometheus is an open-source systems monitoring and @@ -10,31 +10,30 @@ data: name: prometheus namespace: vela-system spec: - appTemplate: - spec: - components: - - name: prometheus - properties: - chart: premetheus - repoType: helm - url: https://prometheus-community.github.io/helm-charts - type: helm - status: - rollout: - batchRollingState: "" - currentBatch: 0 - lastTargetAppRevision: "" - rollingState: "" - upgradedReadyReplicas: 0 - upgradedReplicas: 0 - dependsOn: - - ref: - apiVersion: core.oam.dev/v1beta1 - kind: Initializer - name: fluxcd - namespace: vela-system + components: + - name: prometheus + properties: + chart: premetheus + repoType: helm + url: https://prometheus-community.github.io/helm-charts + type: helm + workflow: + steps: + - name: checking-depends-on + properties: + name: fluxcd + namespace: vela-system + type: depends-on-app + - name: apply-resources + type: apply-application status: - observedGeneration: 0 + rollout: + batchRollingState: "" + currentBatch: 0 + lastTargetAppRevision: "" + rollingState: "" + upgradedReadyReplicas: 0 + upgradedReplicas: 0 kind: ConfigMap metadata: annotations: diff --git a/charts/vela-core/templates/addons/terraform-provider-alibaba.yaml b/charts/vela-core/templates/addons/terraform-provider-alibaba.yaml index 48d8b0eb0..23c63eb3d 100644 --- a/charts/vela-core/templates/addons/terraform-provider-alibaba.yaml +++ b/charts/vela-core/templates/addons/terraform-provider-alibaba.yaml @@ -1,8 +1,8 @@ apiVersion: v1 data: - initializer: | + application: | apiVersion: core.oam.dev/v1beta1 - kind: Initializer + kind: Application metadata: annotations: addons.oam.dev/description: Kubernetes Terraform Controller for Alibaba Cloud @@ -10,50 +10,46 @@ data: name: terraform-provider-alibaba namespace: default spec: - appTemplate: - spec: - components: - - name: alibaba-account-creds - properties: - apiVersion: v1 - kind: Secret - metadata: + components: + - name: alibaba-account-creds + properties: + apiVersion: v1 + kind: Secret + metadata: + name: alibaba-provider-secret + namespace: vela-system + stringData: + credentials: | + accessKeyID: [[ index .Args "ALICLOUD_ACCESS_KEY" ]] + accessKeySecret: [[ index .Args "ALICLOUD_SECRET_KEY" ]] + securityToken: [[ index .Args "ALICLOUD_SECURITY_TOKEN" ]] + type: Opaque + type: raw + - name: default + properties: + apiVersion: terraform.core.oam.dev/v1beta1 + kind: Provider + metadata: + name: default + namespace: default + spec: + credentials: + secretRef: + key: credentials name: alibaba-account-creds namespace: vela-system - stringData: - credentials: | - accessKeyID: [[ index .Args "ALICLOUD_ACCESS_KEY" ]] - accessKeySecret: [[ index .Args "ALICLOUD_SECRET_KEY" ]] - securityToken: [[ index .Args "ALICLOUD_SECURITY_TOKEN" ]] - type: Opaque - type: raw - - name: default - properties: - apiVersion: terraform.core.oam.dev/v1beta1 - kind: Provider - metadata: - name: default - namespace: default - spec: - credentials: - secretRef: - key: credentials - name: alibaba-account-creds - namespace: vela-system - source: Secret - provider: alibaba - region: '[[ index .Args "ALICLOUD_REGION" ]]' - type: raw - status: - rollout: - batchRollingState: "" - currentBatch: 0 - lastTargetAppRevision: "" - rollingState: "" - upgradedReadyReplicas: 0 - upgradedReplicas: 0 + source: Secret + provider: alibaba + region: '[[ index .Args "ALICLOUD_REGION" ]]' + type: raw status: - observedGeneration: 0 + rollout: + batchRollingState: "" + currentBatch: 0 + lastTargetAppRevision: "" + rollingState: "" + upgradedReadyReplicas: 0 + upgradedReplicas: 0 kind: ConfigMap metadata: annotations: diff --git a/charts/vela-core/templates/addons/terraform-provider-azure.yaml b/charts/vela-core/templates/addons/terraform-provider-azure.yaml index 1a9ddc806..86abd4c89 100644 --- a/charts/vela-core/templates/addons/terraform-provider-azure.yaml +++ b/charts/vela-core/templates/addons/terraform-provider-azure.yaml @@ -1,8 +1,8 @@ apiVersion: v1 data: - initializer: | + application: | apiVersion: core.oam.dev/v1beta1 - kind: Initializer + kind: Application metadata: annotations: addons.oam.dev/description: Kubernetes Terraform Controller for Azure @@ -10,50 +10,46 @@ data: name: terraform-provider-azure namespace: default spec: - appTemplate: - spec: - components: - - name: azure-account-creds - properties: - apiVersion: v1 - kind: Secret - metadata: + components: + - name: azure-account-creds + properties: + apiVersion: v1 + kind: Secret + metadata: + name: azure-account-creds + namespace: vela-system + stringData: + credentials: | + armClientID: [[ index .Args "ARM_CLIENT_ID" ]] + armClientSecret: [[ index .Args "ARM_CLIENT_SECRET" ]] + armSubscriptionID: [[ index .Args "ARM_SUBSCRIPTION_ID" ]] + armTenantID: [[ index .Args "ARM_TENANT_ID" ]] + type: Opaque + type: raw + - name: azure + properties: + apiVersion: terraform.core.oam.dev/v1beta1 + kind: Provider + metadata: + name: azure + namespace: default + spec: + credentials: + secretRef: + key: credentials name: azure-account-creds namespace: vela-system - stringData: - credentials: | - armClientID: [[ index .Args "ARM_CLIENT_ID" ]] - armClientSecret: [[ index .Args "ARM_CLIENT_SECRET" ]] - armSubscriptionID: [[ index .Args "ARM_SUBSCRIPTION_ID" ]] - armTenantID: [[ index .Args "ARM_TENANT_ID" ]] - type: Opaque - type: raw - - name: azure - properties: - apiVersion: terraform.core.oam.dev/v1beta1 - kind: Provider - metadata: - name: azure - namespace: default - spec: - credentials: - secretRef: - key: credentials - name: azure-account-creds - namespace: vela-system - source: Secret - provider: azure - type: raw - status: - rollout: - batchRollingState: "" - currentBatch: 0 - lastTargetAppRevision: "" - rollingState: "" - upgradedReadyReplicas: 0 - upgradedReplicas: 0 + source: Secret + provider: azure + type: raw status: - observedGeneration: 0 + rollout: + batchRollingState: "" + currentBatch: 0 + lastTargetAppRevision: "" + rollingState: "" + upgradedReadyReplicas: 0 + upgradedReplicas: 0 kind: ConfigMap metadata: annotations: diff --git a/charts/vela-core/templates/addons/terraform.yaml b/charts/vela-core/templates/addons/terraform.yaml index 9f22d12a3..00a6e75e8 100644 --- a/charts/vela-core/templates/addons/terraform.yaml +++ b/charts/vela-core/templates/addons/terraform.yaml @@ -1,8 +1,8 @@ apiVersion: v1 data: - initializer: | + application: | apiVersion: core.oam.dev/v1beta1 - kind: Initializer + kind: Application metadata: annotations: addons.oam.dev/description: Terraform Controller is a Kubernetes Controller for @@ -10,443 +10,446 @@ data: name: terraform namespace: vela-system spec: - appTemplate: - spec: - components: - - name: terraform-controller - properties: - chart: terraform-controller - repoType: helm - url: https://charts.kubevela.net/addons - version: 0.1.19 - type: helm - - name: terraform-system - properties: - apiVersion: v1 - kind: Namespace - metadata: - name: terraform-system - type: raw - - name: alibaba-ack - properties: - apiVersion: core.oam.dev/v1beta1 - kind: ComponentDefinition - metadata: - annotations: - definition.oam.dev/description: Terraform configuration for Alibaba - Cloud ACK cluster - labels: - type: terraform - name: alibaba-ack - namespace: vela-system - spec: - schematic: - terraform: - configuration: | - module "kubernetes" { - source = "github.com/zzxwill/terraform-alicloud-kubernetes" - new_nat_gateway = true - vpc_name = var.vpc_name - vpc_cidr = var.vpc_cidr - vswitch_name_prefix = var.vswitch_name_prefix - vswitch_cidrs = var.vswitch_cidrs - master_instance_types = var.master_instance_types - worker_instance_types = var.worker_instance_types - k8s_pod_cidr = var.k8s_pod_cidr - k8s_service_cidr = var.k8s_service_cidr - k8s_worker_number = var.k8s_worker_number - cpu_core_count = var.cpu_core_count - memory_size = var.memory_size - zone_id = var.zone_id - k8s_version = var.k8s_version - k8s_name_prefix = var.k8s_name_prefix - } - ###################### - # Instance types variables - ###################### - variable "cpu_core_count" { - description = "CPU core count is used to fetch instance types." - type = number - default = 4 - } - variable "memory_size" { - description = "Memory size used to fetch instance types." - type = number - default = 8 - } - ###################### - # VPC variables - ###################### - variable "vpc_name" { - description = "The vpc name used to create a new vpc when 'vpc_id' is not specified. Default to variable `example_name`" - type = string - default = "tf-k8s-vpc" - } - variable "vpc_cidr" { - description = "The cidr block used to launch a new vpc when 'vpc_id' is not specified." - type = string - default = "10.0.0.0/8" - } - ###################### - # VSwitch variables - ###################### - variable "vswitch_name_prefix" { - type = string - description = "The vswitch name prefix used to create several new vswitches. Default to variable 'example_name'." - default = "tf-k8s-vsw" - } - variable "number_format" { - description = "The number format used to output." - type = string - default = "%02d" - } - variable "vswitch_ids" { - description = "List of existing vswitch id." - type = list - default = [] - } - variable "vswitch_cidrs" { - description = "List of cidr blocks used to create several new vswitches when 'vswitch_ids' is not specified." - type = list - default = [ - "10.1.0.0/16", - "10.2.0.0/16", - "10.3.0.0/16"] - } - variable "k8s_name_prefix" { - description = "The name prefix used to create several kubernetes clusters. Default to variable `example_name`" - type = string - default = "poc" - } - variable "new_nat_gateway" { - type = bool - description = "Whether to create a new nat gateway. In this template, a new nat gateway will create a nat gateway, eip and server snat entries." - default = true - } - variable "master_instance_types" { - description = "The ecs instance types used to launch master nodes." - type = list - default = [ - # hongkong - "ecs.sn1ne.xlarge", - # hongkong - "ecs.c6.xlarge", - # hongkong - "ecs.c4.xlarge", - # hongkong - "ecs.c5.xlarge", - "ecs.n4.xlarge", - # "ecs.n1.large", - # "ecs.sn1.large", - # "ecs.s6-c1m2.xlarge", - # "ecs.c6e.xlarge" - ] - } - variable "worker_instance_types" { - description = "The ecs instance types used to launch worker nodes." - type = list - default = [ - # hongkong - "ecs.sn1ne.xlarge", - # hongkong - "ecs.c6.xlarge", - # hongkong - "ecs.c4.xlarge", - # hongkong - "ecs.c6e.xlarge", - "ecs.n4.xlarge", - // "ecs.n1.large", - // "ecs.sn1.large", - // "ecs.s6-c1m2.xlarge" - ] - } - variable "node_cidr_mask" { - type = number - description = "The node cidr block to specific how many pods can run on single node. Valid values: [24-28]." - default = 24 - } - variable "enable_ssh" { - description = "Enable login to the node through SSH." - type = bool - default = true - } - variable "install_cloud_monitor" { - description = "Install cloud monitor agent on ECS." - type = bool - default = true - } - variable "cpu_policy" { - type = string - description = "kubelet cpu policy. Valid values: 'none','static'. Default to 'none'." - default = "none" - } - variable "proxy_mode" { - description = "Proxy mode is option of kube-proxy. Valid values: 'ipvs','iptables'. Default to 'iptables'." - type = string - default = "iptables" - } - variable "password" { - description = "The password of ECS instance." - type = string - default = "Just4Test" - } - variable "k8s_worker_number" { - description = "The number of worker nodes in kubernetes cluster." - type = number - default = 2 - } - # k8s_pod_cidr is only for flannel network - variable "k8s_pod_cidr" { - description = "The kubernetes pod cidr block. It cannot be equals to vpc's or vswitch's and cannot be in them." - type = string - default = "172.20.0.0/16" - } - variable "k8s_service_cidr" { - description = "The kubernetes service cidr block. It cannot be equals to vpc's or vswitch's or pod's and cannot be in them." - type = string - default = "192.168.0.0/16" - } - variable "k8s_version" { - description = "The version of the kubernetes version. Valid values: '1.16.6-aliyun.1','1.14.8-aliyun.1'. Default to '1.16.6-aliyun.1'." - type = string - default = "1.20.4-aliyun.1" - } - variable "zone_id" { - description = "Availability Zone ID" - type = string - default = "cn-hongkong-b" - # "cn-beijing-a" - } - output "name" { - value = module.kubernetes.name - } - output "kubeconfig" { - value = module.kubernetes.kubeconfig - } - output "cluster_ca_cert" { - value = module.kubernetes.cluster_ca_cert - } - output "client_cert" { - value = module.kubernetes.client_cert - } - output "client_key" { - value = module.kubernetes.client_key - } - output "api_server_internet" { - value = module.kubernetes.api_server_internet - } - workload: - definition: - apiVersion: terraform.core.oam.dev/v1beta1 - kind: Configuration - type: raw - - name: alibaba-eip - properties: - apiVersion: core.oam.dev/v1alpha2 - kind: ComponentDefinition - metadata: - annotations: - definition.oam.dev/description: Terraform configuration for Alibaba - Cloud Elastic IP - labels: - type: terraform - name: alibaba-eip - namespace: vela-system - spec: - schematic: - terraform: - configuration: https://github.com/oam-dev/terraform-alibaba-eip.git - type: remote - workload: - definition: - apiVersion: terraform.core.oam.dev/v1beta1 - kind: Configuration - type: raw - - name: alibaba-oss - properties: - apiVersion: core.oam.dev/v1alpha2 - kind: ComponentDefinition - metadata: - annotations: - definition.oam.dev/description: Terraform configuration for Alibaba - Cloud OSS object - labels: - type: terraform - name: alibaba-oss - namespace: vela-system - spec: - schematic: - terraform: - configuration: "resource \"alicloud_oss_bucket\" \"bucket-acl\" {\n - \ bucket = var.bucket\n acl = var.acl\n}\noutput \"BUCKET_NAME\" - {\n value = \"${alicloud_oss_bucket.bucket-acl.bucket}.${alicloud_oss_bucket.bucket-acl.extranet_endpoint}\"\n}\nvariable - \"bucket\" {\n description = \"OSS bucket name\"\n default = \"vela-website\"\n - \ type = string\n}\nvariable \"acl\" {\n description = \"OSS bucket - ACL, supported 'private', 'public-read', 'public-read-write'\"\n - \ default = \"private\"\n type = string\n} \n" - workload: - definition: - apiVersion: terraform.core.oam.dev/v1beta1 - kind: Configuration - type: raw - - name: alibaba-rds - properties: - apiVersion: core.oam.dev/v1alpha2 - kind: ComponentDefinition - metadata: - annotations: - definition.oam.dev/description: Terraform configuration for Alibaba - Cloud RDS object - labels: - type: terraform - name: alibaba-rds - namespace: vela-system - spec: - schematic: - terraform: - configuration: | - module "rds" { - source = "terraform-alicloud-modules/rds/alicloud" - engine = "MySQL" - engine_version = "8.0" - instance_type = "rds.mysql.c1.large" - instance_storage = "20" - instance_name = var.instance_name - account_name = var.account_name - password = var.password - } - - output "DB_NAME" { - value = module.rds.this_db_instance_name - } - output "DB_USER" { - value = module.rds.this_db_database_account - } - output "DB_PORT" { - value = module.rds.this_db_instance_port - } - output "DB_HOST" { - value = module.rds.this_db_instance_connection_string - } - output "DB_PASSWORD" { - value = var.password - } - - variable "instance_name" { - description = "RDS instance name" - type = string - default = "poc" - } - - variable "account_name" { - description = "RDS instance user account name" - type = string - default = "oam" - } - - variable "password" { - description = "RDS instance account password" - type = string - default = "Xyfff83jfewGGfaked" - } - workload: - definition: - apiVersion: terraform.core.oam.dev/v1beta1 - kind: Configuration - type: raw - - name: azure-database-mariadb - properties: - apiVersion: core.oam.dev/v1alpha2 - kind: ComponentDefinition - metadata: - annotations: - definition.oam.dev/description: Terraform configuration for Azure Database - Mariadb - provider: azure - labels: - type: terraform - name: azure-database-mariadb - namespace: vela-system - spec: - schematic: - terraform: - configuration: | - # Configure the Microsoft Azure Provider - provider "azurerm" { - features {} - } - - resource "azurerm_resource_group" "example" { - name = "tfex-mariadb-database-RG" - location = "West Europe" - } - - resource "azurerm_mariadb_server" "example" { - name = "mariadb-svr-sample" - location = azurerm_resource_group.example.location - resource_group_name = azurerm_resource_group.example.name - - sku_name = "B_Gen5_2" - - storage_mb = 51200 - backup_retention_days = 7 - geo_redundant_backup_enabled = false - - administrator_login = var.username - administrator_login_password = var.password - version = "10.2" - ssl_enforcement_enabled = true - } - - resource "azurerm_mariadb_database" "example" { - name = var.name - resource_group_name = azurerm_resource_group.example.name - server_name = azurerm_mariadb_server.example.name - charset = "utf8" - collation = "utf8_general_ci" - } - - variable "name" { - default = "mariadb_database" - type = string - description = "Database instance name" - } - - variable "username" { - default = "acctestun" - type = string - description = "Database instance username" - } - - variable "password" { - default = "H@Sh1CoR3!faked" - type = string - description = "Database instance password" - } - providerRef: - name: azure - namespace: default - workload: - definition: - apiVersion: terraform.core.oam.dev/v1beta1 - kind: Configuration - type: raw - status: - rollout: - batchRollingState: "" - currentBatch: 0 - lastTargetAppRevision: "" - rollingState: "" - upgradedReadyReplicas: 0 - upgradedReplicas: 0 - dependsOn: - - ref: + components: + - name: ns-terraform-system + properties: + apiVersion: v1 + kind: Namespace + metadata: + name: terraform-system + type: raw + - name: terraform-controller + properties: + chart: terraform-controller + repoType: helm + url: https://charts.kubevela.net/addons + version: 0.1.19 + type: helm + - name: alibaba-ack + properties: apiVersion: core.oam.dev/v1beta1 - kind: Initializer - name: fluxcd - namespace: vela-system + kind: ComponentDefinition + metadata: + annotations: + definition.oam.dev/description: Terraform configuration for Alibaba Cloud + ACK cluster + labels: + type: terraform + name: alibaba-ack + namespace: vela-system + spec: + schematic: + terraform: + configuration: | + module "kubernetes" { + source = "github.com/zzxwill/terraform-alicloud-kubernetes" + new_nat_gateway = true + vpc_name = var.vpc_name + vpc_cidr = var.vpc_cidr + vswitch_name_prefix = var.vswitch_name_prefix + vswitch_cidrs = var.vswitch_cidrs + master_instance_types = var.master_instance_types + worker_instance_types = var.worker_instance_types + k8s_pod_cidr = var.k8s_pod_cidr + k8s_service_cidr = var.k8s_service_cidr + k8s_worker_number = var.k8s_worker_number + cpu_core_count = var.cpu_core_count + memory_size = var.memory_size + zone_id = var.zone_id + k8s_version = var.k8s_version + k8s_name_prefix = var.k8s_name_prefix + } + ###################### + # Instance types variables + ###################### + variable "cpu_core_count" { + description = "CPU core count is used to fetch instance types." + type = number + default = 4 + } + variable "memory_size" { + description = "Memory size used to fetch instance types." + type = number + default = 8 + } + ###################### + # VPC variables + ###################### + variable "vpc_name" { + description = "The vpc name used to create a new vpc when 'vpc_id' is not specified. Default to variable `example_name`" + type = string + default = "tf-k8s-vpc" + } + variable "vpc_cidr" { + description = "The cidr block used to launch a new vpc when 'vpc_id' is not specified." + type = string + default = "10.0.0.0/8" + } + ###################### + # VSwitch variables + ###################### + variable "vswitch_name_prefix" { + type = string + description = "The vswitch name prefix used to create several new vswitches. Default to variable 'example_name'." + default = "tf-k8s-vsw" + } + variable "number_format" { + description = "The number format used to output." + type = string + default = "%02d" + } + variable "vswitch_ids" { + description = "List of existing vswitch id." + type = list + default = [] + } + variable "vswitch_cidrs" { + description = "List of cidr blocks used to create several new vswitches when 'vswitch_ids' is not specified." + type = list + default = [ + "10.1.0.0/16", + "10.2.0.0/16", + "10.3.0.0/16"] + } + variable "k8s_name_prefix" { + description = "The name prefix used to create several kubernetes clusters. Default to variable `example_name`" + type = string + default = "poc" + } + variable "new_nat_gateway" { + type = bool + description = "Whether to create a new nat gateway. In this template, a new nat gateway will create a nat gateway, eip and server snat entries." + default = true + } + variable "master_instance_types" { + description = "The ecs instance types used to launch master nodes." + type = list + default = [ + # hongkong + "ecs.sn1ne.xlarge", + # hongkong + "ecs.c6.xlarge", + # hongkong + "ecs.c4.xlarge", + # hongkong + "ecs.c5.xlarge", + "ecs.n4.xlarge", + # "ecs.n1.large", + # "ecs.sn1.large", + # "ecs.s6-c1m2.xlarge", + # "ecs.c6e.xlarge" + ] + } + variable "worker_instance_types" { + description = "The ecs instance types used to launch worker nodes." + type = list + default = [ + # hongkong + "ecs.sn1ne.xlarge", + # hongkong + "ecs.c6.xlarge", + # hongkong + "ecs.c4.xlarge", + # hongkong + "ecs.c6e.xlarge", + "ecs.n4.xlarge", + // "ecs.n1.large", + // "ecs.sn1.large", + // "ecs.s6-c1m2.xlarge" + ] + } + variable "node_cidr_mask" { + type = number + description = "The node cidr block to specific how many pods can run on single node. Valid values: [24-28]." + default = 24 + } + variable "enable_ssh" { + description = "Enable login to the node through SSH." + type = bool + default = true + } + variable "install_cloud_monitor" { + description = "Install cloud monitor agent on ECS." + type = bool + default = true + } + variable "cpu_policy" { + type = string + description = "kubelet cpu policy. Valid values: 'none','static'. Default to 'none'." + default = "none" + } + variable "proxy_mode" { + description = "Proxy mode is option of kube-proxy. Valid values: 'ipvs','iptables'. Default to 'iptables'." + type = string + default = "iptables" + } + variable "password" { + description = "The password of ECS instance." + type = string + default = "Just4Test" + } + variable "k8s_worker_number" { + description = "The number of worker nodes in kubernetes cluster." + type = number + default = 2 + } + # k8s_pod_cidr is only for flannel network + variable "k8s_pod_cidr" { + description = "The kubernetes pod cidr block. It cannot be equals to vpc's or vswitch's and cannot be in them." + type = string + default = "172.20.0.0/16" + } + variable "k8s_service_cidr" { + description = "The kubernetes service cidr block. It cannot be equals to vpc's or vswitch's or pod's and cannot be in them." + type = string + default = "192.168.0.0/16" + } + variable "k8s_version" { + description = "The version of the kubernetes version. Valid values: '1.16.6-aliyun.1','1.14.8-aliyun.1'. Default to '1.16.6-aliyun.1'." + type = string + default = "1.20.4-aliyun.1" + } + variable "zone_id" { + description = "Availability Zone ID" + type = string + default = "cn-hongkong-b" + # "cn-beijing-a" + } + output "name" { + value = module.kubernetes.name + } + output "kubeconfig" { + value = module.kubernetes.kubeconfig + } + output "cluster_ca_cert" { + value = module.kubernetes.cluster_ca_cert + } + output "client_cert" { + value = module.kubernetes.client_cert + } + output "client_key" { + value = module.kubernetes.client_key + } + output "api_server_internet" { + value = module.kubernetes.api_server_internet + } + workload: + definition: + apiVersion: terraform.core.oam.dev/v1beta1 + kind: Configuration + type: raw + - name: alibaba-eip + properties: + apiVersion: core.oam.dev/v1alpha2 + kind: ComponentDefinition + metadata: + annotations: + definition.oam.dev/description: Terraform configuration for Alibaba Cloud + Elastic IP + labels: + type: terraform + name: alibaba-eip + namespace: vela-system + spec: + schematic: + terraform: + configuration: https://github.com/oam-dev/terraform-alibaba-eip.git + type: remote + workload: + definition: + apiVersion: terraform.core.oam.dev/v1beta1 + kind: Configuration + type: raw + - name: alibaba-oss + properties: + apiVersion: core.oam.dev/v1alpha2 + kind: ComponentDefinition + metadata: + annotations: + definition.oam.dev/description: Terraform configuration for Alibaba Cloud + OSS object + labels: + type: terraform + name: alibaba-oss + namespace: vela-system + spec: + schematic: + terraform: + configuration: "resource \"alicloud_oss_bucket\" \"bucket-acl\" {\n bucket + = var.bucket\n acl = var.acl\n}\noutput \"BUCKET_NAME\" {\n value + = \"${alicloud_oss_bucket.bucket-acl.bucket}.${alicloud_oss_bucket.bucket-acl.extranet_endpoint}\"\n}\nvariable + \"bucket\" {\n description = \"OSS bucket name\"\n default = \"vela-website\"\n + \ type = string\n}\nvariable \"acl\" {\n description = \"OSS bucket + ACL, supported 'private', 'public-read', 'public-read-write'\"\n default + = \"private\"\n type = string\n} \n" + workload: + definition: + apiVersion: terraform.core.oam.dev/v1beta1 + kind: Configuration + type: raw + - name: alibaba-rds + properties: + apiVersion: core.oam.dev/v1alpha2 + kind: ComponentDefinition + metadata: + annotations: + definition.oam.dev/description: Terraform configuration for Alibaba Cloud + RDS object + labels: + type: terraform + name: alibaba-rds + namespace: vela-system + spec: + schematic: + terraform: + configuration: | + module "rds" { + source = "terraform-alicloud-modules/rds/alicloud" + engine = "MySQL" + engine_version = "8.0" + instance_type = "rds.mysql.c1.large" + instance_storage = "20" + instance_name = var.instance_name + account_name = var.account_name + password = var.password + } + + output "DB_NAME" { + value = module.rds.this_db_instance_name + } + output "DB_USER" { + value = module.rds.this_db_database_account + } + output "DB_PORT" { + value = module.rds.this_db_instance_port + } + output "DB_HOST" { + value = module.rds.this_db_instance_connection_string + } + output "DB_PASSWORD" { + value = var.password + } + + variable "instance_name" { + description = "RDS instance name" + type = string + default = "poc" + } + + variable "account_name" { + description = "RDS instance user account name" + type = string + default = "oam" + } + + variable "password" { + description = "RDS instance account password" + type = string + default = "Xyfff83jfewGGfaked" + } + workload: + definition: + apiVersion: terraform.core.oam.dev/v1beta1 + kind: Configuration + type: raw + - name: azure-database-mariadb + properties: + apiVersion: core.oam.dev/v1alpha2 + kind: ComponentDefinition + metadata: + annotations: + definition.oam.dev/description: Terraform configuration for Azure Database + Mariadb + provider: azure + labels: + type: terraform + name: azure-database-mariadb + namespace: vela-system + spec: + schematic: + terraform: + configuration: | + # Configure the Microsoft Azure Provider + provider "azurerm" { + features {} + } + + resource "azurerm_resource_group" "example" { + name = "tfex-mariadb-database-RG" + location = "West Europe" + } + + resource "azurerm_mariadb_server" "example" { + name = "mariadb-svr-sample" + location = azurerm_resource_group.example.location + resource_group_name = azurerm_resource_group.example.name + + sku_name = "B_Gen5_2" + + storage_mb = 51200 + backup_retention_days = 7 + geo_redundant_backup_enabled = false + + administrator_login = var.username + administrator_login_password = var.password + version = "10.2" + ssl_enforcement_enabled = true + } + + resource "azurerm_mariadb_database" "example" { + name = var.name + resource_group_name = azurerm_resource_group.example.name + server_name = azurerm_mariadb_server.example.name + charset = "utf8" + collation = "utf8_general_ci" + } + + variable "name" { + default = "mariadb_database" + type = string + description = "Database instance name" + } + + variable "username" { + default = "acctestun" + type = string + description = "Database instance username" + } + + variable "password" { + default = "H@Sh1CoR3!faked" + type = string + description = "Database instance password" + } + providerRef: + name: azure + namespace: default + workload: + definition: + apiVersion: terraform.core.oam.dev/v1beta1 + kind: Configuration + type: raw + workflow: + steps: + - name: checking-depends-on + properties: + name: fluxcd + namespace: vela-system + type: depends-on-app + - name: apply-ns + properties: + component: ns-terraform-system + type: apply-component + - name: apply-resources + type: apply-remaining status: - observedGeneration: 0 + rollout: + batchRollingState: "" + currentBatch: 0 + lastTargetAppRevision: "" + rollingState: "" + upgradedReadyReplicas: 0 + upgradedReplicas: 0 kind: ConfigMap metadata: annotations: diff --git a/e2e/addon/addon_test.go b/e2e/addon/addon_test.go index 74aa6d4b7..7d0495a8b 100644 --- a/e2e/addon/addon_test.go +++ b/e2e/addon/addon_test.go @@ -38,12 +38,12 @@ var _ = Describe("Addon Test", func() { k8sClient, err := args.GetClient() Expect(err).Should(BeNil()) It("Apply test addon", func() { - Expect(yaml.Unmarshal([]byte(test_addon), &cmSimpleAddon)).Should(BeNil()) + Expect(yaml.Unmarshal([]byte(testAddon), &cmSimpleAddon)).Should(BeNil()) err = k8sClient.Create(context.Background(), &cmSimpleAddon) Expect(err).Should(SatisfyAny(BeNil(), &util.AlreadyExistMatcher{})) }) It("Apply test input addon", func() { - Expect(yaml.Unmarshal([]byte(test_input_addon), &cmInputAddon)).Should(BeNil()) + Expect(yaml.Unmarshal([]byte(testInputAddon), &cmInputAddon)).Should(BeNil()) err = k8sClient.Create(context.Background(), &cmInputAddon) Expect(err).Should(SatisfyAny(BeNil(), &util.AlreadyExistMatcher{})) }) @@ -100,7 +100,7 @@ var _ = Describe("Addon Test", func() { }) -var test_addon = ` +var testAddon = ` apiVersion: v1 kind: ConfigMap metadata: @@ -112,33 +112,46 @@ metadata: name: test-addon namespace: vela-system data: - initializer: | + application: | apiVersion: core.oam.dev/v1beta1 - kind: Initializer + kind: Application metadata: annotations: addons.oam.dev/description: This is a addon for e2e test name: test-addon - namespace: test-addon-system + namespace: vela-system spec: - appTemplate: - spec: - components: - - name: test-addon-pod - type: raw - properties: - apiVersion: v1 - kind: Pod - metadata: - name: test-addon-pod - namespace: test-addon-system - spec: - containers: - - name: test-addon-pod-container - image: nginx + workflow: + steps: + - name: apply-ns + type: apply-component + properties: + component: ns-test-addon-system + - name: apply-resources + type: apply-remaining + components: + - name: ns-test-addon-system + type: raw + properties: + apiVersion: v1 + kind: Namespace + metadata: + name: test-addon-system + - name: test-addon-pod + type: raw + properties: + apiVersion: v1 + kind: Pod + metadata: + name: test-addon-pod + spec: + namespace: test-addon-system + containers: + - name: test-addon-pod-container + image: nginx ` -var test_input_addon = ` +var testInputAddon = ` kind: ConfigMap metadata: annotations: @@ -150,38 +163,20 @@ metadata: namespace: vela-system apiVersion: v1 data: - initializer: | + application: | apiVersion: core.oam.dev/v1beta1 - kind: Initializer + kind: Application metadata: annotations: addons.oam.dev/description: This is a test addon for test addon input name: test-input-addon namespace: vela-system spec: - appTemplate: - spec: - components: - - name: test-chart - properties: - chart: [[ index .Args "chart" ]] - repoType: helm - url: [[ index .Args "url" ]] - type: helm - status: - rollout: - batchRollingState: "" - currentBatch: 0 - lastTargetAppRevision: "" - rollingState: "" - upgradedReadyReplicas: 0 - upgradedReplicas: 0 - dependsOn: - - ref: - apiVersion: core.oam.dev/v1beta1 - kind: Initializer - name: fluxcd - namespace: vela-system - status: - observedGeneration: 0 + components: + - name: test-chart + properties: + chart: [[ index .Args "chart" ]] + repoType: helm + url: [[ index .Args "url" ]] + type: helm ` diff --git a/pkg/oam/labels.go b/pkg/oam/labels.go index 856ea7597..f879b5e2b 100644 --- a/pkg/oam/labels.go +++ b/pkg/oam/labels.go @@ -122,4 +122,7 @@ const ( // AnnotationAddonsName records the name of initializer stored in configMap AnnotationAddonsName = "addons.oam.dev/name" + + // AnnotationLastAppliedConfiguration is kubectl annotations for 3-way merge + AnnotationLastAppliedConfiguration = "kubectl.kubernetes.io/last-applied-configuration" ) diff --git a/references/cli/addon.go b/references/cli/addon.go index e5c534fc6..d5c8f1570 100644 --- a/references/cli/addon.go +++ b/references/cli/addon.go @@ -24,12 +24,13 @@ import ( "text/template" "time" + common2 "github.com/oam-dev/kubevela/apis/core.oam.dev/common" + "github.com/Masterminds/sprig" "github.com/gosuri/uitable" "github.com/pkg/errors" "github.com/spf13/cobra" v1 "k8s.io/api/core/v1" - errors2 "k8s.io/apimachinery/pkg/api/errors" "k8s.io/apimachinery/pkg/api/meta" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" @@ -59,9 +60,26 @@ var statusInstalled = "installed" var clt client.Client var clientArgs common.Args +var legacyAddonNamespace map[string]string + func init() { clientArgs, _ = common.InitBaseRestConfig() clt, _ = clientArgs.GetClient() + legacyAddonNamespace = map[string]string{ + "fluxcd": types.DefaultKubeVelaNS, + "ns-flux-system": types.DefaultKubeVelaNS, + "kruise": types.DefaultKubeVelaNS, + "prometheus": types.DefaultKubeVelaNS, + "observability": "observability", + "observability-asset": types.DefaultKubeVelaNS, + "istio": "istio-system", + "ns-istio-system": types.DefaultKubeVelaNS, + "keda": types.DefaultKubeVelaNS, + "ocm-cluster-manager": types.DefaultKubeVelaNS, + "terraform": types.DefaultKubeVelaNS, + "terraform-provider/alibaba": "default", + "terraform-provider/azure": "default", + } } // NewAddonCommand create `addon` command @@ -85,9 +103,10 @@ func NewAddonCommand(c common.Args, ioStreams cmdutil.IOStreams) *cobra.Command // NewAddonListCommand create addon list command func NewAddonListCommand() *cobra.Command { return &cobra.Command{ - Use: "list", - Short: "List addons", - Long: "List addons in KubeVela", + Use: "list", + Aliases: []string{"ls"}, + Short: "List addons", + Long: "List addons in KubeVela", RunE: func(cmd *cobra.Command, args []string) error { err := listAddons() if err != nil { @@ -118,6 +137,7 @@ func NewAddonEnableCommand(ioStream cmdutil.IOStreams) *cobra.Command { if err != nil { return err } + fmt.Printf("Successfully enable addon:%s\n", name) return nil }, } @@ -155,6 +175,7 @@ func NewAddonDisableCommand(ioStream cmdutil.IOStreams) *cobra.Command { if err != nil { return err } + fmt.Printf("Successfully disable addon:%s\n", name) return nil }, } @@ -167,9 +188,9 @@ func listAddons() error { } addons := repo.listAddons() table := uitable.New() - table.AddRow("NAME", "DESCRIPTION", "STATUS", "IN-NAMESPACE") + table.AddRow("NAME", "DESCRIPTION", "STATUS") for _, addon := range addons { - table.AddRow(addon.name, addon.description, addon.getStatus(), addon.addonNamespace) + table.AddRow(addon.name, addon.description, addon.getStatus()) } fmt.Println(table.String()) return nil @@ -186,38 +207,65 @@ func enableAddon(name string, args map[string]string) error { } addon.setArgs(args) err = addon.enable() - if err != nil { - return err - } - fmt.Printf("Successfully enable addon:%s\n", addon.name) - return nil + return err } func disableAddon(name string) error { + if isLegacyAddonExist(name) { + return tryDisableInitializerAddon(name) + } repo, err := NewAddonRepo() if err != nil { return err } addon, err := repo.getAddon(name) if err != nil { - return err + return errors.Wrap(err, "get addon err") } if addon.getStatus() == statusUninstalled { fmt.Printf("Addon %s is not installed\n", addon.name) return nil } - err = addon.disable() - if err != nil { - return err + return addon.disable() + +} + +func isLegacyAddonExist(name string) bool { + if namespace, ok := legacyAddonNamespace[name]; ok { + convertedAddonName := TransAddonName(name) + init := unstructured.Unstructured{ + Object: map[string]interface{}{ + "apiVersion": "core.oam.dev/v1beta1", + "kind": "Initializer", + }, + } + err := clt.Get(context.TODO(), client.ObjectKey{ + Namespace: namespace, + Name: convertedAddonName, + }, &init) + return err == nil } - fmt.Printf("Successfully disable addon:%s\n", addon.name) - return nil + return false +} + +func tryDisableInitializerAddon(addonName string) error { + fmt.Printf("Trying to disable addon in initializer implementation...\n") + init := unstructured.Unstructured{ + Object: map[string]interface{}{ + "apiVersion": "core.oam.dev/v1beta1", + "kind": "Initializer", + "metadata": map[string]interface{}{ + "name": TransAddonName(addonName), + "namespace": legacyAddonNamespace[addonName], + }, + }, + } + return clt.Delete(context.TODO(), &init) + } func newAddon(data *v1.ConfigMap) *Addon { description := data.ObjectMeta.Annotations[DescAnnotation] - a := Addon{name: data.Annotations[oam.AnnotationAddonsName], description: description, initYaml: data.Data["initializer"]} - init, _ := a.renderInitializer() - a.addonNamespace = init.GetNamespace() + a := Addon{name: data.Annotations[oam.AnnotationAddonsName], description: description, data: data.Data["application"]} return &a } @@ -251,13 +299,22 @@ type configMapAddonRepo struct { maps []v1.ConfigMap } +// AddonNotFoundErr means addon not found +type AddonNotFoundErr struct { + addonName string +} + +func (e AddonNotFoundErr) Error() string { + return fmt.Sprintf("addon %s not found", e.addonName) +} + func (c configMapAddonRepo) getAddon(name string) (Addon, error) { for i := range c.maps { if addonName, ok := c.maps[i].Annotations[oam.AnnotationAddonsName]; ok && name == addonName { return *newAddon(&c.maps[i]), nil } } - return Addon{}, fmt.Errorf("addon: %s not found", name) + return Addon{}, AddonNotFoundErr{addonName: name} } func (c configMapAddonRepo) listAddons() []Addon { @@ -271,42 +328,41 @@ func (c configMapAddonRepo) listAddons() []Addon { // Addon consist of a Initializer resource to enable an addon type Addon struct { - name string - addonNamespace string // addonNamespace is where Initializer will be apply - description string - initYaml string + name string + description string + data string // Args is map for renderInitializer Args map[string]string - initializer *unstructured.Unstructured + application *unstructured.Unstructured gvk *schema.GroupVersionKind } func (a *Addon) getGVK() (*schema.GroupVersionKind, error) { if a.gvk == nil { - if a.initializer == nil { - _, err := a.renderInitializer() + if a.application == nil { + _, err := a.renderApplication() if err != nil { return nil, err } } - gvk := schema.FromAPIVersionAndKind(a.initializer.GetAPIVersion(), a.initializer.GetKind()) + gvk := schema.FromAPIVersionAndKind(a.application.GetAPIVersion(), a.application.GetKind()) a.gvk = &gvk } return a.gvk, nil } -func (a *Addon) renderInitializer() (*unstructured.Unstructured, error) { +func (a *Addon) renderApplication() (*unstructured.Unstructured, error) { if a.Args == nil { a.Args = map[string]string{} } - t, err := template.New("addon-template").Delims("[[", "]]").Funcs(sprig.TxtFuncMap()).Parse(a.initYaml) + t, err := template.New("addon-template").Delims("[[", "]]").Funcs(sprig.TxtFuncMap()).Parse(a.data) if err != nil { return nil, errors.Wrap(err, "parsing addon initializer template error") } buf := bytes.Buffer{} err = t.Execute(&buf, a) if err != nil { - return nil, errors.Wrap(err, "initializer template render fail") + return nil, errors.Wrap(err, "application template render fail") } dec := yaml.NewDecodingSerializer(unstructured.UnstructuredJSONScheme) obj := &unstructured.Unstructured{} @@ -314,57 +370,44 @@ func (a *Addon) renderInitializer() (*unstructured.Unstructured, error) { if err != nil { return nil, err } - a.initializer = obj + a.application = obj a.gvk = gvk - return a.initializer, nil + return a.application, nil } func (a *Addon) enable() error { applicator := apply.NewAPIApplicator(clt) ctx := context.Background() - obj, err := a.renderInitializer() + obj, err := a.renderApplication() if err != nil { return err } - var ns v1.Namespace - err = clt.Get(ctx, types2.NamespacedName{Name: obj.GetNamespace()}, &ns) - if err != nil && errors2.IsNotFound(err) { - fmt.Printf("Creating namespace: %s\n", obj.GetNamespace()) - err = clt.Create(ctx, &v1.Namespace{ - ObjectMeta: metav1.ObjectMeta{ - Name: obj.GetNamespace(), - }, - }) - } - if err != nil { - return errors.Wrap(err, "Create namespace error") - } err = applicator.Apply(ctx, obj) if err != nil { - return errors.Wrapf(err, "Error occurs when enableing addon: %s\n", a.name) + return errors.Wrapf(err, "Error occurs when apply addon application: %s\n", a.name) } - err = waitForInitializerSuccess(obj) + err = waitApplicationRunning(a.application) if err != nil { - return errors.Wrapf(err, "Error occurs when waiting for addon enabled: %s\n", a.name) + return errors.Wrap(err, "Error occurs when waiting addon applicatoin running") } return nil } -func waitForInitializerSuccess(obj *unstructured.Unstructured) error { +func waitApplicationRunning(obj *unstructured.Unstructured) error { ctx := context.Background() period := 20 * time.Second timeout := 10 * time.Minute - var init v1beta1.Initializer + var app v1beta1.Application return wait.PollImmediate(period, timeout, func() (done bool, err error) { - err = clt.Get(ctx, types2.NamespacedName{Name: obj.GetName(), Namespace: obj.GetNamespace()}, &init) + err = clt.Get(ctx, types2.NamespacedName{Name: obj.GetName(), Namespace: obj.GetNamespace()}, &app) if err != nil { return false, client.IgnoreNotFound(err) } - phase := init.Status.Phase - if phase == v1beta1.InitializerSuccess { + phase := app.Status.Phase + if phase == common2.ApplicationRunning { return true, nil } - fmt.Printf("Initializer %s is in phase:%s...\n", obj.GetName(), phase) + fmt.Printf("Application %s is in phase:%s...\n", obj.GetName(), phase) return false, nil }) } @@ -377,7 +420,7 @@ func (a *Addon) disable() error { if err != nil { return err } - obj, err := a.renderInitializer() + obj, err := a.renderApplication() if err != nil { return err } @@ -410,11 +453,11 @@ func (a *Addon) disable() error { } func (a *Addon) getStatus() string { - var initializer v1beta1.Initializer + var application v1beta1.Application err := clt.Get(context.Background(), client.ObjectKey{ - Namespace: a.addonNamespace, + Namespace: types.DefaultKubeVelaNS, Name: TransAddonName(a.name), - }, &initializer) + }, &application) if err != nil { return statusUninstalled } diff --git a/vela-templates/addons/auto-gen/fluxcd.yaml b/vela-templates/addons/auto-gen/fluxcd.yaml index caec62190..e0340386a 100644 --- a/vela-templates/addons/auto-gen/fluxcd.yaml +++ b/vela-templates/addons/auto-gen/fluxcd.yaml @@ -1,604 +1,629 @@ apiVersion: core.oam.dev/v1beta1 -kind: Initializer +kind: Application metadata: annotations: addons.oam.dev/description: Flux is a set of continuous and progressive delivery solutions for Kubernetes + filter.oam.dev/annotation-keys: app.oam.dev/last-applied-configuration name: fluxcd namespace: vela-system spec: - appTemplate: - spec: - components: - - name: alerts.notification.toolkit.fluxcd.io - properties: - apiVersion: apiextensions.k8s.io/v1 - kind: CustomResourceDefinition - metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.5.0 - labels: - app.kubernetes.io/instance: flux-system - name: alerts.notification.toolkit.fluxcd.io - spec: - group: notification.toolkit.fluxcd.io - names: - kind: Alert - listKind: AlertList - plural: alerts - singular: alert - scope: Namespaced - versions: - - additionalPrinterColumns: - - jsonPath: .status.conditions[?(@.type=="Ready")].status - name: Ready - type: string - - jsonPath: .status.conditions[?(@.type=="Ready")].message - name: Status - type: string - - jsonPath: .metadata.creationTimestamp - name: Age - type: date - name: v1beta1 - schema: - openAPIV3Schema: - description: Alert is the Schema for the alerts API + components: + - name: ns-flux-system + properties: + apiVersion: v1 + kind: Namespace + metadata: + name: flux-system + type: raw + - name: alerts.notification.toolkit.fluxcd.io + properties: + apiVersion: apiextensions.k8s.io/v1 + kind: CustomResourceDefinition + metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.5.0 + labels: + app.kubernetes.io/instance: flux-system + name: alerts.notification.toolkit.fluxcd.io + spec: + group: notification.toolkit.fluxcd.io + names: + kind: Alert + listKind: AlertList + plural: alerts + singular: alert + scope: Namespaced + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=="Ready")].status + name: Ready + type: string + - jsonPath: .status.conditions[?(@.type=="Ready")].message + name: Status + type: string + - jsonPath: .metadata.creationTimestamp + name: Age + type: date + name: v1beta1 + schema: + openAPIV3Schema: + description: Alert is the Schema for the alerts API + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the + latest internal value, and may reject unrecognized values. More + info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource + this object represents. Servers may infer this from the endpoint + the client submits requests to. Cannot be updated. In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: AlertSpec defines an alerting rule for events involving + a list of objects properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this - representation of an object. Servers should convert recognized - schemas to the latest internal value, and may reject unrecognized - values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + eventSeverity: + default: info + description: Filter events based on severity, defaults to ('info'). + If set to 'info' no events will be filtered. + enum: + - info + - error type: string - kind: - description: 'Kind is a string value representing the REST resource - this object represents. Servers may infer this from the endpoint - the client submits requests to. Cannot be updated. In CamelCase. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: AlertSpec defines an alerting rule for events involving - a list of objects + eventSources: + description: Filter events based on the involved objects. + items: + description: CrossNamespaceObjectReference contains enough + information to let you locate the typed referenced object + at cluster level + properties: + apiVersion: + description: API version of the referent + type: string + kind: + description: Kind of the referent + enum: + - Bucket + - GitRepository + - Kustomization + - HelmRelease + - HelmChart + - HelmRepository + - ImageRepository + - ImagePolicy + - ImageUpdateAutomation + type: string + name: + description: Name of the referent + maxLength: 53 + minLength: 1 + type: string + namespace: + description: Namespace of the referent + maxLength: 53 + minLength: 1 + type: string + required: + - name + type: object + type: array + exclusionList: + description: A list of Golang regular expressions to be used + for excluding messages. + items: + type: string + type: array + providerRef: + description: Send events using this provider. properties: - eventSeverity: - default: info - description: Filter events based on severity, defaults to - ('info'). If set to 'info' no events will be filtered. - enum: - - info - - error + name: + description: Name of the referent type: string - eventSources: - description: Filter events based on the involved objects. - items: - description: CrossNamespaceObjectReference contains enough - information to let you locate the typed referenced object - at cluster level + required: + - name + type: object + summary: + description: Short description of the impact and affected cluster. + type: string + suspend: + description: This flag tells the controller to suspend subsequent + events dispatching. Defaults to false. + type: boolean + required: + - eventSources + - providerRef + type: object + status: + description: AlertStatus defines the observed state of Alert + properties: + conditions: + items: + description: "Condition contains details for one aspect of + the current state of this API Resource. --- This struct + is intended for direct use as an array at the field path + .status.conditions. For example, type FooStatus struct{ + \ // Represents the observations of a foo's current state. + \ // Known .status.conditions.type are: \"Available\", + \"Progressing\", and \"Degraded\" // +patchMergeKey=type + \ // +patchStrategy=merge // +listType=map // + +listMapKey=type Conditions []metav1.Condition `json:\"conditions,omitempty\" + patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` + \n // other fields }" + properties: + lastTransitionTime: + description: lastTransitionTime is the last time the condition + transitioned from one status to another. This should + be when the underlying condition changed. If that is + not known, then using the time when the API field changed + is acceptable. + format: date-time + type: string + message: + description: message is a human readable message indicating + details about the transition. This may be an empty string. + maxLength: 32768 + type: string + observedGeneration: + description: observedGeneration represents the .metadata.generation + that the condition was set based upon. For instance, + if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration + is 9, the condition is out of date with respect to the + current state of the instance. + format: int64 + minimum: 0 + type: integer + reason: + description: reason contains a programmatic identifier + indicating the reason for the condition's last transition. + Producers of specific condition types may define expected + values and meanings for this field, and whether the + values are considered a guaranteed API. The value should + be a CamelCase string. This field may not be empty. + maxLength: 1024 + minLength: 1 + pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ + type: string + status: + description: status of the condition, one of True, False, + Unknown. + enum: + - "True" + - "False" + - Unknown + type: string + type: + description: type of condition in CamelCase or in foo.example.com/CamelCase. + --- Many .condition.type values are consistent across + resources like Available, but because arbitrary conditions + can be useful (see .node.status.conditions), the ability + to deconflict is important. The regex it matches is + (dns1123SubdomainFmt/)?(qualifiedNameFmt) + maxLength: 316 + pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ + type: string + required: + - lastTransitionTime + - message + - reason + - status + - type + type: object + type: array + observedGeneration: + description: ObservedGeneration is the last observed generation. + format: int64 + type: integer + type: object + type: object + served: true + storage: true + subresources: + status: {} + type: raw + - name: buckets.source.toolkit.fluxcd.io + properties: + apiVersion: apiextensions.k8s.io/v1 + kind: CustomResourceDefinition + metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.5.0 + labels: + app.kubernetes.io/instance: flux-system + name: buckets.source.toolkit.fluxcd.io + spec: + group: source.toolkit.fluxcd.io + names: + kind: Bucket + listKind: BucketList + plural: buckets + singular: bucket + scope: Namespaced + versions: + - additionalPrinterColumns: + - jsonPath: .spec.url + name: URL + type: string + - jsonPath: .status.conditions[?(@.type=="Ready")].status + name: Ready + type: string + - jsonPath: .status.conditions[?(@.type=="Ready")].message + name: Status + type: string + - jsonPath: .metadata.creationTimestamp + name: Age + type: date + name: v1beta1 + schema: + openAPIV3Schema: + description: Bucket is the Schema for the buckets API + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the + latest internal value, and may reject unrecognized values. More + info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource + this object represents. Servers may infer this from the endpoint + the client submits requests to. Cannot be updated. In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: BucketSpec defines the desired state of an S3 compatible + bucket + properties: + bucketName: + description: The bucket name. + type: string + endpoint: + description: The bucket endpoint address. + type: string + ignore: + description: Ignore overrides the set of excluded patterns in + the .sourceignore format (which is the same as .gitignore). + If not provided, a default will be used, consult the documentation + for your version to find out what those are. + type: string + insecure: + description: Insecure allows connecting to a non-TLS S3 HTTP + endpoint. + type: boolean + interval: + description: The interval at which to check for bucket updates. + type: string + provider: + default: generic + description: The S3 compatible storage provider name, default + ('generic'). + enum: + - generic + - aws + type: string + region: + description: The bucket region. + type: string + secretRef: + description: The name of the secret containing authentication + credentials for the Bucket. + properties: + name: + description: Name of the referent + type: string + required: + - name + type: object + suspend: + description: This flag tells the controller to suspend the reconciliation + of this source. + type: boolean + timeout: + default: 20s + description: The timeout for download operations, defaults to + 20s. + type: string + required: + - bucketName + - endpoint + - interval + type: object + status: + description: BucketStatus defines the observed state of a bucket + properties: + artifact: + description: Artifact represents the output of the last successful + Bucket sync. + properties: + checksum: + description: Checksum is the SHA1 checksum of the artifact. + type: string + lastUpdateTime: + description: LastUpdateTime is the timestamp corresponding + to the last update of this artifact. + format: date-time + type: string + path: + description: Path is the relative file path of this artifact. + type: string + revision: + description: Revision is a human readable identifier traceable + in the origin source system. It can be a Git commit SHA, + Git tag, a Helm index timestamp, a Helm chart version, + etc. + type: string + url: + description: URL is the HTTP address of this artifact. + type: string + required: + - path + - url + type: object + conditions: + description: Conditions holds the conditions for the Bucket. + items: + description: "Condition contains details for one aspect of + the current state of this API Resource. --- This struct + is intended for direct use as an array at the field path + .status.conditions. For example, type FooStatus struct{ + \ // Represents the observations of a foo's current state. + \ // Known .status.conditions.type are: \"Available\", + \"Progressing\", and \"Degraded\" // +patchMergeKey=type + \ // +patchStrategy=merge // +listType=map // + +listMapKey=type Conditions []metav1.Condition `json:\"conditions,omitempty\" + patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` + \n // other fields }" + properties: + lastTransitionTime: + description: lastTransitionTime is the last time the condition + transitioned from one status to another. This should + be when the underlying condition changed. If that is + not known, then using the time when the API field changed + is acceptable. + format: date-time + type: string + message: + description: message is a human readable message indicating + details about the transition. This may be an empty string. + maxLength: 32768 + type: string + observedGeneration: + description: observedGeneration represents the .metadata.generation + that the condition was set based upon. For instance, + if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration + is 9, the condition is out of date with respect to the + current state of the instance. + format: int64 + minimum: 0 + type: integer + reason: + description: reason contains a programmatic identifier + indicating the reason for the condition's last transition. + Producers of specific condition types may define expected + values and meanings for this field, and whether the + values are considered a guaranteed API. The value should + be a CamelCase string. This field may not be empty. + maxLength: 1024 + minLength: 1 + pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ + type: string + status: + description: status of the condition, one of True, False, + Unknown. + enum: + - "True" + - "False" + - Unknown + type: string + type: + description: type of condition in CamelCase or in foo.example.com/CamelCase. + --- Many .condition.type values are consistent across + resources like Available, but because arbitrary conditions + can be useful (see .node.status.conditions), the ability + to deconflict is important. The regex it matches is + (dns1123SubdomainFmt/)?(qualifiedNameFmt) + maxLength: 316 + pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ + type: string + required: + - lastTransitionTime + - message + - reason + - status + - type + type: object + type: array + lastHandledReconcileAt: + description: LastHandledReconcileAt holds the value of the most + recent reconcile request value, so a change can be detected. + type: string + observedGeneration: + description: ObservedGeneration is the last observed generation. + format: int64 + type: integer + url: + description: URL is the download link for the artifact output + of the last Bucket sync. + type: string + type: object + type: object + served: true + storage: true + subresources: + status: {} + type: raw + - name: gitrepositories.source.toolkit.fluxcd.io + properties: + apiVersion: apiextensions.k8s.io/v1 + kind: CustomResourceDefinition + metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.5.0 + labels: + app.kubernetes.io/instance: flux-system + name: gitrepositories.source.toolkit.fluxcd.io + spec: + group: source.toolkit.fluxcd.io + names: + kind: GitRepository + listKind: GitRepositoryList + plural: gitrepositories + shortNames: + - gitrepo + singular: gitrepository + scope: Namespaced + versions: + - additionalPrinterColumns: + - jsonPath: .spec.url + name: URL + type: string + - jsonPath: .status.conditions[?(@.type=="Ready")].status + name: Ready + type: string + - jsonPath: .status.conditions[?(@.type=="Ready")].message + name: Status + type: string + - jsonPath: .metadata.creationTimestamp + name: Age + type: date + name: v1beta1 + schema: + openAPIV3Schema: + description: GitRepository is the Schema for the gitrepositories API + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the + latest internal value, and may reject unrecognized values. More + info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource + this object represents. Servers may infer this from the endpoint + the client submits requests to. Cannot be updated. In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: GitRepositorySpec defines the desired state of a Git + repository. + properties: + gitImplementation: + default: go-git + description: Determines which git client library to use. Defaults + to go-git, valid values are ('go-git', 'libgit2'). + enum: + - go-git + - libgit2 + type: string + ignore: + description: Ignore overrides the set of excluded patterns in + the .sourceignore format (which is the same as .gitignore). + If not provided, a default will be used, consult the documentation + for your version to find out what those are. + type: string + include: + description: Extra git repositories to map into the repository + items: + description: GitRepositoryInclude defines a source with a + from and to path. + properties: + fromPath: + description: The path to copy contents from, defaults + to the root directory. + type: string + repository: + description: Reference to a GitRepository to include. properties: - apiVersion: - description: API version of the referent - type: string - kind: - description: Kind of the referent - enum: - - Bucket - - GitRepository - - Kustomization - - HelmRelease - - HelmChart - - HelmRepository - - ImageRepository - - ImagePolicy - - ImageUpdateAutomation - type: string name: description: Name of the referent - maxLength: 53 - minLength: 1 - type: string - namespace: - description: Namespace of the referent - maxLength: 53 - minLength: 1 type: string required: - name type: object - type: array - exclusionList: - description: A list of Golang regular expressions to be - used for excluding messages. - items: + toPath: + description: The path to copy contents to, defaults to + the name of the source ref. type: string - type: array - providerRef: - description: Send events using this provider. - properties: - name: - description: Name of the referent - type: string - required: - - name - type: object - summary: - description: Short description of the impact and affected - cluster. - type: string - suspend: - description: This flag tells the controller to suspend subsequent - events dispatching. Defaults to false. - type: boolean - required: - - eventSources - - providerRef - type: object - status: - description: AlertStatus defines the observed state of Alert - properties: - conditions: - items: - description: "Condition contains details for one aspect - of the current state of this API Resource. --- This - struct is intended for direct use as an array at the - field path .status.conditions. For example, type FooStatus - struct{ // Represents the observations of a foo's - current state. // Known .status.conditions.type - are: \"Available\", \"Progressing\", and \"Degraded\" - \ // +patchMergeKey=type // +patchStrategy=merge - \ // +listType=map // +listMapKey=type Conditions - []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" - patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` - \n // other fields }" - properties: - lastTransitionTime: - description: lastTransitionTime is the last time the - condition transitioned from one status to another. - This should be when the underlying condition changed. If - that is not known, then using the time when the - API field changed is acceptable. - format: date-time - type: string - message: - description: message is a human readable message indicating - details about the transition. This may be an empty - string. - maxLength: 32768 - type: string - observedGeneration: - description: observedGeneration represents the .metadata.generation - that the condition was set based upon. For instance, - if .metadata.generation is currently 12, but the - .status.conditions[x].observedGeneration is 9, the - condition is out of date with respect to the current - state of the instance. - format: int64 - minimum: 0 - type: integer - reason: - description: reason contains a programmatic identifier - indicating the reason for the condition's last transition. - Producers of specific condition types may define - expected values and meanings for this field, and - whether the values are considered a guaranteed API. - The value should be a CamelCase string. This field - may not be empty. - maxLength: 1024 - minLength: 1 - pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ - type: string - status: - description: status of the condition, one of True, - False, Unknown. - enum: - - "True" - - "False" - - Unknown - type: string - type: - description: type of condition in CamelCase or in - foo.example.com/CamelCase. --- Many .condition.type - values are consistent across resources like Available, - but because arbitrary conditions can be useful (see - .node.status.conditions), the ability to deconflict - is important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) - maxLength: 316 - pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ - type: string - required: - - lastTransitionTime - - message - - reason - - status - - type - type: object - type: array - observedGeneration: - description: ObservedGeneration is the last observed generation. - format: int64 - type: integer - type: object - type: object - served: true - storage: true - subresources: - status: {} - type: raw - - name: buckets.source.toolkit.fluxcd.io - properties: - apiVersion: apiextensions.k8s.io/v1 - kind: CustomResourceDefinition - metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.5.0 - labels: - app.kubernetes.io/instance: flux-system - name: buckets.source.toolkit.fluxcd.io - spec: - group: source.toolkit.fluxcd.io - names: - kind: Bucket - listKind: BucketList - plural: buckets - singular: bucket - scope: Namespaced - versions: - - additionalPrinterColumns: - - jsonPath: .spec.url - name: URL - type: string - - jsonPath: .status.conditions[?(@.type=="Ready")].status - name: Ready - type: string - - jsonPath: .status.conditions[?(@.type=="Ready")].message - name: Status - type: string - - jsonPath: .metadata.creationTimestamp - name: Age - type: date - name: v1beta1 - schema: - openAPIV3Schema: - description: Bucket is the Schema for the buckets API - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this - representation of an object. Servers should convert recognized - schemas to the latest internal value, and may reject unrecognized - values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + required: + - repository + type: object + type: array + interval: + description: The interval at which to check for repository updates. type: string - kind: - description: 'Kind is a string value representing the REST resource - this object represents. Servers may infer this from the endpoint - the client submits requests to. Cannot be updated. In CamelCase. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: BucketSpec defines the desired state of an S3 compatible - bucket + recurseSubmodules: + description: When enabled, after the clone is created, initializes + all submodules within, using their default settings. This + option is available only when using the 'go-git' GitImplementation. + type: boolean + ref: + description: The Git reference to checkout and monitor for changes, + defaults to master branch. properties: - bucketName: - description: The bucket name. + branch: + default: master + description: The Git branch to checkout, defaults to master. type: string - endpoint: - description: The bucket endpoint address. + commit: + description: The Git commit SHA to checkout, if specified + Tag filters will be ignored. type: string - ignore: - description: Ignore overrides the set of excluded patterns - in the .sourceignore format (which is the same as .gitignore). - If not provided, a default will be used, consult the documentation - for your version to find out what those are. + semver: + description: The Git tag semver expression, takes precedence + over Tag. type: string - insecure: - description: Insecure allows connecting to a non-TLS S3 - HTTP endpoint. - type: boolean - interval: - description: The interval at which to check for bucket updates. + tag: + description: The Git tag to checkout, takes precedence over + Branch. type: string - provider: - default: generic - description: The S3 compatible storage provider name, default - ('generic'). - enum: - - generic - - aws - type: string - region: - description: The bucket region. - type: string - secretRef: - description: The name of the secret containing authentication - credentials for the Bucket. - properties: - name: - description: Name of the referent - type: string - required: - - name - type: object - suspend: - description: This flag tells the controller to suspend the - reconciliation of this source. - type: boolean - timeout: - default: 20s - description: The timeout for download operations, defaults - to 20s. + type: object + secretRef: + description: The secret name containing the Git credentials. + For HTTPS repositories the secret must contain username and + password fields. For SSH repositories the secret must contain + identity, identity.pub and known_hosts fields. + properties: + name: + description: Name of the referent type: string required: - - bucketName - - endpoint - - interval + - name type: object - status: - description: BucketStatus defines the observed state of a bucket - properties: - artifact: - description: Artifact represents the output of the last - successful Bucket sync. - properties: - checksum: - description: Checksum is the SHA1 checksum of the artifact. - type: string - lastUpdateTime: - description: LastUpdateTime is the timestamp corresponding - to the last update of this artifact. - format: date-time - type: string - path: - description: Path is the relative file path of this - artifact. - type: string - revision: - description: Revision is a human readable identifier - traceable in the origin source system. It can be a - Git commit SHA, Git tag, a Helm index timestamp, a - Helm chart version, etc. - type: string - url: - description: URL is the HTTP address of this artifact. - type: string - required: - - path - - url - type: object - conditions: - description: Conditions holds the conditions for the Bucket. - items: - description: "Condition contains details for one aspect - of the current state of this API Resource. --- This - struct is intended for direct use as an array at the - field path .status.conditions. For example, type FooStatus - struct{ // Represents the observations of a foo's - current state. // Known .status.conditions.type - are: \"Available\", \"Progressing\", and \"Degraded\" - \ // +patchMergeKey=type // +patchStrategy=merge - \ // +listType=map // +listMapKey=type Conditions - []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" - patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` - \n // other fields }" - properties: - lastTransitionTime: - description: lastTransitionTime is the last time the - condition transitioned from one status to another. - This should be when the underlying condition changed. If - that is not known, then using the time when the - API field changed is acceptable. - format: date-time - type: string - message: - description: message is a human readable message indicating - details about the transition. This may be an empty - string. - maxLength: 32768 - type: string - observedGeneration: - description: observedGeneration represents the .metadata.generation - that the condition was set based upon. For instance, - if .metadata.generation is currently 12, but the - .status.conditions[x].observedGeneration is 9, the - condition is out of date with respect to the current - state of the instance. - format: int64 - minimum: 0 - type: integer - reason: - description: reason contains a programmatic identifier - indicating the reason for the condition's last transition. - Producers of specific condition types may define - expected values and meanings for this field, and - whether the values are considered a guaranteed API. - The value should be a CamelCase string. This field - may not be empty. - maxLength: 1024 - minLength: 1 - pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ - type: string - status: - description: status of the condition, one of True, - False, Unknown. - enum: - - "True" - - "False" - - Unknown - type: string - type: - description: type of condition in CamelCase or in - foo.example.com/CamelCase. --- Many .condition.type - values are consistent across resources like Available, - but because arbitrary conditions can be useful (see - .node.status.conditions), the ability to deconflict - is important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) - maxLength: 316 - pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ - type: string - required: - - lastTransitionTime - - message - - reason - - status - - type - type: object - type: array - lastHandledReconcileAt: - description: LastHandledReconcileAt holds the value of the - most recent reconcile request value, so a change can be - detected. - type: string - observedGeneration: - description: ObservedGeneration is the last observed generation. - format: int64 - type: integer - url: - description: URL is the download link for the artifact output - of the last Bucket sync. - type: string - type: object - type: object - served: true - storage: true - subresources: - status: {} - type: raw - - name: gitrepositories.source.toolkit.fluxcd.io - properties: - apiVersion: apiextensions.k8s.io/v1 - kind: CustomResourceDefinition - metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.5.0 - labels: - app.kubernetes.io/instance: flux-system - name: gitrepositories.source.toolkit.fluxcd.io - spec: - group: source.toolkit.fluxcd.io - names: - kind: GitRepository - listKind: GitRepositoryList - plural: gitrepositories - shortNames: - - gitrepo - singular: gitrepository - scope: Namespaced - versions: - - additionalPrinterColumns: - - jsonPath: .spec.url - name: URL - type: string - - jsonPath: .status.conditions[?(@.type=="Ready")].status - name: Ready - type: string - - jsonPath: .status.conditions[?(@.type=="Ready")].message - name: Status - type: string - - jsonPath: .metadata.creationTimestamp - name: Age - type: date - name: v1beta1 - schema: - openAPIV3Schema: - description: GitRepository is the Schema for the gitrepositories - API - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this - representation of an object. Servers should convert recognized - schemas to the latest internal value, and may reject unrecognized - values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + suspend: + description: This flag tells the controller to suspend the reconciliation + of this source. + type: boolean + timeout: + default: 20s + description: The timeout for remote Git operations like cloning, + defaults to 20s. type: string - kind: - description: 'Kind is a string value representing the REST resource - this object represents. Servers may infer this from the endpoint - the client submits requests to. Cannot be updated. In CamelCase. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + url: + description: The repository URL, can be a HTTP/S or SSH address. + pattern: ^(http|https|ssh):// type: string - metadata: - type: object - spec: - description: GitRepositorySpec defines the desired state of - a Git repository. + verify: + description: Verify OpenPGP signature for the Git commit HEAD + points to. properties: - gitImplementation: - default: go-git - description: Determines which git client library to use. - Defaults to go-git, valid values are ('go-git', 'libgit2'). + mode: + description: Mode describes what git object should be verified, + currently ('head'). enum: - - go-git - - libgit2 + - head type: string - ignore: - description: Ignore overrides the set of excluded patterns - in the .sourceignore format (which is the same as .gitignore). - If not provided, a default will be used, consult the documentation - for your version to find out what those are. - type: string - include: - description: Extra git repositories to map into the repository - items: - description: GitRepositoryInclude defines a source with - a from and to path. - properties: - fromPath: - description: The path to copy contents from, defaults - to the root directory. - type: string - repository: - description: Reference to a GitRepository to include. - properties: - name: - description: Name of the referent - type: string - required: - - name - type: object - toPath: - description: The path to copy contents to, defaults - to the name of the source ref. - type: string - required: - - repository - type: object - type: array - interval: - description: The interval at which to check for repository - updates. - type: string - recurseSubmodules: - description: When enabled, after the clone is created, initializes - all submodules within, using their default settings. This - option is available only when using the 'go-git' GitImplementation. - type: boolean - ref: - description: The Git reference to checkout and monitor for - changes, defaults to master branch. - properties: - branch: - default: master - description: The Git branch to checkout, defaults to - master. - type: string - commit: - description: The Git commit SHA to checkout, if specified - Tag filters will be ignored. - type: string - semver: - description: The Git tag semver expression, takes precedence - over Tag. - type: string - tag: - description: The Git tag to checkout, takes precedence - over Branch. - type: string - type: object secretRef: - description: The secret name containing the Git credentials. - For HTTPS repositories the secret must contain username - and password fields. For SSH repositories the secret must - contain identity, identity.pub and known_hosts fields. + description: The secret name containing the public keys + of all trusted Git authors. properties: name: description: Name of the referent @@ -606,1562 +631,2632 @@ spec: required: - name type: object - suspend: - description: This flag tells the controller to suspend the - reconciliation of this source. - type: boolean - timeout: - default: 20s - description: The timeout for remote Git operations like - cloning, defaults to 20s. + required: + - mode + type: object + required: + - interval + - url + type: object + status: + description: GitRepositoryStatus defines the observed state of a + Git repository. + properties: + artifact: + description: Artifact represents the output of the last successful + repository sync. + properties: + checksum: + description: Checksum is the SHA1 checksum of the artifact. + type: string + lastUpdateTime: + description: LastUpdateTime is the timestamp corresponding + to the last update of this artifact. + format: date-time + type: string + path: + description: Path is the relative file path of this artifact. + type: string + revision: + description: Revision is a human readable identifier traceable + in the origin source system. It can be a Git commit SHA, + Git tag, a Helm index timestamp, a Helm chart version, + etc. type: string url: - description: The repository URL, can be a HTTP/S or SSH - address. - pattern: ^(http|https|ssh):// + description: URL is the HTTP address of this artifact. type: string - verify: - description: Verify OpenPGP signature for the Git commit - HEAD points to. + required: + - path + - url + type: object + conditions: + description: Conditions holds the conditions for the GitRepository. + items: + description: "Condition contains details for one aspect of + the current state of this API Resource. --- This struct + is intended for direct use as an array at the field path + .status.conditions. For example, type FooStatus struct{ + \ // Represents the observations of a foo's current state. + \ // Known .status.conditions.type are: \"Available\", + \"Progressing\", and \"Degraded\" // +patchMergeKey=type + \ // +patchStrategy=merge // +listType=map // + +listMapKey=type Conditions []metav1.Condition `json:\"conditions,omitempty\" + patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` + \n // other fields }" + properties: + lastTransitionTime: + description: lastTransitionTime is the last time the condition + transitioned from one status to another. This should + be when the underlying condition changed. If that is + not known, then using the time when the API field changed + is acceptable. + format: date-time + type: string + message: + description: message is a human readable message indicating + details about the transition. This may be an empty string. + maxLength: 32768 + type: string + observedGeneration: + description: observedGeneration represents the .metadata.generation + that the condition was set based upon. For instance, + if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration + is 9, the condition is out of date with respect to the + current state of the instance. + format: int64 + minimum: 0 + type: integer + reason: + description: reason contains a programmatic identifier + indicating the reason for the condition's last transition. + Producers of specific condition types may define expected + values and meanings for this field, and whether the + values are considered a guaranteed API. The value should + be a CamelCase string. This field may not be empty. + maxLength: 1024 + minLength: 1 + pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ + type: string + status: + description: status of the condition, one of True, False, + Unknown. + enum: + - "True" + - "False" + - Unknown + type: string + type: + description: type of condition in CamelCase or in foo.example.com/CamelCase. + --- Many .condition.type values are consistent across + resources like Available, but because arbitrary conditions + can be useful (see .node.status.conditions), the ability + to deconflict is important. The regex it matches is + (dns1123SubdomainFmt/)?(qualifiedNameFmt) + maxLength: 316 + pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ + type: string + required: + - lastTransitionTime + - message + - reason + - status + - type + type: object + type: array + includedArtifacts: + description: IncludedArtifacts represents the included artifacts + from the last successful repository sync. + items: + description: Artifact represents the output of a source synchronisation. + properties: + checksum: + description: Checksum is the SHA1 checksum of the artifact. + type: string + lastUpdateTime: + description: LastUpdateTime is the timestamp corresponding + to the last update of this artifact. + format: date-time + type: string + path: + description: Path is the relative file path of this artifact. + type: string + revision: + description: Revision is a human readable identifier traceable + in the origin source system. It can be a Git commit + SHA, Git tag, a Helm index timestamp, a Helm chart version, + etc. + type: string + url: + description: URL is the HTTP address of this artifact. + type: string + required: + - path + - url + type: object + type: array + lastHandledReconcileAt: + description: LastHandledReconcileAt holds the value of the most + recent reconcile request value, so a change can be detected. + type: string + observedGeneration: + description: ObservedGeneration is the last observed generation. + format: int64 + type: integer + url: + description: URL is the download link for the artifact output + of the last repository sync. + type: string + type: object + type: object + served: true + storage: true + subresources: + status: {} + type: raw + - name: helmcharts.source.toolkit.fluxcd.io + properties: + apiVersion: apiextensions.k8s.io/v1 + kind: CustomResourceDefinition + metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.5.0 + labels: + app.kubernetes.io/instance: flux-system + name: helmcharts.source.toolkit.fluxcd.io + spec: + group: source.toolkit.fluxcd.io + names: + kind: HelmChart + listKind: HelmChartList + plural: helmcharts + shortNames: + - hc + singular: helmchart + scope: Namespaced + versions: + - additionalPrinterColumns: + - jsonPath: .spec.chart + name: Chart + type: string + - jsonPath: .spec.version + name: Version + type: string + - jsonPath: .spec.sourceRef.kind + name: Source Kind + type: string + - jsonPath: .spec.sourceRef.name + name: Source Name + type: string + - jsonPath: .status.conditions[?(@.type=="Ready")].status + name: Ready + type: string + - jsonPath: .status.conditions[?(@.type=="Ready")].message + name: Status + type: string + - jsonPath: .metadata.creationTimestamp + name: Age + type: date + name: v1beta1 + schema: + openAPIV3Schema: + description: HelmChart is the Schema for the helmcharts API + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the + latest internal value, and may reject unrecognized values. More + info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource + this object represents. Servers may infer this from the endpoint + the client submits requests to. Cannot be updated. In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: HelmChartSpec defines the desired state of a Helm chart. + properties: + chart: + description: The name or path the Helm chart is available at + in the SourceRef. + type: string + interval: + description: The interval at which to check the Source for updates. + type: string + sourceRef: + description: The reference to the Source the chart is available + at. + properties: + apiVersion: + description: APIVersion of the referent. + type: string + kind: + description: Kind of the referent, valid values are ('HelmRepository', + 'GitRepository', 'Bucket'). + enum: + - HelmRepository + - GitRepository + - Bucket + type: string + name: + description: Name of the referent. + type: string + required: + - kind + - name + type: object + suspend: + description: This flag tells the controller to suspend the reconciliation + of this source. + type: boolean + valuesFile: + description: Alternative values file to use as the default chart + values, expected to be a relative path in the SourceRef. Deprecated + in favor of ValuesFiles, for backwards compatibility the file + defined here is merged before the ValuesFiles items. Ignored + when omitted. + type: string + valuesFiles: + description: Alternative list of values files to use as the + chart values (values.yaml is not included by default), expected + to be a relative path in the SourceRef. Values files are merged + in the order of this list with the last file overriding the + first. Ignored when omitted. + items: + type: string + type: array + version: + default: '*' + description: The chart version semver expression, ignored for + charts from GitRepository and Bucket sources. Defaults to + latest when omitted. + type: string + required: + - chart + - interval + - sourceRef + type: object + status: + description: HelmChartStatus defines the observed state of the HelmChart. + properties: + artifact: + description: Artifact represents the output of the last successful + chart sync. + properties: + checksum: + description: Checksum is the SHA1 checksum of the artifact. + type: string + lastUpdateTime: + description: LastUpdateTime is the timestamp corresponding + to the last update of this artifact. + format: date-time + type: string + path: + description: Path is the relative file path of this artifact. + type: string + revision: + description: Revision is a human readable identifier traceable + in the origin source system. It can be a Git commit SHA, + Git tag, a Helm index timestamp, a Helm chart version, + etc. + type: string + url: + description: URL is the HTTP address of this artifact. + type: string + required: + - path + - url + type: object + conditions: + description: Conditions holds the conditions for the HelmChart. + items: + description: "Condition contains details for one aspect of + the current state of this API Resource. --- This struct + is intended for direct use as an array at the field path + .status.conditions. For example, type FooStatus struct{ + \ // Represents the observations of a foo's current state. + \ // Known .status.conditions.type are: \"Available\", + \"Progressing\", and \"Degraded\" // +patchMergeKey=type + \ // +patchStrategy=merge // +listType=map // + +listMapKey=type Conditions []metav1.Condition `json:\"conditions,omitempty\" + patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` + \n // other fields }" + properties: + lastTransitionTime: + description: lastTransitionTime is the last time the condition + transitioned from one status to another. This should + be when the underlying condition changed. If that is + not known, then using the time when the API field changed + is acceptable. + format: date-time + type: string + message: + description: message is a human readable message indicating + details about the transition. This may be an empty string. + maxLength: 32768 + type: string + observedGeneration: + description: observedGeneration represents the .metadata.generation + that the condition was set based upon. For instance, + if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration + is 9, the condition is out of date with respect to the + current state of the instance. + format: int64 + minimum: 0 + type: integer + reason: + description: reason contains a programmatic identifier + indicating the reason for the condition's last transition. + Producers of specific condition types may define expected + values and meanings for this field, and whether the + values are considered a guaranteed API. The value should + be a CamelCase string. This field may not be empty. + maxLength: 1024 + minLength: 1 + pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ + type: string + status: + description: status of the condition, one of True, False, + Unknown. + enum: + - "True" + - "False" + - Unknown + type: string + type: + description: type of condition in CamelCase or in foo.example.com/CamelCase. + --- Many .condition.type values are consistent across + resources like Available, but because arbitrary conditions + can be useful (see .node.status.conditions), the ability + to deconflict is important. The regex it matches is + (dns1123SubdomainFmt/)?(qualifiedNameFmt) + maxLength: 316 + pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ + type: string + required: + - lastTransitionTime + - message + - reason + - status + - type + type: object + type: array + lastHandledReconcileAt: + description: LastHandledReconcileAt holds the value of the most + recent reconcile request value, so a change can be detected. + type: string + observedGeneration: + description: ObservedGeneration is the last observed generation. + format: int64 + type: integer + url: + description: URL is the download link for the last chart pulled. + type: string + type: object + type: object + served: true + storage: true + subresources: + status: {} + type: raw + - name: helmreleases.helm.toolkit.fluxcd.io + properties: + apiVersion: apiextensions.k8s.io/v1 + kind: CustomResourceDefinition + metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.5.0 + labels: + app.kubernetes.io/instance: flux-system + name: helmreleases.helm.toolkit.fluxcd.io + spec: + group: helm.toolkit.fluxcd.io + names: + kind: HelmRelease + listKind: HelmReleaseList + plural: helmreleases + shortNames: + - hr + singular: helmrelease + scope: Namespaced + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=="Ready")].status + name: Ready + type: string + - jsonPath: .status.conditions[?(@.type=="Ready")].message + name: Status + type: string + - jsonPath: .metadata.creationTimestamp + name: Age + type: date + name: v2beta1 + schema: + openAPIV3Schema: + description: HelmRelease is the Schema for the helmreleases API + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the + latest internal value, and may reject unrecognized values. More + info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource + this object represents. Servers may infer this from the endpoint + the client submits requests to. Cannot be updated. In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: HelmReleaseSpec defines the desired state of a Helm + release. + properties: + chart: + description: Chart defines the template of the v1beta1.HelmChart + that should be created for this HelmRelease. + properties: + spec: + description: Spec holds the template for the v1beta1.HelmChartSpec + for this HelmRelease. properties: - mode: - description: Mode describes what git object should be - verified, currently ('head'). - enum: - - head + chart: + description: The name or path the Helm chart is available + at in the SourceRef. type: string - secretRef: - description: The secret name containing the public keys - of all trusted Git authors. + interval: + description: Interval at which to check the v1beta1.Source + for updates. Defaults to 'HelmReleaseSpec.Interval'. + type: string + sourceRef: + description: The name and namespace of the v1beta1.Source + the chart is available at. properties: + apiVersion: + description: APIVersion of the referent. + type: string + kind: + description: Kind of the referent. + enum: + - HelmRepository + - GitRepository + - Bucket + type: string name: - description: Name of the referent + description: Name of the referent. + maxLength: 253 + minLength: 1 + type: string + namespace: + description: Namespace of the referent. + maxLength: 63 + minLength: 1 type: string required: - name type: object + valuesFile: + description: Alternative values file to use as the default + chart values, expected to be a relative path in the + SourceRef. Deprecated in favor of ValuesFiles, for + backwards compatibility the file defined here is merged + before the ValuesFiles items. Ignored when omitted. + type: string + valuesFiles: + description: Alternative list of values files to use + as the chart values (values.yaml is not included by + default), expected to be a relative path in the SourceRef. + Values files are merged in the order of this list + with the last file overriding the first. Ignored when + omitted. + items: + type: string + type: array + version: + default: '*' + description: Version semver expression, ignored for + charts from v1beta1.GitRepository and v1beta1.Bucket + sources. Defaults to latest when omitted. + type: string required: - - mode + - chart + - sourceRef type: object required: - - interval - - url + - spec type: object - status: - description: GitRepositoryStatus defines the observed state - of a Git repository. + dependsOn: + description: DependsOn may contain a dependency.CrossNamespaceDependencyReference + slice with references to HelmRelease resources that must be + ready before this HelmRelease can be reconciled. + items: + description: CrossNamespaceDependencyReference holds the reference + to a dependency. + properties: + name: + description: Name holds the name reference of a dependency. + type: string + namespace: + description: Namespace holds the namespace reference of + a dependency. + type: string + required: + - name + type: object + type: array + install: + description: Install holds the configuration for Helm install + actions for this HelmRelease. properties: - artifact: - description: Artifact represents the output of the last - successful repository sync. + crds: + description: "CRDs upgrade CRDs from the Helm Chart's crds + directory according to the CRD upgrade policy provided + here. Valid values are `Skip`, `Create` or `CreateReplace`. + Default is `Create` and if omitted CRDs are installed + but not updated. \n Skip: do neither install nor replace + (update) any CRDs. \n Create: new CRDs are created, existing + CRDs are neither updated nor deleted. \n CreateReplace: + new CRDs are created, existing CRDs are updated (replaced) + but not deleted. \n By default, CRDs are applied (installed) + during Helm install action. With this option users can + opt-in to CRD replace existing CRDs on Helm install actions, + which is not (yet) natively supported by Helm. https://helm.sh/docs/chart_best_practices/custom_resource_definitions." + enum: + - Skip + - Create + - CreateReplace + type: string + createNamespace: + description: CreateNamespace tells the Helm install action + to create the HelmReleaseSpec.TargetNamespace if it does + not exist yet. On uninstall, the namespace will not be + garbage collected. + type: boolean + disableHooks: + description: DisableHooks prevents hooks from running during + the Helm install action. + type: boolean + disableOpenAPIValidation: + description: DisableOpenAPIValidation prevents the Helm + install action from validating rendered templates against + the Kubernetes OpenAPI Schema. + type: boolean + disableWait: + description: DisableWait disables the waiting for resources + to be ready after a Helm install has been performed. + type: boolean + disableWaitForJobs: + description: DisableWaitForJobs disables waiting for jobs + to complete after a Helm install has been performed. + type: boolean + remediation: + description: Remediation holds the remediation configuration + for when the Helm install action for the HelmRelease fails. + The default is to not perform any action. properties: - checksum: - description: Checksum is the SHA1 checksum of the artifact. - type: string - lastUpdateTime: - description: LastUpdateTime is the timestamp corresponding - to the last update of this artifact. - format: date-time - type: string - path: - description: Path is the relative file path of this - artifact. - type: string - revision: - description: Revision is a human readable identifier - traceable in the origin source system. It can be a - Git commit SHA, Git tag, a Helm index timestamp, a - Helm chart version, etc. - type: string - url: - description: URL is the HTTP address of this artifact. - type: string - required: - - path - - url + ignoreTestFailures: + description: IgnoreTestFailures tells the controller + to skip remediation when the Helm tests are run after + an install action but fail. Defaults to 'Test.IgnoreFailures'. + type: boolean + remediateLastFailure: + description: RemediateLastFailure tells the controller + to remediate the last failure, when no retries remain. + Defaults to 'false'. + type: boolean + retries: + description: Retries is the number of retries that should + be attempted on failures before bailing. Remediation, + using an uninstall, is performed between each attempt. + Defaults to '0', a negative integer equals to unlimited + retries. + type: integer type: object - conditions: - description: Conditions holds the conditions for the GitRepository. - items: - description: "Condition contains details for one aspect - of the current state of this API Resource. --- This - struct is intended for direct use as an array at the - field path .status.conditions. For example, type FooStatus - struct{ // Represents the observations of a foo's - current state. // Known .status.conditions.type - are: \"Available\", \"Progressing\", and \"Degraded\" - \ // +patchMergeKey=type // +patchStrategy=merge - \ // +listType=map // +listMapKey=type Conditions - []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" - patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` - \n // other fields }" - properties: - lastTransitionTime: - description: lastTransitionTime is the last time the - condition transitioned from one status to another. - This should be when the underlying condition changed. If - that is not known, then using the time when the - API field changed is acceptable. - format: date-time - type: string - message: - description: message is a human readable message indicating - details about the transition. This may be an empty - string. - maxLength: 32768 - type: string - observedGeneration: - description: observedGeneration represents the .metadata.generation - that the condition was set based upon. For instance, - if .metadata.generation is currently 12, but the - .status.conditions[x].observedGeneration is 9, the - condition is out of date with respect to the current - state of the instance. - format: int64 - minimum: 0 - type: integer - reason: - description: reason contains a programmatic identifier - indicating the reason for the condition's last transition. - Producers of specific condition types may define - expected values and meanings for this field, and - whether the values are considered a guaranteed API. - The value should be a CamelCase string. This field - may not be empty. - maxLength: 1024 - minLength: 1 - pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ - type: string - status: - description: status of the condition, one of True, - False, Unknown. - enum: - - "True" - - "False" - - Unknown - type: string - type: - description: type of condition in CamelCase or in - foo.example.com/CamelCase. --- Many .condition.type - values are consistent across resources like Available, - but because arbitrary conditions can be useful (see - .node.status.conditions), the ability to deconflict - is important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) - maxLength: 316 - pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ - type: string - required: - - lastTransitionTime - - message - - reason - - status - - type - type: object - type: array - includedArtifacts: - description: IncludedArtifacts represents the included artifacts - from the last successful repository sync. - items: - description: Artifact represents the output of a source - synchronisation. - properties: - checksum: - description: Checksum is the SHA1 checksum of the - artifact. - type: string - lastUpdateTime: - description: LastUpdateTime is the timestamp corresponding - to the last update of this artifact. - format: date-time - type: string - path: - description: Path is the relative file path of this - artifact. - type: string - revision: - description: Revision is a human readable identifier - traceable in the origin source system. It can be - a Git commit SHA, Git tag, a Helm index timestamp, - a Helm chart version, etc. - type: string - url: - description: URL is the HTTP address of this artifact. - type: string - required: - - path - - url - type: object - type: array - lastHandledReconcileAt: - description: LastHandledReconcileAt holds the value of the - most recent reconcile request value, so a change can be - detected. - type: string - observedGeneration: - description: ObservedGeneration is the last observed generation. - format: int64 - type: integer - url: - description: URL is the download link for the artifact output - of the last repository sync. + replace: + description: Replace tells the Helm install action to re-use + the 'ReleaseName', but only if that name is a deleted + release which remains in the history. + type: boolean + skipCRDs: + description: "SkipCRDs tells the Helm install action to + not install any CRDs. By default, CRDs are installed if + not already present. \n Deprecated use CRD policy (`crds`) + attribute with value `Skip` instead." + type: boolean + timeout: + description: Timeout is the time to wait for any individual + Kubernetes operation (like Jobs for hooks) during the + performance of a Helm install action. Defaults to 'HelmReleaseSpec.Timeout'. type: string type: object - type: object - served: true - storage: true - subresources: - status: {} - type: raw - - name: helmcharts.source.toolkit.fluxcd.io - properties: - apiVersion: apiextensions.k8s.io/v1 - kind: CustomResourceDefinition - metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.5.0 - labels: - app.kubernetes.io/instance: flux-system - name: helmcharts.source.toolkit.fluxcd.io - spec: - group: source.toolkit.fluxcd.io - names: - kind: HelmChart - listKind: HelmChartList - plural: helmcharts - shortNames: - - hc - singular: helmchart - scope: Namespaced - versions: - - additionalPrinterColumns: - - jsonPath: .spec.chart - name: Chart - type: string - - jsonPath: .spec.version - name: Version - type: string - - jsonPath: .spec.sourceRef.kind - name: Source Kind - type: string - - jsonPath: .spec.sourceRef.name - name: Source Name - type: string - - jsonPath: .status.conditions[?(@.type=="Ready")].status - name: Ready - type: string - - jsonPath: .status.conditions[?(@.type=="Ready")].message - name: Status - type: string - - jsonPath: .metadata.creationTimestamp - name: Age - type: date - name: v1beta1 - schema: - openAPIV3Schema: - description: HelmChart is the Schema for the helmcharts API - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this - representation of an object. Servers should convert recognized - schemas to the latest internal value, and may reject unrecognized - values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + interval: + description: Interval at which to reconcile the Helm release. type: string - kind: - description: 'Kind is a string value representing the REST resource - this object represents. Servers may infer this from the endpoint - the client submits requests to. Cannot be updated. In CamelCase. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: HelmChartSpec defines the desired state of a Helm - chart. + kubeConfig: + description: KubeConfig for reconciling the HelmRelease on a + remote cluster. When specified, KubeConfig takes precedence + over ServiceAccountName. properties: - chart: - description: The name or path the Helm chart is available - at in the SourceRef. - type: string - interval: - description: The interval at which to check the Source for - updates. - type: string - sourceRef: - description: The reference to the Source the chart is available - at. + secretRef: + description: SecretRef holds the name to a secret that contains + a 'value' key with the kubeconfig file as the value. It + must be in the same namespace as the HelmRelease. It is + recommended that the kubeconfig is self-contained, and + the secret is regularly updated if credentials such as + a cloud-access-token expire. Cloud specific `cmd-path` + auth helpers will not function without adding binaries + and credentials to the Pod that is responsible for reconciling + the HelmRelease. properties: - apiVersion: - description: APIVersion of the referent. - type: string - kind: - description: Kind of the referent, valid values are - ('HelmRepository', 'GitRepository', 'Bucket'). - enum: - - HelmRepository - - GitRepository - - Bucket - type: string name: - description: Name of the referent. + description: Name of the referent type: string required: - - kind - name type: object - suspend: - description: This flag tells the controller to suspend the - reconciliation of this source. - type: boolean - valuesFile: - description: Alternative values file to use as the default - chart values, expected to be a relative path in the SourceRef. - Deprecated in favor of ValuesFiles, for backwards compatibility - the file defined here is merged before the ValuesFiles - items. Ignored when omitted. - type: string - valuesFiles: - description: Alternative list of values files to use as - the chart values (values.yaml is not included by default), - expected to be a relative path in the SourceRef. Values - files are merged in the order of this list with the last - file overriding the first. Ignored when omitted. - items: - type: string - type: array - version: - default: '*' - description: The chart version semver expression, ignored - for charts from GitRepository and Bucket sources. Defaults - to latest when omitted. - type: string - required: - - chart - - interval - - sourceRef type: object - status: - description: HelmChartStatus defines the observed state of the - HelmChart. - properties: - artifact: - description: Artifact represents the output of the last - successful chart sync. - properties: - checksum: - description: Checksum is the SHA1 checksum of the artifact. - type: string - lastUpdateTime: - description: LastUpdateTime is the timestamp corresponding - to the last update of this artifact. - format: date-time - type: string - path: - description: Path is the relative file path of this - artifact. - type: string - revision: - description: Revision is a human readable identifier - traceable in the origin source system. It can be a - Git commit SHA, Git tag, a Helm index timestamp, a - Helm chart version, etc. - type: string - url: - description: URL is the HTTP address of this artifact. - type: string - required: - - path - - url - type: object - conditions: - description: Conditions holds the conditions for the HelmChart. - items: - description: "Condition contains details for one aspect - of the current state of this API Resource. --- This - struct is intended for direct use as an array at the - field path .status.conditions. For example, type FooStatus - struct{ // Represents the observations of a foo's - current state. // Known .status.conditions.type - are: \"Available\", \"Progressing\", and \"Degraded\" - \ // +patchMergeKey=type // +patchStrategy=merge - \ // +listType=map // +listMapKey=type Conditions - []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" - patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` - \n // other fields }" + maxHistory: + description: MaxHistory is the number of revisions saved by + Helm for this HelmRelease. Use '0' for an unlimited number + of revisions; defaults to '10'. + type: integer + postRenderers: + description: PostRenderers holds an array of Helm PostRenderers, + which will be applied in order of their definition. + items: + description: PostRenderer contains a Helm PostRenderer specification. + properties: + kustomize: + description: Kustomization to apply as PostRenderer. properties: - lastTransitionTime: - description: lastTransitionTime is the last time the - condition transitioned from one status to another. - This should be when the underlying condition changed. If - that is not known, then using the time when the - API field changed is acceptable. - format: date-time - type: string - message: - description: message is a human readable message indicating - details about the transition. This may be an empty - string. - maxLength: 32768 - type: string - observedGeneration: - description: observedGeneration represents the .metadata.generation - that the condition was set based upon. For instance, - if .metadata.generation is currently 12, but the - .status.conditions[x].observedGeneration is 9, the - condition is out of date with respect to the current - state of the instance. - format: int64 - minimum: 0 - type: integer - reason: - description: reason contains a programmatic identifier - indicating the reason for the condition's last transition. - Producers of specific condition types may define - expected values and meanings for this field, and - whether the values are considered a guaranteed API. - The value should be a CamelCase string. This field - may not be empty. - maxLength: 1024 - minLength: 1 - pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ - type: string - status: - description: status of the condition, one of True, - False, Unknown. - enum: - - "True" - - "False" - - Unknown - type: string - type: - description: type of condition in CamelCase or in - foo.example.com/CamelCase. --- Many .condition.type - values are consistent across resources like Available, - but because arbitrary conditions can be useful (see - .node.status.conditions), the ability to deconflict - is important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) - maxLength: 316 - pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ - type: string - required: - - lastTransitionTime - - message - - reason - - status - - type - type: object - type: array - lastHandledReconcileAt: - description: LastHandledReconcileAt holds the value of the - most recent reconcile request value, so a change can be - detected. - type: string - observedGeneration: - description: ObservedGeneration is the last observed generation. - format: int64 - type: integer - url: - description: URL is the download link for the last chart - pulled. - type: string - type: object - type: object - served: true - storage: true - subresources: - status: {} - type: raw - - name: helmreleases.helm.toolkit.fluxcd.io - properties: - apiVersion: apiextensions.k8s.io/v1 - kind: CustomResourceDefinition - metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.5.0 - labels: - app.kubernetes.io/instance: flux-system - name: helmreleases.helm.toolkit.fluxcd.io - spec: - group: helm.toolkit.fluxcd.io - names: - kind: HelmRelease - listKind: HelmReleaseList - plural: helmreleases - shortNames: - - hr - singular: helmrelease - scope: Namespaced - versions: - - additionalPrinterColumns: - - jsonPath: .status.conditions[?(@.type=="Ready")].status - name: Ready - type: string - - jsonPath: .status.conditions[?(@.type=="Ready")].message - name: Status - type: string - - jsonPath: .metadata.creationTimestamp - name: Age - type: date - name: v2beta1 - schema: - openAPIV3Schema: - description: HelmRelease is the Schema for the helmreleases API - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this - representation of an object. Servers should convert recognized - schemas to the latest internal value, and may reject unrecognized - values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource - this object represents. Servers may infer this from the endpoint - the client submits requests to. Cannot be updated. In CamelCase. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: HelmReleaseSpec defines the desired state of a - Helm release. - properties: - chart: - description: Chart defines the template of the v1beta1.HelmChart - that should be created for this HelmRelease. - properties: - spec: - description: Spec holds the template for the v1beta1.HelmChartSpec - for this HelmRelease. - properties: - chart: - description: The name or path the Helm chart is - available at in the SourceRef. - type: string - interval: - description: Interval at which to check the v1beta1.Source - for updates. Defaults to 'HelmReleaseSpec.Interval'. - type: string - sourceRef: - description: The name and namespace of the v1beta1.Source - the chart is available at. + images: + description: Images is a list of (image name, new + name, new tag or digest) for changing image names, + tags or digests. This can also be achieved with + a patch, but this operator is simpler to specify. + items: + description: Image contains an image name, a new + name, a new tag or digest, which will replace + the original name and tag. properties: - apiVersion: - description: APIVersion of the referent. - type: string - kind: - description: Kind of the referent. - enum: - - HelmRepository - - GitRepository - - Bucket + digest: + description: Digest is the value used to replace + the original image tag. If digest is present + NewTag value is ignored. type: string name: - description: Name of the referent. - maxLength: 253 - minLength: 1 + description: Name is a tag-less image name. type: string - namespace: - description: Namespace of the referent. - maxLength: 63 - minLength: 1 + newName: + description: NewName is the value used to replace + the original name. + type: string + newTag: + description: NewTag is the value used to replace + the original tag. type: string required: - name type: object - valuesFile: - description: Alternative values file to use as the - default chart values, expected to be a relative - path in the SourceRef. Deprecated in favor of - ValuesFiles, for backwards compatibility the file - defined here is merged before the ValuesFiles - items. Ignored when omitted. - type: string - valuesFiles: - description: Alternative list of values files to - use as the chart values (values.yaml is not included - by default), expected to be a relative path in - the SourceRef. Values files are merged in the - order of this list with the last file overriding - the first. Ignored when omitted. - items: - type: string - type: array - version: - default: '*' - description: Version semver expression, ignored - for charts from v1beta1.GitRepository and v1beta1.Bucket - sources. Defaults to latest when omitted. - type: string - required: - - chart - - sourceRef - type: object - required: - - spec - type: object - dependsOn: - description: DependsOn may contain a dependency.CrossNamespaceDependencyReference - slice with references to HelmRelease resources that must - be ready before this HelmRelease can be reconciled. - items: - description: CrossNamespaceDependencyReference holds the - reference to a dependency. - properties: - name: - description: Name holds the name reference of a dependency. - type: string - namespace: - description: Namespace holds the namespace reference - of a dependency. - type: string - required: - - name - type: object - type: array - install: - description: Install holds the configuration for Helm install - actions for this HelmRelease. - properties: - crds: - description: "CRDs upgrade CRDs from the Helm Chart's - crds directory according to the CRD upgrade policy - provided here. Valid values are `Skip`, `Create` or - `CreateReplace`. Default is `Create` and if omitted - CRDs are installed but not updated. \n Skip: do neither - install nor replace (update) any CRDs. \n Create: - new CRDs are created, existing CRDs are neither updated - nor deleted. \n CreateReplace: new CRDs are created, - existing CRDs are updated (replaced) but not deleted. - \n By default, CRDs are applied (installed) during - Helm install action. With this option users can opt-in - to CRD replace existing CRDs on Helm install actions, - which is not (yet) natively supported by Helm. https://helm.sh/docs/chart_best_practices/custom_resource_definitions." - enum: - - Skip - - Create - - CreateReplace - type: string - createNamespace: - description: CreateNamespace tells the Helm install - action to create the HelmReleaseSpec.TargetNamespace - if it does not exist yet. On uninstall, the namespace - will not be garbage collected. - type: boolean - disableHooks: - description: DisableHooks prevents hooks from running - during the Helm install action. - type: boolean - disableOpenAPIValidation: - description: DisableOpenAPIValidation prevents the Helm - install action from validating rendered templates - against the Kubernetes OpenAPI Schema. - type: boolean - disableWait: - description: DisableWait disables the waiting for resources - to be ready after a Helm install has been performed. - type: boolean - disableWaitForJobs: - description: DisableWaitForJobs disables waiting for - jobs to complete after a Helm install has been performed. - type: boolean - remediation: - description: Remediation holds the remediation configuration - for when the Helm install action for the HelmRelease - fails. The default is to not perform any action. - properties: - ignoreTestFailures: - description: IgnoreTestFailures tells the controller - to skip remediation when the Helm tests are run - after an install action but fail. Defaults to - 'Test.IgnoreFailures'. - type: boolean - remediateLastFailure: - description: RemediateLastFailure tells the controller - to remediate the last failure, when no retries - remain. Defaults to 'false'. - type: boolean - retries: - description: Retries is the number of retries that - should be attempted on failures before bailing. - Remediation, using an uninstall, is performed - between each attempt. Defaults to '0', a negative - integer equals to unlimited retries. - type: integer - type: object - replace: - description: Replace tells the Helm install action to - re-use the 'ReleaseName', but only if that name is - a deleted release which remains in the history. - type: boolean - skipCRDs: - description: "SkipCRDs tells the Helm install action - to not install any CRDs. By default, CRDs are installed - if not already present. \n Deprecated use CRD policy - (`crds`) attribute with value `Skip` instead." - type: boolean - timeout: - description: Timeout is the time to wait for any individual - Kubernetes operation (like Jobs for hooks) during - the performance of a Helm install action. Defaults - to 'HelmReleaseSpec.Timeout'. - type: string - type: object - interval: - description: Interval at which to reconcile the Helm release. - type: string - kubeConfig: - description: KubeConfig for reconciling the HelmRelease - on a remote cluster. When specified, KubeConfig takes - precedence over ServiceAccountName. - properties: - secretRef: - description: SecretRef holds the name to a secret that - contains a 'value' key with the kubeconfig file as - the value. It must be in the same namespace as the - HelmRelease. It is recommended that the kubeconfig - is self-contained, and the secret is regularly updated - if credentials such as a cloud-access-token expire. - Cloud specific `cmd-path` auth helpers will not function - without adding binaries and credentials to the Pod - that is responsible for reconciling the HelmRelease. - properties: - name: - description: Name of the referent - type: string - required: - - name - type: object - type: object - maxHistory: - description: MaxHistory is the number of revisions saved - by Helm for this HelmRelease. Use '0' for an unlimited - number of revisions; defaults to '10'. - type: integer - postRenderers: - description: PostRenderers holds an array of Helm PostRenderers, - which will be applied in order of their definition. - items: - description: PostRenderer contains a Helm PostRenderer - specification. - properties: - kustomize: - description: Kustomization to apply as PostRenderer. - properties: - images: - description: Images is a list of (image name, - new name, new tag or digest) for changing image - names, tags or digests. This can also be achieved - with a patch, but this operator is simpler to - specify. - items: - description: Image contains an image name, a - new name, a new tag or digest, which will - replace the original name and tag. - properties: - digest: - description: Digest is the value used to - replace the original image tag. If digest - is present NewTag value is ignored. - type: string - name: - description: Name is a tag-less image name. - type: string - newName: - description: NewName is the value used to - replace the original name. - type: string - newTag: - description: NewTag is the value used to - replace the original tag. - type: string - required: - - name - type: object - type: array - patchesJson6902: - description: JSON 6902 patches, defined as inline - YAML objects. - items: - description: JSON6902Patch contains a JSON6902 - patch and the target the patch should be applied + type: array + patchesJson6902: + description: JSON 6902 patches, defined as inline + YAML objects. + items: + description: JSON6902Patch contains a JSON6902 patch + and the target the patch should be applied to. + properties: + patch: + description: Patch contains the JSON6902 patch + document with an array of operation objects. + items: + description: JSON6902 is a JSON6902 operation + object. https://tools.ietf.org/html/rfc6902#section-4 + properties: + from: + type: string + op: + enum: + - test + - remove + - add + - replace + - move + - copy + type: string + path: + type: string + value: + x-kubernetes-preserve-unknown-fields: true + required: + - op + - path + type: object + type: array + target: + description: Target points to the resources + that the patch document should be applied to. properties: - patch: - description: Patch contains the JSON6902 - patch document with an array of operation - objects. - items: - description: JSON6902 is a JSON6902 operation - object. https://tools.ietf.org/html/rfc6902#section-4 - properties: - from: - type: string - op: - enum: - - test - - remove - - add - - replace - - move - - copy - type: string - path: - type: string - value: - x-kubernetes-preserve-unknown-fields: true - required: - - op - - path - type: object - type: array - target: - description: Target points to the resources - that the patch document should be applied - to. - properties: - annotationSelector: - description: AnnotationSelector is a - string that follows the label selection - expression https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#api - It matches with the resource annotations. - type: string - group: - description: Group is the API group - to select resources from. Together - with Version and Kind it is capable - of unambiguously identifying and/or - selecting resources. https://github.com/kubernetes/community/blob/master/contributors/design-proposals/api-machinery/api-group.md - type: string - kind: - description: Kind of the API Group to - select resources from. Together with - Group and Version it is capable of - unambiguously identifying and/or selecting - resources. https://github.com/kubernetes/community/blob/master/contributors/design-proposals/api-machinery/api-group.md - type: string - labelSelector: - description: LabelSelector is a string - that follows the label selection expression - https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#api - It matches with the resource labels. - type: string - name: - description: Name to match resources - with. - type: string - namespace: - description: Namespace to select resources - from. - type: string - version: - description: Version of the API Group - to select resources from. Together - with Group and Kind it is capable - of unambiguously identifying and/or - selecting resources. https://github.com/kubernetes/community/blob/master/contributors/design-proposals/api-machinery/api-group.md - type: string - type: object - required: - - patch - - target + annotationSelector: + description: AnnotationSelector is a string + that follows the label selection expression + https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#api + It matches with the resource annotations. + type: string + group: + description: Group is the API group to select + resources from. Together with Version + and Kind it is capable of unambiguously + identifying and/or selecting resources. + https://github.com/kubernetes/community/blob/master/contributors/design-proposals/api-machinery/api-group.md + type: string + kind: + description: Kind of the API Group to select + resources from. Together with Group and + Version it is capable of unambiguously + identifying and/or selecting resources. + https://github.com/kubernetes/community/blob/master/contributors/design-proposals/api-machinery/api-group.md + type: string + labelSelector: + description: LabelSelector is a string that + follows the label selection expression + https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#api + It matches with the resource labels. + type: string + name: + description: Name to match resources with. + type: string + namespace: + description: Namespace to select resources + from. + type: string + version: + description: Version of the API Group to + select resources from. Together with Group + and Kind it is capable of unambiguously + identifying and/or selecting resources. + https://github.com/kubernetes/community/blob/master/contributors/design-proposals/api-machinery/api-group.md + type: string type: object - type: array - patchesStrategicMerge: - description: Strategic merge patches, defined - as inline YAML objects. - items: - x-kubernetes-preserve-unknown-fields: true - type: array - type: object + required: + - patch + - target + type: object + type: array + patchesStrategicMerge: + description: Strategic merge patches, defined as inline + YAML objects. + items: + x-kubernetes-preserve-unknown-fields: true + type: array type: object - type: array - releaseName: - description: ReleaseName used for the Helm release. Defaults - to a composition of '[TargetNamespace-]Name'. - maxLength: 53 - minLength: 1 - type: string - rollback: - description: Rollback holds the configuration for Helm rollback - actions for this HelmRelease. - properties: - cleanupOnFail: - description: CleanupOnFail allows deletion of new resources - created during the Helm rollback action when it fails. - type: boolean - disableHooks: - description: DisableHooks prevents hooks from running - during the Helm rollback action. - type: boolean - disableWait: - description: DisableWait disables the waiting for resources - to be ready after a Helm rollback has been performed. - type: boolean - disableWaitForJobs: - description: DisableWaitForJobs disables waiting for - jobs to complete after a Helm rollback has been performed. - type: boolean - force: - description: Force forces resource updates through a - replacement strategy. - type: boolean - recreate: - description: Recreate performs pod restarts for the - resource if applicable. - type: boolean - timeout: - description: Timeout is the time to wait for any individual - Kubernetes operation (like Jobs for hooks) during - the performance of a Helm rollback action. Defaults - to 'HelmReleaseSpec.Timeout'. - type: string - type: object - serviceAccountName: - description: The name of the Kubernetes service account - to impersonate when reconciling this HelmRelease. - type: string - storageNamespace: - description: StorageNamespace used for the Helm storage. - Defaults to the namespace of the HelmRelease. - maxLength: 63 - minLength: 1 - type: string - suspend: - description: Suspend tells the controller to suspend reconciliation - for this HelmRelease, it does not apply to already started - reconciliations. Defaults to false. + type: object + type: array + releaseName: + description: ReleaseName used for the Helm release. Defaults + to a composition of '[TargetNamespace-]Name'. + maxLength: 53 + minLength: 1 + type: string + rollback: + description: Rollback holds the configuration for Helm rollback + actions for this HelmRelease. + properties: + cleanupOnFail: + description: CleanupOnFail allows deletion of new resources + created during the Helm rollback action when it fails. type: boolean - targetNamespace: - description: TargetNamespace to target when performing operations - for the HelmRelease. Defaults to the namespace of the - HelmRelease. - maxLength: 63 - minLength: 1 + disableHooks: + description: DisableHooks prevents hooks from running during + the Helm rollback action. + type: boolean + disableWait: + description: DisableWait disables the waiting for resources + to be ready after a Helm rollback has been performed. + type: boolean + disableWaitForJobs: + description: DisableWaitForJobs disables waiting for jobs + to complete after a Helm rollback has been performed. + type: boolean + force: + description: Force forces resource updates through a replacement + strategy. + type: boolean + recreate: + description: Recreate performs pod restarts for the resource + if applicable. + type: boolean + timeout: + description: Timeout is the time to wait for any individual + Kubernetes operation (like Jobs for hooks) during the + performance of a Helm rollback action. Defaults to 'HelmReleaseSpec.Timeout'. type: string - test: - description: Test holds the configuration for Helm test - actions for this HelmRelease. + type: object + serviceAccountName: + description: The name of the Kubernetes service account to impersonate + when reconciling this HelmRelease. + type: string + storageNamespace: + description: StorageNamespace used for the Helm storage. Defaults + to the namespace of the HelmRelease. + maxLength: 63 + minLength: 1 + type: string + suspend: + description: Suspend tells the controller to suspend reconciliation + for this HelmRelease, it does not apply to already started + reconciliations. Defaults to false. + type: boolean + targetNamespace: + description: TargetNamespace to target when performing operations + for the HelmRelease. Defaults to the namespace of the HelmRelease. + maxLength: 63 + minLength: 1 + type: string + test: + description: Test holds the configuration for Helm test actions + for this HelmRelease. + properties: + enable: + description: Enable enables Helm test actions for this HelmRelease + after an Helm install or upgrade action has been performed. + type: boolean + ignoreFailures: + description: IgnoreFailures tells the controller to skip + remediation when the Helm tests are run but fail. Can + be overwritten for tests run after install or upgrade + actions in 'Install.IgnoreTestFailures' and 'Upgrade.IgnoreTestFailures'. + type: boolean + timeout: + description: Timeout is the time to wait for any individual + Kubernetes operation during the performance of a Helm + test action. Defaults to 'HelmReleaseSpec.Timeout'. + type: string + type: object + timeout: + description: Timeout is the time to wait for any individual + Kubernetes operation (like Jobs for hooks) during the performance + of a Helm action. Defaults to '5m0s'. + type: string + uninstall: + description: Uninstall holds the configuration for Helm uninstall + actions for this HelmRelease. + properties: + disableHooks: + description: DisableHooks prevents hooks from running during + the Helm rollback action. + type: boolean + keepHistory: + description: KeepHistory tells Helm to remove all associated + resources and mark the release as deleted, but retain + the release history. + type: boolean + timeout: + description: Timeout is the time to wait for any individual + Kubernetes operation (like Jobs for hooks) during the + performance of a Helm uninstall action. Defaults to 'HelmReleaseSpec.Timeout'. + type: string + type: object + upgrade: + description: Upgrade holds the configuration for Helm upgrade + actions for this HelmRelease. + properties: + cleanupOnFail: + description: CleanupOnFail allows deletion of new resources + created during the Helm upgrade action when it fails. + type: boolean + crds: + description: "CRDs upgrade CRDs from the Helm Chart's crds + directory according to the CRD upgrade policy provided + here. Valid values are `Skip`, `Create` or `CreateReplace`. + Default is `Skip` and if omitted CRDs are neither installed + nor upgraded. \n Skip: do neither install nor replace + (update) any CRDs. \n Create: new CRDs are created, existing + CRDs are neither updated nor deleted. \n CreateReplace: + new CRDs are created, existing CRDs are updated (replaced) + but not deleted. \n By default, CRDs are not applied during + Helm upgrade action. With this option users can opt-in + to CRD upgrade, which is not (yet) natively supported + by Helm. https://helm.sh/docs/chart_best_practices/custom_resource_definitions." + enum: + - Skip + - Create + - CreateReplace + type: string + disableHooks: + description: DisableHooks prevents hooks from running during + the Helm upgrade action. + type: boolean + disableOpenAPIValidation: + description: DisableOpenAPIValidation prevents the Helm + upgrade action from validating rendered templates against + the Kubernetes OpenAPI Schema. + type: boolean + disableWait: + description: DisableWait disables the waiting for resources + to be ready after a Helm upgrade has been performed. + type: boolean + disableWaitForJobs: + description: DisableWaitForJobs disables waiting for jobs + to complete after a Helm upgrade has been performed. + type: boolean + force: + description: Force forces resource updates through a replacement + strategy. + type: boolean + preserveValues: + description: PreserveValues will make Helm reuse the last + release's values and merge in overrides from 'Values'. + Setting this flag makes the HelmRelease non-declarative. + type: boolean + remediation: + description: Remediation holds the remediation configuration + for when the Helm upgrade action for the HelmRelease fails. + The default is to not perform any action. properties: - enable: - description: Enable enables Helm test actions for this - HelmRelease after an Helm install or upgrade action - has been performed. + ignoreTestFailures: + description: IgnoreTestFailures tells the controller + to skip remediation when the Helm tests are run after + an upgrade action but fail. Defaults to 'Test.IgnoreFailures'. type: boolean - ignoreFailures: - description: IgnoreFailures tells the controller to - skip remediation when the Helm tests are run but fail. - Can be overwritten for tests run after install or - upgrade actions in 'Install.IgnoreTestFailures' and - 'Upgrade.IgnoreTestFailures'. + remediateLastFailure: + description: RemediateLastFailure tells the controller + to remediate the last failure, when no retries remain. + Defaults to 'false' unless 'Retries' is greater than + 0. type: boolean - timeout: - description: Timeout is the time to wait for any individual - Kubernetes operation during the performance of a Helm - test action. Defaults to 'HelmReleaseSpec.Timeout'. + retries: + description: Retries is the number of retries that should + be attempted on failures before bailing. Remediation, + using 'Strategy', is performed between each attempt. + Defaults to '0', a negative integer equals to unlimited + retries. + type: integer + strategy: + description: Strategy to use for failure remediation. + Defaults to 'rollback'. + enum: + - rollback + - uninstall type: string type: object timeout: description: Timeout is the time to wait for any individual Kubernetes operation (like Jobs for hooks) during the - performance of a Helm action. Defaults to '5m0s'. + performance of a Helm upgrade action. Defaults to 'HelmReleaseSpec.Timeout'. type: string - uninstall: - description: Uninstall holds the configuration for Helm - uninstall actions for this HelmRelease. - properties: - disableHooks: - description: DisableHooks prevents hooks from running - during the Helm rollback action. - type: boolean - keepHistory: - description: KeepHistory tells Helm to remove all associated - resources and mark the release as deleted, but retain - the release history. - type: boolean - timeout: - description: Timeout is the time to wait for any individual - Kubernetes operation (like Jobs for hooks) during - the performance of a Helm uninstall action. Defaults - to 'HelmReleaseSpec.Timeout'. - type: string - type: object - upgrade: - description: Upgrade holds the configuration for Helm upgrade - actions for this HelmRelease. - properties: - cleanupOnFail: - description: CleanupOnFail allows deletion of new resources - created during the Helm upgrade action when it fails. - type: boolean - crds: - description: "CRDs upgrade CRDs from the Helm Chart's - crds directory according to the CRD upgrade policy - provided here. Valid values are `Skip`, `Create` or - `CreateReplace`. Default is `Skip` and if omitted - CRDs are neither installed nor upgraded. \n Skip: - do neither install nor replace (update) any CRDs. - \n Create: new CRDs are created, existing CRDs are - neither updated nor deleted. \n CreateReplace: new - CRDs are created, existing CRDs are updated (replaced) - but not deleted. \n By default, CRDs are not applied - during Helm upgrade action. With this option users - can opt-in to CRD upgrade, which is not (yet) natively - supported by Helm. https://helm.sh/docs/chart_best_practices/custom_resource_definitions." - enum: - - Skip - - Create - - CreateReplace - type: string - disableHooks: - description: DisableHooks prevents hooks from running - during the Helm upgrade action. - type: boolean - disableOpenAPIValidation: - description: DisableOpenAPIValidation prevents the Helm - upgrade action from validating rendered templates - against the Kubernetes OpenAPI Schema. - type: boolean - disableWait: - description: DisableWait disables the waiting for resources - to be ready after a Helm upgrade has been performed. - type: boolean - disableWaitForJobs: - description: DisableWaitForJobs disables waiting for - jobs to complete after a Helm upgrade has been performed. - type: boolean - force: - description: Force forces resource updates through a - replacement strategy. - type: boolean - preserveValues: - description: PreserveValues will make Helm reuse the - last release's values and merge in overrides from - 'Values'. Setting this flag makes the HelmRelease - non-declarative. - type: boolean - remediation: - description: Remediation holds the remediation configuration - for when the Helm upgrade action for the HelmRelease - fails. The default is to not perform any action. - properties: - ignoreTestFailures: - description: IgnoreTestFailures tells the controller - to skip remediation when the Helm tests are run - after an upgrade action but fail. Defaults to - 'Test.IgnoreFailures'. - type: boolean - remediateLastFailure: - description: RemediateLastFailure tells the controller - to remediate the last failure, when no retries - remain. Defaults to 'false' unless 'Retries' is - greater than 0. - type: boolean - retries: - description: Retries is the number of retries that - should be attempted on failures before bailing. - Remediation, using 'Strategy', is performed between - each attempt. Defaults to '0', a negative integer - equals to unlimited retries. - type: integer - strategy: - description: Strategy to use for failure remediation. - Defaults to 'rollback'. - enum: - - rollback - - uninstall - type: string - type: object - timeout: - description: Timeout is the time to wait for any individual - Kubernetes operation (like Jobs for hooks) during - the performance of a Helm upgrade action. Defaults - to 'HelmReleaseSpec.Timeout'. - type: string - type: object - values: - description: Values holds the values for this Helm release. - x-kubernetes-preserve-unknown-fields: true - valuesFrom: - description: ValuesFrom holds references to resources containing - Helm values for this HelmRelease, and information about - how they should be merged. - items: - description: ValuesReference contains a reference to a - resource containing Helm values, and optionally the - key they can be found at. - properties: - kind: - description: Kind of the values referent, valid values - are ('Secret', 'ConfigMap'). - enum: - - Secret - - ConfigMap - type: string - name: - description: Name of the values referent. Should reside - in the same namespace as the referring resource. - maxLength: 253 - minLength: 1 - type: string - optional: - description: Optional marks this ValuesReference as - optional. When set, a not found error for the values - reference is ignored, but any ValuesKey, TargetPath - or transient error will still result in a reconciliation - failure. - type: boolean - targetPath: - description: TargetPath is the YAML dot notation path - the value should be merged at. When set, the ValuesKey - is expected to be a single flat value. Defaults - to 'None', which results in the values getting merged - at the root. - type: string - valuesKey: - description: ValuesKey is the data key where the values.yaml - or a specific value can be found at. Defaults to - 'values.yaml'. - type: string - required: - - kind - - name - type: object - type: array - required: - - chart - - interval - type: object - status: - description: HelmReleaseStatus defines the observed state of - a HelmRelease. - properties: - conditions: - description: Conditions holds the conditions for the HelmRelease. - items: - description: "Condition contains details for one aspect - of the current state of this API Resource. --- This - struct is intended for direct use as an array at the - field path .status.conditions. For example, type FooStatus - struct{ // Represents the observations of a foo's - current state. // Known .status.conditions.type - are: \"Available\", \"Progressing\", and \"Degraded\" - \ // +patchMergeKey=type // +patchStrategy=merge - \ // +listType=map // +listMapKey=type Conditions - []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" - patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` - \n // other fields }" - properties: - lastTransitionTime: - description: lastTransitionTime is the last time the - condition transitioned from one status to another. - This should be when the underlying condition changed. If - that is not known, then using the time when the - API field changed is acceptable. - format: date-time - type: string - message: - description: message is a human readable message indicating - details about the transition. This may be an empty - string. - maxLength: 32768 - type: string - observedGeneration: - description: observedGeneration represents the .metadata.generation - that the condition was set based upon. For instance, - if .metadata.generation is currently 12, but the - .status.conditions[x].observedGeneration is 9, the - condition is out of date with respect to the current - state of the instance. - format: int64 - minimum: 0 - type: integer - reason: - description: reason contains a programmatic identifier - indicating the reason for the condition's last transition. - Producers of specific condition types may define - expected values and meanings for this field, and - whether the values are considered a guaranteed API. - The value should be a CamelCase string. This field - may not be empty. - maxLength: 1024 - minLength: 1 - pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ - type: string - status: - description: status of the condition, one of True, - False, Unknown. - enum: - - "True" - - "False" - - Unknown - type: string - type: - description: type of condition in CamelCase or in - foo.example.com/CamelCase. --- Many .condition.type - values are consistent across resources like Available, - but because arbitrary conditions can be useful (see - .node.status.conditions), the ability to deconflict - is important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) - maxLength: 316 - pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ - type: string - required: - - lastTransitionTime - - message - - reason - - status - - type - type: object - type: array - failures: - description: Failures is the reconciliation failure count - against the latest desired state. It is reset after a - successful reconciliation. - format: int64 - type: integer - helmChart: - description: HelmChart is the namespaced name of the HelmChart - resource created by the controller for the HelmRelease. - type: string - installFailures: - description: InstallFailures is the install failure count - against the latest desired state. It is reset after a - successful reconciliation. - format: int64 - type: integer - lastAppliedRevision: - description: LastAppliedRevision is the revision of the - last successfully applied source. - type: string - lastAttemptedRevision: - description: LastAttemptedRevision is the revision of the - last reconciliation attempt. - type: string - lastAttemptedValuesChecksum: - description: LastAttemptedValuesChecksum is the SHA1 checksum - of the values of the last reconciliation attempt. - type: string - lastHandledReconcileAt: - description: LastHandledReconcileAt holds the value of the - most recent reconcile request value, so a change can be - detected. - type: string - lastReleaseRevision: - description: LastReleaseRevision is the revision of the - last successful Helm release. - type: integer - observedGeneration: - description: ObservedGeneration is the last observed generation. - format: int64 - type: integer - upgradeFailures: - description: UpgradeFailures is the upgrade failure count - against the latest desired state. It is reset after a - successful reconciliation. - format: int64 - type: integer type: object + values: + description: Values holds the values for this Helm release. + x-kubernetes-preserve-unknown-fields: true + valuesFrom: + description: ValuesFrom holds references to resources containing + Helm values for this HelmRelease, and information about how + they should be merged. + items: + description: ValuesReference contains a reference to a resource + containing Helm values, and optionally the key they can + be found at. + properties: + kind: + description: Kind of the values referent, valid values + are ('Secret', 'ConfigMap'). + enum: + - Secret + - ConfigMap + type: string + name: + description: Name of the values referent. Should reside + in the same namespace as the referring resource. + maxLength: 253 + minLength: 1 + type: string + optional: + description: Optional marks this ValuesReference as optional. + When set, a not found error for the values reference + is ignored, but any ValuesKey, TargetPath or transient + error will still result in a reconciliation failure. + type: boolean + targetPath: + description: TargetPath is the YAML dot notation path + the value should be merged at. When set, the ValuesKey + is expected to be a single flat value. Defaults to 'None', + which results in the values getting merged at the root. + type: string + valuesKey: + description: ValuesKey is the data key where the values.yaml + or a specific value can be found at. Defaults to 'values.yaml'. + type: string + required: + - kind + - name + type: object + type: array + required: + - chart + - interval type: object - served: true - storage: true - subresources: - status: {} - type: raw - - name: helmrepositories.source.toolkit.fluxcd.io - properties: - apiVersion: apiextensions.k8s.io/v1 - kind: CustomResourceDefinition - metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.5.0 - labels: - app.kubernetes.io/instance: flux-system - name: helmrepositories.source.toolkit.fluxcd.io - spec: - group: source.toolkit.fluxcd.io - names: - kind: HelmRepository - listKind: HelmRepositoryList - plural: helmrepositories - shortNames: - - helmrepo - singular: helmrepository - scope: Namespaced - versions: - - additionalPrinterColumns: - - jsonPath: .spec.url - name: URL - type: string - - jsonPath: .status.conditions[?(@.type=="Ready")].status - name: Ready - type: string - - jsonPath: .status.conditions[?(@.type=="Ready")].message - name: Status - type: string - - jsonPath: .metadata.creationTimestamp - name: Age - type: date - name: v1beta1 - schema: - openAPIV3Schema: - description: HelmRepository is the Schema for the helmrepositories - API + status: + description: HelmReleaseStatus defines the observed state of a HelmRelease. properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this - representation of an object. Servers should convert recognized - schemas to the latest internal value, and may reject unrecognized - values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + conditions: + description: Conditions holds the conditions for the HelmRelease. + items: + description: "Condition contains details for one aspect of + the current state of this API Resource. --- This struct + is intended for direct use as an array at the field path + .status.conditions. For example, type FooStatus struct{ + \ // Represents the observations of a foo's current state. + \ // Known .status.conditions.type are: \"Available\", + \"Progressing\", and \"Degraded\" // +patchMergeKey=type + \ // +patchStrategy=merge // +listType=map // + +listMapKey=type Conditions []metav1.Condition `json:\"conditions,omitempty\" + patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` + \n // other fields }" + properties: + lastTransitionTime: + description: lastTransitionTime is the last time the condition + transitioned from one status to another. This should + be when the underlying condition changed. If that is + not known, then using the time when the API field changed + is acceptable. + format: date-time + type: string + message: + description: message is a human readable message indicating + details about the transition. This may be an empty string. + maxLength: 32768 + type: string + observedGeneration: + description: observedGeneration represents the .metadata.generation + that the condition was set based upon. For instance, + if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration + is 9, the condition is out of date with respect to the + current state of the instance. + format: int64 + minimum: 0 + type: integer + reason: + description: reason contains a programmatic identifier + indicating the reason for the condition's last transition. + Producers of specific condition types may define expected + values and meanings for this field, and whether the + values are considered a guaranteed API. The value should + be a CamelCase string. This field may not be empty. + maxLength: 1024 + minLength: 1 + pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ + type: string + status: + description: status of the condition, one of True, False, + Unknown. + enum: + - "True" + - "False" + - Unknown + type: string + type: + description: type of condition in CamelCase or in foo.example.com/CamelCase. + --- Many .condition.type values are consistent across + resources like Available, but because arbitrary conditions + can be useful (see .node.status.conditions), the ability + to deconflict is important. The regex it matches is + (dns1123SubdomainFmt/)?(qualifiedNameFmt) + maxLength: 316 + pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ + type: string + required: + - lastTransitionTime + - message + - reason + - status + - type + type: object + type: array + failures: + description: Failures is the reconciliation failure count against + the latest desired state. It is reset after a successful reconciliation. + format: int64 + type: integer + helmChart: + description: HelmChart is the namespaced name of the HelmChart + resource created by the controller for the HelmRelease. type: string - kind: - description: 'Kind is a string value representing the REST resource - this object represents. Servers may infer this from the endpoint - the client submits requests to. Cannot be updated. In CamelCase. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + installFailures: + description: InstallFailures is the install failure count against + the latest desired state. It is reset after a successful reconciliation. + format: int64 + type: integer + lastAppliedRevision: + description: LastAppliedRevision is the revision of the last + successfully applied source. type: string - metadata: - type: object - spec: - description: HelmRepositorySpec defines the reference to a Helm - repository. + lastAttemptedRevision: + description: LastAttemptedRevision is the revision of the last + reconciliation attempt. + type: string + lastAttemptedValuesChecksum: + description: LastAttemptedValuesChecksum is the SHA1 checksum + of the values of the last reconciliation attempt. + type: string + lastHandledReconcileAt: + description: LastHandledReconcileAt holds the value of the most + recent reconcile request value, so a change can be detected. + type: string + lastReleaseRevision: + description: LastReleaseRevision is the revision of the last + successful Helm release. + type: integer + observedGeneration: + description: ObservedGeneration is the last observed generation. + format: int64 + type: integer + upgradeFailures: + description: UpgradeFailures is the upgrade failure count against + the latest desired state. It is reset after a successful reconciliation. + format: int64 + type: integer + type: object + type: object + served: true + storage: true + subresources: + status: {} + type: raw + - name: helmrepositories.source.toolkit.fluxcd.io + properties: + apiVersion: apiextensions.k8s.io/v1 + kind: CustomResourceDefinition + metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.5.0 + labels: + app.kubernetes.io/instance: flux-system + name: helmrepositories.source.toolkit.fluxcd.io + spec: + group: source.toolkit.fluxcd.io + names: + kind: HelmRepository + listKind: HelmRepositoryList + plural: helmrepositories + shortNames: + - helmrepo + singular: helmrepository + scope: Namespaced + versions: + - additionalPrinterColumns: + - jsonPath: .spec.url + name: URL + type: string + - jsonPath: .status.conditions[?(@.type=="Ready")].status + name: Ready + type: string + - jsonPath: .status.conditions[?(@.type=="Ready")].message + name: Status + type: string + - jsonPath: .metadata.creationTimestamp + name: Age + type: date + name: v1beta1 + schema: + openAPIV3Schema: + description: HelmRepository is the Schema for the helmrepositories API + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the + latest internal value, and may reject unrecognized values. More + info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource + this object represents. Servers may infer this from the endpoint + the client submits requests to. Cannot be updated. In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: HelmRepositorySpec defines the reference to a Helm + repository. + properties: + interval: + description: The interval at which to check the upstream for + updates. + type: string + passCredentials: + description: PassCredentials allows the credentials from the + SecretRef to be passed on to a host that does not match the + host as defined in URL. This may be required if the host of + the advertised chart URLs in the index differ from the defined + URL. Enabling this should be done with caution, as it can + potentially result in credentials getting stolen in a MITM-attack. + type: boolean + secretRef: + description: The name of the secret containing authentication + credentials for the Helm repository. For HTTP/S basic auth + the secret must contain username and password fields. For + TLS the secret must contain a certFile and keyFile, and/or + caCert fields. properties: - interval: - description: The interval at which to check the upstream - for updates. + name: + description: Name of the referent type: string - passCredentials: - description: PassCredentials allows the credentials from - the SecretRef to be passed on to a host that does not - match the host as defined in URL. This may be required - if the host of the advertised chart URLs in the index - differ from the defined URL. Enabling this should be done - with caution, as it can potentially result in credentials - getting stolen in a MITM-attack. - type: boolean - secretRef: - description: The name of the secret containing authentication - credentials for the Helm repository. For HTTP/S basic - auth the secret must contain username and password fields. - For TLS the secret must contain a certFile and keyFile, - and/or caCert fields. - properties: - name: - description: Name of the referent - type: string - required: - - name - type: object - suspend: - description: This flag tells the controller to suspend the - reconciliation of this source. - type: boolean - timeout: - default: 60s - description: The timeout of index downloading, defaults - to 60s. + required: + - name + type: object + suspend: + description: This flag tells the controller to suspend the reconciliation + of this source. + type: boolean + timeout: + default: 60s + description: The timeout of index downloading, defaults to 60s. + type: string + url: + description: The Helm repository URL, a valid URL contains at + least a protocol and host. + type: string + required: + - interval + - url + type: object + status: + description: HelmRepositoryStatus defines the observed state of + the HelmRepository. + properties: + artifact: + description: Artifact represents the output of the last successful + repository sync. + properties: + checksum: + description: Checksum is the SHA1 checksum of the artifact. + type: string + lastUpdateTime: + description: LastUpdateTime is the timestamp corresponding + to the last update of this artifact. + format: date-time + type: string + path: + description: Path is the relative file path of this artifact. + type: string + revision: + description: Revision is a human readable identifier traceable + in the origin source system. It can be a Git commit SHA, + Git tag, a Helm index timestamp, a Helm chart version, + etc. type: string url: - description: The Helm repository URL, a valid URL contains - at least a protocol and host. + description: URL is the HTTP address of this artifact. type: string required: - - interval + - path - url type: object - status: - description: HelmRepositoryStatus defines the observed state - of the HelmRepository. + conditions: + description: Conditions holds the conditions for the HelmRepository. + items: + description: "Condition contains details for one aspect of + the current state of this API Resource. --- This struct + is intended for direct use as an array at the field path + .status.conditions. For example, type FooStatus struct{ + \ // Represents the observations of a foo's current state. + \ // Known .status.conditions.type are: \"Available\", + \"Progressing\", and \"Degraded\" // +patchMergeKey=type + \ // +patchStrategy=merge // +listType=map // + +listMapKey=type Conditions []metav1.Condition `json:\"conditions,omitempty\" + patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` + \n // other fields }" + properties: + lastTransitionTime: + description: lastTransitionTime is the last time the condition + transitioned from one status to another. This should + be when the underlying condition changed. If that is + not known, then using the time when the API field changed + is acceptable. + format: date-time + type: string + message: + description: message is a human readable message indicating + details about the transition. This may be an empty string. + maxLength: 32768 + type: string + observedGeneration: + description: observedGeneration represents the .metadata.generation + that the condition was set based upon. For instance, + if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration + is 9, the condition is out of date with respect to the + current state of the instance. + format: int64 + minimum: 0 + type: integer + reason: + description: reason contains a programmatic identifier + indicating the reason for the condition's last transition. + Producers of specific condition types may define expected + values and meanings for this field, and whether the + values are considered a guaranteed API. The value should + be a CamelCase string. This field may not be empty. + maxLength: 1024 + minLength: 1 + pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ + type: string + status: + description: status of the condition, one of True, False, + Unknown. + enum: + - "True" + - "False" + - Unknown + type: string + type: + description: type of condition in CamelCase or in foo.example.com/CamelCase. + --- Many .condition.type values are consistent across + resources like Available, but because arbitrary conditions + can be useful (see .node.status.conditions), the ability + to deconflict is important. The regex it matches is + (dns1123SubdomainFmt/)?(qualifiedNameFmt) + maxLength: 316 + pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ + type: string + required: + - lastTransitionTime + - message + - reason + - status + - type + type: object + type: array + lastHandledReconcileAt: + description: LastHandledReconcileAt holds the value of the most + recent reconcile request value, so a change can be detected. + type: string + observedGeneration: + description: ObservedGeneration is the last observed generation. + format: int64 + type: integer + url: + description: URL is the download link for the last index fetched. + type: string + type: object + type: object + served: true + storage: true + subresources: + status: {} + type: raw + - name: imagepolicies.image.toolkit.fluxcd.io + properties: + apiVersion: apiextensions.k8s.io/v1 + kind: CustomResourceDefinition + metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.5.0 + labels: + app.kubernetes.io/instance: flux-system + name: imagepolicies.image.toolkit.fluxcd.io + spec: + group: image.toolkit.fluxcd.io + names: + kind: ImagePolicy + listKind: ImagePolicyList + plural: imagepolicies + singular: imagepolicy + scope: Namespaced + versions: + - additionalPrinterColumns: + - jsonPath: .status.latestImage + name: LatestImage + type: string + name: v1alpha1 + schema: + openAPIV3Schema: + description: ImagePolicy is the Schema for the imagepolicies API + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the + latest internal value, and may reject unrecognized values. More + info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource + this object represents. Servers may infer this from the endpoint + the client submits requests to. Cannot be updated. In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: ImagePolicySpec defines the parameters for calculating + the ImagePolicy + properties: + filterTags: + description: FilterTags enables filtering for only a subset + of tags based on a set of rules. If no rules are provided, + all the tags from the repository will be ordered and compared. properties: - artifact: - description: Artifact represents the output of the last - successful repository sync. + extract: + description: Extract allows a capture group to be extracted + from the specified regular expression pattern, useful + before tag evaluation. + type: string + pattern: + description: Pattern specifies a regular expression pattern + used to filter for image tags. + type: string + type: object + imageRepositoryRef: + description: ImageRepositoryRef points at the object specifying + the image being scanned + properties: + name: + description: Name of the referent + type: string + required: + - name + type: object + policy: + description: Policy gives the particulars of the policy to be + followed in selecting the most recent image + properties: + alphabetical: + description: Alphabetical set of rules to use for alphabetical + ordering of the tags. properties: - checksum: - description: Checksum is the SHA1 checksum of the artifact. + order: + default: asc + description: Order specifies the sorting order of the + tags. Given the letters of the alphabet as tags, ascending + order would select Z, and descending order would select + A. + enum: + - asc + - desc type: string - lastUpdateTime: - description: LastUpdateTime is the timestamp corresponding - to the last update of this artifact. - format: date-time + type: object + numerical: + description: Numerical set of rules to use for numerical + ordering of the tags. + properties: + order: + default: asc + description: Order specifies the sorting order of the + tags. Given the integer values from 0 to 9 as tags, + ascending order would select 9, and descending order + would select 0. + enum: + - asc + - desc type: string - path: - description: Path is the relative file path of this - artifact. - type: string - revision: - description: Revision is a human readable identifier - traceable in the origin source system. It can be a - Git commit SHA, Git tag, a Helm index timestamp, a - Helm chart version, etc. - type: string - url: - description: URL is the HTTP address of this artifact. + type: object + semver: + description: SemVer gives a semantic version range to check + against the tags available. + properties: + range: + description: Range gives a semver range for the image + tag; the highest version within the range that's a + tag yields the latest image. type: string required: - - path - - url + - range type: object - conditions: - description: Conditions holds the conditions for the HelmRepository. - items: - description: "Condition contains details for one aspect - of the current state of this API Resource. --- This - struct is intended for direct use as an array at the - field path .status.conditions. For example, type FooStatus - struct{ // Represents the observations of a foo's - current state. // Known .status.conditions.type - are: \"Available\", \"Progressing\", and \"Degraded\" - \ // +patchMergeKey=type // +patchStrategy=merge - \ // +listType=map // +listMapKey=type Conditions - []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" - patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` - \n // other fields }" - properties: - lastTransitionTime: - description: lastTransitionTime is the last time the - condition transitioned from one status to another. - This should be when the underlying condition changed. If - that is not known, then using the time when the - API field changed is acceptable. - format: date-time - type: string - message: - description: message is a human readable message indicating - details about the transition. This may be an empty - string. - maxLength: 32768 - type: string - observedGeneration: - description: observedGeneration represents the .metadata.generation - that the condition was set based upon. For instance, - if .metadata.generation is currently 12, but the - .status.conditions[x].observedGeneration is 9, the - condition is out of date with respect to the current - state of the instance. - format: int64 - minimum: 0 - type: integer - reason: - description: reason contains a programmatic identifier - indicating the reason for the condition's last transition. - Producers of specific condition types may define - expected values and meanings for this field, and - whether the values are considered a guaranteed API. - The value should be a CamelCase string. This field - may not be empty. - maxLength: 1024 - minLength: 1 - pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ - type: string - status: - description: status of the condition, one of True, - False, Unknown. - enum: - - "True" - - "False" - - Unknown - type: string - type: - description: type of condition in CamelCase or in - foo.example.com/CamelCase. --- Many .condition.type - values are consistent across resources like Available, - but because arbitrary conditions can be useful (see - .node.status.conditions), the ability to deconflict - is important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) - maxLength: 316 - pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ - type: string - required: - - lastTransitionTime - - message - - reason - - status - - type - type: object - type: array - lastHandledReconcileAt: - description: LastHandledReconcileAt holds the value of the - most recent reconcile request value, so a change can be - detected. - type: string - observedGeneration: - description: ObservedGeneration is the last observed generation. - format: int64 - type: integer - url: - description: URL is the download link for the last index - fetched. - type: string type: object + required: + - imageRepositoryRef + - policy type: object - served: true - storage: true - subresources: - status: {} - type: raw - - name: imagepolicies.image.toolkit.fluxcd.io - properties: - apiVersion: apiextensions.k8s.io/v1 - kind: CustomResourceDefinition - metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.5.0 - labels: - app.kubernetes.io/instance: flux-system - name: imagepolicies.image.toolkit.fluxcd.io - spec: - group: image.toolkit.fluxcd.io - names: - kind: ImagePolicy - listKind: ImagePolicyList - plural: imagepolicies - singular: imagepolicy - scope: Namespaced - versions: - - additionalPrinterColumns: - - jsonPath: .status.latestImage - name: LatestImage - type: string - name: v1alpha1 - schema: - openAPIV3Schema: - description: ImagePolicy is the Schema for the imagepolicies API + status: + description: ImagePolicyStatus defines the observed state of ImagePolicy properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this - representation of an object. Servers should convert recognized - schemas to the latest internal value, and may reject unrecognized - values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + conditions: + items: + description: "Condition contains details for one aspect of + the current state of this API Resource. --- This struct + is intended for direct use as an array at the field path + .status.conditions. For example, type FooStatus struct{ + \ // Represents the observations of a foo's current state. + \ // Known .status.conditions.type are: \"Available\", + \"Progressing\", and \"Degraded\" // +patchMergeKey=type + \ // +patchStrategy=merge // +listType=map // + +listMapKey=type Conditions []metav1.Condition `json:\"conditions,omitempty\" + patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` + \n // other fields }" + properties: + lastTransitionTime: + description: lastTransitionTime is the last time the condition + transitioned from one status to another. This should + be when the underlying condition changed. If that is + not known, then using the time when the API field changed + is acceptable. + format: date-time + type: string + message: + description: message is a human readable message indicating + details about the transition. This may be an empty string. + maxLength: 32768 + type: string + observedGeneration: + description: observedGeneration represents the .metadata.generation + that the condition was set based upon. For instance, + if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration + is 9, the condition is out of date with respect to the + current state of the instance. + format: int64 + minimum: 0 + type: integer + reason: + description: reason contains a programmatic identifier + indicating the reason for the condition's last transition. + Producers of specific condition types may define expected + values and meanings for this field, and whether the + values are considered a guaranteed API. The value should + be a CamelCase string. This field may not be empty. + maxLength: 1024 + minLength: 1 + pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ + type: string + status: + description: status of the condition, one of True, False, + Unknown. + enum: + - "True" + - "False" + - Unknown + type: string + type: + description: type of condition in CamelCase or in foo.example.com/CamelCase. + --- Many .condition.type values are consistent across + resources like Available, but because arbitrary conditions + can be useful (see .node.status.conditions), the ability + to deconflict is important. The regex it matches is + (dns1123SubdomainFmt/)?(qualifiedNameFmt) + maxLength: 316 + pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ + type: string + required: + - lastTransitionTime + - message + - reason + - status + - type + type: object + type: array + latestImage: + description: LatestImage gives the first in the list of images + scanned by the image repository, when filtered and ordered + according to the policy. type: string - kind: - description: 'Kind is a string value representing the REST resource - this object represents. Servers may infer this from the endpoint - the client submits requests to. Cannot be updated. In CamelCase. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: ImagePolicySpec defines the parameters for calculating - the ImagePolicy + observedGeneration: + format: int64 + type: integer + type: object + type: object + served: true + storage: false + subresources: + status: {} + - additionalPrinterColumns: + - jsonPath: .status.latestImage + name: LatestImage + type: string + name: v1alpha2 + schema: + openAPIV3Schema: + description: ImagePolicy is the Schema for the imagepolicies API + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the + latest internal value, and may reject unrecognized values. More + info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource + this object represents. Servers may infer this from the endpoint + the client submits requests to. Cannot be updated. In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: ImagePolicySpec defines the parameters for calculating + the ImagePolicy + properties: + filterTags: + description: FilterTags enables filtering for only a subset + of tags based on a set of rules. If no rules are provided, + all the tags from the repository will be ordered and compared. properties: - filterTags: - description: FilterTags enables filtering for only a subset - of tags based on a set of rules. If no rules are provided, - all the tags from the repository will be ordered and compared. + extract: + description: Extract allows a capture group to be extracted + from the specified regular expression pattern, useful + before tag evaluation. + type: string + pattern: + description: Pattern specifies a regular expression pattern + used to filter for image tags. + type: string + type: object + imageRepositoryRef: + description: ImageRepositoryRef points at the object specifying + the image being scanned + properties: + name: + description: Name of the referent + type: string + required: + - name + type: object + policy: + description: Policy gives the particulars of the policy to be + followed in selecting the most recent image + properties: + alphabetical: + description: Alphabetical set of rules to use for alphabetical + ordering of the tags. properties: - extract: - description: Extract allows a capture group to be extracted - from the specified regular expression pattern, useful - before tag evaluation. - type: string - pattern: - description: Pattern specifies a regular expression - pattern used to filter for image tags. + order: + default: asc + description: Order specifies the sorting order of the + tags. Given the letters of the alphabet as tags, ascending + order would select Z, and descending order would select + A. + enum: + - asc + - desc type: string type: object - imageRepositoryRef: - description: ImageRepositoryRef points at the object specifying - the image being scanned + numerical: + description: Numerical set of rules to use for numerical + ordering of the tags. + properties: + order: + default: asc + description: Order specifies the sorting order of the + tags. Given the integer values from 0 to 9 as tags, + ascending order would select 9, and descending order + would select 0. + enum: + - asc + - desc + type: string + type: object + semver: + description: SemVer gives a semantic version range to check + against the tags available. + properties: + range: + description: Range gives a semver range for the image + tag; the highest version within the range that's a + tag yields the latest image. + type: string + required: + - range + type: object + type: object + required: + - imageRepositoryRef + - policy + type: object + status: + description: ImagePolicyStatus defines the observed state of ImagePolicy + properties: + conditions: + items: + description: "Condition contains details for one aspect of + the current state of this API Resource. --- This struct + is intended for direct use as an array at the field path + .status.conditions. For example, type FooStatus struct{ + \ // Represents the observations of a foo's current state. + \ // Known .status.conditions.type are: \"Available\", + \"Progressing\", and \"Degraded\" // +patchMergeKey=type + \ // +patchStrategy=merge // +listType=map // + +listMapKey=type Conditions []metav1.Condition `json:\"conditions,omitempty\" + patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` + \n // other fields }" + properties: + lastTransitionTime: + description: lastTransitionTime is the last time the condition + transitioned from one status to another. This should + be when the underlying condition changed. If that is + not known, then using the time when the API field changed + is acceptable. + format: date-time + type: string + message: + description: message is a human readable message indicating + details about the transition. This may be an empty string. + maxLength: 32768 + type: string + observedGeneration: + description: observedGeneration represents the .metadata.generation + that the condition was set based upon. For instance, + if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration + is 9, the condition is out of date with respect to the + current state of the instance. + format: int64 + minimum: 0 + type: integer + reason: + description: reason contains a programmatic identifier + indicating the reason for the condition's last transition. + Producers of specific condition types may define expected + values and meanings for this field, and whether the + values are considered a guaranteed API. The value should + be a CamelCase string. This field may not be empty. + maxLength: 1024 + minLength: 1 + pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ + type: string + status: + description: status of the condition, one of True, False, + Unknown. + enum: + - "True" + - "False" + - Unknown + type: string + type: + description: type of condition in CamelCase or in foo.example.com/CamelCase. + --- Many .condition.type values are consistent across + resources like Available, but because arbitrary conditions + can be useful (see .node.status.conditions), the ability + to deconflict is important. The regex it matches is + (dns1123SubdomainFmt/)?(qualifiedNameFmt) + maxLength: 316 + pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ + type: string + required: + - lastTransitionTime + - message + - reason + - status + - type + type: object + type: array + latestImage: + description: LatestImage gives the first in the list of images + scanned by the image repository, when filtered and ordered + according to the policy. + type: string + observedGeneration: + format: int64 + type: integer + type: object + type: object + served: true + storage: false + subresources: + status: {} + - additionalPrinterColumns: + - jsonPath: .status.latestImage + name: LatestImage + type: string + name: v1beta1 + schema: + openAPIV3Schema: + description: ImagePolicy is the Schema for the imagepolicies API + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the + latest internal value, and may reject unrecognized values. More + info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource + this object represents. Servers may infer this from the endpoint + the client submits requests to. Cannot be updated. In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: ImagePolicySpec defines the parameters for calculating + the ImagePolicy + properties: + filterTags: + description: FilterTags enables filtering for only a subset + of tags based on a set of rules. If no rules are provided, + all the tags from the repository will be ordered and compared. + properties: + extract: + description: Extract allows a capture group to be extracted + from the specified regular expression pattern, useful + before tag evaluation. + type: string + pattern: + description: Pattern specifies a regular expression pattern + used to filter for image tags. + type: string + type: object + imageRepositoryRef: + description: ImageRepositoryRef points at the object specifying + the image being scanned + properties: + name: + description: Name of the referent + type: string + required: + - name + type: object + policy: + description: Policy gives the particulars of the policy to be + followed in selecting the most recent image + properties: + alphabetical: + description: Alphabetical set of rules to use for alphabetical + ordering of the tags. + properties: + order: + default: asc + description: Order specifies the sorting order of the + tags. Given the letters of the alphabet as tags, ascending + order would select Z, and descending order would select + A. + enum: + - asc + - desc + type: string + type: object + numerical: + description: Numerical set of rules to use for numerical + ordering of the tags. + properties: + order: + default: asc + description: Order specifies the sorting order of the + tags. Given the integer values from 0 to 9 as tags, + ascending order would select 9, and descending order + would select 0. + enum: + - asc + - desc + type: string + type: object + semver: + description: SemVer gives a semantic version range to check + against the tags available. + properties: + range: + description: Range gives a semver range for the image + tag; the highest version within the range that's a + tag yields the latest image. + type: string + required: + - range + type: object + type: object + required: + - imageRepositoryRef + - policy + type: object + status: + description: ImagePolicyStatus defines the observed state of ImagePolicy + properties: + conditions: + items: + description: "Condition contains details for one aspect of + the current state of this API Resource. --- This struct + is intended for direct use as an array at the field path + .status.conditions. For example, type FooStatus struct{ + \ // Represents the observations of a foo's current state. + \ // Known .status.conditions.type are: \"Available\", + \"Progressing\", and \"Degraded\" // +patchMergeKey=type + \ // +patchStrategy=merge // +listType=map // + +listMapKey=type Conditions []metav1.Condition `json:\"conditions,omitempty\" + patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` + \n // other fields }" + properties: + lastTransitionTime: + description: lastTransitionTime is the last time the condition + transitioned from one status to another. This should + be when the underlying condition changed. If that is + not known, then using the time when the API field changed + is acceptable. + format: date-time + type: string + message: + description: message is a human readable message indicating + details about the transition. This may be an empty string. + maxLength: 32768 + type: string + observedGeneration: + description: observedGeneration represents the .metadata.generation + that the condition was set based upon. For instance, + if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration + is 9, the condition is out of date with respect to the + current state of the instance. + format: int64 + minimum: 0 + type: integer + reason: + description: reason contains a programmatic identifier + indicating the reason for the condition's last transition. + Producers of specific condition types may define expected + values and meanings for this field, and whether the + values are considered a guaranteed API. The value should + be a CamelCase string. This field may not be empty. + maxLength: 1024 + minLength: 1 + pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ + type: string + status: + description: status of the condition, one of True, False, + Unknown. + enum: + - "True" + - "False" + - Unknown + type: string + type: + description: type of condition in CamelCase or in foo.example.com/CamelCase. + --- Many .condition.type values are consistent across + resources like Available, but because arbitrary conditions + can be useful (see .node.status.conditions), the ability + to deconflict is important. The regex it matches is + (dns1123SubdomainFmt/)?(qualifiedNameFmt) + maxLength: 316 + pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ + type: string + required: + - lastTransitionTime + - message + - reason + - status + - type + type: object + type: array + latestImage: + description: LatestImage gives the first in the list of images + scanned by the image repository, when filtered and ordered + according to the policy. + type: string + observedGeneration: + format: int64 + type: integer + type: object + type: object + served: true + storage: true + subresources: + status: {} + type: raw + - name: imagerepositories.image.toolkit.fluxcd.io + properties: + apiVersion: apiextensions.k8s.io/v1 + kind: CustomResourceDefinition + metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.5.0 + labels: + app.kubernetes.io/instance: flux-system + name: imagerepositories.image.toolkit.fluxcd.io + spec: + group: image.toolkit.fluxcd.io + names: + kind: ImageRepository + listKind: ImageRepositoryList + plural: imagerepositories + singular: imagerepository + scope: Namespaced + versions: + - additionalPrinterColumns: + - jsonPath: .status.lastScanResult.scanTime + name: Last scan + type: string + - jsonPath: .status.lastScanResult.tagCount + name: Tags + type: string + name: v1alpha1 + schema: + openAPIV3Schema: + description: ImageRepository is the Schema for the imagerepositories + API + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the + latest internal value, and may reject unrecognized values. More + info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource + this object represents. Servers may infer this from the endpoint + the client submits requests to. Cannot be updated. In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: ImageRepositorySpec defines the parameters for scanning + an image repository, e.g., `fluxcd/flux`. + properties: + certSecretRef: + description: "CertSecretRef can be given the name of a secret + containing either or both of \n - a PEM-encoded client certificate + (`certFile`) and private key (`keyFile`); - a PEM-encoded + CA certificate (`caFile`) \n and whichever are supplied, + will be used for connecting to the registry. The client cert + and key are useful if you are authenticating with a certificate; + the CA cert is useful if you are using a self-signed server + certificate." + properties: + name: + description: Name of the referent + type: string + required: + - name + type: object + image: + description: Image is the name of the image repository + type: string + interval: + description: Interval is the length of time to wait between + scans of the image repository. + type: string + secretRef: + description: SecretRef can be given the name of a secret containing + credentials to use for the image registry. The secret should + be created with `kubectl create secret docker-registry`, or + the equivalent. + properties: + name: + description: Name of the referent + type: string + required: + - name + type: object + suspend: + description: This flag tells the controller to suspend subsequent + image scans. It does not apply to already started scans. Defaults + to false. + type: boolean + timeout: + description: Timeout for image scanning. Defaults to 'Interval' + duration. + type: string + type: object + status: + description: ImageRepositoryStatus defines the observed state of + ImageRepository + properties: + canonicalImageName: + description: CanonicalName is the name of the image repository + with all the implied bits made explicit; e.g., `docker.io/library/alpine` + rather than `alpine`. + type: string + conditions: + items: + description: "Condition contains details for one aspect of + the current state of this API Resource. --- This struct + is intended for direct use as an array at the field path + .status.conditions. For example, type FooStatus struct{ + \ // Represents the observations of a foo's current state. + \ // Known .status.conditions.type are: \"Available\", + \"Progressing\", and \"Degraded\" // +patchMergeKey=type + \ // +patchStrategy=merge // +listType=map // + +listMapKey=type Conditions []metav1.Condition `json:\"conditions,omitempty\" + patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` + \n // other fields }" + properties: + lastTransitionTime: + description: lastTransitionTime is the last time the condition + transitioned from one status to another. This should + be when the underlying condition changed. If that is + not known, then using the time when the API field changed + is acceptable. + format: date-time + type: string + message: + description: message is a human readable message indicating + details about the transition. This may be an empty string. + maxLength: 32768 + type: string + observedGeneration: + description: observedGeneration represents the .metadata.generation + that the condition was set based upon. For instance, + if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration + is 9, the condition is out of date with respect to the + current state of the instance. + format: int64 + minimum: 0 + type: integer + reason: + description: reason contains a programmatic identifier + indicating the reason for the condition's last transition. + Producers of specific condition types may define expected + values and meanings for this field, and whether the + values are considered a guaranteed API. The value should + be a CamelCase string. This field may not be empty. + maxLength: 1024 + minLength: 1 + pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ + type: string + status: + description: status of the condition, one of True, False, + Unknown. + enum: + - "True" + - "False" + - Unknown + type: string + type: + description: type of condition in CamelCase or in foo.example.com/CamelCase. + --- Many .condition.type values are consistent across + resources like Available, but because arbitrary conditions + can be useful (see .node.status.conditions), the ability + to deconflict is important. The regex it matches is + (dns1123SubdomainFmt/)?(qualifiedNameFmt) + maxLength: 316 + pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ + type: string + required: + - lastTransitionTime + - message + - reason + - status + - type + type: object + type: array + lastHandledReconcileAt: + description: LastHandledReconcileAt holds the value of the most + recent reconcile request value, so a change can be detected. + type: string + lastScanResult: + description: LastScanResult contains the number of fetched tags. + properties: + scanTime: + format: date-time + type: string + tagCount: + type: integer + required: + - tagCount + type: object + observedGeneration: + description: ObservedGeneration is the last reconciled generation. + format: int64 + type: integer + type: object + type: object + served: true + storage: false + subresources: + status: {} + - additionalPrinterColumns: + - jsonPath: .status.lastScanResult.scanTime + name: Last scan + type: string + - jsonPath: .status.lastScanResult.tagCount + name: Tags + type: string + name: v1alpha2 + schema: + openAPIV3Schema: + description: ImageRepository is the Schema for the imagerepositories + API + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the + latest internal value, and may reject unrecognized values. More + info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource + this object represents. Servers may infer this from the endpoint + the client submits requests to. Cannot be updated. In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: ImageRepositorySpec defines the parameters for scanning + an image repository, e.g., `fluxcd/flux`. + properties: + certSecretRef: + description: "CertSecretRef can be given the name of a secret + containing either or both of \n - a PEM-encoded client certificate + (`certFile`) and private key (`keyFile`); - a PEM-encoded + CA certificate (`caFile`) \n and whichever are supplied, + will be used for connecting to the registry. The client cert + and key are useful if you are authenticating with a certificate; + the CA cert is useful if you are using a self-signed server + certificate." + properties: + name: + description: Name of the referent + type: string + required: + - name + type: object + image: + description: Image is the name of the image repository + type: string + interval: + description: Interval is the length of time to wait between + scans of the image repository. + type: string + secretRef: + description: SecretRef can be given the name of a secret containing + credentials to use for the image registry. The secret should + be created with `kubectl create secret docker-registry`, or + the equivalent. + properties: + name: + description: Name of the referent + type: string + required: + - name + type: object + suspend: + description: This flag tells the controller to suspend subsequent + image scans. It does not apply to already started scans. Defaults + to false. + type: boolean + timeout: + description: Timeout for image scanning. Defaults to 'Interval' + duration. + type: string + type: object + status: + description: ImageRepositoryStatus defines the observed state of + ImageRepository + properties: + canonicalImageName: + description: CanonicalName is the name of the image repository + with all the implied bits made explicit; e.g., `docker.io/library/alpine` + rather than `alpine`. + type: string + conditions: + items: + description: "Condition contains details for one aspect of + the current state of this API Resource. --- This struct + is intended for direct use as an array at the field path + .status.conditions. For example, type FooStatus struct{ + \ // Represents the observations of a foo's current state. + \ // Known .status.conditions.type are: \"Available\", + \"Progressing\", and \"Degraded\" // +patchMergeKey=type + \ // +patchStrategy=merge // +listType=map // + +listMapKey=type Conditions []metav1.Condition `json:\"conditions,omitempty\" + patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` + \n // other fields }" + properties: + lastTransitionTime: + description: lastTransitionTime is the last time the condition + transitioned from one status to another. This should + be when the underlying condition changed. If that is + not known, then using the time when the API field changed + is acceptable. + format: date-time + type: string + message: + description: message is a human readable message indicating + details about the transition. This may be an empty string. + maxLength: 32768 + type: string + observedGeneration: + description: observedGeneration represents the .metadata.generation + that the condition was set based upon. For instance, + if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration + is 9, the condition is out of date with respect to the + current state of the instance. + format: int64 + minimum: 0 + type: integer + reason: + description: reason contains a programmatic identifier + indicating the reason for the condition's last transition. + Producers of specific condition types may define expected + values and meanings for this field, and whether the + values are considered a guaranteed API. The value should + be a CamelCase string. This field may not be empty. + maxLength: 1024 + minLength: 1 + pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ + type: string + status: + description: status of the condition, one of True, False, + Unknown. + enum: + - "True" + - "False" + - Unknown + type: string + type: + description: type of condition in CamelCase or in foo.example.com/CamelCase. + --- Many .condition.type values are consistent across + resources like Available, but because arbitrary conditions + can be useful (see .node.status.conditions), the ability + to deconflict is important. The regex it matches is + (dns1123SubdomainFmt/)?(qualifiedNameFmt) + maxLength: 316 + pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ + type: string + required: + - lastTransitionTime + - message + - reason + - status + - type + type: object + type: array + lastHandledReconcileAt: + description: LastHandledReconcileAt holds the value of the most + recent reconcile request value, so a change can be detected. + type: string + lastScanResult: + description: LastScanResult contains the number of fetched tags. + properties: + scanTime: + format: date-time + type: string + tagCount: + type: integer + required: + - tagCount + type: object + observedGeneration: + description: ObservedGeneration is the last reconciled generation. + format: int64 + type: integer + type: object + type: object + served: true + storage: false + subresources: + status: {} + - additionalPrinterColumns: + - jsonPath: .status.lastScanResult.scanTime + name: Last scan + type: string + - jsonPath: .status.lastScanResult.tagCount + name: Tags + type: string + name: v1beta1 + schema: + openAPIV3Schema: + description: ImageRepository is the Schema for the imagerepositories + API + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the + latest internal value, and may reject unrecognized values. More + info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource + this object represents. Servers may infer this from the endpoint + the client submits requests to. Cannot be updated. In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: ImageRepositorySpec defines the parameters for scanning + an image repository, e.g., `fluxcd/flux`. + properties: + certSecretRef: + description: "CertSecretRef can be given the name of a secret + containing either or both of \n - a PEM-encoded client certificate + (`certFile`) and private key (`keyFile`); - a PEM-encoded + CA certificate (`caFile`) \n and whichever are supplied, + will be used for connecting to the registry. The client cert + and key are useful if you are authenticating with a certificate; + the CA cert is useful if you are using a self-signed server + certificate." + properties: + name: + description: Name of the referent + type: string + required: + - name + type: object + image: + description: Image is the name of the image repository + type: string + interval: + description: Interval is the length of time to wait between + scans of the image repository. + type: string + secretRef: + description: SecretRef can be given the name of a secret containing + credentials to use for the image registry. The secret should + be created with `kubectl create secret docker-registry`, or + the equivalent. + properties: + name: + description: Name of the referent + type: string + required: + - name + type: object + suspend: + description: This flag tells the controller to suspend subsequent + image scans. It does not apply to already started scans. Defaults + to false. + type: boolean + timeout: + description: Timeout for image scanning. Defaults to 'Interval' + duration. + type: string + type: object + status: + description: ImageRepositoryStatus defines the observed state of + ImageRepository + properties: + canonicalImageName: + description: CanonicalName is the name of the image repository + with all the implied bits made explicit; e.g., `docker.io/library/alpine` + rather than `alpine`. + type: string + conditions: + items: + description: "Condition contains details for one aspect of + the current state of this API Resource. --- This struct + is intended for direct use as an array at the field path + .status.conditions. For example, type FooStatus struct{ + \ // Represents the observations of a foo's current state. + \ // Known .status.conditions.type are: \"Available\", + \"Progressing\", and \"Degraded\" // +patchMergeKey=type + \ // +patchStrategy=merge // +listType=map // + +listMapKey=type Conditions []metav1.Condition `json:\"conditions,omitempty\" + patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` + \n // other fields }" + properties: + lastTransitionTime: + description: lastTransitionTime is the last time the condition + transitioned from one status to another. This should + be when the underlying condition changed. If that is + not known, then using the time when the API field changed + is acceptable. + format: date-time + type: string + message: + description: message is a human readable message indicating + details about the transition. This may be an empty string. + maxLength: 32768 + type: string + observedGeneration: + description: observedGeneration represents the .metadata.generation + that the condition was set based upon. For instance, + if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration + is 9, the condition is out of date with respect to the + current state of the instance. + format: int64 + minimum: 0 + type: integer + reason: + description: reason contains a programmatic identifier + indicating the reason for the condition's last transition. + Producers of specific condition types may define expected + values and meanings for this field, and whether the + values are considered a guaranteed API. The value should + be a CamelCase string. This field may not be empty. + maxLength: 1024 + minLength: 1 + pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ + type: string + status: + description: status of the condition, one of True, False, + Unknown. + enum: + - "True" + - "False" + - Unknown + type: string + type: + description: type of condition in CamelCase or in foo.example.com/CamelCase. + --- Many .condition.type values are consistent across + resources like Available, but because arbitrary conditions + can be useful (see .node.status.conditions), the ability + to deconflict is important. The regex it matches is + (dns1123SubdomainFmt/)?(qualifiedNameFmt) + maxLength: 316 + pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ + type: string + required: + - lastTransitionTime + - message + - reason + - status + - type + type: object + type: array + lastHandledReconcileAt: + description: LastHandledReconcileAt holds the value of the most + recent reconcile request value, so a change can be detected. + type: string + lastScanResult: + description: LastScanResult contains the number of fetched tags. + properties: + scanTime: + format: date-time + type: string + tagCount: + type: integer + required: + - tagCount + type: object + observedGeneration: + description: ObservedGeneration is the last reconciled generation. + format: int64 + type: integer + type: object + type: object + served: true + storage: true + subresources: + status: {} + type: raw + - name: imageupdateautomations.image.toolkit.fluxcd.io + properties: + apiVersion: apiextensions.k8s.io/v1 + kind: CustomResourceDefinition + metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.5.0 + labels: + app.kubernetes.io/instance: flux-system + name: imageupdateautomations.image.toolkit.fluxcd.io + spec: + group: image.toolkit.fluxcd.io + names: + kind: ImageUpdateAutomation + listKind: ImageUpdateAutomationList + plural: imageupdateautomations + singular: imageupdateautomation + scope: Namespaced + versions: + - additionalPrinterColumns: + - jsonPath: .status.lastAutomationRunTime + name: Last run + type: string + name: v1alpha1 + schema: + openAPIV3Schema: + description: ImageUpdateAutomation is the Schema for the imageupdateautomations + API + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the + latest internal value, and may reject unrecognized values. More + info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource + this object represents. Servers may infer this from the endpoint + the client submits requests to. Cannot be updated. In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: ImageUpdateAutomationSpec defines the desired state + of ImageUpdateAutomation + properties: + checkout: + description: Checkout gives the parameters for cloning the git + repository, ready to make changes. + properties: + branch: + description: Branch gives the branch to clone from the git + repository. If `.spec.push` is not supplied, commits will + also be pushed to this branch. + type: string + gitRepositoryRef: + description: GitRepositoryRef refers to the resource giving + access details to a git repository to update files in. properties: name: description: Name of the referent @@ -2169,1196 +3264,36 @@ spec: required: - name type: object - policy: - description: Policy gives the particulars of the policy - to be followed in selecting the most recent image - properties: - alphabetical: - description: Alphabetical set of rules to use for alphabetical - ordering of the tags. - properties: - order: - default: asc - description: Order specifies the sorting order of - the tags. Given the letters of the alphabet as - tags, ascending order would select Z, and descending - order would select A. - enum: - - asc - - desc - type: string - type: object - numerical: - description: Numerical set of rules to use for numerical - ordering of the tags. - properties: - order: - default: asc - description: Order specifies the sorting order of - the tags. Given the integer values from 0 to 9 - as tags, ascending order would select 9, and descending - order would select 0. - enum: - - asc - - desc - type: string - type: object - semver: - description: SemVer gives a semantic version range to - check against the tags available. - properties: - range: - description: Range gives a semver range for the - image tag; the highest version within the range - that's a tag yields the latest image. - type: string - required: - - range - type: object - type: object required: - - imageRepositoryRef - - policy + - branch + - gitRepositoryRef type: object - status: - description: ImagePolicyStatus defines the observed state of - ImagePolicy + commit: + description: Commit specifies how to commit to the git repository. properties: - conditions: - items: - description: "Condition contains details for one aspect - of the current state of this API Resource. --- This - struct is intended for direct use as an array at the - field path .status.conditions. For example, type FooStatus - struct{ // Represents the observations of a foo's - current state. // Known .status.conditions.type - are: \"Available\", \"Progressing\", and \"Degraded\" - \ // +patchMergeKey=type // +patchStrategy=merge - \ // +listType=map // +listMapKey=type Conditions - []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" - patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` - \n // other fields }" - properties: - lastTransitionTime: - description: lastTransitionTime is the last time the - condition transitioned from one status to another. - This should be when the underlying condition changed. If - that is not known, then using the time when the - API field changed is acceptable. - format: date-time - type: string - message: - description: message is a human readable message indicating - details about the transition. This may be an empty - string. - maxLength: 32768 - type: string - observedGeneration: - description: observedGeneration represents the .metadata.generation - that the condition was set based upon. For instance, - if .metadata.generation is currently 12, but the - .status.conditions[x].observedGeneration is 9, the - condition is out of date with respect to the current - state of the instance. - format: int64 - minimum: 0 - type: integer - reason: - description: reason contains a programmatic identifier - indicating the reason for the condition's last transition. - Producers of specific condition types may define - expected values and meanings for this field, and - whether the values are considered a guaranteed API. - The value should be a CamelCase string. This field - may not be empty. - maxLength: 1024 - minLength: 1 - pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ - type: string - status: - description: status of the condition, one of True, - False, Unknown. - enum: - - "True" - - "False" - - Unknown - type: string - type: - description: type of condition in CamelCase or in - foo.example.com/CamelCase. --- Many .condition.type - values are consistent across resources like Available, - but because arbitrary conditions can be useful (see - .node.status.conditions), the ability to deconflict - is important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) - maxLength: 316 - pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ - type: string - required: - - lastTransitionTime - - message - - reason - - status - - type - type: object - type: array - latestImage: - description: LatestImage gives the first in the list of - images scanned by the image repository, when filtered - and ordered according to the policy. + authorEmail: + description: AuthorEmail gives the email to provide when + making a commit type: string - observedGeneration: - format: int64 - type: integer - type: object - type: object - served: true - storage: false - subresources: - status: {} - - additionalPrinterColumns: - - jsonPath: .status.latestImage - name: LatestImage - type: string - name: v1alpha2 - schema: - openAPIV3Schema: - description: ImagePolicy is the Schema for the imagepolicies API - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this - representation of an object. Servers should convert recognized - schemas to the latest internal value, and may reject unrecognized - values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource - this object represents. Servers may infer this from the endpoint - the client submits requests to. Cannot be updated. In CamelCase. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: ImagePolicySpec defines the parameters for calculating - the ImagePolicy - properties: - filterTags: - description: FilterTags enables filtering for only a subset - of tags based on a set of rules. If no rules are provided, - all the tags from the repository will be ordered and compared. + authorName: + description: AuthorName gives the name to provide when making + a commit + type: string + messageTemplate: + description: MessageTemplate provides a template for the + commit message, into which will be interpolated the details + of the change made. + type: string + signingKey: + description: SigningKey provides the option to sign commits + with a GPG key properties: - extract: - description: Extract allows a capture group to be extracted - from the specified regular expression pattern, useful - before tag evaluation. - type: string - pattern: - description: Pattern specifies a regular expression - pattern used to filter for image tags. - type: string - type: object - imageRepositoryRef: - description: ImageRepositoryRef points at the object specifying - the image being scanned - properties: - name: - description: Name of the referent - type: string - required: - - name - type: object - policy: - description: Policy gives the particulars of the policy - to be followed in selecting the most recent image - properties: - alphabetical: - description: Alphabetical set of rules to use for alphabetical - ordering of the tags. - properties: - order: - default: asc - description: Order specifies the sorting order of - the tags. Given the letters of the alphabet as - tags, ascending order would select Z, and descending - order would select A. - enum: - - asc - - desc - type: string - type: object - numerical: - description: Numerical set of rules to use for numerical - ordering of the tags. - properties: - order: - default: asc - description: Order specifies the sorting order of - the tags. Given the integer values from 0 to 9 - as tags, ascending order would select 9, and descending - order would select 0. - enum: - - asc - - desc - type: string - type: object - semver: - description: SemVer gives a semantic version range to - check against the tags available. - properties: - range: - description: Range gives a semver range for the - image tag; the highest version within the range - that's a tag yields the latest image. - type: string - required: - - range - type: object - type: object - required: - - imageRepositoryRef - - policy - type: object - status: - description: ImagePolicyStatus defines the observed state of - ImagePolicy - properties: - conditions: - items: - description: "Condition contains details for one aspect - of the current state of this API Resource. --- This - struct is intended for direct use as an array at the - field path .status.conditions. For example, type FooStatus - struct{ // Represents the observations of a foo's - current state. // Known .status.conditions.type - are: \"Available\", \"Progressing\", and \"Degraded\" - \ // +patchMergeKey=type // +patchStrategy=merge - \ // +listType=map // +listMapKey=type Conditions - []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" - patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` - \n // other fields }" - properties: - lastTransitionTime: - description: lastTransitionTime is the last time the - condition transitioned from one status to another. - This should be when the underlying condition changed. If - that is not known, then using the time when the - API field changed is acceptable. - format: date-time - type: string - message: - description: message is a human readable message indicating - details about the transition. This may be an empty - string. - maxLength: 32768 - type: string - observedGeneration: - description: observedGeneration represents the .metadata.generation - that the condition was set based upon. For instance, - if .metadata.generation is currently 12, but the - .status.conditions[x].observedGeneration is 9, the - condition is out of date with respect to the current - state of the instance. - format: int64 - minimum: 0 - type: integer - reason: - description: reason contains a programmatic identifier - indicating the reason for the condition's last transition. - Producers of specific condition types may define - expected values and meanings for this field, and - whether the values are considered a guaranteed API. - The value should be a CamelCase string. This field - may not be empty. - maxLength: 1024 - minLength: 1 - pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ - type: string - status: - description: status of the condition, one of True, - False, Unknown. - enum: - - "True" - - "False" - - Unknown - type: string - type: - description: type of condition in CamelCase or in - foo.example.com/CamelCase. --- Many .condition.type - values are consistent across resources like Available, - but because arbitrary conditions can be useful (see - .node.status.conditions), the ability to deconflict - is important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) - maxLength: 316 - pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ - type: string - required: - - lastTransitionTime - - message - - reason - - status - - type - type: object - type: array - latestImage: - description: LatestImage gives the first in the list of - images scanned by the image repository, when filtered - and ordered according to the policy. - type: string - observedGeneration: - format: int64 - type: integer - type: object - type: object - served: true - storage: false - subresources: - status: {} - - additionalPrinterColumns: - - jsonPath: .status.latestImage - name: LatestImage - type: string - name: v1beta1 - schema: - openAPIV3Schema: - description: ImagePolicy is the Schema for the imagepolicies API - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this - representation of an object. Servers should convert recognized - schemas to the latest internal value, and may reject unrecognized - values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource - this object represents. Servers may infer this from the endpoint - the client submits requests to. Cannot be updated. In CamelCase. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: ImagePolicySpec defines the parameters for calculating - the ImagePolicy - properties: - filterTags: - description: FilterTags enables filtering for only a subset - of tags based on a set of rules. If no rules are provided, - all the tags from the repository will be ordered and compared. - properties: - extract: - description: Extract allows a capture group to be extracted - from the specified regular expression pattern, useful - before tag evaluation. - type: string - pattern: - description: Pattern specifies a regular expression - pattern used to filter for image tags. - type: string - type: object - imageRepositoryRef: - description: ImageRepositoryRef points at the object specifying - the image being scanned - properties: - name: - description: Name of the referent - type: string - required: - - name - type: object - policy: - description: Policy gives the particulars of the policy - to be followed in selecting the most recent image - properties: - alphabetical: - description: Alphabetical set of rules to use for alphabetical - ordering of the tags. - properties: - order: - default: asc - description: Order specifies the sorting order of - the tags. Given the letters of the alphabet as - tags, ascending order would select Z, and descending - order would select A. - enum: - - asc - - desc - type: string - type: object - numerical: - description: Numerical set of rules to use for numerical - ordering of the tags. - properties: - order: - default: asc - description: Order specifies the sorting order of - the tags. Given the integer values from 0 to 9 - as tags, ascending order would select 9, and descending - order would select 0. - enum: - - asc - - desc - type: string - type: object - semver: - description: SemVer gives a semantic version range to - check against the tags available. - properties: - range: - description: Range gives a semver range for the - image tag; the highest version within the range - that's a tag yields the latest image. - type: string - required: - - range - type: object - type: object - required: - - imageRepositoryRef - - policy - type: object - status: - description: ImagePolicyStatus defines the observed state of - ImagePolicy - properties: - conditions: - items: - description: "Condition contains details for one aspect - of the current state of this API Resource. --- This - struct is intended for direct use as an array at the - field path .status.conditions. For example, type FooStatus - struct{ // Represents the observations of a foo's - current state. // Known .status.conditions.type - are: \"Available\", \"Progressing\", and \"Degraded\" - \ // +patchMergeKey=type // +patchStrategy=merge - \ // +listType=map // +listMapKey=type Conditions - []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" - patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` - \n // other fields }" - properties: - lastTransitionTime: - description: lastTransitionTime is the last time the - condition transitioned from one status to another. - This should be when the underlying condition changed. If - that is not known, then using the time when the - API field changed is acceptable. - format: date-time - type: string - message: - description: message is a human readable message indicating - details about the transition. This may be an empty - string. - maxLength: 32768 - type: string - observedGeneration: - description: observedGeneration represents the .metadata.generation - that the condition was set based upon. For instance, - if .metadata.generation is currently 12, but the - .status.conditions[x].observedGeneration is 9, the - condition is out of date with respect to the current - state of the instance. - format: int64 - minimum: 0 - type: integer - reason: - description: reason contains a programmatic identifier - indicating the reason for the condition's last transition. - Producers of specific condition types may define - expected values and meanings for this field, and - whether the values are considered a guaranteed API. - The value should be a CamelCase string. This field - may not be empty. - maxLength: 1024 - minLength: 1 - pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ - type: string - status: - description: status of the condition, one of True, - False, Unknown. - enum: - - "True" - - "False" - - Unknown - type: string - type: - description: type of condition in CamelCase or in - foo.example.com/CamelCase. --- Many .condition.type - values are consistent across resources like Available, - but because arbitrary conditions can be useful (see - .node.status.conditions), the ability to deconflict - is important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) - maxLength: 316 - pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ - type: string - required: - - lastTransitionTime - - message - - reason - - status - - type - type: object - type: array - latestImage: - description: LatestImage gives the first in the list of - images scanned by the image repository, when filtered - and ordered according to the policy. - type: string - observedGeneration: - format: int64 - type: integer - type: object - type: object - served: true - storage: true - subresources: - status: {} - type: raw - - name: imagerepositories.image.toolkit.fluxcd.io - properties: - apiVersion: apiextensions.k8s.io/v1 - kind: CustomResourceDefinition - metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.5.0 - labels: - app.kubernetes.io/instance: flux-system - name: imagerepositories.image.toolkit.fluxcd.io - spec: - group: image.toolkit.fluxcd.io - names: - kind: ImageRepository - listKind: ImageRepositoryList - plural: imagerepositories - singular: imagerepository - scope: Namespaced - versions: - - additionalPrinterColumns: - - jsonPath: .status.lastScanResult.scanTime - name: Last scan - type: string - - jsonPath: .status.lastScanResult.tagCount - name: Tags - type: string - name: v1alpha1 - schema: - openAPIV3Schema: - description: ImageRepository is the Schema for the imagerepositories - API - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this - representation of an object. Servers should convert recognized - schemas to the latest internal value, and may reject unrecognized - values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource - this object represents. Servers may infer this from the endpoint - the client submits requests to. Cannot be updated. In CamelCase. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: ImageRepositorySpec defines the parameters for - scanning an image repository, e.g., `fluxcd/flux`. - properties: - certSecretRef: - description: "CertSecretRef can be given the name of a secret - containing either or both of \n - a PEM-encoded client - certificate (`certFile`) and private key (`keyFile`); - \ - a PEM-encoded CA certificate (`caFile`) \n and whichever - are supplied, will be used for connecting to the registry. - The client cert and key are useful if you are authenticating - with a certificate; the CA cert is useful if you are - using a self-signed server certificate." - properties: - name: - description: Name of the referent - type: string - required: - - name - type: object - image: - description: Image is the name of the image repository - type: string - interval: - description: Interval is the length of time to wait between - scans of the image repository. - type: string - secretRef: - description: SecretRef can be given the name of a secret - containing credentials to use for the image registry. - The secret should be created with `kubectl create secret - docker-registry`, or the equivalent. - properties: - name: - description: Name of the referent - type: string - required: - - name - type: object - suspend: - description: This flag tells the controller to suspend subsequent - image scans. It does not apply to already started scans. - Defaults to false. - type: boolean - timeout: - description: Timeout for image scanning. Defaults to 'Interval' - duration. - type: string - type: object - status: - description: ImageRepositoryStatus defines the observed state - of ImageRepository - properties: - canonicalImageName: - description: CanonicalName is the name of the image repository - with all the implied bits made explicit; e.g., `docker.io/library/alpine` - rather than `alpine`. - type: string - conditions: - items: - description: "Condition contains details for one aspect - of the current state of this API Resource. --- This - struct is intended for direct use as an array at the - field path .status.conditions. For example, type FooStatus - struct{ // Represents the observations of a foo's - current state. // Known .status.conditions.type - are: \"Available\", \"Progressing\", and \"Degraded\" - \ // +patchMergeKey=type // +patchStrategy=merge - \ // +listType=map // +listMapKey=type Conditions - []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" - patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` - \n // other fields }" - properties: - lastTransitionTime: - description: lastTransitionTime is the last time the - condition transitioned from one status to another. - This should be when the underlying condition changed. If - that is not known, then using the time when the - API field changed is acceptable. - format: date-time - type: string - message: - description: message is a human readable message indicating - details about the transition. This may be an empty - string. - maxLength: 32768 - type: string - observedGeneration: - description: observedGeneration represents the .metadata.generation - that the condition was set based upon. For instance, - if .metadata.generation is currently 12, but the - .status.conditions[x].observedGeneration is 9, the - condition is out of date with respect to the current - state of the instance. - format: int64 - minimum: 0 - type: integer - reason: - description: reason contains a programmatic identifier - indicating the reason for the condition's last transition. - Producers of specific condition types may define - expected values and meanings for this field, and - whether the values are considered a guaranteed API. - The value should be a CamelCase string. This field - may not be empty. - maxLength: 1024 - minLength: 1 - pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ - type: string - status: - description: status of the condition, one of True, - False, Unknown. - enum: - - "True" - - "False" - - Unknown - type: string - type: - description: type of condition in CamelCase or in - foo.example.com/CamelCase. --- Many .condition.type - values are consistent across resources like Available, - but because arbitrary conditions can be useful (see - .node.status.conditions), the ability to deconflict - is important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) - maxLength: 316 - pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ - type: string - required: - - lastTransitionTime - - message - - reason - - status - - type - type: object - type: array - lastHandledReconcileAt: - description: LastHandledReconcileAt holds the value of the - most recent reconcile request value, so a change can be - detected. - type: string - lastScanResult: - description: LastScanResult contains the number of fetched - tags. - properties: - scanTime: - format: date-time - type: string - tagCount: - type: integer - required: - - tagCount - type: object - observedGeneration: - description: ObservedGeneration is the last reconciled generation. - format: int64 - type: integer - type: object - type: object - served: true - storage: false - subresources: - status: {} - - additionalPrinterColumns: - - jsonPath: .status.lastScanResult.scanTime - name: Last scan - type: string - - jsonPath: .status.lastScanResult.tagCount - name: Tags - type: string - name: v1alpha2 - schema: - openAPIV3Schema: - description: ImageRepository is the Schema for the imagerepositories - API - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this - representation of an object. Servers should convert recognized - schemas to the latest internal value, and may reject unrecognized - values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource - this object represents. Servers may infer this from the endpoint - the client submits requests to. Cannot be updated. In CamelCase. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: ImageRepositorySpec defines the parameters for - scanning an image repository, e.g., `fluxcd/flux`. - properties: - certSecretRef: - description: "CertSecretRef can be given the name of a secret - containing either or both of \n - a PEM-encoded client - certificate (`certFile`) and private key (`keyFile`); - \ - a PEM-encoded CA certificate (`caFile`) \n and whichever - are supplied, will be used for connecting to the registry. - The client cert and key are useful if you are authenticating - with a certificate; the CA cert is useful if you are - using a self-signed server certificate." - properties: - name: - description: Name of the referent - type: string - required: - - name - type: object - image: - description: Image is the name of the image repository - type: string - interval: - description: Interval is the length of time to wait between - scans of the image repository. - type: string - secretRef: - description: SecretRef can be given the name of a secret - containing credentials to use for the image registry. - The secret should be created with `kubectl create secret - docker-registry`, or the equivalent. - properties: - name: - description: Name of the referent - type: string - required: - - name - type: object - suspend: - description: This flag tells the controller to suspend subsequent - image scans. It does not apply to already started scans. - Defaults to false. - type: boolean - timeout: - description: Timeout for image scanning. Defaults to 'Interval' - duration. - type: string - type: object - status: - description: ImageRepositoryStatus defines the observed state - of ImageRepository - properties: - canonicalImageName: - description: CanonicalName is the name of the image repository - with all the implied bits made explicit; e.g., `docker.io/library/alpine` - rather than `alpine`. - type: string - conditions: - items: - description: "Condition contains details for one aspect - of the current state of this API Resource. --- This - struct is intended for direct use as an array at the - field path .status.conditions. For example, type FooStatus - struct{ // Represents the observations of a foo's - current state. // Known .status.conditions.type - are: \"Available\", \"Progressing\", and \"Degraded\" - \ // +patchMergeKey=type // +patchStrategy=merge - \ // +listType=map // +listMapKey=type Conditions - []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" - patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` - \n // other fields }" - properties: - lastTransitionTime: - description: lastTransitionTime is the last time the - condition transitioned from one status to another. - This should be when the underlying condition changed. If - that is not known, then using the time when the - API field changed is acceptable. - format: date-time - type: string - message: - description: message is a human readable message indicating - details about the transition. This may be an empty - string. - maxLength: 32768 - type: string - observedGeneration: - description: observedGeneration represents the .metadata.generation - that the condition was set based upon. For instance, - if .metadata.generation is currently 12, but the - .status.conditions[x].observedGeneration is 9, the - condition is out of date with respect to the current - state of the instance. - format: int64 - minimum: 0 - type: integer - reason: - description: reason contains a programmatic identifier - indicating the reason for the condition's last transition. - Producers of specific condition types may define - expected values and meanings for this field, and - whether the values are considered a guaranteed API. - The value should be a CamelCase string. This field - may not be empty. - maxLength: 1024 - minLength: 1 - pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ - type: string - status: - description: status of the condition, one of True, - False, Unknown. - enum: - - "True" - - "False" - - Unknown - type: string - type: - description: type of condition in CamelCase or in - foo.example.com/CamelCase. --- Many .condition.type - values are consistent across resources like Available, - but because arbitrary conditions can be useful (see - .node.status.conditions), the ability to deconflict - is important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) - maxLength: 316 - pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ - type: string - required: - - lastTransitionTime - - message - - reason - - status - - type - type: object - type: array - lastHandledReconcileAt: - description: LastHandledReconcileAt holds the value of the - most recent reconcile request value, so a change can be - detected. - type: string - lastScanResult: - description: LastScanResult contains the number of fetched - tags. - properties: - scanTime: - format: date-time - type: string - tagCount: - type: integer - required: - - tagCount - type: object - observedGeneration: - description: ObservedGeneration is the last reconciled generation. - format: int64 - type: integer - type: object - type: object - served: true - storage: false - subresources: - status: {} - - additionalPrinterColumns: - - jsonPath: .status.lastScanResult.scanTime - name: Last scan - type: string - - jsonPath: .status.lastScanResult.tagCount - name: Tags - type: string - name: v1beta1 - schema: - openAPIV3Schema: - description: ImageRepository is the Schema for the imagerepositories - API - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this - representation of an object. Servers should convert recognized - schemas to the latest internal value, and may reject unrecognized - values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource - this object represents. Servers may infer this from the endpoint - the client submits requests to. Cannot be updated. In CamelCase. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: ImageRepositorySpec defines the parameters for - scanning an image repository, e.g., `fluxcd/flux`. - properties: - certSecretRef: - description: "CertSecretRef can be given the name of a secret - containing either or both of \n - a PEM-encoded client - certificate (`certFile`) and private key (`keyFile`); - \ - a PEM-encoded CA certificate (`caFile`) \n and whichever - are supplied, will be used for connecting to the registry. - The client cert and key are useful if you are authenticating - with a certificate; the CA cert is useful if you are - using a self-signed server certificate." - properties: - name: - description: Name of the referent - type: string - required: - - name - type: object - image: - description: Image is the name of the image repository - type: string - interval: - description: Interval is the length of time to wait between - scans of the image repository. - type: string - secretRef: - description: SecretRef can be given the name of a secret - containing credentials to use for the image registry. - The secret should be created with `kubectl create secret - docker-registry`, or the equivalent. - properties: - name: - description: Name of the referent - type: string - required: - - name - type: object - suspend: - description: This flag tells the controller to suspend subsequent - image scans. It does not apply to already started scans. - Defaults to false. - type: boolean - timeout: - description: Timeout for image scanning. Defaults to 'Interval' - duration. - type: string - type: object - status: - description: ImageRepositoryStatus defines the observed state - of ImageRepository - properties: - canonicalImageName: - description: CanonicalName is the name of the image repository - with all the implied bits made explicit; e.g., `docker.io/library/alpine` - rather than `alpine`. - type: string - conditions: - items: - description: "Condition contains details for one aspect - of the current state of this API Resource. --- This - struct is intended for direct use as an array at the - field path .status.conditions. For example, type FooStatus - struct{ // Represents the observations of a foo's - current state. // Known .status.conditions.type - are: \"Available\", \"Progressing\", and \"Degraded\" - \ // +patchMergeKey=type // +patchStrategy=merge - \ // +listType=map // +listMapKey=type Conditions - []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" - patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` - \n // other fields }" - properties: - lastTransitionTime: - description: lastTransitionTime is the last time the - condition transitioned from one status to another. - This should be when the underlying condition changed. If - that is not known, then using the time when the - API field changed is acceptable. - format: date-time - type: string - message: - description: message is a human readable message indicating - details about the transition. This may be an empty - string. - maxLength: 32768 - type: string - observedGeneration: - description: observedGeneration represents the .metadata.generation - that the condition was set based upon. For instance, - if .metadata.generation is currently 12, but the - .status.conditions[x].observedGeneration is 9, the - condition is out of date with respect to the current - state of the instance. - format: int64 - minimum: 0 - type: integer - reason: - description: reason contains a programmatic identifier - indicating the reason for the condition's last transition. - Producers of specific condition types may define - expected values and meanings for this field, and - whether the values are considered a guaranteed API. - The value should be a CamelCase string. This field - may not be empty. - maxLength: 1024 - minLength: 1 - pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ - type: string - status: - description: status of the condition, one of True, - False, Unknown. - enum: - - "True" - - "False" - - Unknown - type: string - type: - description: type of condition in CamelCase or in - foo.example.com/CamelCase. --- Many .condition.type - values are consistent across resources like Available, - but because arbitrary conditions can be useful (see - .node.status.conditions), the ability to deconflict - is important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) - maxLength: 316 - pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ - type: string - required: - - lastTransitionTime - - message - - reason - - status - - type - type: object - type: array - lastHandledReconcileAt: - description: LastHandledReconcileAt holds the value of the - most recent reconcile request value, so a change can be - detected. - type: string - lastScanResult: - description: LastScanResult contains the number of fetched - tags. - properties: - scanTime: - format: date-time - type: string - tagCount: - type: integer - required: - - tagCount - type: object - observedGeneration: - description: ObservedGeneration is the last reconciled generation. - format: int64 - type: integer - type: object - type: object - served: true - storage: true - subresources: - status: {} - type: raw - - name: imageupdateautomations.image.toolkit.fluxcd.io - properties: - apiVersion: apiextensions.k8s.io/v1 - kind: CustomResourceDefinition - metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.5.0 - labels: - app.kubernetes.io/instance: flux-system - name: imageupdateautomations.image.toolkit.fluxcd.io - spec: - group: image.toolkit.fluxcd.io - names: - kind: ImageUpdateAutomation - listKind: ImageUpdateAutomationList - plural: imageupdateautomations - singular: imageupdateautomation - scope: Namespaced - versions: - - additionalPrinterColumns: - - jsonPath: .status.lastAutomationRunTime - name: Last run - type: string - name: v1alpha1 - schema: - openAPIV3Schema: - description: ImageUpdateAutomation is the Schema for the imageupdateautomations - API - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this - representation of an object. Servers should convert recognized - schemas to the latest internal value, and may reject unrecognized - values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource - this object represents. Servers may infer this from the endpoint - the client submits requests to. Cannot be updated. In CamelCase. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: ImageUpdateAutomationSpec defines the desired state - of ImageUpdateAutomation - properties: - checkout: - description: Checkout gives the parameters for cloning the - git repository, ready to make changes. - properties: - branch: - description: Branch gives the branch to clone from the - git repository. If `.spec.push` is not supplied, commits - will also be pushed to this branch. - type: string - gitRepositoryRef: - description: GitRepositoryRef refers to the resource - giving access details to a git repository to update - files in. + secretRef: + description: SecretRef holds the name to a secret that + contains a 'git.asc' key corresponding to the ASCII + Armored file containing the GPG signing keypair as + the value. It must be in the same namespace as the + ImageUpdateAutomation. properties: name: description: Name of the referent @@ -3366,21 +3301,245 @@ spec: required: - name type: object + type: object + required: + - authorEmail + - authorName + type: object + interval: + description: Interval gives an lower bound for how often the + automation run should be attempted. + type: string + push: + description: Push specifies how and where to push commits made + by the automation. If missing, commits are pushed (back) to + `.spec.checkout.branch`. + properties: + branch: + description: Branch specifies that commits should be pushed + to the branch named. The branch is created using `.spec.checkout.branch` + as the starting point, if it doesn't already exist. + type: string + required: + - branch + type: object + suspend: + description: Suspend tells the controller to not run this automation, + until it is unset (or set to false). Defaults to false. + type: boolean + update: + default: + strategy: Setters + description: Update gives the specification for how to update + the files in the repository. This can be left empty, to use + the default value. + properties: + path: + description: Path to the directory containing the manifests + to be updated. Defaults to 'None', which translates to + the root path of the GitRepositoryRef. + type: string + strategy: + default: Setters + description: Strategy names the strategy to be used. + enum: + - Setters + type: string + required: + - strategy + type: object + required: + - checkout + - commit + - interval + type: object + status: + description: ImageUpdateAutomationStatus defines the observed state + of ImageUpdateAutomation + properties: + conditions: + items: + description: "Condition contains details for one aspect of + the current state of this API Resource. --- This struct + is intended for direct use as an array at the field path + .status.conditions. For example, type FooStatus struct{ + \ // Represents the observations of a foo's current state. + \ // Known .status.conditions.type are: \"Available\", + \"Progressing\", and \"Degraded\" // +patchMergeKey=type + \ // +patchStrategy=merge // +listType=map // + +listMapKey=type Conditions []metav1.Condition `json:\"conditions,omitempty\" + patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` + \n // other fields }" + properties: + lastTransitionTime: + description: lastTransitionTime is the last time the condition + transitioned from one status to another. This should + be when the underlying condition changed. If that is + not known, then using the time when the API field changed + is acceptable. + format: date-time + type: string + message: + description: message is a human readable message indicating + details about the transition. This may be an empty string. + maxLength: 32768 + type: string + observedGeneration: + description: observedGeneration represents the .metadata.generation + that the condition was set based upon. For instance, + if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration + is 9, the condition is out of date with respect to the + current state of the instance. + format: int64 + minimum: 0 + type: integer + reason: + description: reason contains a programmatic identifier + indicating the reason for the condition's last transition. + Producers of specific condition types may define expected + values and meanings for this field, and whether the + values are considered a guaranteed API. The value should + be a CamelCase string. This field may not be empty. + maxLength: 1024 + minLength: 1 + pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ + type: string + status: + description: status of the condition, one of True, False, + Unknown. + enum: + - "True" + - "False" + - Unknown + type: string + type: + description: type of condition in CamelCase or in foo.example.com/CamelCase. + --- Many .condition.type values are consistent across + resources like Available, but because arbitrary conditions + can be useful (see .node.status.conditions), the ability + to deconflict is important. The regex it matches is + (dns1123SubdomainFmt/)?(qualifiedNameFmt) + maxLength: 316 + pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ + type: string + required: + - lastTransitionTime + - message + - reason + - status + - type + type: object + type: array + lastAutomationRunTime: + description: LastAutomationRunTime records the last time the + controller ran this automation through to completion (even + if no updates were made). + format: date-time + type: string + lastHandledReconcileAt: + description: LastHandledReconcileAt holds the value of the most + recent reconcile request value, so a change can be detected. + type: string + lastPushCommit: + description: LastPushCommit records the SHA1 of the last commit + made by the controller, for this automation object + type: string + lastPushTime: + description: LastPushTime records the time of the last pushed + change. + format: date-time + type: string + observedGeneration: + format: int64 + type: integer + type: object + type: object + served: true + storage: false + subresources: + status: {} + - additionalPrinterColumns: + - jsonPath: .status.lastAutomationRunTime + name: Last run + type: string + name: v1alpha2 + schema: + openAPIV3Schema: + description: ImageUpdateAutomation is the Schema for the imageupdateautomations + API + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the + latest internal value, and may reject unrecognized values. More + info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource + this object represents. Servers may infer this from the endpoint + the client submits requests to. Cannot be updated. In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: ImageUpdateAutomationSpec defines the desired state + of ImageUpdateAutomation + properties: + git: + description: GitSpec contains all the git-specific definitions. + This is technically optional, but in practice mandatory until + there are other kinds of source allowed. + properties: + checkout: + description: Checkout gives the parameters for cloning the + git repository, ready to make changes. If not present, + the `spec.ref` field from the referenced `GitRepository` + or its default will be used. + properties: + ref: + description: Reference gives a branch, tag or commit + to clone from the Git repository. + properties: + branch: + default: master + description: The Git branch to checkout, defaults + to master. + type: string + commit: + description: The Git commit SHA to checkout, if + specified Tag filters will be ignored. + type: string + semver: + description: The Git tag semver expression, takes + precedence over Tag. + type: string + tag: + description: The Git tag to checkout, takes precedence + over Branch. + type: string + type: object required: - - branch - - gitRepositoryRef + - ref type: object commit: description: Commit specifies how to commit to the git repository. properties: - authorEmail: - description: AuthorEmail gives the email to provide - when making a commit - type: string - authorName: - description: AuthorName gives the name to provide when - making a commit - type: string + author: + description: Author gives the email and optionally the + name to use as the author of commits. + properties: + email: + description: Email gives the email to provide when + making a commit. + type: string + name: + description: Name gives the name to provide when + making a commit. + type: string + required: + - email + type: object messageTemplate: description: MessageTemplate provides a template for the commit message, into which will be interpolated @@ -3405,17 +3564,12 @@ spec: type: object type: object required: - - authorEmail - - authorName + - author type: object - interval: - description: Interval gives an lower bound for how often - the automation run should be attempted. - type: string push: description: Push specifies how and where to push commits made by the automation. If missing, commits are pushed - (back) to `.spec.checkout.branch`. + (back) to `.spec.checkout.branch` or its default. properties: branch: description: Branch specifies that commits should be @@ -3426,2737 +3580,2428 @@ spec: required: - branch type: object - suspend: - description: Suspend tells the controller to not run this - automation, until it is unset (or set to false). Defaults - to false. - type: boolean - update: - default: - strategy: Setters - description: Update gives the specification for how to update - the files in the repository. This can be left empty, to - use the default value. - properties: - path: - description: Path to the directory containing the manifests - to be updated. Defaults to 'None', which translates - to the root path of the GitRepositoryRef. - type: string - strategy: - default: Setters - description: Strategy names the strategy to be used. - enum: - - Setters - type: string - required: - - strategy - type: object required: - - checkout - commit - - interval type: object - status: - description: ImageUpdateAutomationStatus defines the observed - state of ImageUpdateAutomation + interval: + description: Interval gives an lower bound for how often the + automation run should be attempted. + type: string + sourceRef: + description: SourceRef refers to the resource giving access + details to a git repository. properties: - conditions: - items: - description: "Condition contains details for one aspect - of the current state of this API Resource. --- This - struct is intended for direct use as an array at the - field path .status.conditions. For example, type FooStatus - struct{ // Represents the observations of a foo's - current state. // Known .status.conditions.type - are: \"Available\", \"Progressing\", and \"Degraded\" - \ // +patchMergeKey=type // +patchStrategy=merge - \ // +listType=map // +listMapKey=type Conditions - []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" - patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` - \n // other fields }" - properties: - lastTransitionTime: - description: lastTransitionTime is the last time the - condition transitioned from one status to another. - This should be when the underlying condition changed. If - that is not known, then using the time when the - API field changed is acceptable. - format: date-time - type: string - message: - description: message is a human readable message indicating - details about the transition. This may be an empty - string. - maxLength: 32768 - type: string - observedGeneration: - description: observedGeneration represents the .metadata.generation - that the condition was set based upon. For instance, - if .metadata.generation is currently 12, but the - .status.conditions[x].observedGeneration is 9, the - condition is out of date with respect to the current - state of the instance. - format: int64 - minimum: 0 - type: integer - reason: - description: reason contains a programmatic identifier - indicating the reason for the condition's last transition. - Producers of specific condition types may define - expected values and meanings for this field, and - whether the values are considered a guaranteed API. - The value should be a CamelCase string. This field - may not be empty. - maxLength: 1024 - minLength: 1 - pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ - type: string - status: - description: status of the condition, one of True, - False, Unknown. - enum: - - "True" - - "False" - - Unknown - type: string - type: - description: type of condition in CamelCase or in - foo.example.com/CamelCase. --- Many .condition.type - values are consistent across resources like Available, - but because arbitrary conditions can be useful (see - .node.status.conditions), the ability to deconflict - is important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) - maxLength: 316 - pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ - type: string - required: - - lastTransitionTime - - message - - reason - - status - - type - type: object - type: array - lastAutomationRunTime: - description: LastAutomationRunTime records the last time - the controller ran this automation through to completion - (even if no updates were made). - format: date-time + apiVersion: + description: API version of the referent type: string - lastHandledReconcileAt: - description: LastHandledReconcileAt holds the value of the - most recent reconcile request value, so a change can be - detected. + kind: + default: GitRepository + description: Kind of the referent + enum: + - GitRepository type: string - lastPushCommit: - description: LastPushCommit records the SHA1 of the last - commit made by the controller, for this automation object + name: + description: Name of the referent type: string - lastPushTime: - description: LastPushTime records the time of the last pushed - change. - format: date-time - type: string - observedGeneration: - format: int64 - type: integer + required: + - kind + - name type: object + suspend: + description: Suspend tells the controller to not run this automation, + until it is unset (or set to false). Defaults to false. + type: boolean + update: + default: + strategy: Setters + description: Update gives the specification for how to update + the files in the repository. This can be left empty, to use + the default value. + properties: + path: + description: Path to the directory containing the manifests + to be updated. Defaults to 'None', which translates to + the root path of the GitRepositoryRef. + type: string + strategy: + default: Setters + description: Strategy names the strategy to be used. + enum: + - Setters + type: string + required: + - strategy + type: object + required: + - interval + - sourceRef type: object - served: true - storage: false - subresources: - status: {} - - additionalPrinterColumns: - - jsonPath: .status.lastAutomationRunTime - name: Last run - type: string - name: v1alpha2 - schema: - openAPIV3Schema: - description: ImageUpdateAutomation is the Schema for the imageupdateautomations - API + status: + description: ImageUpdateAutomationStatus defines the observed state + of ImageUpdateAutomation properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this - representation of an object. Servers should convert recognized - schemas to the latest internal value, and may reject unrecognized - values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + conditions: + items: + description: "Condition contains details for one aspect of + the current state of this API Resource. --- This struct + is intended for direct use as an array at the field path + .status.conditions. For example, type FooStatus struct{ + \ // Represents the observations of a foo's current state. + \ // Known .status.conditions.type are: \"Available\", + \"Progressing\", and \"Degraded\" // +patchMergeKey=type + \ // +patchStrategy=merge // +listType=map // + +listMapKey=type Conditions []metav1.Condition `json:\"conditions,omitempty\" + patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` + \n // other fields }" + properties: + lastTransitionTime: + description: lastTransitionTime is the last time the condition + transitioned from one status to another. This should + be when the underlying condition changed. If that is + not known, then using the time when the API field changed + is acceptable. + format: date-time + type: string + message: + description: message is a human readable message indicating + details about the transition. This may be an empty string. + maxLength: 32768 + type: string + observedGeneration: + description: observedGeneration represents the .metadata.generation + that the condition was set based upon. For instance, + if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration + is 9, the condition is out of date with respect to the + current state of the instance. + format: int64 + minimum: 0 + type: integer + reason: + description: reason contains a programmatic identifier + indicating the reason for the condition's last transition. + Producers of specific condition types may define expected + values and meanings for this field, and whether the + values are considered a guaranteed API. The value should + be a CamelCase string. This field may not be empty. + maxLength: 1024 + minLength: 1 + pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ + type: string + status: + description: status of the condition, one of True, False, + Unknown. + enum: + - "True" + - "False" + - Unknown + type: string + type: + description: type of condition in CamelCase or in foo.example.com/CamelCase. + --- Many .condition.type values are consistent across + resources like Available, but because arbitrary conditions + can be useful (see .node.status.conditions), the ability + to deconflict is important. The regex it matches is + (dns1123SubdomainFmt/)?(qualifiedNameFmt) + maxLength: 316 + pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ + type: string + required: + - lastTransitionTime + - message + - reason + - status + - type + type: object + type: array + lastAutomationRunTime: + description: LastAutomationRunTime records the last time the + controller ran this automation through to completion (even + if no updates were made). + format: date-time type: string - kind: - description: 'Kind is a string value representing the REST resource - this object represents. Servers may infer this from the endpoint - the client submits requests to. Cannot be updated. In CamelCase. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + lastHandledReconcileAt: + description: LastHandledReconcileAt holds the value of the most + recent reconcile request value, so a change can be detected. type: string - metadata: - type: object - spec: - description: ImageUpdateAutomationSpec defines the desired state - of ImageUpdateAutomation + lastPushCommit: + description: LastPushCommit records the SHA1 of the last commit + made by the controller, for this automation object + type: string + lastPushTime: + description: LastPushTime records the time of the last pushed + change. + format: date-time + type: string + observedGeneration: + format: int64 + type: integer + type: object + type: object + served: true + storage: false + subresources: + status: {} + - additionalPrinterColumns: + - jsonPath: .status.lastAutomationRunTime + name: Last run + type: string + name: v1beta1 + schema: + openAPIV3Schema: + description: ImageUpdateAutomation is the Schema for the imageupdateautomations + API + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the + latest internal value, and may reject unrecognized values. More + info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource + this object represents. Servers may infer this from the endpoint + the client submits requests to. Cannot be updated. In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: ImageUpdateAutomationSpec defines the desired state + of ImageUpdateAutomation + properties: + git: + description: GitSpec contains all the git-specific definitions. + This is technically optional, but in practice mandatory until + there are other kinds of source allowed. properties: - git: - description: GitSpec contains all the git-specific definitions. - This is technically optional, but in practice mandatory - until there are other kinds of source allowed. + checkout: + description: Checkout gives the parameters for cloning the + git repository, ready to make changes. If not present, + the `spec.ref` field from the referenced `GitRepository` + or its default will be used. properties: - checkout: - description: Checkout gives the parameters for cloning - the git repository, ready to make changes. If not - present, the `spec.ref` field from the referenced - `GitRepository` or its default will be used. - properties: - ref: - description: Reference gives a branch, tag or commit - to clone from the Git repository. - properties: - branch: - default: master - description: The Git branch to checkout, defaults - to master. - type: string - commit: - description: The Git commit SHA to checkout, - if specified Tag filters will be ignored. - type: string - semver: - description: The Git tag semver expression, - takes precedence over Tag. - type: string - tag: - description: The Git tag to checkout, takes - precedence over Branch. - type: string - type: object - required: - - ref - type: object - commit: - description: Commit specifies how to commit to the git - repository. - properties: - author: - description: Author gives the email and optionally - the name to use as the author of commits. - properties: - email: - description: Email gives the email to provide - when making a commit. - type: string - name: - description: Name gives the name to provide - when making a commit. - type: string - required: - - email - type: object - messageTemplate: - description: MessageTemplate provides a template - for the commit message, into which will be interpolated - the details of the change made. - type: string - signingKey: - description: SigningKey provides the option to sign - commits with a GPG key - properties: - secretRef: - description: SecretRef holds the name to a secret - that contains a 'git.asc' key corresponding - to the ASCII Armored file containing the GPG - signing keypair as the value. It must be in - the same namespace as the ImageUpdateAutomation. - properties: - name: - description: Name of the referent - type: string - required: - - name - type: object - type: object - required: - - author - type: object - push: - description: Push specifies how and where to push commits - made by the automation. If missing, commits are pushed - (back) to `.spec.checkout.branch` or its default. + ref: + description: Reference gives a branch, tag or commit + to clone from the Git repository. properties: branch: - description: Branch specifies that commits should - be pushed to the branch named. The branch is created - using `.spec.checkout.branch` as the starting - point, if it doesn't already exist. + default: master + description: The Git branch to checkout, defaults + to master. type: string - required: - - branch - type: object - required: - - commit - type: object - interval: - description: Interval gives an lower bound for how often - the automation run should be attempted. - type: string - sourceRef: - description: SourceRef refers to the resource giving access - details to a git repository. - properties: - apiVersion: - description: API version of the referent - type: string - kind: - default: GitRepository - description: Kind of the referent - enum: - - GitRepository - type: string - name: - description: Name of the referent - type: string - required: - - kind - - name - type: object - suspend: - description: Suspend tells the controller to not run this - automation, until it is unset (or set to false). Defaults - to false. - type: boolean - update: - default: - strategy: Setters - description: Update gives the specification for how to update - the files in the repository. This can be left empty, to - use the default value. - properties: - path: - description: Path to the directory containing the manifests - to be updated. Defaults to 'None', which translates - to the root path of the GitRepositoryRef. - type: string - strategy: - default: Setters - description: Strategy names the strategy to be used. - enum: - - Setters - type: string - required: - - strategy - type: object - required: - - interval - - sourceRef - type: object - status: - description: ImageUpdateAutomationStatus defines the observed - state of ImageUpdateAutomation - properties: - conditions: - items: - description: "Condition contains details for one aspect - of the current state of this API Resource. --- This - struct is intended for direct use as an array at the - field path .status.conditions. For example, type FooStatus - struct{ // Represents the observations of a foo's - current state. // Known .status.conditions.type - are: \"Available\", \"Progressing\", and \"Degraded\" - \ // +patchMergeKey=type // +patchStrategy=merge - \ // +listType=map // +listMapKey=type Conditions - []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" - patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` - \n // other fields }" - properties: - lastTransitionTime: - description: lastTransitionTime is the last time the - condition transitioned from one status to another. - This should be when the underlying condition changed. If - that is not known, then using the time when the - API field changed is acceptable. - format: date-time - type: string - message: - description: message is a human readable message indicating - details about the transition. This may be an empty - string. - maxLength: 32768 - type: string - observedGeneration: - description: observedGeneration represents the .metadata.generation - that the condition was set based upon. For instance, - if .metadata.generation is currently 12, but the - .status.conditions[x].observedGeneration is 9, the - condition is out of date with respect to the current - state of the instance. - format: int64 - minimum: 0 - type: integer - reason: - description: reason contains a programmatic identifier - indicating the reason for the condition's last transition. - Producers of specific condition types may define - expected values and meanings for this field, and - whether the values are considered a guaranteed API. - The value should be a CamelCase string. This field - may not be empty. - maxLength: 1024 - minLength: 1 - pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ - type: string - status: - description: status of the condition, one of True, - False, Unknown. - enum: - - "True" - - "False" - - Unknown - type: string - type: - description: type of condition in CamelCase or in - foo.example.com/CamelCase. --- Many .condition.type - values are consistent across resources like Available, - but because arbitrary conditions can be useful (see - .node.status.conditions), the ability to deconflict - is important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) - maxLength: 316 - pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ - type: string - required: - - lastTransitionTime - - message - - reason - - status - - type - type: object - type: array - lastAutomationRunTime: - description: LastAutomationRunTime records the last time - the controller ran this automation through to completion - (even if no updates were made). - format: date-time - type: string - lastHandledReconcileAt: - description: LastHandledReconcileAt holds the value of the - most recent reconcile request value, so a change can be - detected. - type: string - lastPushCommit: - description: LastPushCommit records the SHA1 of the last - commit made by the controller, for this automation object - type: string - lastPushTime: - description: LastPushTime records the time of the last pushed - change. - format: date-time - type: string - observedGeneration: - format: int64 - type: integer - type: object - type: object - served: true - storage: false - subresources: - status: {} - - additionalPrinterColumns: - - jsonPath: .status.lastAutomationRunTime - name: Last run - type: string - name: v1beta1 - schema: - openAPIV3Schema: - description: ImageUpdateAutomation is the Schema for the imageupdateautomations - API - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this - representation of an object. Servers should convert recognized - schemas to the latest internal value, and may reject unrecognized - values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource - this object represents. Servers may infer this from the endpoint - the client submits requests to. Cannot be updated. In CamelCase. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: ImageUpdateAutomationSpec defines the desired state - of ImageUpdateAutomation - properties: - git: - description: GitSpec contains all the git-specific definitions. - This is technically optional, but in practice mandatory - until there are other kinds of source allowed. - properties: - checkout: - description: Checkout gives the parameters for cloning - the git repository, ready to make changes. If not - present, the `spec.ref` field from the referenced - `GitRepository` or its default will be used. - properties: - ref: - description: Reference gives a branch, tag or commit - to clone from the Git repository. - properties: - branch: - default: master - description: The Git branch to checkout, defaults - to master. - type: string - commit: - description: The Git commit SHA to checkout, - if specified Tag filters will be ignored. - type: string - semver: - description: The Git tag semver expression, - takes precedence over Tag. - type: string - tag: - description: The Git tag to checkout, takes - precedence over Branch. - type: string - type: object - required: - - ref - type: object - commit: - description: Commit specifies how to commit to the git - repository. - properties: - author: - description: Author gives the email and optionally - the name to use as the author of commits. - properties: - email: - description: Email gives the email to provide - when making a commit. - type: string - name: - description: Name gives the name to provide - when making a commit. - type: string - required: - - email - type: object - messageTemplate: - description: MessageTemplate provides a template - for the commit message, into which will be interpolated - the details of the change made. + commit: + description: The Git commit SHA to checkout, if + specified Tag filters will be ignored. type: string - signingKey: - description: SigningKey provides the option to sign - commits with a GPG key - properties: - secretRef: - description: SecretRef holds the name to a secret - that contains a 'git.asc' key corresponding - to the ASCII Armored file containing the GPG - signing keypair as the value. It must be in - the same namespace as the ImageUpdateAutomation. - properties: - name: - description: Name of the referent - type: string - required: - - name - type: object - type: object - required: - - author - type: object - push: - description: Push specifies how and where to push commits - made by the automation. If missing, commits are pushed - (back) to `.spec.checkout.branch` or its default. - properties: - branch: - description: Branch specifies that commits should - be pushed to the branch named. The branch is created - using `.spec.checkout.branch` as the starting - point, if it doesn't already exist. + semver: + description: The Git tag semver expression, takes + precedence over Tag. + type: string + tag: + description: The Git tag to checkout, takes precedence + over Branch. type: string - required: - - branch type: object required: - - commit + - ref type: object - interval: - description: Interval gives an lower bound for how often - the automation run should be attempted. - type: string - sourceRef: - description: SourceRef refers to the resource giving access - details to a git repository. + commit: + description: Commit specifies how to commit to the git repository. properties: - apiVersion: - description: API version of the referent - type: string - kind: - default: GitRepository - description: Kind of the referent - enum: - - GitRepository - type: string - name: - description: Name of the referent - type: string - required: - - kind - - name - type: object - suspend: - description: Suspend tells the controller to not run this - automation, until it is unset (or set to false). Defaults - to false. - type: boolean - update: - default: - strategy: Setters - description: Update gives the specification for how to update - the files in the repository. This can be left empty, to - use the default value. - properties: - path: - description: Path to the directory containing the manifests - to be updated. Defaults to 'None', which translates - to the root path of the GitRepositoryRef. - type: string - strategy: - default: Setters - description: Strategy names the strategy to be used. - enum: - - Setters - type: string - required: - - strategy - type: object - required: - - interval - - sourceRef - type: object - status: - description: ImageUpdateAutomationStatus defines the observed - state of ImageUpdateAutomation - properties: - conditions: - items: - description: "Condition contains details for one aspect - of the current state of this API Resource. --- This - struct is intended for direct use as an array at the - field path .status.conditions. For example, type FooStatus - struct{ // Represents the observations of a foo's - current state. // Known .status.conditions.type - are: \"Available\", \"Progressing\", and \"Degraded\" - \ // +patchMergeKey=type // +patchStrategy=merge - \ // +listType=map // +listMapKey=type Conditions - []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" - patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` - \n // other fields }" - properties: - lastTransitionTime: - description: lastTransitionTime is the last time the - condition transitioned from one status to another. - This should be when the underlying condition changed. If - that is not known, then using the time when the - API field changed is acceptable. - format: date-time - type: string - message: - description: message is a human readable message indicating - details about the transition. This may be an empty - string. - maxLength: 32768 - type: string - observedGeneration: - description: observedGeneration represents the .metadata.generation - that the condition was set based upon. For instance, - if .metadata.generation is currently 12, but the - .status.conditions[x].observedGeneration is 9, the - condition is out of date with respect to the current - state of the instance. - format: int64 - minimum: 0 - type: integer - reason: - description: reason contains a programmatic identifier - indicating the reason for the condition's last transition. - Producers of specific condition types may define - expected values and meanings for this field, and - whether the values are considered a guaranteed API. - The value should be a CamelCase string. This field - may not be empty. - maxLength: 1024 - minLength: 1 - pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ - type: string - status: - description: status of the condition, one of True, - False, Unknown. - enum: - - "True" - - "False" - - Unknown - type: string - type: - description: type of condition in CamelCase or in - foo.example.com/CamelCase. --- Many .condition.type - values are consistent across resources like Available, - but because arbitrary conditions can be useful (see - .node.status.conditions), the ability to deconflict - is important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) - maxLength: 316 - pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ - type: string - required: - - lastTransitionTime - - message - - reason - - status - - type - type: object - type: array - lastAutomationRunTime: - description: LastAutomationRunTime records the last time - the controller ran this automation through to completion - (even if no updates were made). - format: date-time - type: string - lastHandledReconcileAt: - description: LastHandledReconcileAt holds the value of the - most recent reconcile request value, so a change can be - detected. - type: string - lastPushCommit: - description: LastPushCommit records the SHA1 of the last - commit made by the controller, for this automation object - type: string - lastPushTime: - description: LastPushTime records the time of the last pushed - change. - format: date-time - type: string - observedGeneration: - format: int64 - type: integer - type: object - type: object - served: true - storage: true - subresources: - status: {} - type: raw - - name: kustomizations.kustomize.toolkit.fluxcd.io - properties: - apiVersion: apiextensions.k8s.io/v1 - kind: CustomResourceDefinition - metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.5.0 - labels: - app.kubernetes.io/instance: flux-system - name: kustomizations.kustomize.toolkit.fluxcd.io - spec: - group: kustomize.toolkit.fluxcd.io - names: - kind: Kustomization - listKind: KustomizationList - plural: kustomizations - shortNames: - - ks - singular: kustomization - scope: Namespaced - versions: - - additionalPrinterColumns: - - jsonPath: .status.conditions[?(@.type=="Ready")].status - name: Ready - type: string - - jsonPath: .status.conditions[?(@.type=="Ready")].message - name: Status - type: string - - jsonPath: .metadata.creationTimestamp - name: Age - type: date - name: v1beta1 - schema: - openAPIV3Schema: - description: Kustomization is the Schema for the kustomizations - API. - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this - representation of an object. Servers should convert recognized - schemas to the latest internal value, and may reject unrecognized - values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource - this object represents. Servers may infer this from the endpoint - the client submits requests to. Cannot be updated. In CamelCase. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: KustomizationSpec defines the desired state of - a kustomization. - properties: - decryption: - description: Decrypt Kubernetes secrets before applying - them on the cluster. - properties: - provider: - description: Provider is the name of the decryption - engine. - enum: - - sops - type: string - secretRef: - description: The secret name containing the private - OpenPGP keys used for decryption. + author: + description: Author gives the email and optionally the + name to use as the author of commits. properties: + email: + description: Email gives the email to provide when + making a commit. + type: string name: - description: Name of the referent + description: Name gives the name to provide when + making a commit. type: string required: - - name + - email + type: object + messageTemplate: + description: MessageTemplate provides a template for + the commit message, into which will be interpolated + the details of the change made. + type: string + signingKey: + description: SigningKey provides the option to sign + commits with a GPG key + properties: + secretRef: + description: SecretRef holds the name to a secret + that contains a 'git.asc' key corresponding to + the ASCII Armored file containing the GPG signing + keypair as the value. It must be in the same namespace + as the ImageUpdateAutomation. + properties: + name: + description: Name of the referent + type: string + required: + - name + type: object type: object required: - - provider + - author type: object - dependsOn: - description: DependsOn may contain a dependency.CrossNamespaceDependencyReference - slice with references to Kustomization resources that - must be ready before this Kustomization can be reconciled. - items: - description: CrossNamespaceDependencyReference holds the - reference to a dependency. + push: + description: Push specifies how and where to push commits + made by the automation. If missing, commits are pushed + (back) to `.spec.checkout.branch` or its default. + properties: + branch: + description: Branch specifies that commits should be + pushed to the branch named. The branch is created + using `.spec.checkout.branch` as the starting point, + if it doesn't already exist. + type: string + required: + - branch + type: object + required: + - commit + type: object + interval: + description: Interval gives an lower bound for how often the + automation run should be attempted. + type: string + sourceRef: + description: SourceRef refers to the resource giving access + details to a git repository. + properties: + apiVersion: + description: API version of the referent + type: string + kind: + default: GitRepository + description: Kind of the referent + enum: + - GitRepository + type: string + name: + description: Name of the referent + type: string + required: + - kind + - name + type: object + suspend: + description: Suspend tells the controller to not run this automation, + until it is unset (or set to false). Defaults to false. + type: boolean + update: + default: + strategy: Setters + description: Update gives the specification for how to update + the files in the repository. This can be left empty, to use + the default value. + properties: + path: + description: Path to the directory containing the manifests + to be updated. Defaults to 'None', which translates to + the root path of the GitRepositoryRef. + type: string + strategy: + default: Setters + description: Strategy names the strategy to be used. + enum: + - Setters + type: string + required: + - strategy + type: object + required: + - interval + - sourceRef + type: object + status: + description: ImageUpdateAutomationStatus defines the observed state + of ImageUpdateAutomation + properties: + conditions: + items: + description: "Condition contains details for one aspect of + the current state of this API Resource. --- This struct + is intended for direct use as an array at the field path + .status.conditions. For example, type FooStatus struct{ + \ // Represents the observations of a foo's current state. + \ // Known .status.conditions.type are: \"Available\", + \"Progressing\", and \"Degraded\" // +patchMergeKey=type + \ // +patchStrategy=merge // +listType=map // + +listMapKey=type Conditions []metav1.Condition `json:\"conditions,omitempty\" + patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` + \n // other fields }" + properties: + lastTransitionTime: + description: lastTransitionTime is the last time the condition + transitioned from one status to another. This should + be when the underlying condition changed. If that is + not known, then using the time when the API field changed + is acceptable. + format: date-time + type: string + message: + description: message is a human readable message indicating + details about the transition. This may be an empty string. + maxLength: 32768 + type: string + observedGeneration: + description: observedGeneration represents the .metadata.generation + that the condition was set based upon. For instance, + if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration + is 9, the condition is out of date with respect to the + current state of the instance. + format: int64 + minimum: 0 + type: integer + reason: + description: reason contains a programmatic identifier + indicating the reason for the condition's last transition. + Producers of specific condition types may define expected + values and meanings for this field, and whether the + values are considered a guaranteed API. The value should + be a CamelCase string. This field may not be empty. + maxLength: 1024 + minLength: 1 + pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ + type: string + status: + description: status of the condition, one of True, False, + Unknown. + enum: + - "True" + - "False" + - Unknown + type: string + type: + description: type of condition in CamelCase or in foo.example.com/CamelCase. + --- Many .condition.type values are consistent across + resources like Available, but because arbitrary conditions + can be useful (see .node.status.conditions), the ability + to deconflict is important. The regex it matches is + (dns1123SubdomainFmt/)?(qualifiedNameFmt) + maxLength: 316 + pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ + type: string + required: + - lastTransitionTime + - message + - reason + - status + - type + type: object + type: array + lastAutomationRunTime: + description: LastAutomationRunTime records the last time the + controller ran this automation through to completion (even + if no updates were made). + format: date-time + type: string + lastHandledReconcileAt: + description: LastHandledReconcileAt holds the value of the most + recent reconcile request value, so a change can be detected. + type: string + lastPushCommit: + description: LastPushCommit records the SHA1 of the last commit + made by the controller, for this automation object + type: string + lastPushTime: + description: LastPushTime records the time of the last pushed + change. + format: date-time + type: string + observedGeneration: + format: int64 + type: integer + type: object + type: object + served: true + storage: true + subresources: + status: {} + type: raw + - name: kustomizations.kustomize.toolkit.fluxcd.io + properties: + apiVersion: apiextensions.k8s.io/v1 + kind: CustomResourceDefinition + metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.5.0 + labels: + app.kubernetes.io/instance: flux-system + name: kustomizations.kustomize.toolkit.fluxcd.io + spec: + group: kustomize.toolkit.fluxcd.io + names: + kind: Kustomization + listKind: KustomizationList + plural: kustomizations + shortNames: + - ks + singular: kustomization + scope: Namespaced + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=="Ready")].status + name: Ready + type: string + - jsonPath: .status.conditions[?(@.type=="Ready")].message + name: Status + type: string + - jsonPath: .metadata.creationTimestamp + name: Age + type: date + name: v1beta1 + schema: + openAPIV3Schema: + description: Kustomization is the Schema for the kustomizations API. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the + latest internal value, and may reject unrecognized values. More + info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource + this object represents. Servers may infer this from the endpoint + the client submits requests to. Cannot be updated. In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: KustomizationSpec defines the desired state of a kustomization. + properties: + decryption: + description: Decrypt Kubernetes secrets before applying them + on the cluster. + properties: + provider: + description: Provider is the name of the decryption engine. + enum: + - sops + type: string + secretRef: + description: The secret name containing the private OpenPGP + keys used for decryption. + properties: + name: + description: Name of the referent + type: string + required: + - name + type: object + required: + - provider + type: object + dependsOn: + description: DependsOn may contain a dependency.CrossNamespaceDependencyReference + slice with references to Kustomization resources that must + be ready before this Kustomization can be reconciled. + items: + description: CrossNamespaceDependencyReference holds the reference + to a dependency. + properties: + name: + description: Name holds the name reference of a dependency. + type: string + namespace: + description: Namespace holds the namespace reference of + a dependency. + type: string + required: + - name + type: object + type: array + force: + default: false + description: Force instructs the controller to recreate resources + when patching fails due to an immutable field change. + type: boolean + healthChecks: + description: A list of resources to be included in the health + assessment. + items: + description: NamespacedObjectKindReference contains enough + information to let you locate the typed referenced object + in any namespace + properties: + apiVersion: + description: API version of the referent, if not specified + the Kubernetes preferred version will be used + type: string + kind: + description: Kind of the referent + type: string + name: + description: Name of the referent + type: string + namespace: + description: Namespace of the referent, when not specified + it acts as LocalObjectReference + type: string + required: + - kind + - name + type: object + type: array + images: + description: Images is a list of (image name, new name, new + tag or digest) for changing image names, tags or digests. + This can also be achieved with a patch, but this operator + is simpler to specify. + items: + description: Image contains an image name, a new name, a new + tag or digest, which will replace the original name and + tag. + properties: + digest: + description: Digest is the value used to replace the original + image tag. If digest is present NewTag value is ignored. + type: string + name: + description: Name is a tag-less image name. + type: string + newName: + description: NewName is the value used to replace the + original name. + type: string + newTag: + description: NewTag is the value used to replace the original + tag. + type: string + required: + - name + type: object + type: array + interval: + description: The interval at which to reconcile the Kustomization. + type: string + kubeConfig: + description: The KubeConfig for reconciling the Kustomization + on a remote cluster. When specified, KubeConfig takes precedence + over ServiceAccountName. + properties: + secretRef: + description: SecretRef holds the name to a secret that contains + a 'value' key with the kubeconfig file as the value. It + must be in the same namespace as the Kustomization. It + is recommended that the kubeconfig is self-contained, + and the secret is regularly updated if credentials such + as a cloud-access-token expire. Cloud specific `cmd-path` + auth helpers will not function without adding binaries + and credentials to the Pod that is responsible for reconciling + the Kustomization. + properties: + name: + description: Name of the referent + type: string + required: + - name + type: object + type: object + patches: + description: Strategic merge and JSON patches, defined as inline + YAML objects, capable of targeting objects based on kind, + label and annotation selectors. + items: + description: Patch contains either a StrategicMerge or a JSON6902 + patch, either a file or inline, and the target the patch + should be applied to. + properties: + patch: + description: Patch contains the JSON6902 patch document + with an array of operation objects. + type: string + target: + description: Target points to the resources that the patch + document should be applied to. properties: - name: - description: Name holds the name reference of a dependency. + annotationSelector: + description: AnnotationSelector is a string that follows + the label selection expression https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#api + It matches with the resource annotations. type: string - namespace: - description: Namespace holds the namespace reference - of a dependency. - type: string - required: - - name - type: object - type: array - force: - default: false - description: Force instructs the controller to recreate - resources when patching fails due to an immutable field - change. - type: boolean - healthChecks: - description: A list of resources to be included in the health - assessment. - items: - description: NamespacedObjectKindReference contains enough - information to let you locate the typed referenced object - in any namespace - properties: - apiVersion: - description: API version of the referent, if not specified - the Kubernetes preferred version will be used + group: + description: Group is the API group to select resources + from. Together with Version and Kind it is capable + of unambiguously identifying and/or selecting resources. + https://github.com/kubernetes/community/blob/master/contributors/design-proposals/api-machinery/api-group.md type: string kind: - description: Kind of the referent + description: Kind of the API Group to select resources + from. Together with Group and Version it is capable + of unambiguously identifying and/or selecting resources. + https://github.com/kubernetes/community/blob/master/contributors/design-proposals/api-machinery/api-group.md + type: string + labelSelector: + description: LabelSelector is a string that follows + the label selection expression https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#api + It matches with the resource labels. type: string name: - description: Name of the referent + description: Name to match resources with. type: string namespace: - description: Namespace of the referent, when not specified - it acts as LocalObjectReference + description: Namespace to select resources from. + type: string + version: + description: Version of the API Group to select resources + from. Together with Group and Kind it is capable + of unambiguously identifying and/or selecting resources. + https://github.com/kubernetes/community/blob/master/contributors/design-proposals/api-machinery/api-group.md + type: string + type: object + type: object + type: array + patchesJson6902: + description: JSON 6902 patches, defined as inline YAML objects. + items: + description: JSON6902Patch contains a JSON6902 patch and the + target the patch should be applied to. + properties: + patch: + description: Patch contains the JSON6902 patch document + with an array of operation objects. + items: + description: JSON6902 is a JSON6902 operation object. + https://tools.ietf.org/html/rfc6902#section-4 + properties: + from: + type: string + op: + enum: + - test + - remove + - add + - replace + - move + - copy + type: string + path: + type: string + value: + x-kubernetes-preserve-unknown-fields: true + required: + - op + - path + type: object + type: array + target: + description: Target points to the resources that the patch + document should be applied to. + properties: + annotationSelector: + description: AnnotationSelector is a string that follows + the label selection expression https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#api + It matches with the resource annotations. + type: string + group: + description: Group is the API group to select resources + from. Together with Version and Kind it is capable + of unambiguously identifying and/or selecting resources. + https://github.com/kubernetes/community/blob/master/contributors/design-proposals/api-machinery/api-group.md + type: string + kind: + description: Kind of the API Group to select resources + from. Together with Group and Version it is capable + of unambiguously identifying and/or selecting resources. + https://github.com/kubernetes/community/blob/master/contributors/design-proposals/api-machinery/api-group.md + type: string + labelSelector: + description: LabelSelector is a string that follows + the label selection expression https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#api + It matches with the resource labels. + type: string + name: + description: Name to match resources with. + type: string + namespace: + description: Namespace to select resources from. + type: string + version: + description: Version of the API Group to select resources + from. Together with Group and Kind it is capable + of unambiguously identifying and/or selecting resources. + https://github.com/kubernetes/community/blob/master/contributors/design-proposals/api-machinery/api-group.md + type: string + type: object + required: + - patch + - target + type: object + type: array + patchesStrategicMerge: + description: Strategic merge patches, defined as inline YAML + objects. + items: + x-kubernetes-preserve-unknown-fields: true + type: array + path: + description: Path to the directory containing the kustomization.yaml + file, or the set of plain YAMLs a kustomization.yaml should + be generated for. Defaults to 'None', which translates to + the root path of the SourceRef. + type: string + postBuild: + description: PostBuild describes which actions to perform on + the YAML manifest generated by building the kustomize overlay. + properties: + substitute: + additionalProperties: + type: string + description: Substitute holds a map of key/value pairs. + The variables defined in your YAML manifests that match + any of the keys defined in the map will be substituted + with the set value. Includes support for bash string replacement + functions e.g. ${var:=default}, ${var:position} and ${var/substring/replacement}. + type: object + substituteFrom: + description: SubstituteFrom holds references to ConfigMaps + and Secrets containing the variables and their values + to be substituted in the YAML manifests. The ConfigMap + and the Secret data keys represent the var names and they + must match the vars declared in the manifests for the + substitution to happen. + items: + description: SubstituteReference contains a reference + to a resource containing the variables name and value. + properties: + kind: + description: Kind of the values referent, valid values + are ('Secret', 'ConfigMap'). + enum: + - Secret + - ConfigMap + type: string + name: + description: Name of the values referent. Should reside + in the same namespace as the referring resource. + maxLength: 253 + minLength: 1 type: string required: - kind - name type: object type: array - images: - description: Images is a list of (image name, new name, - new tag or digest) for changing image names, tags or digests. - This can also be achieved with a patch, but this operator - is simpler to specify. - items: - description: Image contains an image name, a new name, - a new tag or digest, which will replace the original - name and tag. - properties: - digest: - description: Digest is the value used to replace the - original image tag. If digest is present NewTag - value is ignored. - type: string - name: - description: Name is a tag-less image name. - type: string - newName: - description: NewName is the value used to replace - the original name. - type: string - newTag: - description: NewTag is the value used to replace the - original tag. - type: string - required: - - name - type: object - type: array - interval: - description: The interval at which to reconcile the Kustomization. + type: object + prune: + description: Prune enables garbage collection. + type: boolean + retryInterval: + description: The interval at which to retry a previously failed + reconciliation. When not specified, the controller uses the + KustomizationSpec.Interval value to retry failures. + type: string + serviceAccountName: + description: The name of the Kubernetes service account to impersonate + when reconciling this Kustomization. + type: string + sourceRef: + description: Reference of the source where the kustomization + file is. + properties: + apiVersion: + description: API version of the referent type: string - kubeConfig: - description: The KubeConfig for reconciling the Kustomization - on a remote cluster. When specified, KubeConfig takes - precedence over ServiceAccountName. - properties: - secretRef: - description: SecretRef holds the name to a secret that - contains a 'value' key with the kubeconfig file as - the value. It must be in the same namespace as the - Kustomization. It is recommended that the kubeconfig - is self-contained, and the secret is regularly updated - if credentials such as a cloud-access-token expire. - Cloud specific `cmd-path` auth helpers will not function - without adding binaries and credentials to the Pod - that is responsible for reconciling the Kustomization. - properties: - name: - description: Name of the referent - type: string - required: - - name - type: object - type: object - patches: - description: Strategic merge and JSON patches, defined as - inline YAML objects, capable of targeting objects based - on kind, label and annotation selectors. - items: - description: Patch contains either a StrategicMerge or - a JSON6902 patch, either a file or inline, and the target - the patch should be applied to. - properties: - patch: - description: Patch contains the JSON6902 patch document - with an array of operation objects. - type: string - target: - description: Target points to the resources that the - patch document should be applied to. - properties: - annotationSelector: - description: AnnotationSelector is a string that - follows the label selection expression https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#api - It matches with the resource annotations. - type: string - group: - description: Group is the API group to select - resources from. Together with Version and Kind - it is capable of unambiguously identifying and/or - selecting resources. https://github.com/kubernetes/community/blob/master/contributors/design-proposals/api-machinery/api-group.md - type: string - kind: - description: Kind of the API Group to select resources - from. Together with Group and Version it is - capable of unambiguously identifying and/or - selecting resources. https://github.com/kubernetes/community/blob/master/contributors/design-proposals/api-machinery/api-group.md - type: string - labelSelector: - description: LabelSelector is a string that follows - the label selection expression https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#api - It matches with the resource labels. - type: string - name: - description: Name to match resources with. - type: string - namespace: - description: Namespace to select resources from. - type: string - version: - description: Version of the API Group to select - resources from. Together with Group and Kind - it is capable of unambiguously identifying and/or - selecting resources. https://github.com/kubernetes/community/blob/master/contributors/design-proposals/api-machinery/api-group.md - type: string - type: object - type: object - type: array - patchesJson6902: - description: JSON 6902 patches, defined as inline YAML objects. - items: - description: JSON6902Patch contains a JSON6902 patch and - the target the patch should be applied to. - properties: - patch: - description: Patch contains the JSON6902 patch document - with an array of operation objects. - items: - description: JSON6902 is a JSON6902 operation object. - https://tools.ietf.org/html/rfc6902#section-4 - properties: - from: - type: string - op: - enum: - - test - - remove - - add - - replace - - move - - copy - type: string - path: - type: string - value: - x-kubernetes-preserve-unknown-fields: true - required: - - op - - path - type: object - type: array - target: - description: Target points to the resources that the - patch document should be applied to. - properties: - annotationSelector: - description: AnnotationSelector is a string that - follows the label selection expression https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#api - It matches with the resource annotations. - type: string - group: - description: Group is the API group to select - resources from. Together with Version and Kind - it is capable of unambiguously identifying and/or - selecting resources. https://github.com/kubernetes/community/blob/master/contributors/design-proposals/api-machinery/api-group.md - type: string - kind: - description: Kind of the API Group to select resources - from. Together with Group and Version it is - capable of unambiguously identifying and/or - selecting resources. https://github.com/kubernetes/community/blob/master/contributors/design-proposals/api-machinery/api-group.md - type: string - labelSelector: - description: LabelSelector is a string that follows - the label selection expression https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#api - It matches with the resource labels. - type: string - name: - description: Name to match resources with. - type: string - namespace: - description: Namespace to select resources from. - type: string - version: - description: Version of the API Group to select - resources from. Together with Group and Kind - it is capable of unambiguously identifying and/or - selecting resources. https://github.com/kubernetes/community/blob/master/contributors/design-proposals/api-machinery/api-group.md - type: string - type: object - required: - - patch - - target - type: object - type: array - patchesStrategicMerge: - description: Strategic merge patches, defined as inline - YAML objects. - items: - x-kubernetes-preserve-unknown-fields: true - type: array - path: - description: Path to the directory containing the kustomization.yaml - file, or the set of plain YAMLs a kustomization.yaml should - be generated for. Defaults to 'None', which translates - to the root path of the SourceRef. - type: string - postBuild: - description: PostBuild describes which actions to perform - on the YAML manifest generated by building the kustomize - overlay. - properties: - substitute: - additionalProperties: - type: string - description: Substitute holds a map of key/value pairs. - The variables defined in your YAML manifests that - match any of the keys defined in the map will be substituted - with the set value. Includes support for bash string - replacement functions e.g. ${var:=default}, ${var:position} - and ${var/substring/replacement}. - type: object - substituteFrom: - description: SubstituteFrom holds references to ConfigMaps - and Secrets containing the variables and their values - to be substituted in the YAML manifests. The ConfigMap - and the Secret data keys represent the var names and - they must match the vars declared in the manifests - for the substitution to happen. - items: - description: SubstituteReference contains a reference - to a resource containing the variables name and - value. - properties: - kind: - description: Kind of the values referent, valid - values are ('Secret', 'ConfigMap'). - enum: - - Secret - - ConfigMap - type: string - name: - description: Name of the values referent. Should - reside in the same namespace as the referring - resource. - maxLength: 253 - minLength: 1 - type: string - required: - - kind - - name - type: object - type: array - type: object - prune: - description: Prune enables garbage collection. - type: boolean - retryInterval: - description: The interval at which to retry a previously - failed reconciliation. When not specified, the controller - uses the KustomizationSpec.Interval value to retry failures. - type: string - serviceAccountName: - description: The name of the Kubernetes service account - to impersonate when reconciling this Kustomization. - type: string - sourceRef: - description: Reference of the source where the kustomization - file is. - properties: - apiVersion: - description: API version of the referent - type: string - kind: - description: Kind of the referent - enum: - - GitRepository - - Bucket - type: string - name: - description: Name of the referent - type: string - namespace: - description: Namespace of the referent, defaults to - the Kustomization namespace - type: string - required: - - kind - - name - type: object - suspend: - description: This flag tells the controller to suspend subsequent - kustomize executions, it does not apply to already started - executions. Defaults to false. - type: boolean - targetNamespace: - description: TargetNamespace sets or overrides the namespace - in the kustomization.yaml file. - maxLength: 63 - minLength: 1 - type: string - timeout: - description: Timeout for validation, apply and health checking - operations. Defaults to 'Interval' duration. - type: string - validation: - description: Validate the Kubernetes objects before applying - them on the cluster. The validation strategy can be 'client' - (local dry-run), 'server' (APIServer dry-run) or 'none'. - When 'Force' is 'true', validation will fallback to 'client' - if set to 'server' because server-side validation is not - supported in this scenario. + kind: + description: Kind of the referent enum: - - none - - client - - server + - GitRepository + - Bucket + type: string + name: + description: Name of the referent + type: string + namespace: + description: Namespace of the referent, defaults to the + Kustomization namespace type: string required: - - interval - - prune - - sourceRef - type: object - status: - description: KustomizationStatus defines the observed state - of a kustomization. - properties: - conditions: - items: - description: "Condition contains details for one aspect - of the current state of this API Resource. --- This - struct is intended for direct use as an array at the - field path .status.conditions. For example, type FooStatus - struct{ // Represents the observations of a foo's - current state. // Known .status.conditions.type - are: \"Available\", \"Progressing\", and \"Degraded\" - \ // +patchMergeKey=type // +patchStrategy=merge - \ // +listType=map // +listMapKey=type Conditions - []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" - patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` - \n // other fields }" - properties: - lastTransitionTime: - description: lastTransitionTime is the last time the - condition transitioned from one status to another. - This should be when the underlying condition changed. If - that is not known, then using the time when the - API field changed is acceptable. - format: date-time - type: string - message: - description: message is a human readable message indicating - details about the transition. This may be an empty - string. - maxLength: 32768 - type: string - observedGeneration: - description: observedGeneration represents the .metadata.generation - that the condition was set based upon. For instance, - if .metadata.generation is currently 12, but the - .status.conditions[x].observedGeneration is 9, the - condition is out of date with respect to the current - state of the instance. - format: int64 - minimum: 0 - type: integer - reason: - description: reason contains a programmatic identifier - indicating the reason for the condition's last transition. - Producers of specific condition types may define - expected values and meanings for this field, and - whether the values are considered a guaranteed API. - The value should be a CamelCase string. This field - may not be empty. - maxLength: 1024 - minLength: 1 - pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ - type: string - status: - description: status of the condition, one of True, - False, Unknown. - enum: - - "True" - - "False" - - Unknown - type: string - type: - description: type of condition in CamelCase or in - foo.example.com/CamelCase. --- Many .condition.type - values are consistent across resources like Available, - but because arbitrary conditions can be useful (see - .node.status.conditions), the ability to deconflict - is important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) - maxLength: 316 - pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ - type: string - required: - - lastTransitionTime - - message - - reason - - status - - type - type: object - type: array - lastAppliedRevision: - description: The last successfully applied revision. The - revision format for Git sources is /. - type: string - lastAttemptedRevision: - description: LastAttemptedRevision is the revision of the - last reconciliation attempt. - type: string - lastHandledReconcileAt: - description: LastHandledReconcileAt holds the value of the - most recent reconcile request value, so a change can be - detected. - type: string - observedGeneration: - description: ObservedGeneration is the last reconciled generation. - format: int64 - type: integer - snapshot: - description: The last successfully applied revision metadata. - properties: - checksum: - description: The manifests sha1 checksum. - type: string - entries: - description: A list of Kubernetes kinds grouped by namespace. - items: - description: Snapshot holds the metadata of namespaced - Kubernetes objects - properties: - kinds: - additionalProperties: - type: string - description: The list of Kubernetes kinds. - type: object - namespace: - description: The namespace of this entry. - type: string - required: - - kinds - type: object - type: array - required: - - checksum - - entries - type: object + - kind + - name type: object + suspend: + description: This flag tells the controller to suspend subsequent + kustomize executions, it does not apply to already started + executions. Defaults to false. + type: boolean + targetNamespace: + description: TargetNamespace sets or overrides the namespace + in the kustomization.yaml file. + maxLength: 63 + minLength: 1 + type: string + timeout: + description: Timeout for validation, apply and health checking + operations. Defaults to 'Interval' duration. + type: string + validation: + description: Validate the Kubernetes objects before applying + them on the cluster. The validation strategy can be 'client' + (local dry-run), 'server' (APIServer dry-run) or 'none'. When + 'Force' is 'true', validation will fallback to 'client' if + set to 'server' because server-side validation is not supported + in this scenario. + enum: + - none + - client + - server + type: string + required: + - interval + - prune + - sourceRef type: object - served: true - storage: true - subresources: - status: {} - type: raw - - name: providers.notification.toolkit.fluxcd.io - properties: - apiVersion: apiextensions.k8s.io/v1 - kind: CustomResourceDefinition - metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.5.0 - labels: - app.kubernetes.io/instance: flux-system - name: providers.notification.toolkit.fluxcd.io - spec: - group: notification.toolkit.fluxcd.io - names: - kind: Provider - listKind: ProviderList - plural: providers - singular: provider - scope: Namespaced - versions: - - additionalPrinterColumns: - - jsonPath: .status.conditions[?(@.type=="Ready")].status - name: Ready - type: string - - jsonPath: .status.conditions[?(@.type=="Ready")].message - name: Status - type: string - - jsonPath: .metadata.creationTimestamp - name: Age - type: date - name: v1beta1 - schema: - openAPIV3Schema: - description: Provider is the Schema for the providers API + status: + description: KustomizationStatus defines the observed state of a + kustomization. properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this - representation of an object. Servers should convert recognized - schemas to the latest internal value, and may reject unrecognized - values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource - this object represents. Servers may infer this from the endpoint - the client submits requests to. Cannot be updated. In CamelCase. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: ProviderSpec defines the desired state of Provider - properties: - address: - description: HTTP/S webhook address of this provider - pattern: ^(http|https):// - type: string - certSecretRef: - description: CertSecretRef can be given the name of a secret - containing a PEM-encoded CA certificate (`caFile`) - properties: - name: - description: Name of the referent - type: string - required: - - name - type: object - channel: - description: Alert channel for this provider - type: string - proxy: - description: HTTP/S address of the proxy - pattern: ^(http|https):// - type: string - secretRef: - description: Secret reference containing the provider webhook - URL using "address" as data key - properties: - name: - description: Name of the referent - type: string - required: - - name - type: object - type: - description: Type of provider - enum: - - slack - - discord - - msteams - - rocket - - generic - - github - - gitlab - - bitbucket - - azuredevops - - googlechat - - webex - - sentry - - azureeventhub - type: string - username: - description: Bot username for this provider - type: string - required: - - type - type: object - status: - description: ProviderStatus defines the observed state of Provider - properties: - conditions: - items: - description: "Condition contains details for one aspect - of the current state of this API Resource. --- This - struct is intended for direct use as an array at the - field path .status.conditions. For example, type FooStatus - struct{ // Represents the observations of a foo's - current state. // Known .status.conditions.type - are: \"Available\", \"Progressing\", and \"Degraded\" - \ // +patchMergeKey=type // +patchStrategy=merge - \ // +listType=map // +listMapKey=type Conditions - []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" - patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` - \n // other fields }" - properties: - lastTransitionTime: - description: lastTransitionTime is the last time the - condition transitioned from one status to another. - This should be when the underlying condition changed. If - that is not known, then using the time when the - API field changed is acceptable. - format: date-time - type: string - message: - description: message is a human readable message indicating - details about the transition. This may be an empty - string. - maxLength: 32768 - type: string - observedGeneration: - description: observedGeneration represents the .metadata.generation - that the condition was set based upon. For instance, - if .metadata.generation is currently 12, but the - .status.conditions[x].observedGeneration is 9, the - condition is out of date with respect to the current - state of the instance. - format: int64 - minimum: 0 - type: integer - reason: - description: reason contains a programmatic identifier - indicating the reason for the condition's last transition. - Producers of specific condition types may define - expected values and meanings for this field, and - whether the values are considered a guaranteed API. - The value should be a CamelCase string. This field - may not be empty. - maxLength: 1024 - minLength: 1 - pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ - type: string - status: - description: status of the condition, one of True, - False, Unknown. - enum: - - "True" - - "False" - - Unknown - type: string - type: - description: type of condition in CamelCase or in - foo.example.com/CamelCase. --- Many .condition.type - values are consistent across resources like Available, - but because arbitrary conditions can be useful (see - .node.status.conditions), the ability to deconflict - is important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) - maxLength: 316 - pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ - type: string - required: - - lastTransitionTime - - message - - reason - - status - - type - type: object - type: array - type: object - type: object - served: true - storage: true - subresources: - status: {} - type: raw - - name: receivers.notification.toolkit.fluxcd.io - properties: - apiVersion: apiextensions.k8s.io/v1 - kind: CustomResourceDefinition - metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.5.0 - labels: - app.kubernetes.io/instance: flux-system - name: receivers.notification.toolkit.fluxcd.io - spec: - group: notification.toolkit.fluxcd.io - names: - kind: Receiver - listKind: ReceiverList - plural: receivers - singular: receiver - scope: Namespaced - versions: - - additionalPrinterColumns: - - jsonPath: .status.conditions[?(@.type=="Ready")].status - name: Ready - type: string - - jsonPath: .status.conditions[?(@.type=="Ready")].message - name: Status - type: string - - jsonPath: .metadata.creationTimestamp - name: Age - type: date - name: v1beta1 - schema: - openAPIV3Schema: - description: Receiver is the Schema for the receivers API - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this - representation of an object. Servers should convert recognized - schemas to the latest internal value, and may reject unrecognized - values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource - this object represents. Servers may infer this from the endpoint - the client submits requests to. Cannot be updated. In CamelCase. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: ReceiverSpec defines the desired state of Receiver - properties: - events: - description: A list of events to handle, e.g. 'push' for - GitHub or 'Push Hook' for GitLab. - items: + conditions: + items: + description: "Condition contains details for one aspect of + the current state of this API Resource. --- This struct + is intended for direct use as an array at the field path + .status.conditions. For example, type FooStatus struct{ + \ // Represents the observations of a foo's current state. + \ // Known .status.conditions.type are: \"Available\", + \"Progressing\", and \"Degraded\" // +patchMergeKey=type + \ // +patchStrategy=merge // +listType=map // + +listMapKey=type Conditions []metav1.Condition `json:\"conditions,omitempty\" + patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` + \n // other fields }" + properties: + lastTransitionTime: + description: lastTransitionTime is the last time the condition + transitioned from one status to another. This should + be when the underlying condition changed. If that is + not known, then using the time when the API field changed + is acceptable. + format: date-time type: string - type: array - resources: - description: A list of resources to be notified about changes. - items: - description: CrossNamespaceObjectReference contains enough - information to let you locate the typed referenced object - at cluster level - properties: - apiVersion: - description: API version of the referent - type: string - kind: - description: Kind of the referent - enum: - - Bucket - - GitRepository - - Kustomization - - HelmRelease - - HelmChart - - HelmRepository - - ImageRepository - - ImagePolicy - - ImageUpdateAutomation - type: string - name: - description: Name of the referent - maxLength: 53 - minLength: 1 - type: string - namespace: - description: Namespace of the referent - maxLength: 53 - minLength: 1 - type: string - required: - - name - type: object - type: array - secretRef: - description: Secret reference containing the token used - to validate the payload authenticity - properties: - name: - description: Name of the referent - type: string - required: - - name - type: object - suspend: - description: This flag tells the controller to suspend subsequent - events handling. Defaults to false. - type: boolean - type: - description: Type of webhook sender, used to determine the - validation procedure and payload deserialization. - enum: - - generic - - generic-hmac - - github - - gitlab - - bitbucket - - harbor - - dockerhub - - quay - - gcr - - nexus - - acr - type: string - required: - - resources - - type - type: object - status: - description: ReceiverStatus defines the observed state of Receiver + message: + description: message is a human readable message indicating + details about the transition. This may be an empty string. + maxLength: 32768 + type: string + observedGeneration: + description: observedGeneration represents the .metadata.generation + that the condition was set based upon. For instance, + if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration + is 9, the condition is out of date with respect to the + current state of the instance. + format: int64 + minimum: 0 + type: integer + reason: + description: reason contains a programmatic identifier + indicating the reason for the condition's last transition. + Producers of specific condition types may define expected + values and meanings for this field, and whether the + values are considered a guaranteed API. The value should + be a CamelCase string. This field may not be empty. + maxLength: 1024 + minLength: 1 + pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ + type: string + status: + description: status of the condition, one of True, False, + Unknown. + enum: + - "True" + - "False" + - Unknown + type: string + type: + description: type of condition in CamelCase or in foo.example.com/CamelCase. + --- Many .condition.type values are consistent across + resources like Available, but because arbitrary conditions + can be useful (see .node.status.conditions), the ability + to deconflict is important. The regex it matches is + (dns1123SubdomainFmt/)?(qualifiedNameFmt) + maxLength: 316 + pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ + type: string + required: + - lastTransitionTime + - message + - reason + - status + - type + type: object + type: array + lastAppliedRevision: + description: The last successfully applied revision. The revision + format for Git sources is /. + type: string + lastAttemptedRevision: + description: LastAttemptedRevision is the revision of the last + reconciliation attempt. + type: string + lastHandledReconcileAt: + description: LastHandledReconcileAt holds the value of the most + recent reconcile request value, so a change can be detected. + type: string + observedGeneration: + description: ObservedGeneration is the last reconciled generation. + format: int64 + type: integer + snapshot: + description: The last successfully applied revision metadata. properties: - conditions: + checksum: + description: The manifests sha1 checksum. + type: string + entries: + description: A list of Kubernetes kinds grouped by namespace. items: - description: "Condition contains details for one aspect - of the current state of this API Resource. --- This - struct is intended for direct use as an array at the - field path .status.conditions. For example, type FooStatus - struct{ // Represents the observations of a foo's - current state. // Known .status.conditions.type - are: \"Available\", \"Progressing\", and \"Degraded\" - \ // +patchMergeKey=type // +patchStrategy=merge - \ // +listType=map // +listMapKey=type Conditions - []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" - patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` - \n // other fields }" + description: Snapshot holds the metadata of namespaced + Kubernetes objects properties: - lastTransitionTime: - description: lastTransitionTime is the last time the - condition transitioned from one status to another. - This should be when the underlying condition changed. If - that is not known, then using the time when the - API field changed is acceptable. - format: date-time - type: string - message: - description: message is a human readable message indicating - details about the transition. This may be an empty - string. - maxLength: 32768 - type: string - observedGeneration: - description: observedGeneration represents the .metadata.generation - that the condition was set based upon. For instance, - if .metadata.generation is currently 12, but the - .status.conditions[x].observedGeneration is 9, the - condition is out of date with respect to the current - state of the instance. - format: int64 - minimum: 0 - type: integer - reason: - description: reason contains a programmatic identifier - indicating the reason for the condition's last transition. - Producers of specific condition types may define - expected values and meanings for this field, and - whether the values are considered a guaranteed API. - The value should be a CamelCase string. This field - may not be empty. - maxLength: 1024 - minLength: 1 - pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ - type: string - status: - description: status of the condition, one of True, - False, Unknown. - enum: - - "True" - - "False" - - Unknown - type: string - type: - description: type of condition in CamelCase or in - foo.example.com/CamelCase. --- Many .condition.type - values are consistent across resources like Available, - but because arbitrary conditions can be useful (see - .node.status.conditions), the ability to deconflict - is important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) - maxLength: 316 - pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ + kinds: + additionalProperties: + type: string + description: The list of Kubernetes kinds. + type: object + namespace: + description: The namespace of this entry. type: string required: - - lastTransitionTime - - message - - reason - - status - - type + - kinds type: object type: array - observedGeneration: - description: ObservedGeneration is the last observed generation. - format: int64 - type: integer - url: - description: Generated webhook URL in the format of '/hook/sha256sum(token+name+namespace)'. - type: string + required: + - checksum + - entries type: object type: object - served: true - storage: true - subresources: - status: {} - type: raw - - name: helm-controller - properties: - apiVersion: apps/v1 - kind: Deployment + type: object + served: true + storage: true + subresources: + status: {} + type: raw + - name: providers.notification.toolkit.fluxcd.io + properties: + apiVersion: apiextensions.k8s.io/v1 + kind: CustomResourceDefinition + metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.5.0 + labels: + app.kubernetes.io/instance: flux-system + name: providers.notification.toolkit.fluxcd.io + spec: + group: notification.toolkit.fluxcd.io + names: + kind: Provider + listKind: ProviderList + plural: providers + singular: provider + scope: Namespaced + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=="Ready")].status + name: Ready + type: string + - jsonPath: .status.conditions[?(@.type=="Ready")].message + name: Status + type: string + - jsonPath: .metadata.creationTimestamp + name: Age + type: date + name: v1beta1 + schema: + openAPIV3Schema: + description: Provider is the Schema for the providers API + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the + latest internal value, and may reject unrecognized values. More + info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource + this object represents. Servers may infer this from the endpoint + the client submits requests to. Cannot be updated. In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: ProviderSpec defines the desired state of Provider + properties: + address: + description: HTTP/S webhook address of this provider + pattern: ^(http|https):// + type: string + certSecretRef: + description: CertSecretRef can be given the name of a secret + containing a PEM-encoded CA certificate (`caFile`) + properties: + name: + description: Name of the referent + type: string + required: + - name + type: object + channel: + description: Alert channel for this provider + type: string + proxy: + description: HTTP/S address of the proxy + pattern: ^(http|https):// + type: string + secretRef: + description: Secret reference containing the provider webhook + URL using "address" as data key + properties: + name: + description: Name of the referent + type: string + required: + - name + type: object + type: + description: Type of provider + enum: + - slack + - discord + - msteams + - rocket + - generic + - github + - gitlab + - bitbucket + - azuredevops + - googlechat + - webex + - sentry + - azureeventhub + type: string + username: + description: Bot username for this provider + type: string + required: + - type + type: object + status: + description: ProviderStatus defines the observed state of Provider + properties: + conditions: + items: + description: "Condition contains details for one aspect of + the current state of this API Resource. --- This struct + is intended for direct use as an array at the field path + .status.conditions. For example, type FooStatus struct{ + \ // Represents the observations of a foo's current state. + \ // Known .status.conditions.type are: \"Available\", + \"Progressing\", and \"Degraded\" // +patchMergeKey=type + \ // +patchStrategy=merge // +listType=map // + +listMapKey=type Conditions []metav1.Condition `json:\"conditions,omitempty\" + patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` + \n // other fields }" + properties: + lastTransitionTime: + description: lastTransitionTime is the last time the condition + transitioned from one status to another. This should + be when the underlying condition changed. If that is + not known, then using the time when the API field changed + is acceptable. + format: date-time + type: string + message: + description: message is a human readable message indicating + details about the transition. This may be an empty string. + maxLength: 32768 + type: string + observedGeneration: + description: observedGeneration represents the .metadata.generation + that the condition was set based upon. For instance, + if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration + is 9, the condition is out of date with respect to the + current state of the instance. + format: int64 + minimum: 0 + type: integer + reason: + description: reason contains a programmatic identifier + indicating the reason for the condition's last transition. + Producers of specific condition types may define expected + values and meanings for this field, and whether the + values are considered a guaranteed API. The value should + be a CamelCase string. This field may not be empty. + maxLength: 1024 + minLength: 1 + pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ + type: string + status: + description: status of the condition, one of True, False, + Unknown. + enum: + - "True" + - "False" + - Unknown + type: string + type: + description: type of condition in CamelCase or in foo.example.com/CamelCase. + --- Many .condition.type values are consistent across + resources like Available, but because arbitrary conditions + can be useful (see .node.status.conditions), the ability + to deconflict is important. The regex it matches is + (dns1123SubdomainFmt/)?(qualifiedNameFmt) + maxLength: 316 + pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ + type: string + required: + - lastTransitionTime + - message + - reason + - status + - type + type: object + type: array + type: object + type: object + served: true + storage: true + subresources: + status: {} + type: raw + - name: receivers.notification.toolkit.fluxcd.io + properties: + apiVersion: apiextensions.k8s.io/v1 + kind: CustomResourceDefinition + metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.5.0 + labels: + app.kubernetes.io/instance: flux-system + name: receivers.notification.toolkit.fluxcd.io + spec: + group: notification.toolkit.fluxcd.io + names: + kind: Receiver + listKind: ReceiverList + plural: receivers + singular: receiver + scope: Namespaced + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=="Ready")].status + name: Ready + type: string + - jsonPath: .status.conditions[?(@.type=="Ready")].message + name: Status + type: string + - jsonPath: .metadata.creationTimestamp + name: Age + type: date + name: v1beta1 + schema: + openAPIV3Schema: + description: Receiver is the Schema for the receivers API + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the + latest internal value, and may reject unrecognized values. More + info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource + this object represents. Servers may infer this from the endpoint + the client submits requests to. Cannot be updated. In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: ReceiverSpec defines the desired state of Receiver + properties: + events: + description: A list of events to handle, e.g. 'push' for GitHub + or 'Push Hook' for GitLab. + items: + type: string + type: array + resources: + description: A list of resources to be notified about changes. + items: + description: CrossNamespaceObjectReference contains enough + information to let you locate the typed referenced object + at cluster level + properties: + apiVersion: + description: API version of the referent + type: string + kind: + description: Kind of the referent + enum: + - Bucket + - GitRepository + - Kustomization + - HelmRelease + - HelmChart + - HelmRepository + - ImageRepository + - ImagePolicy + - ImageUpdateAutomation + type: string + name: + description: Name of the referent + maxLength: 53 + minLength: 1 + type: string + namespace: + description: Namespace of the referent + maxLength: 53 + minLength: 1 + type: string + required: + - name + type: object + type: array + secretRef: + description: Secret reference containing the token used to validate + the payload authenticity + properties: + name: + description: Name of the referent + type: string + required: + - name + type: object + suspend: + description: This flag tells the controller to suspend subsequent + events handling. Defaults to false. + type: boolean + type: + description: Type of webhook sender, used to determine the validation + procedure and payload deserialization. + enum: + - generic + - generic-hmac + - github + - gitlab + - bitbucket + - harbor + - dockerhub + - quay + - gcr + - nexus + - acr + type: string + required: + - resources + - type + type: object + status: + description: ReceiverStatus defines the observed state of Receiver + properties: + conditions: + items: + description: "Condition contains details for one aspect of + the current state of this API Resource. --- This struct + is intended for direct use as an array at the field path + .status.conditions. For example, type FooStatus struct{ + \ // Represents the observations of a foo's current state. + \ // Known .status.conditions.type are: \"Available\", + \"Progressing\", and \"Degraded\" // +patchMergeKey=type + \ // +patchStrategy=merge // +listType=map // + +listMapKey=type Conditions []metav1.Condition `json:\"conditions,omitempty\" + patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` + \n // other fields }" + properties: + lastTransitionTime: + description: lastTransitionTime is the last time the condition + transitioned from one status to another. This should + be when the underlying condition changed. If that is + not known, then using the time when the API field changed + is acceptable. + format: date-time + type: string + message: + description: message is a human readable message indicating + details about the transition. This may be an empty string. + maxLength: 32768 + type: string + observedGeneration: + description: observedGeneration represents the .metadata.generation + that the condition was set based upon. For instance, + if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration + is 9, the condition is out of date with respect to the + current state of the instance. + format: int64 + minimum: 0 + type: integer + reason: + description: reason contains a programmatic identifier + indicating the reason for the condition's last transition. + Producers of specific condition types may define expected + values and meanings for this field, and whether the + values are considered a guaranteed API. The value should + be a CamelCase string. This field may not be empty. + maxLength: 1024 + minLength: 1 + pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ + type: string + status: + description: status of the condition, one of True, False, + Unknown. + enum: + - "True" + - "False" + - Unknown + type: string + type: + description: type of condition in CamelCase or in foo.example.com/CamelCase. + --- Many .condition.type values are consistent across + resources like Available, but because arbitrary conditions + can be useful (see .node.status.conditions), the ability + to deconflict is important. The regex it matches is + (dns1123SubdomainFmt/)?(qualifiedNameFmt) + maxLength: 316 + pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ + type: string + required: + - lastTransitionTime + - message + - reason + - status + - type + type: object + type: array + observedGeneration: + description: ObservedGeneration is the last observed generation. + format: int64 + type: integer + url: + description: Generated webhook URL in the format of '/hook/sha256sum(token+name+namespace)'. + type: string + type: object + type: object + served: true + storage: true + subresources: + status: {} + type: raw + - name: helm-controller + properties: + apiVersion: apps/v1 + kind: Deployment + metadata: + labels: + app.kubernetes.io/instance: flux-system + control-plane: controller + name: helm-controller + namespace: flux-system + spec: + replicas: 1 + selector: + matchLabels: + app: helm-controller + template: metadata: + annotations: + prometheus.io/port: "8080" + prometheus.io/scrape: "true" labels: - app.kubernetes.io/instance: flux-system - control-plane: controller - name: helm-controller - namespace: flux-system + app: helm-controller spec: - replicas: 1 - selector: - matchLabels: - app: helm-controller - template: - metadata: - annotations: - prometheus.io/port: "8080" - prometheus.io/scrape: "true" - labels: - app: helm-controller - spec: - containers: - - args: - - --events-addr=http://notification-controller/ - - --watch-all-namespaces - - --log-level=info - - --log-encoding=json - - --enable-leader-election - env: - - name: RUNTIME_NAMESPACE - valueFrom: - fieldRef: - fieldPath: metadata.namespace - image: fluxcd/helm-controller:v0.11.1 - imagePullPolicy: IfNotPresent - livenessProbe: - httpGet: - path: /healthz - port: healthz - name: manager - ports: - - containerPort: 8080 - name: http-prom - - containerPort: 9440 - name: healthz - protocol: TCP - readinessProbe: - httpGet: - path: /readyz - port: healthz - resources: - limits: - cpu: 1000m - memory: 1Gi - requests: - cpu: 100m - memory: 64Mi - securityContext: - allowPrivilegeEscalation: false - readOnlyRootFilesystem: true - volumeMounts: - - mountPath: /tmp - name: temp - serviceAccountName: sa-helm-controller - terminationGracePeriodSeconds: 600 - volumes: - - emptyDir: {} - name: temp - type: raw - - name: image-automation-controller - properties: - apiVersion: apps/v1 - kind: Deployment - metadata: - labels: - app.kubernetes.io/instance: flux-system - control-plane: controller - name: image-automation-controller - namespace: flux-system - spec: - replicas: 1 - selector: - matchLabels: - app: image-automation-controller - template: - metadata: - annotations: - prometheus.io/port: "8080" - prometheus.io/scrape: "true" - labels: - app: image-automation-controller - spec: - containers: - - args: - - --events-addr=http://notification-controller/ - - --watch-all-namespaces - - --log-level=info - - --log-encoding=json - - --enable-leader-election - env: - - name: RUNTIME_NAMESPACE - valueFrom: - fieldRef: - fieldPath: metadata.namespace - image: fluxcd/image-automation-controller:v0.14.0 - imagePullPolicy: IfNotPresent - livenessProbe: - httpGet: - path: /healthz - port: healthz - name: manager - ports: - - containerPort: 8080 - name: http-prom - - containerPort: 9440 - name: healthz - protocol: TCP - readinessProbe: - httpGet: - path: /readyz - port: healthz - resources: - limits: - cpu: 1000m - memory: 1Gi - requests: - cpu: 100m - memory: 64Mi - securityContext: - allowPrivilegeEscalation: false - readOnlyRootFilesystem: true - volumeMounts: - - mountPath: /tmp - name: temp - securityContext: - fsGroup: 1337 - serviceAccountName: sa-image-automation-controller - terminationGracePeriodSeconds: 10 - volumes: - - emptyDir: {} - name: temp - type: raw - - name: image-reflector-controller - properties: - apiVersion: apps/v1 - kind: Deployment - metadata: - labels: - app.kubernetes.io/instance: flux-system - control-plane: controller - name: image-reflector-controller - namespace: flux-system - spec: - replicas: 1 - selector: - matchLabels: - app: image-reflector-controller - template: - metadata: - annotations: - prometheus.io/port: "8080" - prometheus.io/scrape: "true" - labels: - app: image-reflector-controller - spec: - containers: - - args: - - --events-addr=http://notification-controller/ - - --watch-all-namespaces - - --log-level=info - - --log-encoding=json - - --enable-leader-election - env: - - name: RUNTIME_NAMESPACE - valueFrom: - fieldRef: - fieldPath: metadata.namespace - image: fluxcd/image-reflector-controller:v0.11.0 - imagePullPolicy: IfNotPresent - livenessProbe: - httpGet: - path: /healthz - port: healthz - name: manager - ports: - - containerPort: 8080 - name: http-prom - - containerPort: 9440 - name: healthz - protocol: TCP - readinessProbe: - httpGet: - path: /readyz - port: healthz - resources: - limits: - cpu: 1000m - memory: 1Gi - requests: - cpu: 100m - memory: 64Mi - securityContext: - allowPrivilegeEscalation: false - readOnlyRootFilesystem: true - volumeMounts: - - mountPath: /tmp - name: temp - - mountPath: /data - name: data - securityContext: - fsGroup: 1337 - serviceAccountName: sa-image-reflector-controller - terminationGracePeriodSeconds: 10 - volumes: - - emptyDir: {} - name: temp - - emptyDir: {} - name: data - type: raw - - name: kustomize-controller - properties: - apiVersion: apps/v1 - kind: Deployment - metadata: - labels: - app.kubernetes.io/instance: flux-system - control-plane: controller - name: kustomize-controller - namespace: flux-system - spec: - replicas: 1 - selector: - matchLabels: - app: kustomize-controller - template: - metadata: - annotations: - prometheus.io/port: "8080" - prometheus.io/scrape: "true" - labels: - app: kustomize-controller - spec: - containers: - - args: - - --events-addr=http://notification-controller/ - - --watch-all-namespaces - - --log-level=info - - --log-encoding=json - - --enable-leader-election - env: - - name: RUNTIME_NAMESPACE - valueFrom: - fieldRef: - fieldPath: metadata.namespace - image: fluxcd/kustomize-controller:v0.13.1 - imagePullPolicy: IfNotPresent - livenessProbe: - httpGet: - path: /healthz - port: healthz - name: manager - ports: - - containerPort: 8080 - name: http-prom - - containerPort: 9440 - name: healthz - protocol: TCP - readinessProbe: - httpGet: - path: /readyz - port: healthz - resources: - limits: - cpu: 1000m - memory: 1Gi - requests: - cpu: 100m - memory: 64Mi - securityContext: - allowPrivilegeEscalation: false - readOnlyRootFilesystem: true - volumeMounts: - - mountPath: /tmp - name: temp - securityContext: - fsGroup: 1337 - serviceAccountName: sa-kustomize-controller - terminationGracePeriodSeconds: 60 - volumes: - - emptyDir: {} - name: temp - type: raw - - name: flux-notification-controller - properties: - apiVersion: apps/v1 - kind: Deployment - metadata: - labels: - app.kubernetes.io/instance: flux-system - control-plane: controller - name: flux-notification-controller - namespace: flux-system - spec: - replicas: 1 - selector: - matchLabels: - app: notification-controller - template: - metadata: - annotations: - prometheus.io/port: "8080" - prometheus.io/scrape: "true" - labels: - app: notification-controller - spec: - containers: - - args: - - --watch-all-namespaces - - --log-level=info - - --log-encoding=json - - --enable-leader-election - env: - - name: RUNTIME_NAMESPACE - valueFrom: - fieldRef: - fieldPath: metadata.namespace - image: fluxcd/notification-controller:v0.15.0 - imagePullPolicy: IfNotPresent - livenessProbe: - httpGet: - path: /healthz - port: healthz - name: manager - ports: - - containerPort: 9090 - name: http - - containerPort: 9292 - name: http-webhook - - containerPort: 8080 - name: http-prom - - containerPort: 9440 - name: healthz - protocol: TCP - readinessProbe: - httpGet: - path: /readyz - port: healthz - resources: - limits: - cpu: 1000m - memory: 1Gi - requests: - cpu: 100m - memory: 64Mi - securityContext: - allowPrivilegeEscalation: false - readOnlyRootFilesystem: true - volumeMounts: - - mountPath: /tmp - name: temp - serviceAccountName: sa-notification-controller - terminationGracePeriodSeconds: 10 - volumes: - - emptyDir: {} - name: temp - type: raw - - name: flux-source-controller - properties: - apiVersion: apps/v1 - kind: Deployment - metadata: - labels: - app.kubernetes.io/instance: flux-system - control-plane: controller - name: flux-source-controller - namespace: flux-system - spec: - replicas: 1 - selector: - matchLabels: - app: source-controller - strategy: - type: Recreate - template: - metadata: - annotations: - prometheus.io/port: "8080" - prometheus.io/scrape: "true" - labels: - app: source-controller - spec: - containers: - - args: - - --events-addr=http://notification-controller/ - - --watch-all-namespaces - - --log-level=info - - --log-encoding=json - - --enable-leader-election - - --storage-path=/data - - --storage-adv-addr=source-controller.$(RUNTIME_NAMESPACE).svc.cluster.local. - env: - - name: RUNTIME_NAMESPACE - valueFrom: - fieldRef: - fieldPath: metadata.namespace - image: fluxcd/source-controller:v0.15.3 - imagePullPolicy: IfNotPresent - livenessProbe: - httpGet: - path: /healthz - port: healthz - name: manager - ports: - - containerPort: 9090 - name: http - - containerPort: 8080 - name: http-prom - - containerPort: 9440 - name: healthz - readinessProbe: - httpGet: - path: / - port: http - resources: - limits: - cpu: 1000m - memory: 1Gi - requests: - cpu: 50m - memory: 64Mi - securityContext: - allowPrivilegeEscalation: false - readOnlyRootFilesystem: true - volumeMounts: - - mountPath: /data - name: data - - mountPath: /tmp - name: tmp - securityContext: - fsGroup: 1337 - serviceAccountName: sa-source-controller - terminationGracePeriodSeconds: 10 - volumes: - - emptyDir: {} - name: data - - emptyDir: {} - name: tmp - type: raw - - name: allow-egress - properties: - apiVersion: networking.k8s.io/v1 - kind: NetworkPolicy - metadata: - labels: - app.kubernetes.io/instance: flux-system - name: allow-egress - namespace: flux-system - spec: - egress: - - {} - ingress: - - from: - - podSelector: {} - podSelector: {} - policyTypes: - - Ingress - - Egress - type: raw - - name: allow-scraping - properties: - apiVersion: networking.k8s.io/v1 - kind: NetworkPolicy - metadata: - labels: - app.kubernetes.io/instance: flux-system - name: allow-scraping - namespace: flux-system - spec: - ingress: - - from: - - namespaceSelector: {} + containers: + - args: + - --events-addr=http://notification-controller/ + - --watch-all-namespaces + - --log-level=info + - --log-encoding=json + - --enable-leader-election + env: + - name: RUNTIME_NAMESPACE + valueFrom: + fieldRef: + fieldPath: metadata.namespace + image: fluxcd/helm-controller:v0.11.1 + imagePullPolicy: IfNotPresent + livenessProbe: + httpGet: + path: /healthz + port: healthz + name: manager ports: - - port: 8080 + - containerPort: 8080 + name: http-prom + - containerPort: 9440 + name: healthz protocol: TCP - podSelector: {} - policyTypes: - - Ingress - type: raw - - name: allow-webhooks - properties: - apiVersion: networking.k8s.io/v1 - kind: NetworkPolicy + readinessProbe: + httpGet: + path: /readyz + port: healthz + resources: + limits: + cpu: 1000m + memory: 1Gi + requests: + cpu: 100m + memory: 64Mi + securityContext: + allowPrivilegeEscalation: false + readOnlyRootFilesystem: true + volumeMounts: + - mountPath: /tmp + name: temp + serviceAccountName: sa-helm-controller + terminationGracePeriodSeconds: 600 + volumes: + - emptyDir: {} + name: temp + type: raw + - name: image-automation-controller + properties: + apiVersion: apps/v1 + kind: Deployment + metadata: + labels: + app.kubernetes.io/instance: flux-system + control-plane: controller + name: image-automation-controller + namespace: flux-system + spec: + replicas: 1 + selector: + matchLabels: + app: image-automation-controller + template: metadata: + annotations: + prometheus.io/port: "8080" + prometheus.io/scrape: "true" labels: - app.kubernetes.io/instance: flux-system - name: allow-webhooks - namespace: flux-system + app: image-automation-controller spec: - ingress: - - from: - - namespaceSelector: {} - podSelector: - matchLabels: - app: notification-controller - policyTypes: - - Ingress - type: raw - - name: cluster-reconciler - properties: - apiVersion: rbac.authorization.k8s.io/v1 - kind: ClusterRoleBinding + containers: + - args: + - --events-addr=http://notification-controller/ + - --watch-all-namespaces + - --log-level=info + - --log-encoding=json + - --enable-leader-election + env: + - name: RUNTIME_NAMESPACE + valueFrom: + fieldRef: + fieldPath: metadata.namespace + image: fluxcd/image-automation-controller:v0.14.0 + imagePullPolicy: IfNotPresent + livenessProbe: + httpGet: + path: /healthz + port: healthz + name: manager + ports: + - containerPort: 8080 + name: http-prom + - containerPort: 9440 + name: healthz + protocol: TCP + readinessProbe: + httpGet: + path: /readyz + port: healthz + resources: + limits: + cpu: 1000m + memory: 1Gi + requests: + cpu: 100m + memory: 64Mi + securityContext: + allowPrivilegeEscalation: false + readOnlyRootFilesystem: true + volumeMounts: + - mountPath: /tmp + name: temp + securityContext: + fsGroup: 1337 + serviceAccountName: sa-image-automation-controller + terminationGracePeriodSeconds: 10 + volumes: + - emptyDir: {} + name: temp + type: raw + - name: image-reflector-controller + properties: + apiVersion: apps/v1 + kind: Deployment + metadata: + labels: + app.kubernetes.io/instance: flux-system + control-plane: controller + name: image-reflector-controller + namespace: flux-system + spec: + replicas: 1 + selector: + matchLabels: + app: image-reflector-controller + template: metadata: + annotations: + prometheus.io/port: "8080" + prometheus.io/scrape: "true" labels: - app.kubernetes.io/instance: flux-system - name: cluster-reconciler - roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: cluster-admin - subjects: - - kind: ServiceAccount - name: sa-kustomize-controller - namespace: flux-system - - kind: ServiceAccount - name: sa-helm-controller - namespace: flux-system - type: raw - - name: crd-controller - properties: - apiVersion: rbac.authorization.k8s.io/v1 - kind: ClusterRoleBinding - metadata: - labels: - app.kubernetes.io/instance: flux-system - name: crd-controller - roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: cr-crd-controller - subjects: - - kind: ServiceAccount - name: sa-kustomize-controller - namespace: flux-system - - kind: ServiceAccount - name: sa-helm-controller - namespace: flux-system - - kind: ServiceAccount - name: sa-source-controller - namespace: flux-system - - kind: ServiceAccount - name: sa-notification-controller - namespace: flux-system - - kind: ServiceAccount - name: sa-image-reflector-controller - namespace: flux-system - - kind: ServiceAccount - name: sa-image-automation-controller - namespace: flux-system - type: raw - - name: cr-crd-controller - properties: - apiVersion: rbac.authorization.k8s.io/v1 - kind: ClusterRole - metadata: - labels: - app.kubernetes.io/instance: flux-system - name: cr-crd-controller - rules: - - apiGroups: - - source.toolkit.fluxcd.io - resources: - - '*' - verbs: - - '*' - - apiGroups: - - kustomize.toolkit.fluxcd.io - resources: - - '*' - verbs: - - '*' - - apiGroups: - - helm.toolkit.fluxcd.io - resources: - - '*' - verbs: - - '*' - - apiGroups: - - notification.toolkit.fluxcd.io - resources: - - '*' - verbs: - - '*' - - apiGroups: - - image.toolkit.fluxcd.io - resources: - - '*' - verbs: - - '*' - - apiGroups: - - "" - resources: - - secrets - verbs: - - get - - list - - watch - - apiGroups: - - "" - resources: - - events - verbs: - - create - - patch - - apiGroups: - - "" - resources: - - configmaps - - configmaps/status - verbs: - - get - - list - - watch - - create - - update - - patch - - delete - - apiGroups: - - coordination.k8s.io - resources: - - leases - verbs: - - get - - list - - watch - - create - - update - - patch - - delete - type: raw - - name: sa-helm-controller - properties: - apiVersion: v1 - kind: ServiceAccount - metadata: - labels: - app.kubernetes.io/instance: flux-system - name: sa-helm-controller - namespace: flux-system - type: raw - - name: sa-image-automation-controller - properties: - apiVersion: v1 - kind: ServiceAccount - metadata: - labels: - app.kubernetes.io/instance: flux-system - name: sa-image-automation-controller - namespace: flux-system - type: raw - - name: sa-image-reflector-controller - properties: - apiVersion: v1 - kind: ServiceAccount - metadata: - labels: - app.kubernetes.io/instance: flux-system - name: sa-image-reflector-controller - namespace: flux-system - type: raw - - name: sa-kustomize-controller - properties: - apiVersion: v1 - kind: ServiceAccount - metadata: - labels: - app.kubernetes.io/instance: flux-system - name: sa-kustomize-controller - namespace: flux-system - type: raw - - name: sa-notification-controller - properties: - apiVersion: v1 - kind: ServiceAccount - metadata: - labels: - app.kubernetes.io/instance: flux-system - name: sa-notification-controller - namespace: flux-system - type: raw - - name: sa-source-controller - properties: - apiVersion: v1 - kind: ServiceAccount - metadata: - labels: - app.kubernetes.io/instance: flux-system - name: sa-source-controller - namespace: flux-system - type: raw - - name: notification-controller - properties: - apiVersion: v1 - kind: Service - metadata: - labels: - app.kubernetes.io/instance: flux-system - control-plane: controller - name: notification-controller - namespace: flux-system + app: image-reflector-controller spec: - ports: - - name: http - port: 80 - protocol: TCP - targetPort: http - selector: + containers: + - args: + - --events-addr=http://notification-controller/ + - --watch-all-namespaces + - --log-level=info + - --log-encoding=json + - --enable-leader-election + env: + - name: RUNTIME_NAMESPACE + valueFrom: + fieldRef: + fieldPath: metadata.namespace + image: fluxcd/image-reflector-controller:v0.11.0 + imagePullPolicy: IfNotPresent + livenessProbe: + httpGet: + path: /healthz + port: healthz + name: manager + ports: + - containerPort: 8080 + name: http-prom + - containerPort: 9440 + name: healthz + protocol: TCP + readinessProbe: + httpGet: + path: /readyz + port: healthz + resources: + limits: + cpu: 1000m + memory: 1Gi + requests: + cpu: 100m + memory: 64Mi + securityContext: + allowPrivilegeEscalation: false + readOnlyRootFilesystem: true + volumeMounts: + - mountPath: /tmp + name: temp + - mountPath: /data + name: data + securityContext: + fsGroup: 1337 + serviceAccountName: sa-image-reflector-controller + terminationGracePeriodSeconds: 10 + volumes: + - emptyDir: {} + name: temp + - emptyDir: {} + name: data + type: raw + - name: kustomize-controller + properties: + apiVersion: apps/v1 + kind: Deployment + metadata: + labels: + app.kubernetes.io/instance: flux-system + control-plane: controller + name: kustomize-controller + namespace: flux-system + spec: + replicas: 1 + selector: + matchLabels: + app: kustomize-controller + template: + metadata: + annotations: + prometheus.io/port: "8080" + prometheus.io/scrape: "true" + labels: + app: kustomize-controller + spec: + containers: + - args: + - --events-addr=http://notification-controller/ + - --watch-all-namespaces + - --log-level=info + - --log-encoding=json + - --enable-leader-election + env: + - name: RUNTIME_NAMESPACE + valueFrom: + fieldRef: + fieldPath: metadata.namespace + image: fluxcd/kustomize-controller:v0.13.1 + imagePullPolicy: IfNotPresent + livenessProbe: + httpGet: + path: /healthz + port: healthz + name: manager + ports: + - containerPort: 8080 + name: http-prom + - containerPort: 9440 + name: healthz + protocol: TCP + readinessProbe: + httpGet: + path: /readyz + port: healthz + resources: + limits: + cpu: 1000m + memory: 1Gi + requests: + cpu: 100m + memory: 64Mi + securityContext: + allowPrivilegeEscalation: false + readOnlyRootFilesystem: true + volumeMounts: + - mountPath: /tmp + name: temp + securityContext: + fsGroup: 1337 + serviceAccountName: sa-kustomize-controller + terminationGracePeriodSeconds: 60 + volumes: + - emptyDir: {} + name: temp + type: raw + - name: flux-notification-controller + properties: + apiVersion: apps/v1 + kind: Deployment + metadata: + labels: + app.kubernetes.io/instance: flux-system + control-plane: controller + name: flux-notification-controller + namespace: flux-system + spec: + replicas: 1 + selector: + matchLabels: + app: notification-controller + template: + metadata: + annotations: + prometheus.io/port: "8080" + prometheus.io/scrape: "true" + labels: app: notification-controller - type: ClusterIP - type: raw - - name: source-controller - properties: - apiVersion: v1 - kind: Service - metadata: - labels: - app.kubernetes.io/instance: flux-system - control-plane: controller - name: source-controller - namespace: flux-system spec: - ports: - - name: http - port: 80 - protocol: TCP - targetPort: http - selector: + containers: + - args: + - --watch-all-namespaces + - --log-level=info + - --log-encoding=json + - --enable-leader-election + env: + - name: RUNTIME_NAMESPACE + valueFrom: + fieldRef: + fieldPath: metadata.namespace + image: fluxcd/notification-controller:v0.15.0 + imagePullPolicy: IfNotPresent + livenessProbe: + httpGet: + path: /healthz + port: healthz + name: manager + ports: + - containerPort: 9090 + name: http + - containerPort: 9292 + name: http-webhook + - containerPort: 8080 + name: http-prom + - containerPort: 9440 + name: healthz + protocol: TCP + readinessProbe: + httpGet: + path: /readyz + port: healthz + resources: + limits: + cpu: 1000m + memory: 1Gi + requests: + cpu: 100m + memory: 64Mi + securityContext: + allowPrivilegeEscalation: false + readOnlyRootFilesystem: true + volumeMounts: + - mountPath: /tmp + name: temp + serviceAccountName: sa-notification-controller + terminationGracePeriodSeconds: 10 + volumes: + - emptyDir: {} + name: temp + type: raw + - name: flux-source-controller + properties: + apiVersion: apps/v1 + kind: Deployment + metadata: + labels: + app.kubernetes.io/instance: flux-system + control-plane: controller + name: flux-source-controller + namespace: flux-system + spec: + replicas: 1 + selector: + matchLabels: + app: source-controller + strategy: + type: Recreate + template: + metadata: + annotations: + prometheus.io/port: "8080" + prometheus.io/scrape: "true" + labels: app: source-controller - type: ClusterIP - type: raw - - name: webhook-receiver - properties: - apiVersion: v1 - kind: Service - metadata: - labels: - app.kubernetes.io/instance: flux-system - control-plane: controller - name: webhook-receiver - namespace: flux-system spec: - ports: - - name: http - port: 80 - protocol: TCP - targetPort: http-webhook - selector: - app: notification-controller - type: ClusterIP - type: raw - - name: helm - properties: - apiVersion: core.oam.dev/v1beta1 - kind: ComponentDefinition - metadata: - annotations: - definition.oam.dev/description: helm release is a group of K8s resources - from either git repository or helm repo - name: helm - namespace: vela-system - spec: - schematic: - cue: - template: "output: {\n\tapiVersion: \"source.toolkit.fluxcd.io/v1beta1\"\n\tmetadata: - {\n\t\tname: context.name\n\t}\n\tif parameter.repoType == \"git\" - {\n\t\tkind: \"GitRepository\"\n\t\tspec: {\n\t\t\turl: parameter.url\n\t\t\tif - parameter.git.branch != _|_ {\n\t\t\t\tref: branch: parameter.git.branch\n\t\t\t}\n\t\t\t_secret\n\t\t\t_sourceCommonArgs\n\t\t}\n\t}\n\tif - parameter.repoType == \"oss\" {\n\t\tkind: \"Bucket\"\n\t\tspec: - {\n\t\t\tendpoint: parameter.url\n\t\t\tbucketName: parameter.oss.bucketName\n\t\t\tprovider: - \ parameter.oss.provider\n\t\t\tif parameter.oss.region != _|_ - {\n\t\t\t\tregion: parameter.oss.region\n\t\t\t}\n\t\t\t_secret\n\t\t\t_sourceCommonArgs\n\t\t}\n\t}\n\tif - parameter.repoType == \"helm\" {\n\t\tkind: \"HelmRepository\"\n\t\tspec: - {\n\t\t\turl: parameter.url\n\t\t\t_secret\n\t\t\t_sourceCommonArgs\n\t\t}\n\t}\n}\n\noutputs: - release: {\n\tapiVersion: \"helm.toolkit.fluxcd.io/v2beta1\"\n\tkind: - \ \"HelmRelease\"\n\tmetadata: {\n\t\tname: context.name\n\t}\n\tspec: - {\n\t\tinterval: parameter.pullInterval\n\t\tchart: {\n\t\t\tspec: - {\n\t\t\t\tchart: parameter.chart\n\t\t\t\tversion: parameter.version\n\t\t\t\tsourceRef: - {\n\t\t\t\t\tif parameter.repoType == \"git\" {\n\t\t\t\t\t\tkind: - \"GitRepository\"\n\t\t\t\t\t}\n\t\t\t\t\tif parameter.repoType - == \"helm\" {\n\t\t\t\t\t\tkind: \"HelmRepository\"\n\t\t\t\t\t}\n\t\t\t\t\tif - parameter.repoType == \"oss\" {\n\t\t\t\t\t\tkind: \"Bucket\"\n\t\t\t\t\t}\n\t\t\t\t\tname: - \ context.name\n\t\t\t\t\tnamespace: context.namespace\n\t\t\t\t}\n\t\t\t\tinterval: - parameter.pullInterval\n\t\t\t}\n\t\t}\n\t\tif parameter.targetNamespace - != _|_ {\n\t\t\ttargetNamespace: parameter.targetNamespace\n\t\t}\n\t\tif - parameter.releaseName != _|_ {\n\t\t\treleaseName: parameter.releaseName\n\t\t}\n\t\tif - parameter.values != _|_ {\n\t\t\tvalues: parameter.values\n\t\t}\n\t}\n}\n\n_secret: - {\n\tif parameter.secretRef != _|_ {\n\t\tsecretRef: {\n\t\t\tname: - parameter.secretRef\n\t\t}\n\t}\n}\n\n_sourceCommonArgs: {\n\tinterval: - parameter.pullInterval\n\tif parameter.timeout != _|_ {\n\t\ttimeout: - parameter.timeout\n\t}\n}\n\nparameter: {\n\trepoType: *\"helm\" - | \"git\" | \"oss\"\n\t// +usage=The interval at which to check - for repository/bucket and relese updates, default to 5m\n\tpullInterval: - *\"5m\" | string\n\t// +usage=The Git or Helm repository URL, OSS - endpoint, accept HTTP/S or SSH address as git url,\n\turl: string\n\t// - +usage=The name of the secret containing authentication credentials\n\tsecretRef?: - string\n\t// +usage=The timeout for operations like download index/clone - repository, optional\n\ttimeout?: string\n\n\tgit?: {\n\t\t// +usage=The - Git reference to checkout and monitor for changes, defaults to master - branch\n\t\tbranch: string\n\t}\n\toss?: {\n\t\t// +usage=The bucket's - name, required if repoType is oss\n\t\tbucketName: string\n\t\t// - +usage=\"generic\" for Minio, Amazon S3, Google Cloud Storage, Alibaba - Cloud OSS, \"aws\" for retrieve credentials from the EC2 service - when credentials not specified, default \"generic\"\n\t\tprovider: - *\"generic\" | \"aws\"\n\t\t// +usage=The bucket region, optional\n\t\tregion?: - string\n\t}\n\n\t// +usage=1.The relative path to helm chart for - git/oss source. 2. chart name for helm resource 3. relative path - for chart package(e.g. ./charts/podinfo-1.2.3.tgz)\n\tchart: string\n\t// - +usage=Chart version\n\tversion: *\"*\" | string\n\t// +usage=The - namespace for helm chart, optional\n\ttargetNamespace?: string\n\t// - +usage=The release name\n\treleaseName?: string\n\t// +usage=Chart - values\n\tvalues?: #nestedmap\n}\n\n#nestedmap: {\n\t...\n}\n" - status: - healthPolicy: 'isHealth: len(context.outputs.release.status.conditions) - != 0 && context.outputs.release.status.conditions[0]["status"]=="True"' - workload: - type: autodetects.core.oam.dev - type: raw - - name: kustomize-json-patch - properties: - apiVersion: core.oam.dev/v1beta1 - kind: TraitDefinition - metadata: - annotations: - definition.oam.dev/description: A list of JSON6902 patch to selected - target - name: kustomize-json-patch - spec: - schematic: - cue: - template: "patch: {\n\tspec: {\n\t\tpatchesJson6902: parameter.patchesJson\n\t}\n}\n\nparameter: - {\n\t// +usage=A list of JSON6902 patch.\n\tpatchesJson: [...#jsonPatchItem]\n}\n\n// - +usage=Contains a JSON6902 patch\n#jsonPatchItem: {\n\ttarget: #selector\n\tpatch: - [...{\n\t\t// +usage=operation to perform\n\t\top: string | \"add\" - | \"remove\" | \"replace\" | \"move\" | \"copy\" | \"test\"\n\t\t// - +usage=operate path e.g. /foo/bar\n\t\tpath: string\n\t\t// +usage=specify - source path when op is copy/move\n\t\tfrom?: string\n\t\t// +usage=specify - opraation value when op is test/add/replace\n\t\tvalue?: string\n\t}]\n}\n\n// - +usage=Selector specifies a set of resources\n#selector: {\n\tgroup?: - \ string\n\tversion?: string\n\tkind?: string\n\tnamespace?: - \ string\n\tname?: string\n\tannotationSelector?: - string\n\tlabelSelector?: string\n}\n" - type: raw - - name: kustomize-patch - properties: - apiVersion: core.oam.dev/v1beta1 - kind: TraitDefinition - metadata: - annotations: - definition.oam.dev/description: A list of StrategicMerge or JSON6902 - patch to selected target - name: kustomize-patch - spec: - schematic: - cue: - template: "patch: {\n\tspec: {\n\t\tpatches: parameter.patches\n\t}\n}\nparameter: - {\n\t// +usage=a list of StrategicMerge or JSON6902 patch to selected - target\n\tpatches: [...#patchItem]\n}\n\n// +usage=Contains a strategicMerge - or JSON6902 patch\n#patchItem: {\n\t// +usage=Inline patch string, - in yaml style\n\tpatch: string\n\t// +usage=Specify the target the - patch should be applied to\n\ttarget: #selector\n}\n\n// +usage=Selector - specifies a set of resources\n#selector: {\n\tgroup?: string\n\tversion?: - \ string\n\tkind?: string\n\tnamespace?: - \ string\n\tname?: string\n\tannotationSelector?: - string\n\tlabelSelector?: string\n}\n" - type: raw - - name: kustomize - properties: - apiVersion: core.oam.dev/v1beta1 - kind: ComponentDefinition - metadata: - annotations: - definition.oam.dev/description: kustomize can fetching, building, updating - and applying Kustomize manifests from git repo. - name: kustomize - namespace: vela-system - spec: - schematic: - cue: - template: "output: {\n\tapiVersion: \"kustomize.toolkit.fluxcd.io/v1beta1\"\n\tkind: - \ \"Kustomization\"\n\tmetadata: {\n\t\tname: context.name\n - \ namespace: context.namespace\n\t}\n\tspec: {\n\t\tinterval: - parameter.pullInterval\n\t\tsourceRef: {\n\t\t\tif parameter.repoType - == \"git\" {\n\t\t\t\tkind: \"GitRepository\"\n\t\t\t}\n\t\t\tif - parameter.repoType == \"oss\" {\n\t\t\t\tkind: \"Bucket\"\n\t\t\t}\n\t\t\tname: - \ context.name\n\t\t\tnamespace: context.namespace\n\t\t}\n\t\tpath: - \ parameter.path\n\t\tprune: true\n\t\tvalidation: \"client\"\n\t}\n}\n\noutputs: - {\n repo: {\n\t apiVersion: \"source.toolkit.fluxcd.io/v1beta1\"\n\t - \ metadata: {\n\t\t name: context.name\n namespace: context.namespace\n\t - \ }\n\t if parameter.repoType == \"git\" {\n\t\t kind: \"GitRepository\"\n\t\t - \ spec: {\n\t\t\t url: parameter.url\n\t\t\t if parameter.git.branch - != _|_ {\n\t\t\t\t ref: branch: parameter.git.branch\n\t\t\t }\n\t\t\t - \ _secret\n\t\t\t _sourceCommonArgs\n\t\t }\n\t }\n\t if parameter.repoType - == \"oss\" {\n\t\t kind: \"Bucket\"\n\t\t spec: {\n\t\t\t endpoint: - \ parameter.url\n\t\t\t bucketName: parameter.oss.bucketName\n\t\t\t - \ provider: parameter.oss.provider\n\t\t\t if parameter.oss.region - != _|_ {\n\t\t\t\t region: parameter.oss.region\n\t\t\t }\n\t\t\t - \ _secret\n\t\t\t _sourceCommonArgs\n\t\t }\n\t }\n }\n\n if - parameter.imageRepository != _|_ {\n imageRepo: {\n apiVersion: - \"image.toolkit.fluxcd.io/v1beta1\"\n kind: \"ImageRepository\"\n\t - \ metadata: {\n\t\t name: context.name\n namespace: - context.namespace\n\t }\n spec: {\n image: parameter.imageRepository.image\n - \ interval: parameter.pullInterval\n if parameter.imageRepository.secretRef - != _|_ {\n secretRef: name: parameter.imageRepository.secretRef\n - \ }\n }\n }\n\n imagePolicy: {\n apiVersion: - \"image.toolkit.fluxcd.io/v1beta1\"\n kind: \"ImagePolicy\"\n\t - \ metadata: {\n\t\t name: context.name\n namespace: - context.namespace\n\t }\n spec: {\n imageRepositoryRef: - name: context.name\n policy: parameter.imageRepository.policy\n - \ if parameter.imageRepository.filterTags != _|_ {\n filterTags: - parameter.imageRepository.filterTags\n }\n }\n }\n\n - \ imageUpdate: {\n apiVersion: \"image.toolkit.fluxcd.io/v1beta1\"\n - \ kind: \"ImageUpdateAutomation\"\n\t metadata: {\n\t\t name: - context.name\n namespace: context.namespace\n\t }\n spec: - {\n interval: parameter.pullInterval\n sourceRef: - {\n kind: \"GitRepository\"\n name: context.name\n - \ }\n git: {\n checkout: ref: branch: parameter.git.branch\n - \ commit: {\n author: {\n email: - \"kubevelabot@users.noreply.github.com\"\n name: \"kubevelabot\"\n - \ }\n if parameter.imageRepository.commitMessage - != _|_ {\n messageTemplate: \"Update image automatically.\\n\" - + parameter.imageRepository.commitMessage\n }\n if - parameter.imageRepository.commitMessage == _|_ {\n messageTemplate: - \"Update image automatically.\"\n }\n }\n push: - branch: parameter.git.branch\n }\n update: {\n path:\tparameter.path\n - \ strategy: \"Setters\"\n }\n }\n }\n }\n}\n\n_secret: - {\n\tif parameter.secretRef != _|_ {\n\t\tsecretRef: {\n\t\t\tname: - parameter.secretRef\n\t\t}\n\t}\n}\n\n_sourceCommonArgs: {\n\tinterval: - parameter.pullInterval\n\tif parameter.timeout != _|_ {\n\t\ttimeout: - parameter.timeout\n\t}\n}\n\nparameter: {\n\trepoType: *\"git\" - | \"oss\"\n // +usage=The image repository for automatically update - image to git\n imageRepository?: {\n // +usage=The image url\n - \ image: string\n // +usage=The name of the secret containing - authentication credentials\n secretRef?: string\n // +usage=Policy - gives the particulars of the policy to be followed in selecting - the most recent image.\n policy: {\n // +usage=Alphabetical - set of rules to use for alphabetical ordering of the tags.\n alphabetical?: - {\n // +usage=Order specifies the sorting order of the tags.\n - \ // +usage=Given the letters of the alphabet as tags, ascending - order would select Z, and descending order would select A.\n order?: - \"asc\" | \"desc\"\n }\n // +usage=Numerical set of rules - to use for numerical ordering of the tags.\n numerical?: {\n - \ // +usage=Order specifies the sorting order of the tags.\n - \ // +usage=Given the integer values from 0 to 9 as tags, - ascending order would select 9, and descending order would select - 0.\n order: \"asc\" | \"desc\"\n }\n // +usage=SemVer - gives a semantic version range to check against the tags available.\n - \ semver?: {\n // +usage=Range gives a semver range for - the image tag; the highest version within the range that's a tag - yields the latest image.\n range: string\n }\n }\n - \ // +usage=FilterTags enables filtering for only a subset of - tags based on a set of rules. If no rules are provided, all the - tags from the repository will be ordered and compared.\n filterTags?: - {\n // +usage=Extract allows a capture group to be extracted - from the specified regular expression pattern, useful before tag - evaluation.\n extract?: string\n // +usage=Pattern specifies - a regular expression pattern used to filter for image tags.\n pattern?: - string\n }\n // +usage=The image url\n commitMessage?: - string\n }\n\t// +usage=The interval at which to check for repository/bucket - and release updates, default to 5m\n\tpullInterval: *\"5m\" | string\n\t// - +usage=The Git or Helm repository URL, OSS endpoint, accept HTTP/S - or SSH address as git url,\n\turl: string\n\t// +usage=The name - of the secret containing authentication credentials\n\tsecretRef?: - string\n\t// +usage=The timeout for operations like download index/clone - repository, optional\n\ttimeout?: string\n\tgit?: {\n\t\t// +usage=The - Git reference to checkout and monitor for changes, defaults to master - branch\n\t\tbranch: string\n\t}\n\toss?: {\n\t\t// +usage=The bucket's - name, required if repoType is oss\n\t\tbucketName: string\n\t\t// - +usage=\"generic\" for Minio, Amazon S3, Google Cloud Storage, Alibaba - Cloud OSS, \"aws\" for retrieve credentials from the EC2 service - when credentials not specified, default \"generic\"\n\t\tprovider: - *\"generic\" | \"aws\"\n\t\t// +usage=The bucket region, optional\n\t\tregion?: - string\n\t}\n\t//+usage=Path to the directory containing the kustomization.yaml - file, or the set of plain YAMLs a kustomization.yaml should be generated - for.\n\tpath: string\n} \n" - workload: - type: autodetects.core.oam.dev - type: raw - - name: kustomize-strategy-merge - properties: - apiVersion: core.oam.dev/v1beta1 - kind: TraitDefinition - metadata: - annotations: - definition.oam.dev/description: A list of strategic merge to kustomize - config - name: kustomize-strategy-merge - spec: - schematic: - cue: - template: "patch: {\n\tspec: {\n\t\tpatchesStrategicMerge: parameter.patchesStrategicMerge\n\t}\n}\n\nparameter: - {\n\t// +usage=a list of strategicmerge, defined as inline yaml - objects.\n\tpatchesStrategicMerge: [...#nestedmap]\n}\n\n#nestedmap: - {\n\t...\n}\n" - type: raw - status: - rollout: - batchRollingState: "" - currentBatch: 0 - lastTargetAppRevision: "" - rollingState: "" - upgradedReadyReplicas: 0 - upgradedReplicas: 0 - dependsOn: - - ref: + containers: + - args: + - --events-addr=http://notification-controller/ + - --watch-all-namespaces + - --log-level=info + - --log-encoding=json + - --enable-leader-election + - --storage-path=/data + - --storage-adv-addr=source-controller.$(RUNTIME_NAMESPACE).svc.cluster.local. + env: + - name: RUNTIME_NAMESPACE + valueFrom: + fieldRef: + fieldPath: metadata.namespace + image: fluxcd/source-controller:v0.15.3 + imagePullPolicy: IfNotPresent + livenessProbe: + httpGet: + path: /healthz + port: healthz + name: manager + ports: + - containerPort: 9090 + name: http + - containerPort: 8080 + name: http-prom + - containerPort: 9440 + name: healthz + readinessProbe: + httpGet: + path: / + port: http + resources: + limits: + cpu: 1000m + memory: 1Gi + requests: + cpu: 50m + memory: 64Mi + securityContext: + allowPrivilegeEscalation: false + readOnlyRootFilesystem: true + volumeMounts: + - mountPath: /data + name: data + - mountPath: /tmp + name: tmp + securityContext: + fsGroup: 1337 + serviceAccountName: sa-source-controller + terminationGracePeriodSeconds: 10 + volumes: + - emptyDir: {} + name: data + - emptyDir: {} + name: tmp + type: raw + - name: allow-egress + properties: + apiVersion: networking.k8s.io/v1 + kind: NetworkPolicy + metadata: + labels: + app.kubernetes.io/instance: flux-system + name: allow-egress + namespace: flux-system + spec: + egress: + - {} + ingress: + - from: + - podSelector: {} + podSelector: {} + policyTypes: + - Ingress + - Egress + type: raw + - name: allow-scraping + properties: + apiVersion: networking.k8s.io/v1 + kind: NetworkPolicy + metadata: + labels: + app.kubernetes.io/instance: flux-system + name: allow-scraping + namespace: flux-system + spec: + ingress: + - from: + - namespaceSelector: {} + ports: + - port: 8080 + protocol: TCP + podSelector: {} + policyTypes: + - Ingress + type: raw + - name: allow-webhooks + properties: + apiVersion: networking.k8s.io/v1 + kind: NetworkPolicy + metadata: + labels: + app.kubernetes.io/instance: flux-system + name: allow-webhooks + namespace: flux-system + spec: + ingress: + - from: + - namespaceSelector: {} + podSelector: + matchLabels: + app: notification-controller + policyTypes: + - Ingress + type: raw + - name: cluster-reconciler + properties: + apiVersion: rbac.authorization.k8s.io/v1 + kind: ClusterRoleBinding + metadata: + labels: + app.kubernetes.io/instance: flux-system + name: cluster-reconciler + roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: cluster-admin + subjects: + - kind: ServiceAccount + name: sa-kustomize-controller + namespace: flux-system + - kind: ServiceAccount + name: sa-helm-controller + namespace: flux-system + type: raw + - name: crd-controller + properties: + apiVersion: rbac.authorization.k8s.io/v1 + kind: ClusterRoleBinding + metadata: + labels: + app.kubernetes.io/instance: flux-system + name: crd-controller + roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: cr-crd-controller + subjects: + - kind: ServiceAccount + name: sa-kustomize-controller + namespace: flux-system + - kind: ServiceAccount + name: sa-helm-controller + namespace: flux-system + - kind: ServiceAccount + name: sa-source-controller + namespace: flux-system + - kind: ServiceAccount + name: sa-notification-controller + namespace: flux-system + - kind: ServiceAccount + name: sa-image-reflector-controller + namespace: flux-system + - kind: ServiceAccount + name: sa-image-automation-controller + namespace: flux-system + type: raw + - name: cr-crd-controller + properties: + apiVersion: rbac.authorization.k8s.io/v1 + kind: ClusterRole + metadata: + labels: + app.kubernetes.io/instance: flux-system + name: cr-crd-controller + rules: + - apiGroups: + - source.toolkit.fluxcd.io + resources: + - '*' + verbs: + - '*' + - apiGroups: + - kustomize.toolkit.fluxcd.io + resources: + - '*' + verbs: + - '*' + - apiGroups: + - helm.toolkit.fluxcd.io + resources: + - '*' + verbs: + - '*' + - apiGroups: + - notification.toolkit.fluxcd.io + resources: + - '*' + verbs: + - '*' + - apiGroups: + - image.toolkit.fluxcd.io + resources: + - '*' + verbs: + - '*' + - apiGroups: + - "" + resources: + - secrets + verbs: + - get + - list + - watch + - apiGroups: + - "" + resources: + - events + verbs: + - create + - patch + - apiGroups: + - "" + resources: + - configmaps + - configmaps/status + verbs: + - get + - list + - watch + - create + - update + - patch + - delete + - apiGroups: + - coordination.k8s.io + resources: + - leases + verbs: + - get + - list + - watch + - create + - update + - patch + - delete + type: raw + - name: sa-helm-controller + properties: + apiVersion: v1 + kind: ServiceAccount + metadata: + labels: + app.kubernetes.io/instance: flux-system + name: sa-helm-controller + namespace: flux-system + type: raw + - name: sa-image-automation-controller + properties: + apiVersion: v1 + kind: ServiceAccount + metadata: + labels: + app.kubernetes.io/instance: flux-system + name: sa-image-automation-controller + namespace: flux-system + type: raw + - name: sa-image-reflector-controller + properties: + apiVersion: v1 + kind: ServiceAccount + metadata: + labels: + app.kubernetes.io/instance: flux-system + name: sa-image-reflector-controller + namespace: flux-system + type: raw + - name: sa-kustomize-controller + properties: + apiVersion: v1 + kind: ServiceAccount + metadata: + labels: + app.kubernetes.io/instance: flux-system + name: sa-kustomize-controller + namespace: flux-system + type: raw + - name: sa-notification-controller + properties: + apiVersion: v1 + kind: ServiceAccount + metadata: + labels: + app.kubernetes.io/instance: flux-system + name: sa-notification-controller + namespace: flux-system + type: raw + - name: sa-source-controller + properties: + apiVersion: v1 + kind: ServiceAccount + metadata: + labels: + app.kubernetes.io/instance: flux-system + name: sa-source-controller + namespace: flux-system + type: raw + - name: notification-controller + properties: + apiVersion: v1 + kind: Service + metadata: + labels: + app.kubernetes.io/instance: flux-system + control-plane: controller + name: notification-controller + namespace: flux-system + spec: + ports: + - name: http + port: 80 + protocol: TCP + targetPort: http + selector: + app: notification-controller + type: ClusterIP + type: raw + - name: source-controller + properties: + apiVersion: v1 + kind: Service + metadata: + labels: + app.kubernetes.io/instance: flux-system + control-plane: controller + name: source-controller + namespace: flux-system + spec: + ports: + - name: http + port: 80 + protocol: TCP + targetPort: http + selector: + app: source-controller + type: ClusterIP + type: raw + - name: webhook-receiver + properties: + apiVersion: v1 + kind: Service + metadata: + labels: + app.kubernetes.io/instance: flux-system + control-plane: controller + name: webhook-receiver + namespace: flux-system + spec: + ports: + - name: http + port: 80 + protocol: TCP + targetPort: http-webhook + selector: + app: notification-controller + type: ClusterIP + type: raw + - name: helm + properties: apiVersion: core.oam.dev/v1beta1 - kind: Initializer - name: ns-flux-system - namespace: vela-system + kind: ComponentDefinition + metadata: + annotations: + definition.oam.dev/description: helm release is a group of K8s resources + from either git repository or helm repo + name: helm + namespace: vela-system + spec: + schematic: + cue: + template: "output: {\n\tapiVersion: \"source.toolkit.fluxcd.io/v1beta1\"\n\tmetadata: + {\n\t\tname: context.name\n\t}\n\tif parameter.repoType == \"git\" {\n\t\tkind: + \"GitRepository\"\n\t\tspec: {\n\t\t\turl: parameter.url\n\t\t\tif parameter.git.branch + != _|_ {\n\t\t\t\tref: branch: parameter.git.branch\n\t\t\t}\n\t\t\t_secret\n\t\t\t_sourceCommonArgs\n\t\t}\n\t}\n\tif + parameter.repoType == \"oss\" {\n\t\tkind: \"Bucket\"\n\t\tspec: {\n\t\t\tendpoint: + \ parameter.url\n\t\t\tbucketName: parameter.oss.bucketName\n\t\t\tprovider: + \ parameter.oss.provider\n\t\t\tif parameter.oss.region != _|_ {\n\t\t\t\tregion: + parameter.oss.region\n\t\t\t}\n\t\t\t_secret\n\t\t\t_sourceCommonArgs\n\t\t}\n\t}\n\tif + parameter.repoType == \"helm\" {\n\t\tkind: \"HelmRepository\"\n\t\tspec: + {\n\t\t\turl: parameter.url\n\t\t\t_secret\n\t\t\t_sourceCommonArgs\n\t\t}\n\t}\n}\n\noutputs: + release: {\n\tapiVersion: \"helm.toolkit.fluxcd.io/v2beta1\"\n\tkind: + \ \"HelmRelease\"\n\tmetadata: {\n\t\tname: context.name\n\t}\n\tspec: + {\n\t\tinterval: parameter.pullInterval\n\t\tchart: {\n\t\t\tspec: {\n\t\t\t\tchart: + \ parameter.chart\n\t\t\t\tversion: parameter.version\n\t\t\t\tsourceRef: + {\n\t\t\t\t\tif parameter.repoType == \"git\" {\n\t\t\t\t\t\tkind: \"GitRepository\"\n\t\t\t\t\t}\n\t\t\t\t\tif + parameter.repoType == \"helm\" {\n\t\t\t\t\t\tkind: \"HelmRepository\"\n\t\t\t\t\t}\n\t\t\t\t\tif + parameter.repoType == \"oss\" {\n\t\t\t\t\t\tkind: \"Bucket\"\n\t\t\t\t\t}\n\t\t\t\t\tname: + \ context.name\n\t\t\t\t\tnamespace: context.namespace\n\t\t\t\t}\n\t\t\t\tinterval: + parameter.pullInterval\n\t\t\t}\n\t\t}\n\t\tif parameter.targetNamespace + != _|_ {\n\t\t\ttargetNamespace: parameter.targetNamespace\n\t\t}\n\t\tif + parameter.releaseName != _|_ {\n\t\t\treleaseName: parameter.releaseName\n\t\t}\n\t\tif + parameter.values != _|_ {\n\t\t\tvalues: parameter.values\n\t\t}\n\t}\n}\n\n_secret: + {\n\tif parameter.secretRef != _|_ {\n\t\tsecretRef: {\n\t\t\tname: + parameter.secretRef\n\t\t}\n\t}\n}\n\n_sourceCommonArgs: {\n\tinterval: + parameter.pullInterval\n\tif parameter.timeout != _|_ {\n\t\ttimeout: + parameter.timeout\n\t}\n}\n\nparameter: {\n\trepoType: *\"helm\" | \"git\" + | \"oss\"\n\t// +usage=The interval at which to check for repository/bucket + and relese updates, default to 5m\n\tpullInterval: *\"5m\" | string\n\t// + +usage=The Git or Helm repository URL, OSS endpoint, accept HTTP/S or + SSH address as git url,\n\turl: string\n\t// +usage=The name of the + secret containing authentication credentials\n\tsecretRef?: string\n\t// + +usage=The timeout for operations like download index/clone repository, + optional\n\ttimeout?: string\n\n\tgit?: {\n\t\t// +usage=The Git reference + to checkout and monitor for changes, defaults to master branch\n\t\tbranch: + string\n\t}\n\toss?: {\n\t\t// +usage=The bucket's name, required if + repoType is oss\n\t\tbucketName: string\n\t\t// +usage=\"generic\" for + Minio, Amazon S3, Google Cloud Storage, Alibaba Cloud OSS, \"aws\" for + retrieve credentials from the EC2 service when credentials not specified, + default \"generic\"\n\t\tprovider: *\"generic\" | \"aws\"\n\t\t// +usage=The + bucket region, optional\n\t\tregion?: string\n\t}\n\n\t// +usage=1.The + relative path to helm chart for git/oss source. 2. chart name for helm + resource 3. relative path for chart package(e.g. ./charts/podinfo-1.2.3.tgz)\n\tchart: + string\n\t// +usage=Chart version\n\tversion: *\"*\" | string\n\t// + +usage=The namespace for helm chart, optional\n\ttargetNamespace?: string\n\t// + +usage=The release name\n\treleaseName?: string\n\t// +usage=Chart values\n\tvalues?: + #nestedmap\n}\n\n#nestedmap: {\n\t...\n}\n" + status: + healthPolicy: 'isHealth: len(context.outputs.release.status.conditions) + != 0 && context.outputs.release.status.conditions[0]["status"]=="True"' + workload: + type: autodetects.core.oam.dev + type: raw + - name: kustomize-json-patch + properties: + apiVersion: core.oam.dev/v1beta1 + kind: TraitDefinition + metadata: + annotations: + definition.oam.dev/description: A list of JSON6902 patch to selected target + name: kustomize-json-patch + spec: + schematic: + cue: + template: "patch: {\n\tspec: {\n\t\tpatchesJson6902: parameter.patchesJson\n\t}\n}\n\nparameter: + {\n\t// +usage=A list of JSON6902 patch.\n\tpatchesJson: [...#jsonPatchItem]\n}\n\n// + +usage=Contains a JSON6902 patch\n#jsonPatchItem: {\n\ttarget: #selector\n\tpatch: + [...{\n\t\t// +usage=operation to perform\n\t\top: string | \"add\" + | \"remove\" | \"replace\" | \"move\" | \"copy\" | \"test\"\n\t\t// + +usage=operate path e.g. /foo/bar\n\t\tpath: string\n\t\t// +usage=specify + source path when op is copy/move\n\t\tfrom?: string\n\t\t// +usage=specify + opraation value when op is test/add/replace\n\t\tvalue?: string\n\t}]\n}\n\n// + +usage=Selector specifies a set of resources\n#selector: {\n\tgroup?: + \ string\n\tversion?: string\n\tkind?: string\n\tnamespace?: + \ string\n\tname?: string\n\tannotationSelector?: + string\n\tlabelSelector?: string\n}\n" + type: raw + - name: kustomize-patch + properties: + apiVersion: core.oam.dev/v1beta1 + kind: TraitDefinition + metadata: + annotations: + definition.oam.dev/description: A list of StrategicMerge or JSON6902 patch + to selected target + name: kustomize-patch + spec: + schematic: + cue: + template: "patch: {\n\tspec: {\n\t\tpatches: parameter.patches\n\t}\n}\nparameter: + {\n\t// +usage=a list of StrategicMerge or JSON6902 patch to selected + target\n\tpatches: [...#patchItem]\n}\n\n// +usage=Contains a strategicMerge + or JSON6902 patch\n#patchItem: {\n\t// +usage=Inline patch string, in + yaml style\n\tpatch: string\n\t// +usage=Specify the target the patch + should be applied to\n\ttarget: #selector\n}\n\n// +usage=Selector specifies + a set of resources\n#selector: {\n\tgroup?: string\n\tversion?: + \ string\n\tkind?: string\n\tnamespace?: string\n\tname?: + \ string\n\tannotationSelector?: string\n\tlabelSelector?: + \ string\n}\n" + type: raw + - name: kustomize + properties: + apiVersion: core.oam.dev/v1beta1 + kind: ComponentDefinition + metadata: + annotations: + definition.oam.dev/description: kustomize can fetching, building, updating + and applying Kustomize manifests from git repo. + name: kustomize + namespace: vela-system + spec: + schematic: + cue: + template: "output: {\n\tapiVersion: \"kustomize.toolkit.fluxcd.io/v1beta1\"\n\tkind: + \ \"Kustomization\"\n\tmetadata: {\n\t\tname: context.name\n namespace: + context.namespace\n\t}\n\tspec: {\n\t\tinterval: parameter.pullInterval\n\t\tsourceRef: + {\n\t\t\tif parameter.repoType == \"git\" {\n\t\t\t\tkind: \"GitRepository\"\n\t\t\t}\n\t\t\tif + parameter.repoType == \"oss\" {\n\t\t\t\tkind: \"Bucket\"\n\t\t\t}\n\t\t\tname: + \ context.name\n\t\t\tnamespace: context.namespace\n\t\t}\n\t\tpath: + \ parameter.path\n\t\tprune: true\n\t\tvalidation: \"client\"\n\t}\n}\n\noutputs: + {\n repo: {\n\t apiVersion: \"source.toolkit.fluxcd.io/v1beta1\"\n\t + \ metadata: {\n\t\t name: context.name\n namespace: context.namespace\n\t + \ }\n\t if parameter.repoType == \"git\" {\n\t\t kind: \"GitRepository\"\n\t\t + \ spec: {\n\t\t\t url: parameter.url\n\t\t\t if parameter.git.branch + != _|_ {\n\t\t\t\t ref: branch: parameter.git.branch\n\t\t\t }\n\t\t\t + \ _secret\n\t\t\t _sourceCommonArgs\n\t\t }\n\t }\n\t if parameter.repoType + == \"oss\" {\n\t\t kind: \"Bucket\"\n\t\t spec: {\n\t\t\t endpoint: + \ parameter.url\n\t\t\t bucketName: parameter.oss.bucketName\n\t\t\t + \ provider: parameter.oss.provider\n\t\t\t if parameter.oss.region + != _|_ {\n\t\t\t\t region: parameter.oss.region\n\t\t\t }\n\t\t\t + \ _secret\n\t\t\t _sourceCommonArgs\n\t\t }\n\t }\n }\n\n if parameter.imageRepository + != _|_ {\n imageRepo: {\n apiVersion: \"image.toolkit.fluxcd.io/v1beta1\"\n + \ kind: \"ImageRepository\"\n\t metadata: {\n\t\t name: context.name\n + \ namespace: context.namespace\n\t }\n spec: {\n image: + parameter.imageRepository.image\n interval: parameter.pullInterval\n + \ if parameter.imageRepository.secretRef != _|_ {\n secretRef: + name: parameter.imageRepository.secretRef\n }\n }\n }\n\n + \ imagePolicy: {\n apiVersion: \"image.toolkit.fluxcd.io/v1beta1\"\n + \ kind: \"ImagePolicy\"\n\t metadata: {\n\t\t name: context.name\n + \ namespace: context.namespace\n\t }\n spec: {\n imageRepositoryRef: + name: context.name\n policy: parameter.imageRepository.policy\n + \ if parameter.imageRepository.filterTags != _|_ {\n filterTags: + parameter.imageRepository.filterTags\n }\n }\n }\n\n + \ imageUpdate: {\n apiVersion: \"image.toolkit.fluxcd.io/v1beta1\"\n + \ kind: \"ImageUpdateAutomation\"\n\t metadata: {\n\t\t name: + context.name\n namespace: context.namespace\n\t }\n spec: + {\n interval: parameter.pullInterval\n sourceRef: {\n + \ kind: \"GitRepository\"\n name: context.name\n }\n + \ git: {\n checkout: ref: branch: parameter.git.branch\n + \ commit: {\n author: {\n email: \"kubevelabot@users.noreply.github.com\"\n + \ name: \"kubevelabot\"\n }\n if parameter.imageRepository.commitMessage + != _|_ {\n messageTemplate: \"Update image automatically.\\n\" + + parameter.imageRepository.commitMessage\n }\n if + parameter.imageRepository.commitMessage == _|_ {\n messageTemplate: + \"Update image automatically.\"\n }\n }\n push: + branch: parameter.git.branch\n }\n update: {\n path:\tparameter.path\n + \ strategy: \"Setters\"\n }\n }\n }\n }\n}\n\n_secret: + {\n\tif parameter.secretRef != _|_ {\n\t\tsecretRef: {\n\t\t\tname: + parameter.secretRef\n\t\t}\n\t}\n}\n\n_sourceCommonArgs: {\n\tinterval: + parameter.pullInterval\n\tif parameter.timeout != _|_ {\n\t\ttimeout: + parameter.timeout\n\t}\n}\n\nparameter: {\n\trepoType: *\"git\" | \"oss\"\n + \ // +usage=The image repository for automatically update image to git\n + \ imageRepository?: {\n // +usage=The image url\n image: string\n + \ // +usage=The name of the secret containing authentication credentials\n + \ secretRef?: string\n // +usage=Policy gives the particulars of + the policy to be followed in selecting the most recent image.\n policy: + {\n // +usage=Alphabetical set of rules to use for alphabetical + ordering of the tags.\n alphabetical?: {\n // +usage=Order + specifies the sorting order of the tags.\n // +usage=Given the + letters of the alphabet as tags, ascending order would select Z, and + descending order would select A.\n order?: \"asc\" | \"desc\"\n + \ }\n // +usage=Numerical set of rules to use for numerical + ordering of the tags.\n numerical?: {\n // +usage=Order + specifies the sorting order of the tags.\n // +usage=Given the + integer values from 0 to 9 as tags, ascending order would select 9, + and descending order would select 0.\n order: \"asc\" | \"desc\"\n + \ }\n // +usage=SemVer gives a semantic version range to check + against the tags available.\n semver?: {\n // +usage=Range + gives a semver range for the image tag; the highest version within the + range that's a tag yields the latest image.\n range: string\n + \ }\n }\n // +usage=FilterTags enables filtering for only + a subset of tags based on a set of rules. If no rules are provided, + all the tags from the repository will be ordered and compared.\n filterTags?: + {\n // +usage=Extract allows a capture group to be extracted from + the specified regular expression pattern, useful before tag evaluation.\n + \ extract?: string\n // +usage=Pattern specifies a regular + expression pattern used to filter for image tags.\n pattern?: string\n + \ }\n // +usage=The image url\n commitMessage?: string\n }\n\t// + +usage=The interval at which to check for repository/bucket and release + updates, default to 5m\n\tpullInterval: *\"5m\" | string\n\t// +usage=The + Git or Helm repository URL, OSS endpoint, accept HTTP/S or SSH address + as git url,\n\turl: string\n\t// +usage=The name of the secret containing + authentication credentials\n\tsecretRef?: string\n\t// +usage=The timeout + for operations like download index/clone repository, optional\n\ttimeout?: + string\n\tgit?: {\n\t\t// +usage=The Git reference to checkout and monitor + for changes, defaults to master branch\n\t\tbranch: string\n\t}\n\toss?: + {\n\t\t// +usage=The bucket's name, required if repoType is oss\n\t\tbucketName: + string\n\t\t// +usage=\"generic\" for Minio, Amazon S3, Google Cloud + Storage, Alibaba Cloud OSS, \"aws\" for retrieve credentials from the + EC2 service when credentials not specified, default \"generic\"\n\t\tprovider: + *\"generic\" | \"aws\"\n\t\t// +usage=The bucket region, optional\n\t\tregion?: + string\n\t}\n\t//+usage=Path to the directory containing the kustomization.yaml + file, or the set of plain YAMLs a kustomization.yaml should be generated + for.\n\tpath: string\n} \n" + workload: + type: autodetects.core.oam.dev + type: raw + - name: kustomize-strategy-merge + properties: + apiVersion: core.oam.dev/v1beta1 + kind: TraitDefinition + metadata: + annotations: + definition.oam.dev/description: A list of strategic merge to kustomize config + name: kustomize-strategy-merge + spec: + schematic: + cue: + template: "patch: {\n\tspec: {\n\t\tpatchesStrategicMerge: parameter.patchesStrategicMerge\n\t}\n}\n\nparameter: + {\n\t// +usage=a list of strategicmerge, defined as inline yaml objects.\n\tpatchesStrategicMerge: + [...#nestedmap]\n}\n\n#nestedmap: {\n\t...\n}\n" + type: raw + workflow: + steps: + - name: apply-ns + properties: + component: ns-flux-system + type: apply-component + - name: apply-resources + type: apply-remaining status: - observedGeneration: 0 + rollout: + batchRollingState: "" + currentBatch: 0 + lastTargetAppRevision: "" + rollingState: "" + upgradedReadyReplicas: 0 + upgradedReplicas: 0 diff --git a/vela-templates/addons/auto-gen/istio.yaml b/vela-templates/addons/auto-gen/istio.yaml index f134b0a39..b283a7c20 100644 --- a/vela-templates/addons/auto-gen/istio.yaml +++ b/vela-templates/addons/auto-gen/istio.yaml @@ -1,5 +1,5 @@ apiVersion: core.oam.dev/v1beta1 -kind: Initializer +kind: Application metadata: annotations: addons.oam.dev/description: istio Controller is a Kubernetes Controller for manage @@ -7,243 +7,245 @@ metadata: name: istio namespace: istio-system spec: - appTemplate: - spec: - components: - - name: istio - properties: - chart: istio - repoType: helm - url: https://charts.kubevela.net/addons - version: 1.11.1 - type: helm - - name: canary-rollout - properties: - apiVersion: core.oam.dev/v1beta1 - kind: WorkflowStepDefinition - metadata: - name: canary-rollout - namespace: vela-system - spec: - schematic: - cue: - template: |- - import ("vela/op") + components: + - name: ns-istio-system + properties: + apiVersion: v1 + kind: Namespace + metadata: + name: istio-system + type: raw + - name: istio + properties: + chart: istio + repoType: helm + url: https://charts.kubevela.net/addons + version: 1.11.1 + type: helm + - name: canary-rollout + properties: + apiVersion: core.oam.dev/v1beta1 + kind: WorkflowStepDefinition + metadata: + name: canary-rollout + namespace: vela-system + spec: + schematic: + cue: + template: |- + import ("vela/op") - parameter: { - batchPartition: int - traffic: weightedTargets: [...{ - revision: string - weight: int + parameter: { + batchPartition: int + traffic: weightedTargets: [...{ + revision: string + weight: int + }] + } + + comps__: op.#Load + compNames__: [ for name, c in comps__.value {name}] + comp__: compNames__[0] + + apply: op.#ApplyComponent & { + value: comps__.value[comp__] + patch: { + traits: "rollout": { + spec: rolloutPlan: batchPartition: parameter.batchPartition + } + + traits: "virtualService": { + spec: + // +patchStrategy=retainKeys + http: [ + { + route: [ + for i, t in parameter.traffic.weightedTargets { + destination: { + host: comp__ + subset: t.revision + } + weight: t.weight + }] + }, + ] + } + + traits: "destinationRule": { + // +patchStrategy=retainKeys + spec: { + host: comp__ + subsets: [ + for i, t in parameter.traffic.weightedTargets { + name: t.revision + labels: {"app.oam.dev/revision": t.revision} + }, + ]} + } + } + } + + applyRemaining: op.#ApplyRemaining & { + exceptions: [comp__] + } + type: raw + - name: istio-gateway + properties: + apiVersion: core.oam.dev/v1beta1 + kind: TraitDefinition + metadata: + annotations: + definition.oam.dev/description: use istio to manage in-cluster traffic + name: istio-gateway + namespace: vela-system + spec: + appliesToWorkloads: + - deployments.apps + podDisruptive: true + schematic: + cue: + template: "\noutputs: gateway: {\n apiVersion: \"networking.istio.io/v1alpha3\"\n + \ kind: \"Gateway\"\n metadata: {\n name: context.name\n + \ namespace: context.namespace\n }\n spec: {\n selector: + {\n istio: parameter.gateway\n }\n servers: [{\n hosts: + parameter.hosts\n port: {\n name: \"http\"\n number: + 80\n protocol: \"HTTP\"\n }\n }]\n }\n}\n\noutputs: + virtualService: {\n apiVersion: \"networking.istio.io/v1alpha3\"\n + \ kind: \"VirtualService\"\n metadata: {\n name: context.name\n + \ namespace: context.namespace\n }\n spec: {\n gateways: + [context.name]\n hosts: parameter.hosts\n http:[{\n match: + [ for i, u in parameter.match { uri: u} ]\n route: [{destination: + {\n host: context.name\n port: number: parameter.port\n + \ }}]\n }]\n }\n}\n\nparameter: {\n hosts: [string]\n + \ gateway: *\"ingressgateway\"|string\n match: [...#uri]\n port: + int\n}\n\n#uri: {\n exact?: string\n prefix?: string\n} \n" + type: raw + - name: canary-rollback + properties: + apiVersion: core.oam.dev/v1beta1 + kind: WorkflowStepDefinition + metadata: + name: canary-rollback + namespace: vela-system + spec: + schematic: + cue: + template: |- + import ("vela/op") + + parameter: {...} + + comps: op.#Load + compNames: [ for name, c in comps.value {name}] + firstcomp: compNames[0] + + rolloutObj: op.#Read & { + value: { + apiVersion: "standard.oam.dev/v1alpha1" + kind: "Rollout" + metadata: { + name: firstcomp + namespace: context.namespace + } + } + } + + _sourceRevision: rolloutObj.value.status.LastSourceRevision + + apply: op.#ApplyComponent & { + value: comps.value[firstcomp] + patch: { + traits: "rollout": { + spec: { + targetRevisionName: _sourceRevision + } + } + + traits: "virtualService": { + spec: + // +patchStrategy=retainKeys + http: [ + { + route: [{ + destination: { + host: firstcomp + subset: _sourceRevision + } + weight: 100 }] + }, + ] } - comps__: op.#Load - compNames__: [ for name, c in comps__.value {name}] - comp__: compNames__[0] - - apply: op.#ApplyComponent & { - value: comps__.value[comp__] - patch: { - traits: "rollout": { - spec: rolloutPlan: batchPartition: parameter.batchPartition - } - - traits: "virtualService": { - spec: - // +patchStrategy=retainKeys - http: [ - { - route: [ - for i, t in parameter.traffic.weightedTargets { - destination: { - host: comp__ - subset: t.revision - } - weight: t.weight - }] - }, - ] - } - - traits: "destinationRule": { - // +patchStrategy=retainKeys - spec: { - host: comp__ - subsets: [ - for i, t in parameter.traffic.weightedTargets { - name: t.revision - labels: {"app.oam.dev/revision": t.revision} - }, - ]} - } - } - } - - applyRemaining: op.#ApplyRemaining & { - exceptions: [comp__] - } - type: raw - - name: istio-gateway - properties: - apiVersion: core.oam.dev/v1beta1 - kind: TraitDefinition - metadata: - annotations: - definition.oam.dev/description: use istio to manage in-cluster traffic - name: istio-gateway - namespace: vela-system - spec: - appliesToWorkloads: - - deployments.apps - podDisruptive: true - schematic: - cue: - template: "\noutputs: gateway: {\n apiVersion: \"networking.istio.io/v1alpha3\"\n - \ kind: \"Gateway\"\n metadata: {\n name: context.name\n - \ namespace: context.namespace\n }\n spec: {\n selector: - {\n istio: parameter.gateway\n }\n servers: [{\n - \ hosts: parameter.hosts\n port: {\n name: - \"http\"\n number: 80\n protocol: \"HTTP\"\n - \ }\n }]\n }\n}\n\noutputs: virtualService: {\n apiVersion: - \"networking.istio.io/v1alpha3\"\n kind: \"VirtualService\"\n - \ metadata: {\n name: context.name\n namespace: - context.namespace\n }\n spec: {\n gateways: [context.name]\n - \ hosts: parameter.hosts\n http:[{\n match: [ for - i, u in parameter.match { uri: u} ]\n route: [{destination: - {\n host: context.name\n port: number: parameter.port\n - \ }}]\n }]\n }\n}\n\nparameter: {\n hosts: [string]\n - \ gateway: *\"ingressgateway\"|string\n match: [...#uri]\n - \ port: int\n}\n\n#uri: {\n exact?: string\n prefix?: string\n} - \n" - type: raw - - name: canary-rollback - properties: - apiVersion: core.oam.dev/v1beta1 - kind: WorkflowStepDefinition - metadata: - name: canary-rollback - namespace: vela-system - spec: - schematic: - cue: - template: |- - import ("vela/op") - - parameter: {...} - - comps: op.#Load - compNames: [ for name, c in comps.value {name}] - firstcomp: compNames[0] - - rolloutObj: op.#Read & { - value: { - apiVersion: "standard.oam.dev/v1alpha1" - kind: "Rollout" - metadata: { - name: firstcomp - namespace: context.namespace - } + traits: "destinationRule": { + // +patchStrategy=retainKeys + spec: { + host: firstcomp + subsets: [ + { + name: _sourceRevision + labels: {"app.oam.dev/revision": _sourceRevision} + }, + ] } } + } + } - _sourceRevision: rolloutObj.value.status.LastSourceRevision - - apply: op.#ApplyComponent & { - value: comps.value[firstcomp] - patch: { - traits: "rollout": { - spec: { - targetRevisionName: _sourceRevision - } - } - - traits: "virtualService": { - spec: - // +patchStrategy=retainKeys - http: [ - { - route: [{ - destination: { - host: firstcomp - subset: _sourceRevision - } - weight: 100 - }] - }, - ] - } - - traits: "destinationRule": { - // +patchStrategy=retainKeys - spec: { - host: firstcomp - subsets: [ - { - name: _sourceRevision - labels: {"app.oam.dev/revision": _sourceRevision} - }, - ] - } - } - } - } - - applyRemaining: op.#ApplyRemaining & { - exceptions: [firstcomp] - } - type: raw - - name: canary-traffic - properties: - apiVersion: core.oam.dev/v1beta1 - kind: TraitDefinition - metadata: - annotations: - definition.oam.dev/description: use istio to manage traffic - name: canary-traffic - namespace: vela-system - spec: - appliesToWorkloads: - - deployments.apps - podDisruptive: true - schematic: - cue: - template: "outputs: service: {\n\t\tapiVersion: \"v1\"\n\t\tkind: - \ \"Service\"\n\t\tmetadata: name: context.name\n\t\tspec: - {\n\t\t\tselector: \"app.oam.dev/component\": context.name\n\t\t\tports: - [\n\t\t\t\tfor p in parameter.port {\n\t\t\t\t\tport: p\n\t\t\t\t\ttargetPort: - p\n\t\t\t\t},\n\t\t\t]\n\t\t\ttype: \"ClusterIP\"\n\t\t}\n}\n\noutputs: - virtualService: {\n apiVersion: \"networking.istio.io/v1alpha3\"\n - \ kind: \"VirtualService\"\n metadata: {\n name: context.name\n - \ namespace: context.namespace\n }\n spec: {\n hosts: - [context.name]\n http: [{route: [\n {destination: {\n - \ host: context.name\n port: {number: parameter.port[0]}\n - \ }}]}]\n }\n}\n\noutputs: destinationRule: {\n apiVersion: - \"networking.istio.io/v1alpha3\"\n kind: \"DestinationRule\"\n - \ metadata: {\n name: context.name\n namespace: - context.namespace\n }\n spec: {\n host: context.name\n - \ subsets: [{\n name: context.revision\n labels: - {\"app.oam.dev/revision\": context.revision}\n }]\n }\n}\n\nparameter: - {\n port: [int]\n} \n" - type: raw - status: - rollout: - batchRollingState: "" - currentBatch: 0 - lastTargetAppRevision: "" - rollingState: "" - upgradedReadyReplicas: 0 - upgradedReplicas: 0 - dependsOn: - - ref: + applyRemaining: op.#ApplyRemaining & { + exceptions: [firstcomp] + } + type: raw + - name: canary-traffic + properties: apiVersion: core.oam.dev/v1beta1 - kind: Initializer - name: fluxcd - namespace: vela-system - - ref: - apiVersion: core.oam.dev/v1beta1 - kind: Initializer - name: ns-istio-system - namespace: vela-system + kind: TraitDefinition + metadata: + annotations: + definition.oam.dev/description: use istio to manage traffic + name: canary-traffic + namespace: vela-system + spec: + appliesToWorkloads: + - deployments.apps + podDisruptive: true + schematic: + cue: + template: "outputs: service: {\n\t\tapiVersion: \"v1\"\n\t\tkind: \"Service\"\n\t\tmetadata: + name: context.name\n\t\tspec: {\n\t\t\tselector: \"app.oam.dev/component\": + context.name\n\t\t\tports: [\n\t\t\t\tfor p in parameter.port {\n\t\t\t\t\tport: + \ p\n\t\t\t\t\ttargetPort: p\n\t\t\t\t},\n\t\t\t]\n\t\t\ttype: + \"ClusterIP\"\n\t\t}\n}\n\noutputs: virtualService: {\n apiVersion: + \"networking.istio.io/v1alpha3\"\n kind: \"VirtualService\"\n metadata: + {\n name: context.name\n namespace: context.namespace\n + \ }\n spec: {\n hosts: [context.name]\n http: [{route: + [\n {destination: {\n host: context.name\n port: + {number: parameter.port[0]}\n }}]}]\n }\n}\n\noutputs: destinationRule: + {\n apiVersion: \"networking.istio.io/v1alpha3\"\n kind: + \"DestinationRule\"\n metadata: {\n name: context.name\n + \ namespace: context.namespace\n }\n spec: {\n + \ host: context.name\n subsets: [{\n name: + context.revision\n labels: {\"app.oam.dev/revision\": context.revision}\n + \ }]\n }\n}\n\nparameter: {\n port: [int]\n} \n" + type: raw + workflow: + steps: + - name: checking-depends-on + properties: + name: fluxcd + namespace: vela-system + type: depends-on-app + - name: apply-ns + properties: + component: ns-istio-system + type: apply-component + - name: apply-resources + type: apply-remaining status: - observedGeneration: 0 + rollout: + batchRollingState: "" + currentBatch: 0 + lastTargetAppRevision: "" + rollingState: "" + upgradedReadyReplicas: 0 + upgradedReplicas: 0 diff --git a/vela-templates/addons/auto-gen/keda.yaml b/vela-templates/addons/auto-gen/keda.yaml index e183bc5ca..630e7ac29 100644 --- a/vela-templates/addons/auto-gen/keda.yaml +++ b/vela-templates/addons/auto-gen/keda.yaml @@ -1,33 +1,32 @@ apiVersion: core.oam.dev/v1beta1 -kind: Initializer +kind: Application metadata: annotations: addons.oam.dev/description: KEDA is a Kubernetes-based Event Driven Autoscaler. name: keda namespace: vela-system spec: - appTemplate: - spec: - components: - - name: keda - properties: - chart: keda - repoType: helm - url: https://kedacore.github.io/charts - type: helm - status: - rollout: - batchRollingState: "" - currentBatch: 0 - lastTargetAppRevision: "" - rollingState: "" - upgradedReadyReplicas: 0 - upgradedReplicas: 0 - dependsOn: - - ref: - apiVersion: core.oam.dev/v1beta1 - kind: Initializer - name: fluxcd - namespace: vela-system + components: + - name: keda + properties: + chart: keda + repoType: helm + url: https://kedacore.github.io/charts + type: helm + workflow: + steps: + - name: checking-depends-on + properties: + name: fluxcd + namespace: vela-system + type: depends-on-app + - name: apply-resources + type: apply-application status: - observedGeneration: 0 + rollout: + batchRollingState: "" + currentBatch: 0 + lastTargetAppRevision: "" + rollingState: "" + upgradedReadyReplicas: 0 + upgradedReplicas: 0 diff --git a/vela-templates/addons/auto-gen/kruise.yaml b/vela-templates/addons/auto-gen/kruise.yaml index 62e9f1c9d..ea3813fe8 100644 --- a/vela-templates/addons/auto-gen/kruise.yaml +++ b/vela-templates/addons/auto-gen/kruise.yaml @@ -1,5 +1,5 @@ apiVersion: core.oam.dev/v1beta1 -kind: Initializer +kind: Application metadata: annotations: addons.oam.dev/description: Kruise is a Kubernetes extended suite for application @@ -7,179 +7,170 @@ metadata: name: kruise namespace: vela-system spec: - appTemplate: - spec: - components: - - name: kruise - properties: - chart: ./charts/kruise/v0.9.0 - git: - branch: master - repoType: git - url: https://github.com/openkruise/kruise - values: - featureGates: PreDownloadImageForInPlaceUpdate=true - type: helm - - name: cloneset - properties: - apiVersion: core.oam.dev/v1beta1 - kind: ComponentDefinition - metadata: - annotations: - definition.oam.dev/description: Describes long-running, scalable, containerized - services that have a stable network endpoint to receive external network - traffic from customers. If workload type is skipped for any service - defined in Appfile, it will be defaulted to `webservice` type. - name: cloneset - namespace: vela-system - spec: - schematic: - cue: - template: "output: {\n\tapiVersion: \"apps.kruise.io/v1alpha1\"\n\tkind: - \ \"CloneSet\"\n\tmetadata: labels: {\n\t\t\"app.oam.dev/component\": - context.name\n\t}\n\tspec: {\n\t\tselector: matchLabels: {\n\t\t\t\"app.oam.dev/component\": - context.name\n\t\t}\n\n\t\ttemplate: {\n\t\t\tmetadata: labels: - {\n\t\t\t\t\"app.oam.dev/component\": context.name\n\t\t\t}\n\n\t\t\tspec: - {\n\t\t\t\tcontainers: [{\n\t\t\t\t\tname: context.name\n\t\t\t\t\timage: - parameter.image\n\n\t\t\t\t\tif parameter.cmd != _|_ {\n\t\t\t\t\t\tcommand: - parameter.cmd\n\t\t\t\t\t}\n\t\t\t\t\tif parameter.args != _|_ {\n\t\t\t\t\t\targs: - parameter.args\n\t\t\t\t\t}\n\t\t\t\t\tif parameter.env != _|_ {\n\t\t\t\t\t\tenv: - parameter.env\n\t\t\t\t\t}\n\n\t\t\t\t\tif context.config != _|_ - {\n\t\t\t\t\t\tenv: context.config\n\t\t\t\t\t}\n\n\t\t\t\t\tif - parameter[\"imagePullPolicy\"] != _|_ {\n\t\t\t\t\t\timagePullPolicy: - parameter.imagePullPolicy\n\t\t\t\t\t}\n\n\t\t\t\t\tports: [{\n\t\t\t\t\t\tcontainerPort: - parameter.port\n\t\t\t\t\t}]\n\n\t\t\t\t\tif parameter[\"cpu\"] - != _|_ {\n\t\t\t\t\t\tresources: {\n\t\t\t\t\t\t\tlimits: cpu: parameter.cpu\n\t\t\t\t\t\t\trequests: - cpu: parameter.cpu\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif parameter[\"memory\"] - != _|_ {\n\t\t\t\t\t\tresources: {\n\t\t\t\t\t\t\tlimits: memory: - \ parameter.memory\n\t\t\t\t\t\t\trequests: memory: parameter.memory\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif - parameter[\"livenessProbe\"] != _|_ {\n\t\t\t\t\t\tlivenessProbe: - parameter.livenessProbe\n\t\t\t\t\t}\n\n\t\t\t\t\tif parameter[\"readinessProbe\"] - != _|_ {\n\t\t\t\t\t\treadinessProbe: parameter.readinessProbe\n\t\t\t\t\t}\n\n\t\t\t\t\tlifecycle: - {\n\t\t\t\t\t\tif parameter.postStart != _|_ {\n\t\t\t\t\t\t\tpostStart: - exec: command: parameter.postStart\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif - parameter.preStop != _|_ {\n\t\t\t\t\t\t\tpreStop: exec: command: - parameter.preStop\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}]\n\t\t\t\tif - parameter.hostAliases != _|_ {\n\t\t\t\t\thostAliases: parameter.hostAliases\n\t\t\t\t}\n\t\t\t\tif - parameter[\"imagePullSecrets\"] != _|_ {\n\t\t\t\t\timagePullSecrets: - [ for v in parameter.imagePullSecrets {name: v}]\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif - parameter.updateStrategyType != _|_ {\n\t\t\tupdateStrategy: {\n\t\t\t\ttype: - parameter.updateStrategyType\n\t\t\t}\n\t\t}\n\t}\n}\nparameter: - {\n\t// +usage=Which image would you like to use for your service\n\t// - +short=i\n\timage: string\n\n\t// +usage=Specify image pull policy - for your service\n\timagePullPolicy?: string\n\n\t// +usage=Specify - image pull secrets for your service\n\timagePullSecrets?: [...string]\n\n\t// - +usage=Number of CPU units for the service, like `0.5` (0.5 CPU - core), `1` (1 CPU core)\n\tcpu?: string\n\n\t// +usage=Specify the - amount of memory to limit\n\tmemory?: *\"2048Mi\" | =~\"^([1-9][0-9]{0,63})(E|P|T|G|M|K|Ei|Pi|Ti|Gi|Mi|Ki)$\"\n\n\t// - +usage=Commands to run in the container\n\tcmd?: [...string]\n\n\t// - +usage=Arguments to the command.\n\targs?: [...string]\n\n\t// +usage=postStart - commands will be called immediately after a container is created.\n\tpostStart?: - [...string]\n\n\t// +usage=PreStop is called immediately before - a container is terminated due to an API request or management event - such as liveness/startup probe failure, preemption, resource contention, - etc. The handler is not called if the container crashes or exits. - The reason for termination is passed to the handler. The Pod's termination - grace period countdown begins before the PreStop hooked is executed. - Regardless of the outcome of the handler, the container will eventually - terminate within the Pod's termination grace period. Other management - of the container blocks until the hook completes or until the termination - grace period is reached. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\n\tpreStop?: - [...string]\n\n\t// +usage=Which port do you want customer traffic - sent to\n\t// +short=p\n\tport: *80 | int\n\n\t// +usage=Define - arguments by using environment variables\n\tenv?: [...#ENV]\n\n\t// - +usage=Cloneset updateStrategy, candidates are `ReCreate`/`InPlaceIfPossible`/`InPlaceOnly`\n\tupdateStrategyType?: - string\n\n\t// +usage=HostAliases is a list of hosts and IPs that - will be write into the pod's hosts file\n\thostAliases?: [...{\n\t\thostnames: - [...string]\n\t\tip: string\n\t}]\n\n\t// +usage=Instructions for - assessing whether the container is alive.\n\tlivenessProbe?: #HealthProbe\n\n\t// - +usage=Instructions for assessing whether the container is in a - suitable state to serve traffic.\n\treadinessProbe?: #HealthProbe\n}\n\n#ENV: - {\n\t// +usage=Environment variable name\n\tname: string\n\t// +usage=The - value of the environment variable\n\tvalue?: string\n\t// +usage=Specifies - a source the value of this var should come from\n\tvalueFrom?: {\n\t\t// - +usage=Selects a key of a secret in the pod's namespace\n\t\tsecretKeyRef: - {\n\t\t\t// +usage=The name of the secret in the pod's namespace - to select from\n\t\t\tname: string\n\t\t\t// +usage=The key of the - secret to select from. Must be a valid secret key\n\t\t\tkey: string\n\t\t}\n\t}\n}\n\n#HealthProbe: - {\n\n\t// +usage=Instructions for assessing container health by - executing a command. Either this attribute or the httpGet attribute - or the tcpSocket attribute MUST be specified. This attribute is - mutually exclusive with both the httpGet attribute and the tcpSocket - attribute.\n\texec?: {\n\t\t// +usage=A command to be executed inside - the container to assess its health. Each space delimited token of - the command is a separate array element. Commands exiting 0 are - considered to be successful probes, whilst all other exit codes - are considered failures.\n\t\tcommand: [...string]\n\t}\n\n\t// - +usage=Instructions for assessing container health by executing - an HTTP GET request. Either this attribute or the exec attribute - or the tcpSocket attribute MUST be specified. This attribute is - mutually exclusive with both the exec attribute and the tcpSocket - attribute.\n\thttpGet?: {\n\t\t// +usage=The endpoint, relative - to the port, to which the HTTP GET request should be directed.\n\t\tpath: - string\n\t\t// +usage=The TCP socket within the container to which - the HTTP GET request should be directed.\n\t\tport: int\n\t\thttpHeaders?: - [...{\n\t\t\tname: string\n\t\t\tvalue: string\n\t\t}]\n\t}\n\n\t// - +usage=Instructions for assessing container health by probing a - TCP socket. Either this attribute or the exec attribute or the httpGet - attribute MUST be specified. This attribute is mutually exclusive - with both the exec attribute and the httpGet attribute.\n\ttcpSocket?: - {\n\t\t// +usage=The TCP socket within the container that should - be probed to assess container health.\n\t\tport: int\n\t}\n\n\t// - +usage=Number of seconds after the container is started before the - first probe is initiated.\n\tinitialDelaySeconds: *0 | int\n\n\t// - +usage=How often, in seconds, to execute the probe.\n\tperiodSeconds: - *10 | int\n\n\t// +usage=Number of seconds after which the probe - times out.\n\ttimeoutSeconds: *1 | int\n\n\t// +usage=Minimum consecutive - successes for the probe to be considered successful after having - failed.\n\tsuccessThreshold: *1 | int\n\n\t// +usage=Number of consecutive - failures required to determine the container is not alive (liveness - probe) or not ready (readiness probe).\n\tfailureThreshold: *3 | - int\n} \n" - workload: - definition: - apiVersion: apps.kruise.io/v1alpha1 - kind: CloneSet - type: raw - - name: predownloadimage - properties: - apiVersion: core.oam.dev/v1beta1 - kind: WorkflowStepDefinition - metadata: - name: predownloadimage - spec: - schematic: - cue: - template: "import (\"vela/op\")\nparameter: {\n image: string\n parallel: - int\n kvs: [string]: string\n type: *\"Always\" | string\n activeDeadlineSeconds: - *1200 | int\n ttlSecondsAfterFinished: *300 | int\n backoffLimit?: - int\n timeoutSeconds?: int\n arr: [...string]\n}\n\npullImageJob: - op.#Apply & {\n value:{\n apiVersion: \"apps.kruise.io/v1alpha1\"\n - \ kind: \"ImagePullJob\"\n metadata: {\n name: \"pull-image-job\"\n - \ }\n spec: {\n image: parameter.image\n parallelism: - parameter.parallel\n selector: matchLabels: parameter.kvs\n - \ completionPolicy: {\n type: parameter.type\n activeDeadlineSeconds: - parameter.activeDeadlineSeconds\n ttlSecondsAfterFinished: - parameter.ttlSecondsAfterFinished\n }\n pullPolicy: {\n - \ if parameter.backoffLimit != _|_ {\n backoffLimit: - parameter.backoffLimit\n }\n if parameter.timeoutSeconds - != _|_ {\n timeoutSeconds: parameter.timeoutSeconds\n }\n - \ }\n pullSecrets: parameter.arr\n } \n } - \ \n} \n" - type: raw - status: - rollout: - batchRollingState: "" - currentBatch: 0 - lastTargetAppRevision: "" - rollingState: "" - upgradedReadyReplicas: 0 - upgradedReplicas: 0 - dependsOn: - - ref: + components: + - name: kruise + properties: + chart: ./charts/kruise/v0.9.0 + git: + branch: master + repoType: git + url: https://github.com/openkruise/kruise + values: + featureGates: PreDownloadImageForInPlaceUpdate=true + type: helm + - name: cloneset + properties: apiVersion: core.oam.dev/v1beta1 - kind: Initializer - name: fluxcd - namespace: vela-system + kind: ComponentDefinition + metadata: + annotations: + definition.oam.dev/description: Describes long-running, scalable, containerized + services that have a stable network endpoint to receive external network + traffic from customers. If workload type is skipped for any service defined + in Appfile, it will be defaulted to `webservice` type. + name: cloneset + namespace: vela-system + spec: + schematic: + cue: + template: "output: {\n\tapiVersion: \"apps.kruise.io/v1alpha1\"\n\tkind: + \ \"CloneSet\"\n\tmetadata: labels: {\n\t\t\"app.oam.dev/component\": + context.name\n\t}\n\tspec: {\n\t\tselector: matchLabels: {\n\t\t\t\"app.oam.dev/component\": + context.name\n\t\t}\n\n\t\ttemplate: {\n\t\t\tmetadata: labels: {\n\t\t\t\t\"app.oam.dev/component\": + context.name\n\t\t\t}\n\n\t\t\tspec: {\n\t\t\t\tcontainers: [{\n\t\t\t\t\tname: + \ context.name\n\t\t\t\t\timage: parameter.image\n\n\t\t\t\t\tif parameter.cmd + != _|_ {\n\t\t\t\t\t\tcommand: parameter.cmd\n\t\t\t\t\t}\n\t\t\t\t\tif + parameter.args != _|_ {\n\t\t\t\t\t\targs: parameter.args\n\t\t\t\t\t}\n\t\t\t\t\tif + parameter.env != _|_ {\n\t\t\t\t\t\tenv: parameter.env\n\t\t\t\t\t}\n\n\t\t\t\t\tif + context.config != _|_ {\n\t\t\t\t\t\tenv: context.config\n\t\t\t\t\t}\n\n\t\t\t\t\tif + parameter[\"imagePullPolicy\"] != _|_ {\n\t\t\t\t\t\timagePullPolicy: + parameter.imagePullPolicy\n\t\t\t\t\t}\n\n\t\t\t\t\tports: [{\n\t\t\t\t\t\tcontainerPort: + parameter.port\n\t\t\t\t\t}]\n\n\t\t\t\t\tif parameter[\"cpu\"] != _|_ + {\n\t\t\t\t\t\tresources: {\n\t\t\t\t\t\t\tlimits: cpu: parameter.cpu\n\t\t\t\t\t\t\trequests: + cpu: parameter.cpu\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif parameter[\"memory\"] + != _|_ {\n\t\t\t\t\t\tresources: {\n\t\t\t\t\t\t\tlimits: memory: parameter.memory\n\t\t\t\t\t\t\trequests: + memory: parameter.memory\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif + parameter[\"livenessProbe\"] != _|_ {\n\t\t\t\t\t\tlivenessProbe: parameter.livenessProbe\n\t\t\t\t\t}\n\n\t\t\t\t\tif + parameter[\"readinessProbe\"] != _|_ {\n\t\t\t\t\t\treadinessProbe: + parameter.readinessProbe\n\t\t\t\t\t}\n\n\t\t\t\t\tlifecycle: {\n\t\t\t\t\t\tif + parameter.postStart != _|_ {\n\t\t\t\t\t\t\tpostStart: exec: command: + parameter.postStart\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif parameter.preStop + != _|_ {\n\t\t\t\t\t\t\tpreStop: exec: command: parameter.preStop\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}]\n\t\t\t\tif + parameter.hostAliases != _|_ {\n\t\t\t\t\thostAliases: parameter.hostAliases\n\t\t\t\t}\n\t\t\t\tif + parameter[\"imagePullSecrets\"] != _|_ {\n\t\t\t\t\timagePullSecrets: + [ for v in parameter.imagePullSecrets {name: v}]\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif + parameter.updateStrategyType != _|_ {\n\t\t\tupdateStrategy: {\n\t\t\t\ttype: + parameter.updateStrategyType\n\t\t\t}\n\t\t}\n\t}\n}\nparameter: {\n\t// + +usage=Which image would you like to use for your service\n\t// +short=i\n\timage: + string\n\n\t// +usage=Specify image pull policy for your service\n\timagePullPolicy?: + string\n\n\t// +usage=Specify image pull secrets for your service\n\timagePullSecrets?: + [...string]\n\n\t// +usage=Number of CPU units for the service, like + `0.5` (0.5 CPU core), `1` (1 CPU core)\n\tcpu?: string\n\n\t// +usage=Specify + the amount of memory to limit\n\tmemory?: *\"2048Mi\" | =~\"^([1-9][0-9]{0,63})(E|P|T|G|M|K|Ei|Pi|Ti|Gi|Mi|Ki)$\"\n\n\t// + +usage=Commands to run in the container\n\tcmd?: [...string]\n\n\t// + +usage=Arguments to the command.\n\targs?: [...string]\n\n\t// +usage=postStart + commands will be called immediately after a container is created.\n\tpostStart?: + [...string]\n\n\t// +usage=PreStop is called immediately before a container + is terminated due to an API request or management event such as liveness/startup + probe failure, preemption, resource contention, etc. The handler is + not called if the container crashes or exits. The reason for termination + is passed to the handler. The Pod's termination grace period countdown + begins before the PreStop hooked is executed. Regardless of the outcome + of the handler, the container will eventually terminate within the Pod's + termination grace period. Other management of the container blocks until + the hook completes or until the termination grace period is reached. + More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks\n\tpreStop?: + [...string]\n\n\t// +usage=Which port do you want customer traffic sent + to\n\t// +short=p\n\tport: *80 | int\n\n\t// +usage=Define arguments + by using environment variables\n\tenv?: [...#ENV]\n\n\t// +usage=Cloneset + updateStrategy, candidates are `ReCreate`/`InPlaceIfPossible`/`InPlaceOnly`\n\tupdateStrategyType?: + string\n\n\t// +usage=HostAliases is a list of hosts and IPs that will + be write into the pod's hosts file\n\thostAliases?: [...{\n\t\thostnames: + [...string]\n\t\tip: string\n\t}]\n\n\t// +usage=Instructions for assessing + whether the container is alive.\n\tlivenessProbe?: #HealthProbe\n\n\t// + +usage=Instructions for assessing whether the container is in a suitable + state to serve traffic.\n\treadinessProbe?: #HealthProbe\n}\n\n#ENV: + {\n\t// +usage=Environment variable name\n\tname: string\n\t// +usage=The + value of the environment variable\n\tvalue?: string\n\t// +usage=Specifies + a source the value of this var should come from\n\tvalueFrom?: {\n\t\t// + +usage=Selects a key of a secret in the pod's namespace\n\t\tsecretKeyRef: + {\n\t\t\t// +usage=The name of the secret in the pod's namespace to + select from\n\t\t\tname: string\n\t\t\t// +usage=The key of the secret + to select from. Must be a valid secret key\n\t\t\tkey: string\n\t\t}\n\t}\n}\n\n#HealthProbe: + {\n\n\t// +usage=Instructions for assessing container health by executing + a command. Either this attribute or the httpGet attribute or the tcpSocket + attribute MUST be specified. This attribute is mutually exclusive with + both the httpGet attribute and the tcpSocket attribute.\n\texec?: {\n\t\t// + +usage=A command to be executed inside the container to assess its health. + Each space delimited token of the command is a separate array element. + Commands exiting 0 are considered to be successful probes, whilst all + other exit codes are considered failures.\n\t\tcommand: [...string]\n\t}\n\n\t// + +usage=Instructions for assessing container health by executing an HTTP + GET request. Either this attribute or the exec attribute or the tcpSocket + attribute MUST be specified. This attribute is mutually exclusive with + both the exec attribute and the tcpSocket attribute.\n\thttpGet?: {\n\t\t// + +usage=The endpoint, relative to the port, to which the HTTP GET request + should be directed.\n\t\tpath: string\n\t\t// +usage=The TCP socket + within the container to which the HTTP GET request should be directed.\n\t\tport: + int\n\t\thttpHeaders?: [...{\n\t\t\tname: string\n\t\t\tvalue: string\n\t\t}]\n\t}\n\n\t// + +usage=Instructions for assessing container health by probing a TCP + socket. Either this attribute or the exec attribute or the httpGet attribute + MUST be specified. This attribute is mutually exclusive with both the + exec attribute and the httpGet attribute.\n\ttcpSocket?: {\n\t\t// +usage=The + TCP socket within the container that should be probed to assess container + health.\n\t\tport: int\n\t}\n\n\t// +usage=Number of seconds after the + container is started before the first probe is initiated.\n\tinitialDelaySeconds: + *0 | int\n\n\t// +usage=How often, in seconds, to execute the probe.\n\tperiodSeconds: + *10 | int\n\n\t// +usage=Number of seconds after which the probe times + out.\n\ttimeoutSeconds: *1 | int\n\n\t// +usage=Minimum consecutive + successes for the probe to be considered successful after having failed.\n\tsuccessThreshold: + *1 | int\n\n\t// +usage=Number of consecutive failures required to determine + the container is not alive (liveness probe) or not ready (readiness + probe).\n\tfailureThreshold: *3 | int\n} \n" + workload: + definition: + apiVersion: apps.kruise.io/v1alpha1 + kind: CloneSet + type: raw + - name: predownloadimage + properties: + apiVersion: core.oam.dev/v1beta1 + kind: WorkflowStepDefinition + metadata: + name: predownloadimage + spec: + schematic: + cue: + template: "import (\"vela/op\")\nparameter: {\n image: string\n parallel: + int\n kvs: [string]: string\n type: *\"Always\" | string\n activeDeadlineSeconds: + *1200 | int\n ttlSecondsAfterFinished: *300 | int\n backoffLimit?: + int\n timeoutSeconds?: int\n arr: [...string]\n}\n\npullImageJob: + op.#Apply & {\n value:{\n apiVersion: \"apps.kruise.io/v1alpha1\"\n + \ kind: \"ImagePullJob\"\n metadata: {\n name: \"pull-image-job\"\n + \ }\n spec: {\n image: parameter.image\n parallelism: + parameter.parallel\n selector: matchLabels: parameter.kvs\n completionPolicy: + {\n type: parameter.type\n activeDeadlineSeconds: parameter.activeDeadlineSeconds\n + \ ttlSecondsAfterFinished: parameter.ttlSecondsAfterFinished\n + \ }\n pullPolicy: {\n if parameter.backoffLimit != _|_ + {\n backoffLimit: parameter.backoffLimit\n }\n if + parameter.timeoutSeconds != _|_ {\n timeoutSeconds: parameter.timeoutSeconds\n + \ }\n }\n pullSecrets: parameter.arr\n } \n + \ } \n} \n" + type: raw + workflow: + steps: + - name: checking-depends-on + properties: + name: fluxcd + namespace: vela-system + type: depends-on-app + - name: apply-resources + type: apply-application status: - observedGeneration: 0 + rollout: + batchRollingState: "" + currentBatch: 0 + lastTargetAppRevision: "" + rollingState: "" + upgradedReadyReplicas: 0 + upgradedReplicas: 0 diff --git a/vela-templates/addons/auto-gen/ns-flux-system.yaml b/vela-templates/addons/auto-gen/ns-flux-system.yaml deleted file mode 100644 index cad9fd637..000000000 --- a/vela-templates/addons/auto-gen/ns-flux-system.yaml +++ /dev/null @@ -1,28 +0,0 @@ -apiVersion: core.oam.dev/v1beta1 -kind: Initializer -metadata: - annotations: - addons.oam.dev/description: Create namespace for flux-system - name: ns-flux-system - namespace: vela-system -spec: - appTemplate: - spec: - components: - - name: flux-system - properties: - apiVersion: v1 - kind: Namespace - metadata: - name: flux-system - type: raw - status: - rollout: - batchRollingState: "" - currentBatch: 0 - lastTargetAppRevision: "" - rollingState: "" - upgradedReadyReplicas: 0 - upgradedReplicas: 0 -status: - observedGeneration: 0 diff --git a/vela-templates/addons/auto-gen/ns-istio-system.yaml b/vela-templates/addons/auto-gen/ns-istio-system.yaml deleted file mode 100644 index 3b639d8bf..000000000 --- a/vela-templates/addons/auto-gen/ns-istio-system.yaml +++ /dev/null @@ -1,28 +0,0 @@ -apiVersion: core.oam.dev/v1beta1 -kind: Initializer -metadata: - annotations: - addons.oam.dev/description: Create namespace for istio-system - name: ns-istio-system - namespace: vela-system -spec: - appTemplate: - spec: - components: - - name: istio-system - properties: - apiVersion: v1 - kind: Namespace - metadata: - name: istio-system - type: raw - status: - rollout: - batchRollingState: "" - currentBatch: 0 - lastTargetAppRevision: "" - rollingState: "" - upgradedReadyReplicas: 0 - upgradedReplicas: 0 -status: - observedGeneration: 0 diff --git a/vela-templates/addons/auto-gen/observability-asset.yaml b/vela-templates/addons/auto-gen/observability-asset.yaml deleted file mode 100644 index 362ea6c95..000000000 --- a/vela-templates/addons/auto-gen/observability-asset.yaml +++ /dev/null @@ -1,116 +0,0 @@ -apiVersion: core.oam.dev/v1beta1 -kind: Initializer -metadata: - annotations: - addons.oam.dev/description: Preparations that observability need - name: observability-asset - namespace: vela-system -spec: - appTemplate: - spec: - components: - - name: observability - properties: - apiVersion: v1 - kind: Namespace - metadata: - name: observability - type: raw - - name: import-grafana-dashboard - properties: - apiVersion: core.oam.dev/v1beta1 - kind: TraitDefinition - metadata: - annotations: - definition.oam.dev/description: Import dashboards to Grafana - name: import-grafana-dashboard - namespace: vela-system - spec: - schematic: - cue: - template: "outputs: registerdatasource: {\n\tapiVersion: \"grafana.extension.oam.dev/v1alpha1\"\n\tkind: - \ \"ImportDashboard\"\n\tspec: {\n\t\tgrafana: {\n\t\t\tservice: - \ parameter.grafanaServiceName\n\t\t\tnamespace: - \ parameter.grafanaServiceNamespace\n\t\t\tcredentialSecret: - \ parameter.credentialSecret\n\t\t\tcredentialSecretNamespace: - parameter.credentialSecretNamespace\n\t\t}\n\t\turls: parameter.urls\n\t}\n}\nparameter: - {\n\tgrafanaServiceName: string\n\tgrafanaServiceNamespace: - \ *\"default\" | string\n\tcredentialSecret: string\n\tcredentialSecretNamespace: - *\"default\" | string\n\turls: [...string]\n} \n" - type: raw - - name: pure-ingress - properties: - apiVersion: core.oam.dev/v1beta1 - kind: TraitDefinition - metadata: - annotations: - definition.oam.dev/description: Enable public web traffic for the component - without creating a Service. - name: pure-ingress - namespace: vela-system - spec: - schematic: - cue: - template: "\noutputs: ingress: {\n\tapiVersion: \"networking.k8s.io/v1beta1\"\n\tkind: - \ \"Ingress\"\n\tmetadata:\n\t\tname: context.name\n\tspec: - {\n\t\trules: [{\n\t\t\thost: parameter.domain\n\t\t\thttp: {\n\t\t\t\tpaths: - [\n\t\t\t\t\tfor k, v in parameter.http {\n\t\t\t\t\t\tpath: k\n\t\t\t\t\t\tbackend: - {\n\t\t\t\t\t\t\tserviceName: context.name\n\t\t\t\t\t\t\tservicePort: - v\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t]\n\t\t\t}\n\t\t}]\n\t}\n}\n\nparameter: - {\n\t// +usage=Specify the domain you want to expose\n\tdomain: - string\n\n\t// +usage=Specify the mapping relationship between the - http path and the workload port\n\thttp: [string]: int\n}\n" - status: - customStatus: |- - let igs = context.outputs.ingress.status.loadBalancer.ingress - if igs == _|_ { - message: "No loadBalancer found, visiting by using 'vela port-forward " + context.appName + " --route'\n" - } - if len(igs) > 0 { - if igs[0].ip != _|_ { - message: "Visiting URL: " + context.outputs.ingress.spec.rules[0].host + ", IP: " + igs[0].ip - } - if igs[0].ip == _|_ { - message: "Visiting URL: " + context.outputs.ingress.spec.rules[0].host - } - } - healthPolicy: | - isHealth: len(context.outputs.ingress.status.loadBalancer.ingress) > 0 - type: raw - - name: register-grafana-datasource - properties: - apiVersion: core.oam.dev/v1beta1 - kind: TraitDefinition - metadata: - annotations: - definition.oam.dev/description: Add a datasource to Grafana - name: register-grafana-datasource - namespace: vela-system - spec: - schematic: - cue: - template: "outputs: registerdatasource: {\n\tapiVersion: \"grafana.extension.oam.dev/v1alpha1\"\n\tkind: - \ \"DatasourceRegistration\"\n\tspec: {\n\t\tgrafana: {\n\t\t\tservice: - \ parameter.grafanaServiceName\n\t\t\tnamespace: - \ parameter.grafanaServiceNamespace\n\t\t\tcredentialSecret: - \ parameter.credentialSecret\n\t\t\tcredentialSecretNamespace: - parameter.credentialSecretNamespace\n\t\t}\n\t\tdatasource: {\n\t\t\tname: - \ parameter.name\n\t\t\ttype: parameter.type\n\t\t\taccess: - \ parameter.access\n\t\t\tservice: parameter.service\n\t\t\tnamespace: - parameter.namespace\n\t\t}\n\t}\n}\n\nparameter: {\n\tgrafanaServiceName: - \ string\n\tgrafanaServiceNamespace: *\"default\" | string\n\tcredentialSecret: - \ string\n\tcredentialSecretNamespace: string\n\tname: string\n\ttype: - \ string\n\taccess: *\"proxy\" - | string\n\tservice: string\n\tnamespace: *\"default\" - | string\n}\n" - type: raw - status: - rollout: - batchRollingState: "" - currentBatch: 0 - lastTargetAppRevision: "" - rollingState: "" - upgradedReadyReplicas: 0 - upgradedReplicas: 0 -status: - observedGeneration: 0 diff --git a/vela-templates/addons/auto-gen/observability.yaml b/vela-templates/addons/auto-gen/observability.yaml index 5d0222a73..9bde345f0 100644 --- a/vela-templates/addons/auto-gen/observability.yaml +++ b/vela-templates/addons/auto-gen/observability.yaml @@ -1,135 +1,237 @@ apiVersion: core.oam.dev/v1beta1 -kind: Initializer +kind: Application metadata: annotations: addons.oam.dev/description: An out of the box solution for KubeVela observability name: observability - namespace: observability + namespace: vela-system spec: - appTemplate: - spec: - components: - - name: grafana-registration - properties: - chart: ./chart - git: - branch: master - repoType: git - targetNamespace: observability - url: https://github.com/oam-dev/grafana-registration - values: - replicaCount: 1 - type: helm - - name: grafana - properties: - chart: grafana - releaseName: grafana - repoType: helm - targetNamespace: observability - url: https://charts.kubevela.net/addons - version: 6.14.1 - traits: - - properties: - domain: '[[ index .Args "grafana-domain" ]]' - http: - /: 80 - type: pure-ingress - - properties: - credentialSecret: grafana - credentialSecretNamespace: observability - grafanaServiceName: grafana - grafanaServiceNamespace: observability - urls: - - https://charts.kubevela.net/addons/dashboards/kubevela_core_logging.json - - https://charts.kubevela.net/addons/dashboards/kubevela_core_monitoring.json - - https://charts.kubevela.net/addons/dashboards/kubevela_application_logging.json - - https://charts.kubevela.net/addons/dashboards/flux2/cluster.json - type: import-grafana-dashboard - type: helm - - name: loki - properties: - chart: loki-stack - releaseName: loki - repoType: helm - targetNamespace: observability - url: https://charts.kubevela.net/addons - version: 2.4.1 - traits: - - properties: - access: proxy - credentialSecret: grafana - credentialSecretNamespace: observability - grafanaServiceName: grafana - grafanaServiceNamespace: observability - name: loki - namespace: observability - service: loki - type: loki - type: register-grafana-datasource - type: helm - - name: prometheus-server - properties: - chart: prometheus - releaseName: prometheus - repoType: helm - targetNamespace: observability - url: https://charts.kubevela.net/addons - values: - alertmanager: - persistentVolume: - enabled: '[[ index .Args "alertmanager-pvc-enabled" | default "true" - ]]' - size: '[[ index .Args "alertmanager-pvc-size" | default "20Gi" ]]' - storageClass: '[[ index .Args "alertmanager-pvc-class" ]]' - server: - persistentVolume: - enabled: '[[ index .Args "server-pvc-enabled" | default "true" ]]' - size: '[[ index .Args "server-pvc-size" | default "20Gi" ]]' - storageClass: '[[ index .Args "server-pvc-class" ]]' - version: 14.4.1 - traits: - - properties: - access: proxy - credentialSecret: grafana - credentialSecretNamespace: observability - grafanaServiceName: grafana - grafanaServiceNamespace: observability - name: prometheus - namespace: observability - service: prometheus-server - type: prometheus - type: register-grafana-datasource - type: helm - - name: kube-state-metrics - properties: - chart: kube-state-metrics - repoType: helm - targetNamespace: observability - url: https://charts.kubevela.net/addons - values: - image: - repository: oamdev/kube-state-metrics - tag: v2.1.0 - version: 3.4.1 - type: helm - status: - rollout: - batchRollingState: "" - currentBatch: 0 - lastTargetAppRevision: "" - rollingState: "" - upgradedReadyReplicas: 0 - upgradedReplicas: 0 - dependsOn: - - ref: + components: + - name: ns-observability + properties: + apiVersion: v1 + kind: Namespace + metadata: + name: observability + type: raw + - name: import-grafana-dashboard-traitdef + properties: apiVersion: core.oam.dev/v1beta1 - kind: Initializer - name: fluxcd - namespace: vela-system - - ref: + kind: TraitDefinition + metadata: + annotations: + definition.oam.dev/description: Import dashboards to Grafana + name: import-grafana-dashboard + namespace: vela-system + spec: + schematic: + cue: + template: "outputs: registerdatasource: {\n\tapiVersion: \"grafana.extension.oam.dev/v1alpha1\"\n\tkind: + \ \"ImportDashboard\"\n\tspec: {\n\t\tgrafana: {\n\t\t\tservice: + \ parameter.grafanaServiceName\n\t\t\tnamespace: parameter.grafanaServiceNamespace\n\t\t\tcredentialSecret: + \ parameter.credentialSecret\n\t\t\tcredentialSecretNamespace: + parameter.credentialSecretNamespace\n\t\t}\n\t\turls: parameter.urls\n\t}\n}\nparameter: + {\n\tgrafanaServiceName: string\n\tgrafanaServiceNamespace: *\"default\" + | string\n\tcredentialSecret: string\n\tcredentialSecretNamespace: + *\"default\" | string\n\turls: [...string]\n}\n" + type: raw + - name: pure-ingress-traitdef + properties: apiVersion: core.oam.dev/v1beta1 - kind: Initializer - name: observability-asset - namespace: vela-system + kind: TraitDefinition + metadata: + annotations: + definition.oam.dev/description: Enable public web traffic for the component + without creating a Service. + name: pure-ingress + namespace: vela-system + spec: + schematic: + cue: + template: "\noutputs: ingress: {\n\tapiVersion: \"networking.k8s.io/v1beta1\"\n\tkind: + \ \"Ingress\"\n\tmetadata:\n\t\tname: context.name\n\tspec: {\n\t\trules: + [{\n\t\t\thost: parameter.domain\n\t\t\thttp: {\n\t\t\t\tpaths: [\n\t\t\t\t\tfor + k, v in parameter.http {\n\t\t\t\t\t\tpath: k\n\t\t\t\t\t\tbackend: + {\n\t\t\t\t\t\t\tserviceName: context.name\n\t\t\t\t\t\t\tservicePort: + v\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t]\n\t\t\t}\n\t\t}]\n\t}\n}\n\nparameter: + {\n\t// +usage=Specify the domain you want to expose\n\tdomain: string\n\n\t// + +usage=Specify the mapping relationship between the http path and the + workload port\n\thttp: [string]: int\n}\n" + status: + customStatus: |- + let igs = context.outputs.ingress.status.loadBalancer.ingress + if igs == _|_ { + message: "No loadBalancer found, visiting by using 'vela port-forward " + context.appName + " --route'\n" + } + if len(igs) > 0 { + if igs[0].ip != _|_ { + message: "Visiting URL: " + context.outputs.ingress.spec.rules[0].host + ", IP: " + igs[0].ip + } + if igs[0].ip == _|_ { + message: "Visiting URL: " + context.outputs.ingress.spec.rules[0].host + } + } + healthPolicy: | + isHealth: len(context.outputs.ingress.status.loadBalancer.ingress) > 0 + type: raw + - name: register-grafana-datasource-traitdef + properties: + apiVersion: core.oam.dev/v1beta1 + kind: TraitDefinition + metadata: + annotations: + definition.oam.dev/description: Add a datasource to Grafana + name: register-grafana-datasource + namespace: vela-system + spec: + schematic: + cue: + template: "outputs: registerdatasource: {\n\tapiVersion: \"grafana.extension.oam.dev/v1alpha1\"\n\tkind: + \ \"DatasourceRegistration\"\n\tspec: {\n\t\tgrafana: {\n\t\t\tservice: + \ parameter.grafanaServiceName\n\t\t\tnamespace: parameter.grafanaServiceNamespace\n\t\t\tcredentialSecret: + \ parameter.credentialSecret\n\t\t\tcredentialSecretNamespace: + parameter.credentialSecretNamespace\n\t\t}\n\t\tdatasource: {\n\t\t\tname: + \ parameter.name\n\t\t\ttype: parameter.type\n\t\t\taccess: + \ parameter.access\n\t\t\tservice: parameter.service\n\t\t\tnamespace: + parameter.namespace\n\t\t}\n\t}\n}\n\nparameter: {\n\tgrafanaServiceName: + \ string\n\tgrafanaServiceNamespace: *\"default\" | string\n\tcredentialSecret: + \ string\n\tcredentialSecretNamespace: string\n\tname: string\n\ttype: + \ string\n\taccess: *\"proxy\" + | string\n\tservice: string\n\tnamespace: *\"default\" + | string\n}\n" + type: raw + - name: grafana-registration + properties: + chart: ./chart + git: + branch: master + repoType: git + targetNamespace: observability + url: https://github.com/oam-dev/grafana-registration + values: + replicaCount: 1 + type: helm + - name: grafana + properties: + chart: grafana + releaseName: grafana + repoType: helm + targetNamespace: observability + url: https://charts.kubevela.net/addons + version: 6.14.1 + traits: + - properties: + domain: '[[ index .Args "grafana-domain" ]]' + http: + /: 80 + type: pure-ingress + - properties: + credentialSecret: grafana + credentialSecretNamespace: observability + grafanaServiceName: grafana + grafanaServiceNamespace: observability + urls: + - https://charts.kubevela.net/addons/dashboards/kubevela_core_logging.json + - https://charts.kubevela.net/addons/dashboards/kubevela_core_monitoring.json + - https://charts.kubevela.net/addons/dashboards/kubevela_application_logging.json + - https://charts.kubevela.net/addons/dashboards/flux2/cluster.json + type: import-grafana-dashboard + type: helm + - name: loki + properties: + chart: loki-stack + releaseName: loki + repoType: helm + targetNamespace: observability + url: https://charts.kubevela.net/addons + version: 2.4.1 + traits: + - properties: + access: proxy + credentialSecret: grafana + credentialSecretNamespace: observability + grafanaServiceName: grafana + grafanaServiceNamespace: observability + name: loki + namespace: observability + service: loki + type: loki + type: register-grafana-datasource + type: helm + - name: prometheus-server + properties: + chart: prometheus + releaseName: prometheus + repoType: helm + targetNamespace: observability + url: https://charts.kubevela.net/addons + values: + alertmanager: + persistentVolume: + enabled: '[[ index .Args "alertmanager-pvc-enabled" | default "true" ]]' + size: '[[ index .Args "alertmanager-pvc-size" | default "20Gi" ]]' + storageClass: '[[ index .Args "alertmanager-pvc-class" ]]' + server: + persistentVolume: + enabled: '[[ index .Args "server-pvc-enabled" | default "true" ]]' + size: '[[ index .Args "server-pvc-size" | default "20Gi" ]]' + storageClass: '[[ index .Args "server-pvc-class" ]]' + version: 14.4.1 + traits: + - properties: + access: proxy + credentialSecret: grafana + credentialSecretNamespace: observability + grafanaServiceName: grafana + grafanaServiceNamespace: observability + name: prometheus + namespace: observability + service: prometheus-server + type: prometheus + type: register-grafana-datasource + type: helm + - name: kube-state-metrics + properties: + chart: kube-state-metrics + repoType: helm + targetNamespace: observability + url: https://charts.kubevela.net/addons + values: + image: + repository: oamdev/kube-state-metrics + tag: v2.1.0 + version: 3.4.1 + type: helm + workflow: + steps: + - name: checking-depends-on + properties: + name: fluxcd + namespace: vela-system + type: depends-on-app + - name: apply-ns + properties: + component: ns-observability + type: apply-component + - name: apply-trait-1 + properties: + component: import-grafana-dashboard-traitdef + type: apply-component + - name: apply-trait-2 + properties: + component: pure-ingress-traitdef + type: apply-component + - name: apply-trait-3 + properties: + component: register-grafana-datasource-traitdef + type: apply-component + - name: apply-resources + type: apply-remaining status: - observedGeneration: 0 + rollout: + batchRollingState: "" + currentBatch: 0 + lastTargetAppRevision: "" + rollingState: "" + upgradedReadyReplicas: 0 + upgradedReplicas: 0 diff --git a/vela-templates/addons/auto-gen/ocm-cluster-manager.yaml b/vela-templates/addons/auto-gen/ocm-cluster-manager.yaml index 46bb252a8..2a707aad4 100644 --- a/vela-templates/addons/auto-gen/ocm-cluster-manager.yaml +++ b/vela-templates/addons/auto-gen/ocm-cluster-manager.yaml @@ -1,5 +1,5 @@ apiVersion: core.oam.dev/v1beta1 -kind: Initializer +kind: Application metadata: annotations: addons.oam.dev/description: ocm-cluster-manager can deploy an OCM hub cluster @@ -7,505 +7,503 @@ metadata: name: ocm-cluster-manager namespace: vela-system spec: - appTemplate: - spec: - components: - - name: cluster-manager-role-binding - properties: - apiVersion: rbac.authorization.k8s.io/v1 - kind: ClusterRoleBinding - metadata: - name: cluster-manager-role-binding - roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: cluster-manager-cluster-role - subjects: - - kind: ServiceAccount - name: cluster-manager-service-account - namespace: open-cluster-management - type: raw - - name: cluster-manager-cluster-role - properties: - apiVersion: rbac.authorization.k8s.io/v1 - kind: ClusterRole - metadata: - name: cluster-manager-cluster-role - rules: - - apiGroups: - - "" - resources: - - configmaps - - namespaces - - serviceaccounts - - services - - secrets - verbs: - - create - - get - - list - - update - - watch - - patch - - delete - - apiGroups: - - "" - resources: - - nodes - verbs: - - get - - list - - watch - - apiGroups: - - authorization.k8s.io - resources: - - subjectaccessreviews - verbs: - - create - - apiGroups: - - "" - - events.k8s.io - resources: - - events - verbs: - - create - - patch - - update - - apiGroups: - - apps - resources: - - deployments - verbs: - - create - - get - - list - - update - - watch - - patch - - delete - - apiGroups: - - rbac.authorization.k8s.io - resources: - - clusterrolebindings - - rolebindings - verbs: - - create - - get - - list - - update - - watch - - patch - - delete - - apiGroups: - - rbac.authorization.k8s.io - resources: - - clusterroles - - roles - verbs: - - create - - get - - list - - update - - watch - - patch - - delete - - escalate - - bind - - apiGroups: - - apiextensions.k8s.io - resources: - - customresourcedefinitions - verbs: - - create - - get - - list - - update - - watch - - patch - - delete - - apiGroups: - - apiregistration.k8s.io - resources: - - apiservices - verbs: - - create - - get - - list - - update - - watch - - patch - - delete - - apiGroups: - - admissionregistration.k8s.io - resources: - - validatingwebhookconfigurations - - mutatingwebhookconfigurations - verbs: - - create - - get - - list - - update - - watch - - patch - - delete - - apiGroups: - - operator.open-cluster-management.io - resources: - - clustermanagers - verbs: - - get - - list - - watch - - update - - delete - - apiGroups: - - operator.open-cluster-management.io - resources: - - clustermanagers/status - verbs: - - update - - patch - type: raw - - name: cluster-manager-service-account - properties: - apiVersion: v1 - kind: ServiceAccount - metadata: - name: cluster-manager-service-account - namespace: open-cluster-management - type: raw - - name: clustermanagers.operator.open-cluster-management.io - properties: - apiVersion: apiextensions.k8s.io/v1 - kind: CustomResourceDefinition - metadata: - name: clustermanagers.operator.open-cluster-management.io - spec: - group: operator.open-cluster-management.io - names: - kind: ClusterManager - listKind: ClusterManagerList - plural: clustermanagers - singular: clustermanager - preserveUnknownFields: false - scope: Cluster - versions: - - name: v1 - schema: - openAPIV3Schema: - description: ClusterManager configures the controllers on the hub - that govern registration and work distribution for attached Klusterlets. - ClusterManager will only be deployed in open-cluster-management-hub - namespace. - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this - representation of an object. Servers should convert recognized - schemas to the latest internal value, and may reject unrecognized - values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource - this object represents. Servers may infer this from the endpoint - the client submits requests to. Cannot be updated. In CamelCase. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: Spec represents a desired deployment configuration - of controllers that govern registration and work distribution - for attached Klusterlets. - properties: - placementImagePullSpec: - default: quay.io/open-cluster-management/placement - description: PlacementImagePullSpec represents the desired - image configuration of placement controller/webhook installed - on hub. - type: string - registrationImagePullSpec: - default: quay.io/open-cluster-management/registration - description: RegistrationImagePullSpec represents the desired - image of registration controller/webhook installed on - hub. - type: string - workImagePullSpec: - default: quay.io/open-cluster-management/work - description: WorkImagePullSpec represents the desired image - configuration of work controller/webhook installed on - hub. - type: string - type: object - status: - description: Status represents the current status of controllers - that govern the lifecycle of managed clusters. - properties: - conditions: - description: 'Conditions contain the different condition - statuses for this ClusterManager. Valid condition types - are: Applied: Components in hub are applied. Available: - Components in hub are available and ready to serve. Progressing: - Components in hub are in a transitioning state. Degraded: - Components in hub do not match the desired configuration - and only provide degraded service.' - items: - description: "Condition contains details for one aspect - of the current state of this API Resource. --- This - struct is intended for direct use as an array at the - field path .status.conditions. For example, type FooStatus - struct{ // Represents the observations of a foo's - current state. // Known .status.conditions.type - are: \"Available\", \"Progressing\", and \"Degraded\" - \ // +patchMergeKey=type // +patchStrategy=merge - \ // +listType=map // +listMapKey=type Conditions - []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" - patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` - \n // other fields }" - properties: - lastTransitionTime: - description: lastTransitionTime is the last time the - condition transitioned from one status to another. - This should be when the underlying condition changed. If - that is not known, then using the time when the - API field changed is acceptable. - format: date-time - type: string - message: - description: message is a human readable message indicating - details about the transition. This may be an empty - string. - maxLength: 32768 - type: string - observedGeneration: - description: observedGeneration represents the .metadata.generation - that the condition was set based upon. For instance, - if .metadata.generation is currently 12, but the - .status.conditions[x].observedGeneration is 9, the - condition is out of date with respect to the current - state of the instance. - format: int64 - minimum: 0 - type: integer - reason: - description: reason contains a programmatic identifier - indicating the reason for the condition's last transition. - Producers of specific condition types may define - expected values and meanings for this field, and - whether the values are considered a guaranteed API. - The value should be a CamelCase string. This field - may not be empty. - maxLength: 1024 - minLength: 1 - pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ - type: string - status: - description: status of the condition, one of True, - False, Unknown. - enum: - - "True" - - "False" - - Unknown - type: string - type: - description: type of condition in CamelCase or in - foo.example.com/CamelCase. --- Many .condition.type - values are consistent across resources like Available, - but because arbitrary conditions can be useful (see - .node.status.conditions), the ability to deconflict - is important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) - maxLength: 316 - pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ - type: string - required: - - lastTransitionTime - - message - - reason - - status - - type - type: object - type: array - generations: - description: Generations are used to determine when an item - needs to be reconciled or has changed in a way that needs - a reaction. - items: - description: GenerationStatus keeps track of the generation - for a given resource so that decisions about forced - updates can be made. The definition matches the GenerationStatus - defined in github.com/openshift/api/v1 - properties: - group: - description: group is the group of the resource that - you're tracking - type: string - lastGeneration: - description: lastGeneration is the last generation - of the resource that controller applies - format: int64 - type: integer - name: - description: name is the name of the resource that - you're tracking - type: string - namespace: - description: namespace is where the resource that - you're tracking is - type: string - resource: - description: resource is the resource type of the - resource that you're tracking - type: string - version: - description: version is the version of the resource - that you're tracking - type: string - type: object - type: array - observedGeneration: - description: ObservedGeneration is the last generation change - you've dealt with - format: int64 - type: integer - relatedResources: - description: RelatedResources are used to track the resources - that are related to this ClusterManager. - items: - description: RelatedResourceMeta represents the resource - that is managed by an operator - properties: - group: - description: group is the group of the resource that - you're tracking - type: string - name: - description: name is the name of the resource that - you're tracking - type: string - namespace: - description: namespace is where the thing you're tracking - is - type: string - resource: - description: resource is the resource type of the - resource that you're tracking - type: string - version: - description: version is the version of the thing you're - tracking - type: string - type: object - type: array - type: object - type: object - served: true - storage: true - subresources: - status: {} - status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] - type: raw - - name: cluster-manager-hub - properties: - apiVersion: operator.open-cluster-management.io/v1 + components: + - name: ns-open-cluster-management + properties: + apiVersion: v1 + kind: Namespace + metadata: + name: open-cluster-management + type: raw + - name: cluster-manager-role-binding + properties: + apiVersion: rbac.authorization.k8s.io/v1 + kind: ClusterRoleBinding + metadata: + name: cluster-manager-role-binding + roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: cluster-manager-cluster-role + subjects: + - kind: ServiceAccount + name: cluster-manager-service-account + namespace: open-cluster-management + type: raw + - name: cluster-manager-cluster-role + properties: + apiVersion: rbac.authorization.k8s.io/v1 + kind: ClusterRole + metadata: + name: cluster-manager-cluster-role + rules: + - apiGroups: + - "" + resources: + - configmaps + - namespaces + - serviceaccounts + - services + - secrets + verbs: + - create + - get + - list + - update + - watch + - patch + - delete + - apiGroups: + - "" + resources: + - nodes + verbs: + - get + - list + - watch + - apiGroups: + - authorization.k8s.io + resources: + - subjectaccessreviews + verbs: + - create + - apiGroups: + - "" + - events.k8s.io + resources: + - events + verbs: + - create + - patch + - update + - apiGroups: + - apps + resources: + - deployments + verbs: + - create + - get + - list + - update + - watch + - patch + - delete + - apiGroups: + - rbac.authorization.k8s.io + resources: + - clusterrolebindings + - rolebindings + verbs: + - create + - get + - list + - update + - watch + - patch + - delete + - apiGroups: + - rbac.authorization.k8s.io + resources: + - clusterroles + - roles + verbs: + - create + - get + - list + - update + - watch + - patch + - delete + - escalate + - bind + - apiGroups: + - apiextensions.k8s.io + resources: + - customresourcedefinitions + verbs: + - create + - get + - list + - update + - watch + - patch + - delete + - apiGroups: + - apiregistration.k8s.io + resources: + - apiservices + verbs: + - create + - get + - list + - update + - watch + - patch + - delete + - apiGroups: + - admissionregistration.k8s.io + resources: + - validatingwebhookconfigurations + - mutatingwebhookconfigurations + verbs: + - create + - get + - list + - update + - watch + - patch + - delete + - apiGroups: + - operator.open-cluster-management.io + resources: + - clustermanagers + verbs: + - get + - list + - watch + - update + - delete + - apiGroups: + - operator.open-cluster-management.io + resources: + - clustermanagers/status + verbs: + - update + - patch + type: raw + - name: cluster-manager-service-account + properties: + apiVersion: v1 + kind: ServiceAccount + metadata: + name: cluster-manager-service-account + namespace: open-cluster-management + type: raw + - name: clustermanagers.operator.open-cluster-management.io + properties: + apiVersion: apiextensions.k8s.io/v1 + kind: CustomResourceDefinition + metadata: + name: clustermanagers.operator.open-cluster-management.io + spec: + group: operator.open-cluster-management.io + names: kind: ClusterManager - metadata: - name: cluster-manager-hub - spec: - placementImagePullSpec: quay.io/open-cluster-management/placement - registrationImagePullSpec: quay.io/open-cluster-management/registration - workImagePullSpec: quay.io/open-cluster-management/work - type: raw - - name: open-cluster-management - properties: - apiVersion: v1 - kind: Namespace - metadata: - name: open-cluster-management - type: raw - - name: cluster-manager-controller - properties: - apiVersion: apps/v1 - kind: Deployment + listKind: ClusterManagerList + plural: clustermanagers + singular: clustermanager + preserveUnknownFields: false + scope: Cluster + versions: + - name: v1 + schema: + openAPIV3Schema: + description: ClusterManager configures the controllers on the hub that + govern registration and work distribution for attached Klusterlets. + ClusterManager will only be deployed in open-cluster-management-hub + namespace. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the + latest internal value, and may reject unrecognized values. More + info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource + this object represents. Servers may infer this from the endpoint + the client submits requests to. Cannot be updated. In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: Spec represents a desired deployment configuration + of controllers that govern registration and work distribution + for attached Klusterlets. + properties: + placementImagePullSpec: + default: quay.io/open-cluster-management/placement + description: PlacementImagePullSpec represents the desired image + configuration of placement controller/webhook installed on + hub. + type: string + registrationImagePullSpec: + default: quay.io/open-cluster-management/registration + description: RegistrationImagePullSpec represents the desired + image of registration controller/webhook installed on hub. + type: string + workImagePullSpec: + default: quay.io/open-cluster-management/work + description: WorkImagePullSpec represents the desired image + configuration of work controller/webhook installed on hub. + type: string + type: object + status: + description: Status represents the current status of controllers + that govern the lifecycle of managed clusters. + properties: + conditions: + description: 'Conditions contain the different condition statuses + for this ClusterManager. Valid condition types are: Applied: + Components in hub are applied. Available: Components in hub + are available and ready to serve. Progressing: Components + in hub are in a transitioning state. Degraded: Components + in hub do not match the desired configuration and only provide + degraded service.' + items: + description: "Condition contains details for one aspect of + the current state of this API Resource. --- This struct + is intended for direct use as an array at the field path + .status.conditions. For example, type FooStatus struct{ + \ // Represents the observations of a foo's current state. + \ // Known .status.conditions.type are: \"Available\", + \"Progressing\", and \"Degraded\" // +patchMergeKey=type + \ // +patchStrategy=merge // +listType=map // + +listMapKey=type Conditions []metav1.Condition `json:\"conditions,omitempty\" + patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` + \n // other fields }" + properties: + lastTransitionTime: + description: lastTransitionTime is the last time the condition + transitioned from one status to another. This should + be when the underlying condition changed. If that is + not known, then using the time when the API field changed + is acceptable. + format: date-time + type: string + message: + description: message is a human readable message indicating + details about the transition. This may be an empty string. + maxLength: 32768 + type: string + observedGeneration: + description: observedGeneration represents the .metadata.generation + that the condition was set based upon. For instance, + if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration + is 9, the condition is out of date with respect to the + current state of the instance. + format: int64 + minimum: 0 + type: integer + reason: + description: reason contains a programmatic identifier + indicating the reason for the condition's last transition. + Producers of specific condition types may define expected + values and meanings for this field, and whether the + values are considered a guaranteed API. The value should + be a CamelCase string. This field may not be empty. + maxLength: 1024 + minLength: 1 + pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ + type: string + status: + description: status of the condition, one of True, False, + Unknown. + enum: + - "True" + - "False" + - Unknown + type: string + type: + description: type of condition in CamelCase or in foo.example.com/CamelCase. + --- Many .condition.type values are consistent across + resources like Available, but because arbitrary conditions + can be useful (see .node.status.conditions), the ability + to deconflict is important. The regex it matches is + (dns1123SubdomainFmt/)?(qualifiedNameFmt) + maxLength: 316 + pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ + type: string + required: + - lastTransitionTime + - message + - reason + - status + - type + type: object + type: array + generations: + description: Generations are used to determine when an item + needs to be reconciled or has changed in a way that needs + a reaction. + items: + description: GenerationStatus keeps track of the generation + for a given resource so that decisions about forced updates + can be made. The definition matches the GenerationStatus + defined in github.com/openshift/api/v1 + properties: + group: + description: group is the group of the resource that you're + tracking + type: string + lastGeneration: + description: lastGeneration is the last generation of + the resource that controller applies + format: int64 + type: integer + name: + description: name is the name of the resource that you're + tracking + type: string + namespace: + description: namespace is where the resource that you're + tracking is + type: string + resource: + description: resource is the resource type of the resource + that you're tracking + type: string + version: + description: version is the version of the resource that + you're tracking + type: string + type: object + type: array + observedGeneration: + description: ObservedGeneration is the last generation change + you've dealt with + format: int64 + type: integer + relatedResources: + description: RelatedResources are used to track the resources + that are related to this ClusterManager. + items: + description: RelatedResourceMeta represents the resource that + is managed by an operator + properties: + group: + description: group is the group of the resource that you're + tracking + type: string + name: + description: name is the name of the resource that you're + tracking + type: string + namespace: + description: namespace is where the thing you're tracking + is + type: string + resource: + description: resource is the resource type of the resource + that you're tracking + type: string + version: + description: version is the version of the thing you're + tracking + type: string + type: object + type: array + type: object + type: object + served: true + storage: true + subresources: + status: {} + status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] + type: raw + - name: cluster-manager-hub + properties: + apiVersion: operator.open-cluster-management.io/v1 + kind: ClusterManager + metadata: + name: cluster-manager-hub + spec: + placementImagePullSpec: quay.io/open-cluster-management/placement + registrationImagePullSpec: quay.io/open-cluster-management/registration + workImagePullSpec: quay.io/open-cluster-management/work + type: raw + - name: cluster-manager-controller + properties: + apiVersion: apps/v1 + kind: Deployment + metadata: + labels: + app: cluster-manager + name: cluster-manager-controller + namespace: open-cluster-management + spec: + replicas: 1 + selector: + matchLabels: + app: cluster-manager + template: metadata: labels: app: cluster-manager - name: cluster-manager-controller - namespace: open-cluster-management spec: - replicas: 1 - selector: - matchLabels: - app: cluster-manager - template: - metadata: - labels: - app: cluster-manager - spec: - affinity: - podAntiAffinity: - preferredDuringSchedulingIgnoredDuringExecution: - - podAffinityTerm: - labelSelector: - matchExpressions: - - key: app - operator: In - values: - - cluster-manager - topologyKey: failure-domain.beta.kubernetes.io/zone - weight: 70 - - podAffinityTerm: - labelSelector: - matchExpressions: - - key: app - operator: In - values: - - cluster-manager - topologyKey: kubernetes.io/hostname - weight: 30 - containers: - - args: - - /registration-operator - - hub - image: quay.io/open-cluster-management/registration-operator:latest - imagePullPolicy: IfNotPresent - livenessProbe: - httpGet: - path: /healthz - port: 8443 - scheme: HTTPS - initialDelaySeconds: 2 - periodSeconds: 10 - name: registration-operator - readinessProbe: - httpGet: - path: /healthz - port: 8443 - scheme: HTTPS - initialDelaySeconds: 2 - resources: - requests: - cpu: 10m - memory: 128Mi - securityContext: - allowPrivilegeEscalation: false - capabilities: - drop: - - ALL - privileged: false - runAsNonRoot: true - serviceAccountName: cluster-manager-service-account - type: raw - status: - rollout: - batchRollingState: "" - currentBatch: 0 - lastTargetAppRevision: "" - rollingState: "" - upgradedReadyReplicas: 0 - upgradedReplicas: 0 + affinity: + podAntiAffinity: + preferredDuringSchedulingIgnoredDuringExecution: + - podAffinityTerm: + labelSelector: + matchExpressions: + - key: app + operator: In + values: + - cluster-manager + topologyKey: failure-domain.beta.kubernetes.io/zone + weight: 70 + - podAffinityTerm: + labelSelector: + matchExpressions: + - key: app + operator: In + values: + - cluster-manager + topologyKey: kubernetes.io/hostname + weight: 30 + containers: + - args: + - /registration-operator + - hub + image: quay.io/open-cluster-management/registration-operator:latest + imagePullPolicy: IfNotPresent + livenessProbe: + httpGet: + path: /healthz + port: 8443 + scheme: HTTPS + initialDelaySeconds: 2 + periodSeconds: 10 + name: registration-operator + readinessProbe: + httpGet: + path: /healthz + port: 8443 + scheme: HTTPS + initialDelaySeconds: 2 + resources: + requests: + cpu: 10m + memory: 128Mi + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + runAsNonRoot: true + serviceAccountName: cluster-manager-service-account + type: raw + workflow: + steps: + - name: apply-ns + properties: + component: ns-open-cluster-management + type: apply-component + - name: apply-resources + type: apply-remaining status: - observedGeneration: 0 + rollout: + batchRollingState: "" + currentBatch: 0 + lastTargetAppRevision: "" + rollingState: "" + upgradedReadyReplicas: 0 + upgradedReplicas: 0 diff --git a/vela-templates/addons/auto-gen/prometheus.yaml b/vela-templates/addons/auto-gen/prometheus.yaml index 67ebd7b55..90e6916c3 100644 --- a/vela-templates/addons/auto-gen/prometheus.yaml +++ b/vela-templates/addons/auto-gen/prometheus.yaml @@ -1,5 +1,5 @@ apiVersion: core.oam.dev/v1beta1 -kind: Initializer +kind: Application metadata: annotations: addons.oam.dev/description: Prometheus is an open-source systems monitoring and @@ -7,28 +7,27 @@ metadata: name: prometheus namespace: vela-system spec: - appTemplate: - spec: - components: - - name: prometheus - properties: - chart: premetheus - repoType: helm - url: https://prometheus-community.github.io/helm-charts - type: helm - status: - rollout: - batchRollingState: "" - currentBatch: 0 - lastTargetAppRevision: "" - rollingState: "" - upgradedReadyReplicas: 0 - upgradedReplicas: 0 - dependsOn: - - ref: - apiVersion: core.oam.dev/v1beta1 - kind: Initializer - name: fluxcd - namespace: vela-system + components: + - name: prometheus + properties: + chart: premetheus + repoType: helm + url: https://prometheus-community.github.io/helm-charts + type: helm + workflow: + steps: + - name: checking-depends-on + properties: + name: fluxcd + namespace: vela-system + type: depends-on-app + - name: apply-resources + type: apply-application status: - observedGeneration: 0 + rollout: + batchRollingState: "" + currentBatch: 0 + lastTargetAppRevision: "" + rollingState: "" + upgradedReadyReplicas: 0 + upgradedReplicas: 0 diff --git a/vela-templates/addons/auto-gen/terraform-provider-alibaba.yaml b/vela-templates/addons/auto-gen/terraform-provider-alibaba.yaml index 79e58e29c..635f926aa 100644 --- a/vela-templates/addons/auto-gen/terraform-provider-alibaba.yaml +++ b/vela-templates/addons/auto-gen/terraform-provider-alibaba.yaml @@ -1,5 +1,5 @@ apiVersion: core.oam.dev/v1beta1 -kind: Initializer +kind: Application metadata: annotations: addons.oam.dev/description: Kubernetes Terraform Controller for Alibaba Cloud @@ -7,47 +7,43 @@ metadata: name: terraform-provider-alibaba namespace: default spec: - appTemplate: - spec: - components: - - name: alibaba-account-creds - properties: - apiVersion: v1 - kind: Secret - metadata: + components: + - name: alibaba-account-creds + properties: + apiVersion: v1 + kind: Secret + metadata: + name: alibaba-provider-secret + namespace: vela-system + stringData: + credentials: | + accessKeyID: [[ index .Args "ALICLOUD_ACCESS_KEY" ]] + accessKeySecret: [[ index .Args "ALICLOUD_SECRET_KEY" ]] + securityToken: [[ index .Args "ALICLOUD_SECURITY_TOKEN" ]] + type: Opaque + type: raw + - name: default + properties: + apiVersion: terraform.core.oam.dev/v1beta1 + kind: Provider + metadata: + name: default + namespace: default + spec: + credentials: + secretRef: + key: credentials name: alibaba-account-creds namespace: vela-system - stringData: - credentials: | - accessKeyID: [[ index .Args "ALICLOUD_ACCESS_KEY" ]] - accessKeySecret: [[ index .Args "ALICLOUD_SECRET_KEY" ]] - securityToken: [[ index .Args "ALICLOUD_SECURITY_TOKEN" ]] - type: Opaque - type: raw - - name: default - properties: - apiVersion: terraform.core.oam.dev/v1beta1 - kind: Provider - metadata: - name: default - namespace: default - spec: - credentials: - secretRef: - key: credentials - name: alibaba-account-creds - namespace: vela-system - source: Secret - provider: alibaba - region: '[[ index .Args "ALICLOUD_REGION" ]]' - type: raw - status: - rollout: - batchRollingState: "" - currentBatch: 0 - lastTargetAppRevision: "" - rollingState: "" - upgradedReadyReplicas: 0 - upgradedReplicas: 0 + source: Secret + provider: alibaba + region: '[[ index .Args "ALICLOUD_REGION" ]]' + type: raw status: - observedGeneration: 0 + rollout: + batchRollingState: "" + currentBatch: 0 + lastTargetAppRevision: "" + rollingState: "" + upgradedReadyReplicas: 0 + upgradedReplicas: 0 diff --git a/vela-templates/addons/auto-gen/terraform-provider-azure.yaml b/vela-templates/addons/auto-gen/terraform-provider-azure.yaml index d62ec670f..edd6d1234 100644 --- a/vela-templates/addons/auto-gen/terraform-provider-azure.yaml +++ b/vela-templates/addons/auto-gen/terraform-provider-azure.yaml @@ -1,5 +1,5 @@ apiVersion: core.oam.dev/v1beta1 -kind: Initializer +kind: Application metadata: annotations: addons.oam.dev/description: Kubernetes Terraform Controller for Azure @@ -7,47 +7,43 @@ metadata: name: terraform-provider-azure namespace: default spec: - appTemplate: - spec: - components: - - name: azure-account-creds - properties: - apiVersion: v1 - kind: Secret - metadata: + components: + - name: azure-account-creds + properties: + apiVersion: v1 + kind: Secret + metadata: + name: azure-account-creds + namespace: vela-system + stringData: + credentials: | + armClientID: [[ index .Args "ARM_CLIENT_ID" ]] + armClientSecret: [[ index .Args "ARM_CLIENT_SECRET" ]] + armSubscriptionID: [[ index .Args "ARM_SUBSCRIPTION_ID" ]] + armTenantID: [[ index .Args "ARM_TENANT_ID" ]] + type: Opaque + type: raw + - name: azure + properties: + apiVersion: terraform.core.oam.dev/v1beta1 + kind: Provider + metadata: + name: azure + namespace: default + spec: + credentials: + secretRef: + key: credentials name: azure-account-creds namespace: vela-system - stringData: - credentials: | - armClientID: [[ index .Args "ARM_CLIENT_ID" ]] - armClientSecret: [[ index .Args "ARM_CLIENT_SECRET" ]] - armSubscriptionID: [[ index .Args "ARM_SUBSCRIPTION_ID" ]] - armTenantID: [[ index .Args "ARM_TENANT_ID" ]] - type: Opaque - type: raw - - name: azure - properties: - apiVersion: terraform.core.oam.dev/v1beta1 - kind: Provider - metadata: - name: azure - namespace: default - spec: - credentials: - secretRef: - key: credentials - name: azure-account-creds - namespace: vela-system - source: Secret - provider: azure - type: raw - status: - rollout: - batchRollingState: "" - currentBatch: 0 - lastTargetAppRevision: "" - rollingState: "" - upgradedReadyReplicas: 0 - upgradedReplicas: 0 + source: Secret + provider: azure + type: raw status: - observedGeneration: 0 + rollout: + batchRollingState: "" + currentBatch: 0 + lastTargetAppRevision: "" + rollingState: "" + upgradedReadyReplicas: 0 + upgradedReplicas: 0 diff --git a/vela-templates/addons/auto-gen/terraform.yaml b/vela-templates/addons/auto-gen/terraform.yaml index 1a60a4c55..ff5d6bbae 100644 --- a/vela-templates/addons/auto-gen/terraform.yaml +++ b/vela-templates/addons/auto-gen/terraform.yaml @@ -1,5 +1,5 @@ apiVersion: core.oam.dev/v1beta1 -kind: Initializer +kind: Application metadata: annotations: addons.oam.dev/description: Terraform Controller is a Kubernetes Controller for @@ -7,440 +7,443 @@ metadata: name: terraform namespace: vela-system spec: - appTemplate: - spec: - components: - - name: terraform-controller - properties: - chart: terraform-controller - repoType: helm - url: https://charts.kubevela.net/addons - version: 0.1.19 - type: helm - - name: terraform-system - properties: - apiVersion: v1 - kind: Namespace - metadata: - name: terraform-system - type: raw - - name: alibaba-ack - properties: - apiVersion: core.oam.dev/v1beta1 - kind: ComponentDefinition - metadata: - annotations: - definition.oam.dev/description: Terraform configuration for Alibaba - Cloud ACK cluster - labels: - type: terraform - name: alibaba-ack - namespace: vela-system - spec: - schematic: - terraform: - configuration: | - module "kubernetes" { - source = "github.com/zzxwill/terraform-alicloud-kubernetes" - new_nat_gateway = true - vpc_name = var.vpc_name - vpc_cidr = var.vpc_cidr - vswitch_name_prefix = var.vswitch_name_prefix - vswitch_cidrs = var.vswitch_cidrs - master_instance_types = var.master_instance_types - worker_instance_types = var.worker_instance_types - k8s_pod_cidr = var.k8s_pod_cidr - k8s_service_cidr = var.k8s_service_cidr - k8s_worker_number = var.k8s_worker_number - cpu_core_count = var.cpu_core_count - memory_size = var.memory_size - zone_id = var.zone_id - k8s_version = var.k8s_version - k8s_name_prefix = var.k8s_name_prefix - } - ###################### - # Instance types variables - ###################### - variable "cpu_core_count" { - description = "CPU core count is used to fetch instance types." - type = number - default = 4 - } - variable "memory_size" { - description = "Memory size used to fetch instance types." - type = number - default = 8 - } - ###################### - # VPC variables - ###################### - variable "vpc_name" { - description = "The vpc name used to create a new vpc when 'vpc_id' is not specified. Default to variable `example_name`" - type = string - default = "tf-k8s-vpc" - } - variable "vpc_cidr" { - description = "The cidr block used to launch a new vpc when 'vpc_id' is not specified." - type = string - default = "10.0.0.0/8" - } - ###################### - # VSwitch variables - ###################### - variable "vswitch_name_prefix" { - type = string - description = "The vswitch name prefix used to create several new vswitches. Default to variable 'example_name'." - default = "tf-k8s-vsw" - } - variable "number_format" { - description = "The number format used to output." - type = string - default = "%02d" - } - variable "vswitch_ids" { - description = "List of existing vswitch id." - type = list - default = [] - } - variable "vswitch_cidrs" { - description = "List of cidr blocks used to create several new vswitches when 'vswitch_ids' is not specified." - type = list - default = [ - "10.1.0.0/16", - "10.2.0.0/16", - "10.3.0.0/16"] - } - variable "k8s_name_prefix" { - description = "The name prefix used to create several kubernetes clusters. Default to variable `example_name`" - type = string - default = "poc" - } - variable "new_nat_gateway" { - type = bool - description = "Whether to create a new nat gateway. In this template, a new nat gateway will create a nat gateway, eip and server snat entries." - default = true - } - variable "master_instance_types" { - description = "The ecs instance types used to launch master nodes." - type = list - default = [ - # hongkong - "ecs.sn1ne.xlarge", - # hongkong - "ecs.c6.xlarge", - # hongkong - "ecs.c4.xlarge", - # hongkong - "ecs.c5.xlarge", - "ecs.n4.xlarge", - # "ecs.n1.large", - # "ecs.sn1.large", - # "ecs.s6-c1m2.xlarge", - # "ecs.c6e.xlarge" - ] - } - variable "worker_instance_types" { - description = "The ecs instance types used to launch worker nodes." - type = list - default = [ - # hongkong - "ecs.sn1ne.xlarge", - # hongkong - "ecs.c6.xlarge", - # hongkong - "ecs.c4.xlarge", - # hongkong - "ecs.c6e.xlarge", - "ecs.n4.xlarge", - // "ecs.n1.large", - // "ecs.sn1.large", - // "ecs.s6-c1m2.xlarge" - ] - } - variable "node_cidr_mask" { - type = number - description = "The node cidr block to specific how many pods can run on single node. Valid values: [24-28]." - default = 24 - } - variable "enable_ssh" { - description = "Enable login to the node through SSH." - type = bool - default = true - } - variable "install_cloud_monitor" { - description = "Install cloud monitor agent on ECS." - type = bool - default = true - } - variable "cpu_policy" { - type = string - description = "kubelet cpu policy. Valid values: 'none','static'. Default to 'none'." - default = "none" - } - variable "proxy_mode" { - description = "Proxy mode is option of kube-proxy. Valid values: 'ipvs','iptables'. Default to 'iptables'." - type = string - default = "iptables" - } - variable "password" { - description = "The password of ECS instance." - type = string - default = "Just4Test" - } - variable "k8s_worker_number" { - description = "The number of worker nodes in kubernetes cluster." - type = number - default = 2 - } - # k8s_pod_cidr is only for flannel network - variable "k8s_pod_cidr" { - description = "The kubernetes pod cidr block. It cannot be equals to vpc's or vswitch's and cannot be in them." - type = string - default = "172.20.0.0/16" - } - variable "k8s_service_cidr" { - description = "The kubernetes service cidr block. It cannot be equals to vpc's or vswitch's or pod's and cannot be in them." - type = string - default = "192.168.0.0/16" - } - variable "k8s_version" { - description = "The version of the kubernetes version. Valid values: '1.16.6-aliyun.1','1.14.8-aliyun.1'. Default to '1.16.6-aliyun.1'." - type = string - default = "1.20.4-aliyun.1" - } - variable "zone_id" { - description = "Availability Zone ID" - type = string - default = "cn-hongkong-b" - # "cn-beijing-a" - } - output "name" { - value = module.kubernetes.name - } - output "kubeconfig" { - value = module.kubernetes.kubeconfig - } - output "cluster_ca_cert" { - value = module.kubernetes.cluster_ca_cert - } - output "client_cert" { - value = module.kubernetes.client_cert - } - output "client_key" { - value = module.kubernetes.client_key - } - output "api_server_internet" { - value = module.kubernetes.api_server_internet - } - workload: - definition: - apiVersion: terraform.core.oam.dev/v1beta1 - kind: Configuration - type: raw - - name: alibaba-eip - properties: - apiVersion: core.oam.dev/v1alpha2 - kind: ComponentDefinition - metadata: - annotations: - definition.oam.dev/description: Terraform configuration for Alibaba - Cloud Elastic IP - labels: - type: terraform - name: alibaba-eip - namespace: vela-system - spec: - schematic: - terraform: - configuration: https://github.com/oam-dev/terraform-alibaba-eip.git - type: remote - workload: - definition: - apiVersion: terraform.core.oam.dev/v1beta1 - kind: Configuration - type: raw - - name: alibaba-oss - properties: - apiVersion: core.oam.dev/v1alpha2 - kind: ComponentDefinition - metadata: - annotations: - definition.oam.dev/description: Terraform configuration for Alibaba - Cloud OSS object - labels: - type: terraform - name: alibaba-oss - namespace: vela-system - spec: - schematic: - terraform: - configuration: "resource \"alicloud_oss_bucket\" \"bucket-acl\" {\n - \ bucket = var.bucket\n acl = var.acl\n}\noutput \"BUCKET_NAME\" - {\n value = \"${alicloud_oss_bucket.bucket-acl.bucket}.${alicloud_oss_bucket.bucket-acl.extranet_endpoint}\"\n}\nvariable - \"bucket\" {\n description = \"OSS bucket name\"\n default = \"vela-website\"\n - \ type = string\n}\nvariable \"acl\" {\n description = \"OSS bucket - ACL, supported 'private', 'public-read', 'public-read-write'\"\n - \ default = \"private\"\n type = string\n} \n" - workload: - definition: - apiVersion: terraform.core.oam.dev/v1beta1 - kind: Configuration - type: raw - - name: alibaba-rds - properties: - apiVersion: core.oam.dev/v1alpha2 - kind: ComponentDefinition - metadata: - annotations: - definition.oam.dev/description: Terraform configuration for Alibaba - Cloud RDS object - labels: - type: terraform - name: alibaba-rds - namespace: vela-system - spec: - schematic: - terraform: - configuration: | - module "rds" { - source = "terraform-alicloud-modules/rds/alicloud" - engine = "MySQL" - engine_version = "8.0" - instance_type = "rds.mysql.c1.large" - instance_storage = "20" - instance_name = var.instance_name - account_name = var.account_name - password = var.password - } - - output "DB_NAME" { - value = module.rds.this_db_instance_name - } - output "DB_USER" { - value = module.rds.this_db_database_account - } - output "DB_PORT" { - value = module.rds.this_db_instance_port - } - output "DB_HOST" { - value = module.rds.this_db_instance_connection_string - } - output "DB_PASSWORD" { - value = var.password - } - - variable "instance_name" { - description = "RDS instance name" - type = string - default = "poc" - } - - variable "account_name" { - description = "RDS instance user account name" - type = string - default = "oam" - } - - variable "password" { - description = "RDS instance account password" - type = string - default = "Xyfff83jfewGGfaked" - } - workload: - definition: - apiVersion: terraform.core.oam.dev/v1beta1 - kind: Configuration - type: raw - - name: azure-database-mariadb - properties: - apiVersion: core.oam.dev/v1alpha2 - kind: ComponentDefinition - metadata: - annotations: - definition.oam.dev/description: Terraform configuration for Azure Database - Mariadb - provider: azure - labels: - type: terraform - name: azure-database-mariadb - namespace: vela-system - spec: - schematic: - terraform: - configuration: | - # Configure the Microsoft Azure Provider - provider "azurerm" { - features {} - } - - resource "azurerm_resource_group" "example" { - name = "tfex-mariadb-database-RG" - location = "West Europe" - } - - resource "azurerm_mariadb_server" "example" { - name = "mariadb-svr-sample" - location = azurerm_resource_group.example.location - resource_group_name = azurerm_resource_group.example.name - - sku_name = "B_Gen5_2" - - storage_mb = 51200 - backup_retention_days = 7 - geo_redundant_backup_enabled = false - - administrator_login = var.username - administrator_login_password = var.password - version = "10.2" - ssl_enforcement_enabled = true - } - - resource "azurerm_mariadb_database" "example" { - name = var.name - resource_group_name = azurerm_resource_group.example.name - server_name = azurerm_mariadb_server.example.name - charset = "utf8" - collation = "utf8_general_ci" - } - - variable "name" { - default = "mariadb_database" - type = string - description = "Database instance name" - } - - variable "username" { - default = "acctestun" - type = string - description = "Database instance username" - } - - variable "password" { - default = "H@Sh1CoR3!faked" - type = string - description = "Database instance password" - } - providerRef: - name: azure - namespace: default - workload: - definition: - apiVersion: terraform.core.oam.dev/v1beta1 - kind: Configuration - type: raw - status: - rollout: - batchRollingState: "" - currentBatch: 0 - lastTargetAppRevision: "" - rollingState: "" - upgradedReadyReplicas: 0 - upgradedReplicas: 0 - dependsOn: - - ref: + components: + - name: ns-terraform-system + properties: + apiVersion: v1 + kind: Namespace + metadata: + name: terraform-system + type: raw + - name: terraform-controller + properties: + chart: terraform-controller + repoType: helm + url: https://charts.kubevela.net/addons + version: 0.1.19 + type: helm + - name: alibaba-ack + properties: apiVersion: core.oam.dev/v1beta1 - kind: Initializer - name: fluxcd - namespace: vela-system + kind: ComponentDefinition + metadata: + annotations: + definition.oam.dev/description: Terraform configuration for Alibaba Cloud + ACK cluster + labels: + type: terraform + name: alibaba-ack + namespace: vela-system + spec: + schematic: + terraform: + configuration: | + module "kubernetes" { + source = "github.com/zzxwill/terraform-alicloud-kubernetes" + new_nat_gateway = true + vpc_name = var.vpc_name + vpc_cidr = var.vpc_cidr + vswitch_name_prefix = var.vswitch_name_prefix + vswitch_cidrs = var.vswitch_cidrs + master_instance_types = var.master_instance_types + worker_instance_types = var.worker_instance_types + k8s_pod_cidr = var.k8s_pod_cidr + k8s_service_cidr = var.k8s_service_cidr + k8s_worker_number = var.k8s_worker_number + cpu_core_count = var.cpu_core_count + memory_size = var.memory_size + zone_id = var.zone_id + k8s_version = var.k8s_version + k8s_name_prefix = var.k8s_name_prefix + } + ###################### + # Instance types variables + ###################### + variable "cpu_core_count" { + description = "CPU core count is used to fetch instance types." + type = number + default = 4 + } + variable "memory_size" { + description = "Memory size used to fetch instance types." + type = number + default = 8 + } + ###################### + # VPC variables + ###################### + variable "vpc_name" { + description = "The vpc name used to create a new vpc when 'vpc_id' is not specified. Default to variable `example_name`" + type = string + default = "tf-k8s-vpc" + } + variable "vpc_cidr" { + description = "The cidr block used to launch a new vpc when 'vpc_id' is not specified." + type = string + default = "10.0.0.0/8" + } + ###################### + # VSwitch variables + ###################### + variable "vswitch_name_prefix" { + type = string + description = "The vswitch name prefix used to create several new vswitches. Default to variable 'example_name'." + default = "tf-k8s-vsw" + } + variable "number_format" { + description = "The number format used to output." + type = string + default = "%02d" + } + variable "vswitch_ids" { + description = "List of existing vswitch id." + type = list + default = [] + } + variable "vswitch_cidrs" { + description = "List of cidr blocks used to create several new vswitches when 'vswitch_ids' is not specified." + type = list + default = [ + "10.1.0.0/16", + "10.2.0.0/16", + "10.3.0.0/16"] + } + variable "k8s_name_prefix" { + description = "The name prefix used to create several kubernetes clusters. Default to variable `example_name`" + type = string + default = "poc" + } + variable "new_nat_gateway" { + type = bool + description = "Whether to create a new nat gateway. In this template, a new nat gateway will create a nat gateway, eip and server snat entries." + default = true + } + variable "master_instance_types" { + description = "The ecs instance types used to launch master nodes." + type = list + default = [ + # hongkong + "ecs.sn1ne.xlarge", + # hongkong + "ecs.c6.xlarge", + # hongkong + "ecs.c4.xlarge", + # hongkong + "ecs.c5.xlarge", + "ecs.n4.xlarge", + # "ecs.n1.large", + # "ecs.sn1.large", + # "ecs.s6-c1m2.xlarge", + # "ecs.c6e.xlarge" + ] + } + variable "worker_instance_types" { + description = "The ecs instance types used to launch worker nodes." + type = list + default = [ + # hongkong + "ecs.sn1ne.xlarge", + # hongkong + "ecs.c6.xlarge", + # hongkong + "ecs.c4.xlarge", + # hongkong + "ecs.c6e.xlarge", + "ecs.n4.xlarge", + // "ecs.n1.large", + // "ecs.sn1.large", + // "ecs.s6-c1m2.xlarge" + ] + } + variable "node_cidr_mask" { + type = number + description = "The node cidr block to specific how many pods can run on single node. Valid values: [24-28]." + default = 24 + } + variable "enable_ssh" { + description = "Enable login to the node through SSH." + type = bool + default = true + } + variable "install_cloud_monitor" { + description = "Install cloud monitor agent on ECS." + type = bool + default = true + } + variable "cpu_policy" { + type = string + description = "kubelet cpu policy. Valid values: 'none','static'. Default to 'none'." + default = "none" + } + variable "proxy_mode" { + description = "Proxy mode is option of kube-proxy. Valid values: 'ipvs','iptables'. Default to 'iptables'." + type = string + default = "iptables" + } + variable "password" { + description = "The password of ECS instance." + type = string + default = "Just4Test" + } + variable "k8s_worker_number" { + description = "The number of worker nodes in kubernetes cluster." + type = number + default = 2 + } + # k8s_pod_cidr is only for flannel network + variable "k8s_pod_cidr" { + description = "The kubernetes pod cidr block. It cannot be equals to vpc's or vswitch's and cannot be in them." + type = string + default = "172.20.0.0/16" + } + variable "k8s_service_cidr" { + description = "The kubernetes service cidr block. It cannot be equals to vpc's or vswitch's or pod's and cannot be in them." + type = string + default = "192.168.0.0/16" + } + variable "k8s_version" { + description = "The version of the kubernetes version. Valid values: '1.16.6-aliyun.1','1.14.8-aliyun.1'. Default to '1.16.6-aliyun.1'." + type = string + default = "1.20.4-aliyun.1" + } + variable "zone_id" { + description = "Availability Zone ID" + type = string + default = "cn-hongkong-b" + # "cn-beijing-a" + } + output "name" { + value = module.kubernetes.name + } + output "kubeconfig" { + value = module.kubernetes.kubeconfig + } + output "cluster_ca_cert" { + value = module.kubernetes.cluster_ca_cert + } + output "client_cert" { + value = module.kubernetes.client_cert + } + output "client_key" { + value = module.kubernetes.client_key + } + output "api_server_internet" { + value = module.kubernetes.api_server_internet + } + workload: + definition: + apiVersion: terraform.core.oam.dev/v1beta1 + kind: Configuration + type: raw + - name: alibaba-eip + properties: + apiVersion: core.oam.dev/v1alpha2 + kind: ComponentDefinition + metadata: + annotations: + definition.oam.dev/description: Terraform configuration for Alibaba Cloud + Elastic IP + labels: + type: terraform + name: alibaba-eip + namespace: vela-system + spec: + schematic: + terraform: + configuration: https://github.com/oam-dev/terraform-alibaba-eip.git + type: remote + workload: + definition: + apiVersion: terraform.core.oam.dev/v1beta1 + kind: Configuration + type: raw + - name: alibaba-oss + properties: + apiVersion: core.oam.dev/v1alpha2 + kind: ComponentDefinition + metadata: + annotations: + definition.oam.dev/description: Terraform configuration for Alibaba Cloud + OSS object + labels: + type: terraform + name: alibaba-oss + namespace: vela-system + spec: + schematic: + terraform: + configuration: "resource \"alicloud_oss_bucket\" \"bucket-acl\" {\n bucket + = var.bucket\n acl = var.acl\n}\noutput \"BUCKET_NAME\" {\n value + = \"${alicloud_oss_bucket.bucket-acl.bucket}.${alicloud_oss_bucket.bucket-acl.extranet_endpoint}\"\n}\nvariable + \"bucket\" {\n description = \"OSS bucket name\"\n default = \"vela-website\"\n + \ type = string\n}\nvariable \"acl\" {\n description = \"OSS bucket + ACL, supported 'private', 'public-read', 'public-read-write'\"\n default + = \"private\"\n type = string\n} \n" + workload: + definition: + apiVersion: terraform.core.oam.dev/v1beta1 + kind: Configuration + type: raw + - name: alibaba-rds + properties: + apiVersion: core.oam.dev/v1alpha2 + kind: ComponentDefinition + metadata: + annotations: + definition.oam.dev/description: Terraform configuration for Alibaba Cloud + RDS object + labels: + type: terraform + name: alibaba-rds + namespace: vela-system + spec: + schematic: + terraform: + configuration: | + module "rds" { + source = "terraform-alicloud-modules/rds/alicloud" + engine = "MySQL" + engine_version = "8.0" + instance_type = "rds.mysql.c1.large" + instance_storage = "20" + instance_name = var.instance_name + account_name = var.account_name + password = var.password + } + + output "DB_NAME" { + value = module.rds.this_db_instance_name + } + output "DB_USER" { + value = module.rds.this_db_database_account + } + output "DB_PORT" { + value = module.rds.this_db_instance_port + } + output "DB_HOST" { + value = module.rds.this_db_instance_connection_string + } + output "DB_PASSWORD" { + value = var.password + } + + variable "instance_name" { + description = "RDS instance name" + type = string + default = "poc" + } + + variable "account_name" { + description = "RDS instance user account name" + type = string + default = "oam" + } + + variable "password" { + description = "RDS instance account password" + type = string + default = "Xyfff83jfewGGfaked" + } + workload: + definition: + apiVersion: terraform.core.oam.dev/v1beta1 + kind: Configuration + type: raw + - name: azure-database-mariadb + properties: + apiVersion: core.oam.dev/v1alpha2 + kind: ComponentDefinition + metadata: + annotations: + definition.oam.dev/description: Terraform configuration for Azure Database + Mariadb + provider: azure + labels: + type: terraform + name: azure-database-mariadb + namespace: vela-system + spec: + schematic: + terraform: + configuration: | + # Configure the Microsoft Azure Provider + provider "azurerm" { + features {} + } + + resource "azurerm_resource_group" "example" { + name = "tfex-mariadb-database-RG" + location = "West Europe" + } + + resource "azurerm_mariadb_server" "example" { + name = "mariadb-svr-sample" + location = azurerm_resource_group.example.location + resource_group_name = azurerm_resource_group.example.name + + sku_name = "B_Gen5_2" + + storage_mb = 51200 + backup_retention_days = 7 + geo_redundant_backup_enabled = false + + administrator_login = var.username + administrator_login_password = var.password + version = "10.2" + ssl_enforcement_enabled = true + } + + resource "azurerm_mariadb_database" "example" { + name = var.name + resource_group_name = azurerm_resource_group.example.name + server_name = azurerm_mariadb_server.example.name + charset = "utf8" + collation = "utf8_general_ci" + } + + variable "name" { + default = "mariadb_database" + type = string + description = "Database instance name" + } + + variable "username" { + default = "acctestun" + type = string + description = "Database instance username" + } + + variable "password" { + default = "H@Sh1CoR3!faked" + type = string + description = "Database instance password" + } + providerRef: + name: azure + namespace: default + workload: + definition: + apiVersion: terraform.core.oam.dev/v1beta1 + kind: Configuration + type: raw + workflow: + steps: + - name: checking-depends-on + properties: + name: fluxcd + namespace: vela-system + type: depends-on-app + - name: apply-ns + properties: + component: ns-terraform-system + type: apply-component + - name: apply-resources + type: apply-remaining status: - observedGeneration: 0 + rollout: + batchRollingState: "" + currentBatch: 0 + lastTargetAppRevision: "" + rollingState: "" + upgradedReadyReplicas: 0 + upgradedReplicas: 0 diff --git a/vela-templates/addons/fluxcd/template.yaml b/vela-templates/addons/fluxcd/template.yaml index f99942cbe..75a1b0545 100644 --- a/vela-templates/addons/fluxcd/template.yaml +++ b/vela-templates/addons/fluxcd/template.yaml @@ -1,27 +1,35 @@ apiVersion: core.oam.dev/v1beta1 -kind: Initializer +kind: Application metadata: annotations: addons.oam.dev/description: "Flux is a set of continuous and progressive delivery solutions for Kubernetes" + filter.oam.dev/annotation-keys: app.oam.dev/last-applied-configuration name: fluxcd namespace: vela-system spec: - dependsOn: - - ref: - apiVersion: core.oam.dev/v1beta1 - kind: Initializer - name: ns-flux-system - namespace: vela-system - appTemplate: - spec: - components: + workflow: + steps: + - name: apply-ns + type: apply-component + properties: + component: ns-flux-system + - name: apply-resources + type: apply-remaining + components: + - name: ns-flux-system + type: raw + properties: + apiVersion: v1 + kind: Namespace + metadata: + name: flux-system {{ range .ResourceFiles }} - - name: {{ .Name }} - type: raw - properties: -{{ .Content | indent 12 }} {{ end }} + - name: {{ .Name }} + type: raw + properties: +{{ .Content | indent 8 }} {{ end }} {{ range .DefinitionFiles }} - - name: {{ .Name }} - type: raw - properties: -{{ .Content | indent 12 }} {{ end }} + - name: {{ .Name }} + type: raw + properties: +{{ .Content | indent 8 }} {{ end }} diff --git a/vela-templates/addons/istio/template.yaml b/vela-templates/addons/istio/template.yaml index 8da9bb6d0..f99898c1d 100644 --- a/vela-templates/addons/istio/template.yaml +++ b/vela-templates/addons/istio/template.yaml @@ -1,39 +1,46 @@ apiVersion: core.oam.dev/v1beta1 -kind: Initializer +kind: Application metadata: annotations: addons.oam.dev/description: "istio Controller is a Kubernetes Controller for manage traffic." name: istio namespace: istio-system spec: - dependsOn: - - ref: - apiVersion: core.oam.dev/v1beta1 - kind: Initializer - name: fluxcd - namespace: vela-system - - ref: - apiVersion: core.oam.dev/v1beta1 - kind: Initializer - name: ns-istio-system - namespace: vela-system - appTemplate: - spec: - components: - - name: istio - type: helm - properties: - repoType: helm - url: https://charts.kubevela.net/addons - chart: istio - version: 1.11.1 + workflow: + steps: + - name: checking-depends-on + type: depends-on-app + properties: + name: fluxcd + namespace: vela-system + - name: apply-ns + type: apply-component + properties: + component: ns-istio-system + - name: apply-resources + type: apply-remaining + components: + - name: ns-istio-system + type: raw + properties: + apiVersion: v1 + kind: Namespace + metadata: + name: istio-system + - name: istio + type: helm + properties: + repoType: helm + url: https://charts.kubevela.net/addons + chart: istio + version: 1.11.1 {{ range .ResourceFiles }} - - name: {{ .Name }} - type: raw - properties: -{{ .Content | indent 12 }} {{ end }} + - name: {{ .Name }} + type: raw + properties: +{{ .Content | indent 8 }} {{ end }} {{ range .DefinitionFiles }} - - name: {{ .Name }} - type: raw - properties: -{{ .Content | indent 12 }} {{ end }} + - name: {{ .Name }} + type: raw + properties: +{{ .Content | indent 8 }} {{ end }} diff --git a/vela-templates/addons/keda/template.yaml b/vela-templates/addons/keda/template.yaml index a17a0c596..716636b5e 100644 --- a/vela-templates/addons/keda/template.yaml +++ b/vela-templates/addons/keda/template.yaml @@ -1,33 +1,34 @@ apiVersion: core.oam.dev/v1beta1 -kind: Initializer +kind: Application metadata: annotations: addons.oam.dev/description: "KEDA is a Kubernetes-based Event Driven Autoscaler." name: keda namespace: vela-system spec: - dependsOn: - - ref: - apiVersion: core.oam.dev/v1beta1 - kind: Initializer - name: fluxcd - namespace: vela-system - appTemplate: - spec: - components: - - name: keda - type: helm - properties: - repoType: helm - url: https://kedacore.github.io/charts - chart: keda + workflow: + steps: + - name: checking-depends-on + type: depends-on-app + properties: + name: fluxcd + namespace: vela-system + - name: apply-resources + type: apply-application + components: + - name: keda + type: helm + properties: + repoType: helm + url: https://kedacore.github.io/charts + chart: keda {{ range .ResourceFiles }} - - name: {{ .Name }} - type: raw - properties: -{{ .Content | indent 12 }} {{ end }} + - name: {{ .Name }} + type: raw + properties: +{{ .Content | indent 8 }} {{ end }} {{ range .DefinitionFiles }} - - name: {{ .Name }} - type: raw - properties: -{{ .Content | indent 12 }} {{ end }} + - name: {{ .Name }} + type: raw + properties: +{{ .Content | indent 8 }} {{ end }} diff --git a/vela-templates/addons/kruise/template.yaml b/vela-templates/addons/kruise/template.yaml index e22cba795..5df80b2f7 100644 --- a/vela-templates/addons/kruise/template.yaml +++ b/vela-templates/addons/kruise/template.yaml @@ -1,37 +1,38 @@ apiVersion: core.oam.dev/v1beta1 -kind: Initializer +kind: Application metadata: annotations: addons.oam.dev/description: "Kruise is a Kubernetes extended suite for application automations" name: kruise namespace: vela-system spec: - dependsOn: - - ref: - apiVersion: core.oam.dev/v1beta1 - kind: Initializer - name: fluxcd - namespace: vela-system - appTemplate: - spec: - components: - - name: kruise - type: helm - properties: - repoType: git - url: https://github.com/openkruise/kruise - chart: ./charts/kruise/v0.9.0 - git: - branch: master - values: - featureGates: PreDownloadImageForInPlaceUpdate=true + workflow: + steps: + - name: checking-depends-on + type: depends-on-app + properties: + name: fluxcd + namespace: vela-system + - name: apply-resources + type: apply-application + components: + - name: kruise + type: helm + properties: + repoType: git + url: https://github.com/openkruise/kruise + chart: ./charts/kruise/v0.9.0 + git: + branch: master + values: + featureGates: PreDownloadImageForInPlaceUpdate=true {{ range .ResourceFiles }} - - name: {{ .Name }} - type: raw - properties: -{{ .Content | indent 12 }} {{ end }} + - name: {{ .Name }} + type: raw + properties: +{{ .Content | indent 8 }} {{ end }} {{ range .DefinitionFiles }} - - name: {{ .Name }} - type: raw - properties: -{{ .Content | indent 12 }} {{ end }} + - name: {{ .Name }} + type: raw + properties: +{{ .Content | indent 8 }} {{ end }} diff --git a/vela-templates/addons/ns-flux-system/resource/namespace.yaml b/vela-templates/addons/ns-flux-system/resource/namespace.yaml deleted file mode 100644 index ea3f7e960..000000000 --- a/vela-templates/addons/ns-flux-system/resource/namespace.yaml +++ /dev/null @@ -1,4 +0,0 @@ -apiVersion: v1 -kind: Namespace -metadata: - name: flux-system \ No newline at end of file diff --git a/vela-templates/addons/ns-flux-system/template.yaml b/vela-templates/addons/ns-flux-system/template.yaml deleted file mode 100644 index f2a0e185d..000000000 --- a/vela-templates/addons/ns-flux-system/template.yaml +++ /dev/null @@ -1,21 +0,0 @@ -apiVersion: core.oam.dev/v1beta1 -kind: Initializer -metadata: - annotations: - addons.oam.dev/description: "Create namespace for flux-system" - name: ns-flux-system - namespace: vela-system -spec: - appTemplate: - spec: - components: -{{ range .ResourceFiles }} - - name: {{ .Name }} - type: raw - properties: -{{ .Content | indent 12 }} {{ end }} -{{ range .DefinitionFiles }} - - name: {{ .Name }} - type: raw - properties: -{{ .Content | indent 12 }} {{ end }} diff --git a/vela-templates/addons/ns-istio-system/resource/namespace.yaml b/vela-templates/addons/ns-istio-system/resource/namespace.yaml deleted file mode 100644 index d5eee5ac9..000000000 --- a/vela-templates/addons/ns-istio-system/resource/namespace.yaml +++ /dev/null @@ -1,4 +0,0 @@ -apiVersion: v1 -kind: Namespace -metadata: - name: istio-system \ No newline at end of file diff --git a/vela-templates/addons/ns-istio-system/template.yaml b/vela-templates/addons/ns-istio-system/template.yaml deleted file mode 100644 index 28bad1fd1..000000000 --- a/vela-templates/addons/ns-istio-system/template.yaml +++ /dev/null @@ -1,16 +0,0 @@ -apiVersion: core.oam.dev/v1beta1 -kind: Initializer -metadata: - annotations: - addons.oam.dev/description: "Create namespace for istio-system" - name: ns-istio-system - namespace: vela-system -spec: - appTemplate: - spec: - components: -{{ range .ResourceFiles }} - - name: {{ .Name }} - type: raw - properties: -{{ .Content | indent 12 }} {{ end }} diff --git a/vela-templates/addons/observability-asset/definitions/trait-import-grafana-dashboard.yaml b/vela-templates/addons/observability-asset/definitions/trait-import-grafana-dashboard.yaml deleted file mode 100644 index 8a79a7219..000000000 --- a/vela-templates/addons/observability-asset/definitions/trait-import-grafana-dashboard.yaml +++ /dev/null @@ -1,31 +0,0 @@ -apiVersion: core.oam.dev/v1beta1 -kind: TraitDefinition -metadata: - annotations: - definition.oam.dev/description: "Import dashboards to Grafana" - name: import-grafana-dashboard - namespace: vela-system -spec: - schematic: - cue: - template: | - outputs: registerdatasource: { - apiVersion: "grafana.extension.oam.dev/v1alpha1" - kind: "ImportDashboard" - spec: { - grafana: { - service: parameter.grafanaServiceName - namespace: parameter.grafanaServiceNamespace - credentialSecret: parameter.credentialSecret - credentialSecretNamespace: parameter.credentialSecretNamespace - } - urls: parameter.urls - } - } - parameter: { - grafanaServiceName: string - grafanaServiceNamespace: *"default" | string - credentialSecret: string - credentialSecretNamespace: *"default" | string - urls: [...string] - } \ No newline at end of file diff --git a/vela-templates/addons/observability-asset/definitions/trait-pure-ingress.yaml b/vela-templates/addons/observability-asset/definitions/trait-pure-ingress.yaml deleted file mode 100644 index 9fa412b91..000000000 --- a/vela-templates/addons/observability-asset/definitions/trait-pure-ingress.yaml +++ /dev/null @@ -1,58 +0,0 @@ -apiVersion: core.oam.dev/v1beta1 -kind: TraitDefinition -metadata: - annotations: - definition.oam.dev/description: "Enable public web traffic for the component without creating a Service." - name: pure-ingress - namespace: vela-system -spec: - status: - customStatus: |- - let igs = context.outputs.ingress.status.loadBalancer.ingress - if igs == _|_ { - message: "No loadBalancer found, visiting by using 'vela port-forward " + context.appName + " --route'\n" - } - if len(igs) > 0 { - if igs[0].ip != _|_ { - message: "Visiting URL: " + context.outputs.ingress.spec.rules[0].host + ", IP: " + igs[0].ip - } - if igs[0].ip == _|_ { - message: "Visiting URL: " + context.outputs.ingress.spec.rules[0].host - } - } - healthPolicy: | - isHealth: len(context.outputs.ingress.status.loadBalancer.ingress) > 0 - schematic: - cue: - template: | - - outputs: ingress: { - apiVersion: "networking.k8s.io/v1beta1" - kind: "Ingress" - metadata: - name: context.name - spec: { - rules: [{ - host: parameter.domain - http: { - paths: [ - for k, v in parameter.http { - path: k - backend: { - serviceName: context.name - servicePort: v - } - }, - ] - } - }] - } - } - - parameter: { - // +usage=Specify the domain you want to expose - domain: string - - // +usage=Specify the mapping relationship between the http path and the workload port - http: [string]: int - } diff --git a/vela-templates/addons/observability-asset/definitions/trait-register-grafana-datasource.yaml b/vela-templates/addons/observability-asset/definitions/trait-register-grafana-datasource.yaml deleted file mode 100644 index 486ed431d..000000000 --- a/vela-templates/addons/observability-asset/definitions/trait-register-grafana-datasource.yaml +++ /dev/null @@ -1,42 +0,0 @@ -apiVersion: core.oam.dev/v1beta1 -kind: TraitDefinition -metadata: - annotations: - definition.oam.dev/description: "Add a datasource to Grafana" - name: register-grafana-datasource - namespace: vela-system -spec: - schematic: - cue: - template: | - outputs: registerdatasource: { - apiVersion: "grafana.extension.oam.dev/v1alpha1" - kind: "DatasourceRegistration" - spec: { - grafana: { - service: parameter.grafanaServiceName - namespace: parameter.grafanaServiceNamespace - credentialSecret: parameter.credentialSecret - credentialSecretNamespace: parameter.credentialSecretNamespace - } - datasource: { - name: parameter.name - type: parameter.type - access: parameter.access - service: parameter.service - namespace: parameter.namespace - } - } - } - - parameter: { - grafanaServiceName: string - grafanaServiceNamespace: *"default" | string - credentialSecret: string - credentialSecretNamespace: string - name: string - type: string - access: *"proxy" | string - service: string - namespace: *"default" | string - } diff --git a/vela-templates/addons/observability-asset/resource/namespace.yaml b/vela-templates/addons/observability-asset/resource/namespace.yaml deleted file mode 100644 index 4872021cb..000000000 --- a/vela-templates/addons/observability-asset/resource/namespace.yaml +++ /dev/null @@ -1,4 +0,0 @@ -apiVersion: v1 -kind: Namespace -metadata: - name: observability \ No newline at end of file diff --git a/vela-templates/addons/observability-asset/template.yaml b/vela-templates/addons/observability-asset/template.yaml deleted file mode 100644 index f927dab06..000000000 --- a/vela-templates/addons/observability-asset/template.yaml +++ /dev/null @@ -1,21 +0,0 @@ -apiVersion: core.oam.dev/v1beta1 -kind: Initializer -metadata: - annotations: - addons.oam.dev/description: "Preparations that observability need" - name: observability-asset - namespace: vela-system -spec: - appTemplate: - spec: - components: -{{ range .ResourceFiles }} - - name: {{ .Name }} - type: raw - properties: -{{ .Content | indent 12 }} {{ end }} -{{ range .DefinitionFiles }} - - name: {{ .Name }} - type: raw - properties: -{{ .Content | indent 12 }} {{ end }} diff --git a/vela-templates/addons/observability/template.yaml b/vela-templates/addons/observability/template.yaml index d8dbebf19..ebd62767f 100644 --- a/vela-templates/addons/observability/template.yaml +++ b/vela-templates/addons/observability/template.yaml @@ -1,147 +1,306 @@ apiVersion: core.oam.dev/v1beta1 -kind: Initializer +kind: Application metadata: annotations: addons.oam.dev/description: "An out of the box solution for KubeVela observability" name: observability - namespace: observability + namespace: vela-system spec: - dependsOn: - - ref: + workflow: + steps: + - name: checking-depends-on + type: depends-on-app + properties: + name: fluxcd + namespace: vela-system + - name: apply-ns + type: apply-component + properties: + component: ns-observability + - name: apply-trait-1 + type: apply-component + properties: + component: import-grafana-dashboard-traitdef + - name: apply-trait-2 + type: apply-component + properties: + component: pure-ingress-traitdef + - name: apply-trait-3 + type: apply-component + properties: + component: register-grafana-datasource-traitdef + - name: apply-resources + type: apply-remaining + components: + - name: ns-observability + type: raw + properties: + apiVersion: v1 + kind: Namespace + metadata: + name: observability + - name: import-grafana-dashboard-traitdef + type: raw + properties: apiVersion: core.oam.dev/v1beta1 - kind: Initializer - name: fluxcd - namespace: vela-system - - ref: + kind: TraitDefinition + metadata: + annotations: + definition.oam.dev/description: "Import dashboards to Grafana" + name: import-grafana-dashboard + namespace: vela-system + spec: + schematic: + cue: + template: | + outputs: registerdatasource: { + apiVersion: "grafana.extension.oam.dev/v1alpha1" + kind: "ImportDashboard" + spec: { + grafana: { + service: parameter.grafanaServiceName + namespace: parameter.grafanaServiceNamespace + credentialSecret: parameter.credentialSecret + credentialSecretNamespace: parameter.credentialSecretNamespace + } + urls: parameter.urls + } + } + parameter: { + grafanaServiceName: string + grafanaServiceNamespace: *"default" | string + credentialSecret: string + credentialSecretNamespace: *"default" | string + urls: [...string] + } + - name: pure-ingress-traitdef + type: raw + properties: apiVersion: core.oam.dev/v1beta1 - kind: Initializer - name: observability-asset - namespace: vela-system - appTemplate: - spec: - components: - - name: grafana-registration - type: helm - properties: - repoType: git - url: https://github.com/oam-dev/grafana-registration - git: - branch: master - chart: ./chart - targetNamespace: observability - values: - replicaCount: 1 + kind: TraitDefinition + metadata: + annotations: + definition.oam.dev/description: "Enable public web traffic for the component without creating a Service." + name: pure-ingress + namespace: vela-system + spec: + status: + customStatus: |- + let igs = context.outputs.ingress.status.loadBalancer.ingress + if igs == _|_ { + message: "No loadBalancer found, visiting by using 'vela port-forward " + context.appName + " --route'\n" + } + if len(igs) > 0 { + if igs[0].ip != _|_ { + message: "Visiting URL: " + context.outputs.ingress.spec.rules[0].host + ", IP: " + igs[0].ip + } + if igs[0].ip == _|_ { + message: "Visiting URL: " + context.outputs.ingress.spec.rules[0].host + } + } + healthPolicy: | + isHealth: len(context.outputs.ingress.status.loadBalancer.ingress) > 0 + schematic: + cue: + template: | - # install Grafana - - name: grafana - properties: - chart: grafana - version: 6.14.1 - repoType: helm - # original url: https://grafana.github.io/helm-charts - url: https://charts.kubevela.net/addons - targetNamespace: observability - releaseName: grafana - type: helm - traits: - - type: pure-ingress - properties: - domain: '[[ index .Args "grafana-domain" ]]' - http: - "/": 80 - - type: import-grafana-dashboard - properties: - grafanaServiceName: grafana - grafanaServiceNamespace: observability - credentialSecret: grafana - credentialSecretNamespace: observability - urls: - - https://charts.kubevela.net/addons/dashboards/kubevela_core_logging.json - - https://charts.kubevela.net/addons/dashboards/kubevela_core_monitoring.json - - https://charts.kubevela.net/addons/dashboards/kubevela_application_logging.json - - https://charts.kubevela.net/addons/dashboards/flux2/cluster.json # fluxcd + outputs: ingress: { + apiVersion: "networking.k8s.io/v1beta1" + kind: "Ingress" + metadata: + name: context.name + spec: { + rules: [{ + host: parameter.domain + http: { + paths: [ + for k, v in parameter.http { + path: k + backend: { + serviceName: context.name + servicePort: v + } + }, + ] + } + }] + } + } - # install loki - - name: loki - type: helm - properties: - chart: loki-stack - version: 2.4.1 - repoType: helm - # original url: https://grafana.github.io/helm-charts - url: https://charts.kubevela.net/addons - targetNamespace: observability - releaseName: loki - traits: - - type: register-grafana-datasource # register loki datasource to Grafana - properties: - grafanaServiceName: grafana - grafanaServiceNamespace: observability - credentialSecret: grafana - credentialSecretNamespace: observability - name: loki - service: loki - namespace: observability - type: loki - access: proxy + parameter: { + // +usage=Specify the domain you want to expose + domain: string - # install Prometheus - - name: prometheus-server - type: helm - properties: - chart: prometheus - version: 14.4.1 - repoType: helm - # original url: https://prometheus-community.github.io/helm-charts - url: https://charts.kubevela.net/addons - targetNamespace: observability - releaseName: prometheus - values: - alertmanager: - persistentVolume: - enabled: '[[ index .Args "alertmanager-pvc-enabled" | default "true" ]]' - storageClass: '[[ index .Args "alertmanager-pvc-class" ]]' - size: '[[ index .Args "alertmanager-pvc-size" | default "20Gi" ]]' - server: - persistentVolume: - enabled: '[[ index .Args "server-pvc-enabled" | default "true" ]]' - storageClass: '[[ index .Args "server-pvc-class" ]]' - size: '[[ index .Args "server-pvc-size" | default "20Gi" ]]' - traits: - - type: register-grafana-datasource # register Prometheus datasource to Grafana - properties: - grafanaServiceName: grafana - grafanaServiceNamespace: observability - credentialSecret: grafana - credentialSecretNamespace: observability - name: prometheus - service: prometheus-server - namespace: observability - type: prometheus - access: proxy + // +usage=Specify the mapping relationship between the http path and the workload port + http: [string]: int + } + - name: register-grafana-datasource-traitdef + type: raw + properties: + apiVersion: core.oam.dev/v1beta1 + kind: TraitDefinition + metadata: + annotations: + definition.oam.dev/description: "Add a datasource to Grafana" + name: register-grafana-datasource + namespace: vela-system + spec: + schematic: + cue: + template: | + outputs: registerdatasource: { + apiVersion: "grafana.extension.oam.dev/v1alpha1" + kind: "DatasourceRegistration" + spec: { + grafana: { + service: parameter.grafanaServiceName + namespace: parameter.grafanaServiceNamespace + credentialSecret: parameter.credentialSecret + credentialSecretNamespace: parameter.credentialSecretNamespace + } + datasource: { + name: parameter.name + type: parameter.type + access: parameter.access + service: parameter.service + namespace: parameter.namespace + } + } + } - # install kube-state-metrics - - name: kube-state-metrics - type: helm - properties: - chart: kube-state-metrics - version: 3.4.1 - repoType: helm - # original url: https://prometheus-community.github.io/helm-charts - url: https://charts.kubevela.net/addons - targetNamespace: observability - values: - image: - repository: oamdev/kube-state-metrics - tag: v2.1.0 + parameter: { + grafanaServiceName: string + grafanaServiceNamespace: *"default" | string + credentialSecret: string + credentialSecretNamespace: string + name: string + type: string + access: *"proxy" | string + service: string + namespace: *"default" | string + } + - name: grafana-registration + type: helm + properties: + repoType: git + url: https://github.com/oam-dev/grafana-registration + git: + branch: master + chart: ./chart + targetNamespace: observability + values: + replicaCount: 1 + + # install Grafana + - name: grafana + properties: + chart: grafana + version: 6.14.1 + repoType: helm + # original url: https://grafana.github.io/helm-charts + url: https://charts.kubevela.net/addons + targetNamespace: observability + releaseName: grafana + type: helm + traits: + - type: pure-ingress + properties: + domain: '[[ index .Args "grafana-domain" ]]' + http: + "/": 80 + - type: import-grafana-dashboard + properties: + grafanaServiceName: grafana + grafanaServiceNamespace: observability + credentialSecret: grafana + credentialSecretNamespace: observability + urls: + - https://charts.kubevela.net/addons/dashboards/kubevela_core_logging.json + - https://charts.kubevela.net/addons/dashboards/kubevela_core_monitoring.json + - https://charts.kubevela.net/addons/dashboards/kubevela_application_logging.json + - https://charts.kubevela.net/addons/dashboards/flux2/cluster.json # fluxcd + + # install loki + - name: loki + type: helm + properties: + chart: loki-stack + version: 2.4.1 + repoType: helm + # original url: https://grafana.github.io/helm-charts + url: https://charts.kubevela.net/addons + targetNamespace: observability + releaseName: loki + traits: + - type: register-grafana-datasource # register loki datasource to Grafana + properties: + grafanaServiceName: grafana + grafanaServiceNamespace: observability + credentialSecret: grafana + credentialSecretNamespace: observability + name: loki + service: loki + namespace: observability + type: loki + access: proxy + + # install Prometheus + - name: prometheus-server + type: helm + properties: + chart: prometheus + version: 14.4.1 + repoType: helm + # original url: https://prometheus-community.github.io/helm-charts + url: https://charts.kubevela.net/addons + targetNamespace: observability + releaseName: prometheus + values: + alertmanager: + persistentVolume: + enabled: '[[ index .Args "alertmanager-pvc-enabled" | default "true" ]]' + storageClass: '[[ index .Args "alertmanager-pvc-class" ]]' + size: '[[ index .Args "alertmanager-pvc-size" | default "20Gi" ]]' + server: + persistentVolume: + enabled: '[[ index .Args "server-pvc-enabled" | default "true" ]]' + storageClass: '[[ index .Args "server-pvc-class" ]]' + size: '[[ index .Args "server-pvc-size" | default "20Gi" ]]' + traits: + - type: register-grafana-datasource # register Prometheus datasource to Grafana + properties: + grafanaServiceName: grafana + grafanaServiceNamespace: observability + credentialSecret: grafana + credentialSecretNamespace: observability + name: prometheus + service: prometheus-server + namespace: observability + type: prometheus + access: proxy + + # install kube-state-metrics + - name: kube-state-metrics + type: helm + properties: + chart: kube-state-metrics + version: 3.4.1 + repoType: helm + # original url: https://prometheus-community.github.io/helm-charts + url: https://charts.kubevela.net/addons + targetNamespace: observability + values: + image: + repository: oamdev/kube-state-metrics + tag: v2.1.0 {{ range .ResourceFiles }} - - name: {{ .Name }} - type: raw - properties: -{{ .Content | indent 12 }} {{ end }} + - name: {{ .Name }} + type: raw + properties: +{{ .Content | indent 8 }} {{ end }} {{ range .DefinitionFiles }} - - name: {{ .Name }} - type: raw - properties: -{{ .Content | indent 12 }} {{ end }} + - name: {{ .Name }} + type: raw + properties: +{{ .Content | indent 8 }} {{ end }} diff --git a/vela-templates/addons/ocm-cluster-manager/resource/namespace.yaml b/vela-templates/addons/ocm-cluster-manager/resource/namespace.yaml deleted file mode 100644 index 7ca656c13..000000000 --- a/vela-templates/addons/ocm-cluster-manager/resource/namespace.yaml +++ /dev/null @@ -1,4 +0,0 @@ -apiVersion: v1 -kind: Namespace -metadata: - name: open-cluster-management \ No newline at end of file diff --git a/vela-templates/addons/ocm-cluster-manager/template.yaml b/vela-templates/addons/ocm-cluster-manager/template.yaml index 49407bab4..f9c04090f 100644 --- a/vela-templates/addons/ocm-cluster-manager/template.yaml +++ b/vela-templates/addons/ocm-cluster-manager/template.yaml @@ -1,21 +1,34 @@ apiVersion: core.oam.dev/v1beta1 -kind: Initializer +kind: Application metadata: annotations: addons.oam.dev/description: "ocm-cluster-manager can deploy an OCM hub cluster environment." name: ocm-cluster-manager namespace: vela-system spec: - appTemplate: - spec: - components: + workflow: + steps: + - name: apply-ns + type: apply-component + properties: + component: ns-open-cluster-management + - name: apply-resources + type: apply-remaining + components: + - name: ns-open-cluster-management + type: raw + properties: + apiVersion: v1 + kind: Namespace + metadata: + name: open-cluster-management {{ range .ResourceFiles }} - - name: {{ .Name }} - type: raw - properties: -{{ .Content | indent 12 }} {{ end }} + - name: {{ .Name }} + type: raw + properties: +{{ .Content | indent 8 }} {{ end }} {{ range .DefinitionFiles }} - - name: {{ .Name }} - type: raw - properties: -{{ .Content | indent 12 }} {{ end }} + - name: {{ .Name }} + type: raw + properties: +{{ .Content | indent 8 }} {{ end }} diff --git a/vela-templates/addons/prometheus/template.yaml b/vela-templates/addons/prometheus/template.yaml index 708a3c0d7..e3ba0b39d 100644 --- a/vela-templates/addons/prometheus/template.yaml +++ b/vela-templates/addons/prometheus/template.yaml @@ -1,28 +1,29 @@ apiVersion: core.oam.dev/v1beta1 -kind: Initializer +kind: Application metadata: annotations: addons.oam.dev/description: "Prometheus is an open-source systems monitoring and alerting toolkit" name: prometheus namespace: vela-system spec: - dependsOn: - - ref: - apiVersion: core.oam.dev/v1beta1 - kind: Initializer - name: fluxcd - namespace: vela-system - appTemplate: - spec: - components: - - name: prometheus - type: helm - properties: - repoType: helm - url: https://prometheus-community.github.io/helm-charts - chart: premetheus + workflow: + steps: + - name: checking-depends-on + type: depends-on-app + properties: + name: fluxcd + namespace: vela-system + - name: apply-resources + type: apply-application + components: + - name: prometheus + type: helm + properties: + repoType: helm + url: https://prometheus-community.github.io/helm-charts + chart: premetheus {{ range .DefinitionFiles }} - name: {{ .Name }} type: raw properties: -{{ .Content | indent 12 }} {{ end }} +{{ .Content | indent 4 }} {{ end }} diff --git a/vela-templates/addons/terraform-provider-alibaba/template.yaml b/vela-templates/addons/terraform-provider-alibaba/template.yaml index 85236d255..ef0636fda 100644 --- a/vela-templates/addons/terraform-provider-alibaba/template.yaml +++ b/vela-templates/addons/terraform-provider-alibaba/template.yaml @@ -1,5 +1,5 @@ apiVersion: core.oam.dev/v1beta1 -kind: Initializer +kind: Application metadata: annotations: addons.oam.dev/description: Kubernetes Terraform Controller for Alibaba Cloud @@ -7,47 +7,45 @@ metadata: name: terraform-provider-alibaba namespace: default spec: - appTemplate: - spec: - components: - - name: alibaba-account-creds - properties: - apiVersion: v1 - kind: Secret - metadata: - name: alibaba-account-creds + components: + - name: alibaba-account-creds + properties: + apiVersion: v1 + kind: Secret + metadata: + name: alibaba-provider-secret + namespace: vela-system + type: Opaque + stringData: + credentials: | + accessKeyID: [[ index .Args "ALICLOUD_ACCESS_KEY" ]] + accessKeySecret: [[ index .Args "ALICLOUD_SECRET_KEY" ]] + securityToken: [[ index .Args "ALICLOUD_SECURITY_TOKEN" ]] + type: raw + - name: default + type: raw + properties: + apiVersion: terraform.core.oam.dev/v1beta1 + kind: Provider + metadata: + name: default + namespace: default + spec: + provider: alibaba + region: '[[ index .Args "ALICLOUD_REGION" ]]' + credentials: + source: Secret + secretRef: namespace: vela-system - type: Opaque - stringData: - credentials: | - accessKeyID: [[ index .Args "ALICLOUD_ACCESS_KEY" ]] - accessKeySecret: [[ index .Args "ALICLOUD_SECRET_KEY" ]] - securityToken: [[ index .Args "ALICLOUD_SECURITY_TOKEN" ]] - type: raw - - name: default - type: raw - properties: - apiVersion: terraform.core.oam.dev/v1beta1 - kind: Provider - metadata: - name: default - namespace: default - spec: - provider: alibaba - region: '[[ index .Args "ALICLOUD_REGION" ]]' - credentials: - source: Secret - secretRef: - namespace: vela-system - name: alibaba-account-creds - key: credentials + name: alibaba-account-creds + key: credentials {{ range .ResourceFiles }} - - name: {{ .Name }} - type: raw - properties: -{{ .Content | indent 12 }} {{ end }} + - name: {{ .Name }} + type: raw + properties: +{{ .Content | indent 8 }} {{ end }} {{ range .DefinitionFiles }} - - name: {{ .Name }} - type: raw - properties: -{{ .Content | indent 12 }} {{ end }} + - name: {{ .Name }} + type: raw + properties: +{{ .Content | indent 8 }} {{ end }} diff --git a/vela-templates/addons/terraform-provider-azure/template.yaml b/vela-templates/addons/terraform-provider-azure/template.yaml index 21f0f67a6..027556a50 100644 --- a/vela-templates/addons/terraform-provider-azure/template.yaml +++ b/vela-templates/addons/terraform-provider-azure/template.yaml @@ -1,5 +1,5 @@ apiVersion: core.oam.dev/v1beta1 -kind: Initializer +kind: Application metadata: annotations: addons.oam.dev/description: Kubernetes Terraform Controller for Azure @@ -7,47 +7,45 @@ metadata: name: terraform-provider-azure namespace: default spec: - appTemplate: - spec: - components: - - name: azure-account-creds - properties: - apiVersion: v1 - kind: Secret - metadata: - name: azure-account-creds + components: + - name: azure-account-creds + properties: + apiVersion: v1 + kind: Secret + metadata: + name: azure-account-creds + namespace: vela-system + type: Opaque + stringData: + credentials: | + armClientID: [[ index .Args "ARM_CLIENT_ID" ]] + armClientSecret: [[ index .Args "ARM_CLIENT_SECRET" ]] + armSubscriptionID: [[ index .Args "ARM_SUBSCRIPTION_ID" ]] + armTenantID: [[ index .Args "ARM_TENANT_ID" ]] + type: raw + - name: azure + type: raw + properties: + apiVersion: terraform.core.oam.dev/v1beta1 + kind: Provider + metadata: + name: azure + namespace: default + spec: + provider: azure + credentials: + source: Secret + secretRef: namespace: vela-system - type: Opaque - stringData: - credentials: | - armClientID: [[ index .Args "ARM_CLIENT_ID" ]] - armClientSecret: [[ index .Args "ARM_CLIENT_SECRET" ]] - armSubscriptionID: [[ index .Args "ARM_SUBSCRIPTION_ID" ]] - armTenantID: [[ index .Args "ARM_TENANT_ID" ]] - type: raw - - name: azure - type: raw - properties: - apiVersion: terraform.core.oam.dev/v1beta1 - kind: Provider - metadata: - name: azure - namespace: default - spec: - provider: azure - credentials: - source: Secret - secretRef: - namespace: vela-system - name: azure-account-creds - key: credentials + name: azure-account-creds + key: credentials {{ range .ResourceFiles }} - - name: {{ .Name }} - type: raw - properties: -{{ .Content | indent 12 }} {{ end }} + - name: {{ .Name }} + type: raw + properties: +{{ .Content | indent 8 }} {{ end }} {{ range .DefinitionFiles }} - - name: {{ .Name }} - type: raw - properties: -{{ .Content | indent 12 }} {{ end }} + - name: {{ .Name }} + type: raw + properties: +{{ .Content | indent 8 }} {{ end }} diff --git a/vela-templates/addons/terraform/resource/namespace.yaml b/vela-templates/addons/terraform/resource/namespace.yaml deleted file mode 100644 index 878c1fd60..000000000 --- a/vela-templates/addons/terraform/resource/namespace.yaml +++ /dev/null @@ -1,4 +0,0 @@ -apiVersion: v1 -kind: Namespace -metadata: - name: terraform-system \ No newline at end of file diff --git a/vela-templates/addons/terraform/template.yaml b/vela-templates/addons/terraform/template.yaml index d9ae6c15a..3bc2ed9fb 100644 --- a/vela-templates/addons/terraform/template.yaml +++ b/vela-templates/addons/terraform/template.yaml @@ -1,34 +1,46 @@ apiVersion: core.oam.dev/v1beta1 -kind: Initializer +kind: Application metadata: annotations: addons.oam.dev/description: "Terraform Controller is a Kubernetes Controller for Terraform." name: terraform namespace: vela-system spec: - dependsOn: - - ref: - apiVersion: core.oam.dev/v1beta1 - kind: Initializer - name: fluxcd - namespace: vela-system - appTemplate: - spec: - components: - - name: terraform-controller - type: helm - properties: - repoType: helm - url: https://charts.kubevela.net/addons - chart: terraform-controller - version: 0.1.19 + workflow: + steps: + - name: checking-depends-on + type: depends-on-app + properties: + name: fluxcd + namespace: vela-system + - name: apply-ns + type: apply-component + properties: + component: ns-terraform-system + - name: apply-resources + type: apply-remaining + components: + - name: ns-terraform-system + type: raw + properties: + apiVersion: v1 + kind: Namespace + metadata: + name: terraform-system + - name: terraform-controller + type: helm + properties: + repoType: helm + url: https://charts.kubevela.net/addons + chart: terraform-controller + version: 0.1.19 {{ range .ResourceFiles }} - - name: {{ .Name }} - type: raw - properties: -{{ .Content | indent 12 }} {{ end }} + - name: {{ .Name }} + type: raw + properties: +{{ .Content | indent 8 }} {{ end }} {{ range .DefinitionFiles }} - - name: {{ .Name }} - type: raw - properties: -{{ .Content | indent 12 }} {{ end }} + - name: {{ .Name }} + type: raw + properties: +{{ .Content | indent 8 }} {{ end }} diff --git a/vela-templates/gen_addons.go b/vela-templates/gen_addons.go index bf1e6d4c3..3643b2033 100644 --- a/vela-templates/gen_addons.go +++ b/vela-templates/gen_addons.go @@ -43,11 +43,11 @@ import ( ) const ( - // InitializerTemplateName represents the Initializer template file of addons - InitializerTemplateName = "template.yaml" + // TemplateName represents the Application template file of addons + TemplateName = "template.yaml" - // InitializerFileDir is where we store generated initializer & component definition - InitializerFileDir = "auto-gen" + // ApplicationFileDir is where we store generated application & component definition + ApplicationFileDir = "auto-gen" // ComponentDefDir is where we store correspond componentDefinition for addon ComponentDefDir = "definitions" @@ -64,7 +64,7 @@ const ( // ChartTemplateNamespace is placeholder for helm chart ChartTemplateNamespace = "{{.Values.systemDefinitionNamespace}}" - // NameAnnotation marked the addon's name if exist, or initializer's name + // NameAnnotation marked the addon's name if exist, or application's name NameAnnotation = "addons.oam.dev/name" ) @@ -96,7 +96,7 @@ func walkAllAddons(path string) ([]string, error) { addons := make([]string, 0, len(files)) for _, file := range files { - if file.IsDir() && file.Name() != InitializerFileDir { + if file.IsDir() && file.Name() != ApplicationFileDir { addons = append(addons, file.Name()) } } @@ -141,7 +141,7 @@ func getAddonInfo(addon string, addonsPath string) (*AddonInfo, error) { resourcesFiles := make([]velaFile, 0) defFiles := make([]velaFile, 0) addInfo := &AddonInfo{ - TemplatePath: filepath.Join(addonRoot, InitializerTemplateName), + TemplatePath: filepath.Join(addonRoot, TemplateName), } // raw resources directory if pathExist(resourceRoot) { @@ -180,7 +180,7 @@ func WriteToFile(filename string, data string) error { return file.Sync() } -func generateInitializer(addon *AddonInfo) (*v1beta1.Initializer, error) { +func generateApplication(addon *AddonInfo) (*v1beta1.Application, error) { templatePath := strings.Split(addon.TemplatePath, "/") templateName := templatePath[len(templatePath)-1] t, err := template.New(templateName).Funcs(sprig.TxtFuncMap()).ParseFiles(addon.TemplatePath) @@ -190,15 +190,16 @@ func generateInitializer(addon *AddonInfo) (*v1beta1.Initializer, error) { var buf bytes.Buffer err = t.Execute(&buf, addon) if err != nil { - return nil, errors.Wrapf(err, "generate Initializer %s fail", addon.TemplatePath) + fmt.Println(err) + return nil, errors.Wrapf(err, "generate Application %s fail", addon.TemplatePath) } - init := new(v1beta1.Initializer) - err = yaml.Unmarshal(buf.Bytes(), init) + app := new(v1beta1.Application) + err = yaml.Unmarshal(buf.Bytes(), app) if err != nil { return nil, err } - return init, err + return app, err } func setConfigMapLabels(addonInfo *AddonInfo) map[string]string { @@ -212,7 +213,8 @@ func setConfigMapAnnotations(addonInfo *AddonInfo) map[string]string { DescAnnotation: addonInfo.Description, } } -func removeTimestampInplace(s *string) { + +func removeUselessInplace(s *string) { timeStampwithApptemplate := "appTemplate:\n(.*metadata:)?\n[ ]*creationTimestamp: null" re := regexp.MustCompile(timeStampwithApptemplate) *s = re.ReplaceAllString(*s, "appTemplate:") @@ -220,61 +222,65 @@ func removeTimestampInplace(s *string) { pureTimeStamp := "\n[ ]*creationTimestamp: null" re = regexp.MustCompile(pureTimeStamp) *s = re.ReplaceAllString(*s, "") + + nullProperties := "\n[ ]*properties: null" + re = regexp.MustCompile(nullProperties) + *s = re.ReplaceAllString(*s, "") } // storeConfigMap store configMap in helm chart -func storeConfigMap(addonInfo *AddonInfo, initializer *v1beta1.Initializer, storePath string) error { +func storeConfigMap(addonInfo *AddonInfo, application *v1beta1.Application, storePath string) error { configMap := &corev1.ConfigMap{ TypeMeta: v1.TypeMeta{ APIVersion: "v1", Kind: "ConfigMap", }, } - addonInfo.Description = initializer.GetAnnotations()[DescAnnotation] + addonInfo.Description = application.GetAnnotations()[DescAnnotation] configMap.SetName(addonInfo.StoreName) configMap.SetNamespace(ChartTemplateNamespace) configMap.SetAnnotations(setConfigMapAnnotations(addonInfo)) configMap.SetLabels(setConfigMapLabels(addonInfo)) data := make(map[string]string, 1) - initContent, err := yaml.Marshal(initializer) + initContent, err := yaml.Marshal(application) if err != nil { return err } - data["initializer"] = string(initContent) + data["application"] = string(initContent) configMap.Data = data content, err := yaml.Marshal(configMap) if err != nil { return err } raw := string(content) - removeTimestampInplace(&raw) + removeUselessInplace(&raw) raw = strings.ReplaceAll(raw, fmt.Sprintf("'%s'", ChartTemplateNamespace), ChartTemplateNamespace) filename := storePath + "/" + addonInfo.StoreName + ".yaml" return WriteToFile(filename, raw) } -// storeInitializer store init in one file for apply directly -func storeInitializer(init *v1beta1.Initializer, addonPath string, addonName string) error { - initContent, err := yaml.Marshal(init) +// storeApplication store app in one file for apply directly +func storeApplication(app *v1beta1.Application, addonPath string, addonName string) error { + initContent, err := yaml.Marshal(app) if err != nil { return err } - filename := path.Join(addonPath, InitializerFileDir, addonName+".yaml") + filename := path.Join(addonPath, ApplicationFileDir, addonName+".yaml") contents := string(initContent) - removeTimestampInplace(&contents) + removeUselessInplace(&contents) return WriteToFile(filename, contents) } -func storeDefaultAddon(init *v1beta1.Initializer, storePath, addonName string) error { - init.SetNamespace(ChartTemplateNamespace) +func storeDefaultAddon(app *v1beta1.Application, storePath, addonName string) error { + app.SetNamespace(ChartTemplateNamespace) - init.SetAnnotations(util.MergeMapOverrideWithDst(init.Annotations, map[string]string{ + app.SetAnnotations(util.MergeMapOverrideWithDst(app.Annotations, map[string]string{ "helm.sh/hook": "post-install, post-upgrade, pre-delete", })) - initContent, err := yaml.Marshal(init) + initContent, err := yaml.Marshal(app) if err != nil { return err } @@ -282,9 +288,10 @@ func storeDefaultAddon(init *v1beta1.Initializer, storePath, addonName string) e filename := path.Join(storePath, addonName+".yaml") raw := string(initContent) raw = strings.ReplaceAll(raw, fmt.Sprintf("'%s'", ChartTemplateNamespace), ChartTemplateNamespace) - removeTimestampInplace(&raw) + removeUselessInplace(&raw) return WriteToFile(filename, raw) } + func main() { var addonsPath string var configMapStorePath string @@ -292,12 +299,12 @@ func main() { flag.StringVar(&addonsPath, "addons-path", "./vela-templates/addons", "addons path") flag.StringVar(&configMapStorePath, "store-path", "./charts/vela-core/templates/addons", "path store configMap") - flag.StringVar(&initStorePath, "init-path", "./charts/vela-core/templates/addons-default", "path to store default addon") + flag.StringVar(&initStorePath, "app-path", "./charts/vela-core/templates/addons-default", "path to store default addon") addons, err := walkAllAddons(addonsPath) dealErr := func(addonName string, err error) { if err != nil { - fmt.Printf("%s gen_addon err:%e", addonName, err) + fmt.Printf("%s gen_addon err:%+v", addonName, err) os.Exit(1) } } @@ -308,26 +315,26 @@ func main() { for _, addon := range addons { addInfo, err := getAddonInfo(addon, addonsPath) dealErr(addon, err) - init, err := generateInitializer(addInfo) + app, err := generateApplication(addInfo) dealErr(addon, err) - setAddonName(addInfo, init) - err = storeInitializer(init, addonsPath, addInfo.StoreName) + setAddonName(addInfo, app) + err = storeApplication(app, addonsPath, addInfo.StoreName) dealErr(addon, err) - err = storeConfigMap(addInfo, init, configMapStorePath) + err = storeConfigMap(addInfo, app, configMapStorePath) dealErr(addon, err) if slices.Contains(DefaultEnableAddons, addon) { - err = storeDefaultAddon(init, initStorePath, addon) + err = storeDefaultAddon(app, initStorePath, addon) dealErr(addon, err) } } } -func setAddonName(addInfo *AddonInfo, init *v1beta1.Initializer) { +func setAddonName(addInfo *AddonInfo, app *v1beta1.Application) { var name string - if val, ok := init.Annotations[NameAnnotation]; ok { + if val, ok := app.Annotations[NameAnnotation]; ok { name = val } else { - name = init.Name + name = app.Name } addInfo.Name = name addInfo.StoreName = cli.TransAddonName(name)