Tous les produits
Search
Centre de documentation

Container Service for Kubernetes:Use Terraform to manage add-ons

Dernière mise à jour :Aug 27, 2026

Container Service for Kubernetes (ACK) étend les fonctionnalités des clusters grâce à des modules complémentaires. Spécifiez-les lors de la création du cluster et gérez leur cycle de vie par la suite avec Terraform.

Types de modules complémentaires

Les modules complémentaires ACK sont classés en modules système ou modules facultatifs. Pour plus d'informations, consultez la rubrique Modules complémentaires.

Modules système

Les modules système sont des services fondamentaux installés par défaut lors de la création du cluster.

Exemples :

  • kube-apiserver

  • kube-controller-manager

  • cloud-controller-manager

  • kube-proxy

  • CoreDNS

Modules facultatifs

Les modules facultatifs ne sont pas obligatoires, mais ils peuvent être installés pour étendre les capacités du cluster. Ils sont regroupés dans plusieurs catégories, notamment :

  • Gestion des applications

  • Journalisation et surveillance

  • Stockage

  • Réseau

  • Sécurité

Générer les paramètres de configuration Terraform depuis la console

La console ACK peut générer automatiquement la configuration Terraform nécessaire à la gestion des modules complémentaires du cluster.

  1. Connectez-vous à la console ACK. Dans le volet de navigation de gauche, cliquez sur Clusters.

  2. Sur la page Clusters, cliquez sur le nom de votre cluster. Dans le volet de navigation de gauche, cliquez sur Components and Add-ons .

  3. Sur la page Add-ons, localisez le module cible et cliquez sur Install ou Configuration.

  4. Dans la boîte de dialogue, cliquez sur Console-to-Code. Accédez à l'onglet Terraform et copiez la configuration affichée.

Bonnes pratiques pour la gestion des modules complémentaires

Spécifiez les modules complémentaires lors de la création du cluster, puis gérez leur cycle de vie ultérieurement. Les sections suivantes détaillent la gestion du cycle de vie et les bonnes pratiques adaptées à différents scénarios.

Spécifier les modules complémentaires lors de la création du cluster

Les ressources Terraform suivantes correspondent aux différents types de clusters :

  • Cluster ACK managé : alicloud_cs_managed_kubernetes

  • Cluster ACK dédié : alicloud_cs_kubernetes

  • Cluster ACK Edge : alicloud_cs_edge_kubernetes

  • Cluster ACK Serverless : alicloud_cs_serverless_kubernetes

Définissez l'objet addons dans la ressource pour spécifier les modules complémentaires. Le bloc de code ci-dessous présente les attributs de l'objet addons :

# This example uses an ACK managed cluster. 
resource "alicloud_cs_managed_kubernetes" "default" {
  # Other parameters. 
  # ...

  # The addons object is a list. You can set the addons object in a Resource to specify the add-ons to be installed when the system creates the cluster. 
  addons {
    # The name of the add-on. You can query the name of an add-on by using alicloud_cs_kubernetes_addons of Data Source. 
    # The add-ons that are already installed and can be installed in the cluster and the versions of the add-ons. 
    name = "XXX"

    # Custom add-on parameters. You can set this attribute for cluster add-ons that support custom parameters. For more information, see the Modify the custom parameters of a cluster add-on section. 
    config = jsonencode(
      {
        ....
      }
    )

    # The value is of Boolean type and the default is false. By default, ACK automatically installs specific add-ons for you to manage the cluster. If you do not want ACK to install add-ons when ACK creates the cluster, set disabled=true. 
    disabled = XXX
  }
}
Important

L'objet addons s'applique uniquement lors de la création du cluster. Vous ne pouvez pas le modifier par la suite pour mettre à jour, désinstaller ou reconfigurer les modules complémentaires. Consultez la section Gérer les modules complémentaires après la création du cluster.

Le tableau suivant répertorie les modules complémentaires configurables avec Terraform.

Module complémentaire

Type de module

Description

Configuration via Terraform

appcenter

Gestion des applications

Gère de manière centralisée les déploiements d'applications et leur cycle de vie sur plusieurs clusters.

addon { name = "appcenter" }

progressive-delivery-tool

Gestion des applications

Permet des déploiements progressifs des applications.

addon { name = "progressive-delivery-tool" }

alicloud-monitor-controller

Journalisation et surveillance

Active l'intégration avec CloudMonitor.

addon { name = "alicloud-monitor-controller" }

metrics-server

Journalisation et surveillance

Collecte les métriques de ressources via Metrics Server open source. Fournit l'API Metrics et prend en charge Horizontal Pod Autoscaler (HPA).

addon { name = "metrics-server" }

ack-node-problem-detector

Journalisation et surveillance

Surveille la santé des nœuds via Node Problem Detector (NPD) open source. Se connecte aux plateformes de surveillance tierces.

addons { name = "ack-node-problem-detector" }

ags-metrics-collector

Journalisation et surveillance

Surveille l'utilisation des ressources par nœud dans les workflows Alibaba Cloud Genomics Service (AGS).

addons { name = "ags-metrics-collector" }

ack-arms-prometheus

Journalisation et surveillance

Surveille les clusters ACK à l'aide de Managed Service for Prometheus.

addons { name = "arms-prometheus" }

loongcollector

Journalisation et surveillance

Collecte les journaux des conteneurs via Log Service.

addons { name = "loongcollector" }

csi-plugin

Stockage

Monte et démonte les volumes. Installé automatiquement lorsque CSI est sélectionné lors de la création du cluster.

addons { name = "csi-plugin" }

csi-provisioner

Stockage

Automatise le provisionnement des volumes. Installé automatiquement lorsque CSI est sélectionné lors de la création du cluster.

addons { name = "csi-plugin" }

storage-operator

Stockage

Gère le cycle de vie des modules complémentaires de stockage.

addons { name = "storage-operator" }

alicloud-disk-controller

Stockage

Automatise le provisionnement des volumes de disque.

addons { name = "alicloud-disk-controller" }

flexvolume

Stockage

Mécanisme d'extension de volume de stockage développé initialement par la communauté Kubernetes. Monte et démonte les volumes. Installé automatiquement lorsque FlexVolume est sélectionné lors de la création du cluster.

addons { name = "flexvolume" }

nginx-ingress-controller

Réseau

Analyse les règles de routage Ingress et transfère les requêtes correspondantes vers les services backend.

addons { name = "nginx-ingress-controller" }

terway-eniip

Réseau

Module CNI Alibaba Cloud compatible avec VPC, prenant en charge les politiques réseau Kubernetes standard. Configure la connectivité réseau au sein des clusters. Installé automatiquement lorsque Terway est sélectionné lors de la création du cluster.

addons { name = "terway-eniip" }

ack-node-local-dns

Réseau

Solution de mise en cache DNS locale développée à partir du projet open source NodeLocal DNSCache.

addons { name = "ack-node-local-dns" }

aliyun-acr-credential-helper

Sécurité

Tire des images privées sans mot de passe depuis Container Registry Enterprise Edition et Personal Edition.

addons { name = "aliyun-acr-credential-helper" }

gatekeeper

Sécurité

Gère et applique les politiques OPA dans les clusters ACK, et gère les libellés des namespaces.

addons { name = "gatekeeper" }

kritis-validation-hook

Sécurité

Vérifie les signatures des images.

addons { name = "kritis-validation-hook" }

security-inspector

Sécurité

Effectue des inspections de sécurité.

addons { name = "security-inspector" }

ack-kubernetes-webhook-injector

Sécurité

Gère dynamiquement les adresses IP des pods dans les listes d'autorisation des services Alibaba Cloud.

addons { name = "ack-kubernetes-webhook-injector" }

ack-arena

Autres

Installe Arena open source depuis la console ACK.

addons { name = "ack-arena" }

ack-cost-exporter

Autres

Active le traitement des données d'analyse des coûts.

addons { name = "ack-cost-exporter" }

ack-kubernetes-cronhpa-controller

Autres

Met à l'échelle les charges de travail selon une planification définie.

addons { name = "ack-kubernetes-cronhpa-controller" }

ack-virtual-node

Autres

Basé sur Virtual Kubelet open source avec prise en charge du fournisseur Aliyun. Permet une intégration transparente entre Kubernetes et Elastic Container Instance.

addons { name = "ack-virtual-node" }

aesm

Autres

