Em outro tutorial, eu falei sobre a abordagem GitOps e uso do ArgoCD… Recomendo a leitura para entender alguns conceitos antes de partir para o uso da ferramenta que será explicado aqui.
Neste tutorial você aprenderá a instalar o Flux, que é conjunto de soluções de entrega contínua e progressiva para Kubernetes. Fonte: https://fluxcd.io.
O Flux pode se conectar a repositórios git públicos e privados, é gratuito, tem o código fonte aberto, é um projeto incubado pela CNCF. Até hoje (Março/2022), o Flux não possui uma interface web, mas pode ser configurado via linha de comando.
Requisitos
Para a execução deste tutorial, partirei da premissa que você está usando alguma distribuição GNU/Linux e já tem instaladas as seguintes ferramentas:
Além disso, você precisa ter acesso a 1 ou 2 clusters Kubernetes (sejam eles no ambiente on-premisse, cloud (EKS, GKE ou AKS ou ainda, usando minikube, kind, k0s, microk8s ou k3s).
Instalando o Flux
Estando conectado em um cluster Kubernetes, execute os seguintes comandos para instalar o Flux no GNU/Linux:
curl -s https://fluxcd.io/install.sh | sudo bash
flux --version
. <(flux completion bash)
Visualize as opções da linha de comando do flux:
flux --help
flux subcommand --help
Neste tutorial, eu estou integrando o uso do Flux ao GitHub e para isso foi necessário criar um Personal Access Token (PAT), seguindo as instruções deste tutorial: https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token
Se você utiliza o repositório Git em outros serviços, tais como: Gitlab, Bitbucket, AWS Code Commit, sugiro ler as instruções de configuração disponíveis em: https://fluxcd.io/docs/installation/#bootstrap
Exporte o seu PAT com o seguinte comando:
PS.: Lembre-se de alterar os valores nas seguintes variáveis de acordo com o seu ambiente.
export GITHUB_TOKEN=<your-token>
export GITHUB_USER=<your-username>
export GITHUB_REPO=<repository-url>
O repositório https://github.com/fluxcd/flux2-kustomize-helm-example possui vários exemplos de aplicações que podem ser implantados usando o Flux. Eu fiz um clone desse repositório em: https://github.com/aeciopires/flux2-kustomize-helm-example
Execute o seguinte comando para instalar o Flux no cluster Kubernetes e configurar a integração com um repositório no GitHub:
flux bootstrap github \
--owner=${GITHUB_USER} \
--repository=${GITHUB_REPO} \
--path=clusters/production \
--personal
Esse comando além de instalar os componentes de software do Flux no namespace flux-system, instalará também algumas aplicações que estão sendo definidas nos seguintes arquivos e diretórios:
- https://github.com/aeciopires/flux2-kustomize-helm-example/blob/main/clusters/production/infrastructure.yaml
- https://github.com/aeciopires/flux2-kustomize-helm-example/blob/main/clusters/production/apps.yaml
- https://github.com/aeciopires/flux2-kustomize-helm-example/tree/main/apps/production
- https://github.com/aeciopires/flux2-kustomize-helm-example/tree/main/infrastructure
O arquivo README.md explica em detalhes o conteúdo de cada arquivo e diretório.
O resultado dessa instalação pode ser visto com os seguintes comandos (destaque para os namespaces: flux-system, nginx, podinfo e redis):
flux get helmreleases --all-namespaces
helm list -A
kubectl get all -A
Verifique se o aplicativo de demonstração pode ser acessado por meio do ingress:
kubectl -n nginx port-forward svc/nginx-ingress-controller 8080:80 &
curl -H "Host: podinfo.production" http://localhost:8080
A página https://fluxcd.io/docs/guides/repository-structure/ apresenta sugestões e instruções de como pode ser organizado o conteúdo do repositório git para armazenar as configurações do cluster, ambiente e apps.
Removendo o Flux do cluster Kubernetes
Você pode desinstalar o Flux com o seguinte comando:
flux uninstall --namespace=flux-system
Para remover as aplicações instaladas pelo Flux, utilize o comando:
kubectl delete namespace nginx podinfo redis
Para saber mais informações sobre o uso do Flux, acesse os links que estão na seção Referências deste tutorial.
Deixe um comentário