From edac49372e7228d62d7258c480f9f02d38aa0760 Mon Sep 17 00:00:00 2001 From: Michal Jura Date: Tue, 27 Jun 2023 12:13:11 +0200 Subject: [PATCH] Make charts --- ...r-aks-operator-crd-102.2.1+up1.1.2-rc2.tgz | Bin 0 -> 1217 bytes ...ncher-aks-operator-102.2.1+up1.1.2-rc2.tgz | Bin 0 -> 2043 bytes .../102.2.1+up1.1.2-rc2/Chart.yaml | 12 ++ .../102.2.1+up1.1.2-rc2/templates/crds.yaml | 202 ++++++++++++++++++ .../102.2.1+up1.1.2-rc2/Chart.yaml | 20 ++ .../102.2.1+up1.1.2-rc2/templates/NOTES.txt | 4 + .../templates/_helpers.tpl | 25 +++ .../templates/clusterrole.yaml | 15 ++ .../templates/clusterrolebinding.yaml | 13 ++ .../templates/deployment.yaml | 61 ++++++ .../templates/serviceaccount.yaml | 5 + .../102.2.1+up1.1.2-rc2/values.yaml | 23 ++ index.yaml | 20 +- 13 files changed, 390 insertions(+), 10 deletions(-) create mode 100644 assets/rancher-aks-operator-crd/rancher-aks-operator-crd-102.2.1+up1.1.2-rc2.tgz create mode 100644 assets/rancher-aks-operator/rancher-aks-operator-102.2.1+up1.1.2-rc2.tgz create mode 100644 charts/rancher-aks-operator-crd/102.2.1+up1.1.2-rc2/Chart.yaml create mode 100644 charts/rancher-aks-operator-crd/102.2.1+up1.1.2-rc2/templates/crds.yaml create mode 100644 charts/rancher-aks-operator/102.2.1+up1.1.2-rc2/Chart.yaml create mode 100644 charts/rancher-aks-operator/102.2.1+up1.1.2-rc2/templates/NOTES.txt create mode 100644 charts/rancher-aks-operator/102.2.1+up1.1.2-rc2/templates/_helpers.tpl create mode 100644 charts/rancher-aks-operator/102.2.1+up1.1.2-rc2/templates/clusterrole.yaml create mode 100644 charts/rancher-aks-operator/102.2.1+up1.1.2-rc2/templates/clusterrolebinding.yaml create mode 100644 charts/rancher-aks-operator/102.2.1+up1.1.2-rc2/templates/deployment.yaml create mode 100644 charts/rancher-aks-operator/102.2.1+up1.1.2-rc2/templates/serviceaccount.yaml create mode 100644 charts/rancher-aks-operator/102.2.1+up1.1.2-rc2/values.yaml diff --git a/assets/rancher-aks-operator-crd/rancher-aks-operator-crd-102.2.1+up1.1.2-rc2.tgz b/assets/rancher-aks-operator-crd/rancher-aks-operator-crd-102.2.1+up1.1.2-rc2.tgz new file mode 100644 index 0000000000000000000000000000000000000000..f353e43f9a7743ca164afbf49f8ae9e3af45ff6b GIT binary patch literal 1217 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 Z!yfjqhdtZ}{|f*B|Nryg6NUgV001fh{q_I= literal 0 HcmV?d00001 diff --git a/charts/rancher-aks-operator-crd/102.2.1+up1.1.2-rc2/Chart.yaml b/charts/rancher-aks-operator-crd/102.2.1+up1.1.2-rc2/Chart.yaml new file mode 100644 index 000000000..3ac886717 --- /dev/null +++ b/charts/rancher-aks-operator-crd/102.2.1+up1.1.2-rc2/Chart.yaml @@ -0,0 +1,12 @@ +annotations: + catalog.cattle.io/certified: rancher + catalog.cattle.io/hidden: "true" + catalog.cattle.io/namespace: cattle-system + catalog.cattle.io/os: linux + catalog.cattle.io/permits-os: linux,windows + catalog.cattle.io/release-name: rancher-aks-operator-crd +apiVersion: v2 +appVersion: 1.1.2-rc2 +description: AKS Operator CustomResourceDefinitions +name: rancher-aks-operator-crd +version: 102.2.1+up1.1.2-rc2 diff --git a/charts/rancher-aks-operator-crd/102.2.1+up1.1.2-rc2/templates/crds.yaml b/charts/rancher-aks-operator-crd/102.2.1+up1.1.2-rc2/templates/crds.yaml new file mode 100644 index 000000000..7877ff6a5 --- /dev/null +++ b/charts/rancher-aks-operator-crd/102.2.1+up1.1.2-rc2/templates/crds.yaml @@ -0,0 +1,202 @@ +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + helm.sh/resource-policy: keep + name: aksclusterconfigs.aks.cattle.io +spec: + group: aks.cattle.io + names: + kind: AKSClusterConfig + plural: aksclusterconfigs + shortNames: + - akscc + singular: aksclusterconfig + preserveUnknownFields: false + scope: Namespaced + versions: + - name: v1 + schema: + openAPIV3Schema: + properties: + spec: + properties: + authBaseUrl: + nullable: true + type: string + authorizedIpRanges: + items: + nullable: true + type: string + nullable: true + type: array + azureCredentialSecret: + nullable: true + type: string + baseUrl: + nullable: true + type: string + clusterName: + nullable: true + type: string + dnsPrefix: + nullable: true + type: string + dnsServiceIp: + nullable: true + type: string + dockerBridgeCidr: + nullable: true + type: string + httpApplicationRouting: + nullable: true + type: boolean + imported: + type: boolean + kubernetesVersion: + nullable: true + type: string + linuxAdminUsername: + nullable: true + type: string + loadBalancerSku: + nullable: true + type: string + logAnalyticsWorkspaceGroup: + nullable: true + type: string + logAnalyticsWorkspaceName: + nullable: true + type: string + monitoring: + nullable: true + type: boolean + networkPlugin: + nullable: true + type: string + networkPolicy: + nullable: true + type: string + nodePools: + items: + properties: + availabilityZones: + items: + nullable: true + type: string + nullable: true + type: array + count: + nullable: true + type: integer + enableAutoScaling: + nullable: true + type: boolean + maxCount: + nullable: true + type: integer + maxPods: + nullable: true + type: integer + maxSurge: + nullable: true + type: string + minCount: + nullable: true + type: integer + mode: + nullable: true + type: string + name: + nullable: true + type: string + nodeLabels: + additionalProperties: + nullable: true + type: string + nullable: true + type: object + nodeTaints: + items: + nullable: true + type: string + nullable: true + type: array + orchestratorVersion: + nullable: true + type: string + osDiskSizeGB: + nullable: true + type: integer + osDiskType: + nullable: true + type: string + osType: + nullable: true + type: string + vmSize: + nullable: true + type: string + vnetSubnetID: + nullable: true + type: string + type: object + nullable: true + type: array + nodeResourceGroup: + nullable: true + type: string + outboundType: + nullable: true + type: string + podCidr: + nullable: true + type: string + privateCluster: + nullable: true + type: boolean + resourceGroup: + nullable: true + type: string + resourceLocation: + nullable: true + type: string + serviceCidr: + nullable: true + type: string + sshPublicKey: + nullable: true + type: string + subnet: + nullable: true + type: string + tags: + additionalProperties: + nullable: true + type: string + nullable: true + type: object + virtualNetwork: + nullable: true + type: string + virtualNetworkResourceGroup: + nullable: true + type: string + type: object + status: + properties: + failureMessage: + nullable: true + type: string + phase: + nullable: true + type: string + rbacEnabled: + nullable: true + type: boolean + type: object + type: object + served: true + storage: true + subresources: + status: {} diff --git a/charts/rancher-aks-operator/102.2.1+up1.1.2-rc2/Chart.yaml b/charts/rancher-aks-operator/102.2.1+up1.1.2-rc2/Chart.yaml new file mode 100644 index 000000000..9bc7e4ef5 --- /dev/null +++ b/charts/rancher-aks-operator/102.2.1+up1.1.2-rc2/Chart.yaml @@ -0,0 +1,20 @@ +annotations: + catalog.cattle.io/auto-install: rancher-aks-operator-crd=match + catalog.cattle.io/certified: rancher + catalog.cattle.io/hidden: "true" + catalog.cattle.io/kube-version: '>= 1.20.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/provides-gvr: aksclusterconfigs.aks.cattle.io/v1 + catalog.cattle.io/rancher-version: '>= 2.7.0-0 < 2.8.0-0' + catalog.cattle.io/release-name: rancher-aks-operator + catalog.cattle.io/scope: management +apiVersion: v2 +appVersion: 1.1.2-rc2 +description: A Helm chart for provisioning AKS clusters +home: https://github.com/rancher/aks-operator +name: rancher-aks-operator +sources: +- https://github.com/rancher/aks-operator +version: 102.2.1+up1.1.2-rc2 diff --git a/charts/rancher-aks-operator/102.2.1+up1.1.2-rc2/templates/NOTES.txt b/charts/rancher-aks-operator/102.2.1+up1.1.2-rc2/templates/NOTES.txt new file mode 100644 index 000000000..5ba05b482 --- /dev/null +++ b/charts/rancher-aks-operator/102.2.1+up1.1.2-rc2/templates/NOTES.txt @@ -0,0 +1,4 @@ +You have deployed the Rancher AKS operator +Version: {{ .Chart.AppVersion }} +Description: This operator provisions AKS clusters +from AKSClusterConfig CRs. diff --git a/charts/rancher-aks-operator/102.2.1+up1.1.2-rc2/templates/_helpers.tpl b/charts/rancher-aks-operator/102.2.1+up1.1.2-rc2/templates/_helpers.tpl new file mode 100644 index 000000000..de3b332f6 --- /dev/null +++ b/charts/rancher-aks-operator/102.2.1+up1.1.2-rc2/templates/_helpers.tpl @@ -0,0 +1,25 @@ +{{/* vim: set filetype=mustache: */}} + +{{- define "system_default_registry" -}} +{{- if .Values.global.cattle.systemDefaultRegistry -}} +{{- printf "%s/" .Values.global.cattle.systemDefaultRegistry -}} +{{- else -}} +{{- "" -}} +{{- end -}} +{{- 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 -}} + diff --git a/charts/rancher-aks-operator/102.2.1+up1.1.2-rc2/templates/clusterrole.yaml b/charts/rancher-aks-operator/102.2.1+up1.1.2-rc2/templates/clusterrole.yaml new file mode 100644 index 000000000..5e2ce9756 --- /dev/null +++ b/charts/rancher-aks-operator/102.2.1+up1.1.2-rc2/templates/clusterrole.yaml @@ -0,0 +1,15 @@ +kind: ClusterRole +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + name: aks-operator + namespace: cattle-system +rules: + - apiGroups: [''] + resources: ['secrets'] + verbs: ['get', 'list', 'create', 'watch', 'update'] + - apiGroups: ['aks.cattle.io'] + resources: ['aksclusterconfigs'] + verbs: ['get', 'list', 'update', 'watch'] + - apiGroups: ['aks.cattle.io'] + resources: ['aksclusterconfigs/status'] + verbs: ['update'] diff --git a/charts/rancher-aks-operator/102.2.1+up1.1.2-rc2/templates/clusterrolebinding.yaml b/charts/rancher-aks-operator/102.2.1+up1.1.2-rc2/templates/clusterrolebinding.yaml new file mode 100644 index 000000000..7aa7e785a --- /dev/null +++ b/charts/rancher-aks-operator/102.2.1+up1.1.2-rc2/templates/clusterrolebinding.yaml @@ -0,0 +1,13 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: aks-operator + namespace: cattle-system +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: aks-operator +subjects: +- kind: ServiceAccount + name: aks-operator + namespace: cattle-system diff --git a/charts/rancher-aks-operator/102.2.1+up1.1.2-rc2/templates/deployment.yaml b/charts/rancher-aks-operator/102.2.1+up1.1.2-rc2/templates/deployment.yaml new file mode 100644 index 000000000..1d85eb18c --- /dev/null +++ b/charts/rancher-aks-operator/102.2.1+up1.1.2-rc2/templates/deployment.yaml @@ -0,0 +1,61 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: aks-config-operator + namespace: cattle-system +spec: + replicas: 1 + selector: + matchLabels: + ke.cattle.io/operator: aks + template: + metadata: + labels: + ke.cattle.io/operator: aks + spec: + nodeSelector: {{ include "linux-node-selector" . | nindent 8 }} +{{- if .Values.nodeSelector }} +{{ toYaml .Values.nodeSelector | indent 8 }} +{{- end }} + tolerations: {{ include "linux-node-tolerations" . | nindent 8 }} +{{- if .Values.tolerations }} +{{ toYaml .Values.tolerations | indent 8 }} +{{- end }} + serviceAccountName: aks-operator + {{- if .Values.priorityClassName }} + priorityClassName: "{{.Values.priorityClassName}}" + {{- end }} + securityContext: + fsGroup: 1007 + runAsUser: 1007 + containers: + - name: aks-operator + image: {{ template "system_default_registry" . }}{{ .Values.aksOperator.image.repository }}:{{ .Values.aksOperator.image.tag }} + imagePullPolicy: IfNotPresent + env: + - name: HTTP_PROXY + value: {{ .Values.httpProxy }} + - name: HTTPS_PROXY + value: {{ .Values.httpsProxy }} + - name: NO_PROXY + value: {{ .Values.noProxy }} +{{- if .Values.additionalTrustedCAs }} + # aks-operator mounts the additional CAs in two places: + volumeMounts: + # This directory is owned by the aks-operator user so c_rehash works here. + - mountPath: /etc/rancher/ssl/ca-additional.pem + name: tls-ca-additional-volume + subPath: ca-additional.pem + readOnly: true + # This directory is root-owned so c_rehash doesn't work here, + # but the cert is here in case update-ca-certificates is called in the future or by the OS. + - mountPath: /etc/pki/trust/anchors/ca-additional.pem + name: tls-ca-additional-volume + subPath: ca-additional.pem + readOnly: true + volumes: + - name: tls-ca-additional-volume + secret: + defaultMode: 0400 + secretName: tls-ca-additional + {{- end }} diff --git a/charts/rancher-aks-operator/102.2.1+up1.1.2-rc2/templates/serviceaccount.yaml b/charts/rancher-aks-operator/102.2.1+up1.1.2-rc2/templates/serviceaccount.yaml new file mode 100644 index 000000000..9c40a152f --- /dev/null +++ b/charts/rancher-aks-operator/102.2.1+up1.1.2-rc2/templates/serviceaccount.yaml @@ -0,0 +1,5 @@ +apiVersion: v1 +kind: ServiceAccount +metadata: + namespace: cattle-system + name: aks-operator diff --git a/charts/rancher-aks-operator/102.2.1+up1.1.2-rc2/values.yaml b/charts/rancher-aks-operator/102.2.1+up1.1.2-rc2/values.yaml new file mode 100644 index 000000000..91252f224 --- /dev/null +++ b/charts/rancher-aks-operator/102.2.1+up1.1.2-rc2/values.yaml @@ -0,0 +1,23 @@ +global: + cattle: + systemDefaultRegistry: "" + +aksOperator: + image: + repository: rancher/aks-operator + tag: v1.1.2-rc2 + +httpProxy: "" +httpsProxy: "" +noProxy: "" +additionalTrustedCAs: false + +## 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: [] + +## PriorityClassName assigned to deployment. +priorityClassName: "" diff --git a/index.yaml b/index.yaml index f7eed9c09..9fb4505f0 100755 --- a/index.yaml +++ b/index.yaml @@ -4368,17 +4368,17 @@ entries: catalog.cattle.io/release-name: rancher-aks-operator catalog.cattle.io/scope: management apiVersion: v2 - appVersion: 1.1.2-rc1 - created: "2023-06-26T11:07:02.59075+02:00" + appVersion: 1.1.2-rc2 + created: "2023-06-27T12:10:33.408197572+02:00" description: A Helm chart for provisioning AKS clusters - digest: 26e21e897d823b770d87e19dc0e5120bf6f22370d6731dc9a0d6fb4efcb8bb13 + digest: 44c44b400b1648e616e6f10ca2f5cd78b4c69d54561001a237e63ec7a0f88843 home: https://github.com/rancher/aks-operator name: rancher-aks-operator sources: - https://github.com/rancher/aks-operator urls: - - assets/rancher-aks-operator/rancher-aks-operator-102.2.0+up1.1.2-rc1.tgz - version: 102.2.0+up1.1.2-rc1 + - assets/rancher-aks-operator/rancher-aks-operator-102.2.1+up1.1.2-rc2.tgz + version: 102.2.1+up1.1.2-rc2 - annotations: catalog.cattle.io/auto-install: rancher-aks-operator-crd=match catalog.cattle.io/certified: rancher @@ -4649,14 +4649,14 @@ entries: catalog.cattle.io/permits-os: linux,windows catalog.cattle.io/release-name: rancher-aks-operator-crd apiVersion: v2 - appVersion: 1.1.2-rc1 - created: "2023-06-26T11:07:04.193098+02:00" + appVersion: 1.1.2-rc2 + created: "2023-06-27T12:10:34.83747823+02:00" description: AKS Operator CustomResourceDefinitions - digest: 1eeb041e0b4c18ae400ec42dbbbe2a85ebbe916b0637095536907211328bfd41 + digest: ba809451e117b013527d6e78b082378b4f5f983303fa66cd6b76e9d9edef7f93 name: rancher-aks-operator-crd urls: - - assets/rancher-aks-operator-crd/rancher-aks-operator-crd-102.2.0+up1.1.2-rc1.tgz - version: 102.2.0+up1.1.2-rc1 + - assets/rancher-aks-operator-crd/rancher-aks-operator-crd-102.2.1+up1.1.2-rc2.tgz + version: 102.2.1+up1.1.2-rc2 - annotations: catalog.cattle.io/certified: rancher catalog.cattle.io/hidden: "true"