Nota:

Despliegue del entorno nativo de Oracle Cloud

Introducción

Oracle Cloud Native Environment es un conjunto totalmente integrado para el desarrollo y la gestión de aplicaciones en la nube. El módulo de Kubernetes es el módulo principal. Se utiliza para desplegar y gestionar contenedores, así como para instalar y configurar automáticamente contenedores CRI-O, runC y Kata. CRI-O gestiona el tiempo de ejecución del contenedor para un cluster de Kubernetes. El tiempo de ejecución puede ser runC o contenedores Kata.

Objetivos

En este laboratorio se muestra cómo:

Requisitos

En esta sección, se muestran los sistemas host para realizar los pasos de este tutorial. Para tener éxito es necesario:

Configuración del entorno de prácticas

Nota: Al utilizar el entorno de prácticas gratuitas, consulte Aspectos básicos de las prácticas de Oracle Linux para obtener información sobre la conexión y otras instrucciones de uso.

En esta práctica, se incluyen varios sistemas, cada uno de los cuales requiere que se realicen diferentes pasos. Se recomienda comenzar abriendo tres ventanas de terminal y conectándose a los nodos ocne-operator, ocne-control y ocne-worker. Esto evita la necesidad de conectarse y desconectarse repetidamente.

  1. Abra un terminal y conéctese mediante ssh a cada uno de los tres nodos.

    ssh oracle@<ip_address_of_ol_node>
    

Nota Cuando un paso indique "(En todos los nodos)" en el laboratorio, realice esas acciones en ocne-operator, ocne-control y ocne-worker. El motivo de este enfoque es evitar la repetición, ya que la acción necesaria será idéntica en cada nodo.

(Opcional) Actualización de Oracle Linux

  1. (En todos los nodos) Asegúrese de que Oracle Linux esté actualizado.

    sudo dnf -y update
    

    Esto puede tardar unos minutos en completarse; puede ahorrar tiempo si este paso se ejecuta en paralelo en cada nodo por separado.

  2. (En todos los nodos) Reinicie y vuelva a conectar.

    sudo reboot
    
  3. (En todos los nodos) Después de reiniciar el sistema, vuelva a conectarse a los nodos mediante ssh.

    ssh oracle@<ip_address_of_ol_node>
    

Instalar y activar el repositorio de Yum del entorno nativo de Oracle Cloud

  1. (En todos los nodos) Instale el repositorio de yum.

    sudo dnf -y install oracle-olcne-release-el8
    
  2. (En todos los nodos) Active el repositorio de entorno nativo de Oracle Cloud actual.

    sudo dnf config-manager --enable ol8_olcne15 ol8_addons ol8_baseos_latest ol8_appstream ol8_UEKR6
    
  3. (En todos los nodos) Desactive todas las versiones de repositorio anteriores.

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

Instalar y activar Chrony

  1. (En todos los nodos) Si aún no está disponible en el sistema, instale y active el servicio cronológico.

    Compruebe si hay cronos instalados.

    sudo dnf list --installed chrony
    

    Si no está instalado, instale crony.

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

    Nota: El entorno de laboratorio gratuito ya tiene instalado y configurado el servicio de cronología (hora).

Desactivar intercambio

  1. (En todos los nodos) Desactive el intercambio en todos los nodos.

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

Configuración del firewall de Oracle Linux

Nota: El servicio firewalld está instalado y en ejecución por defecto en Oracle Linux.

  1. (En ocne-operator) Defina las reglas de firewall para el nodo de operador.

    sudo firewall-cmd --add-port=8091/tcp --permanent
    sudo firewall-cmd --reload
    
  2. (En ocne-control) Establezca las reglas de firewall para los nodos del plano de control.

    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. (En ocne-control) Agregue lo siguiente que se utiliza para la alta disponibilidad y es necesario para pasar la validación.

    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. (En ocne-worker) Defina las reglas de firewall para los nodos de trabajador.

    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
    

