Ir ao conteúdo

Como acelerar a configuração do cluster de Kubernetes usando o FluxCD – Parte 2

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:

  1. global-config: os manifestos incluídos nessa pasta serão aplicados automaticamente durante a instalação do FluxCD.
  2. 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.

Publicado emKubernetes

Seja o primeiro a comentar

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *