Container Service for Kubernetes (ACK) oferece add-ons que ampliam as capacidades do cluster. Especifique-os durante a criação do cluster e gerencie seu ciclo de vida posteriormente com o Terraform.
Tipos de add-ons
Os add-ons do ACK dividem-se em add-ons de sistema e add-ons opcionais. Consulte Add-ons.
Add-ons de sistema
Add-ons de sistema são serviços fundamentais instalados por padrão na criação do cluster.
Exemplos:
kube-apiserver
kube-controller-manager
cloud-controller-manager
kube-proxy
CoreDNS
Add-ons opcionais
Add-ons opcionais não são obrigatórios, mas estendem as funcionalidades do cluster quando instalados. Eles se organizam nas seguintes categorias:
Gerenciamento de aplicações
Logs e monitoramento
Armazenamento
Rede
Segurança
Gere parâmetros de configuração do Terraform pelo console
O console do ACK gera automaticamente a configuração do Terraform para gerenciar add-ons do cluster.
Faça login no ACK console. No painel de navegação à esquerda, clique em Clusters.
Na página Clusters, clique no nome do seu cluster. No painel de navegação à esquerda, clique em Components and Add-ons .
Na página Add-ons, localize o add-on desejado e clique em Install ou Configuration.
Na caixa de diálogo, clique em Console-to-Code. Clique na aba Terraform e copie a configuração exibida.
Melhores práticas para gerenciamento de add-ons
Especifique os add-ons na criação do cluster e gerencie seu ciclo de vida posteriormente. As seções a seguir abordam o gerenciamento do ciclo de vida e as melhores práticas para diferentes cenários.
Especifique add-ons na criação do cluster
Os recursos do Terraform abaixo correspondem aos diferentes tipos de cluster:
Cluster gerenciado ACK: alicloud_cs_managed_kubernetes
Cluster dedicado ACK: alicloud_cs_kubernetes
Cluster ACK Edge: alicloud_cs_edge_kubernetes
Cluster ACK Serverless: alicloud_cs_serverless_kubernetes
Defina o objeto addons no Resource para especificar os add-ons. O bloco de código a seguir mostra os atributos do objeto 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
}
}
O objeto addons aplica-se apenas à criação do cluster. Não é possível modificá-lo posteriormente para atualizar, desinstalar ou reconfigurar add-ons. Consulte Manage add-ons after cluster creation.
A tabela a seguir lista os add-ons configuráveis com o Terraform.
|
Add-on |
Tipo de add-on |
Descrição |
Como configurar com o Terraform |
|
appcenter |
Gerenciamento de aplicações |
Gerencia centralmente implantações e ciclos de vida de aplicações em vários clusters. |
|
|
progressive-delivery-tool |
Gerenciamento de aplicações |
Permite liberações graduais de aplicações. |
|
|
alicloud-monitor-controller |
Logs e monitoramento |
Habilita a integração com o CloudMonitor. |
|
|
metrics-server |
Logs e monitoramento |
Coleta métricas de recursos com base no Metrics Server open source. Fornece a Metrics API e suporta Horizontal Pod Autoscaler (HPA). |
|
|
ack-node-problem-detector |
Logs e monitoramento |
Monitora a integridade dos nós com base no Node Problem Detector (NPD) open source. Conecta-se a plataformas de monitoramento de terceiros. |
|
|
ags-metrics-collector |
Logs e monitoramento |
Monitora o uso de recursos por nó em fluxos de trabalho do Alibaba Cloud Genomics Service (AGS). |
|
|
ack-arms-prometheus |
Logs e monitoramento |
Monitora clusters ACK usando o Managed Service for Prometheus. |
|
|
loongcollector |
Logs e monitoramento |
Coleta logs de contêineres usando o Log Service. |
|
|
csi-plugin |
Armazenamento |
Monta e desmonta volumes. Instalado automaticamente quando o CSI é selecionado na criação do cluster. |
|
|
csi-provisioner |
Armazenamento |
Automatiza o provisionamento de volumes. Instalado automaticamente quando o CSI é selecionado na criação do cluster. |
|
|
storage-operator |
Armazenamento |
Gerencia o ciclo de vida dos add-ons de volume. |
|
|
alicloud-disk-controller |
Armazenamento |
Automatiza o provisionamento de volumes de disco. |
|
|
flexvolume |
Armazenamento |
Mecanismo inicial de extensão de volumes de armazenamento desenvolvido pela comunidade Kubernetes. Monta e desmonta volumes. Instalado automaticamente quando o FlexVolume é selecionado na criação do cluster. |
|
|
nginx-ingress-controller |
Rede |
Analisa regras de roteamento de Ingress e encaminha requisições correspondentes para Services de backend. |
|
|
terway-eniip |
Rede |
Add-on CNI da Alibaba Cloud compatível com VPC e políticas de rede padrão do Kubernetes. Estabelece conectividade de rede dentro dos clusters. Instalado automaticamente quando o Terway é selecionado na criação do cluster. |
|
|
ack-node-local-dns |
Rede |
Solução de cache de DNS local desenvolvida com base no projeto open source NodeLocal DNSCache. |
|
|
aliyun-acr-credential-helper |
Segurança |
Faz pull de imagens privadas sem senha do Container Registry Enterprise Edition e Personal Edition. |
|
|
gatekeeper |
Segurança |
Gerencia e aplica políticas OPA em clusters ACK e administra rótulos de namespace. |
|
|
kritis-validation-hook |
Segurança |
Verifica assinaturas de imagens. |
|
|
security-inspector |
Segurança |
Executa inspeções de segurança. |
|
|
ack-kubernetes-webhook-injector |
Segurança |
Gerencia dinamicamente endereços IP de pods nas listas de permissões de serviços da Alibaba Cloud. |
|
|
ack-arena |
Outros |
Instala o Arena open source no console do ACK. |
|
|
ack-cost-exporter |
Outros |
Habilita o processamento de dados para análise de custos. |
|
|
ack-kubernetes-cronhpa-controller |
Outros |
Dimensiona workloads conforme uma programação. |
|
|
ack-virtual-node |
Outros |
Baseado no Virtual Kubelet open source com suporte ao Aliyun Provider. Permite integração perfeita entre Kubernetes e Elastic Container Instance. |
|
|
aesm |
Outros |
Add-on de sistema Intel SGX que fornece suporte de lançamento para SGX Enclave, incluindo serviços como provisionamento de chaves e atestação remota. |
|
|
aliyun-acr-acceleration-suite |
Outros |
Habilita o carregamento de imagens sob demanda. Implantado como DaemonSet nos nós worker. |
|
|
migrate-controller |
Outros |
Migra aplicações Kubernetes com base no Velero open source. |
|
|
resource-controller |
Outros |
Controla dinamicamente recursos de pods. Necessário para agendamento de CPU com reconhecimento de topologia em clusters ACK Pro. |
|
|
sandboxed-container-controller |
Outros |
Aprimora e estende recursos de contêineres sandbox no runtime Sandboxed-Container. |
|
|
sandboxed-container-helper |
Outros |
Executa verificações de integridade e operações de O&M em contêineres sandbox. |
|
|
sgx-device-plugin |
Outros |
Simplifica o uso do Intel SGX em contêineres. Desenvolvido pela equipe do ACK e Ant Group. |
|
Gerencie add-ons após a criação do cluster
Certifique-se de ter um cluster ACK antes de gerenciar o ciclo de vida dos add-ons.
Use o recurso alicloud_cs_kubernetes_addon para instalar, atualizar, desinstalar e configurar add-ons. O bloco de código a seguir exibe os atributos do 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(
{
....
}
)
}
Você também pode especificar parâmetros personalizados diretamente em uma string JSON. Atenção ao escape de caracteres. Por exemplo, configure o nginx-ingress-controller usando qualquer um dos métodos:
-
Use
jsonencodepara configurar parâmetros personalizados:config = jsonencode( { IngressSlbNetworkType="internet" IngressSlbSpec="slb.s2.small" } ) -
Especifique os parâmetros personalizados diretamente em uma string JSON:
config = "{\"IngressSlbNetworkType\":\"internet\",\"IngressSlbSpec\":\"slb.s2.small\"}"
Importe add-ons instalados para o Terraform
Use terraform import para importar add-ons do cluster para gerenciamento via Terraform. O exemplo a seguir usa o nginx-ingress-controller.
-
Crie um arquivo .tf e defina um Resource. Se já tiver um arquivo .tf, defina o Resource nele.
O recurso
alicloud_cs_kubernetes_addongerencia os add-ons do cluster. Deixe-o vazio inicialmente.resource "alicloud_cs_kubernetes_addon" "nginx-ingress-controller" { } -
Importe o nginx-ingress-controller:
O Terraform extrai a configuração do nginx-ingress-controller do cluster para o arquivo .state.
terraform import alicloud_cs_kubernetes_addon.nginx-ingress-controller <cluster_id>:nginx-ingress-controller -
Execute
terraform plan. A saída mostra a diferença de configuração entre o nginx-ingress-controller e o Resource.Atualize o Resource da Step 1 com base no diff e no arquivo .state. Quando o
terraform plannão mostrar diferenças, a importação estará concluída.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" } ) }
Instale add-ons de cluster
Use o recurso alicloud_cs_kubernetes_addon para instalar add-ons. O exemplo a seguir usa o Gatekeeper.
-
Especifique o add-on no seu arquivo .tf:
ID do cluster.
-
Nome e versão do add-on:
Consulte add-ons e versões instaláveis com o Data Source
alicloud_cs_kubernetes_addons. Apenas a versão mais recente é exibida; para versões anteriores, verifique as notas de lançamento do add-on. -
(Opcional) Configuração personalizada do add-on:
Personalize o campo
configcomjsonencode. Consulte os parâmetros suportados com o Data Sourcealicloud_cs_kubernetes_addon_metadata. Consulte Customize add-on parameters.
-
Instale o add-on:
terraform applySaída esperada:
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.Quando
Apply complete!aparecer, o add-on estará instalado.
Atualize add-ons de cluster
Consulte as versões disponíveis com o Data Source alicloud_cs_kubernetes_addons e altere o número da versão para atualizar. O exemplo a seguir usa o Gatekeeper.
Execute terraform apply para atualizar o add-on. A mensagem Apply complete! indica que a atualização foi bem-sucedida.
Personalize parâmetros de add-ons
Modifique o campo config em alicloud_cs_kubernetes_addons para personalizar a configuração do add-on. O exemplo a seguir usa o Gatekeeper.
Consulte os parâmetros personalizados suportados com o Data Source alicloud_cs_kubernetes_addon_metadata, que retorna um schema JSON. Por exemplo, para consultar os parâmetros do Gatekeeper, adicione o seguinte ao seu arquivo .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
}
Execute terraform apply. O resultado é um schema JSON em que o atributo properties lista todos os parâmetros personalizados suportados:
default: o valor padrão.
Description: a descrição do parâmetro.
pattern: uma expressão regular para valores válidos.
type: o tipo de dado.
Configure add-ons de rede
Clusters ACK usam o Terway para rede de contêineres. Consulte Overview.
O exemplo a seguir configura um add-on de rede com o Terraform:
Configure add-ons de volume
O ACK fornece add-ons de volume FlexVolume e CSI. O FlexVolume foi descontinuado; use o CSI. Se nenhum add-on de armazenamento for especificado na criação do cluster, o CSI será instalado por padrão.
Configure add-ons de log
O add-on de coleta de logs do ACK armazena logs no Simple Log Service (SLS) usando um dos dois métodos:
Use um projeto SLS existente.
Permita que o ACK crie automaticamente um projeto SLS durante a criação do cluster.
O exemplo a seguir configura o loongcollector com o Terraform com base na sua escolha de projeto do Log Service:
Configure add-ons de monitoramento
O ACK oferece o agente do CloudMonitor para nós ECS e o add-on Managed Service for Prometheus. Configure o parâmetro install_cloud_monitor com o Terraform para instalar o agente do CloudMonitor.
Configure add-ons de Ingress
O ACK disponibiliza o nginx-ingress-controller e o alb-ingress-controller para rotear tráfego para aplicações.
nginx-ingress-controller: Baseado no ingress-nginx open source. Oferece roteamento flexível e confiável. Consulte Overview of NGINX Ingresses.
alb-ingress-controller: Gerenciado pelo ACK. Oferece roteamento flexível e confiável. Consulte Access Services by using an ALB Ingress.
O exemplo a seguir configura add-ons de Ingress com o Terraform:
Desative a instalação padrão de add-ons
O ACK instala add-ons padrão durante a criação do cluster. Para impedir a instalação de um add-on específico, defina disabled = true. O exemplo a seguir desativa o 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
}
}
Add-ons instalados por padrão
Sem uma configuração explícita de addons, o sistema instala os seguintes add-ons:
|
Tipo de cluster |
Tipo de add-on |
Nome do add-on padrão instalado |
Descrição |
|
|
Cluster ACK |
Add-ons de sistema |
kube-scheduler |
Agenda recursos do cluster. |
|
|
cloud-controller-manager |
Cria instâncias SLB e gerencia entradas de rota de nós. |
|||
|
kube-apiserver |
Barramento e gateway de Ingress de um cluster ACK. |
|||
|
kube-controller-manager |
Gerenciador interno de recursos do cluster. |
|||
|
Add-ons de logs e monitoramento |
alicloud-monitor-controller |
Monitora ciclos de vida e status de contêineres. |
||
|
metrics-server |
Coleta métricas de recursos de contêineres para dimensionamento automático. |
|||
|
Add-ons de volume |
csi-plugin |
Gerencia o ciclo de vida de volumes. Este add-on é recomendado. |
||
|
csi-provisioner |
Cria e exclui volumes. Este add-on é recomendado. |
|||
|
storage-operator |
Gerencia o ciclo de vida dos add-ons de armazenamento. Este add-on é recomendado. |
|||
|
Add-ons de rede |
CoreDNS |
Atua como servidor DNS para um cluster Kubernetes. |
||
|
Gateway API |
Modelo de recurso de gateway. |
|||
|
terway-eniip |
Add-on de rede Terway. |
|||
|
nginx-ingress-controller (a edição Pro é instalada por padrão) |
Analisa regras de encaminhamento de tráfego NGINX Ingress. |
|||
|
Cluster ACK Serverless |
Add-ons de sistema |
kube-scheduler |
Agenda recursos do cluster. |
|
|
ack-virtual-node |
Dimensiona recursos com nós virtuais e elastic container instances. |
|||
|
cloud-controller-manager |
Cria instâncias SLB e gerencia entradas de rota de nós. |
|||
|
kube-apiserver |
Barramento e gateway de Ingress de um cluster ACK. |
|||
|
kube-controller-manager |
Gerenciador interno de recursos do cluster. |
|||
|
Add-ons de rede |
CoreDNS |
Atua como servidor DNS para um cluster Kubernetes. |
||
|
Cluster ACK Edge |
Add-ons de sistema |
kube-scheduler |
Agenda recursos do cluster. |
|
|
cloud-controller-manager |
Cria instâncias SLB e gerencia entradas de rota de nós. |
|||
|
kube-apiserver |
Barramento e gateway de Ingress de um cluster ACK. |
|||
|
kube-controller-manager |
Gerenciador interno de recursos do cluster. |
|||
|
Add-ons de logs e monitoramento |
alicloud-monitor-controller |
Monitora ciclos de vida e status de contêineres. |
||
|
metrics-server |
Coleta métricas de uso de recursos de contêineres para o mecanismo de dimensionamento automático. |
|||
|
Add-ons de rede |
CoreDNS |
Atua como servidor DNS para um cluster Kubernetes. |
||
|
terway-eniip |
Add-on de rede Terway. |
|||
|
Outros |
edge-controller-manager |
- |
||
|
edge-tunnel-agent |
Cria túneis reversos de O&M para colaboração cloud-edge usando arquitetura C/S. |
|||
|
edge-tunnel-server |
Cria túneis reversos de O&M para colaboração cloud-edge usando arquitetura C/S. |
|||
|
yurt-app-manager |
Fornece pools de nós e implantação baseada em células para clusters ACK Edge. |
|||
Exemplos comuns de configuração
Os exemplos a seguir abrangem configurações comuns de add-ons.
Use o Terway como add-on de rede.
Use CSI (recomendado) ou FlexVolume. O FlexVolume está descontinuado.
Escolha entre nginx-ingress-controller ou alb-ingress-controller conforme suas necessidades.
Selecione outros add-ons de acordo com seus requisitos.