Share via


Implantar gráficos de leme usando GitOps em um cluster Kubernetes habilitado para Azure Arc

Importante

Este artigo é para GitOps com Flux v1. O GitOps com Flux v2 agora está disponível para clusters Kubernetes habilitados para Azure Arc e Serviço Kubernetes do Azure (AKS); vá para o tutorial para GitOps com Flux v2. Recomendamos migrar para o Flux v2 o mais rápido possível.

O suporte para recursos de configuração de cluster baseados no Flux v1 criados antes de 1º de janeiro de 2024 terminará em 24 de maio de 2025. A partir de 1º de janeiro de 2024, você não poderá criar novos recursos de configuração de cluster baseados no Flux v1. O Helm é uma ferramenta open source de empacotamento que o ajuda a instalar e a gerir o ciclo de vida de aplicações do Kubernetes. Semelhante aos gerenciadores de pacotes Linux como APT e Yum, o Helm é usado para gerenciar gráficos do Kubernetes, que são pacotes de recursos do Kubernetes pré-configurados.

Este artigo mostra como configurar e usar o Helm com o Kubernetes habilitado para Azure Arc.

Pré-requisitos

  • Uma conta do Azure com uma subscrição ativa. Crie uma conta gratuitamente.

  • Um cluster conectado ao Kubernetes habilitado para Azure Arc existente.

    • Se você ainda não conectou um cluster, percorra nosso início rápido Conectar um cluster Kubernetes habilitado para Azure Arc.
  • Uma compreensão dos benefícios e da arquitetura desse recurso. Leia mais no artigo Configurações e GitOps - Kubernetes habilitado para Azure Arc.

  • Instale a k8s-configuration extensão da CLI do Azure da versão >= 1.0.0:

    az extension add --name k8s-configuration
    

Visão geral do uso do GitOps e do Helm com o Kubernetes habilitado para Azure Arc

O operador Helm fornece uma extensão para o Flux que automatiza as versões do Helm Chart. Uma versão do Helm Chart é descrita por meio de um recurso personalizado do Kubernetes chamado HelmRelease. O Flux sincroniza esses recursos do Git para o cluster, enquanto o operador Helm garante que os gráficos de leme sejam liberados conforme especificado nos recursos.

O repositório de exemplo usado neste artigo está estruturado da seguinte maneira:

├── charts
│   └── azure-arc-sample
│       ├── Chart.yaml
│       ├── templates
│       │   ├── NOTES.txt
│       │   ├── deployment.yaml
│       │   └── service.yaml
│       └── values.yaml
└── releases
    └── app.yaml

No repositório Git temos dois diretórios: um contendo um Helm Chart e outro contendo a configuração de releases. releases No diretório, o app.yaml contém a configuração HelmRelease, mostrada abaixo:

apiVersion: helm.fluxcd.io/v1
kind: HelmRelease
metadata:
  name: azure-arc-sample
  namespace: arc-k8s-demo
spec:
  releaseName: arc-k8s-demo
  chart:
    git: https://github.com/Azure/arc-helm-demo
    ref: master
    path: charts/azure-arc-sample
  values:
    serviceName: arc-k8s-demo

A configuração da versão Helm contém os seguintes campos:

Campo Descrição
metadata.name Campo obrigatório. Precisa seguir as convenções de nomenclatura do Kubernetes.
metadata.namespace Campo opcional. Determina onde a versão é criada.
spec.releaseName Campo opcional. Se não for fornecido, o nome da versão será $namespace-$name.
spec.chart.path O diretório que contém o gráfico (relativo à raiz do repositório).
spec.values Personalizações do usuário de valores de parâmetros padrão do próprio gráfico.

As opções especificadas no HelmRelease spec.values substituirão as opções especificadas na values.yaml fonte do gráfico.

Você pode saber mais sobre o HelmRelease na documentação oficial do Operador de Leme.

Criar uma configuração

Usando a extensão da CLI do Azure para k8s-configuration, vincule seu cluster conectado ao repositório Git de exemplo. Dê a essa configuração o nome azure-arc-sample e implante o operador Flux no arc-k8s-demo namespace.

az k8s-configuration create --name azure-arc-sample --cluster-name AzureArcTest1 --resource-group AzureArcTest --operator-instance-name flux --operator-namespace arc-k8s-demo --operator-params='--git-readonly --git-path=releases' --enable-helm-operator --helm-operator-chart-version='1.2.0' --helm-operator-params='--set helm.versions=v3' --repository-url https://github.com/Azure/arc-helm-demo.git --scope namespace --cluster-type connectedClusters

Parâmetros de configuração

Para personalizar a criação da configuração, saiba mais sobre parâmetros adicionais.

Validar a configuração

Usando a CLI do Azure, verifique se a configuração foi criada com êxito.

az k8s-configuration show --name azure-arc-sample --cluster-name AzureArcTest1 --resource-group AzureArcTest --cluster-type connectedClusters

O recurso de configuração é atualizado com status de conformidade, mensagens e informações de depuração.

{
  "complianceStatus": {
    "complianceState": "Installed",
    "lastConfigApplied": "2019-12-05T05:34:41.481000",
    "message": "{\"OperatorMessage\":null,\"ClusterState\":null}",
    "messageLevel": "3"
  },
  "enableHelmOperator": "True",
  "helmOperatorProperties": {
    "chartValues": "--set helm.versions=v3",
    "chartVersion": "1.2.0"
  },
  "id": "/subscriptions/57ac26cf-a9f0-4908-b300-9a4e9a0fb205/resourceGroups/AzureArcTest/providers/Microsoft.Kubernetes/connectedClusters/AzureArcTest1/providers/Microsoft.KubernetesConfiguration/sourceControlConfigurations/azure-arc-sample",
  "name": "azure-arc-sample",
  "operatorInstanceName": "flux",
  "operatorNamespace": "arc-k8s-demo",
  "operatorParams": "--git-readonly --git-path=releases",
  "operatorScope": "namespace",
  "operatorType": "Flux",
  "provisioningState": "Succeeded",
  "repositoryPublicKey": "",
  "repositoryUrl": "https://github.com/Azure/arc-helm-demo.git",
  "resourceGroup": "AzureArcTest",
  "type": "Microsoft.KubernetesConfiguration/sourceControlConfigurations"
}

Validar candidatura

Execute o seguinte comando e navegue até o localhost:8080 navegador para verificar se o aplicativo está em execução.

kubectl port-forward -n arc-k8s-demo svc/arc-k8s-demo 8080:8080

Próximos passos

Aplique configurações de cluster em escala usando a Política do Azure.