|
|
@ -2,13 +2,13 @@
|
|
|
|
|
|
|
|
|
|
|
|
## Prerequisites
|
|
|
|
## Prerequisites
|
|
|
|
|
|
|
|
|
|
|
|
You will need a Kubernetes cluster version 1.14 or newer and kubectl version 1.18.
|
|
|
|
You will need two Kubernetes clusters version 1.14 or newer and kubectl version 1.18.
|
|
|
|
For a quick local test, you can use `minikube`, `kubeadm` or `kind`.
|
|
|
|
For a quick local test, you can use [Kubernetes kind](https://kind.sigs.k8s.io/docs/user/quick-start/).
|
|
|
|
Any other Kubernetes setup will work as well though.
|
|
|
|
Any other Kubernetes setup will work as well though.
|
|
|
|
|
|
|
|
|
|
|
|
In order to follow the guide you'll need a GitHub account and a
|
|
|
|
In order to follow the guide you'll need a GitHub account and a
|
|
|
|
[personal access token](https://help.github.com/en/github/authenticating-to-github/creating-a-personal-access-token-for-the-command-line)
|
|
|
|
[personal access token](https://help.github.com/en/github/authenticating-to-github/creating-a-personal-access-token-for-the-command-line)
|
|
|
|
that can create repositories.
|
|
|
|
that can create repositories (check all permissions under `repo`).
|
|
|
|
|
|
|
|
|
|
|
|
Export your GitHub personal access token and username:
|
|
|
|
Export your GitHub personal access token and username:
|
|
|
|
|
|
|
|
|
|
|
@ -49,6 +49,13 @@ Using the toolkit CLI you'll do the following:
|
|
|
|
|
|
|
|
|
|
|
|
## Staging bootstrap
|
|
|
|
## Staging bootstrap
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Create the staging cluster using Kubernetes kind or set the kubectl context to an existing cluster:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
```sh
|
|
|
|
|
|
|
|
kind create cluster --name staging
|
|
|
|
|
|
|
|
kubectl cluster-info --context kind-staging
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
Verify that your staging cluster satisfies the prerequisites with:
|
|
|
|
Verify that your staging cluster satisfies the prerequisites with:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
```text
|
|
|
@ -56,7 +63,7 @@ $ tk check --pre
|
|
|
|
|
|
|
|
|
|
|
|
► checking prerequisites
|
|
|
|
► checking prerequisites
|
|
|
|
✔ kubectl 1.18.3 >=1.18.0
|
|
|
|
✔ kubectl 1.18.3 >=1.18.0
|
|
|
|
✔ kubernetes 1.16.8-eks-e16311 >=1.14.0
|
|
|
|
✔ kubernetes 1.18.2 >=1.14.0
|
|
|
|
✔ prerequisites checks passed
|
|
|
|
✔ prerequisites checks passed
|
|
|
|
```
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
@ -125,10 +132,12 @@ deployment "kustomize-controller" successfully rolled out
|
|
|
|
|
|
|
|
|
|
|
|
If you prefer GitLab, export `GITLAB_TOKEN` env var and use the command [tk bootstrap gitlab](../cmd/tk_bootstrap_gitlab.md).
|
|
|
|
If you prefer GitLab, export `GITLAB_TOKEN` env var and use the command [tk bootstrap gitlab](../cmd/tk_bootstrap_gitlab.md).
|
|
|
|
|
|
|
|
|
|
|
|
!!! hint
|
|
|
|
!!! hint "Idempotency"
|
|
|
|
It is safe to run the bootstrap command as many times as you want.
|
|
|
|
It is safe to run the bootstrap command as many times as you want.
|
|
|
|
If the toolkit components are present on the cluster,
|
|
|
|
If the toolkit components are present on the cluster,
|
|
|
|
the bootstrap command will perform an upgrade if needed.
|
|
|
|
the bootstrap command will perform an upgrade if needed.
|
|
|
|
|
|
|
|
You can target a specific toolkit [version](https://github.com/fluxcd/toolkit/releases)
|
|
|
|
|
|
|
|
with `tk bootstrap --version=<semver>`.
|
|
|
|
|
|
|
|
|
|
|
|
## Staging workflow
|
|
|
|
## Staging workflow
|
|
|
|
|
|
|
|
|
|
|
@ -222,12 +231,12 @@ service/backend ClusterIP 10.52.10.22 <none> 9898/TCP,9999/TCP 4
|
|
|
|
service/frontend ClusterIP 10.52.9.85 <none> 80/TCP 3m31s
|
|
|
|
service/frontend ClusterIP 10.52.9.85 <none> 80/TCP 3m31s
|
|
|
|
```
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
!!! note
|
|
|
|
!!! tip
|
|
|
|
From this moment forward, any changes made to the webapp
|
|
|
|
From this moment forward, any changes made to the webapp
|
|
|
|
master branch will be synchronised with the cluster.
|
|
|
|
Kubernetes manifests in the master branch will be synchronised with the staging cluster.
|
|
|
|
|
|
|
|
|
|
|
|
If a Kubernetes manifest is removed from source, the reconclier will remove it from your cluster. If you
|
|
|
|
If a Kubernetes manifest is removed from the webapp repository, the reconciler will remove it from your cluster.
|
|
|
|
delete a kustomization from the fleet infra repo, the reconciler will remove all Kubernetes objects that
|
|
|
|
If you delete a kustomization from the `fleet-infra` repo, the reconciler will remove all Kubernetes objects that
|
|
|
|
were previously applied from that kustomization.
|
|
|
|
were previously applied from that kustomization.
|
|
|
|
|
|
|
|
|
|
|
|
If you alter the webapp deployment using `kubectl edit`, the changes will be reverted to match
|
|
|
|
If you alter the webapp deployment using `kubectl edit`, the changes will be reverted to match
|
|
|
@ -240,7 +249,14 @@ is over, you can re-enable the reconciliation with `tk resume kustomization <nam
|
|
|
|
On production clusters, you may wish to deploy stable releases of an application.
|
|
|
|
On production clusters, you may wish to deploy stable releases of an application.
|
|
|
|
When creating a git source instead of a branch, you can specify a git tag or a semver expression.
|
|
|
|
When creating a git source instead of a branch, you can specify a git tag or a semver expression.
|
|
|
|
|
|
|
|
|
|
|
|
Change your kubectl context to a different cluster and run the bootstrap for the production environment:
|
|
|
|
Create the production cluster using Kubernetes kind or set the kubectl context to an existing cluster:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
```sh
|
|
|
|
|
|
|
|
kind create cluster --name production
|
|
|
|
|
|
|
|
kubectl cluster-info --context kind-production
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Run the bootstrap for the production environment:
|
|
|
|
|
|
|
|
|
|
|
|
```sh
|
|
|
|
```sh
|
|
|
|
tk bootstrap github \
|
|
|
|
tk bootstrap github \
|
|
|
|