Saiba mais sobre o Provisionamento de um Cluster do ARM Kubernetes no OCI e a Implantação de um Site do Nginx

Você pode provisionar um cluster do ARM Kubernetes no OCI e depois implantar um site do Nginx de forma manual ou automática usando um script Terraform. Depois de implantado, testar o site é uma questão simples de iniciá-lo em seu navegador local.

Provisionar Manualmente um Cluster do OKE com um Pool do ARM

Você pode facilmente provisionar um cluster do Kubernetes e criar um conjunto de pools heterogêneos no OCI e depois implantar um site do Nginx na console do OCI. Essa abordagem será útil se você não estiver familiarizado com a automação da infraestrutura e quiser usar a console.

Na console do OCI, faça o seguinte:
  1. Primeiro, provisione o cluster do OKE:
    1. Na seção Serviços de Desenvolvedores, selecione Clusters do Kubernetes (OKE).

      A página Criar Cluster é exibida.

    2. Selecione Criação Rápida para provisionar a infraestrutura de cluster do Kubernetes necessária de forma rápida e segura.

      Será exibida a página Criação Rápida.

    3. Selecione a forma ARM (VM.Standard.A1.Flex) para seus nós de trabalho. Essa configuração permite configurar o número de OCPUs e a quantidade de memória alocada, permitindo que você ajuste recursos (e comensuradamente o preço) de acordo com seus requisitos específicos.

      Observação:

      Se você estiver criando este cluster para um site de alta disponibilidade (HA), mantenha os recursos no mínimo. Você pode aumentar o número de nós posteriormente, se necessário.
    4. Depois que o cluster é provisionado, você pode adicionar pools adicionais com máquinas de especialidade que você pode, por sua vez, vincular a imagens específicas em seu arquivo de implantação; por exemplo, você pode configurar um pool de nós respaldados por GPU para as tarefas de ML conduzidas pelo site (por exemplo, recomendação de conteúdo ou backend de reconhecimento facial).

      Para adicionar outros pools de nós, atualize simplesmente a Forma da seção Pool de Nós na página de detalhes do Cluster:

      1. Vá para o menu Recursos.
      2. Clique em Pools de Nós e em Adicionar Novo Pool.
      3. Modifique o pool conforme necessário adicionando/alterando as formas do nó.
  2. Agora, use um arquivo de implantação para acessar o cluster e começar a implantar o ambiente Nginx:
    1. Navegue até seu cluster e clique em Acessar Cluster.

      A tela de acesso rápido é exibida. Siga as etapas 1 e 2 (conforme indicado na tela) para continuar. Se você usar o acesso ao Cloud Shell, não precisará configurar e configurar o ambiente kubectl em sua máquina. Esse processo inicia um emulador de terminal web e o configura em seu ambiente. Conforme observado na etapa 2 na tela, a colagem do comando da CLI do OCI fornecido lá configurará seu kubectl para acessar seu novo cluster.

    2. Em seguida, verifique se os pods foram provisionados; informe:

      Observação:

      Por conveniência com todos os comandos neste playbook, você pode clicar em Copiar no exemplo e colar o comando diretamente no prompt.
      kubectl get nodes -o wide
      Você deverá ver os dois nós e uma forma de máquina que indica que eles estão sendo executados no ARM; por exemplo:
      NAME        STATUS ROLES AGE     VERSION   INTERNAL-IP   EXTERNAL-IP   OS-IMAGE              KERNEL-VERSION                   CONTAINER-RUNTIME 
      10.0.10.129 Ready  node  3m57s   v.1.19.7  10.0.10.129   <none>        Oracle Linux Server   7.9 5.4.17-2102.el7uek.aarch64   docker://19.3.11 
      10.0.10.153 Ready  node  3m17s   v.1.19.7  10.0.10.153   <none>        Oracle Linux Server   7.9 5.4.17-2102.el7uek.aarch64   docker://19.3.11
      Se você precisar aumentar o número de nós, na tela Pool de Nós, clique em Dimensionar e, em Número de Nós, informe o número necessário de nós. A OCI girará e os inscreverá para você.
  3. Por fim, implante o site Nginx e o exponha por meio de um balanceador de carga:
    1. Implante uma implantação Nginx de réplica 2 com um serviço de escuta definido como porta 80; digite:
       kubectl apply -f https://k8s.io/examples/application/deployment.yaml 
    2. Verifique a implantação; informe:
      kubectl describe deployment nginx-deployment
      Você verá algo como esta saída:
      ----
      kubectl describe deployment nginx-deployment
      
      Name:                   nginx-deployment
      Namespace:              default
      CreationTimestamp:      Tue, 03 Jan 2023 17:41:27 +0000
      Labels:                 <none>
      Annotations:            deployment.kubernetes.io/revision: 1
      Selector:               app=nginx
      Replicas:               2 desired | 2 updated | 2 total | 2 available | 0 unavailable
      StrategyType:           RollingUpdate
      MinReadySeconds:        0
      RollingUpdateStrategy:  25% max unavailable, 25% max surge
      Pod Template:
        Labels:  app=nginx
        Containers:
         nginx:
          Image:        nginx:1.14.2
          Port:         80/TCP
          Host Port:    0/TCP
          Environment:  <none>
          Mounts:       <none>
        Volumes:        <none>
      Conditions:
        Type           Status  Reason
        ----           ------  ------
        Available      True    MinimumReplicasAvailable
        Progressing    True    NewReplicaSetAvailable
      OldReplicaSets:  <none>
      NewReplicaSet:   nginx-deployment-6595874d85 (2/2 replicas created)
      Events:
        Type    Reason             Age   From                   Message
        ----    ------             ----  ----                   -------
        Normal  ScalingReplicaSet  15s   deployment-controller  Scaled up replica set nginx-deployment-6595874d85 to 2
      
      ----
      
    3. Exponha o serviço à internet por meio de um balanceador de carga; digite:
      kubectl expose deployment nginx-deployment --type=LoadBalancer --name=my-service 
    4. Verifique se o balanceador de carga tem um IP público; informe:
      kubectl get services
      O OCI utilizará o balanceador de carga e designará o IP público. Após alguns instantes, você deverá ver algo como essa saída:
      NAME        TYPE          CLUSTER-IP     EXTERNAL-IP    PORT(S)              AGE 
      kubernetes  ClusterIP     10.96.0.1      <none>         443/TCP, 12250/TCP   16m 
      nginx-lb    LoadBalancer  10.96.224.64   138.2.218.135  80:30343/TCP         3m1s

