Observação:

Implantar Ambiente Nativo do Oracle Cloud

Introdução

O Oracle Cloud Native Environment é uma suíte totalmente integrada para o desenvolvimento e o gerenciamento de aplicativos nativos da nuvem. O módulo Kubernetes é o módulo principal. É usado para implantar e gerenciar contêineres e também instala e configura automaticamente Contêineres CRI-O, runC e Kata. O CRI-O gerencia o runtime de contêiner para um cluster do Kubernetes. O runtime pode ser Contêineres runC ou Kata.

Objetivos

Esse laboratório demonstra como:

Pré-requisitos

Os sistemas host para executar as etapas deste tutorial estão listados nesta seção. Para ser bem-sucedido, é necessário:

Configurar Ambiente de Laboratório

Observação: ao usar o ambiente de laboratório gratuito, consulte Conceitos Básicos do Oracle Linux Lab para obter conexão e outras instruções de uso.

Este laboratório envolve vários sistemas, cada um dos quais requer diferentes etapas executadas. É recomendável começar abrindo três janelas de terminais e estabelecendo conexão com os nós ocne-operator, ocne-control e ocne-worker. Isso evita a necessidade de fazer log-in e log-out repetidamente.

  1. Abra um terminal e conecte-se via ssh a cada um dos três nós.

    ssh oracle@<ip_address_of_ol_node>
    

Observação Quando uma etapa diz "(Em todos os nós)" no laboratório, execute essas ações em ocne-operator, ocne-control e ocne-worker. O motivo dessa abordagem é evitar a repetição, porque a ação necessária será idêntica em cada nó.

(Opcional) Atualizar o Oracle Linux

  1. (Em todos os nós) Certifique-se de que o Oracle Linux esteja atualizado.

    sudo dnf -y update
    

    Isso pode levar alguns minutos para ser concluído e poderá economizar tempo se essa etapa for executada em paralelo em cada nó separadamente.

  2. (Em todos os nós) Reinicialize e reconecte.

    sudo reboot
    
  3. (Em todos os nós) Após a reinicialização do sistema, reconecte-se ao(s) nó(s) via ssh.

    ssh oracle@<ip_address_of_ol_node>
    

Instalar e Ativar o Repositório Yum do Ambiente Nativo do Oracle Cloud

  1. (Em todos os nós) Instale o repositório yum.

    sudo dnf -y install oracle-olcne-release-el8
    
  2. (Em todos os nós) Ative o repositório do Ambiente Nativo do Oracle Cloud atual.

    sudo dnf config-manager --enable ol8_olcne15 ol8_addons ol8_baseos_latest ol8_appstream ol8_UEKR6
    
  3. (Em todos os nós) Desative todas as versões anteriores do repositório.

    sudo dnf config-manager --disable ol8_olcne12 ol8_olcne13 ol8_olcne14 ol8_developer
    

Instalar e Ativar o Chrony

  1. (Em todos os nós) Se ainda não estiver disponível no sistema, instale e ative o serviço crony.

    Verifique se a cronia foi instalada.

    sudo dnf list --installed chrony
    

    Se não estiver instalado, instale a cronia.

    sudo dnf -y install chrony
    sudo systemctl enable --now chronyd
    

    Observação: O ambiente de laboratório gratuito já tem o serviço crony (time) instalado e configurado.

Desativar Swap

  1. (Em todos os nós) Desative a permuta em todos os nós.

    sudo swapoff -a
    sudo sed -i '/swap/ s/^#*/#/' /etc/fstab
    

Configurar o Firewall do Oracle Linux

