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.