Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Este tutorial descreve como usar GitOps com Argo CD em clusters Kubernetes habilitados para Azure Arc ou clusters Azure Kubernetes Service (AKS). O GitOps com Argo CD está ativado como uma extensão de cluster que te permite usar o teu repositório Git como fonte de verdade para configuração de clusters e implementação de aplicações. O Argo CD também suporta outras fontes de ficheiros comuns, como repositórios Helm e Open Container Initiative (OCI).
Observação
A partir da versão 1.0.0-prévia, a extensão Argo CD utiliza o chart Helm da comunidade. Esta alteração é uma mudança de ruptura, pois as chaves de configuração mudaram. Se instalaste uma versão anterior (0.0.x) da extensão, desinstala a extensão e reinstala a versão mais recente com as chaves de configuração atualizadas.
Importante
GitOps com Argo CD está atualmente em pré-visualização. Consulte os Termos de Utilização Suplementares das Pré-visualizações do Microsoft Azure para obter os termos legais que se aplicam às funcionalidades do Azure que estão em versão beta, pré-visualização ou ainda não disponibilizadas para disponibilidade geral.
Pré-requisitos
Para implementar aplicações usando GitOps, precisa de um cluster Kubernetes compatível com Azure Arc ou de um cluster AKS.
Clusters do Kubernetes compatíveis com o Azure Arc
Um cluster Kubernetes conectado e habilitado para Azure Arc que está a funcionar e em execução.
Saiba como conectar um cluster Kubernetes ao Azure Arc. Se você precisar se conectar através de um proxy de saída, certifique-se de instalar os agentes Arc com configurações de proxy.
Permissões de
Microsoft.Kubernetes/connectedClustersleitura e gravação no tipo de recurso.
Clusters do Serviço Kubernetes do Azure
Um cluster AKS baseado em MSI que está em funcionamento.
Importante
O cluster AKS precisa ser criado com a Identidade de Serviço Gerenciado (MSI), e não com o Nome da Entidade de Serviço (SPN), para que essa extensão funcione. Para novos clusters AKS criados com
az aks create, o cluster é baseado em MSI por predefinição. Para converter clusters baseados em SPN em MSI, executeaz aks update -g $RESOURCE_GROUP -n $CLUSTER_NAME --enable-managed-identity. Para obter mais informações, consulte Usar uma identidade gerenciada no AKS.Permissões de
Microsoft.ContainerService/managedClustersleitura e gravação no tipo de recurso.
Comum a ambos os tipos de cluster
Permissões de leitura e gravação nestes tipos de recursos:
Microsoft.KubernetesConfiguration/extensions
CLI do Azure, versão 2.15 ou posterior. Instale a CLI do Azure ou use os seguintes comandos para atualizar para a versão mais recente:
az version az upgradeO cliente de linha de comando do Kubernetes, kubectl.
kubectljá está instalado se você usar o Azure Cloud Shell.Instale
kubectllocalmente usando oaz aks install-clicomando:az aks install-cliRegisto dos seguintes fornecedores de recursos do Azure:
az provider register --namespace Microsoft.Kubernetes az provider register --namespace Microsoft.ContainerService az provider register --namespace Microsoft.KubernetesConfigurationO registo é um processo assíncrono e deve terminar dentro de 10 minutos. Para monitorar o processo de registro, use o seguinte comando:
az provider show -n Microsoft.KubernetesConfiguration -o table Namespace RegistrationPolicy RegistrationState --------------------------------- -------------------- ------------------- Microsoft.KubernetesConfiguration RegistrationRequired Registered
Sugestão
Embora a fonte deste tutorial seja um repositório Git, o Argo CD suporta outras fontes comuns de ficheiros, como repositórios Helm e Open Container Initiative (OCI).
Suporte a versões e regiões
O GitOps é atualmente suportado em regiões públicas.
Requisitos de rede
Os agentes do GitOps necessitam de TCP de saída para a origem do repositório na porta 22 (SSH) ou na porta 443 (HTTPS) para funcionar. Os agentes também exigem acesso às seguintes URLs de saída:
| Ponto final (DNS) | Descrição |
|---|---|
https://management.azure.com |
É necessário que o agente comunique com o serviço de Configuração do Kubernetes. |
https://<region>.dp.kubernetesconfiguration.azure.com |
Ponto final do plano de dados para que o agente atualize o estado e obtenha as informações de configuração. Depende de <region> (as regiões suportadas mencionadas anteriormente). |
https://login.microsoftonline.com |
É necessário obter e atualizar os tokens do Azure Resource Manager. |
https://mcr.microsoft.com |
Necessário para extrair imagens de contêiner para controladores. |
Habilitar extensões de CLI
Instale os pacotes de extensão CLI mais recentes k8s-configuration e k8s-extension:
az extension add -n k8s-configuration
az extension add -n k8s-extension
Para atualizar estes pacotes para as versões mais recentes:
az extension update -n k8s-configuration
az extension update -n k8s-extension
Para ver uma lista de todas as extensões da CLI do Azure instaladas e suas versões, use o seguinte comando:
az extension list -o table
Experimental ExtensionType Name Path Preview Version
------------- -------------- ----------------- ----------------------------------------------------- -------- --------
False whl connectedk8s C:\Users\somename\.azure\cliextensions\connectedk8s False 1.10.7
False whl k8s-configuration C:\Users\somename\.azure\cliextensions\k8s-configuration False 2.2.0
False whl k8s-extension C:\Users\somename\.azure\cliextensions\k8s-extension False 1.6.4
Criar extensão GitOps (Argo CD) (instalação simples)
A instalação do Argo CD no GitOps suporta multi-utilizador em modo de alta disponibilidade (HA) e identidade de trabalho.
Importante
O modo HA é a configuração padrão e requer quatro nós no cluster para poder instalar. O comando abaixo adiciona --config "redis-ha.enabled=false" para que a extensão seja instalada em um único nó.
Este comando cria a configuração mais simples instalando os componentes do CD Argo num novo argocd espaço de nomes com acesso a todo o cluster. O acesso a nível de cluster permite que definições de aplicações Argo CD sejam detetadas em qualquer namespace listado na configuração do mapa-configuração do Argo CD no cluster. Por exemplo: namespace1,namespace2
az k8s-extension create --resource-group <resource-group> \
--cluster-name <cluster-name> \
--cluster-type managedClusters \
--name argocd \
--extension-type Microsoft.ArgoCD \
--config "redis-ha.enabled=false" \
--config "configs.params.application\.namespaces=namespace1,namespace2"
pt-PT: Este comando de instalação cria um novo <namespace> namespace e instala os componentes do Argo CD no <namespace>. As definições de aplicações Argo CD nesta configuração funcionam apenas no <namespace> namespace.
Observação
Para opções adicionais de configuração, como limites de recursos, consulte values.yaml. Use estas configurações no seu comando CLI do Azure ao configurar a extensão.
Criar extensão GitOps (Argo CD) com identidade de carga de trabalho
Um método de instalação alternativo recomendado para uso em produção é a identidade de carga de trabalho. Este método utiliza identidades do Microsoft Entra ID para autenticar nos recursos do Azure, por isso não precisa de gerir segredos ou credenciais no seu repositório Git. Esta instalação utiliza autenticação de identidade de carga de trabalho ativada na versão OSS 3.0.0-rc2 ou posterior do Argo CD.
Importante
O modo HA é a configuração padrão e requer quatro nós no cluster para poder instalar. Uso 'redis-ha.enabled': false para instalar a extensão num único nó.
Para criar a extensão com identidade de carga de trabalho, primeiro substitua as seguintes variáveis por seus próprios valores neste modelo Bicep:
var clusterName = '<aks-or-arc-cluster-name>'
var workloadIdentityClientId = 'replace-me##-##-###-###'
var ssoApplicationClientId = 'replace-me##-##-###-###'
var url = 'https://<public-ip-for-argocd-ui>/'
var oidcConfig = '''
name: Azure
issuer: https://login.microsoftonline.com/<your-tenant-id>/v2.0
clientID: <same-value-as-ssoApplicationClientId>
azure:
useWorkloadIdentity: true
requestedIDTokenClaims:
groups:
essential: true
requestedScopes:
- openid
- profile
- email
'''
var defaultPolicy = 'role:readonly'
var policy = '''
p, role:org-admin, applications, *, */*, allow
p, role:org-admin, clusters, get, *, allow
p, role:org-admin, repositories, get, *, allow
p, role:org-admin, repositories, create, *, allow
p, role:org-admin, repositories, update, *, allow
p, role:org-admin, repositories, delete, *, allow
g, replace-me##-argocd-ui-entra-group-admin-id, role:org-admin
'''
resource cluster 'Microsoft.ContainerService/managedClusters@2024-10-01' existing = {
name: clusterName
}
resource extension 'Microsoft.KubernetesConfiguration/extensions@2023-05-01' = {
name: 'argocd'
scope: cluster
properties: {
extensionType: 'Microsoft.ArgoCD'
configurationSettings: {
'redis-ha.enabled': 'true'
'azure.workloadIdentity.enabled': 'true'
'azure.workloadIdentity.clientId': workloadIdentityClientId
'azure.workloadIdentity.entraSSOClientId': ssoApplicationClientId
'configs.cm.oidc\\.config': oidcConfig
'configs.cm.url': url
'configs.rbac.policy\\.default': defaultPolicy
'configs.rbac.policy\\.csv': policy
'configs.params.application\\.namespaces': 'default, argocd'
}
}
}
Crie o modelo Bicep usando o seguinte comando:
az deployment group create --resource-group <resource-group> --template-file <bicep-file>
Observação
Para opções adicionais de configuração, como limites de recursos, consulte values.yaml. Use estas configurações no modelo Bicep ao configurar a extensão.
Parâmetros
clusterName é o nome do cluster Kubernetes com suporte para AKS ou Arc.
workloadIdentityClientId é o ID do cliente da identidade gerida atribuída pelo utilizador, usada pelos componentes do Argo CD para a identidade da carga de trabalho.
ssoApplicationClientId é o ID da aplicação (cliente) do registo da aplicação Microsoft Entra usado para a autenticação SSO OIDC na interface do CD Argo. Para obter mais informações sobre a instalação e configuração gerais de ssoApplicationClientId, consulte Autenticação de Registo de Aplicações do Microsoft Entra ID com OIDC.
url é a IP pública da interface do Argo CD. Não há IP público ou nome de domínio, a menos que o cluster já tenha um controlador de entrada fornecido pelo cliente. Se sim, precisas de adicionar a regra de entrada à interface do Argo CD após a implementação. A funcionalidade de ingresso requer o suplemento de encaminhamento de aplicações e só é suportada em clusters do AKS.
oidcConfig - substitua <your-tenant-id> pelo ID de locatário do seu ID do Microsoft Entra. Substitua <same-value-as-ssoApplicationClientId-above> pelo mesmo valor que ssoApplicationClientId.
policy variável são as argocd-rbac-cm configmap definições do Argo CD.
g, replace-me##-argocd-ui-entra-group-admin-id é o ID de grupo Microsoft Entra que dá acesso de administrador à interface do Argo CD. Pode encontrar o ID do grupo Microsoft Entra no portal do Azure em Microsoft Entra ID > Grupos >o nome do seu grupo> Propriedades. Você pode usar o ID de usuário do Microsoft Entra em vez de um ID de grupo do Microsoft Entra. Pode encontrar o ID de utilizador do Microsoft Entra no portal do Azure em Microsoft Entra ID > Utilizadores >o seu nome de utilizador> Propriedades.
Criar credenciais de identidade para cargas de trabalho
Para configurar novas credenciais de identidade de carga de trabalho, siga estas etapas:
Recupere a URL do emissor OIDC para seu cluster AKS ou cluster Kubernetes habilitado para Arc.
Crie uma identidade gerenciada e anote sua ID de cliente e ID de locatário.
Estabeleça uma credencial de identidade federada para seu cluster AKS ou cluster Kubernetes habilitado para Arc. Por exemplo:
# For source-controller az identity federated-credential create \ --name ${FEDERATED_IDENTITY_CREDENTIAL_NAME} \ --identity-name "${USER_ASSIGNED_IDENTITY_NAME}" \ --resource-group "${RESOURCE_GROUP}" \ --issuer "${OIDC_ISSUER}" \ --subjectCertifique-se de fornecer permissões adequadas para a identidade de trabalho do recurso que deseja que o argocd, o controlador image-reflector ou o argocd-repo-server obtenha. Por exemplo, se estiver a usar o Azure Container Registry, certifique-se de que está aplicado um dos seguintes:
Container Registry Repository Reader(para registos com ABAC ativado) ouAcrPull(para registos sem ABAC).
Conectar-se a registros ACR privados ou repositórios ACR usando a identidade da carga de trabalho
Para utilizar o registo privado do ACR ou os repositórios do ACR, siga as instruções na documentação oficial do CD da Argo para se ligar a registos privados do ACR. As etapas Rotular os pods, Criar credencial de identidade federada e Adicionar anotação à conta de serviço nesse guia foram concluídas pela extensão com a implantação do Bicep e podem ser ignoradas.
Migrar do Argo CD OSS para a extensão gerida do Argo CD
Utilize estes passos para migrar de uma instalação Argo CD autogerida para a extensão Argo CD gerida pelo Azure.
Caminho de migração
Use a seguinte sequência para evitar conflitos de controladores e reduzir o risco de migração.
Revise a configuração e o inventário atuais do seu CD Argo:
- Aplicações
- ApplicationSets
- AppProjects
- Credenciais e modelos de repositório (repocreds)
- Segredos do cluster
Dimensione os controladores Argo CD autogeridos para zero réplicas para evitar o comportamento de controlador duplo.
Instale a extensão Argo CD no cluster usando definições que correspondam à sua implementação atual.
A funcionalidade Aplicações em qualquer namespace permite ao Argo CD gerir recursos localizados fora do seu namespace central. Se o teu cluster já usa esta definição, não precisas de mover os teus recursos para um novo namespace. Só precisas de configurar a nova extensão para vigiar os namespaces da tua aplicação existente.
Caso A: Se já utiliza a funcionalidade Aplicações em qualquer espaço de nomes:
- Deixe todos os recursos Application, ApplicationSet e AppProject nos seus namespaces atuais.
- Configure a nova extensão gerida para monitorizar esses namespaces externos através das definições da extensão.
Caso B: Se mover os recursos para o novo espaço de nomes da extensão:
- Migre Applications, ApplicationsSets e AppProjects para o namespace da extensão, se necessário.
Migrar credenciais de repositório, segredos de cluster e repocreds para o espaço de nomes da extensão.
Valida que as aplicações sincronizam e atingem o estado saudável esperado.
Remova a antiga implementação autogerida do Argo CD após a conclusão da validação.
A extensão gerida utiliza as mesmas APIs Argo CD e definições personalizadas de recursos (CRDs), por isso pode reutilizar a maioria dos manifestos existentes com alterações mínimas.
Limitações atuais
- Atualizações diretas para os Argo CD ConfigMaps não são suportadas.
- Use a API de configuração e as definições da extensão para aplicar alterações de configuração do Argo CD.
Configurar monitorização com Azure Managed Prometheus e Azure Managed Grafana
Pode publicar métricas do Argo CD no Azure Managed Prometheus e visualizá-las no Azure Managed Grafana.
Ative o Azure Managed Prometheus para o seu cluster. Consulte Ativar a monitorização para clusters do Azure Kubernetes Service (AKS).
Atualize a configuração da sua extensão para ativar métricas e ServiceMonitors.
var clusterName = '<aks-or-arc-cluster-name>' resource cluster 'Microsoft.ContainerService/managedClusters@2024-10-01' existing = { name: clusterName } resource extension 'Microsoft.KubernetesConfiguration/extensions@2023-05-01' = { name: 'argocd' scope: cluster properties: { extensionType: 'Microsoft.ArgoCD' configurationSettings: { // Keep your existing settings and add these metrics flags. 'controller.metrics.enabled': 'true' 'controller.metrics.serviceMonitor.enabled': 'true' 'server.metrics.enabled': 'true' 'server.metrics.serviceMonitor.enabled': 'true' 'repoServer.metrics.enabled': 'true' 'repoServer.metrics.serviceMonitor.enabled': 'true' 'applicationSet.metrics.enabled': 'true' 'applicationSet.metrics.serviceMonitor.enabled': 'true' 'apiVersionOverrides.monitoring': 'azmonitoring.coreos.com/v1' } } }Importa o dashboard Grafana 14584 para a tua instância Azure Managed Grafana.
Se os painéis mostrarem Sem dados, atualize as consultas do painel para ter em conta a nomenclatura de trabalhos do Azure Managed Prometheus.
Nos painéis de telemetria do controlador (Utilização da Memória, Utilização do CPU, goroutines), alterar:
- De
job="argocd-metrics" - A
job=~"argocd.*-metrics"
- De
Nos painéis do repo-server (Memória utilizada, goroutines), alterar:
- De
job="argocd-repo-server" - Para
job="argocd-repo-server-metrics"
- De
Guarda o dashboard e verifica a ingestão de métricas.
Ativar o Argo CD no portal do Azure
Pode ativar o Argo CD no portal do Azure para ver o estado da candidatura e o estado da sincronização, e para aceder à interface do Argo CD. Para ativar o CD Argo no portal Azure, siga estes passos:
Vai ao teu cluster no portal do Azure.
No menu de serviço, em Configurações, selecione GitOps.
Selecione Ativar Argo CD (Pré-visualização).
Na seção Noções básicas :
- Define o namespace onde o CD do Argo corre. Por defeito, o namespace é
argocd. - Se desejar, ative o Redis High Availability (HA). Esta opção requer pelo menos 4 nós no cluster.
- Opcionalmente, adicione quaisquer namespaces adicionais a serem observados.
- Para clusters AKS apenas, opcionalmente ative o single sign on (SSO) para que os utilizadores possam iniciar sessão usando o Microsoft Entra ID, especificando uma Aplicação e um ou mais Grupos para permitir o acesso à interface do Argo CD.
- Se desejar, ative a identidade da carga de trabalho para permitir que o CD do Argo aceda aos serviços do Azure de forma segura sem armazenar segredos. Para o fazer, selecione a caixa Enable Workload Identity e especifique uma identidade gerida e um Azure Container Registry de onde extrair manifestos de aplicação ou artefactos de contentores.
- Define o namespace onde o CD do Argo corre. Por defeito, o namespace é
Selecione Seguinte para continuar.
Para clusters AKS que ativaram o complemento de encaminhamento de aplicações, o separador Ingress permite-lhe criar um recurso Ingress para encaminhar tráfego para um serviço. Se desejar, selecione Ativar Entrada e insira o seu nome de entrada, detalhes do certificado e nome de domínio. Selecione Seguinte para continuar.
Na secção Rever + Implementar , revise as suas definições e depois selecione Implementar para ativar o Argo CD no seu cluster.
Aceda à interface do Argo CD
Se não existir controlador de entrada existente para o cluster AKS, então a interface do CD do Argo pode ser exposta diretamente usando um serviço LoadBalaner. O comando seguinte expõe a interface do CD Argo nas portas 80 e 443.
kubectl -n argocd expose service argocd-server --type LoadBalancer --name argocd-server-lb --port 80 --target-port 8080
Para aceder à interface do Argo CD a partir do portal do Azure, aceda ao seu cluster. No menu de serviço, em Configurações, selecione GitOps. Depois, selecione o link mostrado para a interface do Argo CD.
Implementar a aplicação Argo CD
Depois de instalar a extensão Argo CD, pode implementar uma aplicação usando a interface ou CLI do Argo CD. O exemplo seguinte utiliza kubectl apply para implementar o AKS Store numa aplicação Argo CD no projeto predefinido do Argo CD no espaço de nomes argocd.
kubectl apply -f - <<EOF
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: aks-store-demo
namespace: argocd
spec:
project: default
source:
repoURL: https://github.com/Azure-Samples/aks-store-demo.git
targetRevision: HEAD
path: kustomize/overlays/dev
syncPolicy:
automated: {}
destination:
namespace: argocd
server: https://kubernetes.default.svc
EOF
A aplicação de demonstração da loja AKS está instalada no argocd namespace. Para consultar a página da candidatura, siga estas instruções. Certifique-se de visitar o endereço IP usando http e não https.
Atualizar configuração da extensão
Os mapas de configuração do Argo CD podem ser atualizados após a instalação e outras configurações de extensão usando o seguinte comando:
az k8s-extension update --resource-group <resource-group> \
--cluster-name <cluster-name> \
--cluster-type <cluster-type> \
--name argocd \
--config "configs.cm.url='https://<public-ip-for-argocd-ui>/auth/callback'"
Atualiza o configmap do Argo CD através da extensão, para que as definições não sejam sobrescritas. Aplicar o modelo Bicep é um método alternativo ao CLI do Azure para atualizar a configuração.
Excluir a extensão
Use os seguintes comandos para excluir a extensão.
az k8s-extension delete -g <resource-group> -c <cluster-name> -n argocd -t managedClusters --yes
Próximos passos
- Problemas de ficheiros e pedidos de funcionalidades no repositório Azure/AKS. Certifique-se de incluir a palavra ArgoCD na descrição ou título.
- Explore o exemplo de código de engenharia da AKS-Platform, que implementa o OSS Argo CD com Backstage e fornecedor da API do Cluster para Azure (CAPZ) ou Crossplane.