From 98e2e781614230b9b8a70db6f5351ad6e3cd0ec1 Mon Sep 17 00:00:00 2001 From: Venkata Krishna Rohit Sakala Date: Thu, 21 Sep 2023 15:21:41 -0700 Subject: [PATCH 1/7] make forward-port webhook 2.0.6+up0.3.6 --- .../rancher-webhook-2.0.6+up0.3.6.tgz | Bin 0 -> 2706 bytes .../rancher-webhook/2.0.6+up0.3.6/Chart.yaml | 18 ++++ .../2.0.6+up0.3.6/charts/capi/Chart.yaml | 4 + .../charts/capi/templates/service.yaml | 13 +++ .../2.0.6+up0.3.6/templates/_helpers.tpl | 22 +++++ .../2.0.6+up0.3.6/templates/deployment.yaml | 83 ++++++++++++++++++ .../2.0.6+up0.3.6/templates/rbac.yaml | 12 +++ .../2.0.6+up0.3.6/templates/service.yaml | 13 +++ .../templates/serviceaccount.yaml | 11 +++ .../2.0.6+up0.3.6/templates/webhook.yaml | 9 ++ .../2.0.6+up0.3.6/tests/README.md | 16 ++++ .../tests/capi-service_test.yaml | 20 +++++ .../2.0.6+up0.3.6/tests/deployment_test.yaml | 62 +++++++++++++ .../2.0.6+up0.3.6/tests/service_test.yaml | 18 ++++ .../rancher-webhook/2.0.6+up0.3.6/values.yaml | 26 ++++++ index.yaml | 22 +++++ release.yaml | 2 + 17 files changed, 351 insertions(+) create mode 100644 assets/rancher-webhook/rancher-webhook-2.0.6+up0.3.6.tgz create mode 100644 charts/rancher-webhook/2.0.6+up0.3.6/Chart.yaml create mode 100644 charts/rancher-webhook/2.0.6+up0.3.6/charts/capi/Chart.yaml create mode 100644 charts/rancher-webhook/2.0.6+up0.3.6/charts/capi/templates/service.yaml create mode 100644 charts/rancher-webhook/2.0.6+up0.3.6/templates/_helpers.tpl create mode 100644 charts/rancher-webhook/2.0.6+up0.3.6/templates/deployment.yaml create mode 100644 charts/rancher-webhook/2.0.6+up0.3.6/templates/rbac.yaml create mode 100644 charts/rancher-webhook/2.0.6+up0.3.6/templates/service.yaml create mode 100644 charts/rancher-webhook/2.0.6+up0.3.6/templates/serviceaccount.yaml create mode 100644 charts/rancher-webhook/2.0.6+up0.3.6/templates/webhook.yaml create mode 100644 charts/rancher-webhook/2.0.6+up0.3.6/tests/README.md create mode 100644 charts/rancher-webhook/2.0.6+up0.3.6/tests/capi-service_test.yaml create mode 100644 charts/rancher-webhook/2.0.6+up0.3.6/tests/deployment_test.yaml create mode 100644 charts/rancher-webhook/2.0.6+up0.3.6/tests/service_test.yaml create mode 100644 charts/rancher-webhook/2.0.6+up0.3.6/values.yaml diff --git a/assets/rancher-webhook/rancher-webhook-2.0.6+up0.3.6.tgz b/assets/rancher-webhook/rancher-webhook-2.0.6+up0.3.6.tgz new file mode 100644 index 0000000000000000000000000000000000000000..13627a434f99e98d6440b00fcdf3123a25a3d5ee GIT binary patch literal 2706 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 M|8}c{%m7XR0CQ$-y#N3J literal 0 HcmV?d00001 diff --git a/charts/rancher-webhook/2.0.6+up0.3.6/Chart.yaml b/charts/rancher-webhook/2.0.6+up0.3.6/Chart.yaml new file mode 100644 index 0000000000..f83132fa37 --- /dev/null +++ b/charts/rancher-webhook/2.0.6+up0.3.6/Chart.yaml @@ -0,0 +1,18 @@ +annotations: + catalog.cattle.io/certified: rancher + catalog.cattle.io/hidden: "true" + catalog.cattle.io/kube-version: '>= 1.16.0-0 < 1.27.0-0' + catalog.cattle.io/namespace: cattle-system + catalog.cattle.io/os: linux + catalog.cattle.io/permits-os: linux,windows + catalog.cattle.io/rancher-version: '>= 2.7.0-0 < 2.8.0-0' + catalog.cattle.io/release-name: rancher-webhook +apiVersion: v2 +appVersion: 0.3.6 +dependencies: +- condition: capi.enabled + name: capi + repository: "" +description: ValidatingAdmissionWebhook for Rancher types +name: rancher-webhook +version: 2.0.6+up0.3.6 diff --git a/charts/rancher-webhook/2.0.6+up0.3.6/charts/capi/Chart.yaml b/charts/rancher-webhook/2.0.6+up0.3.6/charts/capi/Chart.yaml new file mode 100644 index 0000000000..388210bef1 --- /dev/null +++ b/charts/rancher-webhook/2.0.6+up0.3.6/charts/capi/Chart.yaml @@ -0,0 +1,4 @@ +apiVersion: v2 +appVersion: 0.0.0 +name: capi +version: 0.0.0 diff --git a/charts/rancher-webhook/2.0.6+up0.3.6/charts/capi/templates/service.yaml b/charts/rancher-webhook/2.0.6+up0.3.6/charts/capi/templates/service.yaml new file mode 100644 index 0000000000..de7c255c4e --- /dev/null +++ b/charts/rancher-webhook/2.0.6+up0.3.6/charts/capi/templates/service.yaml @@ -0,0 +1,13 @@ +kind: Service +apiVersion: v1 +metadata: + name: webhook-service + annotations: + need-a-cert.cattle.io/secret-name: rancher-webhook-tls +spec: + ports: + - name: https + port: 443 + targetPort: {{ .Values.port | default 8777 }} + selector: + app: rancher-webhook diff --git a/charts/rancher-webhook/2.0.6+up0.3.6/templates/_helpers.tpl b/charts/rancher-webhook/2.0.6+up0.3.6/templates/_helpers.tpl new file mode 100644 index 0000000000..c37a65c6f3 --- /dev/null +++ b/charts/rancher-webhook/2.0.6+up0.3.6/templates/_helpers.tpl @@ -0,0 +1,22 @@ +{{- define "system_default_registry" -}} +{{- if .Values.global.cattle.systemDefaultRegistry -}} +{{- printf "%s/" .Values.global.cattle.systemDefaultRegistry -}} +{{- else -}} +{{- "" -}} +{{- end -}} +{{- end -}} + +{{- define "rancher-webhook.labels" -}} +app: rancher-webhook +{{- end }} + +{{- define "linux-node-tolerations" -}} +- key: "cattle.io/os" + value: "linux" + effect: "NoSchedule" + operator: "Equal" +{{- end -}} + +{{- define "linux-node-selector" -}} +kubernetes.io/os: linux +{{- end -}} \ No newline at end of file diff --git a/charts/rancher-webhook/2.0.6+up0.3.6/templates/deployment.yaml b/charts/rancher-webhook/2.0.6+up0.3.6/templates/deployment.yaml new file mode 100644 index 0000000000..13738feae0 --- /dev/null +++ b/charts/rancher-webhook/2.0.6+up0.3.6/templates/deployment.yaml @@ -0,0 +1,83 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: rancher-webhook +spec: + selector: + matchLabels: + app: rancher-webhook + template: + metadata: + labels: + app: rancher-webhook + spec: + {{- if .Values.capi.enabled }} + volumes: + - name: tls + secret: + secretName: rancher-webhook-tls + {{- end }} + {{- if .Values.global.hostNetwork }} + hostNetwork: true + {{- end }} + nodeSelector: {{ include "linux-node-selector" . | nindent 8 }} + {{- if .Values.nodeSelector }} +{{ toYaml .Values.nodeSelector | indent 8 }} + {{- end }} + tolerations: {{ include "linux-node-tolerations" . | nindent 6 }} + {{- if .Values.tolerations }} +{{ toYaml .Values.tolerations | indent 6 }} + {{- end }} + containers: + - env: + - name: STAMP + value: "{{.Values.stamp}}" + - name: ENABLE_CAPI + value: "{{.Values.capi.enabled}}" + - name: ENABLE_MCM + value: "{{.Values.mcm.enabled}}" + - name: CATTLE_PORT + value: {{.Values.port | default 9443 | quote}} + - name: CATTLE_CAPI_PORT + value: {{.Values.capi.port | default 8777 | quote}} + - name: NAMESPACE + valueFrom: + fieldRef: + fieldPath: metadata.namespace + image: '{{ template "system_default_registry" . }}{{ .Values.image.repository }}:{{ .Values.image.tag }}' + name: rancher-webhook + imagePullPolicy: "{{ .Values.image.imagePullPolicy }}" + ports: + - name: https + containerPort: {{ .Values.port | default 9443 }} + - name: capi-https + containerPort: {{ .Values.capi.port | default 8777}} + startupProbe: + httpGet: + path: "/healthz" + port: "https" + scheme: "HTTPS" + failureThreshold: 60 + periodSeconds: 5 + livenessProbe: + httpGet: + path: "/healthz" + port: "https" + scheme: "HTTPS" + periodSeconds: 5 + {{- if .Values.capi.enabled }} + volumeMounts: + - name: tls + mountPath: /tmp/k8s-webhook-server/serving-certs + {{- end }} + {{- if .Values.capNetBindService }} + securityContext: + capabilities: + add: + - NET_BIND_SERVICE + {{- end }} + serviceAccountName: rancher-webhook + {{- if .Values.priorityClassName }} + priorityClassName: "{{.Values.priorityClassName}}" + {{- end }} + \ No newline at end of file diff --git a/charts/rancher-webhook/2.0.6+up0.3.6/templates/rbac.yaml b/charts/rancher-webhook/2.0.6+up0.3.6/templates/rbac.yaml new file mode 100644 index 0000000000..f4364995c0 --- /dev/null +++ b/charts/rancher-webhook/2.0.6+up0.3.6/templates/rbac.yaml @@ -0,0 +1,12 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: rancher-webhook +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: cluster-admin +subjects: +- kind: ServiceAccount + name: rancher-webhook + namespace: {{.Release.Namespace}} \ No newline at end of file diff --git a/charts/rancher-webhook/2.0.6+up0.3.6/templates/service.yaml b/charts/rancher-webhook/2.0.6+up0.3.6/templates/service.yaml new file mode 100644 index 0000000000..220afebeae --- /dev/null +++ b/charts/rancher-webhook/2.0.6+up0.3.6/templates/service.yaml @@ -0,0 +1,13 @@ +kind: Service +apiVersion: v1 +metadata: + name: rancher-webhook + namespace: cattle-system +spec: + ports: + - port: 443 + targetPort: {{ .Values.port | default 9443 }} + protocol: TCP + name: https + selector: + app: rancher-webhook diff --git a/charts/rancher-webhook/2.0.6+up0.3.6/templates/serviceaccount.yaml b/charts/rancher-webhook/2.0.6+up0.3.6/templates/serviceaccount.yaml new file mode 100644 index 0000000000..9e7ad7e1fe --- /dev/null +++ b/charts/rancher-webhook/2.0.6+up0.3.6/templates/serviceaccount.yaml @@ -0,0 +1,11 @@ +apiVersion: v1 +kind: ServiceAccount +metadata: + name: rancher-webhook +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: rancher-webhook-sudo + annotations: + cattle.io/description: "SA which can be impersonated to bypass rancher-webhook validation" \ No newline at end of file diff --git a/charts/rancher-webhook/2.0.6+up0.3.6/templates/webhook.yaml b/charts/rancher-webhook/2.0.6+up0.3.6/templates/webhook.yaml new file mode 100644 index 0000000000..53a0687b6f --- /dev/null +++ b/charts/rancher-webhook/2.0.6+up0.3.6/templates/webhook.yaml @@ -0,0 +1,9 @@ +apiVersion: admissionregistration.k8s.io/v1 +kind: ValidatingWebhookConfiguration +metadata: + name: rancher.cattle.io +--- +apiVersion: admissionregistration.k8s.io/v1 +kind: MutatingWebhookConfiguration +metadata: + name: rancher.cattle.io diff --git a/charts/rancher-webhook/2.0.6+up0.3.6/tests/README.md b/charts/rancher-webhook/2.0.6+up0.3.6/tests/README.md new file mode 100644 index 0000000000..6d3059a005 --- /dev/null +++ b/charts/rancher-webhook/2.0.6+up0.3.6/tests/README.md @@ -0,0 +1,16 @@ + +## local dev testing instructions + +Option 1: Full chart CI run with a live cluster + +```bash +./scripts/charts/ci +``` + +Option 2: Test runs against the chart only + +```bash +# install the helm plugin first - helm plugin install https://github.com/helm-unittest/helm-unittest.git +bash dev-scripts/helm-unittest.sh +``` + diff --git a/charts/rancher-webhook/2.0.6+up0.3.6/tests/capi-service_test.yaml b/charts/rancher-webhook/2.0.6+up0.3.6/tests/capi-service_test.yaml new file mode 100644 index 0000000000..4ee94a84a4 --- /dev/null +++ b/charts/rancher-webhook/2.0.6+up0.3.6/tests/capi-service_test.yaml @@ -0,0 +1,20 @@ +suite: Test Service +templates: + - charts/capi/templates/service.yaml +tests: + - it: should set webhook default port values + set: + capi.enabled: true + asserts: + - equal: + path: spec.ports[0].targetPort + value: 8777 + + - it: should set updated target port + set: + capi.port: 2319 + capi.enabled: true + asserts: + - equal: + path: spec.ports[0].targetPort + value: 2319 diff --git a/charts/rancher-webhook/2.0.6+up0.3.6/tests/deployment_test.yaml b/charts/rancher-webhook/2.0.6+up0.3.6/tests/deployment_test.yaml new file mode 100644 index 0000000000..66a74d4e5f --- /dev/null +++ b/charts/rancher-webhook/2.0.6+up0.3.6/tests/deployment_test.yaml @@ -0,0 +1,62 @@ +suite: Test Deployment +templates: + - deployment.yaml + +tests: + - it: should set webhook default port values + asserts: + - equal: + path: spec.template.spec.containers[0].ports[0].containerPort + value: 9443 + - equal: + path: spec.template.spec.containers[0].ports[1].containerPort + value: 8777 + - contains: + path: spec.template.spec.containers[0].env + content: + name: CATTLE_PORT + value: "9443" + - contains: + path: spec.template.spec.containers[0].env + content: + name: CATTLE_CAPI_PORT + value: "8777" + + - it: should set updated webhook port + set: + port: 2319 + asserts: + - equal: + path: spec.template.spec.containers[0].ports[0].containerPort + value: 2319 + - contains: + path: spec.template.spec.containers[0].env + content: + name: CATTLE_PORT + value: "2319" + + - it: should set updated capi port + set: + capi.port: 2319 + asserts: + - equal: + path: spec.template.spec.containers[0].ports[1].containerPort + value: 2319 + - contains: + path: spec.template.spec.containers[0].env + content: + name: CATTLE_CAPI_PORT + value: "2319" + + - it: should not set capabilities by default. + asserts: + - isNull: + path: spec.template.spec.containers[0].securityContext + + - it: should set net capabilities when capNetBindService is true. + set: + capNetBindService: true + asserts: + - contains: + path: spec.template.spec.containers[0].securityContext.capabilities.add + content: NET_BIND_SERVICE diff --git a/charts/rancher-webhook/2.0.6+up0.3.6/tests/service_test.yaml b/charts/rancher-webhook/2.0.6+up0.3.6/tests/service_test.yaml new file mode 100644 index 0000000000..03172ad033 --- /dev/null +++ b/charts/rancher-webhook/2.0.6+up0.3.6/tests/service_test.yaml @@ -0,0 +1,18 @@ +suite: Test Service +templates: + - service.yaml + +tests: + - it: should set webhook default port values + asserts: + - equal: + path: spec.ports[0].targetPort + value: 9443 + + - it: should set updated target port + set: + port: 2319 + asserts: + - equal: + path: spec.ports[0].targetPort + value: 2319 diff --git a/charts/rancher-webhook/2.0.6+up0.3.6/values.yaml b/charts/rancher-webhook/2.0.6+up0.3.6/values.yaml new file mode 100644 index 0000000000..1adbd283f9 --- /dev/null +++ b/charts/rancher-webhook/2.0.6+up0.3.6/values.yaml @@ -0,0 +1,26 @@ +image: + repository: rancher/rancher-webhook + tag: v0.3.6 + imagePullPolicy: IfNotPresent + +global: + cattle: + systemDefaultRegistry: "" + hostNetwork: false + +capi: + enabled: false + port: 8777 + +mcm: + enabled: true + +# tolerations for the webhook deployment. See https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/ for more info +tolerations: [] +nodeSelector: {} + +## PriorityClassName assigned to deployment. +priorityClassName: "" + +# port assigns which port to use when running rancher-webhook +port: 9443 diff --git a/index.yaml b/index.yaml index d242c7efe6..f45cbca88f 100755 --- a/index.yaml +++ b/index.yaml @@ -14287,6 +14287,28 @@ entries: urls: - assets/rancher-webhook/rancher-webhook-103.0.0+up0.4.0.tgz version: 103.0.0+up0.4.0 + - annotations: + catalog.cattle.io/certified: rancher + catalog.cattle.io/hidden: "true" + catalog.cattle.io/kube-version: '>= 1.16.0-0 < 1.27.0-0' + catalog.cattle.io/namespace: cattle-system + catalog.cattle.io/os: linux + catalog.cattle.io/permits-os: linux,windows + catalog.cattle.io/rancher-version: '>= 2.7.0-0 < 2.8.0-0' + catalog.cattle.io/release-name: rancher-webhook + apiVersion: v2 + appVersion: 0.3.6 + created: "2023-09-21T15:21:33.124045-07:00" + dependencies: + - condition: capi.enabled + name: capi + repository: "" + description: ValidatingAdmissionWebhook for Rancher types + digest: 473a395b9956a71b8ba41786ca3daab8f13911854e87f3d9571524ac5e7729eb + name: rancher-webhook + urls: + - assets/rancher-webhook/rancher-webhook-2.0.6+up0.3.6.tgz + version: 2.0.6+up0.3.6 - annotations: catalog.cattle.io/certified: rancher catalog.cattle.io/hidden: "true" diff --git a/release.yaml b/release.yaml index e69de29bb2..6359b41779 100644 --- a/release.yaml +++ b/release.yaml @@ -0,0 +1,2 @@ +rancher-webhook: + - 2.0.6+up0.3.6 From 1e85ca8a8bc6e8b9d0e8df2efebddd155b1bfa6e Mon Sep 17 00:00:00 2001 From: Francesco Giudici Date: Mon, 9 Oct 2023 11:30:43 +0200 Subject: [PATCH 2/7] Add Elemental packages Signed-off-by: Francesco Giudici --- .../generated-changes/patch/Chart.yaml.patch | 13 +++++ packages/elemental/elemental-crd/package.yaml | 2 + .../generated-changes/overlay/app-readme.md | 5 ++ .../generated-changes/overlay/questions.yaml | 27 ++++++++++ .../generated-changes/patch/Chart.yaml.patch | 27 ++++++++++ .../patch/templates/channel.yaml.patch | 15 ++++++ .../generated-changes/patch/values.yaml.patch | 51 +++++++++++++++++++ packages/elemental/elemental/package.yaml | 2 + 8 files changed, 142 insertions(+) create mode 100644 packages/elemental/elemental-crd/generated-changes/patch/Chart.yaml.patch create mode 100644 packages/elemental/elemental-crd/package.yaml create mode 100644 packages/elemental/elemental/generated-changes/overlay/app-readme.md create mode 100644 packages/elemental/elemental/generated-changes/overlay/questions.yaml create mode 100644 packages/elemental/elemental/generated-changes/patch/Chart.yaml.patch create mode 100644 packages/elemental/elemental/generated-changes/patch/templates/channel.yaml.patch create mode 100644 packages/elemental/elemental/generated-changes/patch/values.yaml.patch create mode 100644 packages/elemental/elemental/package.yaml diff --git a/packages/elemental/elemental-crd/generated-changes/patch/Chart.yaml.patch b/packages/elemental/elemental-crd/generated-changes/patch/Chart.yaml.patch new file mode 100644 index 0000000000..ceabb32366 --- /dev/null +++ b/packages/elemental/elemental-crd/generated-changes/patch/Chart.yaml.patch @@ -0,0 +1,13 @@ +--- charts-original/Chart.yaml ++++ charts/Chart.yaml +@@ -4,7 +4,8 @@ + catalog.cattle.io/namespace: cattle-elemental-system + catalog.cattle.io/release-name: elemental-operator-crds + apiVersion: v2 +-appVersion: v1.3.4 ++appVersion: 1.3.4 + description: A Helm chart for deploying Rancher Elemental Operator CRDs +-name: elemental-operator-crds ++name: elemental-crd ++type: application + version: 1.3.4 diff --git a/packages/elemental/elemental-crd/package.yaml b/packages/elemental/elemental-crd/package.yaml new file mode 100644 index 0000000000..ab086e0f66 --- /dev/null +++ b/packages/elemental/elemental-crd/package.yaml @@ -0,0 +1,2 @@ +url: https://github.com/rancher/elemental-operator/releases/download/v1.3.4/elemental-operator-crds-1.3.4.tgz +version: 103.0.0 diff --git a/packages/elemental/elemental/generated-changes/overlay/app-readme.md b/packages/elemental/elemental/generated-changes/overlay/app-readme.md new file mode 100644 index 0000000000..c66b1bbb04 --- /dev/null +++ b/packages/elemental/elemental/generated-changes/overlay/app-readme.md @@ -0,0 +1,5 @@ +# Elemental + +Elemental brings to Rancher the ability to install and manage the OS of bare metal and virtualized machines. + +For more information on how to deploy an Elemental Cluster, follow the [official documentation](https://elemental.docs.rancher.com/). diff --git a/packages/elemental/elemental/generated-changes/overlay/questions.yaml b/packages/elemental/elemental/generated-changes/overlay/questions.yaml new file mode 100644 index 0000000000..7aa97a85c2 --- /dev/null +++ b/packages/elemental/elemental/generated-changes/overlay/questions.yaml @@ -0,0 +1,27 @@ +questions: +- variable: channel.defaultChannel + default: "true" + description: "Provide an Elemental OS Channel container image" + label: Elemental OS Channel + type: boolean + show_subquestion_if: true + group: "Elemental OS Channel" + subquestions: + - variable: channel.repository + default: registry.suse.com/rancher/elemental-teal-channel + description: "Specify Elemental OS channel repository" + type: string + label: Elemental OS Channel Repository + group: "Elemental OS Channel" + - variable: channel.tag + default: "1.3.4" + description: "Specify Elemental OS channel tag" + type: string + label: "Elemental OS Channel Tag" + group: "Elemental OS Channel" +- variable: debug + default: "false" + description: "Enable debug logging in the Elemental operator" + type: boolean + label: "Enable Debug Logging" + group: "Logging" diff --git a/packages/elemental/elemental/generated-changes/patch/Chart.yaml.patch b/packages/elemental/elemental/generated-changes/patch/Chart.yaml.patch new file mode 100644 index 0000000000..b79e330e26 --- /dev/null +++ b/packages/elemental/elemental/generated-changes/patch/Chart.yaml.patch @@ -0,0 +1,27 @@ +--- charts-original/Chart.yaml ++++ charts/Chart.yaml +@@ -2,18 +2,19 @@ + catalog.cattle.io/auto-install: elemental-crd=match + catalog.cattle.io/certified: rancher + catalog.cattle.io/display-name: Elemental +- catalog.cattle.io/kube-version: '>= 1.23.0-0 < 1.28.0-0' ++ catalog.cattle.io/kube-version: '>= 1.23.0-0' + catalog.cattle.io/namespace: cattle-elemental-system + catalog.cattle.io/os: linux + catalog.cattle.io/permits-os: linux + catalog.cattle.io/provides-gvr: elemental.cattle.io/v1beta1 +- catalog.cattle.io/rancher-version: '>= 2.7.0-0 < 2.8.0-0' ++ catalog.cattle.io/rancher-version: '>= 2.8.0-0 < 2.9.0-0' + catalog.cattle.io/release-name: elemental-operator + catalog.cattle.io/scope: management + catalog.cattle.io/type: cluster-tool ++ catalog.cattle.io/upstream-version: 1.3.4 + apiVersion: v2 +-appVersion: v1.3.4 +-description: Rancher Elemental Operator ++appVersion: 1.3.4 ++description: Elemental provides Cloud Native OS Management for Cluster Nodes. + icon: https://raw.githubusercontent.com/rancher/elemental/main/logo/icon-elemental.svg +-name: elemental-operator ++name: elemental + version: 1.3.4 diff --git a/packages/elemental/elemental/generated-changes/patch/templates/channel.yaml.patch b/packages/elemental/elemental/generated-changes/patch/templates/channel.yaml.patch new file mode 100644 index 0000000000..78068d59d8 --- /dev/null +++ b/packages/elemental/elemental/generated-changes/patch/templates/channel.yaml.patch @@ -0,0 +1,15 @@ +--- charts-original/templates/channel.yaml ++++ charts/templates/channel.yaml +@@ -2,10 +2,10 @@ + apiVersion: elemental.cattle.io/v1beta1 + kind: ManagedOSVersionChannel + metadata: +- name: elemental-teal-channel ++ name: elemental-os-channel + namespace: fleet-default + spec: + options: +- image: {{ template "registry_url" . }}{{ .Values.channel.repository }}:{{ .Values.channel.tag }} ++ image: {{ .Values.channel.repository }}:{{ .Values.channel.tag }} + type: custom + {{ end }} diff --git a/packages/elemental/elemental/generated-changes/patch/values.yaml.patch b/packages/elemental/elemental/generated-changes/patch/values.yaml.patch new file mode 100644 index 0000000000..9c247664f3 --- /dev/null +++ b/packages/elemental/elemental/generated-changes/patch/values.yaml.patch @@ -0,0 +1,51 @@ +--- charts-original/values.yaml ++++ charts/values.yaml +@@ -1,32 +1,40 @@ + image: + empty: rancher/pause:3.1 +- repository: "elemental-operator" +- tag: v1.3.4 ++ repository: "rancher/mirrored-elemental-operator" ++ tag: "1.3.4" + imagePullPolicy: IfNotPresent ++ + seedImage: +- repository: "elemental-seedimage" +- tag: v1.3.4 ++ repository: "rancher/mirrored-elemental-seedimage-builder" ++ tag: "1.3.4" + imagePullPolicy: IfNotPresent +-#channel: +-# repository: rancher/elemental-teal-channel +-# tag: latest ++ ++channel: ++ repository: "" ++ tag: "" + + # number of operator replicas to deploy + replicas: 1 ++ + # http[s] proxy server + # proxy: http://@:: + + # comma separated list of domains or ip addresses that will not use the proxy + noProxy: 127.0.0.0/8,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16,.svc,.cluster.local ++ + global: + cattle: + systemDefaultRegistry: "" ++ + # used only if systemDefaultRegistry is empty +-registryUrl: "quay.io/costoolkit" ++registryUrl: "" ++ + # enable debug output for operator + debug: false ++ + nodeSelector: + kubernetes.io/os: linux ++ + tolerations: + - key: cattle.io/os + operator: "Equal" diff --git a/packages/elemental/elemental/package.yaml b/packages/elemental/elemental/package.yaml new file mode 100644 index 0000000000..06134f2813 --- /dev/null +++ b/packages/elemental/elemental/package.yaml @@ -0,0 +1,2 @@ +url: https://github.com/rancher/elemental-operator/releases/download/v1.3.4/elemental-operator-1.3.4.tgz +version: 103.0.0 From 7d4e5c980eae810e430e24ecd37943a14383d3e6 Mon Sep 17 00:00:00 2001 From: Francesco Giudici Date: Mon, 9 Oct 2023 12:00:46 +0200 Subject: [PATCH 3/7] make charts Signed-off-by: Francesco Giudici --- .../elemental-crd-103.0.0+up1.3.4.tgz | Bin 0 -> 13439 bytes .../elemental/elemental-103.0.0+up1.3.4.tgz | Bin 0 -> 3401 bytes .../elemental-crd/103.0.0+up1.3.4/Chart.yaml | 11 + .../103.0.0+up1.3.4/templates/crds.yaml | 2710 +++++++++++++++++ charts/elemental/103.0.0+up1.3.4/Chart.yaml | 20 + charts/elemental/103.0.0+up1.3.4/README.md | 5 + .../elemental/103.0.0+up1.3.4/app-readme.md | 5 + .../elemental/103.0.0+up1.3.4/questions.yaml | 27 + .../103.0.0+up1.3.4/templates/_helpers.tpl | 17 + .../103.0.0+up1.3.4/templates/apiservice.yaml | 9 + .../103.0.0+up1.3.4/templates/capi_rbac.yaml | 10 + .../103.0.0+up1.3.4/templates/channel.yaml | 11 + .../templates/cluster_role.yaml | 267 ++ .../templates/cluster_role_binding.yaml | 13 + .../103.0.0+up1.3.4/templates/deployment.yaml | 50 + .../103.0.0+up1.3.4/templates/globalrole.yaml | 16 + .../templates/serviceaccount.yaml | 4 + .../templates/validate-install-crd.yaml | 25 + charts/elemental/103.0.0+up1.3.4/values.yaml | 42 + index.yaml | 41 + 20 files changed, 3283 insertions(+) create mode 100644 assets/elemental-crd/elemental-crd-103.0.0+up1.3.4.tgz create mode 100644 assets/elemental/elemental-103.0.0+up1.3.4.tgz create mode 100644 charts/elemental-crd/103.0.0+up1.3.4/Chart.yaml create mode 100644 charts/elemental-crd/103.0.0+up1.3.4/templates/crds.yaml create mode 100644 charts/elemental/103.0.0+up1.3.4/Chart.yaml create mode 100644 charts/elemental/103.0.0+up1.3.4/README.md create mode 100644 charts/elemental/103.0.0+up1.3.4/app-readme.md create mode 100644 charts/elemental/103.0.0+up1.3.4/questions.yaml create mode 100644 charts/elemental/103.0.0+up1.3.4/templates/_helpers.tpl create mode 100644 charts/elemental/103.0.0+up1.3.4/templates/apiservice.yaml create mode 100644 charts/elemental/103.0.0+up1.3.4/templates/capi_rbac.yaml create mode 100644 charts/elemental/103.0.0+up1.3.4/templates/channel.yaml create mode 100644 charts/elemental/103.0.0+up1.3.4/templates/cluster_role.yaml create mode 100644 charts/elemental/103.0.0+up1.3.4/templates/cluster_role_binding.yaml create mode 100644 charts/elemental/103.0.0+up1.3.4/templates/deployment.yaml create mode 100644 charts/elemental/103.0.0+up1.3.4/templates/globalrole.yaml create mode 100644 charts/elemental/103.0.0+up1.3.4/templates/serviceaccount.yaml create mode 100644 charts/elemental/103.0.0+up1.3.4/templates/validate-install-crd.yaml create mode 100644 charts/elemental/103.0.0+up1.3.4/values.yaml diff --git a/assets/elemental-crd/elemental-crd-103.0.0+up1.3.4.tgz b/assets/elemental-crd/elemental-crd-103.0.0+up1.3.4.tgz new file mode 100644 index 0000000000000000000000000000000000000000..bca800e1c6a6e9028125f266549525595d4cc569 GIT binary patch literal 13439 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 literal 0 HcmV?d00001 diff --git a/charts/elemental-crd/103.0.0+up1.3.4/Chart.yaml b/charts/elemental-crd/103.0.0+up1.3.4/Chart.yaml new file mode 100644 index 0000000000..ceeb773e88 --- /dev/null +++ b/charts/elemental-crd/103.0.0+up1.3.4/Chart.yaml @@ -0,0 +1,11 @@ +annotations: + catalog.cattle.io/certified: rancher + catalog.cattle.io/hidden: "true" + catalog.cattle.io/namespace: cattle-elemental-system + catalog.cattle.io/release-name: elemental-operator-crds +apiVersion: v2 +appVersion: 1.3.4 +description: A Helm chart for deploying Rancher Elemental Operator CRDs +name: elemental-crd +type: application +version: 103.0.0+up1.3.4 diff --git a/charts/elemental-crd/103.0.0+up1.3.4/templates/crds.yaml b/charts/elemental-crd/103.0.0+up1.3.4/templates/crds.yaml new file mode 100644 index 0000000000..40946fbfcd --- /dev/null +++ b/charts/elemental-crd/103.0.0+up1.3.4/templates/crds.yaml @@ -0,0 +1,2710 @@ +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.9.2 + creationTimestamp: null + labels: + cluster.x-k8s.io/provider: infrastructure-elemental + cluster.x-k8s.io/v1beta1: v1beta1 + release-name: '{{ .Release.Name }}' + name: machineinventories.elemental.cattle.io +spec: + group: elemental.cattle.io + names: + kind: MachineInventory + listKind: MachineInventoryList + plural: machineinventories + singular: machineinventory + scope: Namespaced + versions: + - name: v1beta1 + 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://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + properties: + machineHash: + description: MachineHash the hash of the identifier used by the host + to identify to the operator. This is used when the host authenticates + without TPM. Both the authentication method and the identifier used + to derive the hash depend upon the MachineRegistration spec.config.elemental.registration.auth + value. + type: string + tpmHash: + description: TPMHash the hash of the TPM EK public key. This is used + if you are using TPM2 to identifiy nodes. You can obtain the TPM + by running `rancherd get-tpm-hash` on the node. Or nodes can report + their TPM hash by using the MachineRegister. + type: string + type: object + status: + properties: + conditions: + description: Conditions describe the state of the machine inventory + object. + items: + description: "Condition contains details for one aspect of the current + state of this API Resource. --- This struct is intended for direct + use as an array at the field path .status.conditions. For example, + type FooStatus struct{ // Represents the observations of a foo's + current state. // Known .status.conditions.type are: \"Available\", + \"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge + // +listType=map // +listMapKey=type Conditions []metav1.Condition + `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" + protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }" + properties: + lastTransitionTime: + description: lastTransitionTime is the last time the condition + transitioned from one status to another. This should be when + the underlying condition changed. If that is not known, then + using the time when the API field changed is acceptable. + format: date-time + type: string + message: + description: message is a human readable message indicating + details about the transition. This may be an empty string. + maxLength: 32768 + type: string + observedGeneration: + description: observedGeneration represents the .metadata.generation + that the condition was set based upon. For instance, if .metadata.generation + is currently 12, but the .status.conditions[x].observedGeneration + is 9, the condition is out of date with respect to the current + state of the instance. + format: int64 + minimum: 0 + type: integer + reason: + description: reason contains a programmatic identifier indicating + the reason for the condition's last transition. Producers + of specific condition types may define expected values and + meanings for this field, and whether the values are considered + a guaranteed API. The value should be a CamelCase string. + This field may not be empty. + maxLength: 1024 + minLength: 1 + pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ + type: string + status: + description: status of the condition, one of True, False, Unknown. + enum: + - "True" + - "False" + - Unknown + type: string + type: + description: type of condition in CamelCase or in foo.example.com/CamelCase. + --- Many .condition.type values are consistent across resources + like Available, but because arbitrary conditions can be useful + (see .node.status.conditions), the ability to deconflict is + important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) + maxLength: 316 + pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ + type: string + required: + - lastTransitionTime + - message + - reason + - status + - type + type: object + type: array + plan: + description: PlanStatus reflect the status of the plan owned by the + machine inventory object. + properties: + checksum: + description: Checksum checksum of the created plan. + type: string + secretRef: + description: PlanSecretRef a reference to the created plan secret. + properties: + apiVersion: + description: API version of the referent. + type: string + fieldPath: + description: 'If referring to a piece of an object instead + of an entire object, this string should contain a valid + JSON/Go field access statement, such as desiredState.manifest.containers[2]. + For example, if the object reference is to a container within + a pod, this would take on a value like: "spec.containers{name}" + (where "name" refers to the name of the container that triggered + the event) or if no container name is specified "spec.containers[2]" + (container with index 2 in this pod). This syntax is chosen + only to have some well-defined way of referencing a part + of an object. TODO: this design is not final and this field + is subject to change in the future.' + type: string + kind: + description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' + type: string + namespace: + description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/' + type: string + resourceVersion: + description: 'Specific resourceVersion to which this reference + is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency' + type: string + uid: + description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids' + type: string + type: object + x-kubernetes-map-type: atomic + state: + description: State reflect state of the plan that belongs to the + machine inventory. + enum: + - Applied + - Failed + type: string + type: object + type: object + type: object + served: true + storage: true + subresources: + status: {} +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.9.2 + creationTimestamp: null + labels: + cluster.x-k8s.io/provider: infrastructure-elemental + cluster.x-k8s.io/v1beta1: v1beta1 + release-name: '{{ .Release.Name }}' + name: machineinventoryselectors.elemental.cattle.io +spec: + group: elemental.cattle.io + names: + kind: MachineInventorySelector + listKind: MachineInventorySelectorList + plural: machineinventoryselectors + singular: machineinventoryselector + scope: Namespaced + versions: + - name: v1beta1 + 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://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + properties: + providerID: + description: 'ProviderID the identifier for the elemental instance. + NOTE: Functionality not implemented yet.' + type: string + selector: + description: Selector selector to choose elemental machines. + properties: + matchExpressions: + description: matchExpressions is a list of label selector requirements. + The requirements are ANDed. + items: + description: A label selector requirement is a selector that + contains values, a key, and an operator that relates the key + and values. + properties: + key: + description: key is the label key that the selector applies + to. + type: string + operator: + description: operator represents a key's relationship to + a set of values. Valid operators are In, NotIn, Exists + and DoesNotExist. + type: string + values: + 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 DoesNotExist, the values + array must be empty. This array is replaced during a strategic + merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} pairs. A single + {key,value} in the matchLabels map is equivalent 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 + x-kubernetes-map-type: atomic + type: object + status: + properties: + addresses: + description: Addresses represent machine addresses. + items: + description: MachineAddress contains information for the node's + address. + properties: + address: + description: The machine address. + type: string + type: + description: Machine address type, one of Hostname, ExternalIP + or InternalIP. + type: string + required: + - address + - type + type: object + type: array + bootstrapPlanChecksum: + description: BootstrapPlanChecksum represent bootstrap plan checksum. + type: string + conditions: + description: Conditions describe the state of the machine selector + object. + items: + description: "Condition contains details for one aspect of the current + state of this API Resource. --- This struct is intended for direct + use as an array at the field path .status.conditions. For example, + type FooStatus struct{ // Represents the observations of a foo's + current state. // Known .status.conditions.type are: \"Available\", + \"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge + // +listType=map // +listMapKey=type Conditions []metav1.Condition + `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" + protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }" + properties: + lastTransitionTime: + description: lastTransitionTime is the last time the condition + transitioned from one status to another. This should be when + the underlying condition changed. If that is not known, then + using the time when the API field changed is acceptable. + format: date-time + type: string + message: + description: message is a human readable message indicating + details about the transition. This may be an empty string. + maxLength: 32768 + type: string + observedGeneration: + description: observedGeneration represents the .metadata.generation + that the condition was set based upon. For instance, if .metadata.generation + is currently 12, but the .status.conditions[x].observedGeneration + is 9, the condition is out of date with respect to the current + state of the instance. + format: int64 + minimum: 0 + type: integer + reason: + description: reason contains a programmatic identifier indicating + the reason for the condition's last transition. Producers + of specific condition types may define expected values and + meanings for this field, and whether the values are considered + a guaranteed API. The value should be a CamelCase string. + This field may not be empty. + maxLength: 1024 + minLength: 1 + pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ + type: string + status: + description: status of the condition, one of True, False, Unknown. + enum: + - "True" + - "False" + - Unknown + type: string + type: + description: type of condition in CamelCase or in foo.example.com/CamelCase. + --- Many .condition.type values are consistent across resources + like Available, but because arbitrary conditions can be useful + (see .node.status.conditions), the ability to deconflict is + important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) + maxLength: 316 + pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ + type: string + required: + - lastTransitionTime + - message + - reason + - status + - type + type: object + type: array + machineInventoryRef: + description: MachineInventoryRef reference to the machine inventory + that belongs to the selector. + 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 + x-kubernetes-map-type: atomic + ready: + type: boolean + type: object + type: object + served: true + storage: true + subresources: + status: {} +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.9.2 + creationTimestamp: null + labels: + cluster.x-k8s.io/provider: infrastructure-elemental + cluster.x-k8s.io/v1beta1: v1beta1 + release-name: '{{ .Release.Name }}' + name: machineinventoryselectortemplates.elemental.cattle.io +spec: + group: elemental.cattle.io + names: + kind: MachineInventorySelectorTemplate + listKind: MachineInventorySelectorTemplateList + plural: machineinventoryselectortemplates + singular: machineinventoryselectortemplate + scope: Namespaced + versions: + - name: v1beta1 + 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://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + properties: + template: + description: Template machine inventory selector template. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this + representation of an object. Servers should convert recognized + schemas to the latest internal value, and may reject unrecognized + values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource + this object represents. Servers may infer this from the endpoint + the client submits requests to. Cannot be updated. In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + properties: + providerID: + description: 'ProviderID the identifier for the elemental + instance. NOTE: Functionality not implemented yet.' + type: string + selector: + description: Selector selector to choose elemental machines. + properties: + matchExpressions: + description: matchExpressions is a list of label selector + requirements. The requirements are ANDed. + items: + description: A label selector requirement is a selector + that contains values, a key, and an operator that + relates the key and values. + properties: + key: + description: key is the label key that the selector + applies to. + type: string + operator: + description: operator represents a key's relationship + to a set of values. Valid operators are In, NotIn, + Exists and DoesNotExist. + type: string + values: + 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 + DoesNotExist, the values array must be empty. + This array is replaced during a strategic merge + patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} pairs. + A single {key,value} in the matchLabels map is equivalent + 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 + x-kubernetes-map-type: atomic + type: object + status: + properties: + addresses: + description: Addresses represent machine addresses. + items: + description: MachineAddress contains information for the + node's address. + properties: + address: + description: The machine address. + type: string + type: + description: Machine address type, one of Hostname, + ExternalIP or InternalIP. + type: string + required: + - address + - type + type: object + type: array + bootstrapPlanChecksum: + description: BootstrapPlanChecksum represent bootstrap plan + checksum. + type: string + conditions: + description: Conditions describe the state of the machine + selector object. + items: + description: "Condition contains details for one aspect + of the current state of this API Resource. --- This struct + is intended for direct use as an array at the field path + .status.conditions. For example, type FooStatus struct{ + // Represents the observations of a foo's current state. + // Known .status.conditions.type are: \"Available\", \"Progressing\", + and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge + // +listType=map // +listMapKey=type Conditions []metav1.Condition + `json:\"conditions,omitempty\" patchStrategy:\"merge\" + patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` + \n // other fields }" + properties: + lastTransitionTime: + description: lastTransitionTime is the last time the + condition transitioned from one status to another. + This should be when the underlying condition changed. If + that is not known, then using the time when the API + field changed is acceptable. + format: date-time + type: string + message: + description: message is a human readable message indicating + details about the transition. This may be an empty + string. + maxLength: 32768 + type: string + observedGeneration: + description: observedGeneration represents the .metadata.generation + that the condition was set based upon. For instance, + if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration + is 9, the condition is out of date with respect to + the current state of the instance. + format: int64 + minimum: 0 + type: integer + reason: + description: reason contains a programmatic identifier + indicating the reason for the condition's last transition. + Producers of specific condition types may define expected + values and meanings for this field, and whether the + values are considered a guaranteed API. The value + should be a CamelCase string. This field may not be + empty. + maxLength: 1024 + minLength: 1 + pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ + type: string + status: + description: status of the condition, one of True, False, + Unknown. + enum: + - "True" + - "False" + - Unknown + type: string + type: + description: type of condition in CamelCase or in foo.example.com/CamelCase. + --- Many .condition.type values are consistent across + resources like Available, but because arbitrary conditions + can be useful (see .node.status.conditions), the ability + to deconflict is important. The regex it matches is + (dns1123SubdomainFmt/)?(qualifiedNameFmt) + maxLength: 316 + pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ + type: string + required: + - lastTransitionTime + - message + - reason + - status + - type + type: object + type: array + machineInventoryRef: + description: MachineInventoryRef reference to the machine + inventory that belongs to the selector. + 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 + x-kubernetes-map-type: atomic + ready: + type: boolean + type: object + type: object + required: + - template + type: object + type: object + served: true + storage: true +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.9.2 + creationTimestamp: null + labels: + cluster.x-k8s.io/provider: infrastructure-elemental + cluster.x-k8s.io/v1beta1: v1beta1 + release-name: '{{ .Release.Name }}' + name: machineregistrations.elemental.cattle.io +spec: + group: elemental.cattle.io + names: + kind: MachineRegistration + listKind: MachineRegistrationList + plural: machineregistrations + singular: machineregistration + scope: Namespaced + versions: + - name: v1beta1 + 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://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + properties: + config: + description: Config the cloud config that will be used to provision + the node. + properties: + cloud-config: + x-kubernetes-preserve-unknown-fields: true + elemental: + properties: + install: + properties: + config-dir: + type: string + config-urls: + items: + type: string + type: array + debug: + type: boolean + device: + type: string + disable-boot-entry: + type: boolean + eject-cd: + type: boolean + firmware: + type: string + iso: + type: string + no-format: + type: boolean + poweroff: + type: boolean + reboot: + type: boolean + system-uri: + type: string + tty: + type: string + type: object + registration: + properties: + auth: + default: tpm + type: string + ca-cert: + type: string + emulate-tpm: + type: boolean + emulated-tpm-seed: + format: int64 + type: integer + no-smbios: + type: boolean + url: + type: string + type: object + reset: + default: + reboot: true + reset-oem: true + reset-persistent: true + properties: + config-urls: + items: + type: string + type: array + debug: + type: boolean + enabled: + type: boolean + poweroff: + type: boolean + reboot: + default: true + type: boolean + reset-oem: + default: true + type: boolean + reset-persistent: + default: true + type: boolean + system-uri: + type: string + type: object + system-agent: + properties: + secret-name: + type: string + secret-namespace: + type: string + token: + type: string + url: + type: string + type: object + type: object + type: object + machineInventoryAnnotations: + additionalProperties: + type: string + description: MachineInventoryAnnotations annotations to be added to + the created MachineInventory object. + type: object + machineInventoryLabels: + additionalProperties: + type: string + description: MachineInventoryLabels label to be added to the created + MachineInventory object. + type: object + machineName: + type: string + type: object + status: + properties: + conditions: + description: Conditions describe the state of the machine registration + object. + items: + description: "Condition contains details for one aspect of the current + state of this API Resource. --- This struct is intended for direct + use as an array at the field path .status.conditions. For example, + type FooStatus struct{ // Represents the observations of a foo's + current state. // Known .status.conditions.type are: \"Available\", + \"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge + // +listType=map // +listMapKey=type Conditions []metav1.Condition + `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" + protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }" + properties: + lastTransitionTime: + description: lastTransitionTime is the last time the condition + transitioned from one status to another. This should be when + the underlying condition changed. If that is not known, then + using the time when the API field changed is acceptable. + format: date-time + type: string + message: + description: message is a human readable message indicating + details about the transition. This may be an empty string. + maxLength: 32768 + type: string + observedGeneration: + description: observedGeneration represents the .metadata.generation + that the condition was set based upon. For instance, if .metadata.generation + is currently 12, but the .status.conditions[x].observedGeneration + is 9, the condition is out of date with respect to the current + state of the instance. + format: int64 + minimum: 0 + type: integer + reason: + description: reason contains a programmatic identifier indicating + the reason for the condition's last transition. Producers + of specific condition types may define expected values and + meanings for this field, and whether the values are considered + a guaranteed API. The value should be a CamelCase string. + This field may not be empty. + maxLength: 1024 + minLength: 1 + pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ + type: string + status: + description: status of the condition, one of True, False, Unknown. + enum: + - "True" + - "False" + - Unknown + type: string + type: + description: type of condition in CamelCase or in foo.example.com/CamelCase. + --- Many .condition.type values are consistent across resources + like Available, but because arbitrary conditions can be useful + (see .node.status.conditions), the ability to deconflict is + important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) + maxLength: 316 + pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ + type: string + required: + - lastTransitionTime + - message + - reason + - status + - type + type: object + type: array + registrationToken: + description: RegistrationToken a token for registering a machine. + type: string + registrationURL: + description: RegistrationURL is the URL for registering a new machine. + type: string + serviceAccountRef: + description: ServiceAccountRef a reference to the service account + created by the machine registration. + properties: + apiVersion: + description: API version of the referent. + type: string + fieldPath: + description: 'If referring to a piece of an object instead of + an entire object, this string should contain a valid JSON/Go + field access statement, such as desiredState.manifest.containers[2]. + For example, if the object reference is to a container within + a pod, this would take on a value like: "spec.containers{name}" + (where "name" refers to the name of the container that triggered + the event) or if no container name is specified "spec.containers[2]" + (container with index 2 in this pod). This syntax is chosen + only to have some well-defined way of referencing a part of + an object. TODO: this design is not final and this field is + subject to change in the future.' + type: string + kind: + description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' + type: string + namespace: + description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/' + type: string + resourceVersion: + description: 'Specific resourceVersion to which this reference + is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency' + type: string + uid: + description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids' + type: string + type: object + x-kubernetes-map-type: atomic + type: object + type: object + served: true + storage: true + subresources: + status: {} +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.9.2 + creationTimestamp: null + labels: + cluster.x-k8s.io/provider: infrastructure-elemental + cluster.x-k8s.io/v1beta1: v1beta1 + release-name: '{{ .Release.Name }}' + name: managedosimages.elemental.cattle.io +spec: + group: elemental.cattle.io + names: + kind: ManagedOSImage + listKind: ManagedOSImageList + plural: managedosimages + singular: managedosimage + scope: Namespaced + versions: + - name: v1beta1 + 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://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + properties: + cloudConfig: + type: object + clusterRolloutStrategy: + properties: + autoPartitionSize: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + maxUnavailable: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + maxUnavailablePartitions: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + partitions: + items: + properties: + clusterGroup: + type: string + clusterGroupSelector: + description: A label selector is a label query over a set + of resources. The result of matchLabels and matchExpressions + are ANDed. An empty label selector matches all objects. + A null label selector matches no objects. + properties: + matchExpressions: + description: matchExpressions is a list of label selector + requirements. The requirements are ANDed. + items: + description: A label selector requirement is a selector + that contains values, a key, and an operator that + relates the key and values. + properties: + key: + description: key is the label key that the selector + applies to. + type: string + operator: + description: operator represents a key's relationship + to a set of values. Valid operators are In, + NotIn, Exists and DoesNotExist. + type: string + values: + 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 DoesNotExist, the values array must be empty. + This array is replaced during a strategic merge + patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} pairs. + A single {key,value} in the matchLabels map is equivalent + 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 + x-kubernetes-map-type: atomic + clusterName: + type: string + clusterSelector: + description: A label selector is a label query over a set + of resources. The result of matchLabels and matchExpressions + are ANDed. An empty label selector matches all objects. + A null label selector matches no objects. + properties: + matchExpressions: + description: matchExpressions is a list of label selector + requirements. The requirements are ANDed. + items: + description: A label selector requirement is a selector + that contains values, a key, and an operator that + relates the key and values. + properties: + key: + description: key is the label key that the selector + applies to. + type: string + operator: + description: operator represents a key's relationship + to a set of values. Valid operators are In, + NotIn, Exists and DoesNotExist. + type: string + values: + 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 DoesNotExist, the values array must be empty. + This array is replaced during a strategic merge + patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} pairs. + A single {key,value} in the matchLabels map is equivalent + 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 + x-kubernetes-map-type: atomic + maxUnavailable: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + name: + type: string + type: object + type: array + type: object + clusterTargets: + items: + properties: + clusterGroup: + type: string + clusterGroupSelector: + description: A label selector is a label query over a set of + resources. The result of matchLabels and matchExpressions + are ANDed. An empty label selector matches all objects. A + null label selector matches no objects. + properties: + matchExpressions: + description: matchExpressions is a list of label selector + requirements. The requirements are ANDed. + items: + description: A label selector requirement is a selector + that contains values, a key, and an operator that relates + the key and values. + properties: + key: + description: key is the label key that the selector + applies to. + type: string + operator: + description: operator represents a key's relationship + to a set of values. Valid operators are In, NotIn, + Exists and DoesNotExist. + type: string + values: + 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 + DoesNotExist, the values array must be empty. This + array is replaced during a strategic merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} pairs. + A single {key,value} in the matchLabels map is equivalent + 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 + x-kubernetes-map-type: atomic + clusterName: + type: string + clusterSelector: + description: A label selector is a label query over a set of + resources. The result of matchLabels and matchExpressions + are ANDed. An empty label selector matches all objects. A + null label selector matches no objects. + properties: + matchExpressions: + description: matchExpressions is a list of label selector + requirements. The requirements are ANDed. + items: + description: A label selector requirement is a selector + that contains values, a key, and an operator that relates + the key and values. + properties: + key: + description: key is the label key that the selector + applies to. + type: string + operator: + description: operator represents a key's relationship + to a set of values. Valid operators are In, NotIn, + Exists and DoesNotExist. + type: string + values: + 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 + DoesNotExist, the values array must be empty. This + array is replaced during a strategic merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} pairs. + A single {key,value} in the matchLabels map is equivalent + 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 + x-kubernetes-map-type: atomic + defaultNamespace: + type: string + diff: + properties: + comparePatches: + items: + properties: + apiVersion: + type: string + jsonPointers: + items: + type: string + type: array + kind: + type: string + name: + type: string + namespace: + type: string + operations: + items: + properties: + op: + type: string + path: + type: string + value: + type: string + type: object + type: array + type: object + type: array + type: object + forceSyncGeneration: + format: int64 + type: integer + helm: + properties: + chart: + type: string + force: + type: boolean + maxHistory: + type: integer + releaseName: + type: string + repo: + type: string + takeOwnership: + type: boolean + timeoutSeconds: + type: integer + values: + type: object + valuesFiles: + items: + type: string + type: array + valuesFrom: + items: + description: 'Define helm values that can come from configmap, + secret or external. Credit: https://github.com/fluxcd/helm-operator/blob/0cfea875b5d44bea995abe7324819432070dfbdc/pkg/apis/helm.fluxcd.io/v1/types_helmrelease.go#L439' + properties: + configMapKeyRef: + description: The reference to a config map with release + values. + properties: + key: + type: string + name: + type: string + namespace: + type: string + required: + - name + type: object + secretKeyRef: + description: The reference to a secret with release + values. + properties: + key: + type: string + name: + type: string + namespace: + type: string + required: + - name + type: object + type: object + type: array + version: + type: string + type: object + kustomize: + properties: + dir: + type: string + type: object + name: + type: string + namespace: + type: string + serviceAccount: + type: string + yaml: + properties: + overlays: + items: + type: string + type: array + type: object + type: object + type: array + concurrency: + format: int64 + type: integer + cordon: + type: boolean + drain: + description: DrainSpec encapsulates `kubectl drain` parameters minus + node/pod selectors. + properties: + deleteLocalData: + type: boolean + disableEviction: + type: boolean + force: + type: boolean + gracePeriod: + format: int32 + type: integer + ignoreDaemonSets: + type: boolean + skipWaitForDeleteTimeout: + type: integer + timeout: + description: A Duration represents the elapsed time between two + instants as an int64 nanosecond count. The representation limits + the largest representable duration to approximately 290 years. + format: int64 + type: integer + type: object + managedOSVersionName: + type: string + nodeSelector: + description: A label selector is a label query over a set of resources. + The result of matchLabels and matchExpressions are ANDed. An empty + label selector matches all objects. A null label selector matches + no objects. + properties: + matchExpressions: + description: matchExpressions is a list of label selector requirements. + The requirements are ANDed. + items: + description: A label selector requirement is a selector that + contains values, a key, and an operator that relates the key + and values. + properties: + key: + description: key is the label key that the selector applies + to. + type: string + operator: + description: operator represents a key's relationship to + a set of values. Valid operators are In, NotIn, Exists + and DoesNotExist. + type: string + values: + 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 DoesNotExist, the values + array must be empty. This array is replaced during a strategic + merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} pairs. A single + {key,value} in the matchLabels map is equivalent 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 + x-kubernetes-map-type: atomic + osImage: + type: string + prepare: + description: ContainerSpec is a simplified container template. + properties: + args: + items: + type: string + type: array + command: + items: + type: string + type: array + envFrom: + items: + description: EnvFromSource represents the source of a set of + ConfigMaps + properties: + configMapRef: + description: The ConfigMap to select from + 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 + optional: + description: Specify whether the ConfigMap must be defined + type: boolean + type: object + x-kubernetes-map-type: atomic + prefix: + description: An optional identifier to prepend to each key + in the ConfigMap. Must be a C_IDENTIFIER. + type: string + secretRef: + description: The Secret to select from + 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 + optional: + description: Specify whether the Secret must be defined + type: boolean + type: object + x-kubernetes-map-type: atomic + type: object + type: array + envs: + items: + description: EnvVar represents an environment variable present + in a Container. + properties: + name: + description: Name of the environment variable. Must be a + C_IDENTIFIER. + type: string + value: + description: 'Variable references $(VAR_NAME) are expanded + using the previously defined environment variables in + the container and any service environment variables. If + a variable cannot be resolved, the reference in the input + string will be unchanged. Double $$ are reduced to a single + $, which allows for escaping the $(VAR_NAME) syntax: i.e. + "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)". + Escaped references will never be expanded, regardless + of whether the variable exists or not. Defaults to "".' + type: string + valueFrom: + description: Source for the environment variable's value. + Cannot be used if value is not empty. + properties: + configMapKeyRef: + description: Selects a key of a ConfigMap. + properties: + key: + description: The key to select. + type: string + 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 + optional: + description: Specify whether the ConfigMap or its + key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + fieldRef: + description: 'Selects a field of the pod: supports metadata.name, + metadata.namespace, `metadata.labels['''']`, + `metadata.annotations['''']`, spec.nodeName, + spec.serviceAccountName, status.hostIP, status.podIP, + status.podIPs.' + properties: + apiVersion: + description: Version of the schema the FieldPath + is written in terms of, defaults to "v1". + type: string + fieldPath: + description: Path of the field to select in the + specified API version. + type: string + required: + - fieldPath + type: object + x-kubernetes-map-type: atomic + resourceFieldRef: + description: 'Selects a resource of the container: only + resources limits and requests (limits.cpu, limits.memory, + limits.ephemeral-storage, requests.cpu, requests.memory + and requests.ephemeral-storage) are currently supported.' + properties: + containerName: + description: 'Container name: required for volumes, + optional for env vars' + type: string + divisor: + anyOf: + - type: integer + - type: string + description: Specifies the output format of the + exposed resources, defaults to "1" + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + description: 'Required: resource to select' + type: string + required: + - resource + type: object + x-kubernetes-map-type: atomic + secretKeyRef: + description: Selects a key of a secret in the pod's + namespace + properties: + key: + description: The key of the secret to select from. Must + be a valid secret key. + type: string + 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 + optional: + description: Specify whether the Secret or its key + must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: object + required: + - name + type: object + type: array + image: + type: string + type: object + upgradeContainer: + description: ContainerSpec is a simplified container template. + properties: + args: + items: + type: string + type: array + command: + items: + type: string + type: array + envFrom: + items: + description: EnvFromSource represents the source of a set of + ConfigMaps + properties: + configMapRef: + description: The ConfigMap to select from + 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 + optional: + description: Specify whether the ConfigMap must be defined + type: boolean + type: object + x-kubernetes-map-type: atomic + prefix: + description: An optional identifier to prepend to each key + in the ConfigMap. Must be a C_IDENTIFIER. + type: string + secretRef: + description: The Secret to select from + 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 + optional: + description: Specify whether the Secret must be defined + type: boolean + type: object + x-kubernetes-map-type: atomic + type: object + type: array + envs: + items: + description: EnvVar represents an environment variable present + in a Container. + properties: + name: + description: Name of the environment variable. Must be a + C_IDENTIFIER. + type: string + value: + description: 'Variable references $(VAR_NAME) are expanded + using the previously defined environment variables in + the container and any service environment variables. If + a variable cannot be resolved, the reference in the input + string will be unchanged. Double $$ are reduced to a single + $, which allows for escaping the $(VAR_NAME) syntax: i.e. + "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)". + Escaped references will never be expanded, regardless + of whether the variable exists or not. Defaults to "".' + type: string + valueFrom: + description: Source for the environment variable's value. + Cannot be used if value is not empty. + properties: + configMapKeyRef: + description: Selects a key of a ConfigMap. + properties: + key: + description: The key to select. + type: string + 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 + optional: + description: Specify whether the ConfigMap or its + key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + fieldRef: + description: 'Selects a field of the pod: supports metadata.name, + metadata.namespace, `metadata.labels['''']`, + `metadata.annotations['''']`, spec.nodeName, + spec.serviceAccountName, status.hostIP, status.podIP, + status.podIPs.' + properties: + apiVersion: + description: Version of the schema the FieldPath + is written in terms of, defaults to "v1". + type: string + fieldPath: + description: Path of the field to select in the + specified API version. + type: string + required: + - fieldPath + type: object + x-kubernetes-map-type: atomic + resourceFieldRef: + description: 'Selects a resource of the container: only + resources limits and requests (limits.cpu, limits.memory, + limits.ephemeral-storage, requests.cpu, requests.memory + and requests.ephemeral-storage) are currently supported.' + properties: + containerName: + description: 'Container name: required for volumes, + optional for env vars' + type: string + divisor: + anyOf: + - type: integer + - type: string + description: Specifies the output format of the + exposed resources, defaults to "1" + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + description: 'Required: resource to select' + type: string + required: + - resource + type: object + x-kubernetes-map-type: atomic + secretKeyRef: + description: Selects a key of a secret in the pod's + namespace + properties: + key: + description: The key of the secret to select from. Must + be a valid secret key. + type: string + 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 + optional: + description: Specify whether the Secret or its key + must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: object + required: + - name + type: object + type: array + image: + type: string + type: object + type: object + status: + properties: + conditions: + items: + description: "Condition contains details for one aspect of the current + state of this API Resource. --- This struct is intended for direct + use as an array at the field path .status.conditions. For example, + type FooStatus struct{ // Represents the observations of a foo's + current state. // Known .status.conditions.type are: \"Available\", + \"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge + // +listType=map // +listMapKey=type Conditions []metav1.Condition + `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" + protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }" + properties: + lastTransitionTime: + description: lastTransitionTime is the last time the condition + transitioned from one status to another. This should be when + the underlying condition changed. If that is not known, then + using the time when the API field changed is acceptable. + format: date-time + type: string + message: + description: message is a human readable message indicating + details about the transition. This may be an empty string. + maxLength: 32768 + type: string + observedGeneration: + description: observedGeneration represents the .metadata.generation + that the condition was set based upon. For instance, if .metadata.generation + is currently 12, but the .status.conditions[x].observedGeneration + is 9, the condition is out of date with respect to the current + state of the instance. + format: int64 + minimum: 0 + type: integer + reason: + description: reason contains a programmatic identifier indicating + the reason for the condition's last transition. Producers + of specific condition types may define expected values and + meanings for this field, and whether the values are considered + a guaranteed API. The value should be a CamelCase string. + This field may not be empty. + maxLength: 1024 + minLength: 1 + pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ + type: string + status: + description: status of the condition, one of True, False, Unknown. + enum: + - "True" + - "False" + - Unknown + type: string + type: + description: type of condition in CamelCase or in foo.example.com/CamelCase. + --- Many .condition.type values are consistent across resources + like Available, but because arbitrary conditions can be useful + (see .node.status.conditions), the ability to deconflict is + important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) + maxLength: 316 + pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ + type: string + required: + - lastTransitionTime + - message + - reason + - status + - type + type: object + type: array + type: object + type: object + served: true + storage: true + subresources: + status: {} +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.9.2 + creationTimestamp: null + labels: + cluster.x-k8s.io/provider: infrastructure-elemental + cluster.x-k8s.io/v1beta1: v1beta1 + release-name: '{{ .Release.Name }}' + name: managedosversionchannels.elemental.cattle.io +spec: + group: elemental.cattle.io + names: + kind: ManagedOSVersionChannel + listKind: ManagedOSVersionChannelList + plural: managedosversionchannels + singular: managedosversionchannel + scope: Namespaced + versions: + - name: v1beta1 + 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://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + properties: + options: + x-kubernetes-preserve-unknown-fields: true + syncInterval: + type: string + type: + type: string + upgradeContainer: + description: ContainerSpec is a simplified container template. + properties: + args: + items: + type: string + type: array + command: + items: + type: string + type: array + envFrom: + items: + description: EnvFromSource represents the source of a set of + ConfigMaps + properties: + configMapRef: + description: The ConfigMap to select from + 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 + optional: + description: Specify whether the ConfigMap must be defined + type: boolean + type: object + x-kubernetes-map-type: atomic + prefix: + description: An optional identifier to prepend to each key + in the ConfigMap. Must be a C_IDENTIFIER. + type: string + secretRef: + description: The Secret to select from + 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 + optional: + description: Specify whether the Secret must be defined + type: boolean + type: object + x-kubernetes-map-type: atomic + type: object + type: array + envs: + items: + description: EnvVar represents an environment variable present + in a Container. + properties: + name: + description: Name of the environment variable. Must be a + C_IDENTIFIER. + type: string + value: + description: 'Variable references $(VAR_NAME) are expanded + using the previously defined environment variables in + the container and any service environment variables. If + a variable cannot be resolved, the reference in the input + string will be unchanged. Double $$ are reduced to a single + $, which allows for escaping the $(VAR_NAME) syntax: i.e. + "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)". + Escaped references will never be expanded, regardless + of whether the variable exists or not. Defaults to "".' + type: string + valueFrom: + description: Source for the environment variable's value. + Cannot be used if value is not empty. + properties: + configMapKeyRef: + description: Selects a key of a ConfigMap. + properties: + key: + description: The key to select. + type: string + 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 + optional: + description: Specify whether the ConfigMap or its + key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + fieldRef: + description: 'Selects a field of the pod: supports metadata.name, + metadata.namespace, `metadata.labels['''']`, + `metadata.annotations['''']`, spec.nodeName, + spec.serviceAccountName, status.hostIP, status.podIP, + status.podIPs.' + properties: + apiVersion: + description: Version of the schema the FieldPath + is written in terms of, defaults to "v1". + type: string + fieldPath: + description: Path of the field to select in the + specified API version. + type: string + required: + - fieldPath + type: object + x-kubernetes-map-type: atomic + resourceFieldRef: + description: 'Selects a resource of the container: only + resources limits and requests (limits.cpu, limits.memory, + limits.ephemeral-storage, requests.cpu, requests.memory + and requests.ephemeral-storage) are currently supported.' + properties: + containerName: + description: 'Container name: required for volumes, + optional for env vars' + type: string + divisor: + anyOf: + - type: integer + - type: string + description: Specifies the output format of the + exposed resources, defaults to "1" + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + description: 'Required: resource to select' + type: string + required: + - resource + type: object + x-kubernetes-map-type: atomic + secretKeyRef: + description: Selects a key of a secret in the pod's + namespace + properties: + key: + description: The key of the secret to select from. Must + be a valid secret key. + type: string + 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 + optional: + description: Specify whether the Secret or its key + must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: object + required: + - name + type: object + type: array + image: + type: string + type: object + type: object + status: + properties: + conditions: + description: Conditions describe the state of the managed OS version + object. + items: + description: "Condition contains details for one aspect of the current + state of this API Resource. --- This struct is intended for direct + use as an array at the field path .status.conditions. For example, + type FooStatus struct{ // Represents the observations of a foo's + current state. // Known .status.conditions.type are: \"Available\", + \"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge + // +listType=map // +listMapKey=type Conditions []metav1.Condition + `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" + protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }" + properties: + lastTransitionTime: + description: lastTransitionTime is the last time the condition + transitioned from one status to another. This should be when + the underlying condition changed. If that is not known, then + using the time when the API field changed is acceptable. + format: date-time + type: string + message: + description: message is a human readable message indicating + details about the transition. This may be an empty string. + maxLength: 32768 + type: string + observedGeneration: + description: observedGeneration represents the .metadata.generation + that the condition was set based upon. For instance, if .metadata.generation + is currently 12, but the .status.conditions[x].observedGeneration + is 9, the condition is out of date with respect to the current + state of the instance. + format: int64 + minimum: 0 + type: integer + reason: + description: reason contains a programmatic identifier indicating + the reason for the condition's last transition. Producers + of specific condition types may define expected values and + meanings for this field, and whether the values are considered + a guaranteed API. The value should be a CamelCase string. + This field may not be empty. + maxLength: 1024 + minLength: 1 + pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ + type: string + status: + description: status of the condition, one of True, False, Unknown. + enum: + - "True" + - "False" + - Unknown + type: string + type: + description: type of condition in CamelCase or in foo.example.com/CamelCase. + --- Many .condition.type values are consistent across resources + like Available, but because arbitrary conditions can be useful + (see .node.status.conditions), the ability to deconflict is + important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) + maxLength: 316 + pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ + type: string + required: + - lastTransitionTime + - message + - reason + - status + - type + type: object + type: array + lastSyncedTime: + description: LastSyncedTime is the timestamp of the last synchronization + format: date-time + type: string + type: object + type: object + served: true + storage: true + subresources: + status: {} +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.9.2 + creationTimestamp: null + labels: + cluster.x-k8s.io/provider: infrastructure-elemental + cluster.x-k8s.io/v1beta1: v1beta1 + release-name: '{{ .Release.Name }}' + name: managedosversions.elemental.cattle.io +spec: + group: elemental.cattle.io + names: + kind: ManagedOSVersion + listKind: ManagedOSVersionList + plural: managedosversions + singular: managedosversion + scope: Namespaced + versions: + - name: v1beta1 + 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://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + properties: + metadata: + x-kubernetes-preserve-unknown-fields: true + minVersion: + type: string + type: + type: string + upgradeContainer: + description: ContainerSpec is a simplified container template. + properties: + args: + items: + type: string + type: array + command: + items: + type: string + type: array + envFrom: + items: + description: EnvFromSource represents the source of a set of + ConfigMaps + properties: + configMapRef: + description: The ConfigMap to select from + 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 + optional: + description: Specify whether the ConfigMap must be defined + type: boolean + type: object + x-kubernetes-map-type: atomic + prefix: + description: An optional identifier to prepend to each key + in the ConfigMap. Must be a C_IDENTIFIER. + type: string + secretRef: + description: The Secret to select from + 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 + optional: + description: Specify whether the Secret must be defined + type: boolean + type: object + x-kubernetes-map-type: atomic + type: object + type: array + envs: + items: + description: EnvVar represents an environment variable present + in a Container. + properties: + name: + description: Name of the environment variable. Must be a + C_IDENTIFIER. + type: string + value: + description: 'Variable references $(VAR_NAME) are expanded + using the previously defined environment variables in + the container and any service environment variables. If + a variable cannot be resolved, the reference in the input + string will be unchanged. Double $$ are reduced to a single + $, which allows for escaping the $(VAR_NAME) syntax: i.e. + "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)". + Escaped references will never be expanded, regardless + of whether the variable exists or not. Defaults to "".' + type: string + valueFrom: + description: Source for the environment variable's value. + Cannot be used if value is not empty. + properties: + configMapKeyRef: + description: Selects a key of a ConfigMap. + properties: + key: + description: The key to select. + type: string + 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 + optional: + description: Specify whether the ConfigMap or its + key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + fieldRef: + description: 'Selects a field of the pod: supports metadata.name, + metadata.namespace, `metadata.labels['''']`, + `metadata.annotations['''']`, spec.nodeName, + spec.serviceAccountName, status.hostIP, status.podIP, + status.podIPs.' + properties: + apiVersion: + description: Version of the schema the FieldPath + is written in terms of, defaults to "v1". + type: string + fieldPath: + description: Path of the field to select in the + specified API version. + type: string + required: + - fieldPath + type: object + x-kubernetes-map-type: atomic + resourceFieldRef: + description: 'Selects a resource of the container: only + resources limits and requests (limits.cpu, limits.memory, + limits.ephemeral-storage, requests.cpu, requests.memory + and requests.ephemeral-storage) are currently supported.' + properties: + containerName: + description: 'Container name: required for volumes, + optional for env vars' + type: string + divisor: + anyOf: + - type: integer + - type: string + description: Specifies the output format of the + exposed resources, defaults to "1" + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + description: 'Required: resource to select' + type: string + required: + - resource + type: object + x-kubernetes-map-type: atomic + secretKeyRef: + description: Selects a key of a secret in the pod's + namespace + properties: + key: + description: The key of the secret to select from. Must + be a valid secret key. + type: string + 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 + optional: + description: Specify whether the Secret or its key + must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: object + required: + - name + type: object + type: array + image: + type: string + type: object + version: + type: string + type: object + status: + properties: + conditions: + items: + properties: + lastTransitionTime: + description: Last time the condition transitioned from one status + to another. + type: string + lastUpdateTime: + description: The last time this condition was updated. + type: string + message: + description: Human-readable message indicating details about + last transition + type: string + reason: + description: The reason 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 cluster condition. + type: string + required: + - status + - type + type: object + type: array + display: + properties: + readyClusters: + type: string + state: + type: string + type: object + maxNew: + type: integer + maxUnavailable: + type: integer + maxUnavailablePartitions: + type: integer + newlyCreated: + type: integer + observedGeneration: + format: int64 + type: integer + partitions: + items: + properties: + count: + type: integer + maxUnavailable: + type: integer + name: + type: string + summary: + properties: + desiredReady: + type: integer + errApplied: + type: integer + modified: + type: integer + nonReadyResources: + items: + properties: + bundleState: + type: string + message: + type: string + modifiedStatus: + items: + properties: + apiVersion: + type: string + delete: + type: boolean + kind: + type: string + missing: + type: boolean + name: + type: string + namespace: + type: string + patch: + type: string + type: object + type: array + name: + type: string + nonReadyStatus: + items: + properties: + apiVersion: + type: string + kind: + type: string + name: + type: string + namespace: + type: string + summary: + properties: + error: + type: boolean + message: + items: + type: string + type: array + state: + type: string + transitioning: + type: boolean + type: object + uid: + 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: array + type: object + type: array + notReady: + type: integer + outOfSync: + type: integer + pending: + type: integer + ready: + type: integer + waitApplied: + type: integer + required: + - desiredReady + - ready + type: object + unavailable: + type: integer + type: object + type: array + resourceKey: + items: + properties: + apiVersion: + type: string + kind: + type: string + name: + type: string + namespace: + type: string + type: object + type: array + summary: + properties: + desiredReady: + type: integer + errApplied: + type: integer + modified: + type: integer + nonReadyResources: + items: + properties: + bundleState: + type: string + message: + type: string + modifiedStatus: + items: + properties: + apiVersion: + type: string + delete: + type: boolean + kind: + type: string + missing: + type: boolean + name: + type: string + namespace: + type: string + patch: + type: string + type: object + type: array + name: + type: string + nonReadyStatus: + items: + properties: + apiVersion: + type: string + kind: + type: string + name: + type: string + namespace: + type: string + summary: + properties: + error: + type: boolean + message: + items: + type: string + type: array + state: + type: string + transitioning: + type: boolean + type: object + uid: + 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: array + type: object + type: array + notReady: + type: integer + outOfSync: + type: integer + pending: + type: integer + ready: + type: integer + waitApplied: + type: integer + required: + - desiredReady + - ready + type: object + unavailable: + type: integer + unavailablePartitions: + type: integer + required: + - maxUnavailable + - maxUnavailablePartitions + - observedGeneration + - unavailable + - unavailablePartitions + type: object + type: object + served: true + storage: true + subresources: + status: {} +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.9.2 + creationTimestamp: null + labels: + cluster.x-k8s.io/provider: infrastructure-elemental + cluster.x-k8s.io/v1beta1: v1beta1 + release-name: '{{ .Release.Name }}' + name: seedimages.elemental.cattle.io +spec: + group: elemental.cattle.io + names: + kind: SeedImage + listKind: SeedImageList + plural: seedimages + singular: seedimage + scope: Namespaced + versions: + - name: v1beta1 + 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://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + properties: + baseImage: + description: BaseImg the base elemental image used to build the seed + image. + type: string + cleanupAfterMinutes: + default: 60 + description: LifetimeMinutes the time at which the built seed image + will be cleaned up. If when the lifetime elapses the built image + is being downloaded, the active download will be completed before + removing the built image. Default is 60 minutes, set to 0 to disable. + format: int32 + type: integer + cloud-config: + description: CloudConfig contains cloud-config data to be put in the + generated iso. + x-kubernetes-preserve-unknown-fields: true + registrationRef: + description: MachineRegistrationRef a reference to the related MachineRegistration. + properties: + apiVersion: + description: API version of the referent. + type: string + fieldPath: + description: 'If referring to a piece of an object instead of + an entire object, this string should contain a valid JSON/Go + field access statement, such as desiredState.manifest.containers[2]. + For example, if the object reference is to a container within + a pod, this would take on a value like: "spec.containers{name}" + (where "name" refers to the name of the container that triggered + the event) or if no container name is specified "spec.containers[2]" + (container with index 2 in this pod). This syntax is chosen + only to have some well-defined way of referencing a part of + an object. TODO: this design is not final and this field is + subject to change in the future.' + type: string + kind: + description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' + type: string + namespace: + description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/' + type: string + resourceVersion: + description: 'Specific resourceVersion to which this reference + is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency' + type: string + uid: + description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids' + type: string + type: object + x-kubernetes-map-type: atomic + retriggerBuild: + description: RetriggerBuild triggers to build again a cleaned up seed + image. + type: boolean + required: + - registrationRef + type: object + status: + properties: + conditions: + description: Conditions describe the state of the machine registration + object. + items: + description: "Condition contains details for one aspect of the current + state of this API Resource. --- This struct is intended for direct + use as an array at the field path .status.conditions. For example, + type FooStatus struct{ // Represents the observations of a foo's + current state. // Known .status.conditions.type are: \"Available\", + \"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge + // +listType=map // +listMapKey=type Conditions []metav1.Condition + `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" + protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }" + properties: + lastTransitionTime: + description: lastTransitionTime is the last time the condition + transitioned from one status to another. This should be when + the underlying condition changed. If that is not known, then + using the time when the API field changed is acceptable. + format: date-time + type: string + message: + description: message is a human readable message indicating + details about the transition. This may be an empty string. + maxLength: 32768 + type: string + observedGeneration: + description: observedGeneration represents the .metadata.generation + that the condition was set based upon. For instance, if .metadata.generation + is currently 12, but the .status.conditions[x].observedGeneration + is 9, the condition is out of date with respect to the current + state of the instance. + format: int64 + minimum: 0 + type: integer + reason: + description: reason contains a programmatic identifier indicating + the reason for the condition's last transition. Producers + of specific condition types may define expected values and + meanings for this field, and whether the values are considered + a guaranteed API. The value should be a CamelCase string. + This field may not be empty. + maxLength: 1024 + minLength: 1 + pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ + type: string + status: + description: status of the condition, one of True, False, Unknown. + enum: + - "True" + - "False" + - Unknown + type: string + type: + description: type of condition in CamelCase or in foo.example.com/CamelCase. + --- Many .condition.type values are consistent across resources + like Available, but because arbitrary conditions can be useful + (see .node.status.conditions), the ability to deconflict is + important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) + maxLength: 316 + pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ + type: string + required: + - lastTransitionTime + - message + - reason + - status + - type + type: object + type: array + downloadToken: + description: DownloadToken a token to identify the seed image to download. + type: string + downloadURL: + description: DownloadURL the URL from which the SeedImage can be downloaded + once built. + type: string + state: + description: State reflect the state of the seed image build process. + enum: + - Initialized + - Started + - Completed + - Failed + - NotStarted + type: string + type: object + type: object + served: true + storage: true + subresources: + status: {} diff --git a/charts/elemental/103.0.0+up1.3.4/Chart.yaml b/charts/elemental/103.0.0+up1.3.4/Chart.yaml new file mode 100644 index 0000000000..d40c30bd90 --- /dev/null +++ b/charts/elemental/103.0.0+up1.3.4/Chart.yaml @@ -0,0 +1,20 @@ +annotations: + catalog.cattle.io/auto-install: elemental-crd=match + catalog.cattle.io/certified: rancher + catalog.cattle.io/display-name: Elemental + catalog.cattle.io/kube-version: '>= 1.23.0-0' + catalog.cattle.io/namespace: cattle-elemental-system + catalog.cattle.io/os: linux + catalog.cattle.io/permits-os: linux + catalog.cattle.io/provides-gvr: elemental.cattle.io/v1beta1 + catalog.cattle.io/rancher-version: '>= 2.8.0-0 < 2.9.0-0' + catalog.cattle.io/release-name: elemental-operator + catalog.cattle.io/scope: management + catalog.cattle.io/type: cluster-tool + catalog.cattle.io/upstream-version: 1.3.4 +apiVersion: v2 +appVersion: 1.3.4 +description: Elemental provides Cloud Native OS Management for Cluster Nodes. +icon: https://raw.githubusercontent.com/rancher/elemental/main/logo/icon-elemental.svg +name: elemental +version: 103.0.0+up1.3.4 diff --git a/charts/elemental/103.0.0+up1.3.4/README.md b/charts/elemental/103.0.0+up1.3.4/README.md new file mode 100644 index 0000000000..bf7b83ea6c --- /dev/null +++ b/charts/elemental/103.0.0+up1.3.4/README.md @@ -0,0 +1,5 @@ +# Elemental Operator Helm Chart + +This chart bootstraps an elemental-operator deployment on a [Rancher Manager](https://rancher.com/docs/rancher/) cluster using the [Helm](https://helm.sh) package manager. + +Check out the [Elemental Operator Helm Chart documentation](https://elemental.docs.rancher.com/elementaloperatorchart-reference/) in the official [Elemental guide](https://elemental.docs.rancher.com/). diff --git a/charts/elemental/103.0.0+up1.3.4/app-readme.md b/charts/elemental/103.0.0+up1.3.4/app-readme.md new file mode 100644 index 0000000000..c66b1bbb04 --- /dev/null +++ b/charts/elemental/103.0.0+up1.3.4/app-readme.md @@ -0,0 +1,5 @@ +# Elemental + +Elemental brings to Rancher the ability to install and manage the OS of bare metal and virtualized machines. + +For more information on how to deploy an Elemental Cluster, follow the [official documentation](https://elemental.docs.rancher.com/). diff --git a/charts/elemental/103.0.0+up1.3.4/questions.yaml b/charts/elemental/103.0.0+up1.3.4/questions.yaml new file mode 100644 index 0000000000..7aa97a85c2 --- /dev/null +++ b/charts/elemental/103.0.0+up1.3.4/questions.yaml @@ -0,0 +1,27 @@ +questions: +- variable: channel.defaultChannel + default: "true" + description: "Provide an Elemental OS Channel container image" + label: Elemental OS Channel + type: boolean + show_subquestion_if: true + group: "Elemental OS Channel" + subquestions: + - variable: channel.repository + default: registry.suse.com/rancher/elemental-teal-channel + description: "Specify Elemental OS channel repository" + type: string + label: Elemental OS Channel Repository + group: "Elemental OS Channel" + - variable: channel.tag + default: "1.3.4" + description: "Specify Elemental OS channel tag" + type: string + label: "Elemental OS Channel Tag" + group: "Elemental OS Channel" +- variable: debug + default: "false" + description: "Enable debug logging in the Elemental operator" + type: boolean + label: "Enable Debug Logging" + group: "Logging" diff --git a/charts/elemental/103.0.0+up1.3.4/templates/_helpers.tpl b/charts/elemental/103.0.0+up1.3.4/templates/_helpers.tpl new file mode 100644 index 0000000000..ee1e6fe7d8 --- /dev/null +++ b/charts/elemental/103.0.0+up1.3.4/templates/_helpers.tpl @@ -0,0 +1,17 @@ +{{- define "system_default_registry" -}} +{{- if .Values.global.cattle.systemDefaultRegistry -}} +{{- printf "%s/" .Values.global.cattle.systemDefaultRegistry -}} +{{- else -}} +{{- "" -}} +{{- end -}} +{{- end -}} + +{{- define "registry_url" -}} +{{- if .Values.global.cattle.systemDefaultRegistry -}} +{{ include "system_default_registry" . }} +{{- else if .Values.registryUrl -}} +{{- printf "%s/" .Values.registryUrl -}} +{{- else -}} +{{- "" -}} +{{- end -}} +{{- end -}} diff --git a/charts/elemental/103.0.0+up1.3.4/templates/apiservice.yaml b/charts/elemental/103.0.0+up1.3.4/templates/apiservice.yaml new file mode 100644 index 0000000000..73ae2e505f --- /dev/null +++ b/charts/elemental/103.0.0+up1.3.4/templates/apiservice.yaml @@ -0,0 +1,9 @@ +kind: APIService +apiVersion: management.cattle.io/v3 +metadata: + name: {{ .Release.Name }} +spec: + secretName: elemental-operator + secretNamespace: {{ .Release.Namespace }} + pathPrefixes: + - /elemental/ diff --git a/charts/elemental/103.0.0+up1.3.4/templates/capi_rbac.yaml b/charts/elemental/103.0.0+up1.3.4/templates/capi_rbac.yaml new file mode 100644 index 0000000000..8692f75269 --- /dev/null +++ b/charts/elemental/103.0.0+up1.3.4/templates/capi_rbac.yaml @@ -0,0 +1,10 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: elemental-capi-role + labels: + cluster.x-k8s.io/aggregate-to-manager: "true" +rules: + - apiGroups: ["elemental.cattle.io"] + resources: ["*"] + verbs: ["*"] diff --git a/charts/elemental/103.0.0+up1.3.4/templates/channel.yaml b/charts/elemental/103.0.0+up1.3.4/templates/channel.yaml new file mode 100644 index 0000000000..b85c0c0852 --- /dev/null +++ b/charts/elemental/103.0.0+up1.3.4/templates/channel.yaml @@ -0,0 +1,11 @@ +{{ if and .Values.channel .Values.channel.repository .Values.channel.tag }} +apiVersion: elemental.cattle.io/v1beta1 +kind: ManagedOSVersionChannel +metadata: + name: elemental-os-channel + namespace: fleet-default +spec: + options: + image: {{ .Values.channel.repository }}:{{ .Values.channel.tag }} + type: custom +{{ end }} diff --git a/charts/elemental/103.0.0+up1.3.4/templates/cluster_role.yaml b/charts/elemental/103.0.0+up1.3.4/templates/cluster_role.yaml new file mode 100644 index 0000000000..718f90a055 --- /dev/null +++ b/charts/elemental/103.0.0+up1.3.4/templates/cluster_role.yaml @@ -0,0 +1,267 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + creationTimestamp: null + name: '{{ .Release.Name }}' +rules: +- apiGroups: + - "" + resources: + - configmaps + verbs: + - create + - delete + - get + - list + - patch + - update + - watch +- apiGroups: + - "" + resources: + - events + verbs: + - create + - patch +- apiGroups: + - "" + resources: + - pods + verbs: + - create + - delete + - get + - list + - patch + - update + - watch +- apiGroups: + - "" + resources: + - pods/log + verbs: + - get +- apiGroups: + - "" + resources: + - pods/status + verbs: + - get +- apiGroups: + - "" + resources: + - secrets + verbs: + - create + - delete + - get + - list + - patch + - update + - watch +- apiGroups: + - "" + resources: + - serviceaccounts + verbs: + - create + - delete + - get + - list + - watch +- apiGroups: + - "" + resources: + - services + verbs: + - create + - delete + - get + - list + - patch + - update + - watch +- apiGroups: + - "" + resources: + - services/status + verbs: + - get +- apiGroups: + - cluster.x-k8s.io + resources: + - machines + verbs: + - get + - list + - watch +- apiGroups: + - elemental.cattle.io + resources: + - machineinventories + verbs: + - create + - delete + - get + - list + - patch + - update + - watch +- apiGroups: + - elemental.cattle.io + resources: + - machineinventories/status + verbs: + - get + - patch + - update +- apiGroups: + - elemental.cattle.io + resources: + - machineinventoryselectors + verbs: + - create + - delete + - get + - list + - patch + - update + - watch +- apiGroups: + - elemental.cattle.io + resources: + - machineinventoryselectors/status + verbs: + - get + - list + - patch + - update +- apiGroups: + - elemental.cattle.io + resources: + - machineregistrations + verbs: + - create + - delete + - get + - list + - patch + - update + - watch +- apiGroups: + - elemental.cattle.io + resources: + - machineregistrations/status + verbs: + - get + - patch + - update +- apiGroups: + - elemental.cattle.io + resources: + - managedosimages + verbs: + - create + - delete + - get + - list + - patch + - update + - watch +- apiGroups: + - elemental.cattle.io + resources: + - managedosimages/status + verbs: + - get + - list + - patch + - update +- apiGroups: + - elemental.cattle.io + resources: + - managedosversionchannels + verbs: + - create + - delete + - get + - list + - patch + - update + - watch +- apiGroups: + - elemental.cattle.io + resources: + - managedosversionchannels/status + verbs: + - get + - list + - patch + - update +- apiGroups: + - elemental.cattle.io + resources: + - managedosversions + verbs: + - create + - delete + - get + - list + - patch + - update + - watch +- apiGroups: + - elemental.cattle.io + resources: + - managedosversions/status + verbs: + - get + - patch + - update +- apiGroups: + - elemental.cattle.io + resources: + - seedimages + verbs: + - create + - delete + - get + - list + - patch + - update + - watch +- apiGroups: + - elemental.cattle.io + resources: + - seedimages/status + verbs: + - get + - patch + - update +- apiGroups: + - fleet.cattle.io + resources: + - bundles + verbs: + - create + - get + - list + - watch +- apiGroups: + - management.cattle.io + resources: + - settings + verbs: + - get + - list + - watch +- apiGroups: + - rbac.authorization.k8s.io + resources: + - rolebindings + - roles + verbs: + - create + - delete + - list + - watch diff --git a/charts/elemental/103.0.0+up1.3.4/templates/cluster_role_binding.yaml b/charts/elemental/103.0.0+up1.3.4/templates/cluster_role_binding.yaml new file mode 100644 index 0000000000..e68c7bc96b --- /dev/null +++ b/charts/elemental/103.0.0+up1.3.4/templates/cluster_role_binding.yaml @@ -0,0 +1,13 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: {{ .Release.Name }} +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: {{ .Release.Name }} +subjects: +- kind: ServiceAccount + name: {{ .Release.Name }} + namespace: {{.Release.Namespace}} + diff --git a/charts/elemental/103.0.0+up1.3.4/templates/deployment.yaml b/charts/elemental/103.0.0+up1.3.4/templates/deployment.yaml new file mode 100644 index 0000000000..576d58d596 --- /dev/null +++ b/charts/elemental/103.0.0+up1.3.4/templates/deployment.yaml @@ -0,0 +1,50 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ .Release.Name }} +spec: + replicas: {{ .Values.replicas }} + selector: + matchLabels: + app: elemental-operator + template: + metadata: + labels: + app: elemental-operator + spec: + containers: + - env: + - name: NO_PROXY + value: {{ .Values.noProxy }} + {{- if .Values.proxy }} + - name: HTTP_PROXY + value: {{ .Values.proxy }} + - name: HTTPS_PROXY + value: {{ .Values.proxy }} + {{- end }} + name: {{ .Release.Name }} + imagePullPolicy: "{{ .Values.image.imagePullPolicy }}" + image: {{ template "registry_url" . }}{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }} + args: + - operator + {{- if .Values.debug }} + - --v=5 + - --debug + {{- end }} + - --namespace + - {{ .Release.Namespace }} + - --operator-image + - {{ template "registry_url" . }}{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }} + - --seedimage-image + - {{ template "registry_url" . }}{{ .Values.seedImage.repository }}:{{ .Values.seedImage.tag | default .Chart.AppVersion }} + - --seedimage-image-pullpolicy + - {{ .Values.seedImage.imagePullPolicy}} + serviceAccountName: {{ .Release.Name }} + {{- with .Values.tolerations }} + tolerations: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.nodeSelector }} + nodeSelector: + {{- toYaml . | nindent 8 }} + {{- end }} diff --git a/charts/elemental/103.0.0+up1.3.4/templates/globalrole.yaml b/charts/elemental/103.0.0+up1.3.4/templates/globalrole.yaml new file mode 100644 index 0000000000..323cf2ead8 --- /dev/null +++ b/charts/elemental/103.0.0+up1.3.4/templates/globalrole.yaml @@ -0,0 +1,16 @@ +apiVersion: management.cattle.io/v3 +builtin: false +description: "Elemental Administrator Role" +displayName: Elemental Administrator +kind: GlobalRole +metadata: + labels: + cattle.io/creator: norman + name: {{ .Release.Name }} +rules: +- apiGroups: + - elemental.cattle.io + resources: + - '*' + verbs: + - '*' diff --git a/charts/elemental/103.0.0+up1.3.4/templates/serviceaccount.yaml b/charts/elemental/103.0.0+up1.3.4/templates/serviceaccount.yaml new file mode 100644 index 0000000000..cb203d6f6c --- /dev/null +++ b/charts/elemental/103.0.0+up1.3.4/templates/serviceaccount.yaml @@ -0,0 +1,4 @@ +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ .Release.Name }} diff --git a/charts/elemental/103.0.0+up1.3.4/templates/validate-install-crd.yaml b/charts/elemental/103.0.0+up1.3.4/templates/validate-install-crd.yaml new file mode 100644 index 0000000000..c5c4aded4f --- /dev/null +++ b/charts/elemental/103.0.0+up1.3.4/templates/validate-install-crd.yaml @@ -0,0 +1,25 @@ +{{ if gt (len (lookup "rbac.authorization.k8s.io/v1" "ClusterRole" "" "")) 0 }} + {{ $apis := dict + "elemental.cattle.io/v1beta1/MachineInventory" "machineinventories" + "elemental.cattle.io/v1beta1/MachineInventorySelector" "machineinventoryselectors" + "elemental.cattle.io/v1beta1/MachineInventorySelectorTemplate" "machineinventoryselectortemplates" + "elemental.cattle.io/v1beta1/MachineRegistration" "machineregistrations" + "elemental.cattle.io/v1beta1/ManagedOSImage" "managedosimages" + "elemental.cattle.io/v1beta1/ManagedOSVersionChannel" "managedosversionchannels" + "elemental.cattle.io/v1beta1/ManagedOSVersion" "managedosversions" + "elemental.cattle.io/v1beta1/SeedImage" "seedimages" + }} + {{- range $api, $crd := $apis -}} + {{- if not ($.Capabilities.APIVersions.Has $api) -}} + {{- required "Required CRDs are missing. Please install the corresponding CRD chart before installing this chart." "" -}} + {{- end -}} + {{- $crdobj := lookup "apiextensions.k8s.io/v1" "CustomResourceDefinition" "" (print $crd ".elemental.cattle.io") -}} + {{- if not $crdobj -}} + {{- print "Cannot lookup " $crd ".elemental.cattle.io crd object" | fail -}} + {{- end -}} + {{- $crdrelease := index $crdobj.metadata.annotations "meta.helm.sh/release-name" -}} + {{- if eq $crdrelease $.Release.Name -}} + {{- required "Elemental CRDs should be moved to the new elemental-operator-crds chart before upgrading this operator." "" -}} + {{- end -}} + {{- end -}} +{{- end -}} diff --git a/charts/elemental/103.0.0+up1.3.4/values.yaml b/charts/elemental/103.0.0+up1.3.4/values.yaml new file mode 100644 index 0000000000..6051eb3de5 --- /dev/null +++ b/charts/elemental/103.0.0+up1.3.4/values.yaml @@ -0,0 +1,42 @@ +image: + empty: rancher/pause:3.1 + repository: "rancher/mirrored-elemental-operator" + tag: "1.3.4" + imagePullPolicy: IfNotPresent + +seedImage: + repository: "rancher/mirrored-elemental-seedimage-builder" + tag: "1.3.4" + imagePullPolicy: IfNotPresent + +channel: + repository: "" + tag: "" + +# number of operator replicas to deploy +replicas: 1 + +# http[s] proxy server +# proxy: http://@:: + +# comma separated list of domains or ip addresses that will not use the proxy +noProxy: 127.0.0.0/8,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16,.svc,.cluster.local + +global: + cattle: + systemDefaultRegistry: "" + +# used only if systemDefaultRegistry is empty +registryUrl: "" + +# enable debug output for operator +debug: false + +nodeSelector: + kubernetes.io/os: linux + +tolerations: + - key: cattle.io/os + operator: "Equal" + value: "linux" + effect: NoSchedule diff --git a/index.yaml b/index.yaml index f45cbca88f..559ab3d20b 100755 --- a/index.yaml +++ b/index.yaml @@ -1,5 +1,46 @@ apiVersion: v1 entries: + elemental: + - annotations: + catalog.cattle.io/auto-install: elemental-crd=match + catalog.cattle.io/certified: rancher + catalog.cattle.io/display-name: Elemental + catalog.cattle.io/kube-version: '>= 1.23.0-0' + catalog.cattle.io/namespace: cattle-elemental-system + catalog.cattle.io/os: linux + catalog.cattle.io/permits-os: linux + catalog.cattle.io/provides-gvr: elemental.cattle.io/v1beta1 + catalog.cattle.io/rancher-version: '>= 2.8.0-0 < 2.9.0-0' + catalog.cattle.io/release-name: elemental-operator + catalog.cattle.io/scope: management + catalog.cattle.io/type: cluster-tool + catalog.cattle.io/upstream-version: 1.3.4 + apiVersion: v2 + appVersion: 1.3.4 + created: "2023-10-09T11:59:28.169826066+02:00" + description: Elemental provides Cloud Native OS Management for Cluster Nodes. + digest: 96de208abc03a5506206325ed4f80de06abd1dd8520a98ac48d5673bd780c673 + icon: https://raw.githubusercontent.com/rancher/elemental/main/logo/icon-elemental.svg + name: elemental + urls: + - assets/elemental/elemental-103.0.0+up1.3.4.tgz + version: 103.0.0+up1.3.4 + elemental-crd: + - annotations: + catalog.cattle.io/certified: rancher + catalog.cattle.io/hidden: "true" + catalog.cattle.io/namespace: cattle-elemental-system + catalog.cattle.io/release-name: elemental-operator-crds + apiVersion: v2 + appVersion: 1.3.4 + created: "2023-10-09T11:59:29.728109125+02:00" + description: A Helm chart for deploying Rancher Elemental Operator CRDs + digest: 832419128610fa1055f23b5b4791c9e6ed5c6178f249435ea0671359a6327e5e + name: elemental-crd + type: application + urls: + - assets/elemental-crd/elemental-crd-103.0.0+up1.3.4.tgz + version: 103.0.0+up1.3.4 epinio: - annotations: artifacthub.io/license: Apache-2.0 From ca60c3d356c5b1facc9af764cdd6d6bc2e845d2e Mon Sep 17 00:00:00 2001 From: Francesco Giudici Date: Mon, 9 Oct 2023 12:03:41 +0200 Subject: [PATCH 4/7] update release.yaml Signed-off-by: Francesco Giudici --- release.yaml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/release.yaml b/release.yaml index 6359b41779..deea9eea8a 100644 --- a/release.yaml +++ b/release.yaml @@ -1,2 +1,6 @@ +elemental: + - 103.0.0+up1.3.4 +elemental-crd: + - 103.0.0+up1.3.4 rancher-webhook: - 2.0.6+up0.3.6 From e155aba3eddd60fc4fcf7f537f5ee9c0a9e89675 Mon Sep 17 00:00:00 2001 From: nicholasSUSE Date: Mon, 14 Aug 2023 20:52:33 -0300 Subject: [PATCH 5/7] Copy rancher-vsphere version 102.x.x to 103.0.0 --- .../generated-changes/patch/Chart.yaml.patch | 2 +- packages/rancher-vsphere/rancher-vsphere-cpi/package.yaml | 3 ++- .../generated-changes/patch/Chart.yaml.patch | 2 +- packages/rancher-vsphere/rancher-vsphere-csi/package.yaml | 3 ++- 4 files changed, 6 insertions(+), 4 deletions(-) diff --git a/packages/rancher-vsphere/rancher-vsphere-cpi/generated-changes/patch/Chart.yaml.patch b/packages/rancher-vsphere/rancher-vsphere-cpi/generated-changes/patch/Chart.yaml.patch index 09570840a8..36bd8e04f9 100644 --- a/packages/rancher-vsphere/rancher-vsphere-cpi/generated-changes/patch/Chart.yaml.patch +++ b/packages/rancher-vsphere/rancher-vsphere-cpi/generated-changes/patch/Chart.yaml.patch @@ -5,7 +5,7 @@ catalog.cattle.io/os: linux catalog.cattle.io/permits-os: linux,windows - catalog.cattle.io/rancher-version: '>= 2.6.0-0' -+ catalog.cattle.io/rancher-version: '>= 2.7.0-0 < 2.8.0-0' ++ catalog.cattle.io/rancher-version: '>= 2.8.0-0 < 2.9.0-0' catalog.cattle.io/release-name: vsphere-cpi apiVersion: v1 -appVersion: 1.26.1 diff --git a/packages/rancher-vsphere/rancher-vsphere-cpi/package.yaml b/packages/rancher-vsphere/rancher-vsphere-cpi/package.yaml index 294a84121a..54fc67dfda 100644 --- a/packages/rancher-vsphere/rancher-vsphere-cpi/package.yaml +++ b/packages/rancher-vsphere/rancher-vsphere-cpi/package.yaml @@ -1,4 +1,5 @@ url: https://github.com/rancher/vsphere-charts.git subdirectory: charts/rancher-vsphere-cpi commit: 8b8e8cf13e9c971330bf96517fab1deec1f23b05 -version: 102.1.0 +version: 103.0.0 +doNotRelease: true diff --git a/packages/rancher-vsphere/rancher-vsphere-csi/generated-changes/patch/Chart.yaml.patch b/packages/rancher-vsphere/rancher-vsphere-csi/generated-changes/patch/Chart.yaml.patch index f8eaac0d74..1691407a21 100644 --- a/packages/rancher-vsphere/rancher-vsphere-csi/generated-changes/patch/Chart.yaml.patch +++ b/packages/rancher-vsphere/rancher-vsphere-csi/generated-changes/patch/Chart.yaml.patch @@ -5,7 +5,7 @@ catalog.cattle.io/os: linux,windows catalog.cattle.io/permits-os: linux,windows - catalog.cattle.io/rancher-version: '>= 2.6.0-0' -+ catalog.cattle.io/rancher-version: '>= 2.7.0-0 < 2.8.0-0' ++ catalog.cattle.io/rancher-version: '>= 2.8.0-0 < 2.9.0-0' catalog.cattle.io/release-name: vsphere-csi apiVersion: v1 appVersion: 3.0.1-rancher1 diff --git a/packages/rancher-vsphere/rancher-vsphere-csi/package.yaml b/packages/rancher-vsphere/rancher-vsphere-csi/package.yaml index a3d63fffb5..af3ab55587 100644 --- a/packages/rancher-vsphere/rancher-vsphere-csi/package.yaml +++ b/packages/rancher-vsphere/rancher-vsphere-csi/package.yaml @@ -1,4 +1,5 @@ url: https://github.com/rancher/vsphere-charts.git subdirectory: charts/rancher-vsphere-csi commit: 8b8e8cf13e9c971330bf96517fab1deec1f23b05 -version: 102.1.0 +version: 103.0.0 +doNotRelease: true \ No newline at end of file From 94199e61049aa341ddfa0e71c01f74e2a26cb315 Mon Sep 17 00:00:00 2001 From: Andy Blendermann Date: Fri, 8 Sep 2023 12:25:01 -0400 Subject: [PATCH 6/7] Upgrade vsphere charts for k8s 1.27 support (#2956) --- .../rancher-vsphere-cpi-103.0.0+up1.6.0.tgz | Bin 0 -> 5177 bytes ...r-vsphere-csi-103.0.0+up3.0.2-rancher1.tgz | Bin 0 -> 9911 bytes .../103.0.0+up1.6.0/Chart.yaml | 26 ++ .../103.0.0+up1.6.0/README.md | 59 ++++ .../103.0.0+up1.6.0/app-readme.md | 11 + .../103.0.0+up1.6.0/questions.yaml | 62 ++++ .../103.0.0+up1.6.0/templates/_helpers.tpl | 32 ++ .../103.0.0+up1.6.0/templates/configmap.yaml | 32 ++ .../103.0.0+up1.6.0/templates/daemonset.yaml | 104 ++++++ .../templates/role-binding.yaml | 40 +++ .../103.0.0+up1.6.0/templates/role.yaml | 92 ++++++ .../103.0.0+up1.6.0/templates/secret.yaml | 13 + .../templates/service-account.yaml | 10 + .../103.0.0+up1.6.0/templates/service.yaml | 15 + .../103.0.0+up1.6.0/values.yaml | 96 ++++++ .../103.0.0+up3.0.2-rancher1/Chart.yaml | 26 ++ .../103.0.0+up3.0.2-rancher1/README.md | 84 +++++ .../103.0.0+up3.0.2-rancher1/app-readme.md | 14 + .../103.0.0+up3.0.2-rancher1/questions.yaml | 148 +++++++++ .../templates/_helpers.tpl | 32 ++ .../templates/configmap.yaml | 22 ++ .../templates/controller/deployment.yaml | 228 +++++++++++++ .../templates/controller/role-binding.yaml | 12 + .../templates/controller/role.yaml | 59 ++++ .../templates/controller/service-account.yaml | 5 + .../templates/controller/service.yaml | 19 ++ .../templates/csi-driver.yaml | 8 + .../templates/node/daemonset.yaml | 180 +++++++++++ .../templates/node/role-binding.yaml | 28 ++ .../templates/node/role.yaml | 25 ++ .../templates/node/service-account.yaml | 5 + .../templates/node/windows-daemonset.yaml | 167 ++++++++++ .../templates/secret.yaml | 9 + .../templates/storageclass.yaml | 17 + .../103.0.0+up3.0.2-rancher1/values.yaml | 300 ++++++++++++++++++ index.yaml | 60 ++++ .../generated-changes/patch/Chart.yaml.patch | 6 +- .../rancher-vsphere-cpi/package.yaml | 3 +- .../generated-changes/patch/Chart.yaml.patch | 4 +- .../rancher-vsphere-csi/package.yaml | 5 +- release.yaml | 4 + 41 files changed, 2052 insertions(+), 10 deletions(-) create mode 100644 assets/rancher-vsphere-cpi/rancher-vsphere-cpi-103.0.0+up1.6.0.tgz create mode 100644 assets/rancher-vsphere-csi/rancher-vsphere-csi-103.0.0+up3.0.2-rancher1.tgz create mode 100644 charts/rancher-vsphere-cpi/103.0.0+up1.6.0/Chart.yaml create mode 100644 charts/rancher-vsphere-cpi/103.0.0+up1.6.0/README.md create mode 100644 charts/rancher-vsphere-cpi/103.0.0+up1.6.0/app-readme.md create mode 100644 charts/rancher-vsphere-cpi/103.0.0+up1.6.0/questions.yaml create mode 100644 charts/rancher-vsphere-cpi/103.0.0+up1.6.0/templates/_helpers.tpl create mode 100644 charts/rancher-vsphere-cpi/103.0.0+up1.6.0/templates/configmap.yaml create mode 100644 charts/rancher-vsphere-cpi/103.0.0+up1.6.0/templates/daemonset.yaml create mode 100644 charts/rancher-vsphere-cpi/103.0.0+up1.6.0/templates/role-binding.yaml create mode 100644 charts/rancher-vsphere-cpi/103.0.0+up1.6.0/templates/role.yaml create mode 100644 charts/rancher-vsphere-cpi/103.0.0+up1.6.0/templates/secret.yaml create mode 100644 charts/rancher-vsphere-cpi/103.0.0+up1.6.0/templates/service-account.yaml create mode 100644 charts/rancher-vsphere-cpi/103.0.0+up1.6.0/templates/service.yaml create mode 100644 charts/rancher-vsphere-cpi/103.0.0+up1.6.0/values.yaml create mode 100644 charts/rancher-vsphere-csi/103.0.0+up3.0.2-rancher1/Chart.yaml create mode 100644 charts/rancher-vsphere-csi/103.0.0+up3.0.2-rancher1/README.md create mode 100644 charts/rancher-vsphere-csi/103.0.0+up3.0.2-rancher1/app-readme.md create mode 100644 charts/rancher-vsphere-csi/103.0.0+up3.0.2-rancher1/questions.yaml create mode 100644 charts/rancher-vsphere-csi/103.0.0+up3.0.2-rancher1/templates/_helpers.tpl create mode 100644 charts/rancher-vsphere-csi/103.0.0+up3.0.2-rancher1/templates/configmap.yaml create mode 100644 charts/rancher-vsphere-csi/103.0.0+up3.0.2-rancher1/templates/controller/deployment.yaml create mode 100644 charts/rancher-vsphere-csi/103.0.0+up3.0.2-rancher1/templates/controller/role-binding.yaml create mode 100644 charts/rancher-vsphere-csi/103.0.0+up3.0.2-rancher1/templates/controller/role.yaml create mode 100644 charts/rancher-vsphere-csi/103.0.0+up3.0.2-rancher1/templates/controller/service-account.yaml create mode 100644 charts/rancher-vsphere-csi/103.0.0+up3.0.2-rancher1/templates/controller/service.yaml create mode 100644 charts/rancher-vsphere-csi/103.0.0+up3.0.2-rancher1/templates/csi-driver.yaml create mode 100644 charts/rancher-vsphere-csi/103.0.0+up3.0.2-rancher1/templates/node/daemonset.yaml create mode 100644 charts/rancher-vsphere-csi/103.0.0+up3.0.2-rancher1/templates/node/role-binding.yaml create mode 100644 charts/rancher-vsphere-csi/103.0.0+up3.0.2-rancher1/templates/node/role.yaml create mode 100644 charts/rancher-vsphere-csi/103.0.0+up3.0.2-rancher1/templates/node/service-account.yaml create mode 100644 charts/rancher-vsphere-csi/103.0.0+up3.0.2-rancher1/templates/node/windows-daemonset.yaml create mode 100644 charts/rancher-vsphere-csi/103.0.0+up3.0.2-rancher1/templates/secret.yaml create mode 100644 charts/rancher-vsphere-csi/103.0.0+up3.0.2-rancher1/templates/storageclass.yaml create mode 100644 charts/rancher-vsphere-csi/103.0.0+up3.0.2-rancher1/values.yaml diff --git a/assets/rancher-vsphere-cpi/rancher-vsphere-cpi-103.0.0+up1.6.0.tgz b/assets/rancher-vsphere-cpi/rancher-vsphere-cpi-103.0.0+up1.6.0.tgz new file mode 100644 index 0000000000000000000000000000000000000000..a4f3372f483764bb4e8816f2e630dc7ace8bb409 GIT binary patch literal 5177 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 literal 0 HcmV?d00001 diff --git a/assets/rancher-vsphere-csi/rancher-vsphere-csi-103.0.0+up3.0.2-rancher1.tgz b/assets/rancher-vsphere-csi/rancher-vsphere-csi-103.0.0+up3.0.2-rancher1.tgz new file mode 100644 index 0000000000000000000000000000000000000000..68f841f0891853f5057c537b872b284001c9b608 GIT binary patch literal 9911 zcmV;oCP>*IiwG0|00000|0w_~VMtOiV@ORlOnEsqVl!4SWK%V1T2nbTPgYhoO;>Dc zVQyr3R8em|NM&qo0PMYKa~rqPD4fsy6(}li*?x|On<&X<*{)ZnXooklq==I8oQhL2 zI0KS68UhmlLy2*GfBP+L!&$j#p_CKigDuVg-Hk@0(P(sI7$oipF=xVq5n{-3Ij*)x zkcr9^j{P4Vq||D)+FrA%{;$<)>Hq7y&D|gB&F22z&ThR{Yy42F@78u}KY-f9pr2nt zE+G4%c5hti&izdaB!mhmFeSWI0>Fg=`gB-vp%6Z*U|Mw%6L^4;*8)aXa;tfm2R@uS z1ddS)OnOS1K)ct?t$iK#kuyPzV@g`!#rt=lUTM@SHKzvN%0FMrKVRfFl?ZqMUDN^! z3ZHU;#<^7~Zvh{Z@OJwK6OZ2T+*$!*V=TC{T$~B z#+6`zFD<}Hy##|G`ngl7RT_>#TQ7Nty9@_HSG8>RY3PBTpbQQX=n{e00J;dgZ1=ja zO4yZkM?wU=Rjs;ma`TD-D9M7HBf+aa9a3J6QB~oSVd)x8Zz%J4tKLy+vb){TBEShJWCSAJYGyha6R0D#u3m`2WaP;3%ZC+K>=f>HCOyh>am3 z*+vJ%n}QFs8nd>22EB?0C)ndOr{M<%J#c7Vm-Mq7ZCBznWG+%&usj-KF$((|4*PFBK~j-z zzO&K)>nM{plIlY0{t@M(1w2cX z2L*H$Aa0(795FrTG(gC?)FbAnOUVEad&p%-NYr-DmLoA#6&$W=lvRx(B8WkOT0pQ6 zsYkljIT{DPdhwTf3czoleAwPmBC974PfXCP~6DA87lNv^GEMrfxo~XAr%OG|87W=Y|=!fp;`uJ+gM)a zw~O9p+fgP8+Q>JV`gY)*fe(lI4db#A2VlqH5;GA(U)Rn9AZ0Gr(2iJ4p7IgLE5z}- z9JeVEjQYM7YM0|P#POf{7XXOBzAufL0ra_)B0Ppeq~9?VP>uy<(`corjxl4DA-AirfTpo&n*%=4%N3zB z-L?R@k0*#A&QBTbqm|*?)`4tYfWa`cHzn?pJy>EixPn&9uv6JsF5GuyS}<#$i)3pH z98(VgANG;Y!GJOlP!B-P@sNxWF?G(+U}l`ntPN#TQ=t9$d%?_ zRkfGq4)st^J*BJ#zRBsk1ulq7#}W(ZBcI*?L4Bz`F(m*Gz?6o7Amjl^02~e(;v7$q zq7O~5tE&;?QbKI5UTECn*9siX!8 z#i%_(?sd*f8!Myqrpc;o%UmHpd@B-Jb?55f%A7_*L)CdSRe!lx&@lqc+EK zEW1e-D67H8Txc{rr)@Afryrnujmgl%{F?UvBd41883q9+!#sir9}ihCC@Qu7JD(ka!@rAqI4U7{eaomC{ye3w)#u$R$E9 zA#%wy&VUnJYa56W=0JH}zzz0&;7ScHMV})iS4A;Gzzvz4_HofSyM`Csf&^nI+!5lX zEda?>_EWax>Av!4%K{*mRB=Fwsyc>&rul?O+?Wgj)Ihh@d%M3;y;b@_bu8Zb0Y<)O zS>Pd}d(=lD3_K{12X3$!DPRQM=$0B~cL2trFL2-^+YbO40*JUYluIGvhkm%mJlriKA4nR1&|5vg8&mcJb1RdnP=O1bwO<5_f0{cz}DQr)T4 zs=8@Rdj`%B34w`JJW!HR{dCbibPk&b2ZwLobeuQ!#%rfpYj>OvuivztgTv--{qW%R z&i zVx5xrC<<`z-U_hsEEV8hWoNw#u(@6Z*n9#7xc>|kU}jv`qW~L~`qL}GWZ$1k0q#bu zShwUoiUQodw*ss`O9i-FX>JtY1B>C_Gf;q;ab1rBtUm_}FxmH~Q-Dt;d5@w1oA*|L zwP&dSo9ng!ch;)_cb-5Do6kT2X2x|r3b6JZ6kzjNSb$F@d8zo%y!c;xI>xJ4Bjg8& z@rnrU5emF0|6{M7j{n_n?(A;jf7emIeRF_56bEH}ynbcQfv=4GPRqdg{=FnC;z2=( zYwp2()GT0_hyf`7f4o}069D9M6#XdA=t0EG{9TIo2nK;ay-Xbl&f5PN9p;19JK$kg zM6c9|^Q?k=AH|@i;KkXa&#T*X96%OpUWvsb{Fppr{&{w;Te0W65q(z@?-;QmlGtt- z7AQ{i48ArS<}#)bpy^i}a1K+e|5GxtS2i?3AHYM;iy{Y9SdWSvP>D23xAN_htfHe3 z_2XD94-gdGP3^z*K0D6prB=Q%;Ci4nv*n;Ld7}lAnkTnOXaM&b}Y`AOzC=)WPx;!vJvq@0d zpxOdZDzMi1BSdU!NJ|1r2i_Kdu`#uZBs>ehO#;gg(Om@6aLmS|=7UTI^A>_R*0F9$fb&CGnG%%y>1hEihCyLulabtcw za{-DmymbN<)a(cy)$9avVHzi4=Y~G#fxO1VYk{^}!9K&FG)4ki^`v7~v5CQVOboum zgz`U4Nwc5QQya8c%cH3)pHhqVtp!OczZ$M1Y%z*j25WRp7%mF zL@iL02yFU7Nxu{B=t!kaSTHaM=Jd=m)HIK=MEQCWkQTu*P9W;1t_+Y*EqB!4h)uAI z4qO#beLSD_vZOZj30HF^p2IQA2u)>nd;^%ce&`kLd@A5CKrrzT5#aRWG|Dj zmGmjvE}SDa=E>KNmZ;8cpc3!Q)f@4$1kxF@k5~ZEmGD|(RUaL}8JWSfH z3)~STa+NzDA&wHBILHuyo~M0oP%k6Omv{Dar>@eV)a=lyd&_pDKm*O8dFGf)3j7`C z++0kBTwQ<+3D?WTF-!hkfFdI|9^pDIt_8}*4Q~4$<+>!~M;liK=c)QI4V1rqiy3!? z?)?h*{yn*wj!g{(suDZ-t;`Oj!1wR16&eaS1mC~Mbr@vB%-UFXoXNXpT6dQnN8mA{ zp?J4bt7TMs+0jSKo+p+2yB}X393Gx^dc9XU6@3If#2lNqno~nvECmDX{1NbX^;&IS zm43*$NLNB+lJ1td%}A4#Ql3WQt8(+DE?%PUb$mjoo%v@uA+wf*e5#XRtJW->6^&Ga zL&EVeOP}H-M{IW59_^=N$}lc+*(3GGkT^@sssd-*J+8csAo2Xj$%skFk%Jhc?48Pt zy^n<6TmBYH`m>hMgl3$PwqTF+2tv4$jq+nrwT>b(28b8=D8*PU@Ltjpf%Po1-l zg4jMe{@DFgK#sIysw$F3vdX#uD=sC2d@7GlK7Hz(T^)5UJ4XdDPtQ&cFWTqbljAbj z0w;kn-4A7xlhe>N!gc)-g1#92nSvErxu@#xxi_zCuTwPwMg?`L-va0D(_F{_qhlmS zC`|8aQ@|VbdSgl8a{{wQLIj`e{dF-&np^q3)EDdJy~6~nV-n=UX>?amy_TqBERxw( zLW#ElVwif-%iYAw0mOdD(D{fVKBB%CZ*19T`|6}4$R2!MO>lL!RW{l5o+e)0B1qpQ!|t|Id%}eheQ# zEG~UzKR~?gGx0sGVP|h@7=}9oE~Wu`hi*kPcR!ep*~oMK0Od<22zkf@l=xHS7q%?` zl$sfEB*Gv^H5-*alp6h=jT(BFw-qWo4i^l&Vith3ct81U9T{ zf3sO@q~?FU-e_*-|2j%`Ry_Q~R}+baJ~C6@&M4jjzm?1S&VPpNcUZu0WtHVq-Uj7> zdg}iu4~3iR6U6$e>JSN8!N*+ve*=X(QgxO<6Uc6Ifr!xdm+M13UJk=HDC;Xv?}w|( z1r%WhWpJNfEZqSe9vkSz$$%6#S6|E3^(M0j_o6r4~TQg zGQ?!2z{7~Zs`_L(hAS*OkO@=5&>tbYN%b0JX#%F-wh6bDEGbC} zzyqVRlRSeo60AqXPKi*HJ%j!Z0zXF?JP46i95b}0^?ojwQo@;w*Qiiy|n+oR@>e9|JG6- z^8SzHMxi>X1O0uZ>(?CAEA@R4a+IyqM*>>K)9!WkU2Hk3rywiestUaeJ~LUHQS3rM zy)GHh6Qa&^?N_Uwn(NP}%%A^qZ&mdm8dJj2>WTlR%%A`D=6+*8J^%OX`77q3k*l1{+V)HizaP zG2`M_EJi=+Hp`@KFS;i9zLB(Q!s$5JocoRE2GTBQxkOF z`10_qd)Ya=I_rG8>YcQIzB)ZP|LN7^CAZF+=ONCAmBZ87_lm*y@6`!pRUh}Ork_>) z`AW6p&e`Rx8meki5%ec9mrqNHH%>5qK8SeLShYE+Q|NYP1(mBEq|f0N1l=$XvNCx;!?!94wOuPhR2 zhA7o77r0#9512*$`QU%AE>DgwK6iRor=7E_c(1qs#5~!sKz;bYa@~S?8Cl%Y&ot;Xx+#X$C3xGKojXKwnQP z*ApgCCFkC!&UyFv3M0jz2U zWwzTU=ZI6S9^^b$;JHpW0+?_)$@Mq(t-&p~Ss6$HqX8VMkJR^}{s6z6OvW9W`B zNzHZJ5z|g_x%>fpnCYA==;u!)52-kb`Hc0@B)74;6PYh)%%{AnD&~UVQ|@RQmVskx z#%irGbN^W<*C+GmpKo$~%x+sgt-i3)^GK*)Q8}fO?3UWZ$ce82C5QP=YRhgVqH#(J zmhw6uD!oBt@8)*)F~}>}>C7Ycgz3w{vqTrI01rv{N^H#4yYr|?DB-yZcrKKDZM=xu zVlBN8Syp9d(Jg)cv&8w|Ju?4vS#bVeZ|tPw|LTqXP5j?liaykPgv3APu(2tBOP=}N zH8C)9nA|BPurL=ea!oIp1z2(%r&N0Ej7mk7`2>>_pPNs`zeOpP8G`@olPdp4Wl8=2 znBRY@H`4jv_5HoQjs9OtiK)Pc)K6@t3>NB>6%s>N&I6Si`O#8bvx=>#FH7WEWfEC_ z&;O=i`TaZnz4R3v-8ng0>0~9F2b4ZrFKqgI@}}0MvwCyJ?Vp~5^OR)?{eO?lA6*va z|77C-8@0wJ{(mjy{`o&E1ob_2XE!BNmYDzc%X@c@16~yWTg&YK8#|l*|9VO`M6lpP zisp;EYmF7QAAMX)%y0}@aqRFtzB2Xzk;5?(b;(2!Cu+nai4(!WQTyz7iIW)a8bBIr zzI-fbK_uwj-z5@s6ASv^84J1z8@i zc`L+Z6HGSwoqB{--}XbFbj9 zCC>kwJI!?bS7UE)bN;uEk~-nZ{h-hg5yYgW<9z>~jt#K!1F~YyiQe+xDq7}%&%#cB zoK7_nfj=LY{&8;2whH(Q^!J*GxZp4FM@R*-XPi?1IsXs^xM2Rr?zO+W7FZnr*-YR6 z)!f_M|FxEqn*V0N+iJk=(SLf{XRh$GS|HXqt_w1%Ab~}xfY=NKkPs?nN4NK zI6DGbGsYhkqfRu8vom>~H4nG>p}pJ3k!CiJ1NC_RSY{yHo9N!Qtml zW$Zl=js^OEeAJta zywi2ERlyLdGHv@gjY_>bh6E1~7rZ)YRO*#l)M&p_3+vTa0CNDNa2vI101t6IBs#E0 zuVG;JktD0mj2{Y&A%R0QmTxGDb?k(>Bc$9>lyUH~eZpS>9=am{dF(i;0?tP$g{=I?AoW$ z#Vfn&M6A^Ab#3Pjb1gnWK_3B3xPZQ|z9E}vu2U$uBtQ1G9dJTi1fc9OaOpUJ0?VN^ zptZor;n#iBP+<<-Z4hz^U2-JkNS)zHn1X`H0@yb92XAYq<+ftlfU+?Zs=hrXM7IIu zv%^6N#@vrxDxD`DC?4DSf;sq_Z(w|_luBD$;FKYCu_ea>@lwf&TJBZ$!NtzMN>03E zlX|65lg~~<;n0C2XU%LL`!w{xsgaDt#60c3Dmmc5Y}X{erZi+ZESsIWLOFa9Xf+aY z7Zoxi>%;>tLmnamL!Ya@boDUnFpbi=x|(AInXp%P$_Z;Iz{^r#nLQV~98s4Nf?Q$G zYVAf4{F{bK07h`4B|wuDZEdlRy_?c-8&C#xwu^i!>Ep;BC}d{7>0@AN-q3;i+jPfM zmycRG*U3bs(pw%t0=Ss^=v~>RK4mS+AQ__a`(GiGGyQEgw;lti2vP^l0kS8m{xx1@kw{uYe_QRpZ-I6SMyOPsY;OZ9 zFS@1DCn~$41jb0o3oeJ`KXSld_T+fjU$R?@?3voJ5Y@oH0`I|@O-=&u4PN=zf#;cD zmD1O*U*)E^v;{i1a2)umSJKdqZlSd-HV%+2wH&0~6W|(6wYXp&wcG|&j1arQMkB?A zMw32(*e_*W9e~hs(u3CGp zQ-8k=@S5`A6q%1A}NwpeDk(`MiIrq!v6qFO`0#07lgjnP5hV zGR<}G|DO>Rq|9&M$3qFw8mQI)l;Az&Vq<#d4T+^o zQ(^3ZnAw)X8RSqmpds7u`drzSrpN@4jw0`;DCsPV=Dl(K&dtv+wL2v^%dGor8~uJ9VuK zhavWmj|t)qB%aepTsQ%Pu29$23}{@HI&wrEI~q<+iqLtq@5&jeZ2-OhgxuKGN*6|) z(?%KOMi)wZ!LGp;ic}Y7kj<@kU%!5R>Rt5Tx8(VMU=TPAL2ry6#s{>(|I?_~Q~AI3 z-R5p%T7`<1-)Uwz+O&Dnbf{+O~L|G!b&O@05XzE^A3H|zg8N;KB`)}jeySf{Md zjRaDAT$Qrk0-vmdGVZNut5()?pmxMFRWWN5a|I_=6wLAcWVKUwP~;`}N8E-?n(Q(%I>rB46&%i*#0*_yVcWNfJR*p%kb5p#Ovqioah z7&;sUkg1EfeawYK8bC2pR)zAd8W0uGsSK6tq^=Swwfm%D|5h%PRHqMR^LC1YWvRDb zqcqTq^z%fQ>|1Rg+>vqCDV0Wjntq-@ZQss89RXfuaz~vs*bC<~i1G*%^c-goMD8-F zf6bmY#O7$sHDjM@%OpNg4ab+Cf^yoG=W0CrRge@TU5+DXnT?l<^RT1$E3)4+r&@+{ zrq;~I7R!H}1t}>r6_ccSXtxY<_DC!*59YYz{-r#23ssu_Mrw?E`tE=f^Rk>c2*s#9 zLhkh(P9$#H1Fo#irRA#cZBQ3uU^1cpL^ngAmwa2Xaa$$8 z=KfU|GNL<{vlMZ_kYE^1pg)`7@eV&qU$92* zwK?v3XdF<1h&!FrBSWpHhBwwEPuNG0xQN>=vhvUHkVTvN*rZmXZ-I$N?WrCHd&aO# zPtBx`jwLcZJ{w^VVG+@Jk@9K!mDZhETuA)u zobZT?$hD&{fJEM_N?~tPS~_)uR$PIds;59*tR*S^n*K`7*Q`4GNEzUCW&x35>|Dn6 zLnV49wC$v~4bFb<0F52-90Xbsey!3#RM|E9S^+9dO?F+kQXUk`V4u3tE;9FvI+;!K pOd*xy`cQ2}lIz=3yDK+kQ#NH&HsyiJ{|f*B|Nj@GoBjX@0RZ1uO6~vv literal 0 HcmV?d00001 diff --git a/charts/rancher-vsphere-cpi/103.0.0+up1.6.0/Chart.yaml b/charts/rancher-vsphere-cpi/103.0.0+up1.6.0/Chart.yaml new file mode 100644 index 0000000000..497f241d74 --- /dev/null +++ b/charts/rancher-vsphere-cpi/103.0.0+up1.6.0/Chart.yaml @@ -0,0 +1,26 @@ +annotations: + catalog.cattle.io/certified: rancher + catalog.cattle.io/display-name: vSphere CPI + catalog.cattle.io/kube-version: '>= 1.18.0-0 < 1.28.0-0' + catalog.cattle.io/namespace: kube-system + catalog.cattle.io/os: linux + catalog.cattle.io/permits-os: linux,windows + catalog.cattle.io/rancher-version: '>= 2.8.0-0 < 2.9.0-0' + catalog.cattle.io/release-name: vsphere-cpi +apiVersion: v1 +appVersion: 1.6.0 +description: vSphere Cloud Provider Interface (CPI) +icon: https://charts.rancher.io/assets/logos/vsphere-cpi.svg +keywords: +- infrastructure +maintainers: +- email: jiaqi.luo@suse.com + name: Jiaqi Luo +- email: anna.blendermann@suse.com + name: Andy Blendermann +- email: brad.davidson@suse.com + name: Brad Davidson +name: rancher-vsphere-cpi +sources: +- https://github.com/kubernetes/cloud-provider-vsphere +version: 103.0.0+up1.6.0 diff --git a/charts/rancher-vsphere-cpi/103.0.0+up1.6.0/README.md b/charts/rancher-vsphere-cpi/103.0.0+up1.6.0/README.md new file mode 100644 index 0000000000..a8a605e16b --- /dev/null +++ b/charts/rancher-vsphere-cpi/103.0.0+up1.6.0/README.md @@ -0,0 +1,59 @@ +# vSphere Cloud Provider Interface (CPI) + +[vSphere Cloud Provider Interface (CPI)](https://github.com/kubernetes/cloud-provider-vsphere) is responsible for running all the platform specific control loops that were previously run in core Kubernetes components like the KCM and the kubelet, but have been moved out-of-tree to allow cloud and infrastructure providers to implement integrations that can be developed, built and released independent of Kubernetes core. The official documentation and tutorials can be found [here](https://vsphere-csi-driver.sigs.k8s.io/driver-deployment/prerequisites.html). + +**This chart requires being deployed into the `kube-system` namespace.** + +## Prerequisites + +- vSphere 6.7 U3+ +- Kubernetes v1.14+ +- A Secret on your Kubernetes cluster that contains vSphere credentials (Refer to `README` or `Detailed Descriptions`) + +## Installation + +This chart requires a Secret in your Kubernetes cluster that contains the server URL and credentials to connect to the vCenter. You can have the chart generate it for you, or create it yourself and provide the name of the Secret during installation. + +Warning: When the option to generate the Secret is enabled, the credentials are visible in the API to authorized users. If you create the Secret yourself they will not be visible. + +You can create a Secret in one of the following ways: +### Option 1: Create a Secret using the Rancher UI +Go to your cluster's project (Same project you will be installing the chart) > Resources > Secrets > Add Secret. +```yaml +# Example of data required in the Secret +.username: +.password: +``` + +### Option 2: Create a Secret using kubectl +Replace placeholders with actual values, and execute the following: +```bash +cat < + namespace: +data: + .username: + .password: +EOF +``` + +More information on managing Secrets using kubectl [here](https://kubernetes.io/docs/tasks/configmap-secret/managing-secret-using-kubectl/). + +## Migration + +If using this chart to migrate volumes provisioned by the in-tree provider to the out-of-tree CPI + CSI, you need to taint all nodes with the following: +``` +node.cloudprovider.kubernetes.io/uninitialized=true:NoSchedule +``` + +To perform this operation on all nodes in your cluster, the following script has been provided for your convenience: +```bash +# Note: Since this script uses kubectl, ensure that you run `export KUBECONFIG=` before running this script +for node in $(kubectl get nodes | awk '{print $1}' | tail -n +2); do + kubectl taint node $node node.cloudprovider.kubernetes.io/uninitialized=true:NoSchedule +done +``` \ No newline at end of file diff --git a/charts/rancher-vsphere-cpi/103.0.0+up1.6.0/app-readme.md b/charts/rancher-vsphere-cpi/103.0.0+up1.6.0/app-readme.md new file mode 100644 index 0000000000..67329e95b9 --- /dev/null +++ b/charts/rancher-vsphere-cpi/103.0.0+up1.6.0/app-readme.md @@ -0,0 +1,11 @@ +# vSphere Cloud Provider Interface (CPI) + +[vSphere Cloud Provider Interface (CPI)](https://github.com/kubernetes/cloud-provider-vsphere) is responsible for running all the platform specific control loops that were previously run in core Kubernetes components like the KCM and the kubelet, but have been moved out-of-tree to allow cloud and infrastructure providers to implement integrations that can be developed, built and released independent of Kubernetes core. The official documentation and tutorials can be found [here](https://vsphere-csi-driver.sigs.k8s.io/driver-deployment/prerequisites.html). + +**This chart requires being deployed into the `kube-system` namespace.** + +## Prerequisites + +- vSphere 6.7 U3+ or vSphere 7.0+ +- Kubernetes v1.19+ +- A Secret on your Kubernetes cluster that contains vSphere credentials (Refer to `README` or `Detailed Descriptions`) diff --git a/charts/rancher-vsphere-cpi/103.0.0+up1.6.0/questions.yaml b/charts/rancher-vsphere-cpi/103.0.0+up1.6.0/questions.yaml new file mode 100644 index 0000000000..13e9c48dca --- /dev/null +++ b/charts/rancher-vsphere-cpi/103.0.0+up1.6.0/questions.yaml @@ -0,0 +1,62 @@ +questions: + - variable: vCenter.host + label: vCenter Host + description: IP address or FQDN of the vCenter + type: string + required: true + group: Configuration + + - variable: vCenter.datacenters + description: Comma-separated list of paths to data centers. E.g ", , ..." + label: Data Centers + type: string + required: true + group: Configuration + + - variable: vCenter.credentialsSecret.generate + label: Generate Credential's Secret + description: Generates a secret with the vSphere credentials (If the option to generate it is enabled, credentials will be visible in the API to authorized users) + type: boolean + default: true + required: true + group: Configuration + show_subquestion_if: true + subquestions: + - variable: vCenter.username + label: Username + description: Username for vCenter + type: string + group: Configuration + - variable: vCenter.password + label: Password + description: Password for vCenter + type: password + group: Configuration + + - variable: vCenter.credentialsSecret.name + label: Credential's Secret Name + description: Name of the secret with the vSphere credentials (Will not be visible in the API. More info in the README) + default: "vsphere-cpi-creds" + type: string + group: Configuration + show_if: "vCenter.credentialsSecret.generate=false" + + - variable: vCenter.labels.generate + label: Define vSphere Tags + description: "vSphere Tags used to determine the zone and region of a Kubernetes node. This labels will be propagated to NodeLabels" + type: boolean + default: false + required: true + group: Configuration + show_subquestion_if: true + subquestions: + - variable: vCenter.labels.region + label: Region + description: vSphere tag which will used to define regions. e.g. eu-central + type: string + group: Configuration + - variable: vCenter.labels.zone + label: Zone + description: vSphere tag which will used to define availability zones + type: string + group: Configuration diff --git a/charts/rancher-vsphere-cpi/103.0.0+up1.6.0/templates/_helpers.tpl b/charts/rancher-vsphere-cpi/103.0.0+up1.6.0/templates/_helpers.tpl new file mode 100644 index 0000000000..a608baf1d7 --- /dev/null +++ b/charts/rancher-vsphere-cpi/103.0.0+up1.6.0/templates/_helpers.tpl @@ -0,0 +1,32 @@ +{{- define "system_default_registry" -}} +{{- if .Values.global.cattle.systemDefaultRegistry -}} +{{- printf "%s/" .Values.global.cattle.systemDefaultRegistry -}} +{{- else -}} +{{- "" -}} +{{- end -}} +{{- end -}} + +{{- define "applyVersionOverrides" -}} +{{- $overrides := dict -}} +{{- range $override := .Values.versionOverrides -}} +{{- if semverCompare $override.constraint $.Capabilities.KubeVersion.Version -}} +{{- $_ := mergeOverwrite $overrides $override.values -}} +{{- end -}} +{{- end -}} +{{- $_ := mergeOverwrite .Values $overrides -}} +{{- end -}} + +{{/* +Windows cluster will add default taint for linux nodes, +add below linux tolerations to workloads could be scheduled to those linux nodes +*/}} +{{- define "linux-node-tolerations" -}} +- key: "cattle.io/os" + value: "linux" + effect: "NoSchedule" + operator: "Equal" +{{- end -}} + +{{- define "linux-node-selector" -}} +kubernetes.io/os: linux +{{- end -}} \ No newline at end of file diff --git a/charts/rancher-vsphere-cpi/103.0.0+up1.6.0/templates/configmap.yaml b/charts/rancher-vsphere-cpi/103.0.0+up1.6.0/templates/configmap.yaml new file mode 100644 index 0000000000..ba9576f333 --- /dev/null +++ b/charts/rancher-vsphere-cpi/103.0.0+up1.6.0/templates/configmap.yaml @@ -0,0 +1,32 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: vsphere-cloud-config + labels: + vsphere-cpi-infra: config + component: {{ .Chart.Name }}-cloud-controller-manager + namespace: {{ .Release.Namespace }} +data: + vsphere.yaml: | + # Global properties in this section will be used for all specified vCenters unless overriden in VirtualCenter section. + {{ with .Values.vCenter }} + global: + secretName: {{ .credentialsSecret.name | quote }} + secretNamespace: {{ $.Release.Namespace | quote }} + port: {{ .port }} + insecureFlag: {{ .insecureFlag }} + + # vcenter section + vcenter: + {{ .host | quote }}: + server: {{ .host | quote }} + datacenters: + - {{ .datacenters | quote }} + {{- if .labels.generate }} + + # labels for regions and zones + labels: + region: {{ .labels.region | quote }} + zone: {{ .labels.zone | quote }} + {{- end }} + {{- end }} diff --git a/charts/rancher-vsphere-cpi/103.0.0+up1.6.0/templates/daemonset.yaml b/charts/rancher-vsphere-cpi/103.0.0+up1.6.0/templates/daemonset.yaml new file mode 100644 index 0000000000..fe9cc50a9b --- /dev/null +++ b/charts/rancher-vsphere-cpi/103.0.0+up1.6.0/templates/daemonset.yaml @@ -0,0 +1,104 @@ +{{- template "applyVersionOverrides" . -}} +apiVersion: apps/v1 +kind: DaemonSet +metadata: + name: {{ .Chart.Name }}-cloud-controller-manager + labels: + component: {{ .Chart.Name }}-cloud-controller-manager + tier: control-plane + namespace: {{ .Release.Namespace }} + annotations: + scheduler.alpha.kubernetes.io/critical-pod: "" +spec: + selector: + matchLabels: + name: {{ .Chart.Name }}-cloud-controller-manager + updateStrategy: + type: RollingUpdate + template: + metadata: + labels: + name: {{ .Chart.Name }}-cloud-controller-manager + component: {{ .Chart.Name }}-cloud-controller-manager + tier: control-plane + spec: + {{- if .Values.cloudControllerManager.nodeSelector }} + nodeSelector: {{ include "linux-node-selector" . | nindent 8 }} + {{- with .Values.cloudControllerManager.nodeSelector }} + {{- toYaml . | nindent 8 }} + {{- end }} + {{- else }} + affinity: + nodeAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + nodeSelectorTerms: + - matchExpressions: + # RKE node selector label + - key: node-role.kubernetes.io/controlplane + operator: In + values: + - "true" + - key: kubernetes.io/os + operator: NotIn + values: + - "windows" + - matchExpressions: + # RKE2 node selector label + - key: node-role.kubernetes.io/control-plane + operator: In + values: + - "true" + - key: kubernetes.io/os + operator: NotIn + values: + - "windows" + {{- end }} + {{- if .Values.cloudControllerManager.tolerations }} + tolerations: {{ include "linux-node-tolerations" . | nindent 8 }} + {{- with .Values.cloudControllerManager.tolerations }} + {{- toYaml . | nindent 8 }} + {{- end }} + {{- else }} + tolerations: + - key: node.cloudprovider.kubernetes.io/uninitialized + value: "true" + effect: NoSchedule + - key: node-role.kubernetes.io/master + effect: NoSchedule + operator: Exists + - key: node.kubernetes.io/not-ready + effect: NoSchedule + operator: Exists + # Rancher specific change: These tolerations are added to account for RKE1 and RKE2 taints + - key: node-role.kubernetes.io/controlplane + effect: NoSchedule + value: "true" + - key: node-role.kubernetes.io/control-plane + effect: NoSchedule + operator: Exists + - key: node-role.kubernetes.io/etcd + effect: NoExecute + operator: Exists + {{- end }} + securityContext: + runAsUser: 1001 + serviceAccountName: {{ .Chart.Name }}-cloud-controller-manager + containers: + - name: {{ .Chart.Name }}-cloud-controller-manager + image: {{ template "system_default_registry" . }}{{ .Values.cloudControllerManager.repository }}:{{ .Values.cloudControllerManager.tag }} + args: + - --cloud-provider=vsphere + - --v=2 + - --cloud-config=/etc/cloud/vsphere.yaml + volumeMounts: + - mountPath: /etc/cloud + name: vsphere-config-volume + readOnly: true + resources: + requests: + cpu: 200m + hostNetwork: true + volumes: + - name: vsphere-config-volume + configMap: + name: vsphere-cloud-config diff --git a/charts/rancher-vsphere-cpi/103.0.0+up1.6.0/templates/role-binding.yaml b/charts/rancher-vsphere-cpi/103.0.0+up1.6.0/templates/role-binding.yaml new file mode 100644 index 0000000000..1a3a030d2b --- /dev/null +++ b/charts/rancher-vsphere-cpi/103.0.0+up1.6.0/templates/role-binding.yaml @@ -0,0 +1,40 @@ +{{- if .Values.cloudControllerManager.rbac.enabled -}} +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + name: servicecatalog.k8s.io:apiserver-authentication-reader + labels: + vsphere-cpi-infra: role-binding + component: {{ .Chart.Name }}-cloud-controller-manager + namespace: {{ .Release.Namespace }} +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: extension-apiserver-authentication-reader +subjects: +- apiGroup: "" + kind: ServiceAccount + name: {{ .Chart.Name }}-cloud-controller-manager + namespace: {{ .Release.Namespace }} +- apiGroup: "" + kind: User + name: {{ .Chart.Name }}-cloud-controller-manager +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: system:{{ .Chart.Name }}-cloud-controller-manager + labels: + vsphere-cpi-infra: cluster-role-binding + component: {{ .Chart.Name }}-cloud-controller-manager +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: system:{{ .Chart.Name }}-cloud-controller-manager +subjects: +- kind: ServiceAccount + name: {{ .Chart.Name }}-cloud-controller-manager + namespace: {{ .Release.Namespace }} +- kind: User + name: {{ .Chart.Name }}-cloud-controller-manager +{{- end -}} diff --git a/charts/rancher-vsphere-cpi/103.0.0+up1.6.0/templates/role.yaml b/charts/rancher-vsphere-cpi/103.0.0+up1.6.0/templates/role.yaml new file mode 100644 index 0000000000..f26b834ace --- /dev/null +++ b/charts/rancher-vsphere-cpi/103.0.0+up1.6.0/templates/role.yaml @@ -0,0 +1,92 @@ +{{- if .Values.cloudControllerManager.rbac.enabled -}} +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: system:{{ .Chart.Name }}-cloud-controller-manager + labels: + vsphere-cpi-infra: role + component: {{ .Chart.Name }}-cloud-controller-manager +rules: +- apiGroups: + - "" + resources: + - events + verbs: + - create + - patch + - update +- apiGroups: + - "" + resources: + - nodes + verbs: + - "*" +- apiGroups: + - "" + resources: + - nodes/status + verbs: + - patch +- apiGroups: + - "" + resources: + - services + verbs: + - list + - patch + - update + - watch +- apiGroups: + - "" + resources: + - services/status + verbs: + - patch +- apiGroups: + - "" + resources: + - serviceaccounts + verbs: + - create + - get + - list + - watch + - update +- apiGroups: + - "" + resources: + - persistentvolumes + verbs: + - get + - list + - update + - watch +- apiGroups: + - "" + resources: + - endpoints + verbs: + - create + - get + - list + - watch + - update +- apiGroups: + - "" + resources: + - secrets + verbs: + - get + - list + - watch +- apiGroups: + - "coordination.k8s.io" + resources: + - leases + verbs: + - create + - get + - list + - watch + - update +{{- end -}} diff --git a/charts/rancher-vsphere-cpi/103.0.0+up1.6.0/templates/secret.yaml b/charts/rancher-vsphere-cpi/103.0.0+up1.6.0/templates/secret.yaml new file mode 100644 index 0000000000..1fc8ef899e --- /dev/null +++ b/charts/rancher-vsphere-cpi/103.0.0+up1.6.0/templates/secret.yaml @@ -0,0 +1,13 @@ +{{- if .Values.vCenter.credentialsSecret.generate -}} +apiVersion: v1 +kind: Secret +metadata: + name: {{ .Values.vCenter.credentialsSecret.name }} + labels: + vsphere-cpi-infra: secret + component: {{ .Chart.Name }}-cloud-controller-manager + namespace: {{ .Release.Namespace }} +data: + {{ .Values.vCenter.host }}.username: {{ .Values.vCenter.username | b64enc | quote }} + {{ .Values.vCenter.host }}.password: {{ .Values.vCenter.password | b64enc | quote }} +{{- end -}} diff --git a/charts/rancher-vsphere-cpi/103.0.0+up1.6.0/templates/service-account.yaml b/charts/rancher-vsphere-cpi/103.0.0+up1.6.0/templates/service-account.yaml new file mode 100644 index 0000000000..8e269556b6 --- /dev/null +++ b/charts/rancher-vsphere-cpi/103.0.0+up1.6.0/templates/service-account.yaml @@ -0,0 +1,10 @@ +{{- if .Values.cloudControllerManager.rbac.enabled -}} +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ .Chart.Name }}-cloud-controller-manager + labels: + vsphere-cpi-infra: service-account + component: {{ .Chart.Name }}-cloud-controller-manager + namespace: {{ .Release.Namespace }} +{{- end -}} diff --git a/charts/rancher-vsphere-cpi/103.0.0+up1.6.0/templates/service.yaml b/charts/rancher-vsphere-cpi/103.0.0+up1.6.0/templates/service.yaml new file mode 100644 index 0000000000..e50d0b5afb --- /dev/null +++ b/charts/rancher-vsphere-cpi/103.0.0+up1.6.0/templates/service.yaml @@ -0,0 +1,15 @@ +apiVersion: v1 +kind: Service +metadata: + labels: + component: {{ .Chart.Name }}-cloud-controller-manager + name: {{ .Chart.Name }}-cloud-controller-manager + namespace: {{ .Release.Namespace }} +spec: + type: NodePort + ports: + - port: 43001 + protocol: TCP + targetPort: 43001 + selector: + component: {{ .Chart.Name }}-cloud-controller-manager diff --git a/charts/rancher-vsphere-cpi/103.0.0+up1.6.0/values.yaml b/charts/rancher-vsphere-cpi/103.0.0+up1.6.0/values.yaml new file mode 100644 index 0000000000..06de1b6841 --- /dev/null +++ b/charts/rancher-vsphere-cpi/103.0.0+up1.6.0/values.yaml @@ -0,0 +1,96 @@ +vCenter: + host: "" + port: 443 + insecureFlag: true + datacenters: "" + username: "" + password: "" + credentialsSecret: + name: "vsphere-cpi-creds" + generate: true + +# vSphere Tags used to determine the zone and region of a Kubernetes node. This labels will be propagated to NodeLabels + labels: + region: "k8s-region" + zone: "k8s-zone" + generate: false + +# A list of Semver constraint strings (defined by https://github.com/Masterminds/semver) and values.yaml overrides. +# +# For each key in versionOverrides, this chart will check to see if the current Kubernetes cluster's version matches +# any of the semver constraints provided as keys on the map. +# +# On seeing a match, the default value for each values.yaml field overridden will be updated with the new value. +# +# If multiple matches are encountered (due to overlapping semver ranges), the matches will be applied in order. +# +# Notes: +# - On running a helm template, Helm uses the `.Capabilities.APIVersion` of whatever +# Kubernetes release that version of Helm was built against. +# - On running a helm install --dry-run, the correct kubeVersion should be chosen. +# +# Supported versions can be found at: +# https://github.com/kubernetes/cloud-provider-vsphere#compatibility-with-kubernetes +versionOverrides: + - constraint: "~ 1.27" + values: + cloudControllerManager: + repository: rancher/mirrored-cloud-provider-vsphere-cpi-release-manager + tag: v1.27.0 + - constraint: "~ 1.26" + values: + cloudControllerManager: + repository: rancher/mirrored-cloud-provider-vsphere-cpi-release-manager + tag: v1.26.2 + - constraint: "~ 1.25" + values: + cloudControllerManager: + repository: rancher/mirrored-cloud-provider-vsphere-cpi-release-manager + tag: v1.25.3 + - constraint: ">= 1.24 < 1.25" + values: + cloudControllerManager: + repository: rancher/mirrored-cloud-provider-vsphere-cpi-release-manager + tag: v1.24.6 + - constraint: ">= 1.23 < 1.24" + values: + cloudControllerManager: + repository: rancher/mirrored-cloud-provider-vsphere-cpi-release-manager + tag: v1.23.4 + - constraint: "~ 1.22" + values: + cloudControllerManager: + repository: rancher/mirrored-cloud-provider-vsphere-cpi-release-manager + tag: v1.22.8 + - constraint: "~ 1.21" + values: + cloudControllerManager: + repository: rancher/mirrored-cloud-provider-vsphere-cpi-release-manager + tag: v1.21.3 + - constraint: "~ 1.20" + values: + cloudControllerManager: + repository: rancher/mirrored-cloud-provider-vsphere-cpi-release-manager + tag: v1.20.1 + - constraint: "~ 1.19" + values: + cloudControllerManager: + repository: rancher/mirrored-cloud-provider-vsphere-cpi-release-manager + tag: v1.19.0 + - constraint: "~ 1.18" + values: + cloudControllerManager: + repository: rancher/mirrored-cloud-provider-vsphere-cpi-release-manager + tag: v1.18.0 + +cloudControllerManager: + repository: rancher/mirrored-cloud-provider-vsphere-cpi-release-manager + tag: latest + nodeSelector: {} + tolerations: [] + rbac: + enabled: true + +global: + cattle: + systemDefaultRegistry: "" diff --git a/charts/rancher-vsphere-csi/103.0.0+up3.0.2-rancher1/Chart.yaml b/charts/rancher-vsphere-csi/103.0.0+up3.0.2-rancher1/Chart.yaml new file mode 100644 index 0000000000..71e414cbc9 --- /dev/null +++ b/charts/rancher-vsphere-csi/103.0.0+up3.0.2-rancher1/Chart.yaml @@ -0,0 +1,26 @@ +annotations: + catalog.cattle.io/certified: rancher + catalog.cattle.io/display-name: vSphere CSI + catalog.cattle.io/kube-version: '>= 1.20.0-0 < 1.28.0-0' + catalog.cattle.io/namespace: kube-system + catalog.cattle.io/os: linux,windows + catalog.cattle.io/permits-os: linux,windows + catalog.cattle.io/rancher-version: '>= 2.8.0-0 < 2.9.0-0' + catalog.cattle.io/release-name: vsphere-csi +apiVersion: v1 +appVersion: 3.0.2-rancher1 +description: vSphere Cloud Storage Interface (CSI) +icon: https://charts.rancher.io/assets/logos/vsphere-csi.svg +keywords: +- infrastructure +maintainers: +- email: jiaqi.luo@suse.com + name: Jiaqi Luo +- email: anna.blendermann@suse.com + name: Andy Blendermann +- email: brad.davidson@suse.com + name: Brad Davidson +name: rancher-vsphere-csi +sources: +- https://github.com/kubernetes-sigs/vsphere-csi-driver +version: 103.0.0+up3.0.2-rancher1 diff --git a/charts/rancher-vsphere-csi/103.0.0+up3.0.2-rancher1/README.md b/charts/rancher-vsphere-csi/103.0.0+up3.0.2-rancher1/README.md new file mode 100644 index 0000000000..4cb94f45f2 --- /dev/null +++ b/charts/rancher-vsphere-csi/103.0.0+up3.0.2-rancher1/README.md @@ -0,0 +1,84 @@ +# vSphere Container Storage Interface (CSI) + +[vSphere Container Storage Interface (CSI)](https://github.com/kubernetes-sigs/vsphere-csi-driver/tree/release-2.1/manifests/v2.1.0/vsphere-7.0u1/) is a specification designed to enable persistent storage volume management on Container Orchestrators (COs) such as Kubernetes. The specification allows storage systems to integrate with containerized workloads running on Kubernetes. Using CSI, storage providers, such as VMware, can write and deploy plugins for storage systems in Kubernetes without a need to modify any core Kubernetes code. + +CSI allows volume plugins to be installed on Kubernetes clusters as extensions. Once a CSI compatible volume driver is deployed on a Kubernetes cluster, users can use the CSI to provision, attach, mount, and format the volumes exposed by the CSI driver. + +The CSI driver for vSphere is `csi.vsphere.vmware.com`. + +## Prerequisites + +- vSphere 6.7 U3+ +- Kubernetes v1.20+ +- Out-of-tree vSphere Cloud Provider Interface (CPI) +- A Secret on your Kubernetes cluster that contains vSphere CSI configuration and credentials + +## Installation + +This chart requires a Secret in your Kubernetes cluster that contains the CSI configuration and credentials to connect to the vCenter. You can have the chart generate it for you, or create it yourself and provide the name of the Secret during installation. + +Warning: When the option to generate the Secret is enabled, the credentials are visible in the API to authorized users. If you create the Secret yourself they will not be visible. + +You can create a Secret in one of the following ways: + +### Option 1: Create a Secret using the Rancher UI + +Go to your cluster's project (Same project you will be installing the chart) > Resources > Secrets > Add Secret. +```yaml +# Example of data required in the Secret +# The csi-vsphere.conf key name is required, otherwise the installation will fail +csi-vsphere.conf: | + [Global] + cluster-id = "" + user = "" + password = "" + port = "" + insecure-flag = "" + + [VirtualCenter ""] + datacenters = ", , ..." +``` +More information on CSI vSphere configuration [here](https://vsphere-csi-driver.sigs.k8s.io/driver-deployment/installation.html#create_k8s_secret). + +### Option 2: Create a Secret using kubectl + +Replace placeholders with actual values, and execute the following: +```bash +# The csi-vsphere.conf key name is required, otherwise the installation will fail +cat < + namespace: +stringData: + csi-vsphere.conf: | + [Global] + cluster-id = "" + user = "" + password = "" + port = "" + insecure-flag = "" + + [VirtualCenter ""] + datacenters = ", , ..." +EOF +``` + +More information on managing Secrets using kubectl [here](https://kubernetes.io/docs/tasks/configmap-secret/managing-secret-using-kubectl/). + +## Migration + +The CSI migration feature is only available for vSphere 7.0 U1. + +## vSphere CSI with Topology + +When deploying to a vSphere environment using zoning, the topology plugin can be enabled for the CSI to make intelligent volume provisioning decisions. More information on vSphere zoning and prerequisites for the CSI toplogy plugin can be found [here](https://docs.vmware.com/en/VMware-vSphere-Container-Storage-Plug-in/2.0/vmware-vsphere-csp-getting-started/GUID-162E7582-723B-4A0F-A937-3ACE82EAFD31.html#guidelines-and-best-practices-for-deployment-with-topology-0). + +To enable the topology plugin, adjust the values for the chart as follows: + +```yaml +topology: + enabled: true +``` \ No newline at end of file diff --git a/charts/rancher-vsphere-csi/103.0.0+up3.0.2-rancher1/app-readme.md b/charts/rancher-vsphere-csi/103.0.0+up3.0.2-rancher1/app-readme.md new file mode 100644 index 0000000000..bae1876f09 --- /dev/null +++ b/charts/rancher-vsphere-csi/103.0.0+up3.0.2-rancher1/app-readme.md @@ -0,0 +1,14 @@ +# vSphere Container Storage Interface (CSI) + +[vSphere Container Storage Interface (CSI)](https://github.com/kubernetes-sigs/vsphere-csi-driver) is a specification designed to enable persistent storage volume management on Container Orchestrators (COs) such as Kubernetes. The specification allows storage systems to integrate with containerized workloads running on Kubernetes. Using CSI, storage providers, such as VMware, can write and deploy plugins for storage systems in Kubernetes without a need to modify any core Kubernetes code. + +CSI allows volume plugins to be installed on Kubernetes clusters as extensions. Once a CSI compatible volume driver is deployed on a Kubernetes cluster, users can use the CSI to provision, attach, mount, and format the volumes exposed by the CSI driver. + +The CSI driver for vSphere is `csi.vsphere.vmware.com`. + +## Prerequisites + +- vSphere 6.7 U3+ +- Kubernetes v1.14+ +- Out-of-tree vSphere Cloud Provider Interface (CPI) +- A Secret on your Kubernetes cluster that contains vSphere CSI configuration and credentials (Refer to `README` or `Detailed Descriptions`) diff --git a/charts/rancher-vsphere-csi/103.0.0+up3.0.2-rancher1/questions.yaml b/charts/rancher-vsphere-csi/103.0.0+up3.0.2-rancher1/questions.yaml new file mode 100644 index 0000000000..d02e91f757 --- /dev/null +++ b/charts/rancher-vsphere-csi/103.0.0+up3.0.2-rancher1/questions.yaml @@ -0,0 +1,148 @@ +questions: + - variable: vCenter.configSecret.generate + label: Generate CSI vSphere Config Secret + description: Generates a Secret that contains a CSI vSphere config and credentials (If the option to generate it is enabled, credentials will be visible in the API to authorized users) + type: boolean + default: true + required: true + group: vCenter Configuration + show_subquestion_if: true + subquestions: + - variable: vCenter.host + label: vCenter Host + description: IP address or FQDN of the vCenter + type: string + + - variable: vCenter.datacenters + description: Comma-separated list of paths to data centers. E.g ", , ..." + label: Data Centers + type: string + + - variable: vCenter.username + label: Username + description: Username for vCenter + type: string + + - variable: vCenter.password + label: Password + description: Password for vCenter + type: password + + - variable: vCenter.configSecret.name + label: CSI vSphere Config Secret Name + description: Name of the Secret that contains a CSI vSphere config and credentials (Will not be visible in the API. More info in the README) + type: string + group: vCenter Configuration + show_if: "vCenter.configSecret.generate=false" + + - variable: csiMigration.enabled + label: Enable CSI Migration + description: Enable migration of volumes provisioned by in-tree vSphere provider to CSI (Available for vSphere 7.0 U1+ only) + type: boolean + default: false + group: Driver Configuration + + - variable: csiAuthCheck.enabled + label: Enable authorization checks on operations involving datastores + type: boolean + default: false + group: Driver Configuration + + - variable: onlineVolumeExtend.enabled + label: Enable Online Volume Extend + description: Enable expansion of PVCs that are in use by a Pod or mounted in a Node (Available for vSphere 7.0 U2+ only) + type: boolean + default: false + group: Driver Configuration + + - variable: triggerCsiFullsync.enabled + label: Enable CSI Full Sync + description: Keeps CNS up to date with Kubernetes volume metadata information (such as PVs, PVCs, pods, and so on) + type: boolean + default: false + group: Driver Configuration + + - variable: asyncQueryVolume.enabled + label: Enable Async Query Volume + description: Improves retrieval of volume information + type: boolean + default: false + group: Driver Configuration + + - variable: improvedCsiIdempotency.enabled + label: Enable Improved CSI Idempotency + description: Enhances driver to ensure volume operations are idempotent + type: boolean + default: false + group: Driver Configuration + + - variable: improvedVolumeTopology.enabled + label: Enable Improved Volume Topology + description: Allows using the topology feature without the need to mount vSphere credentials in the CSI node daemonset + type: boolean + default: false + group: Driver Configuration + + - variable: csiWindowsSupport.enabled + label: Enable CSI Windows Support + description: Enables Windows support. + type: boolean + default: false + group: Driver Configuration + + - variable: topology.enabled + label: Enable CSI Topology Plugin + description: Enables the CSI Topology Plugin + type: boolean + default: false + group: Driver Configuration + + - variable: csiController.csiResizer.enabled + label: Enable CSI Volume Resizer + description: This feature is available for vSphere 7.0 U1+ only + type: boolean + default: false + group: Storage + + - variable: storageClass.enabled + default: true + label: Create Storage Class + description: Create a storageClass with the vSphere CSI provisioner + type: boolean + required: true + show_subquestion_if: true + group: Storage + subquestions: + - variable: storageClass.name + label: Storage Class Name + default: "vsphere-csi-sc" + type: string + + - variable: storageClass.isDefault + label: Default Storage Class + description: Set the Storage Class as the default + default: true + type: boolean + + - variable: storageClass.allowVolumeExpansion + label: Allow Volume Expansion + description: Allows resizing the volume by editing the corresponding PVC object (Available for vSphere 7.0+ only) + default: false + type: boolean + + - variable: storageClass.storagePolicyName + label: Storage Policy Name + description: Name of the Storage Policy created in vCenter + type: string + + - variable: storageClass.datastoreURL + label: Data Store URL + description: URL of the data store to use for new volumes (If unspecified, any data store that matches the request will be selected). + type: string + + - variable: csiNode.prefixPath + label: Prefix Path for `/var/lib/kubelet` + description: For some operating systems including RancherOS, RKE prefixes `/var/lib/kubelet` with `/opt/rke`. Add the prefix path of the location of /var/lib/kubelet + type: string + default: "" + group: Node Configuration diff --git a/charts/rancher-vsphere-csi/103.0.0+up3.0.2-rancher1/templates/_helpers.tpl b/charts/rancher-vsphere-csi/103.0.0+up3.0.2-rancher1/templates/_helpers.tpl new file mode 100644 index 0000000000..a608baf1d7 --- /dev/null +++ b/charts/rancher-vsphere-csi/103.0.0+up3.0.2-rancher1/templates/_helpers.tpl @@ -0,0 +1,32 @@ +{{- define "system_default_registry" -}} +{{- if .Values.global.cattle.systemDefaultRegistry -}} +{{- printf "%s/" .Values.global.cattle.systemDefaultRegistry -}} +{{- else -}} +{{- "" -}} +{{- end -}} +{{- end -}} + +{{- define "applyVersionOverrides" -}} +{{- $overrides := dict -}} +{{- range $override := .Values.versionOverrides -}} +{{- if semverCompare $override.constraint $.Capabilities.KubeVersion.Version -}} +{{- $_ := mergeOverwrite $overrides $override.values -}} +{{- end -}} +{{- end -}} +{{- $_ := mergeOverwrite .Values $overrides -}} +{{- end -}} + +{{/* +Windows cluster will add default taint for linux nodes, +add below linux tolerations to workloads could be scheduled to those linux nodes +*/}} +{{- define "linux-node-tolerations" -}} +- key: "cattle.io/os" + value: "linux" + effect: "NoSchedule" + operator: "Equal" +{{- end -}} + +{{- define "linux-node-selector" -}} +kubernetes.io/os: linux +{{- end -}} \ No newline at end of file diff --git a/charts/rancher-vsphere-csi/103.0.0+up3.0.2-rancher1/templates/configmap.yaml b/charts/rancher-vsphere-csi/103.0.0+up3.0.2-rancher1/templates/configmap.yaml new file mode 100644 index 0000000000..9742ca3630 --- /dev/null +++ b/charts/rancher-vsphere-csi/103.0.0+up3.0.2-rancher1/templates/configmap.yaml @@ -0,0 +1,22 @@ +# Source: https://github.com/kubernetes-sigs/vsphere-csi-driver +apiVersion: v1 +data: + "csi-migration": {{ .Values.csiMigration.enabled | quote }} + "csi-auth-check": {{ .Values.csiAuthCheck.enabled | quote }} + "online-volume-extend": {{ .Values.onlineVolumeExtend.enabled | quote }} + "trigger-csi-fullsync": {{ .Values.triggerCsiFullsync.enabled | quote }} + "async-query-volume": {{ .Values.asyncQueryVolume.enabled | quote }} + "improved-csi-idempotency": {{ .Values.improvedCsiIdempotency.enabled | quote }} + "improved-volume-topology": {{ .Values.improvedVolumeTopology.enabled | quote }} + "block-volume-snapshot": {{ .Values.blockVolumeSnapshot.enabled | quote }} + "csi-windows-support": {{ .Values.csiWindowsSupport.enabled | quote }} + "use-csinode-id": {{ .Values.useCsinodeId.enabled | quote }} + "list-volumes": {{ .Values.listVolumes.enabled | quote }} + "pv-to-backingdiskobjectid-mapping": {{ .Values.pvToBackingdiskobjectidMapping.enabled | quote }} + "cnsmgr-suspend-create-volume": {{ .Values.cnsmgrSuspendCreateVolume.enabled | quote }} + "topology-preferential-datastores": {{ .Values.topologyPreferentialDatastores.enabled | quote }} + "max-pvscsi-targets-per-vm": {{ .Values.maxPvscsiTargetsPerVm.enabled | quote }} +kind: ConfigMap +metadata: + name: internal-feature-states.csi.vsphere.vmware.com + namespace: {{ .Release.Namespace }} diff --git a/charts/rancher-vsphere-csi/103.0.0+up3.0.2-rancher1/templates/controller/deployment.yaml b/charts/rancher-vsphere-csi/103.0.0+up3.0.2-rancher1/templates/controller/deployment.yaml new file mode 100644 index 0000000000..7e5600324d --- /dev/null +++ b/charts/rancher-vsphere-csi/103.0.0+up3.0.2-rancher1/templates/controller/deployment.yaml @@ -0,0 +1,228 @@ +{{- template "applyVersionOverrides" . -}} +kind: Deployment +apiVersion: apps/v1 +metadata: + name: vsphere-csi-controller + namespace: {{ .Release.Namespace }} +spec: + replicas: 3 + strategy: + type: RollingUpdate + rollingUpdate: + maxUnavailable: 1 + maxSurge: 0 + selector: + matchLabels: + app: vsphere-csi-controller + template: + metadata: + labels: + app: vsphere-csi-controller + role: vsphere-csi + spec: + serviceAccountName: vsphere-csi-controller + {{- if .Values.csiController.nodeSelector }} + nodeSelector: {{ include "linux-node-selector" . | nindent 8 }} + {{- with .Values.csiController.nodeSelector }} + {{- toYaml . | nindent 8 }} + {{- end }} + {{- else }} + affinity: + nodeAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + nodeSelectorTerms: + - matchExpressions: + # RKE node selector label + - key: node-role.kubernetes.io/controlplane + operator: In + values: + - "true" + # Rancher node selector label + - key: kubernetes.io/os + operator: NotIn + values: + - "windows" + - matchExpressions: + # RKE2 node selector label + - key: node-role.kubernetes.io/control-plane + operator: In + values: + - "true" + # Rancher node selector label + - key: kubernetes.io/os + operator: NotIn + values: + - "windows" + {{- end }} + {{- if .Values.csiController.tolerations }} + tolerations: {{ include "linux-node-tolerations" . | nindent 8 }} + {{- with .Values.csiController.tolerations }} + {{- toYaml . | nindent 8 }} + {{- end }} + {{- else }} + tolerations: + - key: node-role.kubernetes.io/master + operator: Exists + effect: NoSchedule + # Rancher specific change: These tolerations are added to account for RKE1 and RKE2 taints + - key: node-role.kubernetes.io/controlplane + effect: NoSchedule + value: "true" + - key: node-role.kubernetes.io/control-plane + effect: NoSchedule + operator: Exists + - key: node-role.kubernetes.io/etcd + effect: NoExecute + operator: Exists + {{- end }} + dnsPolicy: "Default" + containers: + - name: csi-attacher + image: "{{ template "system_default_registry" . }}{{ .Values.csiController.image.csiAttacher.repository }}:{{ .Values.csiController.image.csiAttacher.tag }}" + args: + - "--v=4" + - "--timeout=300s" + - "--csi-address=$(ADDRESS)" + - "--leader-election" + - "--kube-api-qps=100" + - "--kube-api-burst=100" + env: + - name: ADDRESS + value: /csi/csi.sock + volumeMounts: + - mountPath: /csi + name: socket-dir +{{- if .Values.csiController.csiResizer.enabled }} + - name: csi-resizer + image: "{{ template "system_default_registry" . }}{{ .Values.csiController.image.csiResizer.repository }}:{{ .Values.csiController.image.csiResizer.tag }}" + args: + - "--v=4" + - "--timeout=300s" + - "--handle-volume-inuse-error=false" + - "--csi-address=$(ADDRESS)" + - "--kube-api-qps=100" + - "--kube-api-burst=100" + - "--leader-election" + env: + - name: ADDRESS + value: /csi/csi.sock + volumeMounts: + - mountPath: /csi + name: socket-dir +{{- end }} + - name: vsphere-csi-controller + image: "{{ template "system_default_registry" . }}{{ .Values.csiController.image.repository }}:{{ .Values.csiController.image.tag }}" + args: + - "--fss-name=internal-feature-states.csi.vsphere.vmware.com" + - "--fss-namespace=$(CSI_NAMESPACE)" + {{- if semverCompare "< 1.24" $.Capabilities.KubeVersion.Version }} + - "--use-gocsi=false" + {{- end }} + imagePullPolicy: "Always" + env: + - name: CSI_ENDPOINT + value: unix:///csi/csi.sock + - name: X_CSI_MODE + value: "controller" + - name: X_CSI_SPEC_DISABLE_LEN_CHECK + value: "true" + - name: X_CSI_SERIAL_VOL_ACCESS_TIMEOUT + value: 3m + - name: VSPHERE_CSI_CONFIG + value: "/etc/cloud/csi-vsphere.conf" + - name: LOGGER_LEVEL + value: "PRODUCTION" # Options: DEVELOPMENT, PRODUCTION + - name: INCLUSTER_CLIENT_QPS + value: "100" + - name: INCLUSTER_CLIENT_BURST + value: "100" + - name: CSI_NAMESPACE + valueFrom: + fieldRef: + fieldPath: metadata.namespace + volumeMounts: + - mountPath: /etc/cloud + name: vsphere-config-volume + readOnly: true + - mountPath: /csi + name: socket-dir + ports: + - name: healthz + containerPort: 9808 + protocol: TCP + - name: prometheus + containerPort: 2112 + protocol: TCP + livenessProbe: + httpGet: + path: /healthz + port: healthz + initialDelaySeconds: 10 + timeoutSeconds: 3 + periodSeconds: 5 + failureThreshold: 3 + - name: liveness-probe + image: "{{ template "system_default_registry" . }}{{ .Values.csiController.image.livenessProbe.repository }}:{{ .Values.csiController.image.livenessProbe.tag }}" + args: + - "--v=4" + - "--csi-address=/csi/csi.sock" + volumeMounts: + - name: socket-dir + mountPath: /csi + - name: vsphere-syncer + image: "{{ template "system_default_registry" . }}{{ .Values.csiController.image.vsphereSyncer.repository }}:{{ .Values.csiController.image.vsphereSyncer.tag }}" + args: + - "--leader-election" + - "--fss-name=internal-feature-states.csi.vsphere.vmware.com" + - "--fss-namespace=$(CSI_NAMESPACE)" + imagePullPolicy: "Always" + ports: + - containerPort: 2113 + name: prometheus + protocol: TCP + env: + - name: FULL_SYNC_INTERVAL_MINUTES + value: "30" + - name: VSPHERE_CSI_CONFIG + value: "/etc/cloud/csi-vsphere.conf" + - name: LOGGER_LEVEL + value: "PRODUCTION" # Options: DEVELOPMENT, PRODUCTION + - name: INCLUSTER_CLIENT_QPS + value: "100" + - name: INCLUSTER_CLIENT_BURST + value: "100" + - name: CSI_NAMESPACE + valueFrom: + fieldRef: + fieldPath: metadata.namespace + volumeMounts: + - mountPath: /etc/cloud + name: vsphere-config-volume + readOnly: true + - name: csi-provisioner + image: "{{ template "system_default_registry" . }}{{ .Values.csiController.image.csiProvisioner.repository }}:{{ .Values.csiController.image.csiProvisioner.tag }}" + args: + - "--v=4" + - "--timeout=300s" + - "--csi-address=$(ADDRESS)" + - "--kube-api-qps=100" + - "--kube-api-burst=100" + - "--leader-election" + - "--default-fstype=ext4" + {{- if .Values.topology.enabled }} + # needed only for topology aware setup + - "--feature-gates=Topology=true" + - "--strict-topology" + {{- end }} + env: + - name: ADDRESS + value: /csi/csi.sock + volumeMounts: + - mountPath: /csi + name: socket-dir + volumes: + - name: vsphere-config-volume + secret: + secretName: {{ .Values.vCenter.configSecret.name }} + - name: socket-dir + emptyDir: {} diff --git a/charts/rancher-vsphere-csi/103.0.0+up3.0.2-rancher1/templates/controller/role-binding.yaml b/charts/rancher-vsphere-csi/103.0.0+up3.0.2-rancher1/templates/controller/role-binding.yaml new file mode 100644 index 0000000000..0a30fd71c6 --- /dev/null +++ b/charts/rancher-vsphere-csi/103.0.0+up3.0.2-rancher1/templates/controller/role-binding.yaml @@ -0,0 +1,12 @@ +kind: ClusterRoleBinding +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + name: vsphere-csi-controller-binding +subjects: + - kind: ServiceAccount + name: vsphere-csi-controller + namespace: {{ .Release.Namespace }} +roleRef: + kind: ClusterRole + name: vsphere-csi-controller-role + apiGroup: rbac.authorization.k8s.io diff --git a/charts/rancher-vsphere-csi/103.0.0+up3.0.2-rancher1/templates/controller/role.yaml b/charts/rancher-vsphere-csi/103.0.0+up3.0.2-rancher1/templates/controller/role.yaml new file mode 100644 index 0000000000..0d869f7950 --- /dev/null +++ b/charts/rancher-vsphere-csi/103.0.0+up3.0.2-rancher1/templates/controller/role.yaml @@ -0,0 +1,59 @@ +kind: ClusterRole +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + name: vsphere-csi-controller-role +rules: + - apiGroups: [""] + resources: ["nodes", "pods", "configmaps"] + verbs: ["get", "list", "watch"] + - apiGroups: [""] + resources: ["persistentvolumeclaims"] + verbs: ["get", "list", "watch", "update"] + - apiGroups: [""] + resources: ["persistentvolumeclaims/status"] + verbs: ["patch"] + - apiGroups: [""] + resources: ["persistentvolumes"] + verbs: ["get", "list", "watch", "create", "update", "delete", "patch"] + - apiGroups: [""] + resources: ["events"] + verbs: ["get", "list", "watch", "create", "update", "patch"] + - apiGroups: ["coordination.k8s.io"] + resources: ["leases"] + verbs: ["get", "watch", "list", "delete", "update", "create"] + - apiGroups: ["storage.k8s.io"] + resources: ["storageclasses", "csinodes"] + verbs: ["get", "list", "watch"] + - apiGroups: ["storage.k8s.io"] + resources: ["volumeattachments"] + verbs: ["get", "list", "watch", "patch"] + - apiGroups: ["cns.vmware.com"] + resources: ["triggercsifullsyncs"] + verbs: ["create", "get", "update", "watch", "list"] + - apiGroups: ["cns.vmware.com"] + resources: ["cnsvspherevolumemigrations"] + verbs: ["create", "get", "list", "watch", "update", "delete"] + - apiGroups: ["apiextensions.k8s.io"] + resources: ["customresourcedefinitions"] + verbs: ["get", "create", "update"] + - apiGroups: ["storage.k8s.io"] + resources: ["volumeattachments/status"] + verbs: ["patch"] + - apiGroups: ["cns.vmware.com"] + resources: ["cnsvolumeoperationrequests"] + verbs: ["create", "get", "list", "update", "delete"] + - apiGroups: [ "snapshot.storage.k8s.io" ] + resources: [ "volumesnapshots" ] + verbs: [ "get", "list" ] + - apiGroups: [ "snapshot.storage.k8s.io" ] + resources: [ "volumesnapshotclasses" ] + verbs: [ "watch", "get", "list" ] + - apiGroups: [ "snapshot.storage.k8s.io" ] + resources: [ "volumesnapshotcontents" ] + verbs: [ "create", "get", "list", "watch", "update", "delete", "patch"] + - apiGroups: [ "snapshot.storage.k8s.io" ] + resources: [ "volumesnapshotcontents/status" ] + verbs: [ "update", "patch" ] + - apiGroups: [ "cns.vmware.com" ] + resources: [ "csinodetopologies" ] + verbs: ["get", "update", "watch", "list"] diff --git a/charts/rancher-vsphere-csi/103.0.0+up3.0.2-rancher1/templates/controller/service-account.yaml b/charts/rancher-vsphere-csi/103.0.0+up3.0.2-rancher1/templates/controller/service-account.yaml new file mode 100644 index 0000000000..b6dbe5d32a --- /dev/null +++ b/charts/rancher-vsphere-csi/103.0.0+up3.0.2-rancher1/templates/controller/service-account.yaml @@ -0,0 +1,5 @@ +kind: ServiceAccount +apiVersion: v1 +metadata: + name: vsphere-csi-controller + namespace: {{ .Release.Namespace }} diff --git a/charts/rancher-vsphere-csi/103.0.0+up3.0.2-rancher1/templates/controller/service.yaml b/charts/rancher-vsphere-csi/103.0.0+up3.0.2-rancher1/templates/controller/service.yaml new file mode 100644 index 0000000000..c3aa0e4336 --- /dev/null +++ b/charts/rancher-vsphere-csi/103.0.0+up3.0.2-rancher1/templates/controller/service.yaml @@ -0,0 +1,19 @@ +apiVersion: v1 +kind: Service +metadata: + name: vsphere-csi-controller + namespace: {{ .Release.Namespace }} + labels: + app: vsphere-csi-controller +spec: + ports: + - name: ctlr + port: 2112 + targetPort: 2112 + protocol: TCP + - name: syncer + port: 2113 + targetPort: 2113 + protocol: TCP + selector: + app: vsphere-csi-controller diff --git a/charts/rancher-vsphere-csi/103.0.0+up3.0.2-rancher1/templates/csi-driver.yaml b/charts/rancher-vsphere-csi/103.0.0+up3.0.2-rancher1/templates/csi-driver.yaml new file mode 100644 index 0000000000..9b6909e6ac --- /dev/null +++ b/charts/rancher-vsphere-csi/103.0.0+up3.0.2-rancher1/templates/csi-driver.yaml @@ -0,0 +1,8 @@ +# Source: https://github.com/kubernetes-sigs/vsphere-csi-driver +apiVersion: storage.k8s.io/v1 # For k8s 1.17 use storage.k8s.io/v1beta1 +kind: CSIDriver +metadata: + name: csi.vsphere.vmware.com +spec: + attachRequired: true + podInfoOnMount: false diff --git a/charts/rancher-vsphere-csi/103.0.0+up3.0.2-rancher1/templates/node/daemonset.yaml b/charts/rancher-vsphere-csi/103.0.0+up3.0.2-rancher1/templates/node/daemonset.yaml new file mode 100644 index 0000000000..2d14bde132 --- /dev/null +++ b/charts/rancher-vsphere-csi/103.0.0+up3.0.2-rancher1/templates/node/daemonset.yaml @@ -0,0 +1,180 @@ +{{- template "applyVersionOverrides" . -}} +kind: DaemonSet +apiVersion: apps/v1 +metadata: + name: vsphere-csi-node + namespace: {{ .Release.Namespace }} +spec: + selector: + matchLabels: + app: vsphere-csi-node + updateStrategy: + type: "RollingUpdate" + rollingUpdate: + maxUnavailable: 1 + template: + metadata: + labels: + app: vsphere-csi-node + role: vsphere-csi + spec: + {{- if .Values.csiNode.nodeSelector }} + nodeSelector: {{ include "linux-node-selector" . | nindent 8 }} + {{- with .Values.csiNode.nodeSelector }} + {{- toYaml . | nindent 8 }} + {{- end }} + {{- else }} + affinity: + nodeAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + nodeSelectorTerms: + - matchExpressions: + # Rancher node selector label + - key: kubernetes.io/os + operator: NotIn + values: + - "windows" + {{- end }} + {{- if .Values.csiNode.tolerations }} + tolerations: {{ include "linux-node-tolerations" . | nindent 8 }} + {{- with .Values.csiNode.tolerations }} + {{- toYaml . | nindent 8 }} + {{- end }} + {{- else }} + tolerations: + - key: node-role.kubernetes.io/master + operator: Exists + effect: NoSchedule + # Rancher specific change: These tolerations are added to account for RKE1 and RKE2 taints + - key: node-role.kubernetes.io/controlplane + effect: NoSchedule + value: "true" + - key: node-role.kubernetes.io/control-plane + effect: NoSchedule + operator: Exists + - key: node-role.kubernetes.io/etcd + effect: NoExecute + operator: Exists + {{- end }} + serviceAccountName: vsphere-csi-node + hostNetwork: true + dnsPolicy: "ClusterFirstWithHostNet" + containers: + - name: node-driver-registrar + image: "{{ template "system_default_registry" . }}{{ .Values.csiNode.image.nodeDriverRegistrar.repository }}:{{ .Values.csiNode.image.nodeDriverRegistrar.tag }}" + args: + - "--v=5" + - "--csi-address=$(ADDRESS)" + - "--kubelet-registration-path=$(DRIVER_REG_SOCK_PATH)" + env: + - name: ADDRESS + value: /csi/csi.sock + - name: DRIVER_REG_SOCK_PATH + value: {{ .Values.csiNode.prefixPath }}/var/lib/kubelet/plugins/csi.vsphere.vmware.com/csi.sock + volumeMounts: + - name: plugin-dir + mountPath: /csi + - name: registration-dir + mountPath: /registration + livenessProbe: + exec: + command: + - /csi-node-driver-registrar + - --kubelet-registration-path=/var/lib/kubelet/plugins/csi.vsphere.vmware.com/csi.sock + - --mode=kubelet-registration-probe + initialDelaySeconds: 3 + - name: vsphere-csi-node + image: "{{ template "system_default_registry" . }}{{ .Values.csiNode.image.repository }}:{{ .Values.csiNode.image.tag }}" + args: + - "--fss-name=internal-feature-states.csi.vsphere.vmware.com" + - "--fss-namespace=$(CSI_NAMESPACE)" + {{- if semverCompare "< 1.24" $.Capabilities.KubeVersion.Version }} + - "--use-gocsi=false" + {{- end }} + imagePullPolicy: "Always" + env: + - name: NODE_NAME + valueFrom: + fieldRef: + fieldPath: spec.nodeName + - name: CSI_ENDPOINT + value: unix:///csi/csi.sock + - name: MAX_VOLUMES_PER_NODE + value: "59" # Maximum number of volumes that controller can publish to the node. If value is not set or zero Kubernetes decide how many volumes can be published by the controller to the node. + - name: X_CSI_MODE + value: "node" + - name: X_CSI_SPEC_REQ_VALIDATION + value: "false" + - name: X_CSI_SPEC_DISABLE_LEN_CHECK + value: "true" + - name: LOGGER_LEVEL + value: "PRODUCTION" # Options: DEVELOPMENT, PRODUCTION + - name: CSI_NAMESPACE + valueFrom: + fieldRef: + fieldPath: metadata.namespace + - name: NODEGETINFO_WATCH_TIMEOUT_MINUTES + value: "1" + securityContext: + privileged: true + capabilities: + add: ["SYS_ADMIN"] + allowPrivilegeEscalation: true + volumeMounts: + - name: plugin-dir + mountPath: /csi + - name: pods-mount-dir + mountPath: {{ .Values.csiNode.prefixPath }}/var/lib/kubelet + # needed so that any mounts setup inside this container are + # propagated back to the host machine. + mountPropagation: "Bidirectional" + - name: device-dir + mountPath: /dev + - name: blocks-dir + mountPath: /sys/block + - name: sys-devices-dir + mountPath: /sys/devices + ports: + - name: healthz + containerPort: 9808 + protocol: TCP + livenessProbe: + httpGet: + path: /healthz + port: healthz + initialDelaySeconds: 10 + timeoutSeconds: 5 + periodSeconds: 5 + failureThreshold: 3 + - name: liveness-probe + image: "{{ template "system_default_registry" . }}{{ .Values.csiNode.image.livenessProbe.repository }}:{{ .Values.csiNode.image.livenessProbe.tag }}" + args: + - "--v=4" + - "--csi-address=/csi/csi.sock" + volumeMounts: + - name: plugin-dir + mountPath: /csi + volumes: + - name: registration-dir + hostPath: + path: {{ .Values.csiNode.prefixPath }}/var/lib/kubelet/plugins_registry + type: Directory + - name: plugin-dir + hostPath: + path: {{ .Values.csiNode.prefixPath }}/var/lib/kubelet/plugins/csi.vsphere.vmware.com + type: DirectoryOrCreate + - name: pods-mount-dir + hostPath: + path: {{ .Values.csiNode.prefixPath }}/var/lib/kubelet + type: Directory + - name: device-dir + hostPath: + path: /dev + - name: blocks-dir + hostPath: + path: /sys/block + type: Directory + - name: sys-devices-dir + hostPath: + path: /sys/devices + type: Directory diff --git a/charts/rancher-vsphere-csi/103.0.0+up3.0.2-rancher1/templates/node/role-binding.yaml b/charts/rancher-vsphere-csi/103.0.0+up3.0.2-rancher1/templates/node/role-binding.yaml new file mode 100644 index 0000000000..c968ef0a79 --- /dev/null +++ b/charts/rancher-vsphere-csi/103.0.0+up3.0.2-rancher1/templates/node/role-binding.yaml @@ -0,0 +1,28 @@ +kind: RoleBinding +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + name: vsphere-csi-node-binding + namespace: {{ .Release.Namespace }} +subjects: + - kind: ServiceAccount + name: vsphere-csi-node + namespace: {{ .Release.Namespace }} +roleRef: + kind: Role + name: vsphere-csi-node-role + apiGroup: rbac.authorization.k8s.io + +--- + +kind: ClusterRoleBinding +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + name: vsphere-csi-node-cluster-role-binding +subjects: + - kind: ServiceAccount + name: vsphere-csi-node + namespace: {{ .Release.Namespace }} +roleRef: + kind: ClusterRole + name: vsphere-csi-node-cluster-role + apiGroup: rbac.authorization.k8s.io diff --git a/charts/rancher-vsphere-csi/103.0.0+up3.0.2-rancher1/templates/node/role.yaml b/charts/rancher-vsphere-csi/103.0.0+up3.0.2-rancher1/templates/node/role.yaml new file mode 100644 index 0000000000..74546d0a5e --- /dev/null +++ b/charts/rancher-vsphere-csi/103.0.0+up3.0.2-rancher1/templates/node/role.yaml @@ -0,0 +1,25 @@ +kind: Role +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + name: vsphere-csi-node-role + namespace: {{ .Release.Namespace }} +rules: + - apiGroups: [""] + resources: ["configmaps"] + verbs: ["get", "list", "watch"] +--- +kind: ClusterRole +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + name: vsphere-csi-node-cluster-role +rules: + - apiGroups: ["cns.vmware.com"] + resources: ["csinodetopologies"] +{{- if semverCompare ">= 1.21" $.Capabilities.KubeVersion.Version }} + verbs: ["create", "watch", "get", "patch"] +{{- else }} + verbs: ["create", "watch"] +{{- end }} + - apiGroups: [""] + resources: ["nodes"] + verbs: ["get"] diff --git a/charts/rancher-vsphere-csi/103.0.0+up3.0.2-rancher1/templates/node/service-account.yaml b/charts/rancher-vsphere-csi/103.0.0+up3.0.2-rancher1/templates/node/service-account.yaml new file mode 100644 index 0000000000..d2d452876e --- /dev/null +++ b/charts/rancher-vsphere-csi/103.0.0+up3.0.2-rancher1/templates/node/service-account.yaml @@ -0,0 +1,5 @@ +kind: ServiceAccount +apiVersion: v1 +metadata: + name: vsphere-csi-node + namespace: {{ .Release.Namespace }} diff --git a/charts/rancher-vsphere-csi/103.0.0+up3.0.2-rancher1/templates/node/windows-daemonset.yaml b/charts/rancher-vsphere-csi/103.0.0+up3.0.2-rancher1/templates/node/windows-daemonset.yaml new file mode 100644 index 0000000000..4ae7faec8d --- /dev/null +++ b/charts/rancher-vsphere-csi/103.0.0+up3.0.2-rancher1/templates/node/windows-daemonset.yaml @@ -0,0 +1,167 @@ +{{- if .Values.csiWindowsSupport.enabled }} +{{- template "applyVersionOverrides" . -}} +kind: DaemonSet +apiVersion: apps/v1 +metadata: + name: vsphere-csi-node-windows + namespace: {{ .Release.Namespace }} +spec: + selector: + matchLabels: + app: vsphere-csi-node-windows + updateStrategy: + type: RollingUpdate + rollingUpdate: + maxUnavailable: 1 + template: + metadata: + labels: + app: vsphere-csi-node-windows + role: vsphere-csi-windows + spec: + nodeSelector: + kubernetes.io/os: windows + {{- if .Values.csiNode.tolerations }} + tolerations: + {{- with .Values.csiNode.tolerations }} + {{- toYaml . | nindent 6 }} + {{- end }} + {{- else }} + tolerations: + - key: node-role.kubernetes.io/master + operator: Exists + effect: NoSchedule + # Rancher specific change: These tolerations are added to account for RKE1 and RKE2 taints + - key: node-role.kubernetes.io/controlplane + effect: NoSchedule + value: "true" + - key: node-role.kubernetes.io/control-plane + effect: NoSchedule + operator: Exists + - key: node-role.kubernetes.io/etcd + effect: NoExecute + operator: Exists + {{- end }} + serviceAccountName: vsphere-csi-node + containers: + - name: node-driver-registrar + image: "{{ template "system_default_registry" . }}{{ .Values.csiNode.image.nodeDriverRegistrar.repository }}:{{ .Values.csiNode.image.nodeDriverRegistrar.tag }}" + args: + - "--v=5" + - "--csi-address=$(ADDRESS)" + - "--kubelet-registration-path=$(DRIVER_REG_SOCK_PATH)" + {{- if semverCompare "< 1.24" $.Capabilities.KubeVersion.Version }} + - "--health-port=9809" + {{- end }} + env: + - name: ADDRESS + value: 'unix://C:\\csi\\csi.sock' + - name: DRIVER_REG_SOCK_PATH + value: {{ .Values.csiNode.prefixPath }}'\\var\\lib\\kubelet\\plugins\\csi.vsphere.vmware.com\\csi.sock' + volumeMounts: + - name: plugin-dir + mountPath: /csi + - name: registration-dir + mountPath: /registration + livenessProbe: + exec: + command: + - /csi-node-driver-registrar.exe + - --kubelet-registration-path=C:\\var\\lib\\kubelet\\plugins\\csi.vsphere.vmware.com\\csi.sock + - --mode=kubelet-registration-probe + initialDelaySeconds: 3 + - name: vsphere-csi-node + image: "{{ template "system_default_registry" . }}{{ .Values.csiNode.image.repository }}:{{ .Values.csiNode.image.tag }}" + args: + - "--fss-name=internal-feature-states.csi.vsphere.vmware.com" + - "--fss-namespace=$(CSI_NAMESPACE)" + imagePullPolicy: "Always" + env: + - name: NODE_NAME + valueFrom: + fieldRef: + apiVersion: v1 + fieldPath: spec.nodeName + - name: CSI_ENDPOINT + value: 'unix://C:\\csi\\csi.sock' + - name: MAX_VOLUMES_PER_NODE + value: "0" # Maximum number of volumes that controller can publish to the node. If value is not set or zero Kubernetes decide how many volumes can be published by the controller to the node. + - name: X_CSI_MODE + value: node + - name: X_CSI_SPEC_REQ_VALIDATION + value: 'false' + - name: X_CSI_SPEC_DISABLE_LEN_CHECK + value: "true" + - name: LOGGER_LEVEL + value: "PRODUCTION" # Options: DEVELOPMENT, PRODUCTION + - name: X_CSI_LOG_LEVEL + value: DEBUG + - name: CSI_NAMESPACE + valueFrom: + fieldRef: + fieldPath: metadata.namespace + - name: NODEGETINFO_WATCH_TIMEOUT_MINUTES + value: "1" + volumeMounts: + - name: plugin-dir + mountPath: 'C:\csi' + - name: pods-mount-dir + mountPath: 'C:\var\lib\kubelet' + - name: csi-proxy-volume-v1 + mountPath: \\.\pipe\csi-proxy-volume-v1 + - name: csi-proxy-filesystem-v1 + mountPath: \\.\pipe\csi-proxy-filesystem-v1 + - name: csi-proxy-disk-v1 + mountPath: \\.\pipe\csi-proxy-disk-v1 + - name: csi-proxy-system-v1alpha1 + mountPath: \\.\pipe\csi-proxy-system-v1alpha1 + ports: + - name: healthz + containerPort: 9808 + protocol: TCP + livenessProbe: + httpGet: + path: /healthz + port: healthz + initialDelaySeconds: 10 + timeoutSeconds: 5 + periodSeconds: 5 + failureThreshold: 3 + - name: liveness-probe + image: "{{ template "system_default_registry" . }}{{ .Values.csiNode.image.livenessProbe.repository }}:{{ .Values.csiNode.image.livenessProbe.tag }}" + args: + - "--v=4" + - "--csi-address=/csi/csi.sock" + volumeMounts: + - name: plugin-dir + mountPath: /csi + volumes: + - name: registration-dir + hostPath: + path: 'C:\var\lib\kubelet\plugins_registry\' + type: Directory + - name: plugin-dir + hostPath: + path: 'C:\var\lib\kubelet\plugins\csi.vsphere.vmware.com\' + type: DirectoryOrCreate + - name: pods-mount-dir + hostPath: + path: \var\lib\kubelet + type: Directory + - name: csi-proxy-disk-v1 + hostPath: + path: \\.\pipe\csi-proxy-disk-v1 + type: '' + - name: csi-proxy-volume-v1 + hostPath: + path: \\.\pipe\csi-proxy-volume-v1 + type: '' + - name: csi-proxy-filesystem-v1 + hostPath: + path: \\.\pipe\csi-proxy-filesystem-v1 + type: '' + - name: csi-proxy-system-v1alpha1 + hostPath: + path: \\.\pipe\csi-proxy-system-v1alpha1 + type: '' +{{ end }} diff --git a/charts/rancher-vsphere-csi/103.0.0+up3.0.2-rancher1/templates/secret.yaml b/charts/rancher-vsphere-csi/103.0.0+up3.0.2-rancher1/templates/secret.yaml new file mode 100644 index 0000000000..2a8c530257 --- /dev/null +++ b/charts/rancher-vsphere-csi/103.0.0+up3.0.2-rancher1/templates/secret.yaml @@ -0,0 +1,9 @@ +{{- if .Values.vCenter.configSecret.generate -}} +apiVersion: v1 +kind: Secret +metadata: + name: {{ .Values.vCenter.configSecret.name }} + namespace: {{ .Release.Namespace }} +data: + csi-vsphere.conf: {{ tpl .Values.vCenter.configSecret.configTemplate . | b64enc | quote }} +{{- end -}} diff --git a/charts/rancher-vsphere-csi/103.0.0+up3.0.2-rancher1/templates/storageclass.yaml b/charts/rancher-vsphere-csi/103.0.0+up3.0.2-rancher1/templates/storageclass.yaml new file mode 100644 index 0000000000..30dfbd46a9 --- /dev/null +++ b/charts/rancher-vsphere-csi/103.0.0+up3.0.2-rancher1/templates/storageclass.yaml @@ -0,0 +1,17 @@ +{{- if .Values.storageClass.enabled -}} +apiVersion: storage.k8s.io/v1 +kind: StorageClass +metadata: + name: {{ .Values.storageClass.name | quote }} + annotations: + storageclass.kubernetes.io/is-default-class: {{ .Values.storageClass.isDefault | quote }} +provisioner: csi.vsphere.vmware.com +allowVolumeExpansion: {{ .Values.storageClass.allowVolumeExpansion }} +parameters: + {{- if .Values.storageClass.datastoreURL }} + datastoreURL: {{ .Values.storageClass.datastoreURL | quote }} + {{- end }} + {{- if .Values.storageClass.storagePolicyName }} + storagepolicyname: {{ .Values.storageClass.storagePolicyName | quote }} + {{- end }} +{{- end -}} diff --git a/charts/rancher-vsphere-csi/103.0.0+up3.0.2-rancher1/values.yaml b/charts/rancher-vsphere-csi/103.0.0+up3.0.2-rancher1/values.yaml new file mode 100644 index 0000000000..58f82fa7af --- /dev/null +++ b/charts/rancher-vsphere-csi/103.0.0+up3.0.2-rancher1/values.yaml @@ -0,0 +1,300 @@ +vCenter: + host: "" + port: 443 + insecureFlag: "1" + clusterId: "" + datacenters: "" + username: "" + password: "" + configSecret: + name: "vsphere-config-secret" + generate: true + configTemplate: | + [Global] + cluster-id = {{ required ".Values.vCenter.clusterId must be provided" (default .Values.vCenter.clusterId .Values.global.cattle.clusterId) | quote }} + user = {{ .Values.vCenter.username | quote }} + password = {{ .Values.vCenter.password | quote }} + port = {{ .Values.vCenter.port | quote }} + insecure-flag = {{ .Values.vCenter.insecureFlag | quote }} + + [VirtualCenter {{ .Values.vCenter.host | quote }}] + datacenters = {{ .Values.vCenter.datacenters | quote }} + +csiController: + csiResizer: + enabled: false + image: + repository: rancher/mirrored-cloud-provider-vsphere-csi-release-driver + tag: latest + csiAttacher: + repository: rancher/mirrored-sig-storage-csi-attacher + tag: latest + csiResizer: + repository: rancher/mirrored-sig-storage-csi-resizer + tag: latest + livenessProbe: + repository: rancher/mirrored-sig-storage-livenessprobe + tag: latest + vsphereSyncer: + repository: rancher/mirrored-cloud-provider-vsphere-csi-release-syncer + tag: latest + csiProvisioner: + repository: rancher/mirrored-sig-storage-csi-provisioner + tag: latest + ## Node labels for pod assignment + ## Ref: https://kubernetes.io/docs/user-guide/node-selection/ + ## + nodeSelector: {} + # Uncomment below toleration if you need an aggressive pod eviction in case when + # node becomes not-ready or unreachable. Default is 300 seconds if not specified. + tolerations: [] + # - key: node.kubernetes.io/not-ready + # operator: Exists + # effect: NoExecute + # tolerationSeconds: 30 + # - key: node.kubernetes.io/unreachable + # operator: Exists + # effect: NoExecute + # tolerationSeconds: 30 + +# Internal features +csiMigration: + enabled: false +csiAuthCheck: + enabled: false +onlineVolumeExtend: + enabled: false +triggerCsiFullsync: + enabled: false +asyncQueryVolume: + enabled: false +improvedCsiIdempotency: + enabled: false +improvedVolumeTopology: + enabled: false +blockVolumeSnapshot: + enabled: false +csiWindowsSupport: + enabled: false +useCsinodeId: + enabled: true +listVolumes: + enabled: false +pvToBackingdiskobjectidMapping: + enabled: false +cnsmgrSuspendCreateVolume: + enabled: false +topology: + enabled: false +topologyPreferentialDatastores: + enabled: false +maxPvscsiTargetsPerVm: + enabled: false + +csiNode: + ## Node labels for pod assignment + ## Ref: https://kubernetes.io/docs/user-guide/node-selection/ + ## + nodeSelector: {} + ## List of node taints to tolerate (requires Kubernetes >= 1.6) + tolerations: [] + prefixPath: "" + image: + repository: rancher/mirrored-cloud-provider-vsphere-csi-release-driver + tag: latest + nodeDriverRegistrar: + repository: rancher/mirrored-sig-storage-csi-node-driver-registrar + tag: latest + livenessProbe: + repository: rancher/mirrored-sig-storage-livenessprobe + tag: latest + +storageClass: + enabled: true + allowVolumeExpansion: false + name: "vsphere-csi-sc" + isDefault: true + storagePolicyName: "" + datastoreURL: "" + +global: + cattle: + systemDefaultRegistry: "" + +# A list of Semver constraint strings (defined by https://github.com/Masterminds/semver) and values.yaml overrides. +# +# For each key in versionOverrides, this chart will check to see if the current Kubernetes cluster's version matches +# any of the semver constraints provided as keys on the map. +# +# On seeing a match, the default value for each values.yaml field overridden will be updated with the new value. +# +# If multiple matches are encountered (due to overlapping semver ranges), the matches will be applied in order. +# +# Notes: +# - On running a helm template, Helm uses the `.Capabilities.APIVersion` of whatever +# Kubernetes release that version of Helm was built against. +# - On running a helm install --dry-run, the correct kubeVersion should be chosen. +# +# Supported versions can be found at: +# https://docs.vmware.com/en/VMware-vSphere-Container-Storage-Plug-in/3.0/vmware-vsphere-csp-getting-started/GUID-D4AAD99E-9128-40CE-B89C-AD451DA8379D.html#kubernetes-versions-compatible-with-vsphere-container-storage-plugin-1 +versionOverrides: + # Versions from https://github.com/kubernetes-sigs/vsphere-csi-driver/blob/release-3.0/manifests/vanilla/vsphere-csi-driver.yaml + - constraint: ">= 1.24 < 1.28" + values: + csiController: + image: + repository: rancher/mirrored-cloud-provider-vsphere-csi-release-driver + tag: v3.0.2 + csiAttacher: + repository: rancher/mirrored-sig-storage-csi-attacher + tag: v4.2.0 + csiResizer: + repository: rancher/mirrored-sig-storage-csi-resizer + tag: v1.7.0 + livenessProbe: + repository: rancher/mirrored-sig-storage-livenessprobe + tag: v2.9.0 + vsphereSyncer: + repository: rancher/mirrored-cloud-provider-vsphere-csi-release-syncer + tag: v3.0.2 + csiProvisioner: + repository: rancher/mirrored-sig-storage-csi-provisioner + tag: v3.4.0 + csiNode: + image: + repository: rancher/mirrored-cloud-provider-vsphere-csi-release-driver + tag: v3.0.2 + nodeDriverRegistrar: + repository: rancher/mirrored-sig-storage-csi-node-driver-registrar + tag: v2.7.0 + livenessProbe: + repository: rancher/mirrored-sig-storage-livenessprobe + tag: v2.9.0 + # Versions from https://github.com/kubernetes-sigs/vsphere-csi-driver/blob/release-2.7/manifests/vanilla/vsphere-csi-driver.yaml + - constraint: "~ 1.23" + values: + csiController: + image: + repository: rancher/mirrored-cloud-provider-vsphere-csi-release-driver + tag: v2.7.2 + csiAttacher: + repository: rancher/mirrored-sig-storage-csi-attacher + tag: v3.5.0 + csiResizer: + repository: rancher/mirrored-sig-storage-csi-resizer + tag: v1.6.0 + livenessProbe: + repository: rancher/mirrored-sig-storage-livenessprobe + tag: v2.8.0 + vsphereSyncer: + repository: rancher/mirrored-cloud-provider-vsphere-csi-release-syncer + tag: v2.7.2 + csiProvisioner: + repository: rancher/mirrored-sig-storage-csi-provisioner + tag: v3.3.0 + csiNode: + image: + repository: rancher/mirrored-cloud-provider-vsphere-csi-release-driver + tag: v2.7.2 + nodeDriverRegistrar: + repository: rancher/mirrored-sig-storage-csi-node-driver-registrar + tag: v2.6.2 + livenessProbe: + repository: rancher/mirrored-sig-storage-livenessprobe + tag: v2.8.0 + # Versions from https://github.com/kubernetes-sigs/vsphere-csi-driver/blob/release-2.6/manifests/vanilla/vsphere-csi-driver.yaml + - constraint: "~ 1.22" + values: + csiController: + image: + repository: rancher/mirrored-cloud-provider-vsphere-csi-release-driver + tag: v2.6.3 + csiAttacher: + repository: rancher/mirrored-sig-storage-csi-attacher + tag: v3.4.0 + csiResizer: + repository: rancher/mirrored-sig-storage-csi-resizer + tag: v1.4.0 + livenessProbe: + repository: rancher/mirrored-sig-storage-livenessprobe + tag: v2.7.0 + vsphereSyncer: + repository: rancher/mirrored-cloud-provider-vsphere-csi-release-syncer + tag: v2.6.3 + csiProvisioner: + repository: rancher/mirrored-sig-storage-csi-provisioner + tag: v3.2.1 + csiNode: + image: + repository: rancher/mirrored-cloud-provider-vsphere-csi-release-driver + tag: v2.6.3 + nodeDriverRegistrar: + repository: rancher/mirrored-sig-storage-csi-node-driver-registrar + tag: v2.5.1 + livenessProbe: + repository: rancher/mirrored-sig-storage-livenessprobe + tag: v2.7.0 + # Versions from https://github.com/kubernetes-sigs/vsphere-csi-driver/blob/release-2.5/manifests/vanilla/vsphere-csi-driver.yaml + - constraint: "~ 1.21" + values: + csiController: + image: + repository: rancher/mirrored-cloud-provider-vsphere-csi-release-driver + tag: v2.5.4 + csiAttacher: + repository: rancher/mirrored-sig-storage-csi-attacher + tag: v3.4.0 + csiResizer: + repository: rancher/mirrored-sig-storage-csi-resizer + tag: v1.4.0 + livenessProbe: + repository: rancher/mirrored-sig-storage-livenessprobe + tag: v2.6.0 + vsphereSyncer: + repository: rancher/mirrored-cloud-provider-vsphere-csi-release-syncer + tag: v2.5.4 + csiProvisioner: + repository: rancher/mirrored-sig-storage-csi-provisioner + tag: v3.1.0 + csiNode: + image: + repository: rancher/mirrored-cloud-provider-vsphere-csi-release-driver + tag: v2.5.4 + nodeDriverRegistrar: + repository: rancher/mirrored-sig-storage-csi-node-driver-registrar + tag: v2.5.0 + livenessProbe: + repository: rancher/mirrored-sig-storage-livenessprobe + tag: v2.6.0 + # Versions from https://github.com/kubernetes-sigs/vsphere-csi-driver/blob/release-2.4/manifests/vanilla/vsphere-csi-driver.yaml + - constraint: "~ 1.20" + values: + csiController: + image: + repository: rancher/mirrored-cloud-provider-vsphere-csi-release-driver + tag: v2.4.3 + csiAttacher: + repository: rancher/mirrored-sig-storage-csi-attacher + tag: v3.3.0 + csiResizer: + repository: rancher/mirrored-sig-storage-csi-resizer + tag: v1.3.0 + livenessProbe: + repository: rancher/mirrored-sig-storage-livenessprobe + tag: v2.4.0 + vsphereSyncer: + repository: rancher/mirrored-cloud-provider-vsphere-csi-release-syncer + tag: v2.4.3 + csiProvisioner: + repository: rancher/mirrored-sig-storage-csi-provisioner + tag: v3.0.0 + csiNode: + image: + repository: rancher/mirrored-cloud-provider-vsphere-csi-release-driver + tag: v2.4.3 + nodeDriverRegistrar: + repository: rancher/mirrored-sig-storage-csi-node-driver-registrar + tag: v2.3.0 + livenessProbe: + repository: rancher/mirrored-sig-storage-livenessprobe + tag: v2.4.0 diff --git a/index.yaml b/index.yaml index 559ab3d20b..f77be492b7 100755 --- a/index.yaml +++ b/index.yaml @@ -13631,6 +13631,36 @@ entries: - assets/rancher-tracing/rancher-tracing-1.20.001.tgz version: 1.20.001 rancher-vsphere-cpi: + - annotations: + catalog.cattle.io/certified: rancher + catalog.cattle.io/display-name: vSphere CPI + catalog.cattle.io/kube-version: '>= 1.18.0-0 < 1.28.0-0' + catalog.cattle.io/namespace: kube-system + catalog.cattle.io/os: linux + catalog.cattle.io/permits-os: linux,windows + catalog.cattle.io/rancher-version: '>= 2.8.0-0 < 2.9.0-0' + catalog.cattle.io/release-name: vsphere-cpi + apiVersion: v1 + appVersion: 1.6.0 + created: "2023-09-07T09:37:19.135692-04:00" + description: vSphere Cloud Provider Interface (CPI) + digest: 47f47ed50dd24d7f4a16e87ed12782c05c0100d37c69223c1c4bdfe3800aead2 + icon: https://charts.rancher.io/assets/logos/vsphere-cpi.svg + keywords: + - infrastructure + maintainers: + - email: jiaqi.luo@suse.com + name: Jiaqi Luo + - email: anna.blendermann@suse.com + name: Andy Blendermann + - email: brad.davidson@suse.com + name: Brad Davidson + name: rancher-vsphere-cpi + sources: + - https://github.com/kubernetes/cloud-provider-vsphere + urls: + - assets/rancher-vsphere-cpi/rancher-vsphere-cpi-103.0.0+up1.6.0.tgz + version: 103.0.0+up1.6.0 - annotations: catalog.cattle.io/certified: rancher catalog.cattle.io/display-name: vSphere CPI @@ -13969,6 +13999,36 @@ entries: - assets/rancher-vsphere-cpi/rancher-vsphere-cpi-1.0.000.tgz version: 1.0.000 rancher-vsphere-csi: + - annotations: + catalog.cattle.io/certified: rancher + catalog.cattle.io/display-name: vSphere CSI + catalog.cattle.io/kube-version: '>= 1.20.0-0 < 1.28.0-0' + catalog.cattle.io/namespace: kube-system + catalog.cattle.io/os: linux,windows + catalog.cattle.io/permits-os: linux,windows + catalog.cattle.io/rancher-version: '>= 2.8.0-0 < 2.9.0-0' + catalog.cattle.io/release-name: vsphere-csi + apiVersion: v1 + appVersion: 3.0.2-rancher1 + created: "2023-09-07T09:37:07.463824-04:00" + description: vSphere Cloud Storage Interface (CSI) + digest: f87aa3925fbb08742e20aa331bb6f2a8a15718c9ae997139ba2c1ae314b53359 + icon: https://charts.rancher.io/assets/logos/vsphere-csi.svg + keywords: + - infrastructure + maintainers: + - email: jiaqi.luo@suse.com + name: Jiaqi Luo + - email: anna.blendermann@suse.com + name: Andy Blendermann + - email: brad.davidson@suse.com + name: Brad Davidson + name: rancher-vsphere-csi + sources: + - https://github.com/kubernetes-sigs/vsphere-csi-driver + urls: + - assets/rancher-vsphere-csi/rancher-vsphere-csi-103.0.0+up3.0.2-rancher1.tgz + version: 103.0.0+up3.0.2-rancher1 - annotations: catalog.cattle.io/certified: rancher catalog.cattle.io/display-name: vSphere CSI diff --git a/packages/rancher-vsphere/rancher-vsphere-cpi/generated-changes/patch/Chart.yaml.patch b/packages/rancher-vsphere/rancher-vsphere-cpi/generated-changes/patch/Chart.yaml.patch index 36bd8e04f9..53af68b4e0 100644 --- a/packages/rancher-vsphere/rancher-vsphere-cpi/generated-changes/patch/Chart.yaml.patch +++ b/packages/rancher-vsphere/rancher-vsphere-cpi/generated-changes/patch/Chart.yaml.patch @@ -4,12 +4,12 @@ catalog.cattle.io/namespace: kube-system catalog.cattle.io/os: linux catalog.cattle.io/permits-os: linux,windows -- catalog.cattle.io/rancher-version: '>= 2.6.0-0' +- catalog.cattle.io/rancher-version: '>= 2.8.0-0' + catalog.cattle.io/rancher-version: '>= 2.8.0-0 < 2.9.0-0' catalog.cattle.io/release-name: vsphere-cpi apiVersion: v1 --appVersion: 1.26.1 -+appVersion: 1.5.1 +-appVersion: 1.27.0 ++appVersion: 1.6.0 description: vSphere Cloud Provider Interface (CPI) icon: https://charts.rancher.io/assets/logos/vsphere-cpi.svg keywords: diff --git a/packages/rancher-vsphere/rancher-vsphere-cpi/package.yaml b/packages/rancher-vsphere/rancher-vsphere-cpi/package.yaml index 54fc67dfda..c843e3f4dc 100644 --- a/packages/rancher-vsphere/rancher-vsphere-cpi/package.yaml +++ b/packages/rancher-vsphere/rancher-vsphere-cpi/package.yaml @@ -1,5 +1,4 @@ url: https://github.com/rancher/vsphere-charts.git subdirectory: charts/rancher-vsphere-cpi -commit: 8b8e8cf13e9c971330bf96517fab1deec1f23b05 +commit: 8e3146aee008aa74618d9676030414317d422c54 version: 103.0.0 -doNotRelease: true diff --git a/packages/rancher-vsphere/rancher-vsphere-csi/generated-changes/patch/Chart.yaml.patch b/packages/rancher-vsphere/rancher-vsphere-csi/generated-changes/patch/Chart.yaml.patch index 1691407a21..2a8568b152 100644 --- a/packages/rancher-vsphere/rancher-vsphere-csi/generated-changes/patch/Chart.yaml.patch +++ b/packages/rancher-vsphere/rancher-vsphere-csi/generated-changes/patch/Chart.yaml.patch @@ -4,8 +4,8 @@ catalog.cattle.io/namespace: kube-system catalog.cattle.io/os: linux,windows catalog.cattle.io/permits-os: linux,windows -- catalog.cattle.io/rancher-version: '>= 2.6.0-0' +- catalog.cattle.io/rancher-version: '>= 2.8.0-0' + catalog.cattle.io/rancher-version: '>= 2.8.0-0 < 2.9.0-0' catalog.cattle.io/release-name: vsphere-csi apiVersion: v1 - appVersion: 3.0.1-rancher1 + appVersion: 3.0.2-rancher1 diff --git a/packages/rancher-vsphere/rancher-vsphere-csi/package.yaml b/packages/rancher-vsphere/rancher-vsphere-csi/package.yaml index af3ab55587..233c7615d6 100644 --- a/packages/rancher-vsphere/rancher-vsphere-csi/package.yaml +++ b/packages/rancher-vsphere/rancher-vsphere-csi/package.yaml @@ -1,5 +1,4 @@ url: https://github.com/rancher/vsphere-charts.git subdirectory: charts/rancher-vsphere-csi -commit: 8b8e8cf13e9c971330bf96517fab1deec1f23b05 -version: 103.0.0 -doNotRelease: true \ No newline at end of file +commit: 8e3146aee008aa74618d9676030414317d422c54 +version: 103.0.0 \ No newline at end of file diff --git a/release.yaml b/release.yaml index deea9eea8a..b40f552aa7 100644 --- a/release.yaml +++ b/release.yaml @@ -4,3 +4,7 @@ elemental-crd: - 103.0.0+up1.3.4 rancher-webhook: - 2.0.6+up0.3.6 +rancher-vsphere-csi: + - 103.0.0+up3.0.2-rancher1 +rancher-vsphere-cpi: + - 103.0.0+up1.6.0 From b7d4405022f50350906f8ec57067effcc5dcc396 Mon Sep 17 00:00:00 2001 From: rancherbot Date: Tue, 24 Oct 2023 18:50:50 +0000 Subject: [PATCH 7/7] Updating resync.yaml --- regsync.yaml | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/regsync.yaml b/regsync.yaml index 9d60b6967b..68dbd30818 100644 --- a/regsync.yaml +++ b/regsync.yaml @@ -13,6 +13,12 @@ defaults: - application/vnd.oci.image.manifest.v1+json - application/vnd.oci.image.index.v1+json sync: +- source: docker.io/ + target: '{{ env "REGISTRY_ENDPOINT" }}/' + type: repository + tags: + allow: + - - source: docker.io/rancher/aks-operator target: '{{ env "REGISTRY_ENDPOINT" }}/rancher/aks-operator' type: repository @@ -542,9 +548,13 @@ sync: - v1.23.4 - v1.24.3 - v1.24.5 + - v1.24.6 - v1.25.0 - v1.25.2 + - v1.25.3 - v1.26.1 + - v1.26.2 + - v1.27.0 - source: docker.io/rancher/mirrored-cloud-provider-vsphere-csi-release-driver target: '{{ env "REGISTRY_ENDPOINT" }}/rancher/mirrored-cloud-provider-vsphere-csi-release-driver' type: repository @@ -561,7 +571,9 @@ sync: - v2.6.3 - v2.7.0 - v2.7.1 + - v2.7.2 - v3.0.1 + - v3.0.2 - source: docker.io/rancher/mirrored-cloud-provider-vsphere-csi-release-syncer target: '{{ env "REGISTRY_ENDPOINT" }}/rancher/mirrored-cloud-provider-vsphere-csi-release-syncer' type: repository @@ -578,7 +590,9 @@ sync: - v2.6.3 - v2.7.0 - v2.7.1 + - v2.7.2 - v3.0.1 + - v3.0.2 - source: docker.io/rancher/mirrored-coredns-coredns target: '{{ env "REGISTRY_ENDPOINT" }}/rancher/mirrored-coredns-coredns' type: repository @@ -633,6 +647,18 @@ sync: tags: allow: - v0.7.0 +- source: docker.io/rancher/mirrored-elemental-operator + target: '{{ env "REGISTRY_ENDPOINT" }}/rancher/mirrored-elemental-operator' + type: repository + tags: + allow: + - 1.3.4 +- source: docker.io/rancher/mirrored-elemental-seedimage-builder + target: '{{ env "REGISTRY_ENDPOINT" }}/rancher/mirrored-elemental-seedimage-builder' + type: repository + tags: + allow: + - 1.3.4 - source: docker.io/rancher/mirrored-epinio-epinio-server target: '{{ env "REGISTRY_ENDPOINT" }}/rancher/mirrored-epinio-epinio-server' type: repository @@ -1478,6 +1504,7 @@ sync: - v0.3.3 - v0.3.4 - v0.3.5 + - v0.3.6 - v0.4.0 - source: docker.io/rancher/security-scan target: '{{ env "REGISTRY_ENDPOINT" }}/rancher/security-scan'