Observação: O serviço firewalld é instalado e executado por padrão no Oracle Linux.

  1. (Em ocne-operator) Defina as regras de firewall para o nó do operador.

    sudo firewall-cmd --add-port=8091/tcp --permanent
    sudo firewall-cmd --reload
    
  2. (Em ocne-control) Defina as regras de firewall para o(s) nó(s) do plano de controle.

    sudo firewall-cmd --zone=trusted --add-interface=cni0 --permanent
    sudo firewall-cmd --add-port=8090/tcp --permanent
    sudo firewall-cmd --add-port=10250/tcp --permanent
    sudo firewall-cmd --add-port=10255/tcp --permanent
    sudo firewall-cmd --add-port=8472/udp --permanent
    sudo firewall-cmd --add-port=6443/tcp --permanent
    sudo firewall-cmd --reload
    
  3. (Em ocne-control) Adicione o seguinte que é usado para Alta Disponibilidade e necessário para passar na validação.

    sudo firewall-cmd --add-port=10251/tcp --permanent
    sudo firewall-cmd --add-port=10252/tcp --permanent
    sudo firewall-cmd --add-port=2379/tcp --permanent
    sudo firewall-cmd --add-port=2380/tcp --permanent
    sudo firewall-cmd --reload
    
  4. (Em ocne-worker) Defina as regras de firewall para o(s) nó(s) de trabalho.

    sudo firewall-cmd --zone=trusted --add-interface=cni0 --permanent
    sudo firewall-cmd --add-port=8090/tcp --permanent
    sudo firewall-cmd --add-port=10250/tcp --permanent
    sudo firewall-cmd --add-port=10255/tcp --permanent
    sudo firewall-cmd --add-port=8472/udp --permanent
    sudo firewall-cmd --reload
    

Carregar o Módulo de Filtragem de Ponte

  1. (Em ocne-control e ocne-worker) Ative e carregue o módulo.

    sudo modprobe br_netfilter
    sudo sh -c 'echo "br_netfilter" > /etc/modules-load.d/br_netfilter.conf'
    

Configurar o Nó do Operador

O nó do operador executa e gerencia a implantação de ambientes, incluindo a implantação do cluster do Kubernetes. Um nó do operador pode ser um nó no cluster do Kubernetes ou um host separado, como neste tutorial. Instale o Oracle Cloud Native Environment Platform CLI, o Platform API Server e os utilitários no nó do operador.

  1. (No ocne-operator) Instale o Platform CLI, o Platform API Server e os utilitários.

    sudo dnf -y install olcnectl olcne-api-server olcne-utils
    
  2. (Em ocne-operator) Ative o serviço olcne-api-server, mas não o inicie.

    sudo systemctl enable olcne-api-server.service
    

Configurar os Nós do Kubernetes

O plano de controle e os nós de trabalho do Kubernetes contêm os pacotes do utilitário e do Agente do Oracle Cloud Native Environment Platform.

  1. (Em ocne-control e ocne-worker) Instale o pacote e os utilitários do Agente da Plataforma.

    sudo dnf -y install olcne-agent olcne-utils
    
  2. (Em ocne-control e ocne-worker) Ative o olcne-agent (mas não o inicie).

    sudo systemctl enable olcne-agent.service
    

As etapas acima concluem a configuração inicial e a instalação do software para cada nó.

(Opcional) Configuração do Servidor Proxy

Se estiver usando um Servidor Proxy, configure-o com CRI-O em cada nó do Kubernetes.

Observação: não é necessário no ambiente de laboratório gratuito.

  1. (Em todos os nós) Crie o Serviço CRIO.

    sudo mkdir /etc/systemd/system/crio.service.d
    
  2. (Em todos os nós) Abra o arquivo de configuração do proxy com vi e defina-o no modo 'inserir'.

    sudo vi /etc/systemd/system/crio.service.d/proxy.conf
    
  3. (Em todos os nós) Substitua os valores de proxy apropriados para aqueles em seu ambiente usando o arquivo de exemplo abaixo.

    [Service]
    Environment="HTTP_PROXY=proxy.example.com:80"
    Environment="HTTPS_PROXY=proxy.example.com:80"
    Environment="NO_PROXY=.example.com,192.0.2.*"
    

Configurar Certificados de CA Privada X.509