Provisione e Implante um Cluster do OKE com um Pool ARM com o Ampere A1

Você pode provisionar automaticamente o cluster do OKE com um pool do ARM e depois implantar um site do Nginx usando um script Terraform fornecido em GitHub. O script provisionará um cluster com dois nós (no mesmo domínio de disponibilidade) em duas OCPUs. A etapa de configuração mostra como modificar o número de nós e OCPUs. O script provisionará o Nginx (2 pods) e o exporá por trás de um balanceador de carga.
Para provisionar o cluster e implantar um site, use este procedimento:
  1. Primeiro, você precisa configurar o cluster.
    1. Certifique-se de ter uma tenancy do OCI com um compartimento do OCI.
    2. Faça log-in na Console do OCI, abra um shell de comando e execute estes comandos:
      git clone https://github.com/badr42/OKE_A1
      cd OKE_A1
      export TF_VAR_tenancy_ocid='tenancy-ocid'
      export TF_VAR_compartment_ocid='comparment-ocid'
      export TF_VAR_region='home-region'
      <optional>
      ### Select Availability Domain, zero based, if not set it defaults to 0, 
      ### this allows you to select an AD that has available A1 chips
      export TF_VAR_AD_number='0'
      
      ### Select number of nodes
      export TF_VAR_node_count='2'
      
      ### Set OCPU count per node
      export TF_VAR_ocpu_count='2'

    Use seus valores específicos para tenancy-ocid, comparment-ocid e home-region.

  2. Crie o cluster; insira:
    terraform init
    terraform plan
    terraform apply

    Após a execução de terraform apply, aguarde cerca de 25 minutos para a inicialização do serviço.

  3. Quando o serviço for iniciado, inicie o balanceador de carga Nginx; informe:
    kubectl --kubeconfig kubeconfig get service
    Você verá algo como esta saída do sistema:
    NAME        TYPE           CLUSTER-IP      EXTERNAL-IP      PORT(S)              AGE
    kubernetes  ClusterIP      10.96.0.1       <none>           443/TCP, 12250/TCP   16m
    nginx-lb    LoadBalancer   10.96.224.64    138.2.218.135    80:30343/TCP       3m1s
  4. Quando terminar a implantação, encerre o ambiente; informe:
    terraform destroy

Testar a Implantação

Para testar sua implantação, abra um navegador da Web e informe o endereço IP público na barra de endereços. Se você implantou com sucesso a página da Web, será possível acessar sua nova página de boas-vindas do servidor Nginx.