Todos os produtos
Search
Central de documentação

Container Service for Kubernetes:GitOps FAQ

Última atualização: Jun 27, 2026

Este tópico responde às perguntas frequentes (FAQs) sobre o uso do GitOps.

Conexão com um repositório git privado

Por questões de segurança, repositórios git privados geralmente não são acessíveis pela internet pública. Para conectar o ACK One GitOps a um repositório git privado, estabeleça a conectividade de rede e configure o ambiente adequadamente.

Etapa 1: Configure a resolução de nomes de domínio

Os passos a seguir usam git.abc.cn como exemplo de nome de domínio para o repositório git.

  1. Conecte sua rede local à VPC do ACK One. Para mais informações, consulte Conectar um IDC local a uma VPC.

  2. Use o PrivateZone para resolver nomes de domínio dentro da VPC.

    1. Faça login no console DNS da Alibaba Cloud. Na página Private Zone, clique em na aba User Defined Zones e, em seguida, clique em Add Zone. Na caixa de diálogo, configure os parâmetros abaixo e clique em OK.

      • Authoritative Zone: abc.cn (exemplo baseado no domínio do repositório git git.abc.cn)

      • Recursive Resolution Proxy for Subdomain Names: Ative

      • Effective Scope > Alibaba Cloud VPC: Selecione a VPC vinculada ao ACK One.

    2. Na lista de nomes de domínio, localize o PrivateZone recém-criado. Na coluna Actions, clique em Settings para abrir a página Settings.

    3. Na página Settings, clique em Add Record. Configure os seguintes parâmetros na caixa de diálogo e clique em OK.

      • Record Type: A

      • Hostname: git (exemplo: git.abc.cn)

      • Record Value: Insira o endereço IP do repositório git interno.

Etapa 2: Conectar-se ao repositório git

Após configurar a resolução de nomes de domínio, o ACK One GitOps poderá acessar o repositório git privado. Em seguida, conecte-se ao repositório git pelo console do GitOps ou pela interface de linha de comando (cli) para implantar aplicações. Para mais detalhes, consulte Repositórios Privados.

Agrupamento de aplicações no console

Agrupar aplicações melhora a usabilidade quando há um grande volume delas. No painel de navegação à esquerda do console GitOps, você pode:

  • Filtrar por Favorites Only, SYNC STATUS ou HEALTH STATUS.

  • Agrupar por LABELS, PROJECTS, CLUSTERS, NAMESPACES ou AUTO SYNC.

Controle das implantações de aplicações

É comum precisar controlar as implantações de aplicações, especialmente em pipelines automatizados de CI/CD. Use os métodos abaixo:

  • Use aplicações no modo ManualSync. Após o push do código, um engenheiro de O&M revisa e verifique a aplicação. Se os requisitos forem atendidos, clique em manualmente em Sync para sincronizar a aplicação com o cluster de destino.

  • Atualize manualmente a versão da imagem no repositório de implantação. Caso não haja monitoramento automático de alterações no repositório de imagens, um engenheiro de O&M deve validar as novas imagens. Após a validação, atualize manualmente a versão da imagem no repositório de implantação da aplicação para acionar uma sincronização no Argo CD.

  • Estabeleça um mecanismo de revisão de código para o repositório de código de negócios em seu pipeline automatizado de CI/CD. Depois que um engenheiro de O&M aprovar a revisão e fizer o merge do código, o pipeline de CI constrói e envia a imagem automaticamente. O Argo CD detecta a mudança na imagem e a implanta nos ambientes configurados com AutoSync. Também é possível implantar manualmente em ambientes configurados para ManualSync.

O que fazer se o repo-server do Argo CD reportar um erro Out of diskspace?

Sintoma

Ao verificar os logs executando o comando kubectl -nargocd logs xxxx, o repo-server retorna a seguinte mensagem de erro:

'git checkout --force xxx' failed exit status 128: error: unable to write file templates/deployment.yaml\nfat al: sha1 file '/tmp/_argocd-repo/xxx/.git/index.lock' write error. Out of diskspace...

Solução

Esse problema ocorre porque a falta de espaço em disco causa falha na gravação do arquivo .git/index.lock. Para resolver, aumente o armazenamento temporário dos Pods do componente Argo CD do ACK One GitOps. Esses componentes são executados no Elastic Container Instance (ECI) e possuem 30 GiB de armazenamento temporário padrão. Siga os passos abaixo para aumentar o armazenamento. Para informações sobre faturamento, consulte Faturamento de espaço de armazenamento temporário.

  1. Obtenha o KubeConfig da instância fleet no console do ACK One e conecte-se à instância fleet usando kubectl. Para mais informações, consulte Obter o KubeConfig de um cluster e usar kubectl para conectar-se ao cluster.

  2. No modelo de Pod do Deployment correspondente, adicione a anotação k8s.aliyun.com/eci-extra-ephemeral-storage: "20Gi" ao Pod. É possível personalizar a quantidade de armazenamento temporário.

    • Se o GitOps estiver no modo padrão, adicione a anotação ao Deployment argocd-server.

      kubectl edit deployment -nargocd argocd-server
    • Caso o GitOps esteja no Modo de Alta Disponibilidade, adicione a anotação ao Deployment argocd-dex-imageupdate-repo-server.

      kubectl edit deployment -nargocd argocd-dex-imageupdate-repo-server
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      ...
    ...
    spec:
      template:
        metadata:
          annotations:
            # This adds 20 GiB to the default 30 GiB, for a total of 50 GiB. The amount of extra temporary storage is customizable.
            k8s.aliyun.com/eci-extra-ephemeral-storage: "20Gi"
          ...
        ...
      ...

