Olá pessoal, tudo certo?
Esta é uma postagem de duas partes, portanto, se você perdeu a parte 1, eu recomendo vivamente que leia: This is a two-part post, so if you missed part 1, I truly recommend you to read it: Como acelerar a configuração do cluster do Kubernetes usando o FluxCD – Parte 2.
Na última postagem, vimos como usar o FluxCD para instalar componentes globais em nosso cluster do Kubernetes e agora é hora de dar o próximo passo e demonstrar como podemos habilitar recursos específicos por cluster.
Revisando a estrutura do repositório
Antes de começar, vamos rever a estrutura de pastas que estamos usando no repositório de GitOps para atingir nosso requisito: Ter a capacidade de instalar componentes padrões para todos os clusters, enquanto outros são instalados apenas quando necessário.
Com isso em mente, nós adotamos um padrão de componentes globais e específicos, e criamos duas pastas:
- global-config: os manifestos incluídos nessa pasta serão aplicados automaticamente durante a instalação do FluxCD.
- extra-capabilities: os manifestos desta pasta só serão aplicados se forem explicitamente declarados.
O repositório utilizado para esse laboratório está disponível em: https://github.com/diego7marques/k8s-base-config
Criando os manifestos
Para esse exemplo, nós estamos considerando o Crossplane como um componente que só será instalado se necessário. Para isso, vamos criar uma nova pasta chamada crossplane-operator dentro da pasta extra-capabilities, e incluir os arquivos a seguir:
#### helmrepository.yml
apiVersion: source.toolkit.fluxcd.io/v1beta2
kind: HelmRepository
metadata:
## Nome do repositório Helm.
## Mesmo valor utilizado no comando "helm repo add [NAME]".
name: crossplane-stable
namespace: flux-system
spec:
## Intervalo em que o Flux irá procurar por novas versões.
interval: 5m0s
## O campo URL deve ser preenchido com o repositório Helm.
## É o mesmo valor utilizado no comando "helm repo add [NAME] [URL]".
url: https://charts.crossplane.io/stable
#### helmrelease.yml
apiVersion: helm.toolkit.fluxcd.io/v2beta2
kind: HelmRelease
metadata:
## Nome da instalação Helm
## Mesmo valor utilizado no comando "helm install [NAME]".
name: crossplane
namespace: flux-system
spec:
## Intervalo que você deseja verificar e aplicar novas versões, caso estejam disponíveis.
interval: 5m0s
chart:
spec:
## O campo chart deve ser preenchido com o nome do helmchart.
## Mesmo valor utilizado no comando "helm install [NAME] [CHART]".
chart: crossplane-stable/crossplane
## O campo version deve ser preenchido com a versão do chart.
## Mesmo valor utilizado no parâmetro "--version".
version: '1.*'
## SourceRef deve ser preenchido com o mesmo nome utilizado no arquivo helmrepository.yml.
sourceRef:
kind: HelmRepository
name: crossplane-stable
install:
createNamespace: true
targetNamespace: crossplane-system
### kustomization.yml
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- helmrepository.yml
- helmrelease.yml
Instalando o componente
Agora que temos os manifestos criados, vamos executar o seguindo comando para iniciar a instalação:
## Use o reconcile para forçar o flux a baixar a última versão dos manifestos do repositório
flux reconcile source git flux-system -n flux-system
## Irá iniciar a instalação do crossplane no cluster desejado (utilizando o contexto atual do kubectl config)
flux create kustomization crossplane \
--source=GitRepository/flux-system \
--path="./extra-capabitilies/crossplane-operator" \
--prune=true \
--interval=60m \
--wait=true \
--health-check-timeout=3m
Quando o comando finalizar, significa que o componente já foi instalado 😃 Se você quiser instalar outro componente, basta alterar o valor da variável –path.
Uma pequena demonstração:
Conclusão
Mais uma vez, o fluxo mostra seu potencial de facilitar nosso dia a dia. Se você combinar o conhecimento adquirido em ambas as postagens (parte 1 e 2), já poderá gerenciar seus clusters de Kubernetes, de forma padronizada e escalável. Isso o ajudará não apenas durante o processo de configuração, mas também nas tarefas diárias de manutenção e evolução dos componentes.
Descubra mais sobre contains(cloud)
Assine para receber nossas notícias mais recentes por e-mail.
Seja o primeiro a comentar