Carga del módulo de filtrado de puentes

  1. (En ocne-control y ocne-worker) Active y cargue el módulo.

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

Configuración del nodo de operador

El nodo de operador realiza y gestiona el despliegue de entornos, incluido el despliegue del cluster de Kubernetes. Un nodo de operador puede ser un nodo del cluster de Kubernetes o un host independiente, como en este tutorial. Instale la CLI, el servidor de API de plataforma y las utilidades de Oracle Cloud Native Environment Platform en el nodo de operador.

  1. (En ocne-operator) Instale la CLI de la plataforma, el servidor de API de la plataforma y las utilidades.

    sudo dnf -y install olcnectl olcne-api-server olcne-utils
    
  2. (En ocne-operator) Active el servicio olcne-api-server, pero no lo inicie.

    sudo systemctl enable olcne-api-server.service
    

Configurar los nodos de Kubernetes

Los nodos de trabajador y el plano de control de Kubernetes contienen los paquetes de utilidad y el agente de plataforma de entorno nativo de Oracle Cloud.

  1. (En ocne-control y ocne-worker) Instale el paquete y las utilidades del agente de plataforma.

    sudo dnf -y install olcne-agent olcne-utils
    
  2. (En ocne-control y ocne-worker) Active olcne-agent (pero no inicie).

    sudo systemctl enable olcne-agent.service
    

Los pasos anteriores completan la configuración inicial y la instalación de software para cada nodo.

(Opcional) Configuración del Servidor Proxy

Si utiliza un servidor proxy, configúrelo con CRI-O en cada nodo de Kubernetes.