Use o script /etc/olcne/gen-certs-helper.sh fornecido para gerar uma CA privada e certificados para os nós. Execute o script no diretório /etc/olcne no nó do operador, salvando os arquivos de certificado no diretório atual.

  1. (Em ocne-operator Crie os Certificados X.509.

    cd /etc/olcne
    sudo ./gen-certs-helper.sh \
    --cert-request-organization-unit "My Company Unit" \
    --cert-request-organization "My Company" \
    --cert-request-locality "My Town" \
    --cert-request-state "My State" \
    --cert-request-country US \
    --cert-request-common-name pub.linuxvirt.oraclecvn.com \
    --nodes ocne-worker.pub.linuxvirt.oraclevcn.com,ocne-control.pub.linuxvirt.oraclevcn.com,ocne-operator.pub.linuxvirt.oraclevcn.com
    

    Forneça as informações da CA privada usando as opções --cert-request*. Algumas dessas opções existem no exemplo. Execute o comando gen-certs-helper.sh --help para obter uma lista completa de opções.

    • --cert-request-common-name: Forneça o Nome de Domínio DNS (Domain Name System) apropriado para seu ambiente.
    • --nodes: Forneça o nome de domínio totalmente qualificado (FQDN) dos seus nós operador, plano de controle e worker.

Transferir os Certificados da CA Privada X.509

Após gerar os certificados, copie-os para cada um dos nós.

  1. (Em ocne-operator) Atualize os detalhes do usuário no script de transferência fornecido.

    sudo sed -i 's/USER=opc/USER=oracle/g' configs/certificates/olcne-tranfer-certs.sh
    

    O tutorial requer esta etapa porque o usuário padrão do script é opc. Desde a instalação do produto usando o usuário oracle, atualize a variável USER dentro do script adequadamente.

  2. (No ocne-operator) Defina as permissões para cada node.key gerado pelo script de criação do certificado.

    sudo chmod 644 /etc/olcne/configs/certificates/tmp-olcne/ocne-control.pub.linuxvirt.oraclevcn.com/node.key
    sudo chmod 644 /etc/olcne/configs/certificates/tmp-olcne/ocne-operator.pub.linuxvirt.oraclevcn.com/node.key
    sudo chmod 644 /etc/olcne/configs/certificates/tmp-olcne/ocne-worker.pub.linuxvirt.oraclevcn.com/node.key
    
  3. (Em ocne-operator) Transfira os scripts para cada nó.

    Esta etapa requer SSH sem senha configurado entre os nós. A configuração disso está fora do escopo deste tutorial, mas é pré-configurada no ambiente de laboratório gratuito.

    bash -ex /etc/olcne/configs/certificates/olcne-tranfer-certs.sh
    
  4. (Em todos os nós) Verifique os arquivos copiados corretamente.

    sudo -u olcne ls /etc/olcne/configs/certificates/production
    

    Exemplo de Saída:

    [oracle@ocne-control ~]$ sudo -u olcne ls /etc/olcne/configs/certificates/production
    ca.cert  node.cert  node.key
    

Configurar Certificados X.509 para o Serviço Kubernetes externalIPs

O serviço Kubernetes externalip-validation-webhook-service requer que os certificados X.509 sejam configurados antes da implantação do Kubernetes.

  1. (Em ocne-operator) Gere os certificados.

    cd /etc/olcne
    sudo ./gen-certs-helper.sh \
    --cert-dir /etc/olcne/configs/certificates/restrict_external_ip/ \
    --cert-request-organization-unit "My Company Unit" \
    --cert-request-organization "My Company" \
    --cert-request-locality "My Town" \
    --cert-request-state "My State" \
    --cert-request-country US \
    --cert-request-common-name cloud.example.com \
    --nodes externalip-validation-webhook-service.externalip-validation-system.svc,\
    externalip-validation-webhook-service.externalip-validation-system.svc.cluster.local \
    --one-cert \
    --byo-ca-cert /etc/olcne/configs/certificates/production/ca.cert \
    --byo-ca-key /etc/olcne/configs/certificates/production/ca.key
    
    • --byo-ca-*: Esta opção usa a chave e o certificado CA criados anteriormente.
  2. (Em ocne-operator) Defina as permissões para o diretório que contém o node.key gerado pelo script de criação do certificado.

    sudo chown -R oracle:oracle /etc/olcne/configs/certificates/restrict_external_ip/
    

Inicializar o Servidor de API da Plataforma

  1. (No ocne-operator) Execute o script de bootstrap para configurar o Servidor de API da Plataforma para usar os certificados.

    sudo /etc/olcne/bootstrap-olcne.sh \
    --secret-manager-type file \
    --olcne-node-cert-path /etc/olcne/configs/certificates/production/node.cert \
    --olcne-ca-path /etc/olcne/configs/certificates/production/ca.cert \
    --olcne-node-key-path /etc/olcne/configs/certificates/production/node.key \
    --olcne-component api-server
    

    Exemplo de Saída:

    [oracle@ocne-operator olcne]$ sudo /etc/olcne/bootstrap-olcne.sh \
    > --secret-manager-type file \
    > --olcne-node-cert-path /etc/olcne/configs/certificates/production/node.cert \
    > --olcne-ca-path /etc/olcne/configs/certificates/production/ca.cert \
    > --olcne-node-key-path /etc/olcne/configs/certificates/production/node.key \
    > --olcne-component api-server
    * olcne-api-server.service - API server for Oracle Linux Cloud Native Environments
       Loaded: loaded (/usr/lib/systemd/system/olcne-api-server.service; enabled; vendor preset: disabled)
      Drop-In: /etc/systemd/system/olcne-api-server.service.d
               `-10-auth.conf
       Active: active (running) since Wed 2022-05-11 13:35:19 GMT; 2s ago
     Main PID: 96132 (olcne-api-serve)
        Tasks: 7 (limit: 203120)
       Memory: 12.2M
       CGroup: /system.slice/olcne-api-server.service
               `-96132 /usr/libexec/olcne-api-server -i /etc/olcne/modules --secret-manager-type file --olcne-ca-path /etc/olcne...
    
    May 11 13:35:19 ocne-operator systemd[1]: Started API server for Oracle Linux Cloud Native Environments.
    May 11 13:35:19 ocne-operator olcne-api-server[96132]: time=11/05/22 13:35:19 level=info msg=Api server listening on: 8091
    
    • Como alternativa, você pode usar certificados gerenciados pelo HashiCorp Vault. O uso desse método não está incluído neste tutorial.
  2. (Em ocne-operator) Confirme se o Servidor de API da Plataforma está em execução.

    sudo systemctl status olcne-api-server
    

    Exemplo de saída:

    [oracle@ocne-operator olcne]$ sudo systemctl status olcne-api-server
     * olcne-api-server.service - API server for Oracle Linux Cloud Native Environments
       Loaded: loaded (/usr/lib/systemd/system/olcne-api-server.service; enabled; vendor preset: disabled)
      Drop-In: /etc/systemd/system/olcne-api-server.service.d
               `-10-auth.conf
       Active: active (running) since Wed 2022-05-11 10:44:30 GMT; 9min ago
     Main PID: 59600 (olcne-api-serve)
        Tasks: 7 (limit: 203120)
       Memory: 12.6M
       CGroup: /system.slice/olcne-api-server.service
               `-59600 /usr/libexec/olcne-api-server -i /etc/olcne/modules --secret-manager-type file --olcne-ca-path /etc/olcne/c>
    
    May 11 10:44:30 ocne-operator systemd[1]: Started API server for Oracle Linux Cloud Native Environments.
    May 11 10:44:30 ocne-operator olcne-api-server[59600]: time=11/05/22 10:44:30 level=info msg=Api server listening on: 8091 ...
    
  3. (Em ocne-operator) Pressione 'q' para sair do processo e continuar para a próxima etapa.

Inicializar os Agentes de Plataforma

  1. (No ocne-control e ocne-worker) Execute o script de bootstrap para configurar o Agente da Plataforma para usar os certificados.

    sudo /etc/olcne/bootstrap-olcne.sh \
    --secret-manager-type file \
    --olcne-node-cert-path /etc/olcne/configs/certificates/production/node.cert \
    --olcne-ca-path /etc/olcne/configs/certificates/production/ca.cert \
    --olcne-node-key-path /etc/olcne/configs/certificates/production/node.key \
    --olcne-component agent
    

Exemplo de Saída:

[oracle@ocne-worker ~]$ sudo /etc/olcne/bootstrap-olcne.sh \
> --secret-manager-type file \
> --olcne-node-cert-path /etc/olcne/configs/certificates/production/node.cert \
> --olcne-ca-path /etc/olcne/configs/certificates/production/ca.cert \
> --olcne-node-key-path /etc/olcne/configs/certificates/production/node.key \
> --olcne-component agent
* olcne-agent.service - Agent for Oracle Linux Cloud Native Environments
   Loaded: loaded (/usr/lib/systemd/system/olcne-agent.service; enabled; vendor preset: disabled)
  Drop-In: /etc/systemd/system/olcne-agent.service.d
           `-10-auth.conf
   Active: active (running) since Wed 2022-05-11 11:13:58 GMT; 2s ago
 Main PID: 66500 (olcne-agent)
    Tasks: 8 (limit: 203120)
   Memory: 7.1M
   CGroup: /system.slice/olcne-agent.service
           `-66500 /usr/libexec/olcne-agent --secret-manager-type file --olcne-ca-path /etc/olcne/configs/certificates/produc...

May 11 11:13:58 ocne-control systemd[1]: Started Agent for Oracle Linux Cloud Native Environments.
May 11 11:13:58 ocne-control olcne-agent[66500]: time=11/05/22 11:13:58 level=info msg=Started server on[::]:8090

Criar um Arquivo de Configuração de CLI da Plataforma

Os administradores podem usar um arquivo de configuração para simplificar a criação e o gerenciamento de ambientes e módulos. O arquivo de configuração, gravado em uma sintaxe YAML válida, inclui todas as informações sobre os ambientes e módulos a serem criados. O uso de um arquivo de configuração salva entradas repetidas de opções de comando da CLI do Platform.

Durante a implantação do laboratório, um arquivo de configuração é gerado automaticamente e está pronto para ser usado no exercício. Mais informações sobre a criação manual de um arquivo de configuração estão na documentação em Using a Configuration File.

  1. (Em ocne-operator) Exiba o conteúdo do arquivo de configuração.

    cat ~/myenvironment.yaml
    

Criar o Ambiente e o Módulo Kubernetes

  1. (Em ocne-operator) Crie o ambiente.

    cd ~
    olcnectl environment create --config-file myenvironment.yaml
    

    Exemplo de Saída:

    [oracle@ocne-operator ~]$ olcnectl environment create --config-file myenvironment.yaml
    Environment myenvironment created.
    
  2. (No ocne-operator) Crie o módulo Kubernetes.

    olcnectl module create --config-file myenvironment.yaml
    

    Exemplo de Saída:

    [oracle@ocne-operator ~]$ olcnectl module create --config-file myenvironment.yaml
    Modules created successfully.
    
  3. (No ocne-operator) Valide o módulo Kubernetes.

    olcnectl module validate --config-file myenvironment.yaml
    

    Exemplo de Saída:

    [oracle@ocne-operator ~]$ olcnectl module validate --config-file myenvironment.yaml
    Validation of module mycluster succeeded.
    

    Neste exemplo, não há erros de validação. Se houver erros, os comandos necessários para corrigir os nós serão fornecidos como saída desse comando.

  4. (No ocne-operator) Instale o módulo Kubernetes.

    olcnectl module install --config-file myenvironment.yaml
    

    A implantação do Kubernetes nos nós pode levar alguns minutos para ser concluída.

    Exemplo de Saída:

    [oracle@ocne-operator ~]$ olcnectl module install --config-file myenvironment.yaml
    Modules installed successfully.
    
  5. (No ocne-operator) Valide a implantação do módulo Kubernetes.

    olcnectl module instances --config-file myenvironment.yaml
    

    Exemplo de Saída:

    [oracle@ocne-operator ~]$ olcnectl module instances --config-file myenvironment.yaml
    INSTANCE                                     	MODULE    	STATE    
    mycluster                                    	kubernetes	installed
    ocne-control.pub.linuxvirt.oraclevcn.com:8090	node      	installed
    ocne-worker.pub.linuxvirt.oraclevcn.com:8090 	node      	installed
    

Configurar kubectl

  1. (Em ocne-control) Configure o comando kubectl.

    mkdir -p $HOME/.kube
    sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    sudo chown $(id -u):$(id -g) $HOME/.kube/config
    export KUBECONFIG=$HOME/.kube/config
    echo 'export KUBECONFIG=$HOME/.kube/config' >> $HOME/.bashrc
    
  2. (Em ocne-control) Verifique se kubectl funciona.

    kubectl get nodes
    

    Exemplo de Saída:

    [oracle@ocne-control ~]$ kubectl get nodes
    NAME           STATUS   ROLES                  AGE   VERSION
    ocne-control   Ready    control-plane,master   10m   v1.22.8+1.el8
    ocne-worker    Ready    <none>                 10m   v1.22.8+1.el8
    

Para Obter Mais Informações

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.