Impedir o rastreamento de recursos fora da aplicação

Informações de base

O Argo CD usa o rótulo app.kubernetes.io/instance para rastrear recursos do Kubernetes. Se um recurso possuir esse rótulo e seu valor corresponder ao nome da Application, o Argo CD o rastreará. Isso pode manter o status da Application como OutOfSync e resultar na exclusão não intencional do recurso externo à aplicação. Para evitar esse comportamento, use uma das soluções a seguir.

Soluções

  • Solução 1: No ConfigMap argocd/argocd-cm da instância fleet, adicione resource.exclusions para ignorar os recursos rastreados que não pertençam à aplicação. A configuração abaixo ignora recursos CiliumIdentity.

apiVersion: v1
kind: ConfigMap
metadata:
  name: argocd-cm
  labels:
    app.kubernetes.io/name: argocd-cm
    app.kubernetes.io/part-of: argocd
data:
  ...
  resource.exclusions: |
    - apiGroups:
      - cilium.io
      kinds:
      - CiliumIdentity
      clusters:
      - "*"
  • Solução 2: No ConfigMap argocd/argocd-cm da instância fleet, adicione o rótulo de rastreamento personalizado application.instanceLabelKey: argocd.argoproj.io/instance. Após essa alteração, os recursos gerenciados pelo Argo CD passarão a usar o rótulo argocd.argoproj.io/instance. Isso impede que o Argo CD rastreie outros recursos que possuam apenas o rótulo app.kubernetes.io/instance. Ao aplicar essa configuração, as Applications existentes podem apresentar status OutOfSync até serem ressincronizadas.

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: argocd-cm
      labels:
        app.kubernetes.io/name: argocd-cm
        app.kubernetes.io/part-of: argocd
    data:
      ...
      application.instanceLabelKey: argocd.argoproj.io/instance

Reiniciar componentes após alterações no ConfigMap

No Argo CD, certas alterações no ConfigMap só entram em vigor após o reinício do componente correspondente.

A tabela abaixo lista os ConfigMaps frequentemente modificados.

Parâmetro

Descrição

Requer reinício?

argocd-cm

Defina configurações como OpenID Connect (OIDC) personalizado, url de acesso personalizada e usuários locais.

Geralmente não requer reinício. Contudo, se a configuração não surtir efeito, reinicie o argocd-server.

argocd-cmd-params-cm

Configure variáveis de ambiente dos componentes do Argo CD.

É necessário reiniciar o componente correspondente ou o argocd-server.

argocd-rbac-cm

Configure permissões de Controle de Acesso Baseado em Função (RBAC) do Argo CD.

Normalmente, nenhum reinício é necessário.

argocd-image-updater-config

Gerencie as configurações do image-updater.

Exige o reinício do componente correspondente ou do argocd-server.

argocd-notifications-cm

Gerencie as configurações do argocd-notification-controller.

Requer o reinício do componente correspondente ou do argocd-server.

Nota

O ACK One GitOps oferece dois modos operacionais:

  1. No modo padrão, todos os componentes execute em um único Deployment. Para aplicar mudanças, reinicie o Deployment argocd-server.

  2. No Modo de Alta Disponibilidade, os componentes são divididos em múltiplos Deployments. Reinicie componentes individuais conforme necessário.

    1. argocd-server

    2. argocd-application-controller: contém application-controller e applicationset-controller.

    3. argocd-repo-server

    4. argocd-dex-imageupdate-notification: contém image-updater, notification-controller e dex.

    5. argocd-redis

Siga estes passos para reiniciar um componente:

  1. Na página Multi-cluster GitOps, localize a seção Argo CD Component dentro do painel expansível GitOps.

  2. Clique em Restart ao lado de Argo CD Component.

  3. Na caixa de diálogo, selecione o componente a ser reiniciado na lista suspensa Select Application to Restart, por exemplo argocd-server, e clique em OK.

Gerador git não reflete alterações de diretório

Sintoma

Ao usar o gerador git com um ApplicationSet do Argo CD, novos recursos Application podem falhar ao serem criados após a adição ou renomeação de um diretório dependente no repositório git. Esse problema pode ocorrer mesmo que você atualize imediatamente o recurso ApplicationSet para apontar para o novo caminho do diretório.

Solução

Isso acontece porque o Argo CD não atualize automaticamente seu cache quando há mudança no caminho de um diretório. Para corrigir, force uma atualização adicionando a anotação argocd.argoproj.io/application-set-refresh="true" ao ApplicationSet que contém o gerador git. Veja o exemplo a seguir:

apiVersion: argoproj.io/v1alpha1
kind: ApplicationSet
metadata:
  ···
  annotations:
    ···
    argocd.argoproj.io/application-set-refresh: "true"
spec:
  ···
  generators:
    - git:
        ···     
  template:
    ···