diff --git a/base/cert-manager/helmrelease.yaml b/base/cert-manager/helmrelease.yaml index cf763188aec794bf0319f746ba5c03a74e495356..df6c1ec88c74d59c9c879e88d01ff89161fcd261 100644 --- a/base/cert-manager/helmrelease.yaml +++ b/base/cert-manager/helmrelease.yaml @@ -1,34 +1,30 @@ ---- apiVersion: helm.toolkit.fluxcd.io/v2beta1 kind: HelmRelease metadata: name: cert-manager namespace: cert-manager spec: - interval: 2m - chart: spec: chart: cert-manager - version: v1.0.3 + interval: 5m sourceRef: - kind: HelmRepository name: jetstack namespace: flux-system - interval: 5m - - valuesFrom: - - kind: ConfigMap - name: env-values - optional: true - - kind: Secret - name: env-values - optional: true - + kind: HelmRepository + version: v1.0.3 + interval: 2m values: installCRDs: true prometheus: servicemonitor: - enabled: false labels: release: monitoring + enabled: false + valuesFrom: + - name: env-values + kind: ConfigMap + optional: true + - name: env-values + kind: Secret + optional: true diff --git a/base/cert-manager/kustomization.yaml b/base/cert-manager/kustomization.yaml index 546c618ad939bfe128be67a9c74cadfee52a8420..daf7b9b7ba001ea887c54c8bb2d13a7a3602d33c 100644 --- a/base/cert-manager/kustomization.yaml +++ b/base/cert-manager/kustomization.yaml @@ -1,3 +1,3 @@ resources: - - namespace.yaml - - helmrelease.yaml \ No newline at end of file +- namespace.yaml +- helmrelease.yaml diff --git a/base/cert-manager/namespace.yaml b/base/cert-manager/namespace.yaml index 6bc19f4ccc14e7e55832f2bddc80bc224d6d4a87..c90416ff47760d86ee1006fe08ce40cc39ec6d77 100644 --- a/base/cert-manager/namespace.yaml +++ b/base/cert-manager/namespace.yaml @@ -1,4 +1,3 @@ ---- apiVersion: v1 kind: Namespace metadata: diff --git a/base/flux/chart-repositories/banzaicloud.yaml b/base/flux/chart-repositories/banzaicloud.yaml index ed3d2cd4ddb578d0610d29e8b7502e820e663dc5..04e2cd2edf82bd53ab470f188a715ed34e2646c5 100644 --- a/base/flux/chart-repositories/banzaicloud.yaml +++ b/base/flux/chart-repositories/banzaicloud.yaml @@ -5,5 +5,5 @@ metadata: namespace: flux-system spec: interval: 24h - url: https://kubernetes-charts.banzaicloud.com timeout: 3m + url: https://kubernetes-charts.banzaicloud.com diff --git a/base/flux/chart-repositories/gitlab.yaml b/base/flux/chart-repositories/gitlab.yaml index 080c6bdfd944f2bdc9578d40233aa308d20657f1..d87984ff787b112ea19f995e612e6d0aec5f1c64 100644 --- a/base/flux/chart-repositories/gitlab.yaml +++ b/base/flux/chart-repositories/gitlab.yaml @@ -5,5 +5,5 @@ metadata: namespace: flux-system spec: interval: 24h - url: https://charts.gitlab.io/ timeout: 3m + url: https://charts.gitlab.io/ diff --git a/base/flux/chart-repositories/grafana-loki.yaml b/base/flux/chart-repositories/grafana-loki.yaml index bf9cb298862bec57b2c5d8f56dc85b1505fc1ccd..d6c6fa3907f39c6d3bb3705f2bfbdb8d154ff5da 100644 --- a/base/flux/chart-repositories/grafana-loki.yaml +++ b/base/flux/chart-repositories/grafana-loki.yaml @@ -5,5 +5,5 @@ metadata: namespace: flux-system spec: interval: 24h - url: https://grafana.github.io/loki/charts timeout: 3m + url: https://grafana.github.io/loki/charts diff --git a/base/flux/chart-repositories/jetstack.yaml b/base/flux/chart-repositories/jetstack.yaml index 1847b45d7604fb22ebb02d529bf84ec3b0ccc940..fe3269293c6e951bdb0c891a835db9ad49cb7cea 100644 --- a/base/flux/chart-repositories/jetstack.yaml +++ b/base/flux/chart-repositories/jetstack.yaml @@ -5,5 +5,5 @@ metadata: namespace: flux-system spec: interval: 24h - url: https://charts.jetstack.io/ timeout: 3m + url: https://charts.jetstack.io/ diff --git a/base/flux/chart-repositories/kustomization.yaml b/base/flux/chart-repositories/kustomization.yaml index f65b84983937bb3a6edb0dd2a67aa6292a63fa7f..1c9f7aff2ca3c24b1badb8eb26e8ff188fc4a496 100644 --- a/base/flux/chart-repositories/kustomization.yaml +++ b/base/flux/chart-repositories/kustomization.yaml @@ -1,8 +1,8 @@ resources: - - banzaicloud.yaml - - gitlab.yaml - - grafana-loki.yaml - - jetstack.yaml - - podinfo.yaml - - prometheus-community.yaml - - rancher-latest.yaml \ No newline at end of file +- banzaicloud.yaml +- gitlab.yaml +- grafana-loki.yaml +- jetstack.yaml +- podinfo.yaml +- prometheus-community.yaml +- rancher-latest.yaml diff --git a/base/flux/chart-repositories/podinfo.yaml b/base/flux/chart-repositories/podinfo.yaml index ae47775b1b6c8d91c40e644d584f977bd6b05d46..9d289ce751577380490ed54d8ec9ce6a580d79dc 100644 --- a/base/flux/chart-repositories/podinfo.yaml +++ b/base/flux/chart-repositories/podinfo.yaml @@ -5,5 +5,5 @@ metadata: namespace: flux-system spec: interval: 24h - url: https://stefanprodan.github.io/podinfo timeout: 3m + url: https://stefanprodan.github.io/podinfo diff --git a/base/flux/chart-repositories/prometheus-community.yaml b/base/flux/chart-repositories/prometheus-community.yaml index 4df5c024927d577835248e746148581563c3db92..c21aa70676ca21ecb659e0e282d42d93b8b56c5d 100644 --- a/base/flux/chart-repositories/prometheus-community.yaml +++ b/base/flux/chart-repositories/prometheus-community.yaml @@ -5,5 +5,5 @@ metadata: namespace: flux-system spec: interval: 24h - url: https://prometheus-community.github.io/helm-charts timeout: 3m + url: https://prometheus-community.github.io/helm-charts diff --git a/base/flux/chart-repositories/rancher-latest.yaml b/base/flux/chart-repositories/rancher-latest.yaml index 2c8be5caa511d5afc8e8a499073451e8202018ee..60f4917ebe0e6c0af58ba9f77e6156f275dcc6df 100644 --- a/base/flux/chart-repositories/rancher-latest.yaml +++ b/base/flux/chart-repositories/rancher-latest.yaml @@ -5,5 +5,5 @@ metadata: namespace: flux-system spec: interval: 24h - url: https://releases.rancher.com/server-charts/latest timeout: 3m + url: https://releases.rancher.com/server-charts/latest diff --git a/base/flux/kustomization.yaml b/base/flux/kustomization.yaml index 85f9b938619851b077d5cec8c6d6f20aeb30ff36..0b1387b8f104dc164dc926ce5a645ecb40599d46 100644 --- a/base/flux/kustomization.yaml +++ b/base/flux/kustomization.yaml @@ -1,3 +1,3 @@ resources: - - toolkit - - chart-repositories \ No newline at end of file +- toolkit +- chart-repositories diff --git a/base/flux/toolkit/all.yaml b/base/flux/toolkit/all.yaml index d18a6c339f5faebe6e73358c5f731a2f531eb5af..35f49e848d599786bdcd199e679941f3f09da73d 100644 --- a/base/flux/toolkit/all.yaml +++ b/base/flux/toolkit/all.yaml @@ -1,29 +1,28 @@ ---- # GitOps Toolkit revision latest # Components: source-controller,kustomize-controller,helm-controller,notification-controller apiVersion: v1 kind: Namespace metadata: + name: flux-system labels: app.kubernetes.io/instance: flux-system app.kubernetes.io/version: latest - name: flux-system --- apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: + name: allow-scraping + namespace: flux-system labels: app.kubernetes.io/instance: flux-system app.kubernetes.io/version: latest - name: allow-scraping - namespace: flux-system spec: ingress: - - from: + - ports: + - protocol: TCP + port: 8080 + from: - namespaceSelector: {} - ports: - - port: 8080 - protocol: TCP podSelector: {} policyTypes: - Ingress @@ -31,11 +30,11 @@ spec: apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: + name: allow-webhooks + namespace: flux-system labels: app.kubernetes.io/instance: flux-system app.kubernetes.io/version: latest - name: allow-webhooks - namespace: flux-system spec: ingress: - from: @@ -49,11 +48,11 @@ spec: apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: + name: deny-ingress + namespace: flux-system labels: app.kubernetes.io/instance: flux-system app.kubernetes.io/version: latest - name: deny-ingress - namespace: flux-system spec: ingress: - from: @@ -65,47 +64,47 @@ spec: apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: + name: crd-controller-flux-system + namespace: flux-system labels: app.kubernetes.io/instance: flux-system app.kubernetes.io/version: latest - name: crd-controller-flux-system - namespace: flux-system rules: -- apiGroups: - - source.toolkit.fluxcd.io - resources: +- resources: - '*' + apiGroups: + - source.toolkit.fluxcd.io verbs: - '*' -- apiGroups: - - kustomize.toolkit.fluxcd.io - resources: +- resources: - '*' + apiGroups: + - kustomize.toolkit.fluxcd.io verbs: - '*' -- apiGroups: - - helm.toolkit.fluxcd.io - resources: +- resources: - '*' + apiGroups: + - helm.toolkit.fluxcd.io verbs: - '*' -- apiGroups: - - notification.toolkit.fluxcd.io - resources: +- resources: - '*' + apiGroups: + - notification.toolkit.fluxcd.io verbs: - '*' -- apiGroups: - - "" - resources: +- resources: - configmaps - configmaps/status + apiGroups: + - "" verbs: - '*' -- apiGroups: - - "" - resources: +- resources: - events + apiGroups: + - "" verbs: - create - patch @@ -113,46 +112,46 @@ rules: apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: + name: crd-controller-flux-system + namespace: flux-system labels: app.kubernetes.io/instance: flux-system app.kubernetes.io/version: latest - name: crd-controller-flux-system - namespace: flux-system roleRef: - apiGroup: rbac.authorization.k8s.io - kind: Role name: crd-controller-flux-system + kind: Role + apiGroup: rbac.authorization.k8s.io subjects: -- kind: ServiceAccount - name: default +- name: default namespace: flux-system + kind: ServiceAccount --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: + name: cluster-reconciler-flux-system labels: app.kubernetes.io/instance: flux-system app.kubernetes.io/version: latest - name: cluster-reconciler-flux-system roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole name: cluster-admin + kind: ClusterRole + apiGroup: rbac.authorization.k8s.io subjects: -- kind: ServiceAccount - name: default +- name: default namespace: flux-system + kind: ServiceAccount --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.3.0 - creationTimestamp: null + name: buckets.source.toolkit.fluxcd.io labels: app.kubernetes.io/instance: flux-system app.kubernetes.io/version: latest - name: buckets.source.toolkit.fluxcd.io + annotations: + controller-gen.kubebuilder.io/version: v0.3.0 + creationTimestamp: null spec: group: source.toolkit.fluxcd.io names: @@ -162,135 +161,155 @@ spec: singular: bucket scope: Namespaced versions: - - additionalPrinterColumns: - - jsonPath: .spec.url - name: URL + - name: v1beta1 + additionalPrinterColumns: + - name: URL type: string - - jsonPath: .status.conditions[?(@.type=="Ready")].status - name: Ready + jsonPath: .spec.url + - name: Ready type: string - - jsonPath: .status.conditions[?(@.type=="Ready")].message - name: Status + jsonPath: .status.conditions[?(@.type=="Ready")].status + - name: Status type: string - - jsonPath: .metadata.creationTimestamp - name: Age + jsonPath: .status.conditions[?(@.type=="Ready")].message + - name: Age type: date - name: v1beta1 + jsonPath: .metadata.creationTimestamp schema: openAPIV3Schema: + type: object 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 + 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' 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 + 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' metadata: type: object spec: - description: BucketSpec defines the desired state of an S3 compatible bucket + type: object + description: BucketSpec defines the desired state of an S3 compatible + bucket properties: + secretRef: + type: object + description: The name of the secret containing authentication credentials + for the Bucket. + properties: + name: + type: string + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' bucketName: - description: The bucket name. type: string + description: The bucket name. endpoint: - description: The bucket endpoint address. type: string + description: The bucket endpoint address. 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 + 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. insecure: - description: Insecure allows connecting to a non-TLS S3 HTTP endpoint. type: boolean + description: Insecure allows connecting to a non-TLS S3 HTTP endpoint. interval: - description: The interval at which to check for bucket updates. type: string + description: The interval at which to check for bucket updates. provider: + type: string 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. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object + description: The bucket region. timeout: - description: The timeout for download operations, defaults to 20s. type: string + description: The timeout for download operations, defaults to 20s. required: - bucketName - endpoint - interval - type: object status: + type: object description: BucketStatus defines the observed state of a bucket properties: artifact: - description: Artifact represents the output of the last successful Bucket sync. + type: object + description: Artifact represents the output of the last successful + Bucket sync. properties: + revision: + type: string + 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. checksum: - description: Checksum is the SHA1 checksum of the artifact. type: string + description: Checksum is the SHA1 checksum of the artifact. lastUpdateTime: - description: LastUpdateTime is the timestamp corresponding to the last update of this artifact. - format: date-time type: string + description: LastUpdateTime is the timestamp corresponding to + the last update of this artifact. + format: date-time 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 + description: Path is the relative file path of this artifact. url: - description: URL is the HTTP address of this artifact. type: string + description: URL is the HTTP address of this artifact. required: - path - url - type: object conditions: + type: array description: Conditions holds the conditions for the Bucket. items: - description: Condition contains condition information of a toolkit resource. + type: object + description: Condition contains condition information of a toolkit + resource. properties: + type: + type: string + description: Type of the condition. + status: + type: string + description: Status of the condition, one of ('True', 'False', + 'Unknown'). lastTransitionTime: - description: LastTransitionTime is the timestamp corresponding to the last status change of this condition. - format: date-time type: string + description: LastTransitionTime is the timestamp corresponding + to the last status change of this condition. + format: date-time message: - description: Message is a human readable description of the details of the last transition, complementing reason. type: string + description: Message is a human readable description of the + details of the last transition, complementing reason. reason: - description: Reason is a brief machine readable explanation for the condition's last transition. - type: string - status: - description: Status of the condition, one of ('True', 'False', 'Unknown'). - type: string - type: - description: Type of the condition. type: string + description: Reason is a brief machine readable explanation + for the condition's last transition. required: - status - type - type: object - type: array observedGeneration: + type: integer 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 + description: URL is the download link for the artifact output of the + last Bucket sync. served: true storage: true subresources: @@ -305,13 +324,13 @@ status: apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.3.0 - creationTimestamp: null + name: gitrepositories.source.toolkit.fluxcd.io labels: app.kubernetes.io/instance: flux-system app.kubernetes.io/version: latest - name: gitrepositories.source.toolkit.fluxcd.io + annotations: + controller-gen.kubebuilder.io/version: v0.3.0 + creationTimestamp: null spec: group: source.toolkit.fluxcd.io names: @@ -321,154 +340,183 @@ spec: singular: gitrepository scope: Namespaced versions: - - additionalPrinterColumns: - - jsonPath: .spec.url - name: URL + - name: v1beta1 + additionalPrinterColumns: + - name: URL type: string - - jsonPath: .status.conditions[?(@.type=="Ready")].status - name: Ready + jsonPath: .spec.url + - name: Ready type: string - - jsonPath: .status.conditions[?(@.type=="Ready")].message - name: Status + jsonPath: .status.conditions[?(@.type=="Ready")].status + - name: Status type: string - - jsonPath: .metadata.creationTimestamp - name: Age + jsonPath: .status.conditions[?(@.type=="Ready")].message + - name: Age type: date - name: v1beta1 + jsonPath: .metadata.creationTimestamp schema: openAPIV3Schema: + type: object 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 + 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' 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 + 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' metadata: type: object spec: + type: object description: GitRepositorySpec defines the desired state of a Git repository. properties: + secretRef: + type: object + 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: + type: string + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' 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 + 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. interval: - description: The interval at which to check for repository updates. type: string + description: The interval at which to check for repository updates. ref: - description: The Git reference to checkout and monitor for changes, defaults to master branch. + type: object + description: The Git reference to checkout and monitor for changes, + defaults to master branch. properties: branch: - description: The Git branch to checkout, defaults to master. type: string + description: The Git branch to checkout, defaults to master. commit: - description: The Git commit SHA to checkout, if specified Tag filters will be ignored. type: string + description: The Git commit SHA to checkout, if specified Tag + filters will be ignored. semver: - description: The Git tag semver expression, takes precedence over Tag. type: string + description: The Git tag semver expression, takes precedence over + Tag. 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. - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string - type: object + description: The Git tag to checkout, takes precedence over Branch. timeout: - description: The timeout for remote Git operations like cloning, defaults to 20s. type: string + description: The timeout for remote Git operations like cloning, defaults + to 20s. url: + type: string description: The repository URL, can be a HTTP/S or SSH address. pattern: ^(http|https|ssh):// - type: string verify: - description: Verify OpenPGP signature for the Git commit HEAD points to. + type: object + description: Verify OpenPGP signature for the Git commit HEAD points + to. properties: - mode: - description: Mode describes what git object should be verified, currently ('head'). - enum: - - head - type: string secretRef: - description: The secret name containing the public keys of all trusted Git authors. + type: object + description: The secret name containing the public keys of all + trusted Git authors. properties: name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string - type: object + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + mode: + type: string + description: Mode describes what git object should be verified, + currently ('head'). + enum: + - head required: - mode - type: object required: - interval - url - type: object status: + type: object description: GitRepositoryStatus defines the observed state of a Git repository. properties: artifact: - description: Artifact represents the output of the last successful repository sync. + type: object + description: Artifact represents the output of the last successful + repository sync. properties: + revision: + type: string + 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. checksum: - description: Checksum is the SHA1 checksum of the artifact. type: string + description: Checksum is the SHA1 checksum of the artifact. lastUpdateTime: - description: LastUpdateTime is the timestamp corresponding to the last update of this artifact. - format: date-time type: string + description: LastUpdateTime is the timestamp corresponding to + the last update of this artifact. + format: date-time 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 + description: Path is the relative file path of this artifact. url: - description: URL is the HTTP address of this artifact. type: string + description: URL is the HTTP address of this artifact. required: - path - url - type: object conditions: + type: array description: Conditions holds the conditions for the GitRepository. items: - description: Condition contains condition information of a toolkit resource. + type: object + description: Condition contains condition information of a toolkit + resource. properties: + type: + type: string + description: Type of the condition. + status: + type: string + description: Status of the condition, one of ('True', 'False', + 'Unknown'). lastTransitionTime: - description: LastTransitionTime is the timestamp corresponding to the last status change of this condition. - format: date-time type: string + description: LastTransitionTime is the timestamp corresponding + to the last status change of this condition. + format: date-time message: - description: Message is a human readable description of the details of the last transition, complementing reason. type: string + description: Message is a human readable description of the + details of the last transition, complementing reason. reason: - description: Reason is a brief machine readable explanation for the condition's last transition. - type: string - status: - description: Status of the condition, one of ('True', 'False', 'Unknown'). - type: string - type: - description: Type of the condition. type: string + description: Reason is a brief machine readable explanation + for the condition's last transition. required: - status - type - type: object - type: array observedGeneration: + type: integer 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 + description: URL is the download link for the artifact output of the + last repository sync. served: true storage: true subresources: @@ -483,13 +531,13 @@ status: apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.3.0 - creationTimestamp: null + name: helmcharts.source.toolkit.fluxcd.io labels: app.kubernetes.io/instance: flux-system app.kubernetes.io/version: latest - name: helmcharts.source.toolkit.fluxcd.io + annotations: + controller-gen.kubebuilder.io/version: v0.3.0 + creationTimestamp: null spec: group: source.toolkit.fluxcd.io names: @@ -499,142 +547,159 @@ spec: singular: helmchart scope: Namespaced versions: - - additionalPrinterColumns: - - jsonPath: .spec.chart - name: Chart + - name: v1beta1 + additionalPrinterColumns: + - name: Chart type: string - - jsonPath: .spec.version - name: Version + jsonPath: .spec.chart + - name: Version type: string - - jsonPath: .spec.sourceRef.kind - name: Source Kind + jsonPath: .spec.version + - name: Source Kind type: string - - jsonPath: .spec.sourceRef.name - name: Source Name + jsonPath: .spec.sourceRef.kind + - name: Source Name type: string - - jsonPath: .status.conditions[?(@.type=="Ready")].status - name: Ready + jsonPath: .spec.sourceRef.name + - name: Ready type: string - - jsonPath: .status.conditions[?(@.type=="Ready")].message - name: Status + jsonPath: .status.conditions[?(@.type=="Ready")].status + - name: Status type: string - - jsonPath: .metadata.creationTimestamp - name: Age + jsonPath: .status.conditions[?(@.type=="Ready")].message + - name: Age type: date - name: v1beta1 + jsonPath: .metadata.creationTimestamp schema: openAPIV3Schema: + type: object 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 + 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' 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 + 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' metadata: type: object spec: + type: object 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 + description: The name or path the Helm chart is available at in the + SourceRef. interval: - description: The interval at which to check the Source for updates. type: string + description: The interval at which to check the Source for updates. sourceRef: + type: object description: The reference to the Source the chart is available at. properties: + name: + type: string + description: Name of the referent. apiVersion: - description: APIVersion of the referent. type: string + description: APIVersion of the referent. kind: - description: Kind of the referent, valid values are ('HelmRepository', 'GitRepository', 'Bucket'). + type: string + 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 valuesFile: - description: Alternative values file to use as the default chart values, expected to be a relative path in the SourceRef. Ignored when omitted. type: string + description: Alternative values file to use as the default chart values, + expected to be a relative path in the SourceRef. Ignored when omitted. version: - description: The chart version semver expression, ignored for charts from GitRepository and Bucket sources. Defaults to latest when omitted. type: string + description: The chart version semver expression, ignored for charts + from GitRepository and Bucket sources. Defaults to latest when omitted. required: - chart - interval - sourceRef - type: object status: + type: object description: HelmChartStatus defines the observed state of the HelmChart. properties: artifact: - description: Artifact represents the output of the last successful chart sync. + type: object + description: Artifact represents the output of the last successful + chart sync. properties: + revision: + type: string + 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. checksum: - description: Checksum is the SHA1 checksum of the artifact. type: string + description: Checksum is the SHA1 checksum of the artifact. lastUpdateTime: - description: LastUpdateTime is the timestamp corresponding to the last update of this artifact. - format: date-time type: string + description: LastUpdateTime is the timestamp corresponding to + the last update of this artifact. + format: date-time 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 + description: Path is the relative file path of this artifact. url: - description: URL is the HTTP address of this artifact. type: string + description: URL is the HTTP address of this artifact. required: - path - url - type: object conditions: + type: array description: Conditions holds the conditions for the HelmChart. items: - description: Condition contains condition information of a toolkit resource. + type: object + description: Condition contains condition information of a toolkit + resource. properties: + type: + type: string + description: Type of the condition. + status: + type: string + description: Status of the condition, one of ('True', 'False', + 'Unknown'). lastTransitionTime: - description: LastTransitionTime is the timestamp corresponding to the last status change of this condition. - format: date-time type: string + description: LastTransitionTime is the timestamp corresponding + to the last status change of this condition. + format: date-time message: - description: Message is a human readable description of the details of the last transition, complementing reason. type: string + description: Message is a human readable description of the + details of the last transition, complementing reason. reason: - description: Reason is a brief machine readable explanation for the condition's last transition. - type: string - status: - description: Status of the condition, one of ('True', 'False', 'Unknown'). - type: string - type: - description: Type of the condition. type: string + description: Reason is a brief machine readable explanation + for the condition's last transition. required: - status - type - type: object - type: array observedGeneration: + type: integer 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 + description: URL is the download link for the last chart pulled. served: true storage: true subresources: @@ -649,13 +714,13 @@ status: apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.3.0 - creationTimestamp: null + name: helmrepositories.source.toolkit.fluxcd.io labels: app.kubernetes.io/instance: flux-system app.kubernetes.io/version: latest - name: helmrepositories.source.toolkit.fluxcd.io + annotations: + controller-gen.kubebuilder.io/version: v0.3.0 + creationTimestamp: null spec: group: source.toolkit.fluxcd.io names: @@ -665,116 +730,134 @@ spec: singular: helmrepository scope: Namespaced versions: - - additionalPrinterColumns: - - jsonPath: .spec.url - name: URL + - name: v1beta1 + additionalPrinterColumns: + - name: URL type: string - - jsonPath: .status.conditions[?(@.type=="Ready")].status - name: Ready + jsonPath: .spec.url + - name: Ready type: string - - jsonPath: .status.conditions[?(@.type=="Ready")].message - name: Status + jsonPath: .status.conditions[?(@.type=="Ready")].status + - name: Status type: string - - jsonPath: .metadata.creationTimestamp - name: Age + jsonPath: .status.conditions[?(@.type=="Ready")].message + - name: Age type: date - name: v1beta1 + jsonPath: .metadata.creationTimestamp schema: openAPIV3Schema: + type: object 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 + 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' 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 + 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' metadata: type: object spec: + type: object description: HelmRepositorySpec defines the reference to a Helm repository. properties: - interval: - description: The interval at which to check the upstream for updates. - type: string 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. + type: object + 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. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string - type: object + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + interval: + type: string + description: The interval at which to check the upstream for updates. timeout: - description: The timeout of index downloading, defaults to 60s. type: string + description: The timeout of index downloading, defaults to 60s. url: - description: The Helm repository URL, a valid URL contains at least a protocol and host. type: string + description: The Helm repository URL, a valid URL contains at least + a protocol and host. required: - interval - url - type: object status: + type: object description: HelmRepositoryStatus defines the observed state of the HelmRepository. properties: artifact: - description: Artifact represents the output of the last successful repository sync. + type: object + description: Artifact represents the output of the last successful + repository sync. properties: + revision: + type: string + 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. checksum: - description: Checksum is the SHA1 checksum of the artifact. type: string + description: Checksum is the SHA1 checksum of the artifact. lastUpdateTime: - description: LastUpdateTime is the timestamp corresponding to the last update of this artifact. - format: date-time type: string + description: LastUpdateTime is the timestamp corresponding to + the last update of this artifact. + format: date-time 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 + description: Path is the relative file path of this artifact. url: - description: URL is the HTTP address of this artifact. type: string + description: URL is the HTTP address of this artifact. required: - path - url - type: object conditions: + type: array description: Conditions holds the conditions for the HelmRepository. items: - description: Condition contains condition information of a toolkit resource. + type: object + description: Condition contains condition information of a toolkit + resource. properties: + type: + type: string + description: Type of the condition. + status: + type: string + description: Status of the condition, one of ('True', 'False', + 'Unknown'). lastTransitionTime: - description: LastTransitionTime is the timestamp corresponding to the last status change of this condition. - format: date-time type: string + description: LastTransitionTime is the timestamp corresponding + to the last status change of this condition. + format: date-time message: - description: Message is a human readable description of the details of the last transition, complementing reason. type: string + description: Message is a human readable description of the + details of the last transition, complementing reason. reason: - description: Reason is a brief machine readable explanation for the condition's last transition. - type: string - status: - description: Status of the condition, one of ('True', 'False', 'Unknown'). - type: string - type: - description: Type of the condition. type: string + description: Reason is a brief machine readable explanation + for the condition's last transition. required: - status - type - type: object - type: array observedGeneration: + type: integer 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 + description: URL is the download link for the last index fetched. served: true storage: true subresources: @@ -789,31 +872,31 @@ status: apiVersion: v1 kind: Service metadata: + name: source-controller + namespace: flux-system labels: app.kubernetes.io/instance: flux-system app.kubernetes.io/version: latest control-plane: controller - name: source-controller - namespace: flux-system spec: + type: ClusterIP + selector: + app: source-controller ports: - name: http - port: 80 protocol: TCP + port: 80 targetPort: http - selector: - app: source-controller - type: ClusterIP --- apiVersion: apps/v1 kind: Deployment metadata: + name: source-controller + namespace: flux-system labels: app.kubernetes.io/instance: flux-system app.kubernetes.io/version: latest control-plane: controller - name: source-controller - namespace: flux-system spec: replicas: 1 selector: @@ -821,41 +904,36 @@ spec: app: source-controller template: metadata: + labels: + app: source-controller annotations: prometheus.io/port: "8080" prometheus.io/scrape: "true" - labels: - app: source-controller spec: + terminationGracePeriodSeconds: 10 + nodeSelector: + kubernetes.io/arch: amd64 + kubernetes.io/os: linux containers: - - args: + - name: manager + image: ghcr.io/fluxcd/source-controller:v0.2.1 + args: - --events-addr=http://notification-controller/ - --watch-all-namespaces=true - --log-level=info - --log-json - --enable-leader-election - --storage-path=/data + ports: + - name: http + containerPort: 9090 + - name: http-prom + containerPort: 8080 env: - name: RUNTIME_NAMESPACE valueFrom: fieldRef: fieldPath: metadata.namespace - image: ghcr.io/fluxcd/source-controller:v0.2.1 - imagePullPolicy: IfNotPresent - livenessProbe: - httpGet: - path: / - port: http - name: manager - ports: - - containerPort: 9090 - name: http - - containerPort: 8080 - name: http-prom - readinessProbe: - httpGet: - path: / - port: http resources: limits: cpu: 1000m @@ -863,34 +941,39 @@ spec: requests: cpu: 50m memory: 64Mi + volumeMounts: + - name: data + mountPath: /data + - name: tmp + mountPath: /tmp + livenessProbe: + httpGet: + port: http + path: / + readinessProbe: + httpGet: + port: http + path: / + imagePullPolicy: IfNotPresent securityContext: allowPrivilegeEscalation: false readOnlyRootFilesystem: true - volumeMounts: - - mountPath: /data - name: data - - mountPath: /tmp - name: tmp - nodeSelector: - kubernetes.io/arch: amd64 - kubernetes.io/os: linux - terminationGracePeriodSeconds: 10 volumes: - - emptyDir: {} - name: data - - emptyDir: {} - name: tmp + - name: data + emptyDir: {} + - name: tmp + emptyDir: {} --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.3.0 - creationTimestamp: null + name: kustomizations.kustomize.toolkit.fluxcd.io labels: app.kubernetes.io/instance: flux-system app.kubernetes.io/version: latest - name: kustomizations.kustomize.toolkit.fluxcd.io + annotations: + controller-gen.kubebuilder.io/version: v0.3.0 + creationTimestamp: null spec: group: kustomize.toolkit.fluxcd.io names: @@ -902,236 +985,275 @@ spec: singular: kustomization scope: Namespaced versions: - - additionalPrinterColumns: - - jsonPath: .status.conditions[?(@.type=="Ready")].status - name: Ready + - name: v1beta1 + additionalPrinterColumns: + - name: Ready type: string - - jsonPath: .status.conditions[?(@.type=="Ready")].message - name: Status + jsonPath: .status.conditions[?(@.type=="Ready")].status + - name: Status type: string - - jsonPath: .metadata.creationTimestamp - name: Age + jsonPath: .status.conditions[?(@.type=="Ready")].message + - name: Age type: date - name: v1beta1 + jsonPath: .metadata.creationTimestamp schema: openAPIV3Schema: + type: object 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 + 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' 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 + 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' metadata: type: object spec: + type: object description: KustomizationSpec defines the desired state of a kustomization. properties: - decryption: - description: Decrypt Kubernetes secrets before applying them on the cluster. + serviceAccount: + type: object + description: The Kubernetes service account used for applying the + kustomization. properties: - provider: - description: Provider is the name of the decryption engine. - enum: - - sops + name: type: string + description: Name is the name of the service account being referenced. + namespace: + type: string + description: Namespace is the namespace of the service account + being referenced. + required: + - name + - namespace + decryption: + type: object + description: Decrypt Kubernetes secrets before applying them on the + cluster. + properties: secretRef: - description: The secret name containing the private OpenPGP keys used for decryption. + type: object + description: The secret name containing the private OpenPGP keys + used for decryption. properties: name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string - type: object + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + provider: + type: string + description: Provider is the name of the decryption engine. + enum: + - sops 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. + type: array + 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. + type: object + description: CrossNamespaceDependencyReference holds the reference + to a dependency. properties: name: - description: Name holds the name reference of a dependency. type: string + description: Name holds the name reference of a dependency. namespace: - description: Namespace holds the namespace reference of a dependency. type: string + description: Namespace holds the namespace reference of a dependency. required: - name - type: object - type: array healthChecks: + type: array description: A list of resources to be included in the health assessment. items: - description: CrossNamespaceObjectReference contains enough information to let you locate the typed referenced object at cluster level + type: object + description: CrossNamespaceObjectReference contains enough information + to let you locate the typed referenced object at cluster level properties: - apiVersion: - description: API version of the referent, defaults to 'apps/v1' - type: string - kind: - description: Kind of the referent - type: string name: - description: Name of the referent type: string + description: Name of the referent namespace: + type: string description: Namespace of the referent + apiVersion: + type: string + description: API version of the referent, defaults to 'apps/v1' + kind: type: string + description: Kind of the referent required: - kind - name - type: object - type: array interval: - description: The interval at which to reconcile the kustomization. type: string + description: The interval at which to reconcile the kustomization. kubeConfig: - description: The KubeConfig for reconciling the Kustomization on a remote cluster. + type: object + description: The KubeConfig for reconciling the Kustomization on a + remote cluster. 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. + type: object + 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. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string - type: object - type: object + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' path: + type: string description: Path to the directory containing the kustomization file. pattern: ^\./ - type: string prune: - description: Prune enables garbage collection. type: boolean - serviceAccount: - description: The Kubernetes service account used for applying the kustomization. + description: Prune enables garbage collection. + sourceRef: + type: object + description: Reference of the source where the kustomization file + is. properties: name: - description: Name is the name of the service account being referenced. type: string + description: Name of the referent namespace: - description: Namespace is the namespace of the service account being referenced. type: string - required: - - name - - namespace - type: object - sourceRef: - description: Reference of the source where the kustomization file is. - properties: + description: Namespace of the referent, defaults to the Kustomization + namespace apiVersion: - description: API version of the referent type: string + description: API version of the referent kind: + type: string 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 + description: This flag tells the controller to suspend subsequent + kustomize executions, it does not apply to already started executions. + Defaults to false. targetNamespace: - description: TargetNamespace sets or overrides the namespace in the kustomization.yaml file. + type: string + 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 + description: Timeout for validation, apply and health checking operations. + Defaults to 'Interval' duration. validation: - description: Validate the Kubernetes objects before applying them on the cluster. The validation strategy can be 'client' (local dry-run) or 'server' (APIServer dry-run). + type: string + description: Validate the Kubernetes objects before applying them + on the cluster. The validation strategy can be 'client' (local dry-run) + or 'server' (APIServer dry-run). enum: - client - server - type: string required: - interval - path - prune - sourceRef - type: object status: + type: object description: KustomizationStatus defines the observed state of a kustomization. properties: conditions: + type: array items: - description: Condition contains condition information of a toolkit resource. + type: object + description: Condition contains condition information of a toolkit + resource. properties: + type: + type: string + description: Type of the condition. + status: + type: string + description: Status of the condition, one of ('True', 'False', + 'Unknown'). lastTransitionTime: - description: LastTransitionTime is the timestamp corresponding to the last status change of this condition. - format: date-time type: string + description: LastTransitionTime is the timestamp corresponding + to the last status change of this condition. + format: date-time message: - description: Message is a human readable description of the details of the last transition, complementing reason. type: string + description: Message is a human readable description of the + details of the last transition, complementing reason. reason: - description: Reason is a brief machine readable explanation for the condition's last transition. - type: string - status: - description: Status of the condition, one of ('True', 'False', 'Unknown'). - type: string - type: - description: Type of the condition. type: string + description: Reason is a brief machine readable explanation + for the condition's last transition. required: - status - type - type: object - type: array lastAppliedRevision: - description: The last successfully applied revision. The revision format for Git sources is <branch|tag>/<commit-sha>. type: string + description: The last successfully applied revision. The revision + format for Git sources is <branch|tag>/<commit-sha>. lastAttemptedRevision: - description: LastAttemptedRevision is the revision of the last reconciliation attempt. type: string + description: LastAttemptedRevision is the revision of the last reconciliation + attempt. lastHandledReconcileAt: - description: LastHandledReconcileAt holds the value of the most recent reconcile request value, so a change can be detected. type: string + description: LastHandledReconcileAt holds the value of the most recent + reconcile request value, so a change can be detected. observedGeneration: + type: integer description: ObservedGeneration is the last reconciled generation. format: int64 - type: integer snapshot: + type: object description: The last successfully applied revision metadata. properties: checksum: - description: The manifests sha1 checksum. type: string + description: The manifests sha1 checksum. entries: + type: array description: A list of Kubernetes kinds grouped by namespace. items: - description: Snapshot holds the metadata of namespaced Kubernetes objects + type: object + description: Snapshot holds the metadata of namespaced Kubernetes + objects properties: + namespace: + type: string + description: The namespace of this entry. kinds: + type: object 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 - type: object - type: object served: true storage: true subresources: @@ -1146,12 +1268,12 @@ status: apiVersion: apps/v1 kind: Deployment metadata: + name: kustomize-controller + namespace: flux-system labels: app.kubernetes.io/instance: flux-system app.kubernetes.io/version: latest control-plane: controller - name: kustomize-controller - namespace: flux-system spec: replicas: 1 selector: @@ -1159,41 +1281,36 @@ spec: app: kustomize-controller template: metadata: + labels: + app: kustomize-controller annotations: prometheus.io/port: "8080" prometheus.io/scrape: "true" - labels: - app: kustomize-controller spec: + terminationGracePeriodSeconds: 10 + nodeSelector: + kubernetes.io/arch: amd64 + kubernetes.io/os: linux containers: - - args: + - name: manager + image: ghcr.io/fluxcd/kustomize-controller:v0.2.0 + args: - --events-addr=http://notification-controller/ - --watch-all-namespaces=true - --log-level=info - --log-json - --enable-leader-election + ports: + - name: http-prom + containerPort: 8080 + - name: healthz + protocol: TCP + containerPort: 9440 env: - name: RUNTIME_NAMESPACE valueFrom: fieldRef: fieldPath: metadata.namespace - image: ghcr.io/fluxcd/kustomize-controller:v0.2.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 @@ -1201,30 +1318,35 @@ spec: requests: cpu: 100m memory: 64Mi + volumeMounts: + - name: temp + mountPath: /tmp + livenessProbe: + httpGet: + port: healthz + path: /healthz + readinessProbe: + httpGet: + port: healthz + path: /readyz + imagePullPolicy: IfNotPresent securityContext: allowPrivilegeEscalation: false readOnlyRootFilesystem: true - volumeMounts: - - mountPath: /tmp - name: temp - nodeSelector: - kubernetes.io/arch: amd64 - kubernetes.io/os: linux - terminationGracePeriodSeconds: 10 volumes: - - emptyDir: {} - name: temp + - name: temp + emptyDir: {} --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.3.0 - creationTimestamp: null + name: helmreleases.helm.toolkit.fluxcd.io labels: app.kubernetes.io/instance: flux-system app.kubernetes.io/version: latest - name: helmreleases.helm.toolkit.fluxcd.io + annotations: + controller-gen.kubebuilder.io/version: v0.3.0 + creationTimestamp: null spec: group: helm.toolkit.fluxcd.io names: @@ -1236,360 +1358,480 @@ spec: singular: helmrelease scope: Namespaced versions: - - additionalPrinterColumns: - - jsonPath: .status.conditions[?(@.type=="Ready")].status - name: Ready + - name: v2beta1 + additionalPrinterColumns: + - name: Ready type: string - - jsonPath: .status.conditions[?(@.type=="Ready")].message - name: Status + jsonPath: .status.conditions[?(@.type=="Ready")].status + - name: Status type: string - - jsonPath: .metadata.creationTimestamp - name: Age + jsonPath: .status.conditions[?(@.type=="Ready")].message + - name: Age type: date - name: v2beta1 + jsonPath: .metadata.creationTimestamp schema: openAPIV3Schema: + type: object 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 + 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' 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 + 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' metadata: type: object spec: + type: object 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. + type: object + 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. + type: object + 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 + description: The name or path the Helm chart is available + at in the SourceRef. interval: - description: Interval at which to check the v1beta1.Source for updates. Defaults to 'HelmReleaseSpec.Interval'. type: string + description: Interval at which to check the v1beta1.Source + for updates. Defaults to 'HelmReleaseSpec.Interval'. sourceRef: - description: The name and namespace of the v1beta1.Source the chart is available at. + type: object + 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: + type: string description: Name of the referent. maxLength: 253 minLength: 1 - type: string namespace: + type: string description: Namespace of the referent. maxLength: 63 minLength: 1 + apiVersion: type: string + description: APIVersion of the referent. + kind: + type: string + description: Kind of the referent. + enum: + - HelmRepository + - GitRepository + - Bucket 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. Ignored when omitted. type: string + description: Alternative values file to use as the default + chart values, expected to be a relative path in the SourceRef. + Ignored when omitted. version: - description: Version semver expression, ignored for charts from v1beta1.GitRepository and v1beta1.Bucket sources. Defaults to latest when omitted. type: string + description: Version semver expression, ignored for charts + from v1beta1.GitRepository and v1beta1.Bucket sources. Defaults + to latest when omitted. 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. + type: array + 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. + type: object + description: CrossNamespaceDependencyReference holds the reference + to a dependency. properties: name: - description: Name holds the name reference of a dependency. type: string + description: Name holds the name reference of a dependency. namespace: - description: Namespace holds the namespace reference of a dependency. type: string + description: Namespace holds the namespace reference of a dependency. required: - name - type: object - type: array install: - description: Install holds the configuration for Helm install actions for this HelmRelease. + type: object + description: Install holds the configuration for Helm install actions + for this HelmRelease. properties: disableHooks: - description: DisableHooks prevents hooks from running during the Helm install action. type: boolean + description: DisableHooks prevents hooks from running during the + Helm install action. disableOpenAPIValidation: - description: DisableOpenAPIValidation prevents the Helm install action from validating rendered templates against the Kubernetes OpenAPI Schema. type: boolean + description: DisableOpenAPIValidation prevents the Helm install + action from validating rendered templates against the Kubernetes + OpenAPI Schema. disableWait: - description: DisableWait disables the waiting for resources to be ready after a Helm install has been performed. type: boolean + description: DisableWait disables the waiting for resources to + be ready after a Helm install has been performed. 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. + type: object + 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 + description: IgnoreTestFailures tells the controller to skip + remediation when the Helm tests are run after an install + action but fail. Defaults to 'Test.IgnoreFailures'. remediateLastFailure: - description: RemediateLastFailure tells the controller to remediate the last failure, when no retries remain. Defaults to 'false'. type: boolean + description: RemediateLastFailure tells the controller to + remediate the last failure, when no retries remain. Defaults + to 'false'. 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 + 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. 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 + 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. skipCRDs: - description: SkipCRDs tells the Helm install action to not install any CRDs. By default, CRDs are installed if not already present. type: boolean + description: SkipCRDs tells the Helm install action to not install + any CRDs. By default, CRDs are installed if not already present. 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 + 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'. interval: - description: Interval at which to reconcile the Helm release. type: string + description: Interval at which to reconcile the Helm release. kubeConfig: - description: KubeConfig for reconciling the HelmRelease on a remote cluster. + type: object + description: KubeConfig for reconciling the HelmRelease on a remote + cluster. 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. + type: object + 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. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string - type: object - type: object + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' 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 + description: MaxHistory is the number of revisions saved by Helm for + this HelmRelease. Use '0' for an unlimited number of revisions; + defaults to '10'. releaseName: - description: ReleaseName used for the Helm release. Defaults to a composition of '[TargetNamespace-]Name'. + type: string + 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. + type: object + 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 + description: CleanupOnFail allows deletion of new resources created + during the Helm rollback action when it fails. disableHooks: - description: DisableHooks prevents hooks from running during the Helm rollback action. type: boolean + description: DisableHooks prevents hooks from running during the + Helm rollback action. disableWait: - description: DisableWait disables the waiting for resources to be ready after a Helm rollback has been performed. type: boolean + description: DisableWait disables the waiting for resources to + be ready after a Helm rollback has been performed. force: - description: Force forces resource updates through a replacement strategy. type: boolean + description: Force forces resource updates through a replacement + strategy. recreate: - description: Recreate performs pod restarts for the resource if applicable. type: boolean + description: Recreate performs pod restarts for the resource if + applicable. 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 + 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'. 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 + description: Suspend tells the controller to suspend reconciliation + for this HelmRelease, it does not apply to already started reconciliations. + Defaults to false. targetNamespace: - description: TargetNamespace to target when performing operations for the HelmRelease. Defaults to the namespace of the HelmRelease. + type: string + 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. + type: object + 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 + description: Enable enables Helm test actions for this HelmRelease + after an Helm install or upgrade action has been performed. 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 + 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'. 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 + description: Timeout is the time to wait for any individual Kubernetes + operation during the performance of a Helm test action. Defaults + to 'HelmReleaseSpec.Timeout'. 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 + 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'. uninstall: - description: Uninstall holds the configuration for Helm uninstall actions for this HelmRelease. + type: object + 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 + description: DisableHooks prevents hooks from running during the + Helm rollback action. keepHistory: - description: KeepHistory tells Helm to remove all associated resources and mark the release as deleted, but retain the release history. type: boolean + description: KeepHistory tells Helm to remove all associated resources + and mark the release as deleted, but retain the release history. 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 + 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'. upgrade: - description: Upgrade holds the configuration for Helm upgrade actions for this HelmRelease. + type: object + 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 + description: CleanupOnFail allows deletion of new resources created + during the Helm upgrade action when it fails. disableHooks: - description: DisableHooks prevents hooks from running during the Helm upgrade action. type: boolean + description: DisableHooks prevents hooks from running during the + Helm upgrade action. disableOpenAPIValidation: - description: DisableOpenAPIValidation prevents the Helm upgrade action from validating rendered templates against the Kubernetes OpenAPI Schema. type: boolean + description: DisableOpenAPIValidation prevents the Helm upgrade + action from validating rendered templates against the Kubernetes + OpenAPI Schema. disableWait: - description: DisableWait disables the waiting for resources to be ready after a Helm upgrade has been performed. type: boolean + description: DisableWait disables the waiting for resources to + be ready after a Helm upgrade has been performed. force: - description: Force forces resource updates through a replacement strategy. type: boolean + description: Force forces resource updates through a replacement + strategy. 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 + 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. 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. + type: object + 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: + strategy: + type: string + description: Strategy to use for failure remediation. Defaults + to 'rollback'. + enum: + - rollback + - uninstall 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 + description: IgnoreTestFailures tells the controller to skip + remediation when the Helm tests are run after an upgrade + action but fail. Defaults to 'Test.IgnoreFailures'. 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 + description: RemediateLastFailure tells the controller to + remediate the last failure, when no retries remain. Defaults + to 'false' unless 'Retries' is greater than 0. 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 + 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. 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 + 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'. 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. + type: array + 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. + type: object + 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. + type: string + description: Name of the values referent. Should reside in the + same namespace as the referring resource. maxLength: 253 minLength: 1 + kind: type: string + description: Kind of the values referent, valid values are ('Secret', + 'ConfigMap'). + enum: + - Secret + - ConfigMap 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 + 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. 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 + 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. 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 + description: ValuesKey is the data key where the values.yaml + or a specific value can be found at. Defaults to 'values.yaml'. required: - kind - name - type: object - type: array required: - chart - interval - type: object status: + type: object description: HelmReleaseStatus defines the observed state of a HelmRelease. properties: conditions: + type: array description: Conditions holds the conditions for the HelmRelease. items: - description: Condition contains condition information of a toolkit resource. + type: object + description: Condition contains condition information of a toolkit + resource. properties: + type: + type: string + description: Type of the condition. + status: + type: string + description: Status of the condition, one of ('True', 'False', + 'Unknown'). lastTransitionTime: - description: LastTransitionTime is the timestamp corresponding to the last status change of this condition. - format: date-time type: string + description: LastTransitionTime is the timestamp corresponding + to the last status change of this condition. + format: date-time message: - description: Message is a human readable description of the details of the last transition, complementing reason. type: string + description: Message is a human readable description of the + details of the last transition, complementing reason. reason: - description: Reason is a brief machine readable explanation for the condition's last transition. - type: string - status: - description: Status of the condition, one of ('True', 'False', 'Unknown'). - type: string - type: - description: Type of the condition. type: string + description: Reason is a brief machine readable explanation + for the condition's last transition. required: - 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 + description: Failures is the reconciliation failure count against + the latest desired state. It is reset after a successful reconciliation. + format: int64 helmChart: - description: HelmChart is the namespaced name of the HelmChart resource created by the controller for the HelmRelease. type: string + description: HelmChart is the namespaced name of the HelmChart resource + created by the controller for the HelmRelease. installFailures: - description: InstallFailures is the install failure count against the latest desired state. It is reset after a successful reconciliation. - format: int64 type: integer + description: InstallFailures is the install failure count against + the latest desired state. It is reset after a successful reconciliation. + format: int64 lastAppliedRevision: - description: LastAppliedRevision is the revision of the last successfully applied source. type: string + description: LastAppliedRevision is the revision of the last successfully + applied source. lastAttemptedRevision: - description: LastAttemptedRevision is the revision of the last reconciliation attempt. type: string + description: LastAttemptedRevision is the revision of the last reconciliation + attempt. lastAttemptedValuesChecksum: - description: LastAttemptedValuesChecksum is the SHA1 checksum of the values of the last reconciliation attempt. type: string + description: LastAttemptedValuesChecksum is the SHA1 checksum of the + values of the last reconciliation attempt. lastHandledReconcileAt: - description: LastHandledReconcileAt holds the value of the most recent reconcile request value, so a change can be detected. type: string + description: LastHandledReconcileAt holds the value of the most recent + reconcile request value, so a change can be detected. lastReleaseRevision: - description: LastReleaseRevision is the revision of the last successful Helm release. type: integer + description: LastReleaseRevision is the revision of the last successful + Helm release. observedGeneration: + type: integer 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 + description: UpgradeFailures is the upgrade failure count against + the latest desired state. It is reset after a successful reconciliation. + format: int64 served: true storage: true subresources: @@ -1604,12 +1846,12 @@ status: apiVersion: apps/v1 kind: Deployment metadata: + name: helm-controller + namespace: flux-system labels: app.kubernetes.io/instance: flux-system app.kubernetes.io/version: latest control-plane: controller - name: helm-controller - namespace: flux-system spec: replicas: 1 selector: @@ -1617,34 +1859,33 @@ spec: app: helm-controller template: metadata: + labels: + app: helm-controller annotations: prometheus.io/port: "8080" prometheus.io/scrape: "true" - labels: - app: helm-controller spec: + terminationGracePeriodSeconds: 10 + nodeSelector: + kubernetes.io/arch: amd64 + kubernetes.io/os: linux containers: - - args: + - name: manager + image: ghcr.io/fluxcd/helm-controller:v0.2.0 + args: - --events-addr=http://notification-controller/ - --watch-all-namespaces=true - --log-level=info - --log-json - --enable-leader-election + ports: + - name: http-prom + containerPort: 8080 env: - name: RUNTIME_NAMESPACE valueFrom: fieldRef: fieldPath: metadata.namespace - image: ghcr.io/fluxcd/helm-controller:v0.2.0 - imagePullPolicy: IfNotPresent - livenessProbe: - httpGet: - path: /metrics - port: http-prom - name: manager - ports: - - containerPort: 8080 - name: http-prom resources: limits: cpu: 1000m @@ -1652,30 +1893,31 @@ spec: requests: cpu: 100m memory: 64Mi + volumeMounts: + - name: temp + mountPath: /tmp + livenessProbe: + httpGet: + port: http-prom + path: /metrics + imagePullPolicy: IfNotPresent securityContext: allowPrivilegeEscalation: false readOnlyRootFilesystem: true - volumeMounts: - - mountPath: /tmp - name: temp - nodeSelector: - kubernetes.io/arch: amd64 - kubernetes.io/os: linux - terminationGracePeriodSeconds: 10 volumes: - - emptyDir: {} - name: temp + - name: temp + emptyDir: {} --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.3.0 - creationTimestamp: null + name: alerts.notification.toolkit.fluxcd.io labels: app.kubernetes.io/instance: flux-system app.kubernetes.io/version: latest - name: alerts.notification.toolkit.fluxcd.io + annotations: + controller-gen.kubebuilder.io/version: v0.3.0 + creationTimestamp: null spec: group: notification.toolkit.fluxcd.io names: @@ -1685,48 +1927,70 @@ spec: singular: alert scope: Namespaced versions: - - additionalPrinterColumns: - - jsonPath: .status.conditions[?(@.type=="Ready")].status - name: Ready + - name: v1beta1 + additionalPrinterColumns: + - name: Ready type: string - - jsonPath: .status.conditions[?(@.type=="Ready")].message - name: Status + jsonPath: .status.conditions[?(@.type=="Ready")].status + - name: Status type: string - - jsonPath: .metadata.creationTimestamp - name: Age + jsonPath: .status.conditions[?(@.type=="Ready")].message + - name: Age type: date - name: v1beta1 + jsonPath: .metadata.creationTimestamp schema: openAPIV3Schema: + type: object 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 + 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' 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 + 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' metadata: type: object spec: - description: AlertSpec defines an alerting rule for events involving a list of objects + type: object + description: AlertSpec defines an alerting rule for events involving a + list of objects properties: eventSeverity: + type: string default: info - description: Filter events based on severity, defaults to ('info'). If set to 'info' no events will be filtered. + description: Filter events based on severity, defaults to ('info'). + If set to 'info' no events will be filtered. enum: - info - error - type: string eventSources: + type: array 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 + type: object + description: CrossNamespaceObjectReference contains enough information + to let you locate the typed referenced object at cluster level properties: + name: + type: string + description: Name of the referent + maxLength: 53 + minLength: 1 + namespace: + type: string + description: Namespace of the referent + maxLength: 53 + minLength: 1 apiVersion: - description: API version of the referent type: string + description: API version of the referent kind: + type: string description: Kind of the referent enum: - Bucket @@ -1735,65 +1999,57 @@ spec: - HelmRelease - HelmChart - HelmRepository - 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 providerRef: + type: object description: Send events using this provider properties: name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string - type: object + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' suspend: - description: This flag tells the controller to suspend subsequent events dispatching. Defaults to false. type: boolean + description: This flag tells the controller to suspend subsequent + events dispatching. Defaults to false. required: - eventSources - providerRef - type: object status: + type: object description: AlertStatus defines the observed state of Alert properties: conditions: + type: array items: - description: Condition contains condition information of a toolkit resource. + type: object + description: Condition contains condition information of a toolkit + resource. properties: + type: + type: string + description: Type of the condition. + status: + type: string + description: Status of the condition, one of ('True', 'False', + 'Unknown'). lastTransitionTime: - description: LastTransitionTime is the timestamp corresponding to the last status change of this condition. - format: date-time type: string + description: LastTransitionTime is the timestamp corresponding + to the last status change of this condition. + format: date-time message: - description: Message is a human readable description of the details of the last transition, complementing reason. type: string + description: Message is a human readable description of the + details of the last transition, complementing reason. reason: - description: Reason is a brief machine readable explanation for the condition's last transition. - type: string - status: - description: Status of the condition, one of ('True', 'False', 'Unknown'). - type: string - type: - description: Type of the condition. type: string + description: Reason is a brief machine readable explanation + for the condition's last transition. required: - status - type - type: object - type: array - type: object - type: object served: true storage: true subresources: @@ -1808,13 +2064,13 @@ status: apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.3.0 - creationTimestamp: null + name: providers.notification.toolkit.fluxcd.io labels: app.kubernetes.io/instance: flux-system app.kubernetes.io/version: latest - name: providers.notification.toolkit.fluxcd.io + annotations: + controller-gen.kubebuilder.io/version: v0.3.0 + creationTimestamp: null spec: group: notification.toolkit.fluxcd.io names: @@ -1824,51 +2080,40 @@ spec: singular: provider scope: Namespaced versions: - - additionalPrinterColumns: - - jsonPath: .status.conditions[?(@.type=="Ready")].status - name: Ready + - name: v1beta1 + additionalPrinterColumns: + - name: Ready type: string - - jsonPath: .status.conditions[?(@.type=="Ready")].message - name: Status + jsonPath: .status.conditions[?(@.type=="Ready")].status + - name: Status type: string - - jsonPath: .metadata.creationTimestamp - name: Age + jsonPath: .status.conditions[?(@.type=="Ready")].message + - name: Age type: date - name: v1beta1 + jsonPath: .metadata.creationTimestamp schema: openAPIV3Schema: + type: object 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 + 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' 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 + 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' metadata: type: object spec: + type: object description: ProviderSpec defines the desired state of Provider properties: - address: - description: HTTP/S webhook address of this provider - pattern: ^(http|https):// - type: string - 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 - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object type: + type: string description: Type of provider enum: - slack @@ -1878,43 +2123,64 @@ spec: - generic - github - gitlab + secretRef: + type: object + description: Secret reference containing the provider webhook URL + properties: + name: + type: string + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + address: + type: string + description: HTTP/S webhook address of this provider + pattern: ^(http|https):// + channel: type: string + description: Alert channel for this provider + proxy: + type: string + description: HTTP/S address of the proxy + pattern: ^(http|https):// username: - description: Bot username for this provider type: string + description: Bot username for this provider required: - type - type: object status: + type: object description: ProviderStatus defines the observed state of Provider properties: conditions: + type: array items: - description: Condition contains condition information of a toolkit resource. + type: object + description: Condition contains condition information of a toolkit + resource. properties: + type: + type: string + description: Type of the condition. + status: + type: string + description: Status of the condition, one of ('True', 'False', + 'Unknown'). lastTransitionTime: - description: LastTransitionTime is the timestamp corresponding to the last status change of this condition. - format: date-time type: string + description: LastTransitionTime is the timestamp corresponding + to the last status change of this condition. + format: date-time message: - description: Message is a human readable description of the details of the last transition, complementing reason. type: string + description: Message is a human readable description of the + details of the last transition, complementing reason. reason: - description: Reason is a brief machine readable explanation for the condition's last transition. - type: string - status: - description: Status of the condition, one of ('True', 'False', 'Unknown'). - type: string - type: - description: Type of the condition. type: string + description: Reason is a brief machine readable explanation + for the condition's last transition. required: - status - type - type: object - type: array - type: object - type: object served: true storage: true subresources: @@ -1929,13 +2195,13 @@ status: apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.3.0 - creationTimestamp: null + name: receivers.notification.toolkit.fluxcd.io labels: app.kubernetes.io/instance: flux-system app.kubernetes.io/version: latest - name: receivers.notification.toolkit.fluxcd.io + annotations: + controller-gen.kubebuilder.io/version: v0.3.0 + creationTimestamp: null spec: group: notification.toolkit.fluxcd.io names: @@ -1945,46 +2211,71 @@ spec: singular: receiver scope: Namespaced versions: - - additionalPrinterColumns: - - jsonPath: .status.conditions[?(@.type=="Ready")].status - name: Ready + - name: v1beta1 + additionalPrinterColumns: + - name: Ready type: string - - jsonPath: .status.conditions[?(@.type=="Ready")].message - name: Status + jsonPath: .status.conditions[?(@.type=="Ready")].status + - name: Status type: string - - jsonPath: .metadata.creationTimestamp - name: Age + jsonPath: .status.conditions[?(@.type=="Ready")].message + - name: Age type: date - name: v1beta1 + jsonPath: .metadata.creationTimestamp schema: openAPIV3Schema: + type: object 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 + 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' 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 + 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' metadata: type: object spec: + type: object 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 + type: + type: string + description: Type of webhook sender, used to determine the validation + procedure and payload deserialization. + enum: + - generic + - github + - gitlab + - bitbucket + - harbor resources: + type: array 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 + type: object + description: CrossNamespaceObjectReference contains enough information + to let you locate the typed referenced object at cluster level properties: + name: + type: string + description: Name of the referent + maxLength: 53 + minLength: 1 + namespace: + type: string + description: Namespace of the referent + maxLength: 53 + minLength: 1 apiVersion: - description: API version of the referent type: string + description: API version of the referent kind: + type: string description: Kind of the referent enum: - Bucket @@ -1993,77 +2284,67 @@ spec: - HelmRelease - HelmChart - HelmRepository - 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 + type: object + description: Secret reference containing the token used to validate + the payload authenticity properties: name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' type: string - type: object + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + events: + type: array + description: A list of events to handle, e.g. 'push' for GitHub or + 'Push Hook' for GitLab. + items: + type: string 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 - - github - - gitlab - - bitbucket - - harbor - type: string + description: This flag tells the controller to suspend subsequent + events handling. Defaults to false. required: - resources - type - type: object status: + type: object description: ReceiverStatus defines the observed state of Receiver properties: conditions: + type: array items: - description: Condition contains condition information of a toolkit resource. + type: object + description: Condition contains condition information of a toolkit + resource. properties: + type: + type: string + description: Type of the condition. + status: + type: string + description: Status of the condition, one of ('True', 'False', + 'Unknown'). lastTransitionTime: - description: LastTransitionTime is the timestamp corresponding to the last status change of this condition. - format: date-time type: string + description: LastTransitionTime is the timestamp corresponding + to the last status change of this condition. + format: date-time message: - description: Message is a human readable description of the details of the last transition, complementing reason. type: string + description: Message is a human readable description of the + details of the last transition, complementing reason. reason: - description: Reason is a brief machine readable explanation for the condition's last transition. - type: string - status: - description: Status of the condition, one of ('True', 'False', 'Unknown'). - type: string - type: - description: Type of the condition. type: string + description: Reason is a brief machine readable explanation + for the condition's last transition. required: - status - type - type: object - type: array url: - description: Generated webhook URL in the format of '/hook/sha256sum(token+name+namespace)'. type: string - type: object - type: object + description: Generated webhook URL in the format of '/hook/sha256sum(token+name+namespace)'. served: true storage: true subresources: @@ -2078,50 +2359,50 @@ status: apiVersion: v1 kind: Service metadata: + name: notification-controller + namespace: flux-system labels: app.kubernetes.io/instance: flux-system app.kubernetes.io/version: latest control-plane: controller - name: notification-controller - namespace: flux-system spec: + type: ClusterIP + selector: + app: notification-controller ports: - name: http - port: 80 protocol: TCP + port: 80 targetPort: http - selector: - app: notification-controller - type: ClusterIP --- apiVersion: v1 kind: Service metadata: + name: webhook-receiver + namespace: flux-system labels: app.kubernetes.io/instance: flux-system app.kubernetes.io/version: latest control-plane: controller - name: webhook-receiver - namespace: flux-system spec: + type: ClusterIP + selector: + app: notification-controller ports: - name: http - port: 80 protocol: TCP + port: 80 targetPort: http-webhook - selector: - app: notification-controller - type: ClusterIP --- apiVersion: apps/v1 kind: Deployment metadata: + name: notification-controller + namespace: flux-system labels: app.kubernetes.io/instance: flux-system app.kubernetes.io/version: latest control-plane: controller - name: notification-controller - namespace: flux-system spec: replicas: 1 selector: @@ -2129,37 +2410,36 @@ spec: app: notification-controller template: metadata: + labels: + app: notification-controller annotations: prometheus.io/port: "8080" prometheus.io/scrape: "true" - labels: - app: notification-controller spec: + terminationGracePeriodSeconds: 10 + nodeSelector: + kubernetes.io/arch: amd64 + kubernetes.io/os: linux containers: - - args: + - name: manager + image: ghcr.io/fluxcd/notification-controller:v0.2.0 + args: - --watch-all-namespaces=true - --log-level=info - --log-json - --enable-leader-election + ports: + - name: http + containerPort: 9090 + - name: http-webhook + containerPort: 9292 + - name: http-prom + containerPort: 8080 env: - name: RUNTIME_NAMESPACE valueFrom: fieldRef: fieldPath: metadata.namespace - image: ghcr.io/fluxcd/notification-controller:v0.2.0 - imagePullPolicy: IfNotPresent - livenessProbe: - httpGet: - path: /metrics - port: http-prom - name: manager - ports: - - containerPort: 9090 - name: http - - containerPort: 9292 - name: http-webhook - - containerPort: 8080 - name: http-prom resources: limits: cpu: 1000m @@ -2167,17 +2447,17 @@ spec: requests: cpu: 100m memory: 64Mi + volumeMounts: + - name: temp + mountPath: /tmp + livenessProbe: + httpGet: + port: http-prom + path: /metrics + imagePullPolicy: IfNotPresent securityContext: allowPrivilegeEscalation: false readOnlyRootFilesystem: true - volumeMounts: - - mountPath: /tmp - name: temp - nodeSelector: - kubernetes.io/arch: amd64 - kubernetes.io/os: linux - terminationGracePeriodSeconds: 10 volumes: - - emptyDir: {} - name: temp ---- + - name: temp + emptyDir: {} diff --git a/base/flux/toolkit/kustomization.yaml b/base/flux/toolkit/kustomization.yaml index 34f7f9bda4f2824a5b07ef52376d740143fea09c..0b0b2bcda364c3744ef077cfd781837fba8d867c 100644 --- a/base/flux/toolkit/kustomization.yaml +++ b/base/flux/toolkit/kustomization.yaml @@ -1,2 +1,2 @@ resources: - - all.yaml +- all.yaml diff --git a/base/gatekeeper/gatekeeper.yaml b/base/gatekeeper/gatekeeper.yaml index 9af0fd2b3e94d55394f7327a167d6c3c34e5cbad..1c3a170c96ccac95fe129978a610775f4d1e42c8 100644 --- a/base/gatekeeper/gatekeeper.yaml +++ b/base/gatekeeper/gatekeeper.yaml @@ -1,12 +1,11 @@ ---- apiVersion: apiextensions.k8s.io/v1beta1 kind: CustomResourceDefinition metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.3.0 + name: configs.config.gatekeeper.sh labels: gatekeeper.sh/system: "yes" - name: configs.config.gatekeeper.sh + annotations: + controller-gen.kubebuilder.io/version: v0.3.0 spec: group: config.gatekeeper.sh names: @@ -17,86 +16,93 @@ spec: scope: Namespaced validation: openAPIV3Schema: + type: object description: Config is the Schema for the configs 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 + 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' 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 + 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' metadata: type: object spec: + type: object description: ConfigSpec defines the desired state of Config properties: match: + type: array description: Configuration for namespace exclusion items: + type: object properties: excludedNamespaces: + type: array items: type: string - type: array processes: + type: array items: type: string - type: array - type: object - type: array readiness: + type: object description: Configuration for readiness tracker properties: statsEnabled: type: boolean - type: object sync: + type: object description: Configuration for syncing k8s objects properties: syncOnly: - description: If non-empty, only entries on this list will be replicated into OPA + type: array + description: If non-empty, only entries on this list will be replicated + into OPA items: + type: object properties: - group: - type: string kind: type: string + group: + type: string version: type: string - type: object - type: array - type: object validation: + type: object description: Configuration for validation properties: traces: - description: List of requests to trace. Both "user" and "kinds" must be specified + type: array + description: List of requests to trace. Both "user" and "kinds" + must be specified items: + type: object properties: - dump: - description: Also dump the state of OPA with the trace. Set to `All` to dump everything. - type: string kind: + type: object description: Only trace requests of the following GroupVersionKind properties: - group: - type: string kind: type: string + group: + type: string version: type: string - type: object + dump: + type: string + description: Also dump the state of OPA with the trace. Set + to `All` to dump everything. user: - description: Only trace requests from the specified user type: string - type: object - type: array - type: object - type: object + description: Only trace requests from the specified user status: - description: ConfigStatus defines the observed state of Config type: object - type: object + description: ConfigStatus defines the observed state of Config version: v1alpha1 versions: - name: v1alpha1 @@ -112,12 +118,12 @@ status: apiVersion: apiextensions.k8s.io/v1beta1 kind: CustomResourceDefinition metadata: + name: constraintpodstatuses.status.gatekeeper.sh + labels: + gatekeeper.sh/system: "yes" annotations: controller-gen.kubebuilder.io/version: v0.3.0 creationTimestamp: null - labels: - gatekeeper.sh/system: "yes" - name: constraintpodstatuses.status.gatekeeper.sh spec: group: status.gatekeeper.sh names: @@ -128,27 +134,39 @@ spec: scope: Namespaced validation: openAPIV3Schema: - description: ConstraintPodStatus is the Schema for the constraintpodstatuses API + type: object + description: ConstraintPodStatus is the Schema for the constraintpodstatuses + 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 + 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' 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 + 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' metadata: type: object status: + type: object description: ConstraintPodStatusStatus defines the observed state of ConstraintPodStatus properties: constraintUID: - description: Storing the constraint UID allows us to detect drift, such as when a constraint has been recreated after its CRD was deleted out from under it, interrupting the watch type: string + description: Storing the constraint UID allows us to detect drift, such + as when a constraint has been recreated after its CRD was deleted + out from under it, interrupting the watch enforced: type: boolean errors: + type: array items: - description: Error represents a single error caught while adding a constraint to OPA + type: object + description: Error represents a single error caught while adding a + constraint to OPA properties: code: type: string @@ -159,19 +177,15 @@ spec: required: - code - message - type: object - type: array id: type: string observedGeneration: - format: int64 type: integer + format: int64 operations: + type: array items: type: string - type: array - type: object - type: object version: v1beta1 versions: - name: v1beta1 @@ -187,12 +201,12 @@ status: apiVersion: apiextensions.k8s.io/v1beta1 kind: CustomResourceDefinition metadata: + name: constrainttemplatepodstatuses.status.gatekeeper.sh + labels: + gatekeeper.sh/system: "yes" annotations: controller-gen.kubebuilder.io/version: v0.3.0 creationTimestamp: null - labels: - gatekeeper.sh/system: "yes" - name: constrainttemplatepodstatuses.status.gatekeeper.sh spec: group: status.gatekeeper.sh names: @@ -203,22 +217,33 @@ spec: scope: Namespaced validation: openAPIV3Schema: - description: ConstraintTemplatePodStatus is the Schema for the constrainttemplatepodstatuses API + type: object + description: ConstraintTemplatePodStatus is the Schema for the constrainttemplatepodstatuses + 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 + 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' 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 + 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' metadata: type: object status: - description: ConstraintTemplatePodStatusStatus defines the observed state of ConstraintTemplatePodStatus + type: object + description: ConstraintTemplatePodStatusStatus defines the observed state + of ConstraintTemplatePodStatus properties: errors: + type: array items: - description: CreateCRDError represents a single error caught during parsing, compiling, etc. + type: object + description: CreateCRDError represents a single error caught during + parsing, compiling, etc. properties: code: type: string @@ -229,23 +254,23 @@ spec: required: - code - message - type: object - type: array id: - description: 'Important: Run "make" to regenerate code after modifying this file' type: string + description: 'Important: Run "make" to regenerate code after modifying + this file' observedGeneration: - format: int64 type: integer + format: int64 operations: + type: array items: type: string - type: array templateUID: - description: UID is a type that holds unique ID values, including UUIDs. Because we don't ONLY use UUIDs, this is an alias to string. Being a type captures intent and helps make sure that UIDs and names do not get conflated. type: string - type: object - type: object + description: UID is a type that holds unique ID values, including UUIDs. Because + we don't ONLY use UUIDs, this is an alias to string. Being a type + captures intent and helps make sure that UIDs and names do not get + conflated. version: v1beta1 versions: - name: v1beta1 @@ -261,11 +286,11 @@ status: apiVersion: apiextensions.k8s.io/v1beta1 kind: CustomResourceDefinition metadata: - creationTimestamp: null + name: constrainttemplates.templates.gatekeeper.sh labels: controller-tools.k8s.io: "1.0" gatekeeper.sh/system: "yes" - name: constrainttemplates.templates.gatekeeper.sh + creationTimestamp: null spec: group: templates.gatekeeper.sh names: @@ -278,53 +303,62 @@ spec: openAPIV3Schema: 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 + 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' 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 + 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' metadata: type: object spec: + type: object properties: crd: + type: object properties: spec: + type: object properties: names: + type: object properties: kind: type: string shortNames: + type: array items: type: string - type: array - type: object validation: type: object - type: object - type: object targets: + type: array items: + type: object properties: libs: + type: array items: type: string - type: array rego: type: string target: type: string - type: object - type: array - type: object status: + type: object properties: byPod: + type: array items: + type: object properties: errors: + type: array items: + type: object properties: code: type: string @@ -335,19 +369,14 @@ spec: required: - code - message - type: object - type: array id: - description: a unique identifier for the pod that wrote the status type: string + description: a unique identifier for the pod that wrote the status observedGeneration: - format: int64 type: integer - type: object - type: array + format: int64 created: type: boolean - type: object version: v1beta1 versions: - name: v1beta1 @@ -366,31 +395,31 @@ status: apiVersion: v1 kind: ServiceAccount metadata: - labels: - gatekeeper.sh/system: "yes" name: gatekeeper-admin namespace: gatekeeper-system + labels: + gatekeeper.sh/system: "yes" --- apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: - creationTimestamp: null - labels: - gatekeeper.sh/system: "yes" name: gatekeeper-manager-role namespace: gatekeeper-system + labels: + gatekeeper.sh/system: "yes" + creationTimestamp: null rules: -- apiGroups: - - "" - resources: +- resources: - events + apiGroups: + - "" verbs: - create - patch -- apiGroups: - - "" - resources: +- resources: - secrets + apiGroups: + - "" verbs: - create - delete @@ -403,23 +432,23 @@ rules: apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: - creationTimestamp: null + name: gatekeeper-manager-role labels: gatekeeper.sh/system: "yes" - name: gatekeeper-manager-role + creationTimestamp: null rules: -- apiGroups: +- resources: - '*' - resources: + apiGroups: - '*' verbs: - get - list - watch -- apiGroups: - - apiextensions.k8s.io - resources: +- resources: - customresourcedefinitions + apiGroups: + - apiextensions.k8s.io verbs: - create - delete @@ -428,10 +457,10 @@ rules: - patch - update - watch -- apiGroups: - - config.gatekeeper.sh - resources: +- resources: - configs + apiGroups: + - config.gatekeeper.sh verbs: - create - delete @@ -440,18 +469,18 @@ rules: - patch - update - watch -- apiGroups: - - config.gatekeeper.sh - resources: +- resources: - configs/status + apiGroups: + - config.gatekeeper.sh verbs: - get - patch - update -- apiGroups: - - constraints.gatekeeper.sh - resources: +- resources: - '*' + apiGroups: + - constraints.gatekeeper.sh verbs: - create - delete @@ -460,16 +489,16 @@ rules: - patch - update - watch -- apiGroups: - - policy - resources: +- resources: - podsecuritypolicies + apiGroups: + - policy verbs: - use -- apiGroups: - - status.gatekeeper.sh - resources: +- resources: - '*' + apiGroups: + - status.gatekeeper.sh verbs: - create - delete @@ -478,10 +507,10 @@ rules: - patch - update - watch -- apiGroups: - - templates.gatekeeper.sh - resources: +- resources: - constrainttemplates + apiGroups: + - templates.gatekeeper.sh verbs: - create - delete @@ -490,29 +519,29 @@ rules: - patch - update - watch -- apiGroups: - - templates.gatekeeper.sh - resources: +- resources: - constrainttemplates/finalizers + apiGroups: + - templates.gatekeeper.sh verbs: - delete - get - patch - update -- apiGroups: - - templates.gatekeeper.sh - resources: +- resources: - constrainttemplates/status + apiGroups: + - templates.gatekeeper.sh verbs: - get - patch - update -- apiGroups: +- resources: + - validatingwebhookconfigurations + apiGroups: - admissionregistration.k8s.io resourceNames: - gatekeeper-validating-webhook-configuration - resources: - - validatingwebhookconfigurations verbs: - create - delete @@ -525,67 +554,67 @@ rules: apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: - labels: - gatekeeper.sh/system: "yes" name: gatekeeper-manager-rolebinding namespace: gatekeeper-system + labels: + gatekeeper.sh/system: "yes" roleRef: - apiGroup: rbac.authorization.k8s.io - kind: Role name: gatekeeper-manager-role + kind: Role + apiGroup: rbac.authorization.k8s.io subjects: -- kind: ServiceAccount - name: gatekeeper-admin +- name: gatekeeper-admin namespace: gatekeeper-system + kind: ServiceAccount --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: + name: gatekeeper-manager-rolebinding labels: gatekeeper.sh/system: "yes" - name: gatekeeper-manager-rolebinding roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole name: gatekeeper-manager-role + kind: ClusterRole + apiGroup: rbac.authorization.k8s.io subjects: -- kind: ServiceAccount - name: gatekeeper-admin +- name: gatekeeper-admin namespace: gatekeeper-system + kind: ServiceAccount --- apiVersion: v1 kind: Secret metadata: - labels: - gatekeeper.sh/system: "yes" name: gatekeeper-webhook-server-cert namespace: gatekeeper-system + labels: + gatekeeper.sh/system: "yes" --- apiVersion: v1 kind: Service metadata: - labels: - gatekeeper.sh/system: "yes" name: gatekeeper-webhook-service namespace: gatekeeper-system + labels: + gatekeeper.sh/system: "yes" spec: - ports: - - port: 443 - targetPort: 8443 selector: control-plane: controller-manager gatekeeper.sh/operation: webhook gatekeeper.sh/system: "yes" + ports: + - port: 443 + targetPort: 8443 --- apiVersion: apps/v1 kind: Deployment metadata: + name: gatekeeper-audit + namespace: gatekeeper-system labels: control-plane: controller-manager gatekeeper.sh/operation: audit gatekeeper.sh/system: "yes" - name: gatekeeper-audit - namespace: gatekeeper-system spec: replicas: 1 selector: @@ -595,20 +624,33 @@ spec: gatekeeper.sh/system: "yes" template: metadata: - annotations: - container.seccomp.security.alpha.kubernetes.io/manager: runtime/default labels: control-plane: audit-controller gatekeeper.sh/operation: audit gatekeeper.sh/system: "yes" + annotations: + container.seccomp.security.alpha.kubernetes.io/manager: runtime/default spec: + terminationGracePeriodSeconds: 60 + serviceAccountName: gatekeeper-admin + nodeSelector: + kubernetes.io/os: linux containers: - - args: + - name: manager + image: openpolicyagent/gatekeeper:v3.1.1 + command: + - /manager + args: - --operation=audit - --operation=status - --logtostderr - command: - - /manager + ports: + - name: metrics + protocol: TCP + containerPort: 8888 + - name: healthz + protocol: TCP + containerPort: 9090 env: - name: POD_NAMESPACE valueFrom: @@ -619,24 +661,6 @@ spec: valueFrom: fieldRef: fieldPath: metadata.name - image: openpolicyagent/gatekeeper:v3.1.1 - imagePullPolicy: Always - livenessProbe: - httpGet: - path: /healthz - port: 9090 - name: manager - ports: - - containerPort: 8888 - name: metrics - protocol: TCP - - containerPort: 9090 - name: healthz - protocol: TCP - readinessProbe: - httpGet: - path: /readyz - port: 9090 resources: limits: cpu: 1000m @@ -644,6 +668,15 @@ spec: requests: cpu: 100m memory: 256Mi + livenessProbe: + httpGet: + port: 9090 + path: /healthz + readinessProbe: + httpGet: + port: 9090 + path: /readyz + imagePullPolicy: Always securityContext: allowPrivilegeEscalation: false capabilities: @@ -652,20 +685,16 @@ spec: runAsGroup: 999 runAsNonRoot: true runAsUser: 1000 - nodeSelector: - kubernetes.io/os: linux - serviceAccountName: gatekeeper-admin - terminationGracePeriodSeconds: 60 --- apiVersion: apps/v1 kind: Deployment metadata: + name: gatekeeper-controller-manager + namespace: gatekeeper-system labels: control-plane: controller-manager gatekeeper.sh/operation: webhook gatekeeper.sh/system: "yes" - name: gatekeeper-controller-manager - namespace: gatekeeper-system spec: replicas: 3 selector: @@ -675,33 +704,37 @@ spec: gatekeeper.sh/system: "yes" template: metadata: - annotations: - container.seccomp.security.alpha.kubernetes.io/manager: runtime/default labels: control-plane: controller-manager gatekeeper.sh/operation: webhook gatekeeper.sh/system: "yes" + annotations: + container.seccomp.security.alpha.kubernetes.io/manager: runtime/default spec: - affinity: - podAntiAffinity: - preferredDuringSchedulingIgnoredDuringExecution: - - podAffinityTerm: - labelSelector: - matchExpressions: - - key: gatekeeper.sh/operation - operator: In - values: - - webhook - topologyKey: kubernetes.io/hostname - weight: 100 + terminationGracePeriodSeconds: 60 + serviceAccountName: gatekeeper-admin + nodeSelector: + kubernetes.io/os: linux containers: - - args: + - name: manager + image: openpolicyagent/gatekeeper:v3.1.1 + command: + - /manager + args: - --port=8443 - --logtostderr - --exempt-namespace=gatekeeper-system - --operation=webhook - command: - - /manager + ports: + - name: webhook-server + protocol: TCP + containerPort: 8443 + - name: metrics + protocol: TCP + containerPort: 8888 + - name: healthz + protocol: TCP + containerPort: 9090 env: - name: POD_NAMESPACE valueFrom: @@ -712,27 +745,6 @@ spec: valueFrom: fieldRef: fieldPath: metadata.name - image: openpolicyagent/gatekeeper:v3.1.1 - imagePullPolicy: Always - livenessProbe: - httpGet: - path: /healthz - port: 9090 - name: manager - ports: - - containerPort: 8443 - name: webhook-server - protocol: TCP - - containerPort: 8888 - name: metrics - protocol: TCP - - containerPort: 9090 - name: healthz - protocol: TCP - readinessProbe: - httpGet: - path: /readyz - port: 9090 resources: limits: cpu: 1000m @@ -740,6 +752,19 @@ spec: requests: cpu: 100m memory: 256Mi + volumeMounts: + - name: cert + readOnly: true + mountPath: /certs + livenessProbe: + httpGet: + port: 9090 + path: /healthz + readinessProbe: + httpGet: + port: 9090 + path: /readyz + imagePullPolicy: Always securityContext: allowPrivilegeEscalation: false capabilities: @@ -748,69 +773,73 @@ spec: runAsGroup: 999 runAsNonRoot: true runAsUser: 1000 - volumeMounts: - - mountPath: /certs - name: cert - readOnly: true - nodeSelector: - kubernetes.io/os: linux - serviceAccountName: gatekeeper-admin - terminationGracePeriodSeconds: 60 volumes: - name: cert secret: defaultMode: 420 secretName: gatekeeper-webhook-server-cert + affinity: + podAntiAffinity: + preferredDuringSchedulingIgnoredDuringExecution: + - podAffinityTerm: + labelSelector: + matchExpressions: + - key: gatekeeper.sh/operation + operator: In + values: + - webhook + topologyKey: kubernetes.io/hostname + weight: 100 --- apiVersion: admissionregistration.k8s.io/v1beta1 kind: ValidatingWebhookConfiguration metadata: - creationTimestamp: null + name: gatekeeper-validating-webhook-configuration labels: gatekeeper.sh/system: "yes" - name: gatekeeper-validating-webhook-configuration + creationTimestamp: null webhooks: -- clientConfig: - caBundle: Cg== +- name: validation.gatekeeper.sh + clientConfig: service: name: gatekeeper-webhook-service namespace: gatekeeper-system path: /v1/admit + caBundle: Cg== failurePolicy: Ignore - name: validation.gatekeeper.sh namespaceSelector: matchExpressions: - key: admission.gatekeeper.sh/ignore operator: DoesNotExist rules: - - apiGroups: + - resources: + - '*' + apiGroups: - '*' apiVersions: - '*' operations: - CREATE - UPDATE - resources: - - '*' sideEffects: None timeoutSeconds: 5 -- clientConfig: - caBundle: Cg== +- name: check-ignore-label.gatekeeper.sh + clientConfig: service: name: gatekeeper-webhook-service namespace: gatekeeper-system path: /v1/admitlabel + caBundle: Cg== failurePolicy: Fail - name: check-ignore-label.gatekeeper.sh rules: - - apiGroups: + - resources: + - namespaces + apiGroups: - "" apiVersions: - '*' operations: - CREATE - UPDATE - resources: - - namespaces sideEffects: None - timeoutSeconds: 5 \ No newline at end of file + timeoutSeconds: 5 diff --git a/base/gatekeeper/kustomization.yaml b/base/gatekeeper/kustomization.yaml index d0e5c9351251efc504126b634eb8c74b4f811d49..be2091040035873fc6bd277f920c4d7e651706c5 100644 --- a/base/gatekeeper/kustomization.yaml +++ b/base/gatekeeper/kustomization.yaml @@ -1,8 +1,7 @@ resources: - - namespace.yaml - - gatekeeper.yaml - +- namespace.yaml +- gatekeeper.yaml images: - - name: openpolicyagent/gatekeeper:v3.1.1 - newName: registry1.dsop.io/ironbank/opensource/openpolicyagent/gatekeeper - newTag: v3.1.1 \ No newline at end of file +- name: openpolicyagent/gatekeeper:v3.1.1 + newName: registry1.dsop.io/ironbank/opensource/openpolicyagent/gatekeeper + newTag: v3.1.1 diff --git a/base/gatekeeper/namespace.yaml b/base/gatekeeper/namespace.yaml index 5ae3b4aa60cec6550147b1c62df8549527f7aa91..0db175abb2142eb73895d46d4df40ce01f2b66fc 100644 --- a/base/gatekeeper/namespace.yaml +++ b/base/gatekeeper/namespace.yaml @@ -1,9 +1,8 @@ ---- apiVersion: v1 kind: Namespace metadata: + name: gatekeeper-system labels: admission.gatekeeper.sh/ignore: no-self-managing control-plane: controller-manager gatekeeper.sh/system: "yes" - name: gatekeeper-system diff --git a/base/istio/istio-operator/kustomization.yaml b/base/istio/istio-operator/kustomization.yaml index b33e90c1480de79918e718b6e2d3e6acbf7adf60..204c25a28bac19f29863601e437f45915aeed7e9 100644 --- a/base/istio/istio-operator/kustomization.yaml +++ b/base/istio/istio-operator/kustomization.yaml @@ -1,7 +1,6 @@ resources: - - operator.yaml - +- operator.yaml images: - - name: docker.io/istio/operator:1.7.4-distroless - newName: registry1.dsop.io/ironbank/opensource/istio/operator - newTag: 1.7.3 \ No newline at end of file +- name: docker.io/istio/operator:1.7.4-distroless + newName: registry1.dsop.io/ironbank/opensource/istio/operator + newTag: 1.7.3 diff --git a/base/istio/istio-operator/operator.yaml b/base/istio/istio-operator/operator.yaml index f0b62245d27cc379e2697587efaf070e31c54549..315eecc83505d9d520586791b06c2400fbc243d9 100644 --- a/base/istio/istio-operator/operator.yaml +++ b/base/istio/istio-operator/operator.yaml @@ -1,19 +1,18 @@ ---- # Source: istio-operator/templates/namespace.yaml apiVersion: v1 kind: Namespace metadata: name: istio-operator labels: - istio-operator-managed: Reconcile istio-injection: disabled + istio-operator-managed: Reconcile --- # Source: istio-operator/templates/service_account.yaml apiVersion: v1 kind: ServiceAccount metadata: - namespace: istio-operator name: istio-operator + namespace: istio-operator --- # Source: istio-operator/templates/crds.yaml # SYNC WITH manifests/charts/base/files @@ -28,164 +27,155 @@ spec: names: kind: IstioOperator plural: istiooperators - singular: istiooperator shortNames: - - iop + - iop + singular: istiooperator scope: Namespaced versions: - - additionalPrinterColumns: - - description: Istio control plane revision - jsonPath: .spec.revision - name: Revision - type: string - - description: IOP current state - jsonPath: .status.status - type: string - name: Status - - jsonPath: .metadata.creationTimestamp - description: - "CreationTimestamp is a timestamp representing the server time when - this object was created. It is not guaranteed to be set in happens-before order - across separate operations. Clients may not set this value. It is represented - in RFC3339 form and is in UTC. Populated by the system. Read-only. Null for - lists. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata" - name: Age - type: date - name: v1alpha1 - schema: - openAPIV3Schema: - 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://github.com/kubernetes/community/blob/master/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://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#types-kinds" - type: string - spec: - description: - "Specification of the desired state of the istio control plane resource. - More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status" - x-kubernetes-preserve-unknown-fields: true - type: object - status: - description: - "Status describes each of istio control plane component status at the current time. - 0 means NONE, 1 means UPDATING, 2 means HEALTHY, 3 means ERROR, 4 means RECONCILING. - More info: https://github.com/istio/api/blob/master/operator/v1alpha1/istio.operator.v1alpha1.pb.html & - https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status" - x-kubernetes-preserve-unknown-fields: true - type: object - type: object - served: true - storage: true - subresources: - status: {} + - name: v1alpha1 + additionalPrinterColumns: + - name: Revision + type: string + description: Istio control plane revision + jsonPath: .spec.revision + - name: Status + type: string + description: IOP current state + jsonPath: .status.status + - name: Age + type: date + description: "CreationTimestamp is a timestamp representing the server time + when this object was created. It is not guaranteed to be set in happens-before + order across separate operations. Clients may not set this value. It is represented + in RFC3339 form and is in UTC. Populated by the system. Read-only. Null for + lists. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata" + jsonPath: .metadata.creationTimestamp + schema: + openAPIV3Schema: + type: object + properties: + apiVersion: + type: string + 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://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#resources" + kind: + type: string + 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://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#types-kinds" + spec: + type: object + description: "Specification of the desired state of the istio control + plane resource. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status" + x-kubernetes-preserve-unknown-fields: true + status: + type: object + description: "Status describes each of istio control plane component status + at the current time. 0 means NONE, 1 means UPDATING, 2 means HEALTHY, + 3 means ERROR, 4 means RECONCILING. More info: https://github.com/istio/api/blob/master/operator/v1alpha1/istio.operator.v1alpha1.pb.html + & https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status" + x-kubernetes-preserve-unknown-fields: true + served: true + storage: true + subresources: + status: {} --- # Source: istio-operator/templates/clusterrole.yaml apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: - creationTimestamp: null name: istio-operator + creationTimestamp: null rules: -# istio groups -- apiGroups: - - authentication.istio.io - resources: +- resources: - '*' + # istio groups + apiGroups: + - authentication.istio.io verbs: - '*' -- apiGroups: - - config.istio.io - resources: +- resources: - '*' + apiGroups: + - config.istio.io verbs: - '*' -- apiGroups: - - install.istio.io - resources: +- resources: - '*' + apiGroups: + - install.istio.io verbs: - '*' -- apiGroups: - - networking.istio.io - resources: +- resources: - '*' + apiGroups: + - networking.istio.io verbs: - '*' -- apiGroups: - - security.istio.io - resources: +- resources: - '*' + apiGroups: + - security.istio.io verbs: - '*' -# k8s groups -- apiGroups: - - admissionregistration.k8s.io - resources: +- resources: - mutatingwebhookconfigurations - validatingwebhookconfigurations + # k8s groups + apiGroups: + - admissionregistration.k8s.io verbs: - '*' -- apiGroups: - - apiextensions.k8s.io - resources: +- resources: - customresourcedefinitions.apiextensions.k8s.io - customresourcedefinitions + apiGroups: + - apiextensions.k8s.io verbs: - '*' -- apiGroups: - - apps - - extensions - resources: +- resources: - daemonsets - deployments - deployments/finalizers - ingresses - replicasets - statefulsets + apiGroups: + - apps + - extensions verbs: - '*' -- apiGroups: - - autoscaling - resources: +- resources: - horizontalpodautoscalers + apiGroups: + - autoscaling verbs: - '*' -- apiGroups: - - monitoring.coreos.com - resources: +- resources: - servicemonitors + apiGroups: + - monitoring.coreos.com verbs: - get - create - update -- apiGroups: - - policy - resources: +- resources: - poddisruptionbudgets + apiGroups: + - policy verbs: - '*' -- apiGroups: - - rbac.authorization.k8s.io - resources: +- resources: - clusterrolebindings - clusterroles - roles - rolebindings + apiGroups: + - rbac.authorization.k8s.io verbs: - '*' -- apiGroups: - - "" - resources: +- resources: - configmaps - endpoints - events @@ -195,45 +185,47 @@ rules: - secrets - services - serviceaccounts + apiGroups: + - "" verbs: - '*' --- +apiVersion: rbac.authorization.k8s.io/v1 # Source: istio-operator/templates/clusterrole_binding.yaml kind: ClusterRoleBinding -apiVersion: rbac.authorization.k8s.io/v1 metadata: name: istio-operator -subjects: -- kind: ServiceAccount - name: istio-operator - namespace: istio-operator roleRef: - kind: ClusterRole name: istio-operator + kind: ClusterRole apiGroup: rbac.authorization.k8s.io +subjects: +- name: istio-operator + namespace: istio-operator + kind: ServiceAccount --- # Source: istio-operator/templates/service.yaml apiVersion: v1 kind: Service metadata: + name: istio-operator namespace: istio-operator labels: name: istio-operator - name: istio-operator spec: + selector: + name: istio-operator ports: - name: http-metrics port: 8383 targetPort: 8383 - selector: - name: istio-operator --- # Source: istio-operator/templates/deployment.yaml apiVersion: apps/v1 kind: Deployment metadata: - namespace: istio-operator name: istio-operator + namespace: istio-operator spec: replicas: 1 selector: @@ -246,41 +238,41 @@ spec: spec: serviceAccountName: istio-operator containers: - - name: istio-operator - image: docker.io/istio/operator:1.7.4-distroless - command: - - operator - - server - securityContext: - allowPrivilegeEscalation: false - capabilities: - drop: - - ALL - privileged: false - readOnlyRootFilesystem: true - runAsGroup: 1337 - runAsUser: 1337 - runAsNonRoot: true - imagePullPolicy: IfNotPresent - resources: - limits: - cpu: 200m - memory: 256Mi - requests: - cpu: 50m - memory: 128Mi - env: - - name: WATCH_NAMESPACE - value: "istio-system" - - name: LEADER_ELECTION_NAMESPACE - value: "istio-operator" - - name: POD_NAME - valueFrom: - fieldRef: - fieldPath: metadata.name - - name: OPERATOR_NAME - value: "istio-operator" - - name: WAIT_FOR_RESOURCES_TIMEOUT - value: "300s" - - name: REVISION - value: "" + - name: istio-operator + image: docker.io/istio/operator:1.7.4-distroless + command: + - operator + - server + env: + - name: WATCH_NAMESPACE + value: "istio-system" + - name: LEADER_ELECTION_NAMESPACE + value: "istio-operator" + - name: POD_NAME + valueFrom: + fieldRef: + fieldPath: metadata.name + - name: OPERATOR_NAME + value: "istio-operator" + - name: WAIT_FOR_RESOURCES_TIMEOUT + value: "300s" + - name: REVISION + value: "" + resources: + limits: + cpu: 200m + memory: 256Mi + requests: + cpu: 50m + memory: 128Mi + imagePullPolicy: IfNotPresent + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: true + runAsGroup: 1337 + runAsNonRoot: true + runAsUser: 1337 diff --git a/base/istio/istio-system/istio.yaml b/base/istio/istio-system/istio.yaml index d53f852fec7650c1a46b7d5bdb5c2f49df3f347f..aeb78f1f473048cc6ada2f6f28bd52a6664dab04 100644 --- a/base/istio/istio-system/istio.yaml +++ b/base/istio/istio-system/istio.yaml @@ -4,41 +4,36 @@ metadata: name: istiocontrolplane namespace: istio-system spec: - profile: default - hub: registry1.dsop.io/ironbank/opensource/istio - tag: 1.7.3 - meshConfig: - accessLogFile: /dev/stdout addonComponents: kiali: enabled: true - tracing: enabled: true - + hub: registry1.dsop.io/ironbank/opensource/istio + meshConfig: + accessLogFile: /dev/stdout + profile: default + tag: 1.7.3 values: global: imagePullSecrets: - - private-registry - - - sidecarInjectorWebhook: - rewriteAppHTTPProbe: true - neverInjectSelector: - - matchExpressions: - - key: app.kubernetes.io/component - operator: In - values: [fluentd-configcheck] - + - private-registry kiali: - hub: registry1.dsop.io/ironbank/opensource/kiali image: kiali - tag: v1.23.0 dashboard: auth: strategy: anonymous + hub: registry1.dsop.io/ironbank/opensource/kiali + tag: v1.23.0 + sidecarInjectorWebhook: + neverInjectSelector: + - matchExpressions: + - key: app.kubernetes.io/component + operator: In + values: [fluentd-configcheck] + rewriteAppHTTPProbe: true tracing: jaeger: - hub: registry1.dsop.io/ironbank/opensource/jaegertracing image: all-in-one + hub: registry1.dsop.io/ironbank/opensource/jaegertracing tag: 1.19.2 diff --git a/base/istio/istio-system/kustomization.yaml b/base/istio/istio-system/kustomization.yaml index e94541a50f25197d6648b498119a3cf47e0d56c3..5c698ac90e4c19ea02109a0ea81385cd495eae80 100644 --- a/base/istio/istio-system/kustomization.yaml +++ b/base/istio/istio-system/kustomization.yaml @@ -1,3 +1,3 @@ resources: - - namespace.yaml - - istio.yaml \ No newline at end of file +- namespace.yaml +- istio.yaml diff --git a/base/istio/istio-system/namespace.yaml b/base/istio/istio-system/namespace.yaml index 7ffc0f563a6af70a61fce2a89fc0c46bd17ef50b..af75d588e9fdef92cd6fc3281f52e94a5b3103ee 100644 --- a/base/istio/istio-system/namespace.yaml +++ b/base/istio/istio-system/namespace.yaml @@ -1,4 +1,3 @@ ---- apiVersion: v1 kind: Namespace metadata: diff --git a/base/istio/kustomization.yaml b/base/istio/kustomization.yaml index 7a61b389db4207fc7e58ed91ce1027a25aebc925..c43dc643c9c9756b8d263a6bdcae9863d7b13084 100644 --- a/base/istio/kustomization.yaml +++ b/base/istio/kustomization.yaml @@ -1,3 +1,3 @@ resources: - - istio-operator - - istio-system \ No newline at end of file +- istio-operator +- istio-system diff --git a/base/logging/eck-operator/all-in-one.yaml b/base/logging/eck-operator/all-in-one.yaml index e2a15744abb51f6979e845280a068403683a8082..261fe2976cffe171123e879927726eab7f97132d 100644 --- a/base/logging/eck-operator/all-in-one.yaml +++ b/base/logging/eck-operator/all-in-one.yaml @@ -1,33 +1,32 @@ ---- # Source: crds/all-crds.yaml apiVersion: apiextensions.k8s.io/v1beta1 kind: CustomResourceDefinition metadata: + name: apmservers.apm.k8s.elastic.co annotations: controller-gen.kubebuilder.io/version: v0.2.5 creationTimestamp: null - name: apmservers.apm.k8s.elastic.co spec: additionalPrinterColumns: - - JSONPath: .status.health - name: health + - name: health type: string - - JSONPath: .status.availableNodes - description: Available nodes - name: nodes + JSONPath: .status.health + - name: nodes type: integer - - JSONPath: .spec.version - description: APM version - name: version + JSONPath: .status.availableNodes + description: Available nodes + - name: version type: string - - JSONPath: .metadata.creationTimestamp - name: age + JSONPath: .spec.version + description: APM version + - name: age type: date + JSONPath: .metadata.creationTimestamp group: apm.k8s.elastic.co names: + kind: ApmServer categories: - elastic - kind: ApmServer listKind: ApmServerList plural: apmservers shortNames: @@ -41,58 +40,149 @@ spec: description: ApmServer represents an APM Server resource in a Kubernetes cluster. properties: apiVersion: + type: string 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: + type: string 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: + type: object description: ApmServerSpec holds the specification of an APM Server. properties: + serviceAccountName: + type: string + description: ServiceAccountName is used to check access from the current + resource to a resource (eg. Elasticsearch) in a different namespace. + Can only be used if ECK is enforcing RBAC on references. + image: + type: string + description: Image is the APM Server Docker image to deploy. config: - description: 'Config holds the APM Server configuration. See: https://www.elastic.co/guide/en/apm/server/current/configuring-howto-apm-server.html' type: object + description: 'Config holds the APM Server configuration. See: https://www.elastic.co/guide/en/apm/server/current/configuring-howto-apm-server.html' count: + type: integer description: Count of APM Server instances to deploy. format: int32 - type: integer elasticsearchRef: + type: object description: ElasticsearchRef is a reference to the output Elasticsearch cluster running in the same Kubernetes cluster. properties: name: - description: Name of the Kubernetes object. type: string + description: Name of the Kubernetes object. namespace: + type: string description: Namespace of the Kubernetes object. If empty, defaults to the current namespace. - type: string required: - name - type: object http: + type: object description: HTTP holds the HTTP layer configuration for the APM Server resource. properties: service: + type: object description: Service defines the template for the associated Kubernetes Service object. properties: metadata: + type: object description: ObjectMeta is the metadata of the service. The name and namespace provided here are managed by ECK and will be ignored. - type: object spec: + type: object description: Spec is the specification of the service. properties: + type: + type: string + description: 'type determines how the Service is exposed. + Defaults to ClusterIP. Valid options are ExternalName, + ClusterIP, NodePort, and LoadBalancer. "ExternalName" + maps to the specified externalName. "ClusterIP" allocates + a cluster-internal IP address for load-balancing to endpoints. + Endpoints are determined by the selector or if that is + not specified, by manual construction of an Endpoints + object. If clusterIP is "None", no virtual IP is allocated + and the endpoints are published as a set of endpoints + rather than a stable IP. "NodePort" builds on ClusterIP + and allocates a port on every node which routes to the + clusterIP. "LoadBalancer" builds on NodePort and creates + an external load-balancer (if supported in the current + cloud) which routes to the clusterIP. More info: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types' + selector: + type: object + additionalProperties: + type: string + description: 'Route service traffic to pods with label keys + and values matching this selector. If empty or not present, + the service is assumed to have an external process managing + its endpoints, which Kubernetes will not modify. Only + applies to types ClusterIP, NodePort, and LoadBalancer. + Ignored if type is ExternalName. More info: https://kubernetes.io/docs/concepts/services-networking/service/' + ports: + type: array + description: 'The list of ports that are exposed by this + service. More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies' + items: + type: object + description: ServicePort contains information on service's + port. + properties: + name: + type: string + description: The name of this port within the service. + This must be a DNS_LABEL. All ports within a ServiceSpec + must have unique names. When considering the endpoints + for a Service, this must match the 'name' field + in the EndpointPort. Optional if only one ServicePort + is defined on this service. + protocol: + type: string + description: The IP protocol for this port. Supports + "TCP", "UDP", and "SCTP". Default is TCP. + port: + type: integer + description: The port that will be exposed by this + service. + format: int32 + targetPort: + anyOf: + - type: integer + - type: string + description: 'Number or name of the port to access + on the pods targeted by the service. Number must + be in the range 1 to 65535. Name must be an IANA_SVC_NAME. + If this is a string, it will be looked up as a named + port in the target Pod''s container ports. If this + is not specified, the value of the ''port'' field + is used (an identity map). This field is ignored + for services with clusterIP=None, and should be + omitted or set equal to the ''port'' field. More + info: https://kubernetes.io/docs/concepts/services-networking/service/#defining-a-service' + nodePort: + type: integer + description: 'The port on each node on which this + service is exposed when type=NodePort or LoadBalancer. + Usually assigned by the system. If specified, it + will be allocated to the service if unused or else + creation of the service will fail. Default is to + auto-allocate a port if the ServiceType of this + Service requires one. More info: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport' + format: int32 + required: + - port clusterIP: + type: string description: 'clusterIP is the IP address of the service and is usually assigned randomly by the master. If an address is specified manually and is not in use by others, @@ -103,8 +193,8 @@ spec: headless services when proxying is not required. Only applies to types ClusterIP, NodePort, and LoadBalancer. Ignored if type is ExternalName. More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies' - type: string externalIPs: + type: array description: externalIPs is a list of IP addresses for which nodes in the cluster will also accept traffic for this service. These IPs are not managed by Kubernetes. The @@ -113,15 +203,32 @@ spec: load-balancers that are not part of the Kubernetes system. items: type: string + loadBalancerIP: + type: string + description: 'Only applies to Service Type: LoadBalancer + LoadBalancer will get created with the IP specified in + this field. This feature depends on whether the underlying + cloud-provider supports specifying the loadBalancerIP + when a load balancer is created. This field will be ignored + if the cloud-provider does not support the feature.' + loadBalancerSourceRanges: type: array + description: 'If specified and supported by the platform, + this will restrict traffic through the cloud-provider + load-balancer will be restricted to the specified client + IPs. This field will be ignored if the cloud-provider + does not support the feature." More info: https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/' + items: + type: string externalName: + type: string description: externalName is the external reference that kubedns or equivalent will return as a CNAME record for this service. No proxying will be involved. Must be a valid RFC-1123 hostname (https://tools.ietf.org/html/rfc1123) and requires Type to be ExternalName. - type: string externalTrafficPolicy: + type: string description: externalTrafficPolicy denotes if this Service desires to route external traffic to node-local or cluster-wide endpoints. "Local" preserves the client source IP and @@ -130,8 +237,14 @@ spec: "Cluster" obscures the client source IP and may cause a second hop to another node, but should have good overall load-spreading. + sessionAffinity: type: string + description: 'Supports "ClientIP" and "None". Used to maintain + session affinity. Enable client IP based session affinity. + Must be ClientIP or None. Defaults to None. More info: + https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies' healthCheckNodePort: + type: integer description: healthCheckNodePort specifies the healthcheck nodePort for the service. If not specified, HealthCheckNodePort is created by the service api backend with the allocated @@ -139,8 +252,8 @@ spec: by the client. Only effects when Type is set to LoadBalancer and ExternalTrafficPolicy is set to Local. format: int32 - type: integer ipFamily: + type: string description: ipFamily specifies whether this Service has a preference for a particular IP family (e.g. IPv4 vs. IPv6). If a specific IP family is requested, the clusterIP @@ -154,77 +267,8 @@ spec: Assigning a ServiceIPFamily not available in the cluster (e.g. IPv6 in IPv4 only cluster) is an error condition and will fail during clusterIP assignment. - type: string - loadBalancerIP: - description: 'Only applies to Service Type: LoadBalancer - LoadBalancer will get created with the IP specified in - this field. This feature depends on whether the underlying - cloud-provider supports specifying the loadBalancerIP - when a load balancer is created. This field will be ignored - if the cloud-provider does not support the feature.' - type: string - loadBalancerSourceRanges: - description: 'If specified and supported by the platform, - this will restrict traffic through the cloud-provider - load-balancer will be restricted to the specified client - IPs. This field will be ignored if the cloud-provider - does not support the feature." More info: https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/' - items: - type: string - type: array - ports: - description: 'The list of ports that are exposed by this - service. More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies' - items: - description: ServicePort contains information on service's - port. - properties: - name: - description: The name of this port within the service. - This must be a DNS_LABEL. All ports within a ServiceSpec - must have unique names. When considering the endpoints - for a Service, this must match the 'name' field - in the EndpointPort. Optional if only one ServicePort - is defined on this service. - type: string - nodePort: - description: 'The port on each node on which this - service is exposed when type=NodePort or LoadBalancer. - Usually assigned by the system. If specified, it - will be allocated to the service if unused or else - creation of the service will fail. Default is to - auto-allocate a port if the ServiceType of this - Service requires one. More info: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport' - format: int32 - type: integer - port: - description: The port that will be exposed by this - service. - format: int32 - type: integer - protocol: - description: The IP protocol for this port. Supports - "TCP", "UDP", and "SCTP". Default is TCP. - type: string - targetPort: - anyOf: - - type: integer - - type: string - description: 'Number or name of the port to access - on the pods targeted by the service. Number must - be in the range 1 to 65535. Name must be an IANA_SVC_NAME. - If this is a string, it will be looked up as a named - port in the target Pod''s container ports. If this - is not specified, the value of the ''port'' field - is used (an identity map). This field is ignored - for services with clusterIP=None, and should be - omitted or set equal to the ''port'' field. More - info: https://kubernetes.io/docs/concepts/services-networking/service/#defining-a-service' - required: - - port - type: object - type: array publishNotReadyAddresses: + type: boolean description: publishNotReadyAddresses, when set to true, indicates that DNS implementations must publish the notReadyAddresses of subsets for the Endpoints associated with the Service. @@ -232,41 +276,25 @@ spec: this field is to use a StatefulSet's Headless Service to propagate SRV records for its Pods without respect to their readiness for purpose of peer discovery. - type: boolean - selector: - additionalProperties: - type: string - description: 'Route service traffic to pods with label keys - and values matching this selector. If empty or not present, - the service is assumed to have an external process managing - its endpoints, which Kubernetes will not modify. Only - applies to types ClusterIP, NodePort, and LoadBalancer. - Ignored if type is ExternalName. More info: https://kubernetes.io/docs/concepts/services-networking/service/' - type: object - sessionAffinity: - description: 'Supports "ClientIP" and "None". Used to maintain - session affinity. Enable client IP based session affinity. - Must be ClientIP or None. Defaults to None. More info: - https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies' - type: string sessionAffinityConfig: + type: object description: sessionAffinityConfig contains the configurations of session affinity. properties: clientIP: + type: object description: clientIP contains the configurations of Client IP based session affinity. properties: timeoutSeconds: + type: integer description: timeoutSeconds specifies the seconds of ClientIP type session sticky time. The value must be >0 && <=86400(for 1 day) if ServiceAffinity == "ClientIP". Default value is 10800(for 3 hours). format: int32 - type: integer - type: object - type: object topologyKeys: + type: array description: topologyKeys is a preference-order list of topology keys which implementations of services should use to preferentially sort endpoints when accessing this @@ -283,29 +311,12 @@ spec: constraints will be applied. items: type: string - type: array - type: - description: 'type determines how the Service is exposed. - Defaults to ClusterIP. Valid options are ExternalName, - ClusterIP, NodePort, and LoadBalancer. "ExternalName" - maps to the specified externalName. "ClusterIP" allocates - a cluster-internal IP address for load-balancing to endpoints. - Endpoints are determined by the selector or if that is - not specified, by manual construction of an Endpoints - object. If clusterIP is "None", no virtual IP is allocated - and the endpoints are published as a set of endpoints - rather than a stable IP. "NodePort" builds on ClusterIP - and allocates a port on every node which routes to the - clusterIP. "LoadBalancer" builds on NodePort and creates - an external load-balancer (if supported in the current - cloud) which routes to the clusterIP. More info: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types' - type: string - type: object - type: object tls: + type: object description: TLS defines options for configuring TLS for HTTP. properties: certificate: + type: object description: "Certificate is a reference to a Kubernetes secret that contains the certificate and private key for enabling TLS. The referenced secret should contain the following: \n @@ -314,131 +325,119 @@ spec: to the first certificate in the certificate chain." properties: secretName: - description: SecretName is the name of the secret. type: string - type: object + description: SecretName is the name of the secret. selfSignedCertificate: + type: object description: SelfSignedCertificate allows configuring the self-signed certificate generated by the operator. properties: disabled: + type: boolean description: Disabled indicates that the provisioning of the self-signed certifcate should be disabled. - type: boolean subjectAltNames: + type: array description: SubjectAlternativeNames is a list of SANs to include in the generated HTTP TLS certificate. items: + type: object description: SubjectAlternativeName represents a SAN entry in a x509 certificate. properties: dns: - description: DNS is the DNS name of the subject. type: string + description: DNS is the DNS name of the subject. ip: - description: IP is the IP address of the subject. type: string - type: object - type: array - type: object - type: object - type: object - image: - description: Image is the APM Server Docker image to deploy. - type: string + description: IP is the IP address of the subject. kibanaRef: + type: object description: KibanaRef is a reference to a Kibana instance running in the same Kubernetes cluster. It allows APM agent central configuration management in Kibana. properties: name: - description: Name of the Kubernetes object. type: string + description: Name of the Kubernetes object. namespace: + type: string description: Namespace of the Kubernetes object. If empty, defaults to the current namespace. - type: string required: - name - type: object podTemplate: + type: object description: PodTemplate provides customisation options (labels, annotations, affinity rules, resource requests, and so on) for the APM Server pods. - type: object secureSettings: + type: array description: SecureSettings is a list of references to Kubernetes secrets containing sensitive configuration options for APM Server. items: + type: object description: SecretSource defines a data source based on a Kubernetes Secret. properties: entries: + type: array description: Entries define how to project each key-value pair in the secret to filesystem paths. If not defined, all keys will be projected to similarly named paths in the filesystem. If defined, only the specified keys will be projected to the corresponding paths. items: + type: object description: KeyToPath defines how to map a key in a Secret object to a filesystem path. properties: key: - description: Key is the key contained in the secret. type: string + description: Key is the key contained in the secret. path: + type: string description: Path is the relative file path to map the key to. Path must not be an absolute file path and must not contain any ".." components. - type: string required: - key - type: object - type: array secretName: - description: SecretName is the name of the secret. type: string + description: SecretName is the name of the secret. required: - secretName - type: object - type: array - serviceAccountName: - description: ServiceAccountName is used to check access from the current - resource to a resource (eg. Elasticsearch) in a different namespace. - Can only be used if ECK is enforcing RBAC on references. - type: string version: - description: Version of the APM Server. type: string + description: Version of the APM Server. required: - version - type: object status: + type: object description: ApmServerStatus defines the observed state of ApmServer properties: + service: + type: string + description: ExternalService is the name of the service the agents should + connect to. availableNodes: - format: int32 type: integer + format: int32 elasticsearchAssociationStatus: + type: string description: ElasticsearchAssociationStatus is the status of any auto-linking to Elasticsearch clusters. - type: string health: + type: string description: ApmServerHealth expresses the status of the Apm Server instances. - type: string kibanaAssociationStatus: + type: string description: KibanaAssociationStatus is the status of any auto-linking to Kibana. - type: string secretTokenSecret: + type: string description: SecretTokenSecretName is the name of the Secret that contains the secret token - type: string - service: - description: ExternalService is the name of the service the agents should - connect to. - type: string - type: object version: v1 versions: - name: v1 @@ -460,39 +459,39 @@ status: apiVersion: apiextensions.k8s.io/v1beta1 kind: CustomResourceDefinition metadata: + name: beats.beat.k8s.elastic.co annotations: controller-gen.kubebuilder.io/version: v0.2.5 creationTimestamp: null - name: beats.beat.k8s.elastic.co spec: additionalPrinterColumns: - - JSONPath: .status.health - name: health + - name: health type: string - - JSONPath: .status.availableNodes + JSONPath: .status.health + - name: available + type: integer + JSONPath: .status.availableNodes description: Available nodes - name: available + - name: expected type: integer - - JSONPath: .status.expectedNodes + JSONPath: .status.expectedNodes description: Expected nodes - name: expected - type: integer - - JSONPath: .spec.type + - name: type + type: string + JSONPath: .spec.type description: Beat type - name: type + - name: version type: string - - JSONPath: .spec.version + JSONPath: .spec.version description: Beat version - name: version - type: string - - JSONPath: .metadata.creationTimestamp - name: age + - name: age type: date + JSONPath: .metadata.creationTimestamp group: beat.k8s.elastic.co names: + kind: Beat categories: - elastic - kind: Beat listKind: BeatList plural: beats shortNames: @@ -506,159 +505,159 @@ spec: description: Beat is the Schema for the Beats API. properties: apiVersion: + type: string 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: + type: string 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: + type: object description: BeatSpec defines the desired state of a Beat. properties: + type: + type: string + description: Type is the type of the Beat to deploy (filebeat, metricbeat, + heartbeat, auditbeat, journalbeat, packetbeat, etc.). Any string can + be used, but well-known types will have the image field defaulted + and have the appropriate Elasticsearch roles created automatically. + It also allows for dashboard setup when combined with a `KibanaRef`. + maxLength: 20 + pattern: '[a-zA-Z0-9-]+' + serviceAccountName: + type: string + description: ServiceAccountName is used to check access from the current + resource to Elasticsearch resource in a different namespace. Can only + be used if ECK is enforcing RBAC on references. + image: + type: string + description: Image is the Beat Docker image to deploy. Version and Type + have to match the Beat in the image. config: + type: object description: Config holds the Beat configuration. At most one of [`Config`, `ConfigRef`] can be specified. - type: object configRef: + type: object description: ConfigRef contains a reference to an existing Kubernetes Secret holding the Beat configuration. Beat settings must be specified as yaml, under a single "beat.yml" entry. At most one of [`Config`, `ConfigRef`] can be specified. properties: secretName: - description: SecretName is the name of the secret. type: string - type: object + description: SecretName is the name of the secret. daemonSet: + type: object description: DaemonSet specifies the Beat should be deployed as a DaemonSet, and allows providing its spec. Cannot be used along with `deployment`. If both are absent a default for the Type is used. properties: {} - type: object deployment: + type: object description: Deployment specifies the Beat should be deployed as a Deployment, and allows providing its spec. Cannot be used along with `daemonSet`. If both are absent a default for the Type is used. properties: replicas: - format: int32 type: integer - type: object + format: int32 elasticsearchRef: + type: object description: ElasticsearchRef is a reference to an Elasticsearch cluster running in the same Kubernetes cluster. properties: name: - description: Name of the Kubernetes object. type: string + description: Name of the Kubernetes object. namespace: + type: string description: Namespace of the Kubernetes object. If empty, defaults to the current namespace. - type: string required: - name - type: object - image: - description: Image is the Beat Docker image to deploy. Version and Type - have to match the Beat in the image. - type: string kibanaRef: + type: object description: KibanaRef is a reference to a Kibana instance running in the same Kubernetes cluster. It allows automatic setup of dashboards and visualizations. properties: name: - description: Name of the Kubernetes object. type: string + description: Name of the Kubernetes object. namespace: + type: string description: Namespace of the Kubernetes object. If empty, defaults to the current namespace. - type: string required: - name - type: object secureSettings: + type: array description: SecureSettings is a list of references to Kubernetes Secrets containing sensitive configuration options for the Beat. Secrets data can be then referenced in the Beat config using the Secret's keys or as specified in `Entries` field of each SecureSetting. items: + type: object description: SecretSource defines a data source based on a Kubernetes Secret. properties: entries: + type: array description: Entries define how to project each key-value pair in the secret to filesystem paths. If not defined, all keys will be projected to similarly named paths in the filesystem. If defined, only the specified keys will be projected to the corresponding paths. items: + type: object description: KeyToPath defines how to map a key in a Secret object to a filesystem path. properties: key: - description: Key is the key contained in the secret. type: string + description: Key is the key contained in the secret. path: + type: string description: Path is the relative file path to map the key to. Path must not be an absolute file path and must not contain any ".." components. - type: string required: - key - type: object - type: array secretName: - description: SecretName is the name of the secret. type: string + description: SecretName is the name of the secret. required: - secretName - type: object - type: array - serviceAccountName: - description: ServiceAccountName is used to check access from the current - resource to Elasticsearch resource in a different namespace. Can only - be used if ECK is enforcing RBAC on references. - type: string - type: - description: Type is the type of the Beat to deploy (filebeat, metricbeat, - heartbeat, auditbeat, journalbeat, packetbeat, etc.). Any string can - be used, but well-known types will have the image field defaulted - and have the appropriate Elasticsearch roles created automatically. - It also allows for dashboard setup when combined with a `KibanaRef`. - maxLength: 20 - pattern: '[a-zA-Z0-9-]+' - type: string version: - description: Version of the Beat. type: string + description: Version of the Beat. required: - type - version - type: object status: + type: object description: BeatStatus defines the observed state of a Beat. properties: availableNodes: - format: int32 type: integer + format: int32 elasticsearchAssociationStatus: - description: AssociationStatus is the status of an association resource. type: string + description: AssociationStatus is the status of an association resource. expectedNodes: - format: int32 type: integer + format: int32 health: type: string kibanaAssociationStatus: - description: AssociationStatus is the status of an association resource. type: string - type: object + description: AssociationStatus is the status of an association resource. version: v1beta1 versions: - name: v1beta1 @@ -674,34 +673,34 @@ status: apiVersion: apiextensions.k8s.io/v1beta1 kind: CustomResourceDefinition metadata: + name: elasticsearches.elasticsearch.k8s.elastic.co annotations: controller-gen.kubebuilder.io/version: v0.2.5 creationTimestamp: null - name: elasticsearches.elasticsearch.k8s.elastic.co spec: additionalPrinterColumns: - - JSONPath: .status.health - name: health + - name: health type: string - - JSONPath: .status.availableNodes - description: Available nodes - name: nodes + JSONPath: .status.health + - name: nodes type: integer - - JSONPath: .spec.version - description: Elasticsearch version - name: version + JSONPath: .status.availableNodes + description: Available nodes + - name: version type: string - - JSONPath: .status.phase - name: phase + JSONPath: .spec.version + description: Elasticsearch version + - name: phase type: string - - JSONPath: .metadata.creationTimestamp - name: age + JSONPath: .status.phase + - name: age type: date + JSONPath: .metadata.creationTimestamp group: elasticsearch.k8s.elastic.co names: + kind: Elasticsearch categories: - elastic - kind: Elasticsearch listKind: ElasticsearchList plural: elasticsearches shortNames: @@ -716,93 +715,226 @@ spec: cluster. properties: apiVersion: + type: string 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: + type: string 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: + type: object description: ElasticsearchSpec holds the specification of an Elasticsearch cluster. properties: + updateStrategy: + type: object + description: UpdateStrategy specifies how updates to the cluster should + be performed. + properties: + changeBudget: + type: object + description: ChangeBudget defines the constraints to consider when + applying changes to the Elasticsearch cluster. + properties: + maxSurge: + type: integer + description: MaxSurge is the maximum number of new pods that + can be created exceeding the original number of pods defined + in the specification. MaxSurge is only taken into consideration + when scaling up. Setting a negative value will disable the + restriction. Defaults to unbounded if not specified. + format: int32 + maxUnavailable: + type: integer + description: MaxUnavailable is the maximum number of pods that + can be unavailable (not ready) during the update due to circumstances + under the control of the operator. Setting a negative value + will disable this restriction. Defaults to 1 if not specified. + format: int32 + serviceAccountName: + type: string + description: ServiceAccountName is used to check access from the current + resource to a resource (eg. a remote Elasticsearch cluster) in a different + namespace. Can only be used if ECK is enforcing RBAC on references. + image: + type: string + description: Image is the Elasticsearch Docker image to deploy. auth: + type: object description: Auth contains user authentication and authorization security settings for Elasticsearch. properties: fileRealm: + type: array description: FileRealm to propagate to the Elasticsearch cluster. items: + type: object description: FileRealmSource references users to create in the Elasticsearch cluster. properties: secretName: - description: SecretName is the name of the secret. type: string - type: object - type: array + description: SecretName is the name of the secret. roles: + type: array description: Roles to propagate to the Elasticsearch cluster. items: + type: object description: RoleSource references roles to create in the Elasticsearch cluster. properties: secretName: - description: SecretName is the name of the secret. type: string - type: object - type: array - type: object + description: SecretName is the name of the secret. http: + type: object description: HTTP holds HTTP layer settings for Elasticsearch. properties: service: + type: object description: Service defines the template for the associated Kubernetes Service object. properties: metadata: + type: object description: ObjectMeta is the metadata of the service. The name and namespace provided here are managed by ECK and will be ignored. - type: object spec: + type: object description: Spec is the specification of the service. properties: - clusterIP: - description: 'clusterIP is the IP address of the service - and is usually assigned randomly by the master. If an - address is specified manually and is not in use by others, - it will be allocated to the service; otherwise, creation - of the service will fail. This field can not be changed - through updates. Valid values are "None", empty string - (""), or a valid IP address. "None" can be specified for - headless services when proxying is not required. Only - applies to types ClusterIP, NodePort, and LoadBalancer. - Ignored if type is ExternalName. More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies' + type: type: string - externalIPs: - description: externalIPs is a list of IP addresses for which - nodes in the cluster will also accept traffic for this - service. These IPs are not managed by Kubernetes. The + description: 'type determines how the Service is exposed. + Defaults to ClusterIP. Valid options are ExternalName, + ClusterIP, NodePort, and LoadBalancer. "ExternalName" + maps to the specified externalName. "ClusterIP" allocates + a cluster-internal IP address for load-balancing to endpoints. + Endpoints are determined by the selector or if that is + not specified, by manual construction of an Endpoints + object. If clusterIP is "None", no virtual IP is allocated + and the endpoints are published as a set of endpoints + rather than a stable IP. "NodePort" builds on ClusterIP + and allocates a port on every node which routes to the + clusterIP. "LoadBalancer" builds on NodePort and creates + an external load-balancer (if supported in the current + cloud) which routes to the clusterIP. More info: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types' + selector: + type: object + additionalProperties: + type: string + description: 'Route service traffic to pods with label keys + and values matching this selector. If empty or not present, + the service is assumed to have an external process managing + its endpoints, which Kubernetes will not modify. Only + applies to types ClusterIP, NodePort, and LoadBalancer. + Ignored if type is ExternalName. More info: https://kubernetes.io/docs/concepts/services-networking/service/' + ports: + type: array + description: 'The list of ports that are exposed by this + service. More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies' + items: + type: object + description: ServicePort contains information on service's + port. + properties: + name: + type: string + description: The name of this port within the service. + This must be a DNS_LABEL. All ports within a ServiceSpec + must have unique names. When considering the endpoints + for a Service, this must match the 'name' field + in the EndpointPort. Optional if only one ServicePort + is defined on this service. + protocol: + type: string + description: The IP protocol for this port. Supports + "TCP", "UDP", and "SCTP". Default is TCP. + port: + type: integer + description: The port that will be exposed by this + service. + format: int32 + targetPort: + anyOf: + - type: integer + - type: string + description: 'Number or name of the port to access + on the pods targeted by the service. Number must + be in the range 1 to 65535. Name must be an IANA_SVC_NAME. + If this is a string, it will be looked up as a named + port in the target Pod''s container ports. If this + is not specified, the value of the ''port'' field + is used (an identity map). This field is ignored + for services with clusterIP=None, and should be + omitted or set equal to the ''port'' field. More + info: https://kubernetes.io/docs/concepts/services-networking/service/#defining-a-service' + nodePort: + type: integer + description: 'The port on each node on which this + service is exposed when type=NodePort or LoadBalancer. + Usually assigned by the system. If specified, it + will be allocated to the service if unused or else + creation of the service will fail. Default is to + auto-allocate a port if the ServiceType of this + Service requires one. More info: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport' + format: int32 + required: + - port + clusterIP: + type: string + description: 'clusterIP is the IP address of the service + and is usually assigned randomly by the master. If an + address is specified manually and is not in use by others, + it will be allocated to the service; otherwise, creation + of the service will fail. This field can not be changed + through updates. Valid values are "None", empty string + (""), or a valid IP address. "None" can be specified for + headless services when proxying is not required. Only + applies to types ClusterIP, NodePort, and LoadBalancer. + Ignored if type is ExternalName. More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies' + externalIPs: + type: array + description: externalIPs is a list of IP addresses for which + nodes in the cluster will also accept traffic for this + service. These IPs are not managed by Kubernetes. The user is responsible for ensuring that traffic arrives at a node with this IP. A common example is external load-balancers that are not part of the Kubernetes system. items: type: string + loadBalancerIP: + type: string + description: 'Only applies to Service Type: LoadBalancer + LoadBalancer will get created with the IP specified in + this field. This feature depends on whether the underlying + cloud-provider supports specifying the loadBalancerIP + when a load balancer is created. This field will be ignored + if the cloud-provider does not support the feature.' + loadBalancerSourceRanges: type: array + description: 'If specified and supported by the platform, + this will restrict traffic through the cloud-provider + load-balancer will be restricted to the specified client + IPs. This field will be ignored if the cloud-provider + does not support the feature." More info: https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/' + items: + type: string externalName: + type: string description: externalName is the external reference that kubedns or equivalent will return as a CNAME record for this service. No proxying will be involved. Must be a valid RFC-1123 hostname (https://tools.ietf.org/html/rfc1123) and requires Type to be ExternalName. - type: string externalTrafficPolicy: + type: string description: externalTrafficPolicy denotes if this Service desires to route external traffic to node-local or cluster-wide endpoints. "Local" preserves the client source IP and @@ -811,8 +943,14 @@ spec: "Cluster" obscures the client source IP and may cause a second hop to another node, but should have good overall load-spreading. + sessionAffinity: type: string + description: 'Supports "ClientIP" and "None". Used to maintain + session affinity. Enable client IP based session affinity. + Must be ClientIP or None. Defaults to None. More info: + https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies' healthCheckNodePort: + type: integer description: healthCheckNodePort specifies the healthcheck nodePort for the service. If not specified, HealthCheckNodePort is created by the service api backend with the allocated @@ -820,8 +958,8 @@ spec: by the client. Only effects when Type is set to LoadBalancer and ExternalTrafficPolicy is set to Local. format: int32 - type: integer ipFamily: + type: string description: ipFamily specifies whether this Service has a preference for a particular IP family (e.g. IPv4 vs. IPv6). If a specific IP family is requested, the clusterIP @@ -835,77 +973,8 @@ spec: Assigning a ServiceIPFamily not available in the cluster (e.g. IPv6 in IPv4 only cluster) is an error condition and will fail during clusterIP assignment. - type: string - loadBalancerIP: - description: 'Only applies to Service Type: LoadBalancer - LoadBalancer will get created with the IP specified in - this field. This feature depends on whether the underlying - cloud-provider supports specifying the loadBalancerIP - when a load balancer is created. This field will be ignored - if the cloud-provider does not support the feature.' - type: string - loadBalancerSourceRanges: - description: 'If specified and supported by the platform, - this will restrict traffic through the cloud-provider - load-balancer will be restricted to the specified client - IPs. This field will be ignored if the cloud-provider - does not support the feature." More info: https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/' - items: - type: string - type: array - ports: - description: 'The list of ports that are exposed by this - service. More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies' - items: - description: ServicePort contains information on service's - port. - properties: - name: - description: The name of this port within the service. - This must be a DNS_LABEL. All ports within a ServiceSpec - must have unique names. When considering the endpoints - for a Service, this must match the 'name' field - in the EndpointPort. Optional if only one ServicePort - is defined on this service. - type: string - nodePort: - description: 'The port on each node on which this - service is exposed when type=NodePort or LoadBalancer. - Usually assigned by the system. If specified, it - will be allocated to the service if unused or else - creation of the service will fail. Default is to - auto-allocate a port if the ServiceType of this - Service requires one. More info: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport' - format: int32 - type: integer - port: - description: The port that will be exposed by this - service. - format: int32 - type: integer - protocol: - description: The IP protocol for this port. Supports - "TCP", "UDP", and "SCTP". Default is TCP. - type: string - targetPort: - anyOf: - - type: integer - - type: string - description: 'Number or name of the port to access - on the pods targeted by the service. Number must - be in the range 1 to 65535. Name must be an IANA_SVC_NAME. - If this is a string, it will be looked up as a named - port in the target Pod''s container ports. If this - is not specified, the value of the ''port'' field - is used (an identity map). This field is ignored - for services with clusterIP=None, and should be - omitted or set equal to the ''port'' field. More - info: https://kubernetes.io/docs/concepts/services-networking/service/#defining-a-service' - required: - - port - type: object - type: array publishNotReadyAddresses: + type: boolean description: publishNotReadyAddresses, when set to true, indicates that DNS implementations must publish the notReadyAddresses of subsets for the Endpoints associated with the Service. @@ -913,41 +982,25 @@ spec: this field is to use a StatefulSet's Headless Service to propagate SRV records for its Pods without respect to their readiness for purpose of peer discovery. - type: boolean - selector: - additionalProperties: - type: string - description: 'Route service traffic to pods with label keys - and values matching this selector. If empty or not present, - the service is assumed to have an external process managing - its endpoints, which Kubernetes will not modify. Only - applies to types ClusterIP, NodePort, and LoadBalancer. - Ignored if type is ExternalName. More info: https://kubernetes.io/docs/concepts/services-networking/service/' - type: object - sessionAffinity: - description: 'Supports "ClientIP" and "None". Used to maintain - session affinity. Enable client IP based session affinity. - Must be ClientIP or None. Defaults to None. More info: - https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies' - type: string sessionAffinityConfig: + type: object description: sessionAffinityConfig contains the configurations of session affinity. properties: clientIP: + type: object description: clientIP contains the configurations of Client IP based session affinity. properties: timeoutSeconds: + type: integer description: timeoutSeconds specifies the seconds of ClientIP type session sticky time. The value must be >0 && <=86400(for 1 day) if ServiceAffinity == "ClientIP". Default value is 10800(for 3 hours). format: int32 - type: integer - type: object - type: object topologyKeys: + type: array description: topologyKeys is a preference-order list of topology keys which implementations of services should use to preferentially sort endpoints when accessing this @@ -964,29 +1017,12 @@ spec: constraints will be applied. items: type: string - type: array - type: - description: 'type determines how the Service is exposed. - Defaults to ClusterIP. Valid options are ExternalName, - ClusterIP, NodePort, and LoadBalancer. "ExternalName" - maps to the specified externalName. "ClusterIP" allocates - a cluster-internal IP address for load-balancing to endpoints. - Endpoints are determined by the selector or if that is - not specified, by manual construction of an Endpoints - object. If clusterIP is "None", no virtual IP is allocated - and the endpoints are published as a set of endpoints - rather than a stable IP. "NodePort" builds on ClusterIP - and allocates a port on every node which routes to the - clusterIP. "LoadBalancer" builds on NodePort and creates - an external load-balancer (if supported in the current - cloud) which routes to the clusterIP. More info: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types' - type: string - type: object - type: object tls: + type: object description: TLS defines options for configuring TLS for HTTP. properties: certificate: + type: object description: "Certificate is a reference to a Kubernetes secret that contains the certificate and private key for enabling TLS. The referenced secret should contain the following: \n @@ -995,65 +1031,49 @@ spec: to the first certificate in the certificate chain." properties: secretName: - description: SecretName is the name of the secret. type: string - type: object + description: SecretName is the name of the secret. selfSignedCertificate: + type: object description: SelfSignedCertificate allows configuring the self-signed certificate generated by the operator. properties: disabled: + type: boolean description: Disabled indicates that the provisioning of the self-signed certifcate should be disabled. - type: boolean subjectAltNames: + type: array description: SubjectAlternativeNames is a list of SANs to include in the generated HTTP TLS certificate. items: + type: object description: SubjectAlternativeName represents a SAN entry in a x509 certificate. properties: dns: - description: DNS is the DNS name of the subject. type: string + description: DNS is the DNS name of the subject. ip: - description: IP is the IP address of the subject. type: string - type: object - type: array - type: object - type: object - type: object - image: - description: Image is the Elasticsearch Docker image to deploy. - type: string + description: IP is the IP address of the subject. nodeSets: + type: array description: NodeSets allow specifying groups of Elasticsearch nodes sharing the same configuration and Pod templates. items: + type: object description: NodeSet is the specification for a group of Elasticsearch nodes sharing the same configuration and a Pod template. properties: - config: - description: Config holds the Elasticsearch configuration. - type: object - count: - description: Count of Elasticsearch nodes to deploy. - format: int32 - minimum: 1 - type: integer name: + type: string description: Name of this set of nodes. Becomes a part of the Elasticsearch node.name setting. maxLength: 23 pattern: '[a-zA-Z0-9-]+' - type: string - podTemplate: - description: PodTemplate provides customisation options (labels, - annotations, affinity rules, resource requests, and so on) for - the Pods belonging to this NodeSet. - type: object volumeClaimTemplates: + type: array description: VolumeClaimTemplates is a list of persistent volume claims to be used by each Pod in this NodeSet. Every claim in this list must have a matching volumeMount in one of the containers @@ -1061,112 +1081,56 @@ spec: over any default claims added by the operator with the same name. items: + type: object description: PersistentVolumeClaim is a user's request for and claim to a persistent volume properties: apiVersion: + type: string 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: + type: string 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: - description: 'Standard object''s metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata' type: object + description: 'Standard object''s metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata' spec: + type: object description: 'Spec defines the desired characteristics of a volume requested by a pod author. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' properties: - accessModes: - description: 'AccessModes contains the desired access - modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1' - items: - type: string - type: array - dataSource: - description: This field requires the VolumeSnapshotDataSource - alpha feature gate to be enabled and currently VolumeSnapshot - is the only supported data source. If the provisioner - can support VolumeSnapshot data source, it will create - a new volume and data will be restored to the volume - at the same time. If the provisioner does not support - VolumeSnapshot data source, volume will not be created - and the failure will be reported as an event. In the - future, we plan to support more data source types - and the behavior of the provisioner may change. - properties: - apiGroup: - description: APIGroup is the group for the resource - being referenced. If APIGroup is not specified, - the specified Kind must be in the core API group. - For any other third-party types, APIGroup is required. - type: string - kind: - description: Kind is the type of resource being - referenced - type: string - name: - description: Name is the name of resource being - referenced - type: string - required: - - kind - - name - type: object - resources: - description: 'Resources represents the minimum resources - the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources' - properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - description: 'Limits describes the maximum amount - of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - description: 'Requests describes the minimum amount - of compute resources required. If Requests is - omitted for a container, it defaults to Limits - if that is explicitly specified, otherwise to - an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - type: object selector: + type: object description: A label query over volumes to consider for binding. properties: matchExpressions: + type: array description: matchExpressions is a list of label selector requirements. The requirements are ANDed. items: + type: object description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. properties: key: + type: string description: key is the label key that the selector applies to. - type: string operator: + type: string description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. - type: string values: + type: array description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the @@ -1175,13 +1139,11 @@ spec: replaced during a strategic merge patch. items: type: string - type: array required: - key - operator - type: object - type: array matchLabels: + type: object additionalProperties: type: string description: matchLabels is a map of {key,value} @@ -1190,33 +1152,94 @@ spec: whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + resources: + type: object + description: 'Resources represents the minimum resources + the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources' + properties: + limits: + type: object + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + description: 'Limits describes the maximum amount + of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' + requests: type: object + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + description: 'Requests describes the minimum amount + of compute resources required. If Requests is + omitted for a container, it defaults to Limits + if that is explicitly specified, otherwise to + an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' + accessModes: + type: array + description: 'AccessModes contains the desired access + modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1' + items: + type: string + dataSource: type: object + description: This field requires the VolumeSnapshotDataSource + alpha feature gate to be enabled and currently VolumeSnapshot + is the only supported data source. If the provisioner + can support VolumeSnapshot data source, it will create + a new volume and data will be restored to the volume + at the same time. If the provisioner does not support + VolumeSnapshot data source, volume will not be created + and the failure will be reported as an event. In the + future, we plan to support more data source types + and the behavior of the provisioner may change. + properties: + name: + type: string + description: Name is the name of resource being + referenced + kind: + type: string + description: Kind is the type of resource being + referenced + apiGroup: + type: string + description: APIGroup is the group for the resource + being referenced. If APIGroup is not specified, + the specified Kind must be in the core API group. + For any other third-party types, APIGroup is required. + required: + - kind + - name storageClassName: + type: string description: 'Name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1' - type: string volumeMode: + type: string description: volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec. This is a beta feature. - type: string volumeName: + type: string description: VolumeName is the binding reference to the PersistentVolume backing this claim. - type: string - type: object status: + type: object description: 'Status represents the current information/status of a persistent volume claim. Read-only. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' properties: accessModes: + type: array description: 'AccessModes contains the actual access modes the volume backing the PVC has. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1' items: type: string - type: array capacity: + type: object additionalProperties: anyOf: - type: integer @@ -1224,111 +1247,106 @@ spec: pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ description: Represents the actual resources of the underlying volume. - type: object conditions: + type: array description: Current Condition of persistent volume claim. If underlying persistent volume is being resized then the Condition will be set to 'ResizeStarted'. items: + type: object description: PersistentVolumeClaimCondition contails details about state of pvc properties: + type: + type: string + description: PersistentVolumeClaimConditionType + is a valid value of PersistentVolumeClaimCondition.Type + status: + type: string lastProbeTime: + type: string description: Last time we probed the condition. format: date-time - type: string lastTransitionTime: + type: string description: Last time the condition transitioned from one status to another. format: date-time - type: string message: + type: string description: Human-readable message indicating details about last transition. - type: string reason: + type: string description: Unique, this should be a short, machine understandable string that gives the reason for condition's last transition. If it reports "ResizeStarted" that means the underlying persistent volume is being resized. - type: string - status: - type: string - type: - description: PersistentVolumeClaimConditionType - is a valid value of PersistentVolumeClaimCondition.Type - type: string required: - status - type - type: object - type: array phase: - description: Phase represents the current phase of PersistentVolumeClaim. type: string - type: object - type: object - type: array + description: Phase represents the current phase of PersistentVolumeClaim. + config: + type: object + description: Config holds the Elasticsearch configuration. + count: + type: integer + description: Count of Elasticsearch nodes to deploy. + format: int32 + minimum: 1 + podTemplate: + type: object + description: PodTemplate provides customisation options (labels, + annotations, affinity rules, resource requests, and so on) for + the Pods belonging to this NodeSet. required: - count - name - type: object minItems: 1 - type: array podDisruptionBudget: + type: object description: PodDisruptionBudget provides access to the default pod disruption budget for the Elasticsearch cluster. The default budget selects all cluster pods and sets `maxUnavailable` to 1. To disable, set `PodDisruptionBudget` to the empty value (`{}` in YAML). properties: metadata: + type: object description: ObjectMeta is the metadata of the PDB. The name and namespace provided here are managed by ECK and will be ignored. - type: object spec: + type: object description: Spec is the specification of the PDB. properties: - maxUnavailable: - anyOf: - - type: integer - - type: string - description: An eviction is allowed if at most "maxUnavailable" - pods selected by "selector" are unavailable after the eviction, - i.e. even in absence of the evicted pod. For example, one - can prevent all voluntary evictions by specifying 0. This - is a mutually exclusive setting with "minAvailable". - minAvailable: - anyOf: - - type: integer - - type: string - description: An eviction is allowed if at least "minAvailable" - pods selected by "selector" will still be available after - the eviction, i.e. even in the absence of the evicted pod. So - for example you can prevent all voluntary evictions by specifying - "100%". selector: + type: object description: Label query over pods whose evictions are managed by the disruption budget. properties: matchExpressions: + type: array description: matchExpressions is a list of label selector requirements. The requirements are ANDed. items: + type: object description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. properties: key: + type: string description: key is the label key that the selector applies to. - type: string operator: + type: string description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. - type: string values: + type: array description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or @@ -1336,13 +1354,11 @@ spec: array is replaced during a strategic merge patch. items: type: string - type: array required: - key - operator - type: object - type: array matchLabels: + type: object additionalProperties: type: string description: matchLabels is a map of {key,value} pairs. @@ -1350,98 +1366,189 @@ spec: to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. - type: object - type: object - type: object - type: object - remoteClusters: - description: RemoteClusters enables you to establish uni-directional + maxUnavailable: + anyOf: + - type: integer + - type: string + description: An eviction is allowed if at most "maxUnavailable" + pods selected by "selector" are unavailable after the eviction, + i.e. even in absence of the evicted pod. For example, one + can prevent all voluntary evictions by specifying 0. This + is a mutually exclusive setting with "minAvailable". + minAvailable: + anyOf: + - type: integer + - type: string + description: An eviction is allowed if at least "minAvailable" + pods selected by "selector" will still be available after + the eviction, i.e. even in the absence of the evicted pod. So + for example you can prevent all voluntary evictions by specifying + "100%". + remoteClusters: + type: array + description: RemoteClusters enables you to establish uni-directional connections to a remote Elasticsearch cluster. items: + type: object description: RemoteCluster declares a remote Elasticsearch cluster connection. properties: + name: + type: string + description: Name is the name of the remote cluster as it is set + in the Elasticsearch settings. The name is expected to be unique + for each remote clusters. + minLength: 1 elasticsearchRef: + type: object description: ElasticsearchRef is a reference to an Elasticsearch cluster running within the same k8s cluster. properties: name: - description: Name of the Kubernetes object. type: string + description: Name of the Kubernetes object. namespace: + type: string description: Namespace of the Kubernetes object. If empty, defaults to the current namespace. - type: string required: - name - type: object - name: - description: Name is the name of the remote cluster as it is set - in the Elasticsearch settings. The name is expected to be unique - for each remote clusters. - minLength: 1 - type: string required: - name - type: object - type: array secureSettings: + type: array description: SecureSettings is a list of references to Kubernetes secrets containing sensitive configuration options for Elasticsearch. items: + type: object description: SecretSource defines a data source based on a Kubernetes Secret. properties: entries: + type: array description: Entries define how to project each key-value pair in the secret to filesystem paths. If not defined, all keys will be projected to similarly named paths in the filesystem. If defined, only the specified keys will be projected to the corresponding paths. items: + type: object description: KeyToPath defines how to map a key in a Secret object to a filesystem path. properties: key: - description: Key is the key contained in the secret. type: string + description: Key is the key contained in the secret. path: + type: string description: Path is the relative file path to map the key to. Path must not be an absolute file path and must not contain any ".." components. - type: string required: - key - type: object - type: array secretName: - description: SecretName is the name of the secret. type: string + description: SecretName is the name of the secret. required: - secretName - type: object - type: array - serviceAccountName: - description: ServiceAccountName is used to check access from the current - resource to a resource (eg. a remote Elasticsearch cluster) in a different - namespace. Can only be used if ECK is enforcing RBAC on references. - type: string transport: + type: object description: Transport holds transport layer settings for Elasticsearch. properties: service: + type: object description: Service defines the template for the associated Kubernetes Service object. properties: metadata: + type: object description: ObjectMeta is the metadata of the service. The name and namespace provided here are managed by ECK and will be ignored. - type: object spec: + type: object description: Spec is the specification of the service. properties: + type: + type: string + description: 'type determines how the Service is exposed. + Defaults to ClusterIP. Valid options are ExternalName, + ClusterIP, NodePort, and LoadBalancer. "ExternalName" + maps to the specified externalName. "ClusterIP" allocates + a cluster-internal IP address for load-balancing to endpoints. + Endpoints are determined by the selector or if that is + not specified, by manual construction of an Endpoints + object. If clusterIP is "None", no virtual IP is allocated + and the endpoints are published as a set of endpoints + rather than a stable IP. "NodePort" builds on ClusterIP + and allocates a port on every node which routes to the + clusterIP. "LoadBalancer" builds on NodePort and creates + an external load-balancer (if supported in the current + cloud) which routes to the clusterIP. More info: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types' + selector: + type: object + additionalProperties: + type: string + description: 'Route service traffic to pods with label keys + and values matching this selector. If empty or not present, + the service is assumed to have an external process managing + its endpoints, which Kubernetes will not modify. Only + applies to types ClusterIP, NodePort, and LoadBalancer. + Ignored if type is ExternalName. More info: https://kubernetes.io/docs/concepts/services-networking/service/' + ports: + type: array + description: 'The list of ports that are exposed by this + service. More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies' + items: + type: object + description: ServicePort contains information on service's + port. + properties: + name: + type: string + description: The name of this port within the service. + This must be a DNS_LABEL. All ports within a ServiceSpec + must have unique names. When considering the endpoints + for a Service, this must match the 'name' field + in the EndpointPort. Optional if only one ServicePort + is defined on this service. + protocol: + type: string + description: The IP protocol for this port. Supports + "TCP", "UDP", and "SCTP". Default is TCP. + port: + type: integer + description: The port that will be exposed by this + service. + format: int32 + targetPort: + anyOf: + - type: integer + - type: string + description: 'Number or name of the port to access + on the pods targeted by the service. Number must + be in the range 1 to 65535. Name must be an IANA_SVC_NAME. + If this is a string, it will be looked up as a named + port in the target Pod''s container ports. If this + is not specified, the value of the ''port'' field + is used (an identity map). This field is ignored + for services with clusterIP=None, and should be + omitted or set equal to the ''port'' field. More + info: https://kubernetes.io/docs/concepts/services-networking/service/#defining-a-service' + nodePort: + type: integer + description: 'The port on each node on which this + service is exposed when type=NodePort or LoadBalancer. + Usually assigned by the system. If specified, it + will be allocated to the service if unused or else + creation of the service will fail. Default is to + auto-allocate a port if the ServiceType of this + Service requires one. More info: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport' + format: int32 + required: + - port clusterIP: + type: string description: 'clusterIP is the IP address of the service and is usually assigned randomly by the master. If an address is specified manually and is not in use by others, @@ -1452,8 +1559,8 @@ spec: headless services when proxying is not required. Only applies to types ClusterIP, NodePort, and LoadBalancer. Ignored if type is ExternalName. More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies' - type: string externalIPs: + type: array description: externalIPs is a list of IP addresses for which nodes in the cluster will also accept traffic for this service. These IPs are not managed by Kubernetes. The @@ -1462,15 +1569,32 @@ spec: load-balancers that are not part of the Kubernetes system. items: type: string + loadBalancerIP: + type: string + description: 'Only applies to Service Type: LoadBalancer + LoadBalancer will get created with the IP specified in + this field. This feature depends on whether the underlying + cloud-provider supports specifying the loadBalancerIP + when a load balancer is created. This field will be ignored + if the cloud-provider does not support the feature.' + loadBalancerSourceRanges: type: array + description: 'If specified and supported by the platform, + this will restrict traffic through the cloud-provider + load-balancer will be restricted to the specified client + IPs. This field will be ignored if the cloud-provider + does not support the feature." More info: https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/' + items: + type: string externalName: + type: string description: externalName is the external reference that kubedns or equivalent will return as a CNAME record for this service. No proxying will be involved. Must be a valid RFC-1123 hostname (https://tools.ietf.org/html/rfc1123) and requires Type to be ExternalName. - type: string externalTrafficPolicy: + type: string description: externalTrafficPolicy denotes if this Service desires to route external traffic to node-local or cluster-wide endpoints. "Local" preserves the client source IP and @@ -1479,8 +1603,14 @@ spec: "Cluster" obscures the client source IP and may cause a second hop to another node, but should have good overall load-spreading. + sessionAffinity: type: string + description: 'Supports "ClientIP" and "None". Used to maintain + session affinity. Enable client IP based session affinity. + Must be ClientIP or None. Defaults to None. More info: + https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies' healthCheckNodePort: + type: integer description: healthCheckNodePort specifies the healthcheck nodePort for the service. If not specified, HealthCheckNodePort is created by the service api backend with the allocated @@ -1488,8 +1618,8 @@ spec: by the client. Only effects when Type is set to LoadBalancer and ExternalTrafficPolicy is set to Local. format: int32 - type: integer ipFamily: + type: string description: ipFamily specifies whether this Service has a preference for a particular IP family (e.g. IPv4 vs. IPv6). If a specific IP family is requested, the clusterIP @@ -1503,77 +1633,8 @@ spec: Assigning a ServiceIPFamily not available in the cluster (e.g. IPv6 in IPv4 only cluster) is an error condition and will fail during clusterIP assignment. - type: string - loadBalancerIP: - description: 'Only applies to Service Type: LoadBalancer - LoadBalancer will get created with the IP specified in - this field. This feature depends on whether the underlying - cloud-provider supports specifying the loadBalancerIP - when a load balancer is created. This field will be ignored - if the cloud-provider does not support the feature.' - type: string - loadBalancerSourceRanges: - description: 'If specified and supported by the platform, - this will restrict traffic through the cloud-provider - load-balancer will be restricted to the specified client - IPs. This field will be ignored if the cloud-provider - does not support the feature." More info: https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/' - items: - type: string - type: array - ports: - description: 'The list of ports that are exposed by this - service. More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies' - items: - description: ServicePort contains information on service's - port. - properties: - name: - description: The name of this port within the service. - This must be a DNS_LABEL. All ports within a ServiceSpec - must have unique names. When considering the endpoints - for a Service, this must match the 'name' field - in the EndpointPort. Optional if only one ServicePort - is defined on this service. - type: string - nodePort: - description: 'The port on each node on which this - service is exposed when type=NodePort or LoadBalancer. - Usually assigned by the system. If specified, it - will be allocated to the service if unused or else - creation of the service will fail. Default is to - auto-allocate a port if the ServiceType of this - Service requires one. More info: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport' - format: int32 - type: integer - port: - description: The port that will be exposed by this - service. - format: int32 - type: integer - protocol: - description: The IP protocol for this port. Supports - "TCP", "UDP", and "SCTP". Default is TCP. - type: string - targetPort: - anyOf: - - type: integer - - type: string - description: 'Number or name of the port to access - on the pods targeted by the service. Number must - be in the range 1 to 65535. Name must be an IANA_SVC_NAME. - If this is a string, it will be looked up as a named - port in the target Pod''s container ports. If this - is not specified, the value of the ''port'' field - is used (an identity map). This field is ignored - for services with clusterIP=None, and should be - omitted or set equal to the ''port'' field. More - info: https://kubernetes.io/docs/concepts/services-networking/service/#defining-a-service' - required: - - port - type: object - type: array publishNotReadyAddresses: + type: boolean description: publishNotReadyAddresses, when set to true, indicates that DNS implementations must publish the notReadyAddresses of subsets for the Endpoints associated with the Service. @@ -1581,124 +1642,62 @@ spec: this field is to use a StatefulSet's Headless Service to propagate SRV records for its Pods without respect to their readiness for purpose of peer discovery. - type: boolean - selector: - additionalProperties: - type: string - description: 'Route service traffic to pods with label keys - and values matching this selector. If empty or not present, - the service is assumed to have an external process managing - its endpoints, which Kubernetes will not modify. Only - applies to types ClusterIP, NodePort, and LoadBalancer. - Ignored if type is ExternalName. More info: https://kubernetes.io/docs/concepts/services-networking/service/' - type: object - sessionAffinity: - description: 'Supports "ClientIP" and "None". Used to maintain - session affinity. Enable client IP based session affinity. - Must be ClientIP or None. Defaults to None. More info: - https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies' - type: string sessionAffinityConfig: + type: object description: sessionAffinityConfig contains the configurations of session affinity. properties: clientIP: + type: object description: clientIP contains the configurations of Client IP based session affinity. properties: timeoutSeconds: + type: integer description: timeoutSeconds specifies the seconds of ClientIP type session sticky time. The value must be >0 && <=86400(for 1 day) if ServiceAffinity == "ClientIP". Default value is 10800(for 3 hours). format: int32 - type: integer - type: object - type: object topologyKeys: + type: array description: topologyKeys is a preference-order list of topology keys which implementations of services should use to preferentially sort endpoints when accessing this - Service, it can not be used at the same time as externalTrafficPolicy=Local. - Topology keys must be valid label keys and at most 16 - keys may be specified. Endpoints are chosen based on the - first topology key with available backends. If this field - is specified and all entries have no backends that match - the topology of the client, the service has no backends - for that client and connections should fail. The special - value "*" may be used to mean "any topology". This catch-all - value, if used, only makes sense as the last value in - the list. If this is not specified or empty, no topology - constraints will be applied. - items: - type: string - type: array - type: - description: 'type determines how the Service is exposed. - Defaults to ClusterIP. Valid options are ExternalName, - ClusterIP, NodePort, and LoadBalancer. "ExternalName" - maps to the specified externalName. "ClusterIP" allocates - a cluster-internal IP address for load-balancing to endpoints. - Endpoints are determined by the selector or if that is - not specified, by manual construction of an Endpoints - object. If clusterIP is "None", no virtual IP is allocated - and the endpoints are published as a set of endpoints - rather than a stable IP. "NodePort" builds on ClusterIP - and allocates a port on every node which routes to the - clusterIP. "LoadBalancer" builds on NodePort and creates - an external load-balancer (if supported in the current - cloud) which routes to the clusterIP. More info: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types' - type: string - type: object - type: object - type: object - updateStrategy: - description: UpdateStrategy specifies how updates to the cluster should - be performed. - properties: - changeBudget: - description: ChangeBudget defines the constraints to consider when - applying changes to the Elasticsearch cluster. - properties: - maxSurge: - description: MaxSurge is the maximum number of new pods that - can be created exceeding the original number of pods defined - in the specification. MaxSurge is only taken into consideration - when scaling up. Setting a negative value will disable the - restriction. Defaults to unbounded if not specified. - format: int32 - type: integer - maxUnavailable: - description: MaxUnavailable is the maximum number of pods that - can be unavailable (not ready) during the update due to circumstances - under the control of the operator. Setting a negative value - will disable this restriction. Defaults to 1 if not specified. - format: int32 - type: integer - type: object - type: object + Service, it can not be used at the same time as externalTrafficPolicy=Local. + Topology keys must be valid label keys and at most 16 + keys may be specified. Endpoints are chosen based on the + first topology key with available backends. If this field + is specified and all entries have no backends that match + the topology of the client, the service has no backends + for that client and connections should fail. The special + value "*" may be used to mean "any topology". This catch-all + value, if used, only makes sense as the last value in + the list. If this is not specified or empty, no topology + constraints will be applied. + items: + type: string version: - description: Version of Elasticsearch. type: string + description: Version of Elasticsearch. required: - nodeSets - version - type: object status: + type: object description: ElasticsearchStatus defines the observed state of Elasticsearch properties: availableNodes: - format: int32 type: integer + format: int32 health: + type: string description: ElasticsearchHealth is the health of the cluster as returned by the health API. - type: string phase: + type: string description: ElasticsearchOrchestrationPhase is the phase Elasticsearch is in from the controller point of view. - type: string - type: object version: v1 versions: - name: v1 @@ -1720,31 +1719,31 @@ status: apiVersion: apiextensions.k8s.io/v1beta1 kind: CustomResourceDefinition metadata: + name: enterprisesearches.enterprisesearch.k8s.elastic.co annotations: controller-gen.kubebuilder.io/version: v0.2.5 creationTimestamp: null - name: enterprisesearches.enterprisesearch.k8s.elastic.co spec: additionalPrinterColumns: - - JSONPath: .status.health - name: health + - name: health type: string - - JSONPath: .status.availableNodes - description: Available nodes - name: nodes + JSONPath: .status.health + - name: nodes type: integer - - JSONPath: .spec.version - description: Enterprise Search version - name: version + JSONPath: .status.availableNodes + description: Available nodes + - name: version type: string - - JSONPath: .metadata.creationTimestamp - name: age + JSONPath: .spec.version + description: Enterprise Search version + - name: age type: date + JSONPath: .metadata.creationTimestamp group: enterprisesearch.k8s.elastic.co names: + kind: EnterpriseSearch categories: - elastic - kind: EnterpriseSearch listKind: EnterpriseSearchList plural: enterprisesearches shortNames: @@ -1758,182 +1757,132 @@ spec: description: EnterpriseSearch is a Kubernetes CRD to represent Enterprise Search. properties: apiVersion: + type: string 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: + type: string 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: + type: object description: EnterpriseSearchSpec holds the specification of an Enterprise Search resource. properties: + serviceAccountName: + type: string + description: ServiceAccountName is used to check access from the current + resource to a resource (eg. Elasticsearch) in a different namespace. + Can only be used if ECK is enforcing RBAC on references. + image: + type: string + description: Image is the Enterprise Search Docker image to deploy. config: - description: Config holds the Enterprise Search configuration. type: object + description: Config holds the Enterprise Search configuration. configRef: + type: object description: ConfigRef contains a reference to an existing Kubernetes Secret holding the Enterprise Search configuration. Configuration settings are merged and have precedence over settings specified in `config`. properties: secretName: - description: SecretName is the name of the secret. type: string - type: object + description: SecretName is the name of the secret. count: + type: integer description: Count of Enterprise Search instances to deploy. format: int32 - type: integer elasticsearchRef: + type: object description: ElasticsearchRef is a reference to the Elasticsearch cluster running in the same Kubernetes cluster. properties: name: - description: Name of the Kubernetes object. type: string + description: Name of the Kubernetes object. namespace: + type: string description: Namespace of the Kubernetes object. If empty, defaults to the current namespace. - type: string required: - name - type: object http: + type: object description: HTTP holds the HTTP layer configuration for Enterprise Search resource. properties: service: + type: object description: Service defines the template for the associated Kubernetes Service object. properties: metadata: + type: object description: ObjectMeta is the metadata of the service. The name and namespace provided here are managed by ECK and will be ignored. - type: object spec: + type: object description: Spec is the specification of the service. properties: - clusterIP: - description: 'clusterIP is the IP address of the service - and is usually assigned randomly by the master. If an - address is specified manually and is not in use by others, - it will be allocated to the service; otherwise, creation - of the service will fail. This field can not be changed - through updates. Valid values are "None", empty string - (""), or a valid IP address. "None" can be specified for - headless services when proxying is not required. Only - applies to types ClusterIP, NodePort, and LoadBalancer. - Ignored if type is ExternalName. More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies' - type: string - externalIPs: - description: externalIPs is a list of IP addresses for which - nodes in the cluster will also accept traffic for this - service. These IPs are not managed by Kubernetes. The - user is responsible for ensuring that traffic arrives - at a node with this IP. A common example is external - load-balancers that are not part of the Kubernetes system. - items: - type: string - type: array - externalName: - description: externalName is the external reference that - kubedns or equivalent will return as a CNAME record for - this service. No proxying will be involved. Must be a - valid RFC-1123 hostname (https://tools.ietf.org/html/rfc1123) - and requires Type to be ExternalName. - type: string - externalTrafficPolicy: - description: externalTrafficPolicy denotes if this Service - desires to route external traffic to node-local or cluster-wide - endpoints. "Local" preserves the client source IP and - avoids a second hop for LoadBalancer and Nodeport type - services, but risks potentially imbalanced traffic spreading. - "Cluster" obscures the client source IP and may cause - a second hop to another node, but should have good overall - load-spreading. - type: string - healthCheckNodePort: - description: healthCheckNodePort specifies the healthcheck - nodePort for the service. If not specified, HealthCheckNodePort - is created by the service api backend with the allocated - nodePort. Will use user-specified nodePort value if specified - by the client. Only effects when Type is set to LoadBalancer - and ExternalTrafficPolicy is set to Local. - format: int32 - type: integer - ipFamily: - description: ipFamily specifies whether this Service has - a preference for a particular IP family (e.g. IPv4 vs. - IPv6). If a specific IP family is requested, the clusterIP - field will be allocated from that family, if it is available - in the cluster. If no IP family is requested, the cluster's - primary IP family will be used. Other IP fields (loadBalancerIP, - loadBalancerSourceRanges, externalIPs) and controllers - which allocate external load-balancers should use the - same IP family. Endpoints for this Service will be of - this family. This field is immutable after creation. - Assigning a ServiceIPFamily not available in the cluster - (e.g. IPv6 in IPv4 only cluster) is an error condition - and will fail during clusterIP assignment. - type: string - loadBalancerIP: - description: 'Only applies to Service Type: LoadBalancer - LoadBalancer will get created with the IP specified in - this field. This feature depends on whether the underlying - cloud-provider supports specifying the loadBalancerIP - when a load balancer is created. This field will be ignored - if the cloud-provider does not support the feature.' + type: type: string - loadBalancerSourceRanges: - description: 'If specified and supported by the platform, - this will restrict traffic through the cloud-provider - load-balancer will be restricted to the specified client - IPs. This field will be ignored if the cloud-provider - does not support the feature." More info: https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/' - items: + description: 'type determines how the Service is exposed. + Defaults to ClusterIP. Valid options are ExternalName, + ClusterIP, NodePort, and LoadBalancer. "ExternalName" + maps to the specified externalName. "ClusterIP" allocates + a cluster-internal IP address for load-balancing to endpoints. + Endpoints are determined by the selector or if that is + not specified, by manual construction of an Endpoints + object. If clusterIP is "None", no virtual IP is allocated + and the endpoints are published as a set of endpoints + rather than a stable IP. "NodePort" builds on ClusterIP + and allocates a port on every node which routes to the + clusterIP. "LoadBalancer" builds on NodePort and creates + an external load-balancer (if supported in the current + cloud) which routes to the clusterIP. More info: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types' + selector: + type: object + additionalProperties: type: string - type: array + description: 'Route service traffic to pods with label keys + and values matching this selector. If empty or not present, + the service is assumed to have an external process managing + its endpoints, which Kubernetes will not modify. Only + applies to types ClusterIP, NodePort, and LoadBalancer. + Ignored if type is ExternalName. More info: https://kubernetes.io/docs/concepts/services-networking/service/' ports: + type: array description: 'The list of ports that are exposed by this service. More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies' items: + type: object description: ServicePort contains information on service's port. properties: name: + type: string description: The name of this port within the service. This must be a DNS_LABEL. All ports within a ServiceSpec must have unique names. When considering the endpoints for a Service, this must match the 'name' field in the EndpointPort. Optional if only one ServicePort is defined on this service. + protocol: type: string - nodePort: - description: 'The port on each node on which this - service is exposed when type=NodePort or LoadBalancer. - Usually assigned by the system. If specified, it - will be allocated to the service if unused or else - creation of the service will fail. Default is to - auto-allocate a port if the ServiceType of this - Service requires one. More info: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport' - format: int32 - type: integer + description: The IP protocol for this port. Supports + "TCP", "UDP", and "SCTP". Default is TCP. port: + type: integer description: The port that will be exposed by this service. format: int32 - type: integer - protocol: - description: The IP protocol for this port. Supports - "TCP", "UDP", and "SCTP". Default is TCP. - type: string targetPort: anyOf: - type: integer @@ -1948,11 +1897,106 @@ spec: for services with clusterIP=None, and should be omitted or set equal to the ''port'' field. More info: https://kubernetes.io/docs/concepts/services-networking/service/#defining-a-service' + nodePort: + type: integer + description: 'The port on each node on which this + service is exposed when type=NodePort or LoadBalancer. + Usually assigned by the system. If specified, it + will be allocated to the service if unused or else + creation of the service will fail. Default is to + auto-allocate a port if the ServiceType of this + Service requires one. More info: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport' + format: int32 required: - port - type: object + clusterIP: + type: string + description: 'clusterIP is the IP address of the service + and is usually assigned randomly by the master. If an + address is specified manually and is not in use by others, + it will be allocated to the service; otherwise, creation + of the service will fail. This field can not be changed + through updates. Valid values are "None", empty string + (""), or a valid IP address. "None" can be specified for + headless services when proxying is not required. Only + applies to types ClusterIP, NodePort, and LoadBalancer. + Ignored if type is ExternalName. More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies' + externalIPs: + type: array + description: externalIPs is a list of IP addresses for which + nodes in the cluster will also accept traffic for this + service. These IPs are not managed by Kubernetes. The + user is responsible for ensuring that traffic arrives + at a node with this IP. A common example is external + load-balancers that are not part of the Kubernetes system. + items: + type: string + loadBalancerIP: + type: string + description: 'Only applies to Service Type: LoadBalancer + LoadBalancer will get created with the IP specified in + this field. This feature depends on whether the underlying + cloud-provider supports specifying the loadBalancerIP + when a load balancer is created. This field will be ignored + if the cloud-provider does not support the feature.' + loadBalancerSourceRanges: type: array + description: 'If specified and supported by the platform, + this will restrict traffic through the cloud-provider + load-balancer will be restricted to the specified client + IPs. This field will be ignored if the cloud-provider + does not support the feature." More info: https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/' + items: + type: string + externalName: + type: string + description: externalName is the external reference that + kubedns or equivalent will return as a CNAME record for + this service. No proxying will be involved. Must be a + valid RFC-1123 hostname (https://tools.ietf.org/html/rfc1123) + and requires Type to be ExternalName. + externalTrafficPolicy: + type: string + description: externalTrafficPolicy denotes if this Service + desires to route external traffic to node-local or cluster-wide + endpoints. "Local" preserves the client source IP and + avoids a second hop for LoadBalancer and Nodeport type + services, but risks potentially imbalanced traffic spreading. + "Cluster" obscures the client source IP and may cause + a second hop to another node, but should have good overall + load-spreading. + sessionAffinity: + type: string + description: 'Supports "ClientIP" and "None". Used to maintain + session affinity. Enable client IP based session affinity. + Must be ClientIP or None. Defaults to None. More info: + https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies' + healthCheckNodePort: + type: integer + description: healthCheckNodePort specifies the healthcheck + nodePort for the service. If not specified, HealthCheckNodePort + is created by the service api backend with the allocated + nodePort. Will use user-specified nodePort value if specified + by the client. Only effects when Type is set to LoadBalancer + and ExternalTrafficPolicy is set to Local. + format: int32 + ipFamily: + type: string + description: ipFamily specifies whether this Service has + a preference for a particular IP family (e.g. IPv4 vs. + IPv6). If a specific IP family is requested, the clusterIP + field will be allocated from that family, if it is available + in the cluster. If no IP family is requested, the cluster's + primary IP family will be used. Other IP fields (loadBalancerIP, + loadBalancerSourceRanges, externalIPs) and controllers + which allocate external load-balancers should use the + same IP family. Endpoints for this Service will be of + this family. This field is immutable after creation. + Assigning a ServiceIPFamily not available in the cluster + (e.g. IPv6 in IPv4 only cluster) is an error condition + and will fail during clusterIP assignment. publishNotReadyAddresses: + type: boolean description: publishNotReadyAddresses, when set to true, indicates that DNS implementations must publish the notReadyAddresses of subsets for the Endpoints associated with the Service. @@ -1960,41 +2004,25 @@ spec: this field is to use a StatefulSet's Headless Service to propagate SRV records for its Pods without respect to their readiness for purpose of peer discovery. - type: boolean - selector: - additionalProperties: - type: string - description: 'Route service traffic to pods with label keys - and values matching this selector. If empty or not present, - the service is assumed to have an external process managing - its endpoints, which Kubernetes will not modify. Only - applies to types ClusterIP, NodePort, and LoadBalancer. - Ignored if type is ExternalName. More info: https://kubernetes.io/docs/concepts/services-networking/service/' - type: object - sessionAffinity: - description: 'Supports "ClientIP" and "None". Used to maintain - session affinity. Enable client IP based session affinity. - Must be ClientIP or None. Defaults to None. More info: - https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies' - type: string sessionAffinityConfig: + type: object description: sessionAffinityConfig contains the configurations of session affinity. properties: clientIP: + type: object description: clientIP contains the configurations of Client IP based session affinity. properties: timeoutSeconds: + type: integer description: timeoutSeconds specifies the seconds of ClientIP type session sticky time. The value must be >0 && <=86400(for 1 day) if ServiceAffinity == "ClientIP". Default value is 10800(for 3 hours). format: int32 - type: integer - type: object - type: object topologyKeys: + type: array description: topologyKeys is a preference-order list of topology keys which implementations of services should use to preferentially sort endpoints when accessing this @@ -2011,29 +2039,12 @@ spec: constraints will be applied. items: type: string - type: array - type: - description: 'type determines how the Service is exposed. - Defaults to ClusterIP. Valid options are ExternalName, - ClusterIP, NodePort, and LoadBalancer. "ExternalName" - maps to the specified externalName. "ClusterIP" allocates - a cluster-internal IP address for load-balancing to endpoints. - Endpoints are determined by the selector or if that is - not specified, by manual construction of an Endpoints - object. If clusterIP is "None", no virtual IP is allocated - and the endpoints are published as a set of endpoints - rather than a stable IP. "NodePort" builds on ClusterIP - and allocates a port on every node which routes to the - clusterIP. "LoadBalancer" builds on NodePort and creates - an external load-balancer (if supported in the current - cloud) which routes to the clusterIP. More info: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types' - type: string - type: object - type: object tls: + type: object description: TLS defines options for configuring TLS for HTTP. properties: certificate: + type: object description: "Certificate is a reference to a Kubernetes secret that contains the certificate and private key for enabling TLS. The referenced secret should contain the following: \n @@ -2042,71 +2053,59 @@ spec: to the first certificate in the certificate chain." properties: secretName: - description: SecretName is the name of the secret. type: string - type: object + description: SecretName is the name of the secret. selfSignedCertificate: + type: object description: SelfSignedCertificate allows configuring the self-signed certificate generated by the operator. properties: disabled: + type: boolean description: Disabled indicates that the provisioning of the self-signed certifcate should be disabled. - type: boolean subjectAltNames: + type: array description: SubjectAlternativeNames is a list of SANs to include in the generated HTTP TLS certificate. items: + type: object description: SubjectAlternativeName represents a SAN entry in a x509 certificate. properties: dns: - description: DNS is the DNS name of the subject. type: string + description: DNS is the DNS name of the subject. ip: - description: IP is the IP address of the subject. type: string - type: object - type: array - type: object - type: object - type: object - image: - description: Image is the Enterprise Search Docker image to deploy. - type: string + description: IP is the IP address of the subject. podTemplate: + type: object description: PodTemplate provides customisation options (labels, annotations, affinity rules, resource requests, and so on) for the Enterprise Search pods. - type: object - serviceAccountName: - description: ServiceAccountName is used to check access from the current - resource to a resource (eg. Elasticsearch) in a different namespace. - Can only be used if ECK is enforcing RBAC on references. - type: string version: - description: Version of Enterprise Search. type: string - type: object + description: Version of Enterprise Search. status: + type: object description: EnterpriseSearchStatus defines the observed state of EnterpriseSearch properties: + service: + type: string + description: ExternalService is the name of the service associated to + the Enterprise Search Pods. associationStatus: + type: string description: Association is the status of any auto-linking to Elasticsearch clusters. - type: string availableNodes: - format: int32 type: integer + format: int32 health: + type: string description: EnterpriseSearchHealth expresses the health of the Enterprise Search instances. - type: string - service: - description: ExternalService is the name of the service associated to - the Enterprise Search Pods. - type: string - type: object version: v1beta1 versions: - name: v1beta1 @@ -2122,31 +2121,31 @@ status: apiVersion: apiextensions.k8s.io/v1beta1 kind: CustomResourceDefinition metadata: + name: kibanas.kibana.k8s.elastic.co annotations: controller-gen.kubebuilder.io/version: v0.2.5 creationTimestamp: null - name: kibanas.kibana.k8s.elastic.co spec: additionalPrinterColumns: - - JSONPath: .status.health - name: health + - name: health type: string - - JSONPath: .status.availableNodes - description: Available nodes - name: nodes + JSONPath: .status.health + - name: nodes type: integer - - JSONPath: .spec.version - description: Kibana version - name: version + JSONPath: .status.availableNodes + description: Available nodes + - name: version type: string - - JSONPath: .metadata.creationTimestamp - name: age + JSONPath: .spec.version + description: Kibana version + - name: age type: date + JSONPath: .metadata.creationTimestamp group: kibana.k8s.elastic.co names: + kind: Kibana categories: - elastic - kind: Kibana listKind: KibanaList plural: kibanas shortNames: @@ -2160,57 +2159,148 @@ spec: description: Kibana represents a Kibana resource in a Kubernetes cluster. properties: apiVersion: + type: string 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: + type: string 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: + type: object description: KibanaSpec holds the specification of a Kibana instance. properties: + serviceAccountName: + type: string + description: ServiceAccountName is used to check access from the current + resource to a resource (eg. Elasticsearch) in a different namespace. + Can only be used if ECK is enforcing RBAC on references. + image: + type: string + description: Image is the Kibana Docker image to deploy. config: - description: 'Config holds the Kibana configuration. See: https://www.elastic.co/guide/en/kibana/current/settings.html' type: object + description: 'Config holds the Kibana configuration. See: https://www.elastic.co/guide/en/kibana/current/settings.html' count: + type: integer description: Count of Kibana instances to deploy. format: int32 - type: integer elasticsearchRef: + type: object description: ElasticsearchRef is a reference to an Elasticsearch cluster running in the same Kubernetes cluster. properties: name: - description: Name of the Kubernetes object. type: string + description: Name of the Kubernetes object. namespace: + type: string description: Namespace of the Kubernetes object. If empty, defaults to the current namespace. - type: string required: - name - type: object http: + type: object description: HTTP holds the HTTP layer configuration for Kibana. properties: service: + type: object description: Service defines the template for the associated Kubernetes Service object. properties: metadata: + type: object description: ObjectMeta is the metadata of the service. The name and namespace provided here are managed by ECK and will be ignored. - type: object spec: + type: object description: Spec is the specification of the service. properties: + type: + type: string + description: 'type determines how the Service is exposed. + Defaults to ClusterIP. Valid options are ExternalName, + ClusterIP, NodePort, and LoadBalancer. "ExternalName" + maps to the specified externalName. "ClusterIP" allocates + a cluster-internal IP address for load-balancing to endpoints. + Endpoints are determined by the selector or if that is + not specified, by manual construction of an Endpoints + object. If clusterIP is "None", no virtual IP is allocated + and the endpoints are published as a set of endpoints + rather than a stable IP. "NodePort" builds on ClusterIP + and allocates a port on every node which routes to the + clusterIP. "LoadBalancer" builds on NodePort and creates + an external load-balancer (if supported in the current + cloud) which routes to the clusterIP. More info: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types' + selector: + type: object + additionalProperties: + type: string + description: 'Route service traffic to pods with label keys + and values matching this selector. If empty or not present, + the service is assumed to have an external process managing + its endpoints, which Kubernetes will not modify. Only + applies to types ClusterIP, NodePort, and LoadBalancer. + Ignored if type is ExternalName. More info: https://kubernetes.io/docs/concepts/services-networking/service/' + ports: + type: array + description: 'The list of ports that are exposed by this + service. More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies' + items: + type: object + description: ServicePort contains information on service's + port. + properties: + name: + type: string + description: The name of this port within the service. + This must be a DNS_LABEL. All ports within a ServiceSpec + must have unique names. When considering the endpoints + for a Service, this must match the 'name' field + in the EndpointPort. Optional if only one ServicePort + is defined on this service. + protocol: + type: string + description: The IP protocol for this port. Supports + "TCP", "UDP", and "SCTP". Default is TCP. + port: + type: integer + description: The port that will be exposed by this + service. + format: int32 + targetPort: + anyOf: + - type: integer + - type: string + description: 'Number or name of the port to access + on the pods targeted by the service. Number must + be in the range 1 to 65535. Name must be an IANA_SVC_NAME. + If this is a string, it will be looked up as a named + port in the target Pod''s container ports. If this + is not specified, the value of the ''port'' field + is used (an identity map). This field is ignored + for services with clusterIP=None, and should be + omitted or set equal to the ''port'' field. More + info: https://kubernetes.io/docs/concepts/services-networking/service/#defining-a-service' + nodePort: + type: integer + description: 'The port on each node on which this + service is exposed when type=NodePort or LoadBalancer. + Usually assigned by the system. If specified, it + will be allocated to the service if unused or else + creation of the service will fail. Default is to + auto-allocate a port if the ServiceType of this + Service requires one. More info: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport' + format: int32 + required: + - port clusterIP: + type: string description: 'clusterIP is the IP address of the service and is usually assigned randomly by the master. If an address is specified manually and is not in use by others, @@ -2221,8 +2311,8 @@ spec: headless services when proxying is not required. Only applies to types ClusterIP, NodePort, and LoadBalancer. Ignored if type is ExternalName. More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies' - type: string externalIPs: + type: array description: externalIPs is a list of IP addresses for which nodes in the cluster will also accept traffic for this service. These IPs are not managed by Kubernetes. The @@ -2231,15 +2321,32 @@ spec: load-balancers that are not part of the Kubernetes system. items: type: string + loadBalancerIP: + type: string + description: 'Only applies to Service Type: LoadBalancer + LoadBalancer will get created with the IP specified in + this field. This feature depends on whether the underlying + cloud-provider supports specifying the loadBalancerIP + when a load balancer is created. This field will be ignored + if the cloud-provider does not support the feature.' + loadBalancerSourceRanges: type: array + description: 'If specified and supported by the platform, + this will restrict traffic through the cloud-provider + load-balancer will be restricted to the specified client + IPs. This field will be ignored if the cloud-provider + does not support the feature." More info: https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/' + items: + type: string externalName: + type: string description: externalName is the external reference that kubedns or equivalent will return as a CNAME record for this service. No proxying will be involved. Must be a valid RFC-1123 hostname (https://tools.ietf.org/html/rfc1123) and requires Type to be ExternalName. - type: string externalTrafficPolicy: + type: string description: externalTrafficPolicy denotes if this Service desires to route external traffic to node-local or cluster-wide endpoints. "Local" preserves the client source IP and @@ -2248,8 +2355,14 @@ spec: "Cluster" obscures the client source IP and may cause a second hop to another node, but should have good overall load-spreading. + sessionAffinity: type: string + description: 'Supports "ClientIP" and "None". Used to maintain + session affinity. Enable client IP based session affinity. + Must be ClientIP or None. Defaults to None. More info: + https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies' healthCheckNodePort: + type: integer description: healthCheckNodePort specifies the healthcheck nodePort for the service. If not specified, HealthCheckNodePort is created by the service api backend with the allocated @@ -2257,8 +2370,8 @@ spec: by the client. Only effects when Type is set to LoadBalancer and ExternalTrafficPolicy is set to Local. format: int32 - type: integer ipFamily: + type: string description: ipFamily specifies whether this Service has a preference for a particular IP family (e.g. IPv4 vs. IPv6). If a specific IP family is requested, the clusterIP @@ -2272,77 +2385,8 @@ spec: Assigning a ServiceIPFamily not available in the cluster (e.g. IPv6 in IPv4 only cluster) is an error condition and will fail during clusterIP assignment. - type: string - loadBalancerIP: - description: 'Only applies to Service Type: LoadBalancer - LoadBalancer will get created with the IP specified in - this field. This feature depends on whether the underlying - cloud-provider supports specifying the loadBalancerIP - when a load balancer is created. This field will be ignored - if the cloud-provider does not support the feature.' - type: string - loadBalancerSourceRanges: - description: 'If specified and supported by the platform, - this will restrict traffic through the cloud-provider - load-balancer will be restricted to the specified client - IPs. This field will be ignored if the cloud-provider - does not support the feature." More info: https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/' - items: - type: string - type: array - ports: - description: 'The list of ports that are exposed by this - service. More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies' - items: - description: ServicePort contains information on service's - port. - properties: - name: - description: The name of this port within the service. - This must be a DNS_LABEL. All ports within a ServiceSpec - must have unique names. When considering the endpoints - for a Service, this must match the 'name' field - in the EndpointPort. Optional if only one ServicePort - is defined on this service. - type: string - nodePort: - description: 'The port on each node on which this - service is exposed when type=NodePort or LoadBalancer. - Usually assigned by the system. If specified, it - will be allocated to the service if unused or else - creation of the service will fail. Default is to - auto-allocate a port if the ServiceType of this - Service requires one. More info: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport' - format: int32 - type: integer - port: - description: The port that will be exposed by this - service. - format: int32 - type: integer - protocol: - description: The IP protocol for this port. Supports - "TCP", "UDP", and "SCTP". Default is TCP. - type: string - targetPort: - anyOf: - - type: integer - - type: string - description: 'Number or name of the port to access - on the pods targeted by the service. Number must - be in the range 1 to 65535. Name must be an IANA_SVC_NAME. - If this is a string, it will be looked up as a named - port in the target Pod''s container ports. If this - is not specified, the value of the ''port'' field - is used (an identity map). This field is ignored - for services with clusterIP=None, and should be - omitted or set equal to the ''port'' field. More - info: https://kubernetes.io/docs/concepts/services-networking/service/#defining-a-service' - required: - - port - type: object - type: array publishNotReadyAddresses: + type: boolean description: publishNotReadyAddresses, when set to true, indicates that DNS implementations must publish the notReadyAddresses of subsets for the Endpoints associated with the Service. @@ -2350,41 +2394,25 @@ spec: this field is to use a StatefulSet's Headless Service to propagate SRV records for its Pods without respect to their readiness for purpose of peer discovery. - type: boolean - selector: - additionalProperties: - type: string - description: 'Route service traffic to pods with label keys - and values matching this selector. If empty or not present, - the service is assumed to have an external process managing - its endpoints, which Kubernetes will not modify. Only - applies to types ClusterIP, NodePort, and LoadBalancer. - Ignored if type is ExternalName. More info: https://kubernetes.io/docs/concepts/services-networking/service/' - type: object - sessionAffinity: - description: 'Supports "ClientIP" and "None". Used to maintain - session affinity. Enable client IP based session affinity. - Must be ClientIP or None. Defaults to None. More info: - https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies' - type: string sessionAffinityConfig: + type: object description: sessionAffinityConfig contains the configurations of session affinity. properties: clientIP: + type: object description: clientIP contains the configurations of Client IP based session affinity. properties: timeoutSeconds: + type: integer description: timeoutSeconds specifies the seconds of ClientIP type session sticky time. The value must be >0 && <=86400(for 1 day) if ServiceAffinity == "ClientIP". Default value is 10800(for 3 hours). format: int32 - type: integer - type: object - type: object topologyKeys: + type: array description: topologyKeys is a preference-order list of topology keys which implementations of services should use to preferentially sort endpoints when accessing this @@ -2401,29 +2429,12 @@ spec: constraints will be applied. items: type: string - type: array - type: - description: 'type determines how the Service is exposed. - Defaults to ClusterIP. Valid options are ExternalName, - ClusterIP, NodePort, and LoadBalancer. "ExternalName" - maps to the specified externalName. "ClusterIP" allocates - a cluster-internal IP address for load-balancing to endpoints. - Endpoints are determined by the selector or if that is - not specified, by manual construction of an Endpoints - object. If clusterIP is "None", no virtual IP is allocated - and the endpoints are published as a set of endpoints - rather than a stable IP. "NodePort" builds on ClusterIP - and allocates a port on every node which routes to the - clusterIP. "LoadBalancer" builds on NodePort and creates - an external load-balancer (if supported in the current - cloud) which routes to the clusterIP. More info: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types' - type: string - type: object - type: object tls: + type: object description: TLS defines options for configuring TLS for HTTP. properties: certificate: + type: object description: "Certificate is a reference to a Kubernetes secret that contains the certificate and private key for enabling TLS. The referenced secret should contain the following: \n @@ -2432,102 +2443,90 @@ spec: to the first certificate in the certificate chain." properties: secretName: - description: SecretName is the name of the secret. type: string - type: object + description: SecretName is the name of the secret. selfSignedCertificate: + type: object description: SelfSignedCertificate allows configuring the self-signed certificate generated by the operator. properties: disabled: + type: boolean description: Disabled indicates that the provisioning of the self-signed certifcate should be disabled. - type: boolean subjectAltNames: + type: array description: SubjectAlternativeNames is a list of SANs to include in the generated HTTP TLS certificate. items: + type: object description: SubjectAlternativeName represents a SAN entry in a x509 certificate. properties: dns: - description: DNS is the DNS name of the subject. type: string + description: DNS is the DNS name of the subject. ip: - description: IP is the IP address of the subject. type: string - type: object - type: array - type: object - type: object - type: object - image: - description: Image is the Kibana Docker image to deploy. - type: string + description: IP is the IP address of the subject. podTemplate: + type: object description: PodTemplate provides customisation options (labels, annotations, affinity rules, resource requests, and so on) for the Kibana pods - type: object secureSettings: + type: array description: SecureSettings is a list of references to Kubernetes secrets containing sensitive configuration options for Kibana. items: + type: object description: SecretSource defines a data source based on a Kubernetes Secret. properties: entries: + type: array description: Entries define how to project each key-value pair in the secret to filesystem paths. If not defined, all keys will be projected to similarly named paths in the filesystem. If defined, only the specified keys will be projected to the corresponding paths. items: + type: object description: KeyToPath defines how to map a key in a Secret object to a filesystem path. properties: key: - description: Key is the key contained in the secret. type: string + description: Key is the key contained in the secret. path: + type: string description: Path is the relative file path to map the key to. Path must not be an absolute file path and must not contain any ".." components. - type: string required: - key - type: object - type: array secretName: - description: SecretName is the name of the secret. type: string + description: SecretName is the name of the secret. required: - secretName - type: object - type: array - serviceAccountName: - description: ServiceAccountName is used to check access from the current - resource to a resource (eg. Elasticsearch) in a different namespace. - Can only be used if ECK is enforcing RBAC on references. - type: string version: - description: Version of Kibana. type: string + description: Version of Kibana. required: - version - type: object status: + type: object description: KibanaStatus defines the observed state of Kibana properties: associationStatus: - description: AssociationStatus is the status of an association resource. type: string + description: AssociationStatus is the status of an association resource. availableNodes: - format: int32 type: integer + format: int32 health: - description: KibanaHealth expresses the status of the Kibana instances. type: string - type: object + description: KibanaHealth expresses the status of the Kibana instances. version: v1 versions: - name: v1 @@ -2545,7 +2544,6 @@ status: plural: "" conditions: [] storedVersions: [] - --- # Source: eck/templates/namespace.yaml apiVersion: v1 @@ -2573,15 +2571,13 @@ kind: ClusterRole metadata: name: elastic-operator rules: -- apiGroups: - - "authorization.k8s.io" - resources: +- resources: - subjectaccessreviews + apiGroups: + - "authorization.k8s.io" verbs: - create -- apiGroups: - - "" - resources: +- resources: - pods - endpoints - events @@ -2590,6 +2586,8 @@ rules: - services - configmaps - serviceaccounts + apiGroups: + - "" verbs: - get - list @@ -2598,12 +2596,12 @@ rules: - update - patch - delete -- apiGroups: - - apps - resources: +- resources: - deployments - statefulsets - daemonsets + apiGroups: + - apps verbs: - get - list @@ -2612,10 +2610,10 @@ rules: - update - patch - delete -- apiGroups: - - policy - resources: +- resources: - poddisruptionbudgets + apiGroups: + - policy verbs: - get - list @@ -2624,14 +2622,14 @@ rules: - update - patch - delete -- apiGroups: - - elasticsearch.k8s.elastic.co - resources: +- resources: - elasticsearches - elasticsearches/status - elasticsearches/finalizers - enterpriselicenses - enterpriselicenses/status + apiGroups: + - elasticsearch.k8s.elastic.co verbs: - get - list @@ -2640,12 +2638,12 @@ rules: - update - patch - delete -- apiGroups: - - kibana.k8s.elastic.co - resources: +- resources: - kibanas - kibanas/status - kibanas/finalizers + apiGroups: + - kibana.k8s.elastic.co verbs: - get - list @@ -2654,12 +2652,12 @@ rules: - update - patch - delete -- apiGroups: - - apm.k8s.elastic.co - resources: +- resources: - apmservers - apmservers/status - apmservers/finalizers + apiGroups: + - apm.k8s.elastic.co verbs: - get - list @@ -2668,12 +2666,12 @@ rules: - update - patch - delete -- apiGroups: - - enterprisesearch.k8s.elastic.co - resources: +- resources: - enterprisesearches - enterprisesearches/status - enterprisesearches/finalizers + apiGroups: + - enterprisesearch.k8s.elastic.co verbs: - get - list @@ -2682,11 +2680,11 @@ rules: - update - patch - delete -- apiGroups: - - admissionregistration.k8s.io - resources: +- resources: - mutatingwebhookconfigurations - validatingwebhookconfigurations + apiGroups: + - admissionregistration.k8s.io verbs: - get - list @@ -2695,12 +2693,12 @@ rules: - update - patch - delete -- apiGroups: - - beat.k8s.elastic.co - resources: +- resources: - beats - beats/status - beats/finalizers + apiGroups: + - beat.k8s.elastic.co verbs: - get - list @@ -2716,25 +2714,25 @@ kind: ClusterRole metadata: name: "elastic-operator-view" labels: - rbac.authorization.k8s.io/aggregate-to-view: "true" - rbac.authorization.k8s.io/aggregate-to-edit: "true" rbac.authorization.k8s.io/aggregate-to-admin: "true" + rbac.authorization.k8s.io/aggregate-to-edit: "true" + rbac.authorization.k8s.io/aggregate-to-view: "true" rules: - - apiGroups: ["elasticsearch.k8s.elastic.co"] - resources: ["elasticsearches"] - verbs: ["get", "list", "watch"] - - apiGroups: ["apm.k8s.elastic.co"] - resources: ["apmservers"] - verbs: ["get", "list", "watch"] - - apiGroups: ["kibana.k8s.elastic.co"] - resources: ["kibanas"] - verbs: ["get", "list", "watch"] - - apiGroups: ["enterprisesearch.k8s.elastic.co"] - resources: ["enterprisesearches"] - verbs: ["get", "list", "watch"] - - apiGroups: ["beat.k8s.elastic.co"] - resources: ["beats"] - verbs: ["get", "list", "watch"] +- resources: ["elasticsearches"] + apiGroups: ["elasticsearch.k8s.elastic.co"] + verbs: ["get", "list", "watch"] +- resources: ["apmservers"] + apiGroups: ["apm.k8s.elastic.co"] + verbs: ["get", "list", "watch"] +- resources: ["kibanas"] + apiGroups: ["kibana.k8s.elastic.co"] + verbs: ["get", "list", "watch"] +- resources: ["enterprisesearches"] + apiGroups: ["enterprisesearch.k8s.elastic.co"] + verbs: ["get", "list", "watch"] +- resources: ["beats"] + apiGroups: ["beat.k8s.elastic.co"] + verbs: ["get", "list", "watch"] --- # Source: eck/templates/cluster-role.yaml apiVersion: rbac.authorization.k8s.io/v1 @@ -2742,24 +2740,24 @@ kind: ClusterRole metadata: name: "elastic-operator-edit" labels: - rbac.authorization.k8s.io/aggregate-to-edit: "true" rbac.authorization.k8s.io/aggregate-to-admin: "true" + rbac.authorization.k8s.io/aggregate-to-edit: "true" rules: - - apiGroups: ["elasticsearch.k8s.elastic.co"] - resources: ["elasticsearches"] - verbs: ["create", "delete", "deletecollection", "patch", "update"] - - apiGroups: ["apm.k8s.elastic.co"] - resources: ["apmservers"] - verbs: ["create", "delete", "deletecollection", "patch", "update"] - - apiGroups: ["kibana.k8s.elastic.co"] - resources: ["kibanas"] - verbs: ["create", "delete", "deletecollection", "patch", "update"] - - apiGroups: ["enterprisesearch.k8s.elastic.co"] - resources: ["enterprisesearches"] - verbs: ["create", "delete", "deletecollection", "patch", "update"] - - apiGroups: ["beat.k8s.elastic.co"] - resources: ["beats"] - verbs: ["create", "delete", "deletecollection", "patch", "update"] +- resources: ["elasticsearches"] + apiGroups: ["elasticsearch.k8s.elastic.co"] + verbs: ["create", "delete", "deletecollection", "patch", "update"] +- resources: ["apmservers"] + apiGroups: ["apm.k8s.elastic.co"] + verbs: ["create", "delete", "deletecollection", "patch", "update"] +- resources: ["kibanas"] + apiGroups: ["kibana.k8s.elastic.co"] + verbs: ["create", "delete", "deletecollection", "patch", "update"] +- resources: ["enterprisesearches"] + apiGroups: ["enterprisesearch.k8s.elastic.co"] + verbs: ["create", "delete", "deletecollection", "patch", "update"] +- resources: ["beats"] + apiGroups: ["beat.k8s.elastic.co"] + verbs: ["create", "delete", "deletecollection", "patch", "update"] --- # Source: eck/templates/managed-ns-role-bindings.yaml apiVersion: rbac.authorization.k8s.io/v1 @@ -2767,13 +2765,13 @@ kind: ClusterRoleBinding metadata: name: elastic-operator roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole name: elastic-operator + kind: ClusterRole + apiGroup: rbac.authorization.k8s.io subjects: -- kind: ServiceAccount - name: elastic-operator +- name: elastic-operator namespace: elastic-system + kind: ServiceAccount --- # Source: eck/templates/operator-role-binding.yaml apiVersion: rbac.authorization.k8s.io/v1 @@ -2782,13 +2780,13 @@ metadata: name: elastic-operator namespace: elastic-system roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole name: elastic-operator + kind: ClusterRole + apiGroup: rbac.authorization.k8s.io subjects: -- kind: ServiceAccount - name: elastic-operator +- name: elastic-operator namespace: elastic-system + kind: ServiceAccount --- # Source: eck/templates/webhook.yaml apiVersion: v1 @@ -2797,12 +2795,12 @@ metadata: name: elastic-webhook-server namespace: elastic-system spec: - ports: - - name: https - port: 443 - targetPort: 9443 selector: control-plane: elastic-operator + ports: + - name: https + port: 443 + targetPort: 9443 --- # Source: eck/templates/statefulset.yaml apiVersion: apps/v1 @@ -2816,62 +2814,62 @@ spec: selector: matchLabels: control-plane: elastic-operator - serviceName: elastic-operator template: metadata: + labels: + control-plane: elastic-operator annotations: # Rename the fields "error" to "error.message" and "source" to "event.source" # This is to avoid a conflict with the ECS "error" and "source" documents. "co.elastic.logs/raw": "[{\"type\":\"container\",\"json.keys_under_root\":true,\"paths\":[\"/var/log/containers/*${data.kubernetes.container.id}.log\"],\"processors\":[{\"convert\":{\"mode\":\"rename\",\"ignore_missing\":true,\"fields\":[{\"from\":\"error\",\"to\":\"_error\"}]}},{\"convert\":{\"mode\":\"rename\",\"ignore_missing\":true,\"fields\":[{\"from\":\"_error\",\"to\":\"error.message\"}]}},{\"convert\":{\"mode\":\"rename\",\"ignore_missing\":true,\"fields\":[{\"from\":\"source\",\"to\":\"_source\"}]}},{\"convert\":{\"mode\":\"rename\",\"ignore_missing\":true,\"fields\":[{\"from\":\"_source\",\"to\":\"event.source\"}]}}]}]" - labels: - control-plane: elastic-operator spec: terminationGracePeriodSeconds: 10 serviceAccountName: elastic-operator containers: - - image: "docker.elastic.co/eck/eck-operator:1.2.1" - imagePullPolicy: IfNotPresent - name: manager + - name: manager + image: "docker.elastic.co/eck/eck-operator:1.2.1" args: - - "manager" - - "--log-verbosity=0" - - "--metrics-port=0" - - "--container-registry=docker.elastic.co" - - "--max-concurrent-reconciles=3" - - "--ca-cert-validity=8760h" - - "--ca-cert-rotate-before=24h" - - "--cert-validity=8760h" - - "--cert-rotate-before=24h" - - "--enable-webhook" - env: - - name: OPERATOR_NAMESPACE - valueFrom: - fieldRef: - fieldPath: metadata.namespace - - name: OPERATOR_IMAGE - value: "docker.elastic.co/eck/eck-operator:1.2.1" - - name: WEBHOOK_SECRET - value: "elastic-webhook-server-cert" - resources: - limits: - cpu: 1 - memory: 512Mi - requests: - cpu: 100m - memory: 150Mi + - "manager" + - "--log-verbosity=0" + - "--metrics-port=0" + - "--container-registry=docker.elastic.co" + - "--max-concurrent-reconciles=3" + - "--ca-cert-validity=8760h" + - "--ca-cert-rotate-before=24h" + - "--cert-validity=8760h" + - "--cert-rotate-before=24h" + - "--enable-webhook" ports: - - containerPort: 9443 - name: https-webhook + - name: https-webhook protocol: TCP + containerPort: 9443 + env: + - name: OPERATOR_NAMESPACE + valueFrom: + fieldRef: + fieldPath: metadata.namespace + - name: OPERATOR_IMAGE + value: "docker.elastic.co/eck/eck-operator:1.2.1" + - name: WEBHOOK_SECRET + value: "elastic-webhook-server-cert" + resources: + limits: + cpu: 1 + memory: 512Mi + requests: + cpu: 100m + memory: 150Mi volumeMounts: - - mountPath: /tmp/k8s-webhook-server/serving-certs - name: cert - readOnly: true - volumes: - name: cert - secret: - defaultMode: 420 - secretName: "elastic-webhook-server-cert" + readOnly: true + mountPath: /tmp/k8s-webhook-server/serving-certs + imagePullPolicy: IfNotPresent + volumes: + - name: cert + secret: + defaultMode: 420 + secretName: "elastic-webhook-server-cert" + serviceName: elastic-operator --- # Source: eck/templates/webhook.yaml apiVersion: admissionregistration.k8s.io/v1beta1 @@ -2879,130 +2877,129 @@ kind: ValidatingWebhookConfiguration metadata: name: elastic-webhook.k8s.elastic.co webhooks: -- clientConfig: - caBundle: Cg== +- name: elastic-apm-validation-v1.k8s.elastic.co + clientConfig: service: name: elastic-webhook-server namespace: elastic-system path: /validate-apm-k8s-elastic-co-v1-apmserver + caBundle: Cg== failurePolicy: Ignore - name: elastic-apm-validation-v1.k8s.elastic.co rules: - - apiGroups: + - resources: + - apmservers + apiGroups: - apm.k8s.elastic.co apiVersions: - v1 operations: - CREATE - UPDATE - resources: - - apmservers -- clientConfig: - caBundle: Cg== +- name: elastic-apm-validation-v1beta1.k8s.elastic.co + clientConfig: service: name: elastic-webhook-server namespace: elastic-system path: /validate-apm-k8s-elastic-co-v1beta1-apmserver + caBundle: Cg== failurePolicy: Ignore - name: elastic-apm-validation-v1beta1.k8s.elastic.co rules: - - apiGroups: + - resources: + - apmservers + apiGroups: - apm.k8s.elastic.co apiVersions: - v1beta1 operations: - CREATE - UPDATE - resources: - - apmservers -- clientConfig: - caBundle: Cg== +- name: elastic-beat-validation-v1beta1.k8s.elastic.co + clientConfig: service: name: elastic-webhook-server namespace: elastic-system path: /validate-beat-k8s-elastic-co-v1beta1-beat + caBundle: Cg== failurePolicy: Ignore - name: elastic-beat-validation-v1beta1.k8s.elastic.co rules: - - apiGroups: + - resources: + - beats + apiGroups: - beat.k8s.elastic.co apiVersions: - v1beta1 operations: - CREATE - UPDATE - resources: - - beats -- clientConfig: - caBundle: Cg== +- name: elastic-es-validation-v1.k8s.elastic.co + clientConfig: service: name: elastic-webhook-server namespace: elastic-system path: /validate-elasticsearch-k8s-elastic-co-v1-elasticsearch + caBundle: Cg== failurePolicy: Ignore - name: elastic-es-validation-v1.k8s.elastic.co rules: - - apiGroups: + - resources: + - elasticsearches + apiGroups: - elasticsearch.k8s.elastic.co apiVersions: - v1 operations: - CREATE - UPDATE - resources: - - elasticsearches -- clientConfig: - caBundle: Cg== +- name: elastic-es-validation-v1beta1.k8s.elastic.co + clientConfig: service: name: elastic-webhook-server namespace: elastic-system path: /validate-elasticsearch-k8s-elastic-co-v1beta1-elasticsearch + caBundle: Cg== failurePolicy: Ignore - name: elastic-es-validation-v1beta1.k8s.elastic.co rules: - - apiGroups: + - resources: + - elasticsearches + apiGroups: - elasticsearch.k8s.elastic.co apiVersions: - v1beta1 operations: - CREATE - UPDATE - resources: - - elasticsearches -- clientConfig: - caBundle: Cg== +- name: elastic-kb-validation-v1.k8s.elastic.co + clientConfig: service: name: elastic-webhook-server namespace: elastic-system path: /validate-kibana-k8s-elastic-co-v1-kibana + caBundle: Cg== failurePolicy: Ignore - name: elastic-kb-validation-v1.k8s.elastic.co rules: - - apiGroups: + - resources: + - kibanas + apiGroups: - kibana.k8s.elastic.co apiVersions: - v1 operations: - CREATE - UPDATE - resources: - - kibanas -- clientConfig: - caBundle: Cg== +- name: elastic-kb-validation-v1beta1.k8s.elastic.co + clientConfig: service: name: elastic-webhook-server namespace: elastic-system path: /validate-kibana-k8s-elastic-co-v1beta1-kibana + caBundle: Cg== failurePolicy: Ignore - name: elastic-kb-validation-v1beta1.k8s.elastic.co rules: - - apiGroups: + - resources: + - kibanas + apiGroups: - kibana.k8s.elastic.co apiVersions: - v1beta1 operations: - CREATE - UPDATE - resources: - - kibanas - diff --git a/base/logging/eck-operator/kustomization.yaml b/base/logging/eck-operator/kustomization.yaml index 6729459466ccc2c785d2176a6f5ad9cec226888d..3615a655a3ab3370479d21d9f3d269c3af7b3c8b 100644 --- a/base/logging/eck-operator/kustomization.yaml +++ b/base/logging/eck-operator/kustomization.yaml @@ -1,5 +1,5 @@ resources: - - all-in-one.yaml +- all-in-one.yaml #images: # # TODO: This image doesnt't work yet diff --git a/base/logging/efk/elasticsearch.yaml b/base/logging/efk/elasticsearch.yaml index 93605ce628705710f527b038b7a65ae052f94fbb..b5db22e557e8b66a9676902e85d268784a98d1af 100644 --- a/base/logging/efk/elasticsearch.yaml +++ b/base/logging/efk/elasticsearch.yaml @@ -3,79 +3,80 @@ kind: Elasticsearch metadata: name: elasticsearch spec: - version: 7.9.2 image: registry1.dsop.io/ironbank/elastic/elasticsearch/elasticsearch:7.9.2 nodeSets: - - name: master - count: 1 - config: - node.master: true - node.data: false - node.ingest: false - node.store.allow_mmap: true - index.store.type: mmapfs - node.ml: false - xpack.ml.enabled: false - xpack.security.authc.token.enabled: true - podTemplate: - metadata: - annotations: - traffic.sidecar.istio.io/excludeOutboundPorts: "9300" - traffic.sidecar.istio.io/excludeInboundPorts: "9300" - fluentbit.io/exclude-istio-proxy: "true" - prometheus.istio.io/merge-metrics: "false" -# spec: -# automountServiceAccountToken: true -# containers: -# - name: elasticsearch -# env: -# - name: ES_JAVA_OPTS -# value: "-Xms1g -Xmx1g" -# resources: -# requests: -# memory: 2Gi -# cpu: 0.5 -# limits: -# memory: 3Gi -# cpu: 2 - - name: data - count: 1 - config: - node.master: false - node.data: true - node.ingest: true - node.store.allow_mmap: true - index.store.type: mmapfs - node.ml: false - xpack.ml.enabled: false - xpack.security.authc.token.enabled: true - podTemplate: - metadata: - annotations: - traffic.sidecar.istio.io/excludeOutboundPorts: "9300" - traffic.sidecar.istio.io/excludeInboundPorts: "9300" - fluentbit.io/exclude-istio-proxy: "true" - prometheus.istio.io/merge-metrics: "false" - spec: - automountServiceAccountToken: true -# containers: -# - name: elasticsearch -# env: -# - name: ES_JAVA_OPTS -# value: "-Xms1g -Xmx1g" -# resources: -# requests: -# memory: 2Gi -# cpu: 0.5 -# limits: -# memory: 3Gi -# cpu: 2 - volumeClaimTemplates: - - metadata: - name: elasticsearch-data - spec: - accessModes: - - ReadWriteOnce - resources: - requests: - storage: 10Gi + - name: master + config: + index.store.type: mmapfs + node.data: false + node.ingest: false + node.master: true + node.ml: false + node.store.allow_mmap: true + xpack.ml.enabled: false + xpack.security.authc.token.enabled: true + count: 1 + podTemplate: + metadata: + annotations: + fluentbit.io/exclude-istio-proxy: "true" + prometheus.istio.io/merge-metrics: "false" + # spec: + # automountServiceAccountToken: true + # containers: + # - name: elasticsearch + # env: + # - name: ES_JAVA_OPTS + # value: "-Xms1g -Xmx1g" + # resources: + # requests: + # memory: 2Gi + # cpu: 0.5 + # limits: + # memory: 3Gi + # cpu: 2 + + traffic.sidecar.istio.io/excludeInboundPorts: "9300" + traffic.sidecar.istio.io/excludeOutboundPorts: "9300" + - name: data + volumeClaimTemplates: + - metadata: + name: elasticsearch-data + spec: + resources: + requests: + storage: 10Gi + accessModes: + - ReadWriteOnce + config: + index.store.type: mmapfs + node.data: true + node.ingest: true + node.master: false + node.ml: false + node.store.allow_mmap: true + xpack.ml.enabled: false + xpack.security.authc.token.enabled: true + count: 1 + podTemplate: + metadata: + annotations: + fluentbit.io/exclude-istio-proxy: "true" + prometheus.istio.io/merge-metrics: "false" + traffic.sidecar.istio.io/excludeInboundPorts: "9300" + traffic.sidecar.istio.io/excludeOutboundPorts: "9300" + spec: + automountServiceAccountToken: true + # containers: + # - name: elasticsearch + # env: + # - name: ES_JAVA_OPTS + # value: "-Xms1g -Xmx1g" + # resources: + # requests: + # memory: 2Gi + # cpu: 0.5 + # limits: + # memory: 3Gi + # cpu: 2 + version: 7.9.2 diff --git a/base/logging/efk/kibana.yaml b/base/logging/efk/kibana.yaml index f8cd7c04ca83f100514d5b602543719069fae91a..f2be2a67e17c515650855bef6db05a8da38eb1f1 100644 --- a/base/logging/efk/kibana.yaml +++ b/base/logging/efk/kibana.yaml @@ -3,7 +3,6 @@ kind: Kibana metadata: name: kibana spec: - version: 7.8.1 count: 1 elasticsearchRef: name: elasticsearch @@ -17,3 +16,4 @@ spec: sidecar.istio.io/rewriteAppHTTPProbers: "true" spec: automountServiceAccountToken: true + version: 7.8.1 diff --git a/base/logging/efk/kustomization.yaml b/base/logging/efk/kustomization.yaml index 207920e533adbc4d2ce2aa56ef8efa06f41d3672..688821840546f5cf2926b16f94d3257ee6c25952 100644 --- a/base/logging/efk/kustomization.yaml +++ b/base/logging/efk/kustomization.yaml @@ -1,4 +1,4 @@ resources: - - namespace.yaml - - elasticsearch.yaml - - kibana.yaml \ No newline at end of file +- namespace.yaml +- elasticsearch.yaml +- kibana.yaml diff --git a/base/logging/efk/namespace.yaml b/base/logging/efk/namespace.yaml index 577de9a400e4c498422f7f7a7a351e3e54db1da4..0adb96e2d8a2ac5cf67a9eeef2ba57fbd9d0d707 100644 --- a/base/logging/efk/namespace.yaml +++ b/base/logging/efk/namespace.yaml @@ -1,7 +1,6 @@ ---- apiVersion: v1 kind: Namespace metadata: name: logging labels: - istio-injection: enabled \ No newline at end of file + istio-injection: enabled diff --git a/base/monitoring/helmrelease.yaml b/base/monitoring/helmrelease.yaml index 9e192b11f90b738f4a3287e01c1b6c0d13d54bde..40476b2ddaf11182500961620ea255f0673b630a 100644 --- a/base/monitoring/helmrelease.yaml +++ b/base/monitoring/helmrelease.yaml @@ -1,62 +1,54 @@ ---- apiVersion: helm.toolkit.fluxcd.io/v2beta1 kind: HelmRelease metadata: name: monitoring namespace: monitoring spec: - interval: 2m chart: spec: chart: kube-prometheus-stack - version: 10.1.2 + interval: 5m sourceRef: - kind: HelmRepository name: prometheus-community namespace: flux-system - interval: 5m - - valuesFrom: - - kind: ConfigMap - name: env-values - optional: true - - kind: Secret - name: env-values - optional: true - + kind: HelmRepository + version: 10.1.2 + interval: 2m values: + alertmanager: + alertmanagerSpec: + image: + repository: registry1.dsop.io/ironbank/opensource/prometheus/alertmanager + tag: v0.21.0 + enabled: true fullnameOverride: monitoring - global: imagePullSecrets: - - name: private-registry - - prometheusOperator: - enabled: true - manageCrds: true - createCustomResource: true - image: - repository: registry1.dsop.io/ironbank/opensource/coreos/prometheus-operator - tag: v0.42.1 - configmapReloadImage: - repository: registry1.dsop.io/ironbank/opensource/jimmidyson/configmap-reload - tag: v0.4.0 - + - name: private-registry grafana: - enabled: true image: repository: registry1.dsop.io/ironbank/opensource/grafana/grafana tag: 7.1.3-1 - + enabled: true prometheus: enabled: true prometheusSpec: # service port naming conventions portName: http-web - - alertmanager: + prometheusOperator: + image: + repository: registry1.dsop.io/ironbank/opensource/coreos/prometheus-operator + tag: v0.42.1 + configmapReloadImage: + repository: registry1.dsop.io/ironbank/opensource/jimmidyson/configmap-reload + tag: v0.4.0 + createCustomResource: true enabled: true - alertmanagerSpec: - image: - repository: registry1.dsop.io/ironbank/opensource/prometheus/alertmanager - tag: v0.21.0 \ No newline at end of file + manageCrds: true + valuesFrom: + - name: env-values + kind: ConfigMap + optional: true + - name: env-values + kind: Secret + optional: true diff --git a/base/monitoring/kustomization.yaml b/base/monitoring/kustomization.yaml index dfc3bfed1a97d186f9b811de49887c6f1ba95353..daf7b9b7ba001ea887c54c8bb2d13a7a3602d33c 100644 --- a/base/monitoring/kustomization.yaml +++ b/base/monitoring/kustomization.yaml @@ -1,3 +1,3 @@ resources: - - namespace.yaml - - helmrelease.yaml +- namespace.yaml +- helmrelease.yaml diff --git a/base/monitoring/namespace.yaml b/base/monitoring/namespace.yaml index ff7ae1b933828d6ab231cd1bc5576f808c09b5d7..d32523606f28187cc65fbb56387a78011a1e9425 100644 --- a/base/monitoring/namespace.yaml +++ b/base/monitoring/namespace.yaml @@ -1,4 +1,3 @@ ---- apiVersion: v1 kind: Namespace metadata: diff --git a/instance/cert-manager/helmrelease.yaml b/instance/cert-manager/helmrelease.yaml index cab8c6ed13cb9fb4af54b0b49a8fa0436a547945..2289fadeb8a5f8bcd4a33434df0833d00513fd44 100644 --- a/instance/cert-manager/helmrelease.yaml +++ b/instance/cert-manager/helmrelease.yaml @@ -1,4 +1,3 @@ ---- apiVersion: helm.toolkit.fluxcd.io/v2beta1 kind: HelmRelease metadata: diff --git a/instance/cert-manager/kustomization.yaml b/instance/cert-manager/kustomization.yaml index e2c98d20f5fa36255b2ce2dbce01c53989a8d808..5b91f7ea4062def7b29d5199cff3a38c78945791 100644 --- a/instance/cert-manager/kustomization.yaml +++ b/instance/cert-manager/kustomization.yaml @@ -1,7 +1,5 @@ namespace: cert-manager - resources: - - ../../base/cert-manager - +- ../../base/cert-manager patchesStrategicMerge: - - helmrelease.yaml \ No newline at end of file +- helmrelease.yaml diff --git a/instance/elastic-system/kustomization.yaml b/instance/elastic-system/kustomization.yaml index e4f861da140570574d116581a8e8c823c8b2cbf7..97adabf2c86341e85c47af4d909d91bd05d5ad11 100644 --- a/instance/elastic-system/kustomization.yaml +++ b/instance/elastic-system/kustomization.yaml @@ -1,4 +1,3 @@ namespace: elastic-system - resources: - ../../base/logging/eck-operator diff --git a/instance/flux-system/gitrepositories/kustomization.yaml b/instance/flux-system/gitrepositories/kustomization.yaml index 30ad477d4c91e64511f018f27ec7773b38b6b164..5a94a6ffec7becce812686ac961f1f1fce4c7b8d 100644 --- a/instance/flux-system/gitrepositories/kustomization.yaml +++ b/instance/flux-system/gitrepositories/kustomization.yaml @@ -1,2 +1,2 @@ resources: - - this.yaml \ No newline at end of file +- this.yaml diff --git a/instance/flux-system/gitrepositories/this.yaml b/instance/flux-system/gitrepositories/this.yaml index e92940c221138da5dc6c70a37aad29763e2359d4..daff7fc0a584fd2da7b5100c7ff247928bed0e8e 100644 --- a/instance/flux-system/gitrepositories/this.yaml +++ b/instance/flux-system/gitrepositories/this.yaml @@ -1,17 +1,16 @@ ---- apiVersion: source.toolkit.fluxcd.io/v1beta1 kind: GitRepository metadata: name: this namespace: flux-system spec: - interval: 1m - ref: - branch: $branch - url: $repo ignore: | # exclude all /* # include deploy dirs !/base/ !/instance/ + interval: 1m + ref: + branch: $branch + url: $repo diff --git a/instance/flux-system/kustomization.yaml b/instance/flux-system/kustomization.yaml index 868402cf2f012702e5f7e502732a73ce07d37f86..e45f7ae840c41cf3104951f52a6c3d09b63b8b35 100644 --- a/instance/flux-system/kustomization.yaml +++ b/instance/flux-system/kustomization.yaml @@ -1,7 +1,5 @@ namespace: flux-system - resources: - - ../../base/flux - - # Bootstrapping components - - kustomizations \ No newline at end of file +- ../../base/flux +# Bootstrapping components +- kustomizations diff --git a/instance/flux-system/kustomizations/cert-manager.yaml b/instance/flux-system/kustomizations/cert-manager.yaml index 91b32bf307e160d32c56bf6ffb047a5ef9e19886..41de57ed0f2871d99cac07f29468c7aef3d82449 100644 --- a/instance/flux-system/kustomizations/cert-manager.yaml +++ b/instance/flux-system/kustomizations/cert-manager.yaml @@ -3,9 +3,9 @@ kind: Kustomization metadata: name: bigbang-cert-manager spec: - path: './instance/cert-manager' healthChecks: - - kind: HelmRelease - apiVersion: helm.toolkit.fluxcd.io/v2beta1 - name: cert-manager - namespace: cert-manager \ No newline at end of file + - name: cert-manager + namespace: cert-manager + apiVersion: helm.toolkit.fluxcd.io/v2beta1 + kind: HelmRelease + path: './instance/cert-manager' diff --git a/instance/flux-system/kustomizations/flux.yaml b/instance/flux-system/kustomizations/flux.yaml index ca7a2c560a88389a2ec90e0fbd838ed283d0f27d..c73460d02304362502f8b126651fd9e8e4939600 100644 --- a/instance/flux-system/kustomizations/flux.yaml +++ b/instance/flux-system/kustomizations/flux.yaml @@ -3,4 +3,4 @@ kind: Kustomization metadata: name: bigbang-flux spec: - path: './instance/flux-system' \ No newline at end of file + path: './instance/flux-system' diff --git a/instance/flux-system/kustomizations/istio.yaml b/instance/flux-system/kustomizations/istio.yaml index d1a5ae8030fc1ec4ca97f9fab80c43ffcaeb0d29..d1778dfe0dcc977dcf7c270e6786de9cf24d2b70 100644 --- a/instance/flux-system/kustomizations/istio.yaml +++ b/instance/flux-system/kustomizations/istio.yaml @@ -1,23 +1,21 @@ ---- apiVersion: kustomize.toolkit.fluxcd.io/v1beta1 kind: Kustomization metadata: name: bigbang-istio-operator spec: path: './instance/istio-operator' - --- apiVersion: kustomize.toolkit.fluxcd.io/v1beta1 kind: Kustomization metadata: name: bigbang-istio-system spec: - path: './instance/istio-system' dependsOn: - - name: bigbang-istio-operator - namespace: flux-system + - name: bigbang-istio-operator + namespace: flux-system healthChecks: - - kind: Deployment - apiVersion: apps/v1 - name: istiod - namespace: istio-system + - name: istiod + namespace: istio-system + apiVersion: apps/v1 + kind: Deployment + path: './instance/istio-system' diff --git a/instance/flux-system/kustomizations/kustomization.yaml b/instance/flux-system/kustomizations/kustomization.yaml index af6d4d2ad19a46778e5b1eef85dd75834c364726..9e2b4aa2cb67b477e1b26ecbbb1f05adc916dbed 100644 --- a/instance/flux-system/kustomizations/kustomization.yaml +++ b/instance/flux-system/kustomizations/kustomization.yaml @@ -1,26 +1,24 @@ namespace: flux-system - resources: - - istio.yaml - - flux.yaml - - cert-manager.yaml - - logging.yaml - - monitoring.yaml - - gatekeeper.yaml - +- istio.yaml +- flux.yaml +- cert-manager.yaml +- logging.yaml +- monitoring.yaml +- gatekeeper.yaml patches: - - target: - kind: Kustomization - group: kustomize.toolkit.fluxcd.io - patch: | - apiVersion: kustomize.toolkit.fluxcd.io/v1beta1 - kind: Kustomization - metadata: - name: bigbang-apps - spec: - interval: 2m - sourceRef: - kind: GitRepository - name: this - prune: true - timeout: 2m \ No newline at end of file +- target: + kind: Kustomization + group: kustomize.toolkit.fluxcd.io + patch: |- + apiVersion: kustomize.toolkit.fluxcd.io/v1beta1 + kind: Kustomization + metadata: + name: bigbang-apps + spec: + interval: 2m + sourceRef: + kind: GitRepository + name: this + prune: true + timeout: 2m diff --git a/instance/flux-system/kustomizations/logging.yaml b/instance/flux-system/kustomizations/logging.yaml index 7f1f5aceac67872830204afbe9f0b78cd4fe8e2a..bdcadc0f1973b9a66c29abddda621b818a816f50 100644 --- a/instance/flux-system/kustomizations/logging.yaml +++ b/instance/flux-system/kustomizations/logging.yaml @@ -1,18 +1,16 @@ ---- apiVersion: kustomize.toolkit.fluxcd.io/v1beta1 kind: Kustomization metadata: name: bigbang-eck-operator spec: path: './instance/elastic-system' - --- apiVersion: kustomize.toolkit.fluxcd.io/v1beta1 kind: Kustomization metadata: name: bigbang-logging spec: - path: './instance/logging' dependsOn: - - name: bigbang-istio-system - namespace: flux-system \ No newline at end of file + - name: bigbang-istio-system + namespace: flux-system + path: './instance/logging' diff --git a/instance/flux-system/kustomizations/monitoring.yaml b/instance/flux-system/kustomizations/monitoring.yaml index 5c5b8a29e9d5e5561c4ad79d3e34b96a0ef453b9..5d94e9d1fac909646c51c53ba5b70c8a79d6beee 100644 --- a/instance/flux-system/kustomizations/monitoring.yaml +++ b/instance/flux-system/kustomizations/monitoring.yaml @@ -1,12 +1,11 @@ ---- apiVersion: kustomize.toolkit.fluxcd.io/v1beta1 kind: Kustomization metadata: name: bigbang-monitoring spec: - path: './instance/monitoring' healthChecks: - - kind: HelmRelease - apiVersion: helm.toolkit.fluxcd.io/v2beta1 - name: monitoring - namespace: monitoring \ No newline at end of file + - name: monitoring + namespace: monitoring + apiVersion: helm.toolkit.fluxcd.io/v2beta1 + kind: HelmRelease + path: './instance/monitoring' diff --git a/instance/gatekeeper-system/kustomization.yaml b/instance/gatekeeper-system/kustomization.yaml index 2ae266cb3aea47983d249e2e3b605f485938765f..549032098856bd9fbda5e05cf07c35dd38f32966 100644 --- a/instance/gatekeeper-system/kustomization.yaml +++ b/instance/gatekeeper-system/kustomization.yaml @@ -1,4 +1,3 @@ namespace: gatekeeper-system - resources: - - ../../base/gatekeeper \ No newline at end of file +- ../../base/gatekeeper diff --git a/instance/istio-operator/kustomization.yaml b/instance/istio-operator/kustomization.yaml index 8e6cc7b5edb3723afd8c7ce08a7eec195928184e..6cbb4bf3c4e2bb78fa9aff6f485ed718430bc54c 100644 --- a/instance/istio-operator/kustomization.yaml +++ b/instance/istio-operator/kustomization.yaml @@ -1,4 +1,3 @@ namespace: istio-operator - resources: - ../../base/istio/istio-operator