Skip to content

Commit 6218088

Browse files
committed
feat(hcp): Add Hosted Control Plane cluster stack for OpenStack
Add the HCP cluster stack (providers/openstack/hcp/) with three K8s minor versions (1-33, 1-34, 1-35). Uses the teutonet cluster-api-provider-hosted-control-plane instead of KubeadmControlPlane — the control plane runs as pods in the management cluster, only worker nodes are provisioned as OpenStack VMs. Based on the origin/hcp branch, adapted to the per-minor-version directory structure with stack.yaml and version-appropriate addon pinning (CCM/CSI matched to K8s minor, Cilium 1.19.1). Assisted-by: Claude Code Signed-off-by: Jan Schoone <jan.schoone@uhurutec.com>
1 parent 76f33c9 commit 6218088

63 files changed

Lines changed: 2976 additions & 0 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
apiVersion: v2
2+
type: application
3+
description: CCM
4+
name: CCM
5+
version: v1
6+
dependencies:
7+
- alias: openstack-cloud-controller-manager
8+
name: openstack-cloud-controller-manager
9+
repository: https://kubernetes.github.io/cloud-provider-openstack
10+
version: 2.33.1
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
values: |
2+
openstack-cloud-controller-manager:
3+
cluster:
4+
name: {{ .Cluster.metadata.name }}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
openstack-cloud-controller-manager:
2+
secret:
3+
enabled: true
4+
name: ccm-cloud-config
5+
create: true
6+
nodeSelector:
7+
tolerations:
8+
- key: node.cloudprovider.kubernetes.io/uninitialized
9+
value: "true"
10+
effect: NoSchedule
11+
extraVolumes:
12+
- name: clouds-yaml
13+
secret:
14+
secretName: clouds-yaml
15+
extraVolumeMounts:
16+
- name: clouds-yaml
17+
readOnly: true
18+
mountPath: /etc/openstack
19+
cloudConfig:
20+
global:
21+
use-clouds: true
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
apiVersion: v2
2+
type: application
3+
description: CNI
4+
name: CNI
5+
version: v1
6+
dependencies:
7+
- alias: cilium
8+
name: cilium
9+
repository: https://helm.cilium.io/
10+
version: 1.19.1
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
cilium:
2+
namespaceOverride: kube-system
3+
tls:
4+
secretsNamespace:
5+
name: "kube-system"
6+
sessionAffinity: true
7+
sctp:
8+
enabled: true
9+
ipam:
10+
mode: "kubernetes"
11+
gatewayAPI:
12+
enabled: true
13+
secretsNamespace:
14+
name: "kube-system"
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
apiVersion: v2
2+
type: application
3+
description: CSI
4+
name: CSI
5+
version: v1
6+
dependencies:
7+
- alias: openstack-cinder-csi
8+
name: openstack-cinder-csi
9+
repository: https://kubernetes.github.io/cloud-provider-openstack
10+
version: 2.33.1
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
values: |
2+
openstack-cinder-csi:
3+
clusterID: "{{ .Cluster.metadata.name }}"
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
openstack-cinder-csi:
2+
secret:
3+
enabled: true
4+
name: csi-cloud-config
5+
create: true
6+
filename: cloud.conf
7+
data:
8+
cloud.conf: |-
9+
[Global]
10+
use-clouds = "true"
11+
clouds-file = /etc/openstack/clouds.yaml
12+
storageClass:
13+
delete:
14+
isDefault: true
15+
csi:
16+
plugin:
17+
volumes:
18+
- name: clouds-yaml
19+
secret:
20+
secretName: clouds-yaml
21+
- name: cloud-conf
22+
secret:
23+
secretName: csi-cloud-config
24+
volumeMounts:
25+
- name: clouds-yaml
26+
readOnly: true
27+
mountPath: /etc/openstack
28+
- name: cloud-conf
29+
readOnly: true
30+
mountPath: /etc/kubernetes
31+
- name: cloud-conf
32+
readOnly: true
33+
mountPath: /etc/config
34+
nodeSelector:
35+
node-role.kubernetes.io/control-plane: ""
36+
tolerations:
37+
- key: node.cloudprovider.kubernetes.io/uninitialized
38+
value: "true"
39+
effect: NoSchedule
40+
- key: node-role.kubernetes.io/control-plane
41+
effect: NoSchedule
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
apiVersion: v2
2+
type: application
3+
description: Metrics Server
4+
name: metrics-server
5+
version: v1
6+
dependencies:
7+
- name: "metrics-server"
8+
version: "3.13.0"
9+
repository: "https://kubernetes-sigs.github.io/metrics-server/"
10+
alias: "metrics-server"
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
values: |
2+
metrics-server:
3+
commonLabels:
4+
domain: "{{ .Cluster.spec.controlPlaneEndpoint.host }}"

0 commit comments

Comments
 (0)