Difference between revisions of "Kubernetes/Progressive Delivery Flux and Flagger"
Jump to navigation
Jump to search
Install Flux v2
(3 intermediate revisions by the same user not shown) | |||
Line 16: | Line 16: | ||
{{Note|<code>fluxctl</code> is a previous version Flux v1 command line tool.}} | {{Note|<code>fluxctl</code> is a previous version Flux v1 command line tool.}} | ||
<source lang=bash> | <source lang=bash> | ||
# Install or upgrade | # Install or upgrade using official install.sh (option-1) | ||
curl -s https://fluxcd.io/install.sh | sudo bash | export FLUX_VERSION=0.37.0; curl -s https://fluxcd.io/install.sh | sudo -E bash | ||
curl -s https://fluxcd.io/install.sh | sudo bash # latest | |||
# Install from GitHub releases (option-2) | |||
REPO=fluxcd/flux2 | |||
LATEST=$(curl --silent "https://api.github.com/repos/$REPO/releases/latest" | jq -r .tag_name | tr -d v); echo $LATEST | |||
VERSION=$LATEST | |||
TEMPDIR=$(mktemp -d); FILE=flux_${VERSION}_linux_amd64 | |||
curl -L https://github.com/$REPO/releases/download/v${VERSION}/$FILE.tar.gz -o $TEMPDIR/$FILE.tar.gz | |||
tar xzvf $TEMPDIR/$FILE.tar.gz -C $TEMPDIR | |||
sudo install $TEMPDIR/flux /usr/local/bin/flux | |||
sudo install $TEMPDIR/flux /usr/local/bin/flux_${VERSION} | |||
# enable completions in ~/.bash_profile | # enable completions in ~/.bash_profile |
Latest revision as of 14:26, 4 January 2024
Flux v2
Flux v2 architecture
Flux v2 - Webhooks and notifications
Docs:
Install Flux v2 flux
command line
Note: fluxctl
is a previous version Flux v1 command line tool.
# Install or upgrade using official install.sh (option-1) export FLUX_VERSION=0.37.0; curl -s https://fluxcd.io/install.sh | sudo -E bash curl -s https://fluxcd.io/install.sh | sudo bash # latest # Install from GitHub releases (option-2) REPO=fluxcd/flux2 LATEST=$(curl --silent "https://api.github.com/repos/$REPO/releases/latest" | jq -r .tag_name | tr -d v); echo $LATEST VERSION=$LATEST TEMPDIR=$(mktemp -d); FILE=flux_${VERSION}_linux_amd64 curl -L https://github.com/$REPO/releases/download/v${VERSION}/$FILE.tar.gz -o $TEMPDIR/$FILE.tar.gz tar xzvf $TEMPDIR/$FILE.tar.gz -C $TEMPDIR sudo install $TEMPDIR/flux /usr/local/bin/flux sudo install $TEMPDIR/flux /usr/local/bin/flux_${VERSION} # enable completions in ~/.bash_profile . <(flux completion bash) # TODO: Via release binaries # https://github.com/fluxcd/flux/releases # Pre check flux check --pre ► checking prerequisites ✗ flux 0.25.1 <0.25.2 (new version is available, please upgrade) ✔ Kubernetes 1.21.5-gke.1302 >=1.19.0-0 ✔ prerequisites checks passed # Docker images docker pull fluxcd/fluxctl:1.24.3 docker pull ghcr.io/fluxcd/flux-cli:1.24.3 # does not work
Cluster bootstrap
FluxCDv2 bootstrap process is installing the Flux onto a cluster and stores(commits) its own manifests to a Git repository.
- Generic Git Server, including GCP Cloud Source Repositories
- Bootstrap with Terraform
FLUX_GIT_USERNAME=my-git-username FLUX_GIT_EMAIL=my-git-email@example.com flux bootstrap git \ --author-email=$FLUX_GIT_EMAIL \ --url=ssh://git@github.com/$FLUX_GIT_USERNAME/gitops-istio \ --branch=main \ --path=clusters/my-cluster
At bootstrap, Flux generates an SSH key and prints the public key. In order to sync your cluster state with git you need to copy the public key and create a deploy key with write access on your GitHub repository. On GitHub go to Settings > Deploy keys click on Add deploy key, check Allow write access, paste the Flux public key and click Add key.
- Dev installation does not stores its own configuration state in Git repository
# option 1 flux install # install and upgrade flux install \ --namespace=flux-system \ --network-policy=false \ --components=source-controller # option 2 kubectl apply -f https://github.com/fluxcd/flux2/releases/latest/download/install.yaml kustomize build https://github.com/fluxcd/flux2/manifests/install?ref=main | kubectl apply -f- # Upgrade # Register Git repositories and reconcile them on your cluster: flux create source git podinfo \ --url=https://github.com/stefanprodan/podinfo \ --tag-semver=">=4.0.0" \ --interval=1m flux create kustomization podinfo-default \ --source=podinfo \ --path="./kustomize" \ --prune=true \ --validation=client \ --interval=10m \ --health-check="Deployment/podinfo.default" \ --health-check-timeout=2m # Register Helm repositories and create Helm releases: flux create source helm bitnami \ --interval=1h \ --url=https://charts.bitnami.com/bitnami flux create helmrelease nginx \ --interval=1h \ --release-name=nginx-ingress-controller \ --target-namespace=kube-system \ --source=HelmRepository/bitnami \ --chart=nginx-ingress-controller \ --chart-version="5.x.x"
Uninstall
flux uninstall --namespace=flux-system
References
- terraform-provider-flux
- gitops-istio Tutorial
- Flux v2 Everything that you wanted to know but were afraid to ask (Stefan Prodan) December 2020
Bundle