Module système Intel SGX fournissant un support de lancement pour SGX Enclave, incluant des services tels que le provisionnement de clés et l'attestation distante.

addons { name = "aesm" }

aliyun-acr-acceleration-suite

Autres

Active le chargement d'images à la demande. Déployé en tant que DaemonSet sur les nœuds de travail.

addons { name = "aliyun-acr-acceleration-suite" }

migrate-controller

Autres

Migre les applications Kubernetes basées sur Velero open source.

addons { name = "migrate-controller" }

resource-controller

Autres

Contrôle dynamiquement les ressources des pods. Requis pour la planification CPU consciente de la topologie dans les clusters ACK Pro.

addons { name = "resource-controller" }

sandboxed-container-controller

Autres

Améliore et étend les fonctionnalités des conteneurs isolés dans le runtime Sandboxed-Container.

addons { name = "sandboxed-container-controller" }

sandboxed-container-helper

Autres

Effectue des vérifications d'état et des opérations de maintenance sur les conteneurs isolés.

addons { name = "sandboxed-container-helper" }

sgx-device-plugin

Autres

Simplifie l'utilisation d'Intel SGX dans les conteneurs. Développé par l'équipe ACK et Ant Group.

addons { name = "sgx-device-plugin" }

Gérer les modules complémentaires après la création du cluster

Assurez-vous de disposer d'un cluster ACK avant de gérer le cycle de vie des modules complémentaires.

Utilisez la ressource alicloud_cs_kubernetes_addon pour installer, mettre à jour, désinstaller et configurer les modules complémentaires. Le bloc de code ci-dessous présente les attributs de alicloud_cs_kubernetes_addon :

resource "alicloud_cs_kubernetes_addon" "addon-example" {
  # The ID of the cluster. 
  cluster_id = "XXXX"

  # The name of the add-on. You can query the add-ons that are already installed and can be installed and their versions by using alicloud_cs_kubernetes_addons of Data Source. 
  name = "XXXX"

  # The version of the add-on. 
  version = "XXXX"

  # Custom add-on parameters in a JSON string. You can use the jsonencode method of Terraform to specify the parameters or directly specify the parameters in a JSON string. Pay attention to character escaping if you directly specify the parameters in a JSON string. You can set this attribute for cluster add-ons that support custom parameters. For more information, see the Modify the custom parameters of a cluster add-on section. 
  config = jsonencode(
    {
      ....
    }
  )
}

Vous pouvez également spécifier directement les paramètres personnalisés dans une chaîne JSON. Veillez à l'échappement des caractères. Par exemple, configurez nginx-ingress-controller en utilisant l'une des méthodes suivantes :

  • Utilisez jsonencode pour configurer les paramètres personnalisés :

    config = jsonencode(   
      {       
        IngressSlbNetworkType="internet"       
        IngressSlbSpec="slb.s2.small"     
      }  
    )
  • Spécifiez directement les paramètres personnalisés dans une chaîne JSON :

    config = "{\"IngressSlbNetworkType\":\"internet\",\"IngressSlbSpec\":\"slb.s2.small\"}"

Importer les modules complémentaires installés dans Terraform

Utilisez terraform import pour importer les modules complémentaires du cluster dans Terraform afin de les gérer. L'exemple suivant utilise nginx-ingress-controller.

  1. Créez un fichier .tf et définissez une ressource. Si vous possédez déjà un fichier .tf, définissez-y la ressource.

    La ressource alicloud_cs_kubernetes_addon gère les modules complémentaires du cluster. Laissez-la vide initialement.

    resource "alicloud_cs_kubernetes_addon" "nginx-ingress-controller" {
    }
  2. Importez nginx-ingress-controller :

    Terraform extrait la configuration de nginx-ingress-controller depuis le cluster vers le fichier .state.

    terraform import alicloud_cs_kubernetes_addon.nginx-ingress-controller <cluster_id>:nginx-ingress-controller
  3. Exécutez terraform plan. La sortie affiche la différence de configuration entre nginx-ingress-controller et la ressource.

    Mettez à jour la ressource issue de l'étape 1 en vous basant sur la différence et le fichier .state. Lorsque terraform plan n'affiche aucune différence, l'importation est terminée.

    resource "alicloud_cs_kubernetes_addon" "nginx-ingress-controller" {
      cluster_id = "XXXXX"
      name = "nginx-ingress-controller"
      version = "v1.2.1-aliyun.1"
      config = jsonencode(
        {
          IngressSlbNetworkType = "internet"
          IngressSlbSpec        = "slb.s2.small"
        }
      )
    }

Installer des modules complémentaires de cluster

Utilisez la ressource alicloud_cs_kubernetes_addon pour installer des modules complémentaires. L'exemple suivant utilise Gatekeeper.

  1. Spécifiez le module complémentaire dans votre fichier .tf :

    • L'ID du cluster.

    • Le nom et la version du module complémentaire :

      Interrogez les modules installables et leurs versions avec la source de données alicloud_cs_kubernetes_addons. Seule la dernière version est affichée ; pour les versions antérieures, consultez les notes de publication du module.

    • (Facultatif) Configuration personnalisée du module :

      Personnalisez le champ config avec jsonencode. Interrogez les paramètres pris en charge avec la source de données alicloud_cs_kubernetes_addon_metadata. Consultez la section Personnaliser les paramètres du module.

    Cliquez pour afficher les détails

    resource "alicloud_cs_kubernetes_addon" "gatekeeper" {
      cluster_id = "ce36b7c61e126430b8b245730ca6d****"
      name = "gatekeeper"
      version = "v3.8.1.113-geb7947ef-aliyun"
      config = jsonencode(
        {
          AdmissionPodCpuLimit      = "1000m"
          AdmissionPodCpuRequest    = "100m"
          AdmissionPodMemoryLimit   = "512Mi"
          AdmissionPodMemoryRequest = "256Mi"
          AdmissionPodNumber        = 3
          AuditInterval             = 1800
          AuditPodCpuLimit          = "1000m"
          AuditPodCpuRequest        = "100m"
          AuditPodMemoryLimit       = "512Mi"
          AuditPodMemoryRequest     = "256Mi"
          EnableAuditPod            = false
          EnableMutatingWebhook     = false
        }
      )
    }
  2. Installez le module :

    terraform apply

    Sortie attendue :

    Plan: 1 to add, 0 to change, 0 to destroy.
    
    Do you want to perform these actions?
      Terraform will perform the actions described above.
      Only 'yes' will be accepted to approve.
    
      Enter a value: yes
    
    alicloud_cs_kubernetes_addon.gatekeeper: Creating...
    alicloud_cs_kubernetes_addon.gatekeeper: Still creating... [10s elapsed]
    alicloud_cs_kubernetes_addon.gatekeeper: Creation complete after 16s [id=XXXXX:gatekeeper]
    
    Apply complete! Resources: 1 added, 0 changed, 0 destroyed.

    Lorsque le message Apply complete! apparaît, le module est installé.

Mettre à jour les modules complémentaires de cluster

Interrogez les versions disponibles avec la source de données alicloud_cs_kubernetes_addons, puis modifiez le numéro de version pour effectuer la mise à jour. L'exemple suivant utilise Gatekeeper.

Cliquez pour afficher les détails

resource "alicloud_cs_kubernetes_addon" "gatekeeper" {
  cluster_id = "ce36b7c61e126430b8b245730ca6d****"
  name = "gatekeeper"

  # Change version to the version number that you want to use. 
  version = "XXXXXXXXX"
  config = jsonencode(
    {
      AdmissionPodCpuLimit      = "1000m"
      AdmissionPodCpuRequest    = "100m"
      AdmissionPodMemoryLimit   = "512Mi"
      AdmissionPodMemoryRequest = "256Mi"
      AdmissionPodNumber        = 3
      AuditInterval             = 1800
      AuditPodCpuLimit          = "1000m"
      AuditPodCpuRequest        = "100m"
      AuditPodMemoryLimit       = "512Mi"
      AuditPodMemoryRequest     = "256Mi"
      EnableAuditPod            = false
      EnableMutatingWebhook     = false
    }
  )
}

Exécutez terraform apply pour mettre à jour le module. Le message Apply complete! indique que la mise à jour a réussi.

Personnaliser les paramètres du module

Modifiez le champ config dans alicloud_cs_kubernetes_addons pour personnaliser la configuration du module. L'exemple suivant utilise Gatekeeper.

Cliquez pour afficher les détails

resource "alicloud_cs_kubernetes_addon" "gatekeeper" {
  cluster_id = "ce36b7c61e126430b8b245730ca6d****"
  name = "gatekeeper"
  version = "v3.8.1.113-geb7947ef-aliyun"

  # You can modify and apply the attributes in Config to customize the configuration of a cluster add-on. 

}

Interrogez les paramètres personnalisés pris en charge avec la source de données alicloud_cs_kubernetes_addon_metadata, qui renvoie un schéma JSON. Par exemple, pour interroger les paramètres de Gatekeeper, ajoutez les éléments suivants à votre fichier .tf :

# Define Data Source to obtain the schema that includes the custom parameters supported by the Gatekeeper add-on. 
data "alicloud_cs_kubernetes_addon_metadata" "default" {
  cluster_id = "ce36b7c61e126430b8b245730ca6d****"
  name       = "gatekeeper"
  version    = "v3.8.1.113-geb7947ef-aliyun"
}

# Output the schema. 
output "addon_config_schema" {
  value = data.alicloud_cs_kubernetes_addon_metadata.default.config_schema
}

Exécutez terraform apply. Le résultat est un schéma JSON dont l'attribut properties répertorie tous les paramètres personnalisés pris en charge :

  • default : la valeur par défaut.

  • Description : la description du paramètre.

  • pattern : une expression régulière pour les valeurs valides.

  • type : le type de données.

Cliquez pour afficher les détails

addon_config_schema = <<EOT
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "AdmissionPodCpuLimit": {
      "default": "1000m",
      "description": "cpu limit for gatekeeper",
      "pattern": "^(|[1-9][0-9]*(m|\\.\\d+)?)$",
      "type": "string"
    },
    "AdmissionPodCpuRequest": {
      "default": "100m",
      "description": "cpu request for gatekeeper",
      "pattern": "^[1-9][0-9]*(m|\\.\\d+)?$",
      "type": "string"
    },
    "AdmissionPodMemoryLimit": {
      "default": "512Mi",
      "description": "memory limit for gatekeeper",
      "pattern": "^(|[1-9][0-9]*(\\.\\d+)?(K|Ki|M|Mi|G|Gi|T|Ti)?)$",
      "type": "string"
    },

    ......
  },
  "title": "Config",
  "type": "object"
}
EOT

Configurer les modules complémentaires réseau

Les clusters ACK utilisent Terway pour la mise en réseau des conteneurs. Consultez la rubrique Présentation.

L'exemple suivant configure un module complémentaire réseau avec Terraform :

Cliquez pour afficher les détails

# Configure the Terway network add-on and enable the Assign One ENI to Each Pod mode. This is the default mode. 
# In this mode, the number of pods on a node is limited by the elastic network interface (ENI) quota of Elastic Compute Service (ECS) instances. 

resource "alicloud_cs_managed_kubernetes" "default" {
  # Other parameters. 
  # ...

  addons {
    name = "terway-eniip"
  }
}

# Configure the Terway network add-on and enable the IPVLAN mode. 
# You can use only the Alibaba Cloud Linux 2 operating system because the One ENI for Multi-Pod mode uses the IPVLAN + eBPF virtualization technology. 
resource "alicloud_cs_managed_kubernetes" "default" {
  # Other parameters. 
  # ...

  addons {
    name   =  "terway-eniip"
    config = "{\"IPVlan\":\"true\",\"NetworkPolicy\":\"false\"}"
  }
}

# Configure the Terway network add-on and enable Kubernetes network policies in IPVLAN mode. 
# You can use only the Alibaba Cloud Linux 2 operating system because the One ENI for Multi-Pod mode uses the IPVLAN + eBPF virtualization technology. 
# The IPVLAN mode provides network access control based on Kubernetes network policies. 
resource "alicloud_cs_managed_kubernetes" "default" {
  # Other parameters. 
  # ...

  addons {
    name   =  "terway-eniip"
    config = "{\"IPVlan\":\"true\",\"NetworkPolicy\":\"true\"}"
  }
}

Configurer les modules complémentaires de volume

ACK propose les modules complémentaires de volume FlexVolume et CSI. FlexVolume est obsolète ; utilisez plutôt CSI. Si aucun module complémentaire de stockage n'est spécifié lors de la création du cluster, CSI est installé par défaut.

Cliquez pour afficher les détails

# The CSI volume add-on consists of csi-plugin and csi-provisioner. If you use the CSI add-on and want ACK to create a default NAS file system and CNFS file system for dynamically provisioned volumes, you must also install the storage-operator add-on. 
resource "alicloud_cs_managed_kubernetes" "default" {
  # Other parameters. 
  # ...

  addons {
    name = "csi-plugin"
  }
  addons {
    name = "csi-provisioner"
  }
  addons {
    name   = "storage-operator"
    config = "{\"CnfsOssEnable\":\"false\",\"CnfsNasEnable\":\"true\"}"
  }
}

Configurer les modules complémentaires de journalisation

Le module complémentaire de collecte de journaux ACK stocke les journaux dans Simple Log Service (SLS) selon l'une des deux méthodes suivantes :

  • Utiliser un projet SLS existant.

  • Laisser ACK créer automatiquement un projet SLS lors de la création du cluster.

L'exemple suivant configure loongcollector avec Terraform en fonction de votre choix de projet Log Service :

Cliquez pour afficher les détails

# Use the automatically created SLS project. 
resource "alicloud_cs_managed_kubernetes" "default" {
  # Other parameters. 
  # ...

  addons {
    name = "loongcollector"
  }
}

# Use the automatically created SLS project. Enable the automatically created Ingress dashboard. 
resource "alicloud_cs_managed_kubernetes" "default" {
  # Other parameters. 
  # ...

  addons {
    name = "loongcollector"
    config = "{\"IngressDashboardEnabled\":\"true\"}"
  }
}

# Use an existing SLS project. Enable the automatically created Ingress dashboard. 
resource "alicloud_cs_managed_kubernetes" "default" {
  # Other parameters. 
  # ...

  addons {
    name = "loongcollector"
    config = "{\"IngressDashboardEnabled\":\"true\",\"sls_project_name\":\"k8s-log-c55c35ff493df47b88783bea48827****\"}"
  }
}

# Install and configure node-problem-detector. 
# Configure node-problem-detector to use the automatically created SLS project to store events. 
resource "alicloud_cs_managed_kubernetes" "default" {
  # Other parameters. 
  # ...

  addons {
    name   = "ack-node-problem-detector"
    config = "{\"sls_project_name\":\"\"}"
  }
}

# Install and configure node-problem-detector. 
# Configure node-problem-detector to use an existing SLS project to store events. node-problem-detector can share the Logstore used by loongcollector. 
resource "alicloud_cs_managed_kubernetes" "default" {
  # Other parameters. 
  # ...

  addons {
    name   = "ack-node-problem-detector"
    config = "{\"sls_project_name\":\"k8s-log-c55c35ff493df47b88783bea48827****\"}"
  }
}

Configurer les modules complémentaires de surveillance

ACK fournit l'agent CloudMonitor pour les nœuds ECS et le module complémentaire Managed Service for Prometheus. Configurez le paramètre install_cloud_monitor avec Terraform pour installer l'agent CloudMonitor.

Cliquez pour afficher les détails

# Install the Managed Service for Prometheus. 
resource "alicloud_cs_managed_kubernetes" "default" {
  # Other parameters.
  # ...
  addons {
    name = "arms-prometheus"
  }
}
# Install the CloudMonitor agent on ECS nodes. 
resource "alicloud_cs_kubernetes_node_pool" "default" {
  # Other parameters.
  # ...
  install_cloud_monitor = true
}

Configurer les modules complémentaires Ingress

ACK propose nginx-ingress-controller et alb-ingress-controller pour router le trafic vers les applications.

L'exemple suivant configure les modules complémentaires Ingress avec Terraform :

Cliquez pour afficher les détails

# Configure nginx-ingress-controller. 
# If you use an Internet-facing Server Load Balancer (SLB) instance, you must set the IngressSlbNetworkType parameter to internet in the Config. 
# If you use an internal-facing SLB instance, you must set the IngressSlbNetworkType parameter to intranet in the Config. 
resource "alicloud_cs_managed_kubernetes" "default" {
  # Other parameters. 
  # ...

  addons {
    name   =  "nginx-ingress-controller"
    config = "{\"IngressSlbNetworkType\":\"internet\",\"IngressSlbSpec\":\"slb.s2.small\"}"
  }
}

