Skip to content

Commit 04fc39b

Browse files
committed
feat(cluster-stacks): Add new Cluster Stacks scs2
Signed-off-by: Jan Schoone <[email protected]> Feat/scs2 rationalize descriptions (#236) * Fix clusterclass var descriptions capitalization and defaults. Also, rationalize long descriptions to use multi-line yaml strings. * Add missing {} on empty dict. * Better description of apiServerLoadBalancer. Signed-off-by: Kurt Garloff <[email protected]>
1 parent 3e9ab83 commit 04fc39b

25 files changed

+1401
-0
lines changed

providers/openstack/scs2/README.md

Lines changed: 124 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,124 @@
1+
# Cluster Stacks
2+
3+
## Getting started
4+
5+
```sh
6+
# Create bootstrap cluster
7+
kind create cluster
8+
9+
# Init Cluster API
10+
export CLUSTER_TOPOLOGY=true
11+
export EXP_CLUSTER_RESOURCE_SET=true
12+
export EXP_RUNTIME_SDK=true
13+
kubectl apply -f https://github.com/k-orc/openstack-resource-controller/releases/latest/download/install.yaml
14+
clusterctl init --infrastructure openstack
15+
16+
kubectl -n capi-system rollout status deployment
17+
kubectl -n capo-system rollout status deployment
18+
```
19+
20+
```
21+
# Install CSO and CSPO
22+
helm upgrade -i cso \
23+
-n cso-system \
24+
--create-namespace \
25+
oci://registry.scs.community/cluster-stacks/cso
26+
```
27+
28+
```sh
29+
export CLUSTER_NAMESPACE=cluster
30+
export CLUSTER_NAME=my-cluster
31+
export CLUSTERSTACK_NAMESPACE=cluster
32+
export CLUSTERSTACK_VERSION=v1
33+
export OS_CLIENT_CONFIG_FILE=${PWD}/clouds.yaml
34+
kubectl create namespace $CLUSTER_NAMESPACE --dry-run=client -o yaml | kubectl apply -f -
35+
```
36+
37+
```sh
38+
# Create secret for CAPO
39+
kubectl create secret -n $CLUSTER_NAMESPACE generic openstack --from-file=clouds.yaml=$OS_CLIENT_CONFIG_FILE --dry-run=client -oyaml | kubectl apply -f -
40+
41+
# Prepare the Secret as it will be deployed in the Workload Cluster
42+
kubectl create secret -n kube-system generic clouds-yaml --from-file=clouds.yaml=$OS_CLIENT_CONFIG_FILE --dry-run=client -oyaml > clouds-yaml-secret
43+
44+
# Add the Secret to the ClusterResourceSet Secret in the Management Cluster
45+
kubectl create -n $CLUSTER_NAMESPACE secret generic clouds-yaml --from-file=clouds-yaml-secret --type=addons.cluster.x-k8s.io/resource-set --dry-run=client -oyaml | kubectl apply -f -
46+
```
47+
48+
```yaml
49+
cat <<EOF | kubectl apply -f -
50+
apiVersion: addons.cluster.x-k8s.io/v1beta1
51+
kind: ClusterResourceSet
52+
metadata:
53+
name: clouds-yaml
54+
namespace: $CLUSTER_NAMESPACE
55+
spec:
56+
strategy: "Reconcile"
57+
clusterSelector:
58+
matchLabels:
59+
managed-secret: clouds-yaml
60+
resources:
61+
- name: clouds-yaml
62+
kind: Secret
63+
EOF
64+
```
65+
66+
```sh
67+
# Apply ClusterStack resource
68+
cat <<EOF | kubectl apply -f -
69+
apiVersion: clusterstack.x-k8s.io/v1alpha1
70+
kind: ClusterStack
71+
metadata:
72+
name: openstack
73+
namespace: $CLUSTERSTACK_NAMESPACE
74+
spec:
75+
provider: openstack
76+
name: scs2
77+
kubernetesVersion: "1.33"
78+
channel: stable
79+
autoSubscribe: false
80+
noProvider: true
81+
versions:
82+
- $CLUSTERSTACK_VERSION
83+
EOF
84+
```
85+
86+
```sh
87+
# Apply Cluster resource
88+
cat <<EOF | kubectl apply -f -
89+
apiVersion: cluster.x-k8s.io/v1beta1
90+
kind: Cluster
91+
metadata:
92+
name: $CLUSTER_NAME
93+
namespace: $CLUSTER_NAMESPACE
94+
95+
labels:
96+
managed-secret: clouds-yaml
97+
spec:
98+
clusterNetwork:
99+
pods:
100+
cidrBlocks:
101+
- "172.16.0.0/16"
102+
serviceDomain: cluster.local
103+
services:
104+
cidrBlocks:
105+
- "10.96.0.0/12"
106+
topology:
107+
variables:
108+
class: openstack-scs2-1-33-$CLUSTERSTACK_VERSION
109+
classNamespace: $CLUSTERSTACK_NAMESPACE
110+
controlPlane:
111+
replicas: 1
112+
version: v1.33.4
113+
workers:
114+
machineDeployments:
115+
- class: default-worker
116+
name: md-0
117+
replicas: 1
118+
EOF
119+
```
120+
121+
```sh
122+
clusterctl get kubeconfig -n $CLUSTER_NAMESPACE openstack-testcluster > /tmp/kubeconfig
123+
kubectl get nodes --kubeconfig /tmp/kubeconfig
124+
```
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.18.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"

0 commit comments

Comments
 (0)