Observação:

Usar Instalação Rápida para Implantar o Oracle Cloud Native Environment

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. Ele é usado para implantar e gerenciar contêineres e também instala e configura automaticamente os Contêineres CRI-O, runC e Kata. O CRI-O gerencia o runtime do contêiner para um cluster do Kubernetes. O runtime pode ser Contêineres runC ou Kata.

O Oracle Cloud Native Environment Release 1.5.7 introduziu a capacidade de usar a CLI do Oracle Cloud Native Environment Platform para executar uma instalação rápida de si mesmo. Isso é feito usando o comando olcnectl provision em um host de instalação (o nó operador). O comando olcnectl provision pode executar as seguintes operações nos nós de destino:

Este tutorial descreve como executar uma instalação rápida usando a série mais simples de etapas possíveis para instalar o Oracle Cloud Native Environment e um cluster do Kubernetes. Este tutorial usa certificados de CA privados. É recomendável para um ambiente de produção usar seus próprios Certificados CA.

As topologias de instalação mais complexas podem ser obtidas gravando seu próprio arquivo de configuração do Oracle Cloud Native Environment e, em seguida, passando-o para o comando olcnectl provision usando a opção -config-file. Para obter mais informações sobre as opções de sintaxe fornecidas pelo comando olcnectl provision e também sobre como gravar um arquivo de configuração, consulte o guia Platform Command-Line Interface.

Objetivos

Este 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. A maioria das operações será iniciada no nó ocne-operator; portanto, é recomendável abrir uma janela de terminal para esse nó como no mínimo.

  1. Abra um terminal e conecte-se via ssh a cada nó.

    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) Fazer Upgrade para o Unbreakable Enterprise Kernel 7 (UEK7)