# Configure alb-ingress-controller. 
resource "alicloud_cs_managed_kubernetes" "default" {
  # Other parameters. 
  # ...

  addons {
    name   = "alb-ingress-controller"
    config = "{\"albIngress\":{\"CreateDefaultALBConfig\":false}}"  # Not created right now.
#   config = "{\"albIngress\":{\"LoadBalancerId\":\"alb-vl8uiXXXXXxdr\",\"CreateDefaultALBConfig\":true}}" # Specify an existing ALB instance.
#   config = "{\"albIngress\":{\"AddressType\":\"Internet\",\"ZoneMappings\":{\"cn-hangzhou-l\":[\"vsw-uf6XXXXXoyb4qe\"],\"cn-hangzhou-m\":[\"vsw-uf6XXXX0rlkiq\"]},\"CreateDefaultALBConfig\":true}}" # Create a new ALB instance. You must specify at least two available zones.
 
  }
}

Désactiver l'installation des modules complémentaires par défaut

ACK installe des modules complémentaires par défaut lors de la création du cluster. Pour empêcher l'installation d'un module complémentaire spécifique, définissez disabled = true. L'exemple suivant désactive nginx-ingress-controller :

# Disable the system to install the nginx-ingress-controller add-on. 

resource "alicloud_cs_managed_kubernetes" "default" {
  # Other parameters. 
  # ...

  addons {
    name     =  "nginx-ingress-controller"
    disabled = true
  }
}

Modules complémentaires installés par défaut

Sans configuration explicite des modules complémentaires, le système installe les modules suivants :

Type de cluster

Type de module complémentaire

Nom du module complémentaire installé par défaut

Description

Cluster ACK

Modules complémentaires système

kube-scheduler

Planifie les ressources du cluster.

cloud-controller-manager

Crée des instances SLB et gère les entrées de routage des nœuds.

kube-apiserver

Bus et passerelle Ingress d'un cluster ACK.

kube-controller-manager

Gestionnaire interne des ressources du cluster.

Modules complémentaires de journalisation et de surveillance

alicloud-monitor-controller

Surveille les cycles de vie et l'état des conteneurs.

metrics-server

Collecte les métriques de ressources des conteneurs pour la mise à l'échelle automatique.

Modules complémentaires de volume

csi-plugin

Gère le cycle de vie des volumes. Ce module complémentaire est recommandé.

csi-provisioner

Crée et supprime des volumes. Ce module complémentaire est recommandé.

storage-operator

Gère le cycle de vie des modules complémentaires de stockage. Ce module complémentaire est recommandé.

Modules complémentaires réseau

CoreDNS

Sert de serveur DNS pour un cluster Kubernetes.

Gateway API

Modèle de ressource de passerelle.

terway-eniip

Module complémentaire réseau Terway.

nginx-ingress-controller (la version Pro est installée par défaut)

Analyse les règles de transfert du trafic NGINX Ingress.

Cluster ACK Serverless

Modules complémentaires système

kube-scheduler

Planifie les ressources du cluster.

ack-virtual-node

Met à l'échelle les ressources avec des nœuds virtuels et des instances de conteneur élastiques.

cloud-controller-manager

Crée des instances SLB et gère les entrées de routage des nœuds.

kube-apiserver

Bus et passerelle Ingress d'un cluster ACK.

kube-controller-manager

Gestionnaire interne des ressources du cluster.

Modules complémentaires réseau

CoreDNS

Sert de serveur DNS pour un cluster Kubernetes.

Cluster ACK Edge

Modules complémentaires système

kube-scheduler

Planifie les ressources du cluster.

cloud-controller-manager

Crée des instances SLB et gère les entrées de routage des nœuds.

kube-apiserver

Bus et passerelle Ingress d'un cluster ACK.

kube-controller-manager

Gestionnaire interne des ressources du cluster.

Modules complémentaires de journalisation et de surveillance

alicloud-monitor-controller

Surveille les cycles de vie et l'état des conteneurs.

metrics-server

Collecte les métriques d'utilisation des ressources des conteneurs pour le mécanisme de mise à l'échelle automatique.

Modules complémentaires réseau

CoreDNS

Sert de serveur DNS pour un cluster Kubernetes.