Nota: No es necesario en el entorno de prácticas libres.

  1. (En todos los nodos) Cree el servicio CRIO.

    sudo mkdir /etc/systemd/system/crio.service.d
    
  2. (En todos los nodos) Abra el archivo de configuración de proxy con vi y defínalo en modo "insert".

    sudo vi /etc/systemd/system/crio.service.d/proxy.conf
    
  3. (En todos los nodos) Sustituya los valores de proxy adecuados para los de su entorno mediante el siguiente archivo de ejemplo.

    [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

Utilice la secuencia de comandos /etc/olcne/gen-certs-helper.sh proporcionada para generar una CA privada y certificados para los nodos. Ejecute la secuencia de comandos desde el directorio /etc/olcne en el nodo de operador y guarde los archivos de certificado en el directorio actual.

  1. (En ocne-operator, cree los 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
    

    Proporcione la información de CA privada mediante las opciones --cert-request*. Algunas de estas opciones existen en el ejemplo. Ejecute el comando gen-certs-helper.sh --help para obtener una lista completa de opciones.

    • --cert-request-common-name: proporcione el nombre de dominio del sistema de nombres de dominio (DNS) adecuado para su entorno.
    • --nodes: proporcione el nombre de dominio completo (FQDN) del operador, el plano de control y los nodos de trabajador.

Transferir los certificados de CA privados X.509

Después de generar los certificados, cópielos en cada uno de los nodos.

  1. (En ocne-operator) Actualice los detalles del usuario en la secuencia de comandos de transferencia proporcionada.

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

    El tutorial requiere este paso porque el usuario por defecto del script es opc. Desde la instalación del producto con el usuario oracle, actualice la variable USER en el script según corresponda.

  2. (En ocne-operator) Establezca los permisos para cada nodo.clave generada por la secuencia de comandos de creación de certificados.

    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. (En ocne-operator) Transfiera las secuencias de comandos a cada nodo.

    Este paso requiere SSH sin contraseña configurado entre los nodos. La configuración de este tutorial está fuera del ámbito de este tutorial, pero está preconfigurada en el entorno de prácticas libres.

    bash -ex /etc/olcne/configs/certificates/olcne-tranfer-certs.sh
    
  4. (En todos los nodos) Verifique que los archivos se han copiado correctamente.

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

    Resultado de ejemplo:

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

Configurar certificados X.509 para el servicio Kubernetes externalIPs

El servicio externalip-validation-webhook-service de Kubernetes necesita que se configuren certificados X.509 antes de desplegar Kubernetes.

  1. (En ocne-operator) Genere los 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 opción utiliza la clave y el certificado de CA creados anteriormente.
  2. (En ocne-operator) Defina los permisos para el directorio que contiene la clave node.generada por la secuencia de comandos de creación de certificados.

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

Inicie el servidor de API de plataforma

  1. (En ocne-operator) Ejecute el script de inicialización de datos para configurar el servidor de API de plataforma para utilizar los 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
    

    Resultado de ejemplo:

    [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
    
    • También puede utilizar certificados gestionados por HashiCorp Vault. Este tutorial no incluye el uso de ese método.
  2. (En ocne-operator) Confirme que el servidor de API de plataforma se está ejecutando.

    sudo systemctl status olcne-api-server
    

    Resultado de ejemplo:

    [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. (En ocne-operator) Pulse 'q' para salir del proceso y continuar con el siguiente paso.

Arranque de los agentes de plataforma

  1. (En ocne-control y ocne-worker) Ejecute el script de inicialización para configurar el agente de plataforma para que utilice los 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
    

Resultado de ejemplo:

[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

Creación de un archivo de configuración de CLI de plataforma

Los administradores pueden utilizar un archivo de configuración para simplificar la creación y la gestión de entornos y módulos. El archivo de configuración, escrito con una sintaxis YAML válida, incluye toda la información sobre los entornos y los módulos que se van a crear. El uso de un archivo de configuración guarda las entradas repetidas de las opciones de comandos de la CLI de Platform.

Durante el despliegue de prácticas, se genera automáticamente un archivo de configuración y está listo para su uso en el ejercicio. Para obtener más información sobre la creación manual de un archivo de configuración, consulte la documentación de Using a Configuration File.

  1. (En ocne-operator) Visualice el contenido del archivo de configuración.

    cat ~/myenvironment.yaml
    

Creación del entorno y el módulo de Kubernetes

  1. (En ocne-operator) Cree el entorno.

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

    Resultado de ejemplo:

    [oracle@ocne-operator ~]$ olcnectl environment create --config-file myenvironment.yaml
    Environment myenvironment created.
    
  2. (En operador de llamadas) Cree el módulo de Kubernetes.

    olcnectl module create --config-file myenvironment.yaml
    

    Resultado de ejemplo:

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

    olcnectl module validate --config-file myenvironment.yaml
    

    Resultado de ejemplo:

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

    En este ejemplo, no hay errores de validación. Si hay errores, los comandos necesarios para corregir los nodos se proporcionan como salida de este comando.

  4. (En operador de llamadas) Instale el módulo de Kubernetes.

    olcnectl module install --config-file myenvironment.yaml
    

    El despliegue de Kubernetes en los nodos puede tardar varios minutos en realizarse.

    Resultado de ejemplo:

    [oracle@ocne-operator ~]$ olcnectl module install --config-file myenvironment.yaml
    Modules installed successfully.
    
  5. (En operador de llamadas) Valide el despliegue del módulo de Kubernetes.

    olcnectl module instances --config-file myenvironment.yaml
    

    Resultado de ejemplo:

    [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. (En ocne-control) Configure el 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. (En ocne-control), verifique que kubectl funcione.

    kubectl get nodes
    

    Resultado de ejemplo:

    [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 obtener más información

Más recursos de aprendizaje

Explore otras prácticas en docs.oracle.com/learn o acceda a contenido de aprendizaje más gratuito en el canal YouTube de Oracle Learning. Además, visite education.oracle.com/learning-explorer para convertirse en un explorador de formación de Oracle.

Para obtener documentación sobre los productos, visite Oracle Help Center.