O Oracle Cloud Native Environment Release 1.5.7 introduziu o suporte para o Oracle Linux 8 Unbreakable Enterprise Kernel 7, de modo que as etapas a seguir mostram como fazer upgrade para esta nova versão do kernel. As etapas a seguir descrevem como atualizar o ambiente de Laboratório, que usa o UEK R6 do Oracle Linux 8 Update 6 para o Unbreakable Enterprise Kernel 7 (UEK7).

  1. (Em todos os nós) Confirme quais repositórios estão configurados no momento:

    dnf repolist
    

    Exemplo de Saída:

    [oracle@ocne-operator ~]$ dnf repolist
    repo id                          repo name
    ol8_MySQL80                      MySQL 8.0 for Oracle Linux 8 (x86_64)
    ol8_MySQL80_connectors_community MySQL 8.0 Connectors Community for Oracle Linux 8 (x86_64)
    ol8_MySQL80_tools_community      MySQL 8.0 Tools Community for Oracle Linux 8 (x86_64)
    ol8_UEKR6                        Latest Unbreakable Enterprise Kernel Release 6 for Oracle Linux 8 (x86_64)
    ol8_addons                       Oracle Linux 8 Addons (x86_64)
    ol8_appstream                    Oracle Linux 8 Application Stream (x86_64)
    ol8_baseos_latest                Oracle Linux 8 BaseOS Latest (x86_64)
    
  2. (Em todos os nós) Confirme se o Kernel Enterpriose Inquebrável está instalado

    dnf list installed kernel-uek
    

    Exemplo de Saída:

    [oracle@ocne-operator ~]$ dnf list installed kernel-uek
    Installed Packages
    kernel-uek.x86_64            5.4.17-2136.311.6.1.el8uek            @@commandline
    kernel-uek.x86_64            5.4.17-2136.312.3.4.el8uek            @ol8_UEKR6   
    kernel-uek.x86_64            5.4.17-2136.313.6.el8uek              @ol8_UEKR6  
    
  3. (Em todos os nós) Ative o novo Unbreakable Enterprise Kernel e desative o antigo.

    sudo dnf config-manager --set-disabled ol8_UEKR6
    sudo dnf config-manager --set-enabled ol8_UEKR7
    
  4. (Em todos os nós) Confirme quais novos repositórios do Unbreakable Enterprise Kernel agora estão ativados.

    dnf repolist
    

    Exemplo de Saída:

    [oracle@ocne-operator ~]$ dnf repolist
    repo id                            repo name
    ol8_MySQL80                        MySQL 8.0 for Oracle Linux 8 (x86_64)
    ol8_MySQL80_connectors_community   MySQL 8.0 Connectors Community for Oracle Linux 8 (x86_64)
    ol8_MySQL80_tools_community        MySQL 8.0 Tools Community for Oracle Linux 8 (x86_64)
    ol8_UEKR7                          Latest Unbreakable Enterprise Kernel Release 7 for Oracle Linux 8 (x86_64)
    ol8_addons                         Oracle Linux 8 Addons (x86_64)
    ol8_appstream                      Oracle Linux 8 Application Stream (x86_64)
    ol8_baseos_latest                  Oracle Linux 8 BaseOS Latest (x86_64)
    
  5. (Em todos os nós) Faça upgrade do ambiente.

    sudo dnf -y upgrade kernel-uek
    

    Observação Importante: Isso pode levar alguns minutos para ser concluído; economizará tempo se essa etapa for executada em paralelo em cada nó separadamente.

  6. (Em todos os nós) Confirme se o Kernel Enterpriose Inquebrável está instalado

    dnf list installed kernel-uek
    

    Exemplo de Saída:

    [oracle@ocne-operator ~]$ dnf list installed kernel-uek
    Installed Packages
    kernel-uek.x86_64            5.4.17-2136.311.6.1.el8uek            @@commandline
    kernel-uek.x86_64                              5.4.17-2136.312.3.4.el8uek                              @ol8_UEKR6
    kernel-uek.x86_64                              5.4.17-2136.313.6.el8uek                                @ol8_UEKR6
    kernel-uek.x86_64                              5.15.0-3.60.5.1.el8uek                                  @ol8_UEKR7
    
  7. (Em todos os nós) Reinicialize e reconecte.

    sudo reboot
    
  8. (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>
    
  9. (Em todos os nós) Confirme se o novo kernel está instalado.

    uname -a
    

    Exemplo de Saída:

    [oracle@ocne-worker ~]$ uname -a
    Linux ocne-worker 5.15.0-3.60.5.1.el8uek.x86_64 #2 SMP Wed Oct 19 20:04:48 PDT 2022 x86_64 x86_64 x86_64 GNU/Linux
    

Configurando o Host de Instalação (nó Operador) no Oracle Linux 8

Essas etapas configuram o host do Oracle Linux (nó do operador) para que ele possa ser usado para a instalação rápida do Oracle Cloud Native Environment.

  1. (Em ocne-operator) Instale o pacote de versão oracle-olcne-release-el8.

    sudo dnf -y install oracle-olcne-release-el8
    
  2. (No ocne-operator) Ative o repositório atual do Oracle Cloud Native Environment.

    sudo dnf config-manager --enable ol8_olcne15 ol8_addons ol8_baseos_latest ol8_appstream ol8_kvm_appstream ol8_UEKR6
    

    Observação Importante: Se você seguiu a etapa (opcional) para fazer upgrade do kernel para UEK7, use este comando:

    sudo dnf config-manager --enable ol8_olcne15 ol8_addons ol8_baseos_latest ol8_appstream ol8_kvm_appstream ol8_UEKR7
    
  3. (Em ocne-operator) Desative todas as versões anteriores do repositório.

    sudo dnf config-manager --disable ol8_olcne14 ol8_olcne13 ol8_olcne12 ol8_developer
    
  4. (No ocne-operator) Instale o pacote de software olcnectl.

    sudo dnf -y install olcnectl
    

Realize uma instalação rápida

As etapas a seguir descrevem o método mais rápido para configurar uma implantação básica do Oracle Cloud Native Environment e instalar um cluster do Kubernetes. Ele requer um mínimo de três nós, que são:

  1. (Em ocne-operator) Use o comando olcnectl provision para iniciar a instalação.

    olcnectl provision \
    --api-server ocne-operator \
    --master-nodes ocne-control \
    --worker-nodes ocne-worker \
    --environment-name myenvironment \
    --name mycluster
    

    Observação Importante: Esta operação pode levar de 10 a 15 minutos para ser concluída e não haverá uma indicação visível de que algo ocorra até que ela termine.

    Onde:

    • -api-server - o FQDN do nó em que a API da Plataforma deve ser configurada.
    • -master-nodes - o FQDN dos nós que será configurado com o Agente da Plataforma e designado à atribuição do plano de controle do Kubernetes. Se houver mais de um nó, ele deverá ser uma lista separada por vírgulas.
    • -worker-nodes - o FQDN dos nós que serão configurados com o Agente da Plataforma e designada à atribuição de colaborador do Kubernetes. Se houver mais de um nó, ele deverá ser uma lista separada por vírgulas.
    • -environment-name - usado para identificar o ambiente.
    • -name - usado para definir o nome do módulo Kubernetes.

    Observação Ao executar este comando, é exibido um prompt que lista as alterações a serem feitas nos hosts e solicita confirmação. Para evitar esse prompt, use a opção --yes. Esta opção define o comando olcnectl provision para assumir que a resposta a qualquer prompt de confirmação é afirmativa (sim).

    Saída de Exemplo: Isso mostra uma saída de exemplo quando a chave de comando --yes não é usada:

    [oracle@ocne-operator ~]$ olcnectl provision --api-server ocne-operator --master-nodes ocne-control --worker-nodes ocne-worker --environment-name  myenvironment --name mycluster
    INFO[31/10/22 11:31:35] Generating certificate authority             
    INFO[31/10/22 11:31:35] Generating certificate for ocne-operator     
    INFO[31/10/22 11:31:35] Generating certificate for ocne-control      
    INFO[31/10/22 11:31:35] Generating certificate for ocne-worker       
    INFO[31/10/22 11:31:35] Creating directory "/etc/olcne/certificates/" on ocne-operator 
    INFO[31/10/22 11:31:35] Copying local file at "certificates/ca/ca.cert" to "/etc/olcne/certificates/ca.cert" on ocne-operator 
    INFO[31/10/22 11:31:35] Copying local file at "certificates/ocne-operator/node.cert" to "/etc/olcne/certificates/node.cert" on ocne-operator 
    INFO[31/10/22 11:31:35] Copying local file at "certificates/ocne-operator/node.key" to "/etc/olcne/certificates/node.key" on ocne-operator 
    INFO[31/10/22 11:31:35] Creating directory "/etc/olcne/certificates/" on ocne-control 
    The authenticity of host 'ocne-control (10.0.0.151)' can't be established.
    ECDSA key fingerprint is SHA256:NzPd6SBTbrcEgHoaYHY2bnDB357dfPysBXkJLuMVT98.
    Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
    INFO[31/10/22 11:31:49] Copying local file at "certificates/ca/ca.cert" to "/etc/olcne/certificates/ca.cert" on ocne-control 
    INFO[31/10/22 11:31:49] Copying local file at "certificates/ocne-control/node.cert" to "/etc/olcne/certificates/node.cert" on ocne-control
    INFO[31/10/22 11:31:50] Copying local file at "certificates/ocne-control/node.key" to "/etc/olcne/certificates/node.key" on ocne-control 
    INFO[31/10/22 11:31:50] Creating directory "/etc/olcne/certificates/" on ocne-worker 
    The authenticity of host 'ocne-worker (10.0.0.152)' can't be established.
    ECDSA key fingerprint is SHA256:FV6mTb92EBzV2SRYsdDFfNVYhlJe5s9rWBTPWgAL6VU.
    Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
    INFO[31/10/22 11:31:53] Copying local file at "certificates/ca/ca.cert" to "/etc/olcne/certificates/ca.cert" on ocne-worker 
    INFO[31/10/22 11:31:53] Copying local file at "certificates/ocne-worker/node.cert" to "/etc/olcne/certificates/node.cert" on ocne-worker 
    INFO[31/10/22 11:31:54] Copying local file at "certificates/ocne-worker/node.key" to "/etc/olcne/certificates/node.key" on ocne-worker 
    ? Apply api-server configuration on ocne-operator:
    * Install oracle-olcne-release
    * Enable olcne15 repo
    * Install API Server
        Add firewall port 8091/tcp
    
    Proceed? yes/no(default) yes
    ? Apply control-plane configuration on ocne-control:
    * Install oracle-olcne-release
    * Enable olcne15 repo
    * Configure firewall rule:
        Add interface cni0 to trusted zone
        Add ports: 8090/tcp 10250/tcp 10255/tcp 8472/udp 6443/tcp
    * Disable swap
    * Load br_netfilter module
    * Load Bridge Tunable Parameters:
        net.bridge.bridge-nf-call-ip6tables = 1
        net.bridge.bridge-nf-call-iptables = 1
        net.ipv4.ip_forward = 1
    * Set SELinux to permissive
    * Install and enable olcne-agent
    
    Proceed? yes/no(default) yes
    ? Apply worker configuration on ocne-worker:
    * Install oracle-olcne-release
    * Enable olcne15 repo
    * Configure firewall rule:
        Add interface cni0 to trusted zone
        Add ports: 8090/tcp 10250/tcp 10255/tcp 8472/udp
    * Disable swap
    * Load br_netfilter module
    * Load Bridge Tunable Parameters:
        net.bridge.bridge-nf-call-ip6tables = 1
        net.bridge.bridge-nf-call-iptables = 1
        net.ipv4.ip_forward = 1
    * Set SELinux to permissive
    * Install and enable olcne-agent
    
    Proceed? yes/no(default) yes
    INFO[31/10/22 11:41:48] Kubeconfig for instance "mycluster" in environment "myenvironment" written to kubeconfig.myenvironment.mycluster 
    
  2. (No ocne-operator) A plataforma Oracle Cloud Native Environment e o software de cluster do Kubernetes agora estão instalados e configurados em todos os nós. Isso pode ser confirmado usando o seguinte:

    olcnectl module instances \
    --api-server ocne-operator:8091 \
    --environment-name myenvironment
    

    Exemplo de Saída:

    [oracle@ocne-operator ~]$ olcnectl module instances --api-server ocne-operator:8091 --environment-name myenvironment
    INSTANCE         	MODULE    	STATE    
    ocne-worker:8090 	node      	installed
    mycluster        	kubernetes	installed
    ocne-control:8090	node      	installed
    
  3. (No ocne-operator) Para evitar ter que usar o flag --api-server em comandos olcnectl futuros, execute o comando anterior novamente adicionando o flag --update-config.

    olcnectl module instances \
    --api-server ocne-operator:8091 \
    --environment-name myenvironment \
    --update-config
    
  4. (Em ocne-operator) Informações mais detalhadas relacionadas à implantação podem ser obtidas usando o comando olcnectl module report.

    olcnectl module report \
    --environment-name myenvironment \
    --name mycluster \
    --children \
    --format yaml
    

    Exemplo de Saída:

    [oracle@ocne-operator ~]$ olcnectl module report --environment-name myenvironment --name mycluster  --children --format yaml
    Environments:
      myenvironment:
        ModuleInstances:
        - Name: mycluster
          Properties:
          - Name: kubectl
          - Name: cloud-provider
          - Name: kubecfg
            Value: file exist
    ...
          - Name: kubecfg
               Value: file exist
          - Name: selinux
            Value: permissive
          - Name: swap
            Value: "off"
    

    Observação: É possível alterar a saída para retornar essa saída em um formato de Tabela. No entanto, isso requer que a Codificação do aplicativo Terminal seja definida como UTF-8 (Defina o seguinte no menu do aplicativo Terminal: Terminal -> Set Encoding -> Unicode -> UTF-8). Em seguida, execute o comando novamente sem a opção --format yaml.

    olcnectl module report \
    --environment-name myenvironment \
    --name mycluster \
    --children
    

    Exemplo de Saída:

    [oracle@ocne-operator ~]$ olcnectl module report --environment-name myenvironment --name mycluster --children
    ╭─────────────────────────────────────────────────────────────────────┬─────────────────────────╮
    │ myenvironment                                                       │                         │
    ├─────────────────────────────────────────────────────────────────────┼─────────────────────────┤
    │ mycluster                                                           │                         │
    ├─────────────────────────────────────────────────────────────────────┼─────────────────────────┤
    │ Property                                                            │ Current Value           │
    ├─────────────────────────────────────────────────────────────────────┼─────────────────────────┤
    │ podnetworking                                                       │ running                 │
    │ status_check                                                        │ healthy                 │
    │ cloud-provider                                                      │                         │
    │ kubecfg                                                             │ file exist              │
    │ externalip-webhook                                                  │ uninstalled             │
    │ extra-node-operations                                               │                         │
    │ extra-node-operations-update                                        │ running                 │
    │ kubectl                                                             │                         │
    │ master:ocne-control:8090                                            │                         │
    │ worker:ocne-worker:8090                                             │                         │
    ├─────────────────────────────────────────────────────────────────────┼─────────────────────────┤
    │ ocne-control:8090                                                   │                         │
    ├─────────────────────────────────────────────────────────────────────┼─────────────────────────┤
    ...
    ├─────────────────────────────────────────────────────────────────────┼─────────────────────────┤
    │ networking                                                          │ active                  │
    │ swap                                                                │ off                     │
    │ kubecfg                                                             │ file exist              │
    ╰─────────────────────────────────────────────────────────────────────┴─────────────────────────╯
    

Configurar o 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 o 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   26m   v1.24.5+1.el8
    ocne-worker    Ready    <none>          25m   v1.24.5+1.el8
    

    ou

    kubectl get pods --all-namespaces
    

    Exemplo de Saída:

    [oracle@ocne-control ~]$ kubectl get pods --all-namespaces
    NAMESPACE              NAME                                    READY   STATUS    RESTARTS      AGE
    kube-system            coredns-664c775d6f-6gbcc                1/1     Running   0             26m
    kube-system            coredns-664c775d6f-dvht7                1/1     Running   0             26m
    kube-system            etcd-ocne-control                       1/1     Running   0             27m
    kube-system            kube-apiserver-ocne-control             1/1     Running   0             27m
    kube-system            kube-controller-manager-ocne-control    1/1     Running   1 (27m ago)   27m
    kube-system            kube-flannel-ds-cv9cl                   1/1     Running   0             26m
    kube-system            kube-flannel-ds-cxtz8                   1/1     Running   1 (25m ago)   26m
    kube-system            kube-proxy-cbm8s                        1/1     Running   0             26m
    kube-system            kube-proxy-rxkhb                        1/1     Running   0             26m
    kube-system            kube-scheduler-ocne-control             1/1     Running   0             27m
    

Isso confirma que o Oracle Cloud Native Environment está configurado e em execução nos três nós.

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.