Observação:

Introdução a clusters do Kubernetes baseados em arquitetura Arm no Oracle Cloud Infrastructure

Este tutorial explica como criar clusters do Kubernetes baseados em arquitetura Arm que usam a plataforma de computação Ampere A1 no Oracle Cloud Infrastructure(OCI). Você também implantará o popular contêiner web, o Apache Tomcat no cluster kubernetes. Usando os métodos deste tutorial, você pode criar implantações de aplicativo perfeitamente portáveis entre os clusters kubernetes baseados em Arm e os clusters baseados em x86(Intel e AMD).

Introdução

Objetivos

Neste tutorial, você vai:

O que é a Plataforma de Computação A1 Ampere

A plataforma de computação Ampere A1 baseada em CPUs Ampere Altra representa uma mudança geracional para empresas e desenvolvedores de aplicativos que estão criando cargas de trabalho que podem ser dimensionadas de dispositivos de borda para data centers em nuvem. O design exclusivo dessa plataforma oferece desempenho consistente e previsível, pois não há conflito de recursos em um núcleo de computação e oferece mais isolamento e segurança. Esta nova classe de configurações de computação no Oracle Cloud Infrastructure oferece uma plataforma incomparável que combina o poder das CPUs Altra com a segurança, a escalabilidade e o ecossistema de serviços no OCI.

Apresentando a Arquitetura Arm para seu Ambiente

Ao introduzir a arquitetura Arm no processo de desenvolvimento de aplicativos, seus workflows de desenvolvimento permanecem os mesmos na maioria dos casos. As ferramentas e o processo que você usa no momento serão carregados sem problemas, e a configuração da estação de trabalho de desenvolvimento permanecerá a mesma. A exceção geral a isso são aplicativos de sistema de baixo nível que direcionam recursos específicos da CPU usando ferramentas altamente especializadas. Na maioria dos casos, você pode esperar pequenas alterações nas etapas de criação ou empacotamento em seu workflow, para suportar a arquitetura Arm. Comece analisando seu workflow existente para identificar se você tem alguma etapa de criação ou empacotamento específica da plataforma.

Criar um Cluster Kubernetes Baseado em Arm

O Container Engine for Kubernetes é fácil de começar a usar e, combinado com o OCI Cloud Shell, você pode ter controle total sem precisar configurar um ambiente local. Para começar, crie um novo cluster do Kubernetes no OCI.

  1. No menu de navegação da Console do Oracle Cloud, vá para Serviços do Desenvolvedor e clique em Clusters do Kubernetes.

  2. Clique em Criar Cluster. Você pode usar a opção Criação Rápida para usar valores padrão ou a opção Criação Personalizada para especificar configurações avançadas. Aqui, usamos a Criação Rápida porque os padrões que ela escolhe são um ótimo começo.

    Descrição da ilustração create cluster

  3. Na página Criar Cluster, escolha algumas opções de configuração básicas, como a versão do Kubernetes que você deseja executar e o número e a forma dos nós do cluster. Para este tutorial, escolha a forma Ampere A1 para os nós.

    Observação Escolha a forma VM.Standard.A1.Flex para os nós, conforme mostrado.

    Descrição do workflow de criação da ilustração

    Você também pode especificar um nome e um compartimento para o cluster. O tipo de visibilidade indica se os nós do cluster podem ser acessados pela internet, por exemplo, por meio de SSH. É mais comum mantê-los em uma rede privada e usar bastion ou jump hosts na rede pública para fornecer caminhos de acesso. Aqui escolhemos o padrão de manter os nós privados.

  4. Clique em Criar Cluster e o workflow começa a criar todos os recursos necessários e o próprio cluster.

    Depois que os recursos de suporte forem criados, a página de detalhes do cluster será exibida. Em alguns minutos, o cluster é criado e ativado.

  5. Depois que o status do cluster for Ativo, clique no botão Acessar Cluster para ver as maneiras de acessar o cluster.

  6. Escolha a opção Cloud Shell. O Cloud Shell é um ambiente de terminal on-line completo, integrado à Console. O Cloud Shell tem todas as ferramentas necessárias para interagir com seu cluster do Kubernetes e é a maneira mais rápida de começar sem configurar um ambiente de desenvolvimento local.

    Descrição da ilustração access cloudshell

    Você pode iniciar o Cloud Shell diretamente da página. Observe que o acesso ao Cloud Shell também está disponível na parte superior da Console sempre, para acesso rápido.

    A página também inclui um comando a ser executado no Cloud Shell. Este comando usa a CLI do OCI para criar o arquivo kubeconfig. Os clientes Kubernetes, como kubectl, podem trabalhar com um arquivo de configuração que facilita o acesso ao cluster. Esse arquivo geralmente é chamado de arquivo kubeconfig. Geralmente, esse arquivo de configuração reside em ~/.kube. Um único arquivo de configuração pode conter configuração de acesso para vários clusters.

    Observação A CLI do OCI já está instalada e configurada para você no ambiente do Cloud Shell.

  7. Inicie o Cloud Shell e copie o comando e cole-o no Cloud Shell para executá-lo. O cliente de linha de comando padrão para o Kubernetes é o kubectl e é pré-instalado no ambiente do Cloud Shell.

    Agora, vamos verificar se podemos interagir com o cluster e ver os nós do cluster.

  8. Copie o comando a seguir para o Cloud Shell e execute-o.

    kubectl get nodes -o wide
    

    Você deverá ver uma saída semelhante ao exemplo a seguir, dependendo do número de nós no cluster. Observe que a versão do kernel mostra que estamos executando o Oracle Linux para a arquitetura aarch64 (Arm 64 bits).

    NAME          STATUS                     ROLES   AGE    VERSION   INTERNAL-IP   EXTERNAL-IP   OS-IMAGE                  KERNEL-VERSION                      CONTAINER-RUNTIME
    10.0.10.229   Ready                      node    3d7h   v1.19.7   10.0.10.229   <none>        Oracle Linux Server 7.9   5.4.17-2102.200.13.el7uek.aarch64   docker://19.3.11
    10.0.10.29    Ready                      node    3d7h   v1.19.7   10.0.10.29    <none>        Oracle Linux Server 7.9   5.4.17-2102.200.13.el7uek.aarch64   docker://19.3.11
    10.0.10.87    Ready                      node    3d7h   v1.19.7   10.0.10.87    <none>        Oracle Linux Server 7.9   5.4.17-2102.200.13.el7uek.aarch64   docker://19.3.11
    

    Agora que você tem um cluster do Kubernetes totalmente funcional e configurou as ferramentas para interagir com ele, você pode implantar qualquer carga de trabalho do kubernetes nele.

