|
1 | 1 | # Quickstart |
2 | 2 |
|
3 | | -This section guides you through all the necessary steps to create a workload Kubernetes cluster on top of the OpenStack infrastructure. The guide describes a path that utilizes the [clusterctl] CLI tool to manage the lifecycle of a [CAPI] management cluster and employs [kind] to create a local non-production management cluster. |
| 3 | +This document has been moved. |
4 | 4 |
|
5 | | -Note that it is a common practice to create a temporary, local [bootstrap cluster](https://cluster-api.sigs.k8s.io/reference/glossary#bootstrap-cluster) which is then used to provision a target [management cluster](https://cluster-api.sigs.k8s.io/reference/glossary#management-cluster) on the selected infrastructure. |
6 | | - |
7 | | -## Prerequisites |
8 | | - |
9 | | -- Install [Docker] and [kind] |
10 | | -- Install [kubectl] |
11 | | -- Install [clusterctl] |
12 | | -- Install [jq] |
13 | | -- Install [go] # installation of the Go package `envsubst` is required to enable the expansion of variables specified in CSPO and CSO manifests. |
14 | | - |
15 | | -## Initialize the management cluster |
16 | | - |
17 | | -Create the kind cluster: |
18 | | - |
19 | | -```bash |
20 | | -kind create cluster |
21 | | -``` |
22 | | - |
23 | | -Transform the Kubernetes cluster into a management cluster by using `clusterctl init` and bootstrap it with CAPI and Cluster API Provider OpenStack ([CAPO]) components: |
24 | | - |
25 | | -```bash |
26 | | -# Enable Cluster Class CAPI experimental feature |
27 | | -export CLUSTER_TOPOLOGY=true |
28 | | - |
29 | | -# Install CAPI and CAPO components |
30 | | -clusterctl init --infrastructure openstack |
31 | | -``` |
32 | | - |
33 | | -### Create a secret for OpenStack access |
34 | | - |
35 | | -To enable communication between the CSPO and the Cluster API Provider for OpenStack (CAPO) with the OpenStack API, it is necessary to generate a secret containing the access data (clouds.yaml). |
36 | | -Ensure that this secret is located in the identical namespace as the other Custom Resources. |
37 | | - |
38 | | -> [!NOTE] |
39 | | -> The default value of `cloudName` is configured as `openstack`. This setting can be overridden by including the `cloudName` key in the secret. Also, be aware that the name of the secret is expected to be `openstack` unless it is not set differently in OpenStackClusterStackReleaseTemplate in `identityRef.name` field. |
40 | | -
|
41 | | -```bash |
42 | | -kubectl create secret generic openstack --from-file=clouds.yaml=path/to/clouds.yaml |
43 | | - |
44 | | -# Label the created secrets so they are automatically moved to the target cluster later. |
45 | | - |
46 | | -kubectl label secret openstack clusterctl.cluster.x-k8s.io/move= |
47 | | -``` |
48 | | - |
49 | | -### CSO and CSPO variables preparation |
50 | | - |
51 | | -The CSO and CSPO must be directed to the Cluster Stacks repository housing releases for the OpenStack provider. |
52 | | -Modify and export the following environment variables if you wish to redirect CSO and CSPO to an alternative Git repository |
53 | | - |
54 | | -Be aware that GitHub enforces limitations on the number of API requests per unit of time. To overcome this, |
55 | | -it is recommended to configure a personal access token for authenticated calls. This will significantly increase the rate limit for GitHub API requests. |
56 | | - |
57 | | -```bash |
58 | | -export GIT_PROVIDER_B64=Z2l0aHVi # github |
59 | | -export GIT_ORG_NAME_B64=U292ZXJlaWduQ2xvdWRTdGFjaw== # SovereignCloudStack |
60 | | -export GIT_REPOSITORY_NAME_B64=Y2x1c3Rlci1zdGFja3M= # cluster-stacks |
61 | | -export GIT_ACCESS_TOKEN_B64=<my-github-access-token> |
62 | | -``` |
63 | | - |
64 | | -### CSO and CSPO deployment |
65 | | - |
66 | | -Install the [envsubst] Go package. It is required to enable the expansion of variables specified in CSPO and CSO manifests. |
67 | | - |
68 | | -```bash |
69 | | -GOBIN=/tmp go install github.com/drone/envsubst/v2/cmd/envsubst@latest |
70 | | -``` |
71 | | - |
72 | | -Get the latest CSO release version and apply CSO manifests to the management cluster. |
73 | | - |
74 | | -```bash |
75 | | -# Get the latest CSO release version |
76 | | -CSO_VERSION=$(curl https://api.github.com/repos/SovereignCloudStack/cluster-stack-operator/releases/latest -s | jq .name -r) |
77 | | -# Apply CSO manifests |
78 | | -curl -sSL https://github.com/SovereignCloudStack/cluster-stack-operator/releases/download/${CSO_VERSION}/cso-infrastructure-components.yaml | /tmp/envsubst | kubectl apply -f - |
79 | | -``` |
80 | | - |
81 | | -Get the latest CSPO release version and apply CSPO manifests to the management cluster. |
82 | | - |
83 | | -```bash |
84 | | -# Get the latest CSPO release version |
85 | | -CSPO_VERSION=$(curl https://api.github.com/repos/SovereignCloudStack/cluster-stack-provider-openstack/releases/latest -s | jq .name -r) |
86 | | -# Apply CSPO manifests |
87 | | -curl -sSL https://github.com/SovereignCloudStack/cluster-stack-provider-openstack/releases/download/${CSPO_VERSION}/cspo-infrastructure-components.yaml | /tmp/envsubst | kubectl apply -f - |
88 | | -``` |
89 | | - |
90 | | -## Create the workload cluster |
91 | | - |
92 | | -To transfer the credentials stored in the mentioned secret [above](#create-a-secret-for-openstack-access) to the operator, |
93 | | -create an `OpenStackClusterStackReleaseTemplate` object. |
94 | | -Refer to the `examples/cspotemplate.yaml` file for more details. |
95 | | - |
96 | | -Next, apply this template to the management cluster: |
97 | | - |
98 | | -```bash |
99 | | -kubectl apply -f <path-to-openstack-clusterstack-release-template> |
100 | | -``` |
101 | | - |
102 | | -Proceed to apply the `ClusterStack` to the management cluster. For more details, refer to `examples/clusterstack.yaml`: |
103 | | - |
104 | | -```bash |
105 | | -kubectl apply -f <path-to-openstack-clusterstack> |
106 | | -``` |
107 | | - |
108 | | -Please be patient and wait for the operator to execute the necessary tasks. |
109 | | -If your `ClusterStack` object encounters no errors and reports usable versions, as well as the `openstackclusterstackrelease` and `openstacknodeimagereleases` are ready, you can deploy a workload cluster. |
110 | | -This can be done by applying the cluster-template. |
111 | | -Refer to the example of this template in `examples/cluster.yaml`: |
112 | | - |
113 | | -```bash |
114 | | -kubectl apply -f <path-to-cluster-template> |
115 | | -``` |
116 | | - |
117 | | -Utilize a convenient CLI `clusterctl` to investigate the health of the cluster: |
118 | | - |
119 | | -```bash |
120 | | -clusterctl describe cluster <cluster-name> |
121 | | -``` |
122 | | - |
123 | | -Once the cluster is provisioned and in good health, you can retrieve its kubeconfig and establish communication with the newly created workload cluster: |
124 | | - |
125 | | -```bash |
126 | | -# Get the workload cluster kubeconfig |
127 | | -clusterctl get kubeconfig <cluster-name> > kubeconfig.yaml |
128 | | -# Communicate with the workload cluster |
129 | | -kubectl --kubeconfig kubeconfig.yaml get nodes |
130 | | -``` |
131 | | - |
132 | | -<!-- links --> |
133 | | -[Docker]: https://www.docker.com/ |
134 | | -[kind]: https://kind.sigs.k8s.io/ |
135 | | -[kubectl]: https://kubernetes.io/docs/tasks/tools/install-kubectl/ |
136 | | -[clusterctl]: https://cluster-api.sigs.k8s.io/user/quick-start.html#install-clusterctl |
137 | | -[CAPO]: https://github.com/kubernetes-sigs/cluster-api-provider-openstack |
138 | | -[CAPI]: https://cluster-api.sigs.k8s.io/ |
139 | | -[go]: https://go.dev/doc/install |
140 | | -[envsubst]: https://github.com/drone/envsubst |
141 | | -[jq]: https://jqlang.github.io/jq/download/ |
| 5 | +You can find the current version of the quickstart guide [here](https://github.com/SovereignCloudStack/cluster-stacks/blob/main/providers/openstack/README.md). |
0 commit comments