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.
Connectez-vous à la console ACK. Dans le volet de navigation de gauche, cliquez sur Clusters.
Sur la page Clusters, cliquez sur le nom de votre cluster. Dans le volet de navigation de gauche, cliquez sur Components and Add-ons .
Sur la page Add-ons, localisez le module cible et cliquez sur Install ou Configuration.
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
}
}
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. |
|
|
progressive-delivery-tool |
Gestion des applications |
Permet des déploiements progressifs des applications. |
|
|
alicloud-monitor-controller |
Journalisation et surveillance |
Active l'intégration avec CloudMonitor. |
|
|
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). |
|
|
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. |
|
|
ags-metrics-collector |
Journalisation et surveillance |
Surveille l'utilisation des ressources par nœud dans les workflows Alibaba Cloud Genomics Service (AGS). |
|
|
ack-arms-prometheus |
Journalisation et surveillance |
Surveille les clusters ACK à l'aide de Managed Service for Prometheus. |
|
|
loongcollector |
Journalisation et surveillance |
Collecte les journaux des conteneurs via Log Service. |
|
|
csi-plugin |
Stockage |
Monte et démonte les volumes. Installé automatiquement lorsque CSI est sélectionné lors de la création du cluster. |
|
|
csi-provisioner |
Stockage |
Automatise le provisionnement des volumes. Installé automatiquement lorsque CSI est sélectionné lors de la création du cluster. |
|
|
storage-operator |
Stockage |
Gère le cycle de vie des modules complémentaires de stockage. |
|
|
alicloud-disk-controller |
Stockage |
Automatise le provisionnement des volumes de disque. |
|
|
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. |
|
|
nginx-ingress-controller |
Réseau |
Analyse les règles de routage Ingress et transfère les requêtes correspondantes vers les services backend. |
|
|
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. |
|
|
ack-node-local-dns |
Réseau |
Solution de mise en cache DNS locale développée à partir du projet open source NodeLocal DNSCache. |
|
|
aliyun-acr-credential-helper |
Sécurité |
Tire des images privées sans mot de passe depuis Container Registry Enterprise Edition et Personal Edition. |
|
|
gatekeeper |
Sécurité |
Gère et applique les politiques OPA dans les clusters ACK, et gère les libellés des namespaces. |
|
|
kritis-validation-hook |
Sécurité |
Vérifie les signatures des images. |
|
|
security-inspector |
Sécurité |
Effectue des inspections de sécurité. |
|
|
ack-kubernetes-webhook-injector |
Sécurité |
Gère dynamiquement les adresses IP des pods dans les listes d'autorisation des services Alibaba Cloud. |
|
|
ack-arena |
Autres |
Installe Arena open source depuis la console ACK. |
|
|
ack-cost-exporter |
Autres |
Active le traitement des données d'analyse des coûts. |
|
|
ack-kubernetes-cronhpa-controller |
Autres |
Met à l'échelle les charges de travail selon une planification définie. |
|
|
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. |
|
|
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. |
|
|
aliyun-acr-acceleration-suite |
Autres |
Active le chargement d'images à la demande. Déployé en tant que DaemonSet sur les nœuds de travail. |
|
|
migrate-controller |
Autres |
Migre les applications Kubernetes basées sur Velero open source. |
|
|
resource-controller |
Autres |
Contrôle dynamiquement les ressources des pods. Requis pour la planification CPU consciente de la topologie dans les clusters ACK Pro. |
|
|
sandboxed-container-controller |
Autres |
Améliore et étend les fonctionnalités des conteneurs isolés dans le runtime Sandboxed-Container. |
|
|
sandboxed-container-helper |
Autres |
Effectue des vérifications d'état et des opérations de maintenance sur les conteneurs isolés. |
|
|
sgx-device-plugin |
Autres |
Simplifie l'utilisation d'Intel SGX dans les conteneurs. Développé par l'équipe ACK et Ant Group. |
|
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
jsonencodepour 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.
-
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_addongère les modules complémentaires du cluster. Laissez-la vide initialement.resource "alicloud_cs_kubernetes_addon" "nginx-ingress-controller" { } -
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 -
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 plann'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.
-
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
configavecjsonencode. Interrogez les paramètres pris en charge avec la source de donnéesalicloud_cs_kubernetes_addon_metadata. Consultez la section Personnaliser les paramètres du module.
-
Installez le module :
terraform applySortie 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.
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.
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.
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 :
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.
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 :
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.
Configurer les modules complémentaires Ingress
ACK propose nginx-ingress-controller et alb-ingress-controller pour router le trafic vers les applications.
nginx-ingress-controller : basé sur ingress-nginx open source. Offre un routage flexible et fiable. Consultez la rubrique Présentation des Ingress NGINX.
alb-ingress-controller : géré par ACK. Offre un routage flexible et fiable. Consultez la rubrique Accéder aux services à l'aide d'un Ingress ALB.
L'exemple suivant configure les modules complémentaires Ingress avec Terraform :
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.