terway-eniip

Module complémentaire réseau Terway.

Autres

edge-controller-manager

-

edge-tunnel-agent

Crée des tunnels inversés d'exploitation et de maintenance pour la collaboration cloud-edge en utilisant l'architecture C/S.

edge-tunnel-server

Crée des tunnels inversés d'exploitation et de maintenance pour la collaboration cloud-edge en utilisant l'architecture C/S.

yurt-app-manager

Fournit des pools de nœuds et un déploiement basé sur des cellules pour les clusters ACK Edge.

Exemples de configuration courants

Les exemples suivants couvrent les configurations de modules complémentaires courantes.

  • Utilisez Terway comme module complémentaire réseau.

  • Utilisez CSI (recommandé) ou FlexVolume. FlexVolume est obsolète.

  • Choisissez nginx-ingress-controller ou alb-ingress-controller en fonction de vos besoins.

  • Sélectionnez d'autres modules complémentaires selon vos exigences.

Exemple 1 : N'installer aucun module complémentaire

# Do not install any add-ons when you create the cluster. In this scenario, only the default add-ons are installed. 
# A simple template. Replace the variables with the desired values. 
resource "alicloud_cs_managed_kubernetes" "default" {
  name                         = var.name
  cluster_spec                 = "ack.pro.small"
  is_enterprise_security_group = true
  pod_cidr                     = "172.20.0.0/16"
  service_cidr                 = "172.21.0.0/20"
  worker_vswitch_ids           = [var.vswitch_id]
}

Exemple 2 : Installer Terway

# Create a cluster that has Terway installed. 
# Enable the Assign One ENI to Each Pod mode. 

resource "alicloud_cs_managed_kubernetes" "default" {
  name                         = var.name
  cluster_spec                 = "ack.pro.small"
  is_enterprise_security_group = true
  pod_vswitch_ids              = [var.vswitch_id]
  service_cidr                 = "172.21.0.0/20"
  worker_vswitch_ids           = [var.vswitch_id]

  addons {
    name = "terway-eni"
  }
}

# Create a cluster that has Terway installed. 
# Enable the IPVLAN mode and enable Kubernetes network policies. 
resource "alicloud_cs_managed_kubernetes" "default" {
  name                         = var.name
  cluster_spec                 = "ack.pro.small"
  is_enterprise_security_group = true
  service_cidr                 = "172.21.0.0/20"
  pod_vswitch_ids              = [var.vswitch_id]
  worker_vswitch_ids           = [var.vswitch_id]

  addons {
    name   =  "terway-eniip"
    config = "{\"IPVlan\":\"true\",\"NetworkPolicy\":\"true\"}"
  }
}

Exemple 3 : Installer les modules complémentaires Terway, CSI et nginx-ingress-controller

# A template for installing the Terway, CSI, and nginx-ingress-controller add-ons. 

resource "alicloud_cs_managed_kubernetes" "default" {
  name                         = var.name
  cluster_spec                 = "ack.pro.small"
  is_enterprise_security_group = true
  service_cidr                 = "172.21.0.0/20"
  pod_vswitch_ids              = [var.vswitch_id]
  worker_vswitch_ids           = [var.vswitch_id]

  addons {
    name = "terway-eniip"
    config = "{\"IPVlan\":\"true\",\"NetworkPolicy\":\"false\"}"
  }
  addons {
    name = "csi-plugin"
  }
  addons {
    name = "csi-provisioner"
  }
  addons {
    name = "storage-operator"
    config = "{\"CnfsOssEnable\":\"false\",\"CnfsNasEnable\":\"true\"}"
  }
  addons {
    name = "loongcollector"
    config = "{\"IngressDashboardEnabled\":\"true\"}"
  }
  addons {
    name = "ack-node-problem-detector"
    config = "{\"sls_project_name\":\"\"}"
  }
  addons {
    name = "nginx-ingress-controller"
    config = "{\"IngressSlbNetworkType\":\"internet\",\"IngressSlbSpec\":\"slb.s2.small\"}"
  }
  addons {
    name = "ack-node-local-dns"
  }
  addons {
    name = "arms-prometheus"
  }
  addons {
    name = "alicloud-monitor-controller"
    config = "{\"group_contact_ids\":\"[10619]\"}"
  }
}