|
1 |
| -# Quickstart |
| 1 | +# Getting Started |
| 2 | + |
| 3 | +## Quickstart |
2 | 4 |
|
3 | 5 | Currently, there is a [demo](https://github.com/SovereignCloudStack/cluster-stacks-demo) that can be used to see how the Cluster Stack approach can work. It uses the Docker Provider Integration for Cluster API.
|
4 | 6 |
|
5 |
| -For production use, the Cluster Stack Operator can be used together with the [Cluster Stack Provider OpenStack](https://github.com/SovereignCloudStack/cluster-stack-provider-openstack) to manage Kubernetes clusters on OpenStack. You can see how it is used in the corresponding [Quickstart Documentation](../../cluster-stacks/providers/openstack/quickstart.md) of Cluster Stacks. |
| 7 | +## Installation |
| 8 | + |
| 9 | +### Prerequisites |
| 10 | + |
| 11 | +``` |
| 12 | +- clusterctl |
| 13 | +- envsubst |
| 14 | +- kubectl |
| 15 | +- Helm (optional) |
| 16 | +``` |
| 17 | + |
| 18 | +#### Cluster API |
| 19 | + |
| 20 | +We assume access to a Kubernetes cluster. To start |
| 21 | +[kind](https://kind.sigs.k8s.io/) can be used for that. |
| 22 | +This Kubernetes cluster must act as Cluster API management cluster. |
| 23 | +If not already done, to make your Kubernetes cluster a management cluster by |
| 24 | +installing the Cluster API objects, you can do |
| 25 | + |
| 26 | +``` |
| 27 | +clusterctl init |
| 28 | +``` |
| 29 | + |
| 30 | +### Configure Release Source |
| 31 | + |
| 32 | +The Cluster Stack Operator downloads Cluster Stack releases either from GitHub |
| 33 | +Releases or from an OCI registry. |
| 34 | +Depending on which method is preferred, environment variables must be set to |
| 35 | +give the Cluster Stack Operator access to the specific source. |
| 36 | + |
| 37 | +#### Using GitHub Releases |
| 38 | + |
| 39 | +> Be aware that GitHub enforces limitations on the number of API requests per |
| 40 | +> unit of time. To overcome this, it is recommended to configure a [personal |
| 41 | +> access token](https://github.com/settings/personal-access-tokens/new) for |
| 42 | +> authenticated calls. This will significantly increase the rate limit for GitHub |
| 43 | +> API requests. Fine grained PAT with `Public Repositories (read-only)` is |
| 44 | +> enough. |
| 45 | +
|
| 46 | +Following variables tells the Cluster Stack Operator to look for releases in |
| 47 | +`https://github.com/SovereignCloudStack/cluster-stacks` |
| 48 | + |
| 49 | +```bash |
| 50 | +export GIT_PROVIDER_B64=Z2l0aHVi # github |
| 51 | +export GIT_ORG_NAME_B64=U292ZXJlaWduQ2xvdWRTdGFjaw== # SovereignCloudStack |
| 52 | +export GIT_REPOSITORY_NAME_B64=Y2x1c3Rlci1zdGFja3M= # cluster-stacks |
| 53 | +export GIT_ACCESS_TOKEN_B64=$(echo -n '<my-personal-access-token>' | base64 -w0) |
| 54 | +``` |
| 55 | + |
| 56 | +#### Using OCI Registry |
| 57 | + |
| 58 | +Following variables tells the Cluster Stack Operator to look for releases in |
| 59 | +`https://registry.scs.community/kaas/cluster-stacks` |
| 60 | + |
| 61 | +```bash |
| 62 | +export OCI_REGISTRY_B64=cmVnaXN0cnkuc2NzLmNvbW11bml0eQ== # registry.scs.community |
| 63 | +export OCI_REPOSITORY_B64=cmVnaXN0cnkuc2NzLmNvbW11bml0eS9rYWFzL2NsdXN0ZXItc3RhY2tzCg== # registry.scs.community/kaas/cluster-stacks |
| 64 | +``` |
| 65 | + |
| 66 | +If the registry is not public the Cluster Stack Operator please also provide |
| 67 | +`OCI_USERNAME_B64` and `OCI_PASSWORD_B64` or |
| 68 | +`OCI_ACCESS_TOKEN_B64` |
| 69 | + |
| 70 | +### Install Cluster Stack Operator |
| 71 | + |
| 72 | +#### Install by manifest |
| 73 | + |
| 74 | +```bash |
| 75 | +# Get the latest CSO release version and apply CSO manifests |
| 76 | +curl -sSL https://github.com/SovereignCloudStack/cluster-stack-operator/releases/latest/download/cso-infrastructure-components.yaml | envsubst | kubectl apply -f - |
| 77 | +``` |
| 78 | + |
| 79 | +##### Enable OCI registry as source |
| 80 | + |
| 81 | +Since GitHub is set as default source for the Cluster Stack releases, this can be changed with a patch: |
| 82 | + |
| 83 | +```bash |
| 84 | +kubectl patch deployment -n cso-system cso-controller-manager --type='json' -p='[{"op": "replace", "path": "/spec/template/spec/containers/0/command", "value": ["/manager", "-source", "oci"]}]' |
| 85 | +``` |
| 86 | + |
| 87 | +#### Install with Helm (experimental) |
| 88 | + |
| 89 | +There are simple Helm charts available which were created especially to make the switch between the sources easier. |
| 90 | + |
| 91 | +```bash |
| 92 | +helm upgrade -i cso -n cso-system \ |
| 93 | + --create-namespace oci://registry.scs.community/cluster-stacks/cso \ |
| 94 | + --set controllerManager.manager.source=oci \ |
| 95 | + --set clusterStackVariables.ociRepository=registry.scs.community/kaas/cluster-stacks |
| 96 | +``` |
0 commit comments