Criação de uma Implementação (Nginx)
Você pode usar imagens para criar rapidamente uma carga de trabalho de um único pod que pode ser acessada a partir de redes públicas. Esta seção descreve como usar o CCE para implantar rapidamente uma aplicação de Nginx e gerenciar seu ciclo de vida.
Pré-requisitos
Você criou um cluster do CCE que contém um nó com 4 vCPUs e 8 GiB de memória. O nó é vinculado a um EIP.
Um cluster é um grupo lógico de servidores em nuvem que executam cargas de trabalho. Cada servidor de nuvem é um nó no cluster.
Para obter detalhes sobre como criar um cluster, consulte Criação um cluster do Kubernetes.
Visão geral do Nginx
Nginx é um servidor Web leve. No CCE, você pode configurar rapidamente um servidor Web Nginx.
Esta seção usa a aplicação de Nginx como um exemplo para descrever como criar uma carga de trabalho. A criação leva cerca de 5 minutos.
Depois que o Nginx for criado com sucesso, você poderá acessar a página da Web do Nginx.
Criar Nginx no console
A seguir está o procedimento para criar uma carga de trabalho em contêiner a partir de uma imagem de contêiner.
- Efetue logon no console do CCE.
- Escolha o cluster de destino.
- No painel de navegação, escolha Workloads. Em seguida, clique em Create Workload.
- Configure os seguintes parâmetros e mantenha o valor padrão para outros parâmetros:
Basic Info
- Workload Type: selecione Deployment.
- Workload Name: defina-o para nginx.
- Namespace: selecione default.
- Pods: defina a quantidade de pods para 1.
Container Settings
Na área Basic Info de Container Information, clique em Select Image. Na caixa de diálogo exibida, selecione Open Source Images, pesquise por nginx e selecione a imagem nginx.
Figura 2 Selecionar a imagem de nginx
Service Settings
Clique no sinal de mais (+) para criar um serviço para acessar a carga de trabalho de uma rede externa. Neste exemplo, crie um Serviço LoadBalancer. Configure os seguintes parâmetros:
- Service Name: nome do Serviço exposto a redes externas. Neste exemplo, o nome do Serviço é nginx.
- Access Type: selecione LoadBalancer.
- Service Affinity: mantenha o valor padrão.
- Load Balancer: se um balanceador de carga estiver disponível, selecione um balanceador de carga existente. Caso contrário, selecione Auto create para criar um.
- Port:
- Protocol: selecione TCP.
- Service Port: defina esse parâmetro como 8080, que é mapeado para a porta do contêiner.
- Container Port: porta na qual a aplicação escuta. Para contêineres criados usando a imagem de nginx, defina esse parâmetro como 80. Para outras aplicações, defina este parâmetro para a porta da aplicação.
Figura 3 Criar um Serviço
- Clique em Create Workload.
Aguarde até que a carga de trabalho seja criada.
A Implementação criada será exibida na guia Deployments.
Figura 4 Carga de trabalho criada com sucesso
Acessar o Nginx
- Obtenha o endereço de acesso externo do Nginx.
Clique na carga de trabalho do Nginx para entrar na página de detalhes. Na guia Access Mode, veja o endereço IP do Nginx. O endereço IP público é o endereço de acesso externo.Figura 5 Obtenção do endereço de acesso externo
- Digite o endereço de acesso externo na caixa de endereço de um navegador. O seguinte mostra a página de boas-vindas se você acessar com êxito a carga de trabalho.
Figura 6 Acessar o Nginx
Criar o Nginx usando o kubectl
Esta seção descreve como usar o kubectl para criar uma Implementação e expor a Implementação na Internet por meio de um Serviço LoadBalancer.
- Use o kubectl para se conectar ao cluster. Para obter detalhes, consulte Conexão a um cluster usando o kubectl.
- Crie um arquivo de descrição chamado nginx-deployment.yaml. nginx-deployment.yaml é um nome de arquivo de exemplo. Você pode renomeá-lo conforme necessário.
vi nginx-deployment.yaml
apiVersion: apps/v1 kind: Deployment metadata: name: nginx spec: replicas: 1 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - image: nginx:alpine name: nginx imagePullSecrets: - name: default-secret
- Crie uma Implantação.
kubectl create -f nginx-deployment.yaml
Se as seguintes informações forem exibidas, a Implementação está sendo criada.
deployment "nginx" created
Verifique a Implementação.
kubectl get deployment
Se as informações a seguir forem exibidas, a Implementação está sendo executada.
NAME READY UP-TO-DATE AVAILABLE AGE nginx 1/1 1 1 4m5s
Descrição do parâmetro
- NAME: especifica o nome de uma carga de trabalho.
- READY: indica o número de pods disponíveis/pods esperados para a carga de trabalho.
- UP-TO-DATE: indica o número de réplicas que foram atualizadas.
- AVAILABLE: indica o número de pods disponíveis.
- AGE: indica o período de execução da Implementação.
- Crie um arquivo de descrição chamado nginx-elb-svc.yaml. Altere o valor do selector para matchLabels (app: nginx neste exemplo) no arquivo nginx-deployment.yaml para associar o Serviço à aplicação de back-end.
Para obter detalhes sobre os parâmetros no exemplo a seguir, consulte Uso do kubectl para criar um Serviço(Criação automática de um balanceador de carga).
apiVersion: v1 kind: Service metadata: annotations: kubernetes.io/elb.class: union kubernetes.io/elb.autocreate: '{ "type": "public", "bandwidth_name": "cce-bandwidth", "bandwidth_chargemode": "bandwidth", "bandwidth_size": 5, "bandwidth_sharetype": "PER", "eip_type": "5_bgp" }' labels: app: nginx name: nginx spec: ports: - name: service0 port: 80 protocol: TCP targetPort: 80 selector: app: nginx type: LoadBalancer
- Crie um Serviço.
kubectl create -f nginx-elb-svc.yaml
Se informações semelhantes às seguintes forem exibidas, o Serviço foi criado.
service/nginx created
kubectl get svc
Se informações semelhantes às seguintes forem exibidas, o tipo de acesso foi configurado e a carga de trabalho está acessível.
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.247.0.1 <none> 443/TCP 3d nginx LoadBalancer 10.247.130.196 10.78.42.242 80:31540/TCP 51s
- Digite o URL (por exemplo, 10.78.42.242:80) na caixa de endereço de um navegador. 10.78.42.242 indica o endereço IP do balanceador de carga e 80 indica a porta de acesso exibida no console do CCE.
Nginx é acessível.
Figura 7 Acessar o Nginx através do Serviço LoadBalancer