Tous les produits
Search
Centre de documentation

Container Compute Service:Configurer un acs-profile pour injecter automatiquement les configurations de pod

Dernière mise à jour :Aug 12, 2026

acs-profile est une ConfigMap au niveau du cluster qui injecte automatiquement les paramètres réseau et DNS dans les pods ACS lors de leur création. Plutôt que d'ajouter les ID de vSwitch, les ID de groupe de sécurité ou la configuration DNS à chaque fichier YAML de charge de travail, définissez ces valeurs par défaut une seule fois dans acs-profile pour qu'ACS les applique de manière transparente.

Fonctionnement

Lorsqu'ACS crée un pod, il lit la ConfigMap acs-profile dans le namespace kube-system et fusionne les valeurs par défaut configurées dans la spécification du pod. La mise à jour de la ConfigMap ne nécessite aucun redémarrage du composant acs-virtual-node.

Comportement de la mise à jour :

  • Nouveaux pods : Les paramètres mis à jour prennent effet immédiatement.

  • Pods existants : Les nouveaux paramètres s'appliquent uniquement après une mise à jour progressive (rolling update).

acs-profile prend en charge deux types de configuration :

  • Paramètres du cluster : Paramètres réseau par défaut appliqués à tous les pods ACS (ID de vSwitch, groupe de sécurité, VPC et mode de résolution DNS).

  • Sélecteurs : Règles basées sur des libellés permettant d'injecter des annotations et des libellés supplémentaires dans les pods correspondant à des critères spécifiques.

Prérequis

Avant de commencer, assurez-vous de disposer des éléments suivants :

  • Un cluster ACS avec le composant acs-virtual-node déployé

  • kubectl configuré avec un accès au cluster

  • Les autorisations nécessaires pour lire et modifier les ConfigMaps dans le namespace kube-system

Consulter la configuration actuelle

Exécutez la commande suivante pour afficher l'acs-profile actuel :

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

Un acs-profile par défaut se présente comme suit :

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: ""

Mettre à jour les paramètres du cluster

Les paramètres du cluster dans acs-profile définissent l'environnement réseau par défaut pour tous les pods ACS. Les pods qui ne définissent pas explicitement ces valeurs les héritent du profil.

Modifiez la ConfigMap à l'aide de kubectl :

kubectl edit configmap acs-profile -n kube-system

Vous pouvez également utiliser la console ACS :

  1. Connectez-vous à la console ACS.

  2. Sur la page Clusters, cliquez sur le nom de votre cluster.

  3. Dans le volet de navigation de gauche, choisissez Configurations > ConfigMaps.

  4. Sélectionnez kube-system dans la liste déroulante des namespaces.

  5. Recherchez acs-profile et cliquez sur Edit YAML.

Le tableau suivant décrit les paramètres modifiables :

Paramètre Exemple Description
securityGroupId sg-2ze0b9o8pjjzts4h**** Groupe de sécurité auquel appartiennent les pods ACS. Ce paramètre contrôle les règles de trafic entrant et sortant pour tous les pods utilisant ce profil.
vSwitchIds vsw-2zeet2ksvw7f14ryz**** ID des vSwitch à associer aux pods ACS. Séparez plusieurs ID par des virgules. Ce paramètre détermine les sous-réseaux dans lesquels les pods sont lancés.
vpcId vpc-2zeghwzptn5zii0w7**** Virtual Private Cloud (VPC) où les pods ACS sont déployés. Cette valeur doit correspondre au VPC des vSwitch spécifiés.
enablePrivateZone "false" Active ou désactive l'utilisation de PrivateZone pour la résolution des noms de domaine. Définissez cette valeur sur "true" si vos pods doivent résoudre des enregistrements DNS privés.
Remarque

Il s'agit de valeurs par défaut au niveau du cluster. Une spécification de pod qui définit explicitement l'une de ces valeurs est prioritaire sur les valeurs par défaut de l'acs-profile.

Résoudre les erreurs de configuration

Si une erreur de formatage subsiste dans l'acs-profile après une modification, la configuration ne prend pas effet. ACS enregistre l'erreur sous forme d'événement Kubernetes. Exécutez la commande suivante pour consulter les détails de l'erreur :

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

Configurer les sélecteurs

Les sélecteurs permettent d'injecter des annotations et des libellés supplémentaires dans des pods spécifiques en fonction de leur namespace ou de leurs libellés, sans modifier les fichiers YAML de ces pods.

Lors de la création d'un pod, ACS évalue chaque sélecteur dans l'ordre. Pour chaque sélecteur dont les critères correspondent au pod, ACS fusionne les paramètres effect (annotations et libellés) dans le pod. Les annotations et libellés déjà présents sur le pod ne sont jamais écrasés.

Paramètres des sélecteurs

Paramètre Obligatoire Description
name Oui Nom unique du sélecteur.
namespaceSelector Non Filtre les pods selon les libellés de leur namespace.
namespaceSelector.matchLabels Non Règle de correspondance au format {key: value}.
namespaceSelector.matchExpressions Non Liste des exigences du sélecteur. Opérateurs valides : In, NotIn, Exists, DoesNotExist. Pour In et NotIn, les valeurs ne doivent pas être vides.
objectSelector Non Filtre les pods selon les libellés du pod lui-même.
objectSelector.matchLabels Non Règle de correspondance au format {key: value}.
objectSelector.matchExpressions Non Liste des exigences du sélecteur. Mêmes opérateurs que pour namespaceSelector.matchExpressions.
effect Non Annotations et libellés à injecter dans les pods correspondants.
Important

namespaceSelector et objectSelector utilisent une logique ET : lorsque les deux sont configurés, un pod doit satisfaire aux deux conditions pour correspondre. Configurez au moins l'un d'eux pour chaque sélecteur. Si aucun des deux n'est configuré mais que effect est défini, l'effet s'applique à tous les pods ACS du cluster.

Priorité des sélecteurs

Si plusieurs sélecteurs correspondent au même pod, ACS les applique dans l'ordre où ils apparaissent dans le tableau selectors. Les annotations et libellés injectés respectent la priorité suivante :

  1. Annotations et libellés existants sur le pod (priorité la plus élevée, jamais écrasés)

  2. Paramètres effect du premier sélecteur correspondant

  3. Paramètres effect des sélecteurs correspondants suivants

Exemple

L'acs-profile suivant utilise un sélecteur nommé selector-demo1 pour injecter une configuration DNS personnalisée dans les pods répondant à des critères de libellés spécifiques :

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"
          }
        }
      }
    ]

Fonctionnement de ce sélecteur : Tout pod situé dans le namespace dev-ns qui possède à la fois le libellé acs=true et le libellé usage=testing reçoit :

  • L'annotation network.alibabacloud.com/custom-dnsconfig avec les serveurs DNS 114.114.114.114 et 8.8.8.8, les domaines de recherche xx.com et yy.com, ainsi que les options ndots:2 et edns0

  • Le libellé created-by-acs=true

Pour vérifier le bon fonctionnement du sélecteur, créez un pod correspondant aux critères :

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

Une fois le pod créé, vérifiez que les annotations et les libellés ont bien été injectés :

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

Dans la sortie, confirmez que l'annotation network.alibabacloud.com/custom-dnsconfig et le libellé created-by-acs=true apparaissent sous metadata.

image

Étapes suivantes