diff --git a/providers/docker/scs/README.md b/providers/docker/scs/README.md new file mode 100644 index 00000000..73e8ae8a --- /dev/null +++ b/providers/docker/scs/README.md @@ -0,0 +1,89 @@ +# Cluster Stacks + +## Getting started + +```sh +# Create bootstrap cluster +echo " +--- +kind: Cluster +apiVersion: kind.x-k8s.io/v1alpha4 +networking: + ipFamily: dual +nodes: + - role: control-plane + extraMounts: + - hostPath: /var/run/docker.sock + containerPath: /var/run/docker.sock" | kind create cluster --config - + +# Init Cluster API +export CLUSTER_TOPOLOGY=true +export EXP_CLUSTER_RESOURCE_SET=true +export EXP_RUNTIME_SDK=true +clusterctl init --infrastructure docker + +kubectl -n capi-system rollout status deployment +kubectl -n capd-system rollout status deployment + +# Install CSO and CSPO +helm upgrade -i cso \ +-n cso-system \ +--create-namespace \ +oci://registry.scs.community/cluster-stacks/cso \ +--set clusterStackVariables.ociRepository=registry.scs.community/kaas/cluster-stacks + +kubectl create namespace cluster +``` + +clusterstack.yaml + +```yaml +apiVersion: clusterstack.x-k8s.io/v1alpha1 +kind: ClusterStack +metadata: + name: docker + namespace: cluster +spec: + provider: docker + name: scs + kubernetesVersion: "1.30" + channel: custom + autoSubscribe: false + noProvider: true + versions: + - v0-sha.rwvgrna +``` + +Check if ClusterClasses exist + +```sh +kubectl get clusterclass -n cluster +``` + +cluster.yaml + +```yaml +apiVersion: cluster.x-k8s.io/v1beta1 +kind: Cluster +metadata: + name: docker-testcluster + namespace: cluster + labels: + managed-secret: cloud-config +spec: + topology: + class: docker-scs-1-30-v0-sha.rwvgrna + controlPlane: + replicas: 1 + version: v1.30.10 + workers: + machineDeployments: + - class: default-worker + name: md-0 + replicas: 1 +``` + +```sh +clusterctl get kubeconfig -n cluster docker-testcluster > /tmp/kubeconfig +kubectl get nodes --kubeconfig /tmp/kubeconfig +``` diff --git a/providers/docker/scs/cluster-addon-values.yaml b/providers/docker/scs/cluster-addon-values.yaml new file mode 100644 index 00000000..7b1dcd5b --- /dev/null +++ b/providers/docker/scs/cluster-addon-values.yaml @@ -0,0 +1,4 @@ +values: | + metrics-server: + commonLabels: + domain: "{{ .Cluster.spec.controlPlaneEndpoint.host }}" diff --git a/providers/openstack/scs/cluster-addon/.helmignore b/providers/docker/scs/cluster-addon/.helmignore similarity index 100% rename from providers/openstack/scs/cluster-addon/.helmignore rename to providers/docker/scs/cluster-addon/.helmignore diff --git a/providers/docker/scs/cluster-addon/cni/Chart.lock b/providers/docker/scs/cluster-addon/cni/Chart.lock new file mode 100644 index 00000000..776d3129 --- /dev/null +++ b/providers/docker/scs/cluster-addon/cni/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: cilium + repository: https://helm.cilium.io/ + version: 1.16.6 +digest: sha256:e6a746a27a71acab49c5d54cba2d37eed32e04f8b74af5651e2266ae251c55d8 +generated: "2025-02-13T12:55:17.200292016+01:00" diff --git a/providers/docker/scs/cluster-addon/cni/Chart.yaml b/providers/docker/scs/cluster-addon/cni/Chart.yaml new file mode 100644 index 00000000..0d756c93 --- /dev/null +++ b/providers/docker/scs/cluster-addon/cni/Chart.yaml @@ -0,0 +1,10 @@ +apiVersion: v2 +type: application +description: Croquette CNI +name: CNI +version: v1 +dependencies: + - alias: cilium + name: cilium + repository: https://helm.cilium.io/ + version: 1.16.6 diff --git a/providers/docker/scs/cluster-addon/cni/charts/cilium-1.16.6.tgz b/providers/docker/scs/cluster-addon/cni/charts/cilium-1.16.6.tgz new file mode 100644 index 00000000..3e99630f Binary files /dev/null and b/providers/docker/scs/cluster-addon/cni/charts/cilium-1.16.6.tgz differ diff --git a/providers/docker/scs/cluster-addon/cni/values.yaml b/providers/docker/scs/cluster-addon/cni/values.yaml new file mode 100644 index 00000000..e69de29b diff --git a/providers/docker/scs/cluster-addon/metrics-server/.helmignore b/providers/docker/scs/cluster-addon/metrics-server/.helmignore new file mode 100644 index 00000000..0e8a0eb3 --- /dev/null +++ b/providers/docker/scs/cluster-addon/metrics-server/.helmignore @@ -0,0 +1,23 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*.orig +*~ +# Various IDEs +.project +.idea/ +*.tmproj +.vscode/ diff --git a/providers/docker/scs/cluster-addon/metrics-server/Chart.lock b/providers/docker/scs/cluster-addon/metrics-server/Chart.lock new file mode 100644 index 00000000..cb461d5a --- /dev/null +++ b/providers/docker/scs/cluster-addon/metrics-server/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: metrics-server + repository: https://kubernetes-sigs.github.io/metrics-server/ + version: 3.12.2 +digest: sha256:b79715342d7c10e97664b5f4d79199044f5da6ef40cca906218cff05ca891122 +generated: "2025-01-13T15:40:51.780206883+01:00" diff --git a/providers/docker/scs/cluster-addon/metrics-server/Chart.yaml b/providers/docker/scs/cluster-addon/metrics-server/Chart.yaml new file mode 100644 index 00000000..483ca2be --- /dev/null +++ b/providers/docker/scs/cluster-addon/metrics-server/Chart.yaml @@ -0,0 +1,10 @@ +apiVersion: v2 +type: application +description: Croquette Metrics Server +name: yorizonpoc-metrics-server +version: v1 +dependencies: + - name: "metrics-server" + version: "3.12.2" + repository: "https://kubernetes-sigs.github.io/metrics-server/" + alias: "metrics-server" diff --git a/providers/docker/scs/cluster-addon/metrics-server/charts/metrics-server-3.12.2.tgz b/providers/docker/scs/cluster-addon/metrics-server/charts/metrics-server-3.12.2.tgz new file mode 100644 index 00000000..4538e8a1 Binary files /dev/null and b/providers/docker/scs/cluster-addon/metrics-server/charts/metrics-server-3.12.2.tgz differ diff --git a/providers/docker/scs/cluster-addon/metrics-server/values.yaml b/providers/docker/scs/cluster-addon/metrics-server/values.yaml new file mode 100644 index 00000000..d6d65876 --- /dev/null +++ b/providers/docker/scs/cluster-addon/metrics-server/values.yaml @@ -0,0 +1,5 @@ +metrics-server: + fullnameOverride: metrics-server + + args: + - --kubelet-insecure-tls diff --git a/providers/docker/scs/cluster-class/.helmignore b/providers/docker/scs/cluster-class/.helmignore new file mode 100644 index 00000000..0e8a0eb3 --- /dev/null +++ b/providers/docker/scs/cluster-class/.helmignore @@ -0,0 +1,23 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*.orig +*~ +# Various IDEs +.project +.idea/ +*.tmproj +.vscode/ diff --git a/providers/docker/scs/cluster-class/Chart.yaml b/providers/docker/scs/cluster-class/Chart.yaml new file mode 100644 index 00000000..2a11e914 --- /dev/null +++ b/providers/docker/scs/cluster-class/Chart.yaml @@ -0,0 +1,5 @@ +apiVersion: v2 +description: Croquette Cluster Class +name: docker-scs-1-30-cluster-class +type: application +version: v1 diff --git a/providers/docker/scs/cluster-class/templates/_helpers.tpl b/providers/docker/scs/cluster-class/templates/_helpers.tpl new file mode 100644 index 00000000..2339c125 --- /dev/null +++ b/providers/docker/scs/cluster-class/templates/_helpers.tpl @@ -0,0 +1,62 @@ +{{/* +Expand the name of the chart. +*/}} +{{- define "cluster-class.name" -}} +{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Create a default fully qualified app name. +We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). +If release name contains chart name it will be used as a full name. +*/}} +{{- define "cluster-class.fullname" -}} +{{- if .Values.fullnameOverride }} +{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }} +{{- else }} +{{- $name := default .Chart.Name .Values.nameOverride }} +{{- if contains $name .Release.Name }} +{{- .Release.Name | trunc 63 | trimSuffix "-" }} +{{- else }} +{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }} +{{- end }} +{{- end }} +{{- end }} + +{{/* +Create chart name and version as used by the chart label. +*/}} +{{- define "cluster-class.chart" -}} +{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Common labels +*/}} +{{- define "cluster-class.labels" -}} +helm.sh/chart: {{ include "cluster-class.chart" . }} +{{ include "cluster-class.selectorLabels" . }} +{{- if .Chart.AppVersion }} +app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} +{{- end }} +app.kubernetes.io/managed-by: {{ .Release.Service }} +{{- end }} + +{{/* +Selector labels +*/}} +{{- define "cluster-class.selectorLabels" -}} +app.kubernetes.io/name: {{ include "cluster-class.name" . }} +app.kubernetes.io/instance: {{ .Release.Name }} +{{- end }} + +{{/* +Create the name of the service account to use +*/}} +{{- define "cluster-class.serviceAccountName" -}} +{{- if .Values.serviceAccount.create }} +{{- default (include "cluster-class.fullname" .) .Values.serviceAccount.name }} +{{- else }} +{{- default "default" .Values.serviceAccount.name }} +{{- end }} +{{- end }} diff --git a/providers/docker/scs/cluster-class/templates/cluster-class.yaml b/providers/docker/scs/cluster-class/templates/cluster-class.yaml new file mode 100644 index 00000000..16a64cde --- /dev/null +++ b/providers/docker/scs/cluster-class/templates/cluster-class.yaml @@ -0,0 +1,101 @@ +apiVersion: cluster.x-k8s.io/v1beta1 +kind: ClusterClass +metadata: + name: {{ .Release.Name }}-{{ .Chart.Version }} + namespace: {{.Release.Namespace}} +spec: + controlPlane: + ref: + apiVersion: controlplane.cluster.x-k8s.io/v1beta1 + kind: KubeadmControlPlaneTemplate + name: {{ .Release.Name }}-{{ .Chart.Version }}-control-plane + namespace: {{ .Release.Namespace }} + machineInfrastructure: + ref: + kind: DockerMachineTemplate + apiVersion: infrastructure.cluster.x-k8s.io/v1beta1 + name: {{ .Release.Name }}-{{ .Chart.Version }}-machinetemplate-docker + namespace: {{ .Release.Namespace }} + infrastructure: + ref: + apiVersion: infrastructure.cluster.x-k8s.io/v1beta1 + kind: DockerClusterTemplate + name: {{ .Release.Name }}-{{ .Chart.Version }}-cluster + namespace: {{ .Release.Namespace }} + workers: + machineDeployments: + - class: default-worker + template: + bootstrap: + ref: + apiVersion: bootstrap.cluster.x-k8s.io/v1beta1 + kind: KubeadmConfigTemplate + name: {{ .Release.Name }}-{{ .Chart.Version }}-worker-bootstraptemplate-docker + namespace: {{ .Release.Namespace }} + infrastructure: + ref: + apiVersion: infrastructure.cluster.x-k8s.io/v1beta1 + kind: DockerMachineTemplate + name: {{ .Release.Name }}-{{ .Chart.Version }}-machinetemplate-docker + namespace: {{ .Release.Namespace }} + variables: + - name: imageRepository + required: true + schema: + openAPIV3Schema: + type: string + default: "" + example: "registry.k8s.io" + description: "imageRepository sets the container registry to pull images from. If empty, nothing will be set and the from of kubeadm will be used." + patches: + - name: imageRepository + description: "Sets the imageRepository used for the KubeadmControlPlane." + enabledIf: '{{ ne .imageRepository "" }}' + definitions: + - selector: + apiVersion: controlplane.cluster.x-k8s.io/v1beta1 + kind: KubeadmControlPlaneTemplate + matchResources: + controlPlane: true + jsonPatches: + - op: add + path: "/spec/template/spec/kubeadmConfigSpec/clusterConfiguration/imageRepository" + valueFrom: + variable: imageRepository + - name: customImage + description: "Sets the container image that is used for running dockerMachines for the controlplane and worker machineDeployments." + definitions: + - selector: + apiVersion: infrastructure.cluster.x-k8s.io/v1beta1 + kind: DockerMachineTemplate + matchResources: + machineDeploymentClass: + names: + - default-worker + jsonPatches: + - op: add + path: "/spec/template/spec/customImage" + value: {{ (index .Values.images.controlPlane 0).name }} + - selector: + apiVersion: infrastructure.cluster.x-k8s.io/v1beta1 + kind: DockerMachineTemplate + matchResources: + controlPlane: true + jsonPatches: + - op: add + path: "/spec/template/spec/customImage" + value: {{ (index .Values.images.controlPlane 0).name }} + - name: DockerMachineTemplateWorker + description: "Sets the container image that is used for running dockerMachines for the worker machineDeployments." + definitions: + - selector: + apiVersion: infrastructure.cluster.x-k8s.io/v1beta1 + kind: DockerMachineTemplate + matchResources: + machineDeploymentClass: + names: + - default-worker + jsonPatches: + - op: add + path: "/spec/template/spec/customImage" + value: {{ (index .Values.images.worker 0).name }} diff --git a/providers/docker/scs/cluster-class/templates/docker-cluster-template.yaml b/providers/docker/scs/cluster-class/templates/docker-cluster-template.yaml new file mode 100644 index 00000000..0bdf7120 --- /dev/null +++ b/providers/docker/scs/cluster-class/templates/docker-cluster-template.yaml @@ -0,0 +1,8 @@ +apiVersion: infrastructure.cluster.x-k8s.io/v1beta1 +kind: DockerClusterTemplate +metadata: + name: {{ .Release.Name }}-{{ .Chart.Version }}-cluster + namespace: {{ .Release.Namespace }} +spec: + template: + spec: {} diff --git a/providers/docker/scs/cluster-class/templates/docker-machine-template.yaml b/providers/docker/scs/cluster-class/templates/docker-machine-template.yaml new file mode 100644 index 00000000..bc4c6cc6 --- /dev/null +++ b/providers/docker/scs/cluster-class/templates/docker-machine-template.yaml @@ -0,0 +1,11 @@ +apiVersion: infrastructure.cluster.x-k8s.io/v1beta1 +kind: DockerMachineTemplate +metadata: + name: {{ .Release.Name }}-{{ .Chart.Version }}-machinetemplate-docker + namespace: {{ .Release.Namespace }} +spec: + template: + spec: + extraMounts: + - containerPath: "/var/run/docker.sock" + hostPath: "/var/run/docker.sock" diff --git a/providers/docker/scs/cluster-class/templates/kubeadm-config-template-worker-docker.yaml b/providers/docker/scs/cluster-class/templates/kubeadm-config-template-worker-docker.yaml new file mode 100644 index 00000000..861ccec4 --- /dev/null +++ b/providers/docker/scs/cluster-class/templates/kubeadm-config-template-worker-docker.yaml @@ -0,0 +1,15 @@ +apiVersion: bootstrap.cluster.x-k8s.io/v1beta1 +kind: KubeadmConfigTemplate +metadata: + name: {{ .Release.Name }}-{{ .Chart.Version }}-worker-bootstraptemplate-docker + namespace: {{ .Release.Namespace }} +spec: + template: + spec: + joinConfiguration: + nodeRegistration: + # We have to set the criSocket to containerd as kubeadm defaults to docker runtime if both containerd and docker sockets are found + criSocket: unix:///var/run/containerd/containerd.sock + kubeletExtraArgs: + eviction-hard: 'nodefs.available<0%,nodefs.inodesFree<0%,imagefs.available<0%' + fail-swap-on: "false" diff --git a/providers/docker/scs/cluster-class/templates/kubeadm-control-plane-template.yaml b/providers/docker/scs/cluster-class/templates/kubeadm-control-plane-template.yaml new file mode 100644 index 00000000..c76866e7 --- /dev/null +++ b/providers/docker/scs/cluster-class/templates/kubeadm-control-plane-template.yaml @@ -0,0 +1,29 @@ +apiVersion: controlplane.cluster.x-k8s.io/v1beta1 +kind: KubeadmControlPlaneTemplate +metadata: + name: {{ .Release.Name }}-{{ .Chart.Version }}-control-plane + namespace: {{ .Release.Namespace }} +spec: + template: + spec: + kubeadmConfigSpec: + clusterConfiguration: + controllerManager: + extraArgs: { enable-hostpath-provisioner: 'true' } + apiServer: + # host.docker.internal is required by kubetest when running on MacOS because of the way ports are proxied. + certSANs: [localhost, 127.0.0.1, 0.0.0.0, host.docker.internal] + initConfiguration: + nodeRegistration: + # We have to set the criSocket to containerd as kubeadm defaults to docker runtime if both containerd and docker sockets are found + criSocket: unix:///var/run/containerd/containerd.sock + kubeletExtraArgs: + eviction-hard: 'nodefs.available<0%,nodefs.inodesFree<0%,imagefs.available<0%' + fail-swap-on: "false" + joinConfiguration: + nodeRegistration: + # We have to set the criSocket to containerd as kubeadm defaults to docker runtime if both containerd and docker sockets are found + criSocket: unix:///var/run/containerd/containerd.sock + kubeletExtraArgs: + eviction-hard: 'nodefs.available<0%,nodefs.inodesFree<0%,imagefs.available<0%' + fail-swap-on: "false" diff --git a/providers/docker/scs/cluster-class/values.yaml b/providers/docker/scs/cluster-class/values.yaml new file mode 100644 index 00000000..a55ba734 --- /dev/null +++ b/providers/docker/scs/cluster-class/values.yaml @@ -0,0 +1,5 @@ +images: + controlPlane: + - name: registry.scs.community/docker.io/kindest/node:v1.30.10 + worker: + - name: registry.scs.community/docker.io/kindest/node:v1.30.10 diff --git a/providers/docker/scs/clusteraddon.yaml b/providers/docker/scs/clusteraddon.yaml new file mode 100644 index 00000000..60f4e562 --- /dev/null +++ b/providers/docker/scs/clusteraddon.yaml @@ -0,0 +1,13 @@ +apiVersion: clusteraddonconfig.x-k8s.io/v1alpha1 +clusterAddonVersion: clusteraddons.clusterstack.x-k8s.io/v1alpha1 +addonStages: + AfterControlPlaneInitialized: + - name: cni + action: apply + - name: metrics-server + action: apply + BeforeClusterUpgrade: + - name: cni + action: apply + - name: metrics-server + action: apply diff --git a/providers/docker/scs/clusterstack.yaml b/providers/docker/scs/clusterstack.yaml new file mode 100644 index 00000000..488aa714 --- /dev/null +++ b/providers/docker/scs/clusterstack.yaml @@ -0,0 +1,14 @@ +apiVersion: clusterstack.x-k8s.io/v1alpha1 +kind: ClusterStack +metadata: + name: docker-131 + namespace: cluster +spec: + autoSubscribe: false + channel: custom + kubernetesVersion: "1.31" + name: scs + noProvider: true + provider: docker + versions: + - v0-sha.hdl6pjy diff --git a/providers/docker/scs/csctl.yaml b/providers/docker/scs/csctl.yaml new file mode 100644 index 00000000..c9d2c1cb --- /dev/null +++ b/providers/docker/scs/csctl.yaml @@ -0,0 +1,7 @@ +apiVersion: csctl.clusterstack.x-k8s.io/v1alpha1 +config: + kubernetesVersion: v1.30.10 + clusterStackName: scs + provider: + type: docker + apiVersion: docker.csctl.clusterstack.x-k8s.io/v1alpha1 diff --git a/providers/openstack/scs/cluster-addon-values.yaml b/providers/openstack/scs/cluster-addon-values.yaml index 90bde834..d0e64aac 100644 --- a/providers/openstack/scs/cluster-addon-values.yaml +++ b/providers/openstack/scs/cluster-addon-values.yaml @@ -1,34 +1,8 @@ values: | - {{- define "yawol_image_id" -}} - {{- range .Cluster.spec.topology.variables -}} - {{- if eq .name "yawol_image_id" -}} - {{ .value }} - {{- end -}} - {{- end -}} - {{- end }} - {{- define "yawol_flavor_id" -}} - {{- range .Cluster.spec.topology.variables -}} - {{- if eq .name "yawol_flavor_id" -}} - {{ .value }} - {{- end -}} - {{- end -}} - {{- end }} metrics-server: commonLabels: domain: "{{ .Cluster.spec.controlPlaneEndpoint.host }}" clusterAddonVersion: "v2" - {{ range .Cluster.spec.topology.variables }} - {{- if and (eq .name "workload_loadbalancer") (eq .value "yawol") }} - yawol-controller: - enabled: true - yawolFloatingID: "{{ $.InfraCluster.status.externalNetwork.id }}" - yawolNetworkID: "{{ $.InfraCluster.status.network.id }}" - yawolAPIHost: "{{ printf "https://%s:%d" $.Cluster.spec.controlPlaneEndpoint.host $.Cluster.spec.controlPlaneEndpoint.port }}" - yawolFlavorID: {{ template "yawol_flavor_id" $}} - yawolImageID: {{ template "yawol_image_id" $}} - {{- end }} - {{- end }} - openstack-cloud-controller-manager: cluster: name: {{ .Cluster.metadata.name }} @@ -36,7 +10,7 @@ values: | loadBalancer: {{- range .Cluster.spec.topology.variables }} {{- if eq .name "workload_loadbalancer" }} - {{- if or (eq .value "none") (eq .value "yawol") }} + {{- if eq .value "none" }} enabled: false {{ else if eq .value "octavia-amphora" }} enabled: true diff --git a/providers/openstack/scs/cluster-addon/Chart.lock b/providers/openstack/scs/cluster-addon/Chart.lock deleted file mode 100644 index 528521d7..00000000 --- a/providers/openstack/scs/cluster-addon/Chart.lock +++ /dev/null @@ -1,18 +0,0 @@ -dependencies: -- name: metrics-server - repository: https://kubernetes-sigs.github.io/metrics-server/ - version: 3.12.0 -- name: cilium - repository: https://helm.cilium.io/ - version: 1.16.3 -- name: openstack-cloud-controller-manager - repository: https://kubernetes.github.io/cloud-provider-openstack - version: 2.28.4 -- name: openstack-cinder-csi - repository: https://kubernetes.github.io/cloud-provider-openstack - version: 2.28.2 -- name: yawol-controller - repository: https://stackitcloud.github.io/yawol - version: 0.21.3 -digest: sha256:022d98ff75f315c6467c2b71156dcf30c25f2437f14c3452ac14c1cd68523b17 -generated: "2024-10-20T10:37:24.476007912+02:00" diff --git a/providers/openstack/scs/cluster-addon/Chart.yaml b/providers/openstack/scs/cluster-addon/Chart.yaml deleted file mode 100644 index 7f8fa63b..00000000 --- a/providers/openstack/scs/cluster-addon/Chart.yaml +++ /dev/null @@ -1,26 +0,0 @@ -apiVersion: v2 -dependencies: - - alias: metrics-server - name: metrics-server - repository: https://kubernetes-sigs.github.io/metrics-server/ - version: 3.12.2 - - alias: cilium - name: cilium - repository: https://helm.cilium.io/ - version: 1.16.3 - - alias: openstack-cloud-controller-manager - name: openstack-cloud-controller-manager - repository: https://kubernetes.github.io/cloud-provider-openstack - version: 2.28.4 - - alias: openstack-cinder-csi - name: openstack-cinder-csi - repository: https://kubernetes.github.io/cloud-provider-openstack - version: 2.28.2 - - alias: yawol-controller - condition: yawol-controller.enabled - name: yawol-controller - repository: https://stackitcloud.github.io/yawol - version: 0.25.0 -name: openstack-scs-1-29-cluster-addon -type: application -version: v1 diff --git a/providers/openstack/scs/cluster-addon/ccm/Chart.lock b/providers/openstack/scs/cluster-addon/ccm/Chart.lock new file mode 100644 index 00000000..3331b6a8 --- /dev/null +++ b/providers/openstack/scs/cluster-addon/ccm/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: openstack-cloud-controller-manager + repository: https://kubernetes.github.io/cloud-provider-openstack + version: 2.31.1 +digest: sha256:37581a55204e3d55a12413fec097c8f8ab2fa6e3c43f0c6b2a13ad5f94e366ab +generated: "2025-01-31T08:56:58.099398117+01:00" diff --git a/providers/openstack/scs/cluster-addon/ccm/Chart.yaml b/providers/openstack/scs/cluster-addon/ccm/Chart.yaml new file mode 100644 index 00000000..551ba1f9 --- /dev/null +++ b/providers/openstack/scs/cluster-addon/ccm/Chart.yaml @@ -0,0 +1,10 @@ +apiVersion: v2 +type: application +description: CCM +name: CCM +version: v1 +dependencies: + - alias: openstack-cloud-controller-manager + name: openstack-cloud-controller-manager + repository: https://kubernetes.github.io/cloud-provider-openstack + version: 2.31.1 diff --git a/providers/openstack/scs/cluster-addon/ccm/charts/openstack-cloud-controller-manager-2.31.1.tgz b/providers/openstack/scs/cluster-addon/ccm/charts/openstack-cloud-controller-manager-2.31.1.tgz new file mode 100644 index 00000000..c34df7a0 Binary files /dev/null and b/providers/openstack/scs/cluster-addon/ccm/charts/openstack-cloud-controller-manager-2.31.1.tgz differ diff --git a/providers/openstack/scs/cluster-addon/ccm/values.yaml b/providers/openstack/scs/cluster-addon/ccm/values.yaml new file mode 100644 index 00000000..770706c7 --- /dev/null +++ b/providers/openstack/scs/cluster-addon/ccm/values.yaml @@ -0,0 +1,13 @@ +openstack-cloud-controller-manager: + secret: + enabled: true + name: cloud-config + create: false + nodeSelector: + node-role.kubernetes.io/control-plane: "" + tolerations: + - key: node.cloudprovider.kubernetes.io/uninitialized + value: "true" + effect: NoSchedule + - key: node-role.kubernetes.io/control-plane + effect: NoSchedule diff --git a/providers/openstack/scs/cluster-addon/charts/cilium-1.16.3.tgz b/providers/openstack/scs/cluster-addon/charts/cilium-1.16.3.tgz deleted file mode 100644 index eaca333a..00000000 Binary files a/providers/openstack/scs/cluster-addon/charts/cilium-1.16.3.tgz and /dev/null differ diff --git a/providers/openstack/scs/cluster-addon/charts/metrics-server-3.12.0.tgz b/providers/openstack/scs/cluster-addon/charts/metrics-server-3.12.0.tgz deleted file mode 100644 index 22f9f8dc..00000000 Binary files a/providers/openstack/scs/cluster-addon/charts/metrics-server-3.12.0.tgz and /dev/null differ diff --git a/providers/openstack/scs/cluster-addon/charts/openstack-cinder-csi-2.28.2.tgz b/providers/openstack/scs/cluster-addon/charts/openstack-cinder-csi-2.28.2.tgz deleted file mode 100644 index 6d9d8a5a..00000000 Binary files a/providers/openstack/scs/cluster-addon/charts/openstack-cinder-csi-2.28.2.tgz and /dev/null differ diff --git a/providers/openstack/scs/cluster-addon/charts/openstack-cloud-controller-manager-2.28.4.tgz b/providers/openstack/scs/cluster-addon/charts/openstack-cloud-controller-manager-2.28.4.tgz deleted file mode 100644 index 96f4e388..00000000 Binary files a/providers/openstack/scs/cluster-addon/charts/openstack-cloud-controller-manager-2.28.4.tgz and /dev/null differ diff --git a/providers/openstack/scs/cluster-addon/charts/yawol-controller-0.21.3.tgz b/providers/openstack/scs/cluster-addon/charts/yawol-controller-0.21.3.tgz deleted file mode 100644 index 68c0c18a..00000000 Binary files a/providers/openstack/scs/cluster-addon/charts/yawol-controller-0.21.3.tgz and /dev/null differ diff --git a/providers/openstack/scs/cluster-addon/cni/Chart.lock b/providers/openstack/scs/cluster-addon/cni/Chart.lock new file mode 100644 index 00000000..f6602079 --- /dev/null +++ b/providers/openstack/scs/cluster-addon/cni/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: cilium + repository: https://helm.cilium.io/ + version: 1.17.1 +digest: sha256:53c34069893b2a60b16c171d128e7cda9fd62ddb96210cde7c0d3c00d6d2f096 +generated: "2025-02-26T12:54:16.166712915+01:00" diff --git a/providers/openstack/scs/cluster-addon/cni/Chart.yaml b/providers/openstack/scs/cluster-addon/cni/Chart.yaml new file mode 100644 index 00000000..b25bda26 --- /dev/null +++ b/providers/openstack/scs/cluster-addon/cni/Chart.yaml @@ -0,0 +1,10 @@ +apiVersion: v2 +type: application +description: CNI +name: CNI +version: v1 +dependencies: + - alias: cilium + name: cilium + repository: https://helm.cilium.io/ + version: 1.17.1 diff --git a/providers/openstack/scs/cluster-addon/cni/charts/cilium-1.17.1.tgz b/providers/openstack/scs/cluster-addon/cni/charts/cilium-1.17.1.tgz new file mode 100644 index 00000000..d95b80cb Binary files /dev/null and b/providers/openstack/scs/cluster-addon/cni/charts/cilium-1.17.1.tgz differ diff --git a/providers/openstack/scs/cluster-addon/cni/values.yaml b/providers/openstack/scs/cluster-addon/cni/values.yaml new file mode 100644 index 00000000..195534d0 --- /dev/null +++ b/providers/openstack/scs/cluster-addon/cni/values.yaml @@ -0,0 +1,9 @@ +cilium: + tls: + secretsNamespace: + name: kube-system + sessionAffinity: true + sctp: + enabled: true + ipam: + mode: "kubernetes" diff --git a/providers/openstack/scs/cluster-addon/csi/Chart.lock b/providers/openstack/scs/cluster-addon/csi/Chart.lock new file mode 100644 index 00000000..121ca914 --- /dev/null +++ b/providers/openstack/scs/cluster-addon/csi/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: openstack-cinder-csi + repository: https://kubernetes.github.io/cloud-provider-openstack + version: 2.31.2 +digest: sha256:c4dae4f651e1be8b82347d74df884fb5c7503e4b9e5d4db9424fa7fdf2e447d7 +generated: "2025-01-31T08:58:29.735075689+01:00" diff --git a/providers/openstack/scs/cluster-addon/csi/Chart.yaml b/providers/openstack/scs/cluster-addon/csi/Chart.yaml new file mode 100644 index 00000000..e56497ed --- /dev/null +++ b/providers/openstack/scs/cluster-addon/csi/Chart.yaml @@ -0,0 +1,10 @@ +apiVersion: v2 +type: application +description: CSI +name: CSI +version: v1 +dependencies: + - alias: openstack-cinder-csi + name: openstack-cinder-csi + repository: https://kubernetes.github.io/cloud-provider-openstack + version: 2.31.2 diff --git a/providers/openstack/scs/cluster-addon/csi/charts/openstack-cinder-csi-2.31.2.tgz b/providers/openstack/scs/cluster-addon/csi/charts/openstack-cinder-csi-2.31.2.tgz new file mode 100644 index 00000000..c79ea208 Binary files /dev/null and b/providers/openstack/scs/cluster-addon/csi/charts/openstack-cinder-csi-2.31.2.tgz differ diff --git a/providers/openstack/scs/cluster-addon/csi/values.yaml b/providers/openstack/scs/cluster-addon/csi/values.yaml new file mode 100644 index 00000000..83817b87 --- /dev/null +++ b/providers/openstack/scs/cluster-addon/csi/values.yaml @@ -0,0 +1,16 @@ +openstack-cinder-csi: + secret: + enabled: true + name: cloud-config + create: false + nodeSelector: + node-role.kubernetes.io/control-plane: "" + tolerations: + - key: node.cloudprovider.kubernetes.io/uninitialized + value: "true" + effect: NoSchedule + - key: node-role.kubernetes.io/control-plane + effect: NoSchedule + storageClass: + delete: + isDefault: true diff --git a/providers/openstack/scs/cluster-addon/metrics-server/.helmignore b/providers/openstack/scs/cluster-addon/metrics-server/.helmignore new file mode 100644 index 00000000..0e8a0eb3 --- /dev/null +++ b/providers/openstack/scs/cluster-addon/metrics-server/.helmignore @@ -0,0 +1,23 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*.orig +*~ +# Various IDEs +.project +.idea/ +*.tmproj +.vscode/ diff --git a/providers/openstack/scs/cluster-addon/metrics-server/Chart.lock b/providers/openstack/scs/cluster-addon/metrics-server/Chart.lock new file mode 100644 index 00000000..fa9531c7 --- /dev/null +++ b/providers/openstack/scs/cluster-addon/metrics-server/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: metrics-server + repository: https://kubernetes-sigs.github.io/metrics-server/ + version: 3.12.2 +digest: sha256:b79715342d7c10e97664b5f4d79199044f5da6ef40cca906218cff05ca891122 +generated: "2025-01-10T10:10:00.37755764+01:00" diff --git a/providers/openstack/scs/cluster-addon/metrics-server/Chart.yaml b/providers/openstack/scs/cluster-addon/metrics-server/Chart.yaml new file mode 100644 index 00000000..8b390112 --- /dev/null +++ b/providers/openstack/scs/cluster-addon/metrics-server/Chart.yaml @@ -0,0 +1,10 @@ +apiVersion: v2 +type: application +description: Metrics Server +name: metrics-server +version: v1 +dependencies: + - name: "metrics-server" + version: "3.12.2" + repository: "https://kubernetes-sigs.github.io/metrics-server/" + alias: "metrics-server" diff --git a/providers/openstack/scs/cluster-addon/metrics-server/charts/metrics-server-3.12.2.tgz b/providers/openstack/scs/cluster-addon/metrics-server/charts/metrics-server-3.12.2.tgz new file mode 100644 index 00000000..4538e8a1 Binary files /dev/null and b/providers/openstack/scs/cluster-addon/metrics-server/charts/metrics-server-3.12.2.tgz differ diff --git a/providers/openstack/scs/cluster-addon/metrics-server/values.yaml b/providers/openstack/scs/cluster-addon/metrics-server/values.yaml new file mode 100644 index 00000000..a89bf027 --- /dev/null +++ b/providers/openstack/scs/cluster-addon/metrics-server/values.yaml @@ -0,0 +1,4 @@ +metrics-server: + fullnameOverride: metrics-server + args: + - --kubelet-insecure-tls diff --git a/providers/openstack/scs/cluster-addon/values.yaml b/providers/openstack/scs/cluster-addon/values.yaml deleted file mode 100644 index 23e4bf59..00000000 --- a/providers/openstack/scs/cluster-addon/values.yaml +++ /dev/null @@ -1,54 +0,0 @@ -metrics-server: - fullnameOverride: metrics-server - replicas: 1 - updateStrategy: - type: RollingUpdate - rollingUpdate: - maxSurge: 0 - maxUnavailable: 1 - - service: - labels: - kubernetes.io/cluster-service: "true" - kubernetes.io/name: "Metrics-server" - - defaultArgs: - - --cert-dir=/tmp - - --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname - - --kubelet-use-node-status-port - - --metric-resolution=15s - - args: - - --kubelet-insecure-tls -openstack-cloud-controller-manager: - secret: - enabled: true - name: cloud-config - create: false - nodeSelector: - node-role.kubernetes.io/control-plane: "" - tolerations: - - key: node.cloudprovider.kubernetes.io/uninitialized - value: "true" - effect: NoSchedule - - key: node-role.kubernetes.io/control-plane - effect: NoSchedule -openstack-cinder-csi: - secret: - enabled: true - name: cloud-config - create: false - nodeSelector: - node-role.kubernetes.io/control-plane: "" - tolerations: - - key: node.cloudprovider.kubernetes.io/uninitialized - value: "true" - effect: NoSchedule - - key: node-role.kubernetes.io/control-plane - effect: NoSchedule - storageClass: - delete: - isDefault: true -yawol-controller: - yawolOSSecretName: cloud-config - enabled: false diff --git a/providers/openstack/scs/cluster-class/Chart.yaml b/providers/openstack/scs/cluster-class/Chart.yaml index bcd2929c..901b5d93 100644 --- a/providers/openstack/scs/cluster-class/Chart.yaml +++ b/providers/openstack/scs/cluster-class/Chart.yaml @@ -1,9 +1,9 @@ apiVersion: v2 -description: "This chart installs and configures: +description: 'This chart installs and configures: * Openstack scs Cluster Class - " -name: openstack-scs-1-29-cluster-class + ' +name: openstack-scs-1-30-cluster-class type: application version: v1 diff --git a/providers/openstack/scs/cluster-class/templates/cluster-class.yaml b/providers/openstack/scs/cluster-class/templates/cluster-class.yaml index 342a4c63..223ad58d 100644 --- a/providers/openstack/scs/cluster-class/templates/cluster-class.yaml +++ b/providers/openstack/scs/cluster-class/templates/cluster-class.yaml @@ -74,45 +74,6 @@ spec: default: 25 example: 25 description: "Root disk size in GiB for worker nodes. OpenStack volume will be created and used instead of an ephemeral disk defined in flavor. Should be used for the diskless flavors." - - name: yawol_flavor_id - required: false - schema: - openAPIV3Schema: - type: string - format: "uuid4" - example: "0a79590e-10d7-4c2c-8f69-ca0a2c6208d2" - description: "ID of the existing flavor used as a default yawol flavor." - - name: yawol_image_id - required: false - schema: - openAPIV3Schema: - type: string - format: "uuid4" - example: "f0b2ef46-f0ff-43d2-9c08-f58a5a6e9060" - description: "ID of the existing imaged used as a default yawol image." - - name: kube_vip_network_id - required: false - schema: - openAPIV3Schema: - type: string - format: "uuid4" - example: "40a51f6c-9e4b-4b24-9187-49851a410c97" - description: "ID of the existing network. The network should have one subnet with one port reserved as virtual IP." - - name: kube_vip_apiserver_virtual_ip - required: false - schema: - openAPIV3Schema: - type: string - format: "ipv4" - example: "10.0.0.197" - description: "Virtual IP address reserved in kube_vip_network_id." - - name: kube_vip_apiserver_public_ip - required: false - schema: - openAPIV3Schema: - type: string - format: "ipv4" - description: "Public IP address associated with kube_vip_apiserver_virtual_ip. It is needed only when the management cluster is on a different network as a workload cluster." - name: openstack_security_groups required: false schema: @@ -169,7 +130,7 @@ spec: openAPIV3Schema: type: string default: "octavia-amphora" - example: "none, octavia-amphora, octavia-ovn, kube-vip" + example: "none, octavia-amphora, octavia-ovn" description: | "In this cluster-stack we have two kind of loadbalancers. Each of them has its own configuration variable. This setting here is to configure the loadbalancer that is placed in front of the apiserver. To configure the loadbalancer for the workloads, see variable workload_loadbalancer. @@ -183,16 +144,6 @@ spec: octavia-ovn: Uses openstack's loadbalancer service (provider:ovn) - - kube-vip: - Uses kube-vip as loadbalancer. - You have to provide the following additional variables: - kube_vip_network_id - kube_vip_apiserver_virtual_ip - kube_vip_apiserver_public_ip - - Requires Kubernetes version < 1.29 - Also the settings node_cidr and dns_nameservers will no longer have an effect. - name: workload_loadbalancer required: false @@ -200,7 +151,7 @@ spec: openAPIV3Schema: type: string default: "octavia-amphora" - example: "none, octavia-amphora, octavia-ovn, yawol" + example: "none, octavia-amphora, octavia-ovn" description: | "This setting here is to configure the loadbalancer solution for your services inside your cluster. If you want to configure the loadbalancer in front of your apiserver, see variable apiserver_loadbalancer instead. @@ -215,12 +166,6 @@ spec: octavia-ovn: Uses openstack's loadbalancer service (provider:ovn) - yawol: - Uses yawol as loadbalancer. - You have to provide the following additional variables: - yawol_flavor_id - yawol_image_id - Also note this setting does not work with application credentials (only username/password)" - name: dns_nameservers required: false @@ -228,9 +173,9 @@ spec: openAPIV3Schema: type: array description: | - "DNSNameservers is the list of nameservers for the OpenStack Subnet being created. Set this value when you need to create a new network/subnet while the access through DNS is required. - This setting has no effect when apiserver_loadbalancer is set to kube-vip. - However you can set the dns server when creating the subnet for kube-vip." + "DNSNameservers is the list of nameservers for the OpenStack Subnet + being created. Set this value when you need to create a new network/subnet + while the access through DNS is required." default: ["5.1.66.255", "185.150.99.255"] example: ["5.1.66.255", "185.150.99.255"] items: @@ -244,9 +189,9 @@ spec: default: "10.8.0.0/20" example: "10.8.0.0/20" description: | - "NodeCIDR is the OpenStack Subnet to be created. Cluster actuator will create a network, a subnet with NodeCIDR, and a router connected to this subnet. If you leave this empty, no network will be created. - This setting has no effect when apiserver_loadbalancer is set to kube-vip. - However you can set the node_cidr when creating the subnet for kube-vip." + "NodeCIDR is the OpenStack Subnet to be created. Cluster actuator + will create a network, a subnet with NodeCIDR, and a router + connected to this subnet. If you leave this empty, no network will be created." - name: certSANs required: false schema: @@ -378,138 +323,6 @@ cre ate group names like oidc:engineering and oidc:infra." - op: add path: "/spec/template/spec/apiServerLoadBalancer/provider" value: "ovn" - - name: apiserver_loadbalancer_kube-vip - description: "Takes care of the patches that should be applied when variable apiserver_loadbalancer is set to kube-vip." - enabledIf: {{ `'{{ eq .apiserver_loadbalancer "kube-vip" }}'` }} - definitions: - - selector: - apiVersion: infrastructure.cluster.x-k8s.io/v1beta1 - kind: OpenStackClusterTemplate - matchResources: - infrastructureCluster: true - jsonPatches: - - op: add - path: "/spec/template/spec/network" - valueFrom: - template: | - id: {{"{{"}} .kube_vip_network_id {{"}}"}} - - op: add - path: "/spec/template/spec/disableAPIServerFloatingIP" - value: true - - op: add - path: "/spec/template/spec/apiServerFixedIP" - valueFrom: - template: {{ `"{{ if .kube_vip_apiserver_public_ip }}{{.kube_vip_apiserver_public_ip}}{{else}}{{.kube_vip_apiserver_virtual_ip}}{{end}}"` }} - - selector: - apiVersion: infrastructure.cluster.x-k8s.io/v1beta1 - kind: OpenStackMachineTemplate - matchResources: - controlPlane: true - jsonPatches: - - op: add - path: "/spec/template/spec/ports" - valueFrom: - template: | - - network: - id: {{"{{"}} .kube_vip_network_id {{"}}"}} - allowedAddressPairs: - - ipAddress: {{"{{"}} .kube_vip_apiserver_virtual_ip {{"}}"}} - - selector: - apiVersion: controlplane.cluster.x-k8s.io/v1beta1 - kind: KubeadmControlPlaneTemplate - matchResources: - controlPlane: true - jsonPatches: - - op: add - path: "/spec/template/spec/kubeadmConfigSpec/preKubeadmCommands" - valueFrom: - template: | - - modprobe --all ip_vs ip_vs_rr nf_conntrack - - op: add - path: "/spec/template/spec/kubeadmConfigSpec/files" - valueFrom: - template: | - - content: | - ip_vs - ip_vs_rr - nf_conntrack - owner: "root:root" - path: /etc/modules-load.d/kube-vip.conf - permissions: "0644" - - op: add - path: "/spec/template/spec/kubeadmConfigSpec/files/-" - valueFrom: - template: | - content: | - # docker run --network host --rm ghcr.io/kube-vip/kube-vip:v0.7.2 manifest pod --address '{{"{{"}} .kube_vip_apiserver_virtual_ip {{"}}"}}' --controlplane --arp --leaderElection --enableLoadBalancer - apiVersion: v1 - kind: Pod - metadata: - creationTimestamp: null - name: kube-vip - namespace: kube-system - spec: - containers: - - args: - - manager - env: - - name: vip_arp - value: "true" - - name: port - value: "6443" - - name: vip_cidr - value: "32" - - name: dns_mode - value: first - - name: cp_enable - value: "true" - - name: cp_namespace - value: kube-system - - name: vip_leaderelection - value: "true" - - name: vip_leasename - value: plndr-cp-lock - - name: vip_leaseduration - value: "5" - - name: vip_renewdeadline - value: "3" - - name: vip_retryperiod - value: "1" - - name: lb_enable - value: "true" - - name: lb_port - value: "6443" - - name: lb_fwdmethod - value: local - - name: address - value: '{{"{{"}} .kube_vip_apiserver_virtual_ip {{"}}"}}' - - name: prometheus_server - value: :2112 - image: ghcr.io/kube-vip/kube-vip:v0.7.2 - imagePullPolicy: IfNotPresent # Always - name: kube-vip - resources: {} - securityContext: - capabilities: - add: - - NET_ADMIN - - NET_RAW - volumeMounts: - - mountPath: /etc/kubernetes/admin.conf - name: kubeconfig - hostAliases: - - hostnames: - - kubernetes - ip: 127.0.0.1 - hostNetwork: true - volumes: - - hostPath: - path: /etc/kubernetes/admin.conf - name: kubeconfig - status: {} - owner: "root:root" - path: /etc/kubernetes/manifests/kube-vip.yaml - permissions: "0644" - name: controller_flavor description: "Sets the openstack instance flavor for the KubeadmControlPlane." enabledIf: {{ `'{{ ne .controller_flavor "" }}'` }} @@ -804,7 +617,7 @@ cre ate group names like oidc:engineering and oidc:infra." variable: oidc_config.groups_prefix - name: subnet description: "Sets the NodeCIDR for the OpenStack Subnet to be created. Cluster actuator will create a network, a subnet with NodeCIDR, and a router connected to this subnet." - enabledIf: {{ `"{{ if and .node_cidr (ne .apiserver_loadbalancer \"kube-vip\")}}true{{end}}"` }} + enabledIf: {{ `"{{ if .node_cidr }}true{{end}}"` }} definitions: - selector: apiVersion: infrastructure.cluster.x-k8s.io/v1beta1 diff --git a/providers/openstack/scs/cluster-class/values.yaml b/providers/openstack/scs/cluster-class/values.yaml index 32c4dc6d..779f0fce 100644 --- a/providers/openstack/scs/cluster-class/values.yaml +++ b/providers/openstack/scs/cluster-class/values.yaml @@ -2,16 +2,14 @@ controller_flavor: SCS-2V-4-20s worker_flavor: SCS-2V-4-20 restrict_kubeapi: [] - # newly introduced: openstack_loadbalancer_apiserver: false - # TBD, currently needed: images: controlPlane: - name: ubuntu-capi-image-v1.29.9 + name: ubuntu-capi-image-v1.30.9 worker: - name: ubuntu-capi-image-v1.29.9 + name: ubuntu-capi-image-v1.30.9 identityRef: name: openstack cloudName: openstack diff --git a/providers/openstack/scs/clusteraddon.yaml b/providers/openstack/scs/clusteraddon.yaml new file mode 100755 index 00000000..bea5fc78 --- /dev/null +++ b/providers/openstack/scs/clusteraddon.yaml @@ -0,0 +1,30 @@ +apiVersion: clusteraddonconfig.x-k8s.io/v1alpha1 +clusterAddonVersion: clusteraddons.clusterstack.x-k8s.io/v1alpha1 +addonStages: + AfterControlPlaneInitialized: + - name: cni + action: apply + - name: metrics-server + action: apply + - name: csi + action: apply + - name: ccm + action: apply + BeforeClusterUpgrade: + - name: cni + action: apply + - name: metrics-server + action: apply + - name: csi + action: apply + - name: ccm + action: apply + AfterClusterUpgrade: + - name: cni + action: apply + - name: metrics-server + action: apply + - name: csi + action: apply + - name: ccm + action: apply diff --git a/providers/openstack/scs/csctl.yaml b/providers/openstack/scs/csctl.yaml index ac4594ae..0d022ef2 100644 --- a/providers/openstack/scs/csctl.yaml +++ b/providers/openstack/scs/csctl.yaml @@ -1,7 +1,7 @@ apiVersion: csctl.clusterstack.x-k8s.io/v1alpha1 config: clusterStackName: scs - kubernetesVersion: v1.29.9 + kubernetesVersion: v1.30.9 provider: apiVersion: openstack.csctl.clusterstack.x-k8s.io/v1alpha1 config: diff --git a/providers/openstack/scs/node-images/config.yaml b/providers/openstack/scs/node-images/config.yaml index 92dc1fa8..66c63066 100644 --- a/providers/openstack/scs/node-images/config.yaml +++ b/providers/openstack/scs/node-images/config.yaml @@ -1,8 +1,8 @@ apiVersion: openstack.infrastructure.clusterstack.x-k8s.io/v1alpha1 openStackNodeImages: - - createOpts: - container_format: bare - disk_format: qcow2 - name: ubuntu-capi-image-v1.29.9 - visibility: private - url: https://swift.services.a.regiocloud.tech/swift/v1/AUTH_b182637428444b9aa302bb8d5a5a418c/openstack-k8s-capi-images/ubuntu-2204-kube-v1.29/ubuntu-2204-kube-v1.29.9.qcow2 +- createOpts: + container_format: bare + disk_format: qcow2 + name: ubuntu-capi-image-v1.30.9 + visibility: private + url: https://swift.services.a.regiocloud.tech/swift/v1/AUTH_b182637428444b9aa302bb8d5a5a418c/openstack-k8s-capi-images/ubuntu-2204-kube-v1.30/ubuntu-2204-kube-v1.30.9.qcow2 diff --git a/providers/openstack/scs/versions.yaml b/providers/openstack/scs/versions.yaml index 34aec57d..8e6b6863 100644 --- a/providers/openstack/scs/versions.yaml +++ b/providers/openstack/scs/versions.yaml @@ -1,9 +1,9 @@ -- kubernetes: 1.29.10 - cinder_csi: 2.29.2 - occm: 2.29.3 -- kubernetes: 1.30.6 - cinder_csi: 2.30.0 - occm: 2.30.3 -- kubernetes: 1.31.2 +- kubernetes: 1.30.9 + cinder_csi: 2.30.2 + occm: 2.30.4 +- kubernetes: 1.31.5 cinder_csi: 2.31.2 occm: 2.31.1 +- kubernetes: 1.32.1 + cinder_csi: 2.32.0 + occm: 2.32.0