Difference between revisions of "Kubernetes/Progressive Delivery Flux and Flagger"

From Ever changing code
Jump to navigation Jump to search
 
(One intermediate revision by the same user not shown)
Line 9: Line 9:
:[[File:ClipCapIt-210524-233028.PNG]]
:[[File:ClipCapIt-210524-233028.PNG]]


= Install Flux v2 [https://fluxcd.io/docs/cmd/ <code>flux</code>] command line =
= Install FluxCD Cli [https://fluxcd.io/flux/installation/#install-the-flux-cli <code>flux</code>] =
* [https://fluxcd.io/docs/get-started/ Fluxv2 Get Started]


{{Note|<code>fluxctl</code> was a cli client for version Flux v1.}}


{{Note|<code>fluxctl</code> is a previous version Flux v1 command line tool.}}
<source lang=bash>
<source lang=bash>
# Install or upgrade using official install.sh (option-1)
# 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
export FLUX_VERSION=2.7.5; curl -s https://fluxcd.io/install.sh | sudo -E bash
curl -s https://fluxcd.io/install.sh | sudo bash # latest
curl -s https://fluxcd.io/install.sh | sudo bash # latest


# Install from GitHub releases (option-2)
# Version check
REPO=fluxcd/flux2
flux version
LATEST=$(curl --silent "https://api.github.com/repos/$REPO/releases/latest" | jq -r .tag_name | tr -d v); echo $LATEST
flux: v2.7.5
VERSION=$LATEST
distribution: flux-v2.7.5
TEMPDIR=$(mktemp -d); FILE=flux_${VERSION}_linux_amd64
helm-controller: v1.4.5
curl -L https://github.com/$REPO/releases/download/v${VERSION}/$FILE.tar.gz -o $TEMPDIR/$FILE.tar.gz
kustomize-controller: v1.7.3
tar xzvf $TEMPDIR/$FILE.tar.gz -C $TEMPDIR
notification-controller: v1.7.5
sudo install $TEMPDIR/flux /usr/local/bin/flux
source-controller: v1.7.4
sudo install $TEMPDIR/flux /usr/local/bin/flux_${VERSION}
 


# enable completions in ~/.bash_profile
# enable completions in ~/.bash_profile
. <(flux completion bash)
. <(flux completion bash)
# TODO: Via release binaries
# https://github.com/fluxcd/flux/releases


# Pre check
# Pre check
flux check --pre
flux check --pre
► checking prerequisites
► checking prerequisites
flux 0.25.1 <0.25.2 (new version is available, please upgrade)
Kubernetes version v1.27.16 does not match >=1.32.0-0
✔ 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
</source>
</source>



Latest revision as of 11:53, 15 January 2026

Flux v2

Flux v2 Documentation

Flux v2 architecture

ClipCapIt-210524-232835.PNG

Flux v2 - Webhooks and notifications

ClipCapIt-210524-233028.PNG

Install FluxCD Cli flux

Note: fluxctl was a cli client for version Flux v1.

# Install or upgrade using official install.sh (option-1)
export FLUX_VERSION=2.7.5; curl -s https://fluxcd.io/install.sh | sudo -E bash
curl -s https://fluxcd.io/install.sh | sudo bash # latest

# Version check
flux version 
flux: v2.7.5
distribution: flux-v2.7.5
helm-controller: v1.4.5
kustomize-controller: v1.7.3
notification-controller: v1.7.5
source-controller: v1.7.4


# enable completions in ~/.bash_profile
. <(flux completion bash)

# Pre check
flux check --pre
► checking prerequisites
✗ Kubernetes version v1.27.16 does not match >=1.32.0-0

Cluster bootstrap

FluxCDv2 bootstrap process is installing the Flux onto a cluster and stores(commits) its own manifests to a Git repository.


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


Bundle