Todos os produtos
Search
Central de documentação

Container Compute Service:Configure an acs-profile to automatically inject pod configurations

Última atualização: Sep 21, 2026

O acs-profile é um ConfigMap no nível do cluster que injeta automaticamente configurações de rede e dns nos pods do ACS no momento da criação. Em vez de adicionar IDs de vSwitch, IDs de grupo de segurança ou configurações de dns a cada yaml de carga de trabalho, você define esses padrões uma única vez no acs-profile e o ACS os aplica de forma transparente.

Como funciona

Quando o ACS cria um pod, ele lê o ConfigMap chamado acs-profile no namespace kube-system e mescla os padrões configurados na especificação do pod. Não é necessário reiniciar o componente acs-virtual-node ao atualizar o ConfigMap.

Comportamento da atualização:

  • Novos pods: As configurações atualizadas entram em vigor imediatamente.

  • Pods existentes: As configurações atualizadas só entram em vigor após a execução de uma atualização contínua (rolling update).

O acs-profile oferece suporte a dois tipos de configuração:

  • Parâmetros do cluster — Configurações padrão de rede aplicadas a todos os pods do ACS (IDs de vSwitch, grupo de segurança, VPC e modo de resolução de dns).

  • Seletores — Regras baseadas em rótulos que injetam anotações e rótulos adicionais nos pods que correspondem a critérios específicos.

Pré-requisitos

Antes de começar, certifique-se de ter:

  • Um cluster ACS com o componente acs-virtual-node implantado

  • O kubectl configurado com acesso ao cluster

  • Permissão para ler e editar ConfigMaps no namespace kube-system

visualize a configuração atual

Agora, execute o comando a seguir para visualizar o acs-profile atual:

kubectl get cm -n kube-system acs-profile -o yaml

Um acs-profile padrão apresenta a seguinte estrutura:

apiVersion: v1
kind: ConfigMap
metadata:
  name: acs-profile
  namespace: kube-system
data:
  enablePrivateZone: "false"
  securityGroupId: sg-2zeeyaaxlkq9sppl****
  vSwitchIds: vsw-2ze23nqzig8inprou****,vsw-2ze94pjtfuj9vaymf****
  vpcId: vpc-2zeghwzptn5zii0w7****
  selectors: ""

atualize os parâmetros do cluster

Os parâmetros do cluster no acs-profile definem o ambiente de rede padrão para todos os pods do ACS. Os pods que não definem explicitamente esses valores os herdam do perfil.

Agora, edite o ConfigMap usando o kubectl:

kubectl edit configmap acs-profile -n kube-system

Como alternativa, use o console do ACS:

  1. Acesse o ACS console.

  2. Na página Clusters, clique em seu cluster.

  3. No painel de navegação à esquerda, escolha Configurations > ConfigMaps.

  4. Agora, selecione kube-system na lista suspensa de namespace.

  5. Encontre acs-profile e clique em Edit YAML.

A tabela a seguir descreve os parâmetros que você pode atualizar:

Parâmetro

Exemplo

Descrição

securityGroupId

sg-2ze0b9o8pjjzts4h****

O grupo de segurança ao qual os pods do ACS pertencem. Controla as regras de tráfego de entrada e saída para todos os pods que usam este perfil.

vSwitchIds

vsw-2zeet2ksvw7f14ryz****

Os IDs de vSwitch a serem associados aos pods do ACS. Separe vários IDs com vírgulas. Determina em quais sub-redes os pods são iniciados.

vpcId

vpc-2zeghwzptn5zii0w7****

A virtual private cloud (VPC) onde os pods do ACS são implantados. Deve corresponder à VPC dos vSwitches especificados.

enablePrivateZone

"false"

Indica se o PrivateZone deve ser usado para resolução de nomes de domínio. Se necessário, defina como "true" se seus pods precisarem resolver registros dns privados.

Nota

Estes são padrões no nível do cluster. A especificação de um pod que define explicitamente qualquer um desses valores tem precedência sobre os padrões do acs-profile.

Solucione erros de configuração

Se houver um erro de formatação no acs-profile após uma edição, a configuração não entrará em vigor. O ACS registra o erro como um evento do Kubernetes. Agora, execute o comando a seguir para visualizar os detalhes do erro:

kubectl -n kube-system get event --field-selector involvedObject.namespace=kube-system,involvedObject.name=acs-profile

configure os seletores

Os seletores permitem injetar anotações e rótulos adicionais em pods específicos com base em seus namespaces ou rótulos de pod, sem modificar os arquivos yaml desses pods.

Quando o ACS cria um pod, ele avalia cada seletor em ordem. Para cada seletor cujos critérios correspondem ao pod, o ACS mescla as configurações de effect (anotações e rótulos) no pod. As anotações e os rótulos já presentes no pod nunca são sobrescritos.

Parâmetros do seletor

Parâmetro

Obrigatório

Descrição

name

Sim

Um nome exclusivo para o seletor.

namespaceSelector

Não

Filtra os pods pelos rótulos em seu namespace.

namespaceSelector.matchLabels

Não

Regra de correspondência no formato {key: value}.

namespaceSelector.matchExpressions

Não

Lista de requisitos do seletor. Operadores válidos: In, NotIn, Exists, DoesNotExist. Para In e NotIn, os valores não podem estar vazios.

objectSelector

Não

Filtra os pods pelos rótulos no próprio pod.

objectSelector.matchLabels

Não

Regra de correspondência no formato {key: value}.

objectSelector.matchExpressions

Não

Lista de requisitos do seletor. Mesmos operadores de namespaceSelector.matchExpressions.

effect

Não

As anotações e os rótulos a serem injetados nos pods correspondentes.

Importante

O namespaceSelector e o objectSelector usam a lógica AND — quando ambos são configurados, um pod deve atender a ambas as condições para haver correspondência. Configure pelo menos um deles para cada seletor. Se nenhum dos dois for configurado, mas o effect estiver definido, o efeito será aplicado a todos os pods do ACS no cluster.

Se vários seletores corresponderem ao mesmo pod, o ACS os aplicará na ordem em que aparecem no array selectors. As anotações e os rótulos injetados seguem esta prioridade:

  1. Anotações e rótulos existentes no pod (prioridade mais alta — nunca sobrescritos)

  2. As configurações de effect do primeiro seletor correspondente

  3. As configurações de effect dos seletores correspondentes subsequentes

Exemplo

O acs-profile a seguir usa um seletor chamado selector-demo1 para injetar uma configuração de dns personalizada em pods que atendem a critérios de rótulo específicos:

apiVersion: v1
kind: ConfigMap
metadata:
  name: acs-profile
  namespace: kube-system
data:
  selectors: |
    [
      {
        "name": "selector-demo1",
        "namespaceSelector": {
          "matchLabels": {
            "kubernetes.io/metadata.name": "dev-ns"
          }
        },
        "objectSelector": {
          "matchLabels": {
            "acs": "true"
          },
          "matchExpressions": [
            {
              "key": "usage",
              "operator": "In",
              "values": ["testing"]
            }
          ]
        },
        "effect": {
          "annotations": {
            "network.alibabacloud.com/custom-dnsconfig": "{\"servers\":[\"114.114.114.114\",\"8.8.8.8\"],\"searches\":[\"xx.com\",\"yy.com\"],\"options\":[\"ndots:2\",\"edns0\"]}"
          },
          "labels": {
            "created-by-acs": "true"
          }
        }
      }
    ]

O que este seletor faz: Qualquer pod no namespace dev-ns que tenha tanto o rótulo acs=true quanto o rótulo usage=testing recebe:

  • Anotação: network.alibabacloud.com/custom-dnsconfig com os servidores dns 114.114.114.114 e 8.8.8.8, domínios de pesquisa xx.com e yy.com, e opções ndots:2 e edns0

  • Rótulo: created-by-acs=true

Para testar, crie um pod que corresponda aos critérios:

apiVersion: v1
kind: Pod
metadata:
  name: nginx
  namespace: dev-ns
  labels:
    acs: "true"
    usage: "testing"
spec:
  containers:
  - name: nginx
    image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6
    command: ["sleep", "infinity"]
    ports:
    - containerPort: 80

Após a criação do pod, por favor, verifique se as anotações e os rótulos foram injetados:

kubectl get pod nginx -n dev-ns -o yaml

Na saída, confirme se a anotação network.alibabacloud.com/custom-dnsconfig e o rótulo created-by-acs=true aparecem em metadata.

image

Próximos passos