Este tópico descreve como implantar uma carga de trabalho em um cluster ACK Auto Mode e expô-la à internet por meio de um ALB Ingress. Após a conclusão destas etapas, será possível acessar a aplicação usando um nome de domínio específico, garantindo gerenciamento eficiente do tráfego externo e balanceamento de carga.
Este tópico aborda as seguintes operações:
Crie um namespace para a aplicação de exemplo.
Implante uma aplicação Nginx de exemplo e crie um Service para expor a aplicação à rede do cluster.
Crie um ALB Ingress para expor a aplicação à internet. Crie manualmente um AlbConfig para gerenciar a instância ALB e um IngressClass para associá-lo ao AlbConfig.
Verifique se a implantação foi bem-sucedida e acesse a aplicação pelo navegador. Libere os recursos caso não sejam mais necessários.
Após concluir essas operações, você terá:
Uma aplicação Nginx de exemplo em execução com duas réplicas.
Um ponto de entrada público estável para a aplicação, fornecido por um ALB Ingress e um Service.
Redução da sobrecarga operacional, pois o ACK no Auto Mode dimensiona recursos automaticamente e gerencia o ciclo de vida dos nós com base na carga da aplicação.
Pré-requisitos
Etapa 1: Criar um namespace
Crie um namespace para isolar os recursos deste tutorial.
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 Namespaces and Quotas.
Clique em Create. Na caixa de diálogo exibida, insira um nome de namespace personalizado (este tópico usa my-nginx-namespace como exemplo), configure outras definições conforme solicitado na página e clique em OK.
Etapa 2: Implantar a aplicação Nginx e o Service
Nesta seção, implante um Deployment Nginx de exemplo chamado my-nginx e um Service chamado my-nginx-svc para expor a aplicação.
Deployment: 2 réplicas. A imagem utiliza uma aplicação Nginx de exemplo. A porta 80 fica exposta para receber tráfego HTTP.
Service: O tipo de Service é ClusterIP. A porta 80 do Service mapeia para a porta 80 do contêiner do pod. O Service usa um seletor de rótulos para corresponder aos pods.
Esta seção fornece apenas um procedimento de exemplo. Para obter procedimentos detalhados sobre a criação de cargas de trabalho e Services, consulte Criar uma carga de trabalho e Gerenciamento de Service .
-
Crie um arquivo chamado my-nginx.yaml com o seguinte conteúdo para implantar o Deployment e o Service.
apiVersion: apps/v1 kind: Deployment metadata: name: my-nginx # The name of the sample application. namespace: my-nginx-namespace # Replace with the name of the namespace that you created. labels: app: nginx spec: replicas: 2 # The number of replicas. selector: matchLabels: app: nginx # The value must match the selector in the Service to expose this application. template: metadata: labels: app: nginx spec: # nodeSelector: # env: test-team containers: - name: nginx image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6 ports: - containerPort: 80 # This port must be exposed in the Service. --- apiVersion: v1 kind: Service metadata: labels: app: nginx name: my-nginx-svc namespace: my-nginx-namespace # Replace with the name of the namespace that you created. spec: ports: - port: 80 protocol: TCP targetPort: 80 selector: app: nginx type: ClusterIP # If you use Flannel, you must use NodePort. -
Implante o Deployment e o Service.
kubectl apply -f my-nginx.yaml -
Verifique o status do Deployment e do Service.
-
Verifique o status do Deployment.
kubectl get deployment my-nginx -n my-nginx-namespaceSaída esperada:
NAME READY UP-TO-DATE AVAILABLE AGE my-nginx 2/2 2 2 4m36s -
Verifique o status do Service.
kubectl get svc my-nginx-svc -n my-nginx-namespaceSaída esperada:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE my-nginx-svc ClusterIP 192.XX.XX.164 <none> 80/TCP 42s
-
Etapa 3: Criar um ALB Ingress e recursos relacionados
Para gerenciar o tráfego externo que acessa aplicações no cluster usando um ALB Ingress, prepare os seguintes recursos.
Antes de criar um ALB Ingress, recomendamos conhecer seus princípios e requisitos em Gerenciamento de ALB Ingress .
ALB Ingress Controller: componente que gerencia recursos de Ingress. Ao ativar o Auto Mode para um cluster, o ALB Ingress Controller é instalado por padrão.
AlbConfig: CustomResourceDefinition (CRD) criado pelo ALB Ingress Controller para declarar a configuração de uma instância ALB. Cada AlbConfig corresponde a uma instância ALB. Uma instância ALB atua como ponto de entrada para solicitações de usuários e encaminha essas solicitações para Services de backend.
IngressClass: Ao criar um ALB Ingress, especifique este IngressClass para referenciar o AlbConfig correspondente. Isso permite aplicar configurações específicas de roteamento de aplicação e políticas de balanceamento de carga.
Criar um AlbConfig
-
Crie um arquivo chamado alb.yaml com o seguinte conteúdo para criar um AlbConfig.
Este AlbConfig define o
addressTypecomoInternet. Isso significa que a instância ALB recebe um endereço IP público, seu nome de domínio DNS resolve para o endereço IP público e a instância fica acessível pela internet.-
Para
vSwitchId, insira os IDs de dois vSwitches de duas zonas diferentes. Os vSwitches devem estar na mesma VPC do cluster e em zonas compatíveis com o ALB.No VPC console , obtenha o ID do vSwitch na página vSwitch . Se precisar criar um vSwitch, consulte Criar e gerenciar vSwitches .
apiVersion: alibabacloud.com/v1 kind: AlbConfig metadata: name: alb spec: config: name: alb addressType: Internet # The address type of the load balancer. An Internet-facing ALB instance is accessible over the internet. zoneMappings: - vSwitchId: vsw-uf6ccg2a9g71hx8go**** # Replace with the ID of your vSwitch. - vSwitchId: vsw-uf6nun9tql5t8nh15**** # Replace with the ID of your vSwitch. listeners: - port: 80 protocol: HTTP -
Crie o AlbConfig.
kubectl apply -f alb.yaml -
Visualize o recurso AlbConfig.
kubectl get AlbConfig albSaída esperada:
NAME ALBID DNSNAME PORT&PROTOCOL CERTID AGE alb alb-****** alb-******.<regionID>.alb.aliyuncs.com 60sNotaOs campos
PORT&PROTOCOLeCERTIDsão preenchidos somente após a criação de um listener HTTPS e a configuração de um certificado para ele. É normal que esses campos estejam vazios inicialmente.
Criar um IngressClass
-
Crie um arquivo chamado ingress_class.yaml com o seguinte conteúdo para criar um IngressClass.
apiVersion: networking.k8s.io/v1 kind: IngressClass metadata: name: alb spec: controller: ingress.k8s.alibabacloud/alb parameters: apiGroup: alibabacloud.com kind: AlbConfig name: alb # The name of the AlbConfig associated with the IngressClass. -
Crie o IngressClass.
kubectl apply -f ingress_class.yaml
Criar um ALB Ingress
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 .
-
Na página Ingresses, selecione o namespace criado e clique em Create Ingress. Na caixa de diálogo Create Ingress, configure o Ingress e siga as instruções na tela para criá-lo.
A tabela a seguir descreve apenas os parâmetros principais. Para obter mais informações sobre os parâmetros e operações relacionadas, como configurar resolução de DNS, consulte Criar um ALB Ingress.
Parâmetro
Descrição
Gateway Type
Selecione ALB Ingress.
Name
Insira um nome personalizado para o Ingress, como my-albingress.
IngressClass
Selecione o IngressClass criado para referenciar o AlbConfig correspondente.
Rules
-
Name: Selecione o Service de destino, que é o Service criado anteriormente.
-
Port: Selecione a porta que deseja expor para o Service, que é 80 neste exemplo.
Mantenha os valores padrão para os outros parâmetros.
Após a criação do Ingress, retorne à página Ingresses. Após cerca de um minuto, localize e copie o nome DNS na coluna Endpoint.
-
Etapa 4: Acessar a aplicação
Cole o nome DNS no navegador para acessar a aplicação Nginx.
O navegador exibirá a página inicial padrão do Nginx com o título Welcome to nginx on Anolis OS! Isso indica que o servidor web está em execução conforme esperado e que a configuração do ALB Ingress funciona corretamente.
(Opcional) Etapa 5: Limpar recursos
Os recursos criados neste tópico incluem um Deployment, um Service, um AlbConfig, um IngressClass e um ALB Ingress. Execute os comandos a seguir para limpar os recursos.
Substitua os nomes de exemplo nos comandos a seguir pelos nomes reais dos seus recursos.
kubectl delete deployment my-nginx -n my-nginx-namespace
kubectl delete service my-nginx-svc -n my-nginx-namespace
kubectl delete ingress my-albingress -n my-nginx-namespace
kubectl delete albconfig alb
kubectl delete ingressclass alb
Documentos relacionados
Para obter mais informações sobre os parâmetros de criação de carga de trabalho, consulte Criar uma carga de trabalho. Para recomendações de configuração, consulte Configurações recomendadas de carga de trabalho.
Ao usar um listener HTTPS, configure um certificado SSL/TLS. Para obter mais informações sobre os métodos de configuração de certificados compatíveis com o ALB Ingress, consulte Configurar um certificado HTTPS para habilitar comunicação criptografada.
Configure um recurso AlbConfig para personalizar a configuração de uma instância ALB. Para obter mais informações, consulte Dicionário de configuração do ALB Ingress.