Implantações Contínuas para seus Clusters do Kubernetes

Agora você pode implantar cargas de trabalho em contêineres no cluster kubernetes baseado em Arm. As imagens de contêiner são criadas para arquiteturas específicas. Ferramentas de contêiner como Docker ou Buildah fornecem os métodos para gerenciar essas imagens e sua implantação perfeitamente. Neste exemplo, você implantará o Apache Tomcat, o popular contêiner web Java no cluster kubernetes. O runtime do docker extrairá a imagem arm64v8 ao executar no Arm e a imagem amd64 ao executar nas arquiteturas x86. Isso nos permite criar manifestos de implantação de kubernetes portáteis perfeitamente desde que criemos as imagens do aplicativo para ambas as arquiteturas.

Comece criando uma arquitetura - manifesto de implantação neutro. O manifesto não deve fazer referência a contêineres específicos da arquitetura, pois o runtime do contêiner é capaz de detectar a arquitetura correta e extrair a imagem apropriada. Para criar o manifesto, execute o commend abaixo. Ele cria um novo arquivo chamado tomcat.yaml.

cat <<EOF > tomcat.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: tomcat
  labels:
    app: tomcat
spec:
  replicas: 3
  selector:
    matchLabels:
      app: tomcat
  template:
    metadata:
      labels:
        app: tomcat
    spec:
      containers:
        - name: tomcat
          image: tomcat:9
          ports:
            - containerPort: 8080
          volumeMounts:
            - name: app-volume
              mountPath: /usr/local/tomcat/webapps/
      volumes:
        - name: app-volume
          configMap:
            name: app-bundle
---
apiVersion: v1
kind: Service
metadata:
  name: tomcat
  labels:
    app: tomcat
spec:
  ports:
  - port: 80
    name: http
    targetPort: 8080
  selector:
    app: tomcat
  type: LoadBalancer
EOF

Este manifesto contém os seguintes objetos e ações:

  1. Faça download do aplicativo de amostra do Apache Tomcat e crie-o como um ConfigMap.

    wget https://tomcat.apache.org/tomcat-9.0-doc/appdev/sample/sample.war
    kubectl create configmap app-bundle --from-file sample.war
    

    Observação Esse método de montagem de um aplicativo usando ConfigMap é apenas por conveniência e não deve ser usado em aplicativos de produção.

  2. Implante o manifesto. Isso cria os objetos kubernetes, incluindo a Implantação e o Serviço. Ao criar a implantação, o runtime do docker detectará sua execução na arquitetura do braço de teh e selecionará automaticamente a variante do Arm do contêiner do Apache Tomcat. O aplicativo Java implantado no contêiner é neutro na plataforma e, portanto, o mesmo arquivo .war pode ser implantado em todas as arquiteturas.

    kubectl apply -f tomcat.yaml
    
  3. Verifique seu status de implantação

    kubectl get deploy,svc
    

    Você deve ver uma saída semelhante à seguinte

    NAME                     READY   UP-TO-DATE   AVAILABLE   AGE
    deployment.apps/tomcat   2/2     2            2           9s
    
    NAME                 TYPE           CLUSTER-IP      EXTERNAL-IP       PORT(S)        AGE
    service/kubernetes   ClusterIP      10.96.0.1       <none>            443/TCP        3d9h
    service/tomcat       LoadBalancer   10.96.120.212   <pending>   80:32547/TCP         9s
    

    Isso mostra que o Tomcat foi implantado com sucesso em nosso cluster kubernetes baseado em Arm e está atendendo a um aplicativo Web Java. O manifesto de implantação que usamos não está vinculado à arquitetura e pode ser usado para x86, bem como clusters baseados em Arm.

  4. Opcionalmente, você pode obter detalhes detalhados no nível do nó executando

    kubectl get nodes -o wide
    kubectl describe node <node_name>
    

    São exibidas informações detalhadas sobre o nó, incluindo a arquitetura e os pods programados nesse nó.

    Quando o endereço IP externo para o LoadBalancer estiver disponível (pode levar alguns minutos), você poderá visitar a implantação indicando seu web browser para http://<your_loadbalancer_ip_address>/sample

Próximas Etapas

Explore mais cargas de trabalho que você pode implantar no seu cluster kubernetes baseado em Arm visitando o repositório do hub do docker das imagens oficiais arm64v8 aqui

Mais Recursos de Aprendizagem

Explore outros laboratórios em docs.oracle.com/learn ou acesse mais conteúdo de aprendizado gratuito no canal YouTube do Oracle Learning. Além disso, visite education.oracle.com/learning-explorer para se tornar um Oracle Learning Explorer.

Para obter a documentação do produto, visite o Oracle Help Center.