Kubernetes: Despliegue de una aplicación de Node Express

En este tutorial, utilizará una cuenta de Oracle Cloud Infrastructure para configurar un cluster de Kubernetes. A continuación, despliegue una aplicación de Node Express en el cluster.

Las tareas clave incluyen cómo:

  • Configurar un cluster de Kubernetes en OCI.
  • Configurar la CLI de OCI para acceder al cluster.
  • Crear una aplicación de Node Express y una imagen de Docker.
  • Transferir su imagen a OCIR.
  • Desplegar su aplicación de Docker Node.js en su cluster.
  • Conectarse a su aplicación desde Internet.
Diagrama de los componentes necesarios para ejecutar una aplicación NodeJS Express en Oracle Cloud Infrastructure Kubernetes Engine

Para obtener información adicional, consulte:

Antes de empezar

Para realizar correctamente este tutorial, debe tener lo siguiente:

Requisitos
  • Para Container Registry, Kubernetes y Equilibradores de carga:
  • Para crear aplicaciones e imágenes de Docker:
    • Uno de los siguientes entornos locales:
    • Las siguientes aplicaciones en su entorno local:
      • JDK 11 y defina JAVA_HOME en .bashrc.
      • Python 3.6.8+ e instalador de pip para Python 3
      • Cliente de Kubernetes 1.11.9+
      • Apache Maven 3.0+
      • Docker 19.0.3+
      • Git 1.8+
      • Node.js 10+
Nota

Si no desea configurar las aplicaciones necesarias en su entorno local, puede utilizar Oracle Cloud Infrastructure Cloud Shell en su lugar. La ventaja de utilizar Cloud Shell es que todas las herramientas necesarias para gestionar la aplicación ya están instaladas y listas para usar. Siga los pasos uno y dos en:

Kubernetes con Cloud Shell: Despliegue de una aplicación de Spring Boot

Obtención de las aplicaciones para Linux en el nivel gratuito de OCI

Si desea utilizar una instancia informática de Linux de nivel gratuito de OCI para gestionar el despliegue, en las siguientes secciones se proporciona información para instalar el software necesario.

Instalación de una instancia de Linux
  • Instale una máquina virtual de Linux con una unidad de computación Siempre gratis en Oracle Cloud Infrastructure. Necesitará una máquina con soporte ssh para conectarse a su instancia de Linux.
    • Instalación de una máquina virtual de Oracle Linux
      • Siga las secciones 2 y 3.
      • Si tiene una cuenta de pago, en la sección 2, elija las opciones de recursos informáticos en función de sus ofertas.
      • Para conectarse a la instancia, en la sección 4, siga los pasos del 1 al 5.
      • Omita las instrucciones de Apache.
    • Instalación de una máquina virtual de Ubuntu
      • Siga las secciones 2 y 3.
      • Si tiene una cuenta de pago, en la sección 2, elija las opciones de recursos informáticos en función de sus ofertas.
      • Para conectarse a la instancia, en la sección 4, siga los pasos del 1 al 5.
      • Omita las instrucciones de Apache.
      • Para actualizar la configuración del firewall, en la sección 4, realice el paso 8.
Instalación de Node.js

Instale Node.js en el sistema.

Ejecución de comandos de instalación

Para instalar Node.js y NPM, ejecute los siguientes comandos:

  1. Oracle Linux:
    sudo yum update

    Configure el repositorio de Yum para Node.js. A continuación, instale el paquete nodejs.

    sudo yum install -y oracle-nodejs-release-el7
    sudo yum install -y nodejs
  2. Ubuntu:
    sudo apt update

    Instale los paquetes nodejs y npm.

    sudo apt install -y nodejs
    sudo apt install -y npm
  3. Verifique la instalación.
    node -v
    npm -v
Configuración del firewall (opcional)

Si desea realizar pruebas basadas en explorador de la aplicación Node, haga que el puerto 3000 esté disponible en la instancia de Linux.

  • Oracle Linux
    sudo firewall-cmd --add-service=http --permanent
    sudo firewall-cmd --add-service=https --permanent
    sudo firewall-cmd --reload
  • Ubuntu Linux
    sudo iptables -I INPUT 6 -m state --state NEW -p tcp --dport 3000 -j ACCEPT
    sudo netfilter-persistent save
Creación de una regla de entrada para la VCN (opcional)

Siga estos pasos para seleccionar la subred pública de la VCN y agregar la regla de entrada.

  1. Abra el menú de navegación y haga clic en Red y, a continuación, haga clic en Redes virtuales en la nube.
  2. Seleccione la VCN que ha creado con su instancia informática.
  3. Con la nueva VCN mostrada, haga clic en el enlace de la subred <nombre-de-su-subred>.

    La información de subred pública se muestra con las listas de seguridad en la parte inferior de la página. Se muestra un enlace a la lista de seguridad por defecto de la VCN.

  4. Haga clic en el enlace Lista de seguridad por defecto.

    Se muestran las reglas de entrada por defecto para su VCN.

  5. Haga clic en Agregar reglas de entrada.

    Se muestra un cuadro de diálogo Agregar reglas de entrada.

  6. Rellene la regla de entrada con la siguiente información.

    Rellene la regla de entrada de la siguiente forma:

    • Sin estado: marcada
    • Tipo de origen: CIDR
    • CIDR de origen: 0.0.0.0/0
    • Protocolo IP: TCP
    • Rango de puertos de origen: (déjelo en blanco)
    • Rango de puertos de destino: 3000
    • Descripción: Permitir conexiones HTTP
  7. Haga clic en Agregar regla de entrada.

    Ahora se permiten las conexiones HTTP. Su VCN está configurada para Node Express.

Ha creado correctamente una regla de entrada que hace que su instancia esté disponible desde Internet.

Instalación de Python 3 y Pip 3
  1. Verifique la instalación actual.
    python3 --version
  2. Para Python 3, ejecute los siguientes comandos:
    • Oracle Linux:
      sudo yum update
      sudo yum install -y python3
    • Ubuntu:
      sudo apt update
      sudo apt install -y python3
  3. Verifique la instalación de pip para Python3.
    pip3 -V

    Salida de ejemplo si el pip para Python3 está instalado:

    pip <version> from xxx/lib/python3.x/site-packages/pip (python 3.x)
  4. Para instalar pip para Python 3, ejecute los siguientes comandos:
    • Oracle Linux:
      sudo yum update
      sudo yum install -y python3-pip
    • Ubuntu:
      sudo apt update
      sudo apt install -y python3-pip
  5. Verifique el pip para la instalación de Python 3.
    pip3 -V
Instalación del cliente de Kubernetes
  1. Verifique la instalación actual:
    kubectl version --client
    Si tiene Kubernetes, la versión es <major-version>.<minor-version>. Por ejemplo, para la versión 1.20, obtiene lo siguiente:
    version.Info{Major:"1", Minor:"20"...
  2. Para instalar el cliente kubectl, consulte los siguientes enlaces:
  3. Verifique la instalación.
    kubectl version --client
Instalación de Docker
  1. Verifique la instalación actual:
    docker -v
  2. Oracle Linux

    Para instalar Docker en Oracle Linux, ejecute los siguientes comandos.

    sudo yum install docker-engine
    sudo systemctl start docker
    sudo systemctl enable docker

    Nota: El último comando permite que Docker se inicie al reiniciar.

  3. Ubuntu Linux

    Para instalar Docker en Ubuntu Linux, consulte el siguiente enlace: Obtención de Docker

  4. Verifique la instalación.
    docker -v

1. Preparación

Prepare su entorno para crear y desplegar la aplicación.

Comprobación de los límites de servicio
  1. Conéctese a la consola de Oracle Cloud Infrastructure.
  2. Abra el menú de navegación y haga clic en Gobernanza y administración. En Gobernanza, haga clic en Límites, cuotas y uso.
  3. Busque el límite de servicio para Regiones:
    • Filtre las siguientes opciones:
      • Servicio: regiones
      • Ámbito: Arrendamiento
      • Recurso: recuento de regiones suscritas
      • Compartimento: <tenancy-name> (root)
    • Busque el límite de servicio:
      • Nombre de límite: subscribed-region-count
      • Límite de servicio: como mínimo 2
  4. Busque el recuento de núcleos informáticos disponibles para la unidad VM.Standard.E3.Flex:
    • Filtre las siguientes opciones:
      • Servicio: Recursos informáticos
      • Alcance: <first-availability-domain>. Ejemplo: EMlr:US-ASHBURN-AD-1
      • Recurso: núcleos para instancias Standard.E3.Flex y BM.Standard.E3.128
      • Compartimento: <tenancy-name> (root)
    • Busque el recuento de núcleos disponibles:
      • Nombre de límite: standard-e3-core-ad-count
      • Disponible: como mínimo 1
    • Repita el procedimiento para Ámbito: <second-availability-domain> y <third-availability-domain>. Cada región debe tener al menos un núcleo disponible para esta unidad.
  5. Averigüe si tiene 50 GB de volumen en bloque disponibles:
    • Filtre las siguientes opciones:
      • Service: Block Volume
      • Alcance: <first-availability-domain>. Ejemplo: EMlr:US-ASHBURN-AD-1
      • Recurso: Tamaño de volumen (GB)
      • Compartimento: <tenancy-name> (root)
    • Busque el almacenamiento de volumen en bloque disponible:
      • Nombre de límite: total-storage-gb
      • Disponible: mínimo 50
    • Repita el procedimiento para Ámbito: <second-availability-domain> y <third-availability-domain>. Cada región debe tener al menos 50 GB de volumen en bloque disponibles.
  6. Descubra cuántos equilibradores de carga flexibles tiene disponibles:
    • Filtre las siguientes opciones:
      • Servicio: LbaaS
      • Alcance: <your-region>. Ejemplo: us-ashburn-1
      • Recurso: <blank>
      • Compartimento: <tenancy-name> (root)
    • Busque el número de equilibradores de carga flexibles disponibles:
      • Nombre de límite: lb-flexible-count
      • Disponible: como mínimo 1
Nota

Con este tutorial se crean tres instancias informáticas con una unidad VM.Standard.E3.Flex para los nodos de cluster. Para utilizar otra unidad, filtre por su recuento de núcleos. Por ejemplo, para VM.Standard2.4, filtre por Núcleos para instancias de máquina virtual y dedicadas basadas en Standard2 y obtenga el recuento.

Para obtener una lista de todas las unidades, consulte Unidades VM Standard.

Nota

En este tutorial se utiliza un flujo de trabajo de creación rápida para crear un cluster con una subred regional pública que aloja un equilibrador de carga flexible. Para utilizar un equilibrador de carga diferente, puede utilizar un flujo de trabajo personalizado para especificar explícitamente los recursos de red existentes que utilizar, incluidas las subredes existentes en las que crear los equilibradores de carga.

Para utilizar otro ancho de banda, filtre por su recuento, por ejemplo ancho de banda de 100 Mbps o ancho de banda de 400 Mbps.

Creación de un token de autorización
  1. En la barra de navegación, seleccione el menú Perfil y, a continuación, seleccione Configuración de usuario o Mi perfil, según la opción que vea.
  2. Haga clic en Tokens de autenticación.
  3. Haga clic en Generar token.
  4. Asígnele una descripción.
  5. Haga clic enGenerar token.
  6. Copie el token y guárdelo.
  7. Haga clic en Cerrar.
Nota

Asegúrese de guardar el token justo después de crearlo. No tendrá acceso a él más adelante.
Recopilación de la información necesaria
  1. Recopile la siguiente información de credenciales de la consola de Oracle Cloud Infrastructure.
    • Nombre de arrendamiento: <tenancy-name>
      • En la barra de navegación, seleccione el menú Profile y, a continuación, seleccione Tenancy: <your_tenancy_name>.
    • Espacio de nombre de arrendamiento: <tenancy-namespace>
      • En la barra de navegación, seleccione el menú Profile y, a continuación, seleccione Tenancy: <your_tenancy_name>.
      • Copie el valor para Espacio de nombres de almacenamiento de objetos.
      Nota

      En algunas cuentas, el nombre de arrendamiento y el espacio de nombres son diferentes. Asegúrese de utilizar el espacio de nombres en este tutorial.
    • OCID de arrendamiento: <tenancy-ocid>
      • En la barra de navegación, seleccione el menú Profile y, a continuación, seleccione Tenancy: <your_tenancy_name>.
      • Copiar OCID.
    • Nombre de usuario: <user-name>
      • En la barra de navegación, seleccione el menú Perfil y, a continuación, seleccione Configuración de usuario o Mi perfil, según la opción que vea.
    • OCID de usuario: <user-ocid>
      • En la barra de navegación, seleccione el menú Perfil y, a continuación, seleccione Configuración de usuario o Mi perfil, según la opción que vea.
      • Copiar OCID.
  2. Busque la información de su región.
    • Región: <region-identifier>
      • En la barra de navegación superior de la consola, busque la región. Ejemplo: Este de EE. UU. (Ashburn).
      • Busque el identificador de región en la tabla de Regiones y dominios de disponibilidad.
      • Ejemplo: us-ashburn-1.
    • clave de región: <region-key>
  3. Copie el token de autenticación de la sección Crear un token de autenticación.
    • Token de autenticación: <auth-token>
Configuración de la interfaz de la línea de comandos de OCI
Instalación de un entorno virtual y un envoltorio de Python

Con virtualenv de Python se crea una carpeta que contiene todos los ejecutables y las bibliotecas para el proyecto.

virtualenvwrapper es una extensión de virtualenv. Proporciona un juego de comandos, lo que hace que trabajar con entornos virtuales resulte mucho más agradable. También coloca todos sus entornos virtuales en un solo lugar. virtualenvwrapper proporciona la finalización de tabulador en los nombres de entorno.

  1. Instale virtualenv.
    pip3 install --user virtualenv
  2. Instale virtualenvwrapper.
    pip3 install --user virtualenvwrapper
  3. Busque la ubicación del script virtualenvwrapper.sh.
    grep -R virtualenvwrapper.sh
    Rutas de ejemplo:
    • Ejemplo de Linux: /home/ubuntu/.local/bin/virtualenvwrapper.sh
    • Ejemplo de MacOS: /usr/local/bin/virtualenvwrapper.sh
  4. Configure el envoltorio del entorno virtual en .bashrc.
    sudo vi .bashrc

    Agregue el siguiente texto.

    # set up Python env
    export WORKON_HOME=~/envs
    export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
    export VIRTUALENVWRAPPER_VIRTUALENV_ARGS=' -p /usr/bin/python3 '
    source <path-to-virtualenvwrapper.sh>

    Sustituya <path-to-virtualenvwrapper.sh> por su valor.

    Según la ubicación de los binarios de Python3 en su entorno, actualice /usr/bin/python3 a su ubicación correcta.

    Guarde el archivo.

  5. Active los comandos en la ventana actual.
    source ~/.bashrc
    Salida de ejemplo:
    virtualenvwrapper.user_scripts creating /home/ubuntu/envs/premkproject
    virtualenvwrapper.user_scripts creating /home/ubuntu/envs/postmkproject
    virtualenvwrapper.user_scripts creating /home/ubuntu/envs/initialize
    virtualenvwrapper.user_scripts creating /home/ubuntu/envs/premkvirtualenv
    virtualenvwrapper.user_scripts creating /home/ubuntu/envs/postmkvirtualenv
    virtualenvwrapper.user_scripts creating /home/ubuntu/envs/prermvirtualenv
    virtualenvwrapper.user_scripts creating /home/ubuntu/envs/postrmvirtualenv
    virtualenvwrapper.user_scripts creating /home/ubuntu/envs/predeactivate
    virtualenvwrapper.user_scripts creating /home/ubuntu/envs/postdeactivate
    virtualenvwrapper.user_scripts creating /home/ubuntu/envs/preactivate
    virtualenvwrapper.user_scripts creating /home/ubuntu/envs/postactivate
    
Instalación del CLI de OCI
  1. Inicie un entorno virtual.
    workon cli-app
  2. Confirme que el nombre del entorno virtual, cli-app aparece en la parte izquierda del símbolo del sistema.

    Ejemplo: (cli-app) ubuntu@<ubuntu-instance-name>:~$

  3. Instale la CLI de OCI.
    pip3 install oci-cli
  4. Pruebe la instalación:
    oci --version

    Si todo está configurado correctamente, obtendrá la versión.

    oci --help
Configuración de la CLI de OCI
  1. Introduzca el siguiente comando en el entorno virtual:
    oci setup config
  2. Introduzca sus respuestas en la sección Recopilación de la información necesaria:
    • Ubicación de la configuración [$HOME/.oci/config]: <take-default>
    • OCID de usuario: <user-ocid>
    • OCID de arrendamiento: <tenancy-ocid>
    • Región (por ejemplo, us-ashburn-1): <region-identifier>
  3. Introduzca la siguiente información para configurar las claves de cifrado de la API de OpenSSL:
    • ¿Generar un nuevo par de claves RSA de firma de API? [S/n]: S
    • Directorio de las claves [$HOME/.oci]: <take-default>
    • Nombre de la clave [oci_api_key] <take-default>
  4. Desactive el entorno virtual:
    deactivate

    El prefijo (cli-app) en su entorno ya no se muestra.

Nota

La clave privada es oci_api_key.pem y la clave pública es oci_api_key_public.pem.
Adición de la clave pública a su cuenta de usuario.
  1. Active el entorno cli-app:
    workon cli-app
  2. Muestre la clave pública.
    cat $HOME/.oci/oci_api_key_public.pem
  3. Copie la clave pública.
  4. Agregue la clave pública a su cuenta de usuario:
    • Vaya a la consola.
    • En la barra de navegación, seleccione el menú Perfil y, a continuación, seleccione Configuración de usuario o Mi perfil, según la opción que vea.
    • Haga clic en Claves de API.
    • Haga clic en Agregar clave de API.
    • Haga clic en Pegar clave pública.
    • Pegue el valor del paso anterior, incluidas las líneas con BEGIN PUBLIC KEY y END PUBLIC KEY.
    • Haga clic en Agregar.
Nota

  • Siempre que desee utilizar la CLI de OCI, actívela con: workon cli-app
  • Al cambiar los nombres de proyecto, workon desactiva el entorno de trabajo actual. De esta forma, puede cambiar rápidamente de un entorno a otro.

2. Configuración de un cluster

Instale y configure las opciones de gestión para el cluster de Kubernetes. Posteriormente, despliegue la aplicación en este cluster.

Adición de una política de compartimento

Si su nombre de usuario está en el grupo Administradores, omita esta sección. De lo contrario, haga que el administrador agregue la siguiente política a su arrendamiento:

allow group <the-group-your-username-belongs> to manage compartments in tenancy

Con este privilegio, puede crear un compartimento para todos los recursos del tutorial.

Pasos para agregar la política
  1. En la barra de navegación, seleccione el menú Perfil y, a continuación, seleccione Configuración de usuario o Mi perfil, según la opción que vea.
  2. En el panel de la izquierda, haga clic en Grupos.
  3. En un bloc de notas, copie el nombre de grupo al que pertenece el nombre de usuario.
  4. Abra el menú de navegación y haga clic en Identidad y seguridad. En Identidad, haga clic en Políticas.
  5. Seleccione el compartimento de la lista desplegable Compartimento.
  6. Haga clic en Crear política.
  7. Rellene la siguiente información:
    • Nombre: manage-compartments
    • Descripción: Allow the group <the-group-your-username-belongs> to list, create, update, delete and recover compartments in the tenancy.
    • Compartimento: <your-tenancy>(root)
  8. En Creador de política, haga clic en Mostrar editor manual.
  9. Pegue la siguiente política:
    allow group <the-group-your-username-belongs> to manage compartments in tenancy
  10. Haga clic en Crear.

Referencia: Tipo de recurso compartments en Combinaciones de verbos + tipo de recurso para IAM

Creación de un compartimento

Cree un compartimento para los recursos que cree en este tutorial.

  1. Conéctese a la consola de Oracle Cloud Infrastructure.
  2. Abra el menú de navegación y haga clic en Identidad y seguridad. En Identidad, haga clic en Compartimentos.
  3. Haga clic en Crear compartimento.
  4. Rellene la siguiente información:
    • Nombre: <your-compartment-name>
    • Descripción: Compartment for <your-description>.
    • Compartimento principal: <your-tenancy>(root)
  5. Haga clic en Crear compartimento.

Referencia: Creación de un compartimento

Adición de una política de recursos

Si su nombre de usuario está en el grupo Administradores, omita esta sección. De lo contrario, haga que el administrador agregue la siguiente política a su arrendamiento:

allow group <the-group-your-username-belongs> to manage all-resources in compartment <your-compartment-name>

Con este privilegio, puede gestionar todos los recursos en el compartimento, otorgando esencialmente derechos administrativos en ese compartimento.

Pasos para agregar la política
  1. Abra el menú de navegación y haga clic en Identidad y seguridad. En Identidad, haga clic en Políticas.
  2. Seleccione el compartimento de la lista desplegable Compartimento.
  3. Haga clic en Crear política.
  4. Rellene la siguiente información:
    • Nombre: manage-<your-compartment-name>-resources
    • Descripción: Allow users to list, create, update, and delete resources in <your-compartment-name>.
    • Compartimento: <your-tenancy>(root)
  5. Para Creador de política, seleccione las siguientes opciones:
    • Casos de uso de política: Compartment Management
    • Plantillas de políticas comunes: Let compartment admins manage the compartment
    • Grupos: <the-group-your-username-belongs>
    • Ubicación: <your-tenancy>(root)
  6. Haga clic en Crear.

Referencia: Políticas comunes

Creación de un cluster con 'Creación rápida'

Cree un cluster con la configuración por defecto y los nuevos recursos de red mediante el flujo de trabajo 'Creación rápida'.

  1. Conéctese a la consola de Oracle Cloud Infrastructure.
  2. Abra el menú de navegación y haga clic en Servicios para desarrolladores. En Contenedores y artefactos, haga clic en Clusters de Kubernetes (OKE).
  3. Haga clic en Crear cluster.
  4. Seleccione Creación rápida.
  5. Haga clic en Iniciar flujo de trabajo.

    Se muestra el cuadro de diálogo Creación rápida de cluster.

  6. Rellene la siguiente información.
    • Nombre: <your-cluster-name>
    • Compartimento: <your-compartment-name>
    • Versión de Kubernetes: <take-default>
    • Punto final público de API de Kubernetes:

      El cluster de Kubernetes se aloja en una subred pública con una dirección IP pública asignada automáticamente.

    • Nodos de trabajo de Kubernetes: Trabajo privado

      Los nodos de trabajo de Kubernetes se alojan en una subred privada.

    • Unidad: VM.Standard.E3.Flex
    • Seleccione el número de OCPU: 1
    • Cantidad de memoria (GB): 16
    • Número de nodos: 3
  7. Haga clic en Mostrar Opciones Avanzadas.

    Mantenga los valores por defecto.

    • Especifique un tamaño de volumen de inicio: desactive la casilla de control.
    • Verificación de imagen: desactive la casilla de control.
    • Agregar una clave SSH: no hay ninguna clave SSH
  8. Haga clic en Siguiente.

    Se muestran todas las opciones. Revíselas para asegurarse de que todo está configurado correctamente.

  9. Haga clic en Crear cluster.

    Se muestran los servicios configurados para el cluster.

  10. Haga clic en Cerrar.
  11. Hágase un café. El cluster tarda unos minutos en crearse.
Ha creado correctamente un cluster de Kubernetes.
Configuración del acceso local a su cluster

Después de crear un cluster de Kubernetes, configure el sistema local para acceder al cluster.

  1. Conéctese a la consola de Oracle Cloud Infrastructure.
  2. Abra el menú de navegación y haga clic en Servicios para desarrolladores. En Contenedores y artefactos, haga clic en Clusters de Kubernetes (OKE).
  3. Haga clic en el enlace a <your-cluster>.

    Aparece la información sobre su cluster.

  4. Haga clic en Acceder al cluster.
  5. Haga clic en Acceso local.
  6. Siga los pasos que se proporcionan en el cuadro de diálogo. Se vuelven a imprimir aquí como referencia.
    Nota

    Si no está en su entorno virtual, introduzca: workon cli-app antes de ejecutar los comandos kubectl.

    Compruebe la versión de la CLI de oci.

    oci -v

    Cree el directorio .kube si no existe.

    mkdir -p $HOME/.kube

    Cree un archivo kubeconfig para su configuración. Utilice la información del cuadro de diálogo Acceso a su cluster.

    oci ce cluster create-kubeconfig <use data from dialog>

    Exporte la variable de entorno KUBECONFIG.

    export KUBECONFIG=$HOME/.kube/config
    Nota

    Si desea que la variable de entorno se inicie en un nuevo shell, agregue export KUBECONFIG=$HOME/.kube/config al archivo ~/.bashrc.
  7. Pruebe la configuración del cluster con los siguientes comandos.

    Muestre los clusters:

    kubectl get service

    Obtenga los detalles del despliegue:

    kubectl describe deployment

    Obtenga los pods:

    kubectl get pods
    Nota

    Dado que no se despliega ninguna aplicación, los dos últimos comandos generan: "No se ha encontrado ningún recurso en el espacio de nombres por defecto".
    Nota

    Para consultar un cluster diferente, especifique un archivo de configuración diferente en la línea de comandos. Ejemplo:
    kubectl --kubeconfig=</path/to/config/file>

Con el acceso al cluster configurado, ya está listo para preparar la aplicación para el despliegue.

3. Creación de una aplicación local

Cree una aplicación local y una imagen de Docker para la aplicación.

Creación de una aplicación local

Cree su aplicación Node.js.

  1. Inicie una sesión de la CLI de OCI.
  2. Cree un directorio para la aplicación.
    mkdir node-hello-app
    cd node-hello-app
  3. Cree un archivo package.json.

    Cree el archivo:

    vi package.json

    En el archivo, introduzca el siguiente texto, actualice los campos opcionales author y repository y, a continuación, guarde el archivo:

    {
        "name": "node-hello-app",
        "version": "1.0.0",
        "description": "Node Express Hello application",
        "author": "Example User <username@example.com>",
        "main": "app.js",
        "scripts": {
            "start": "node app.js"
        },
        "repository": {
            "type": "git",
            "url": "git://github.com/username/repository.git"
        },
        "dependencies": {
            "express": "^4.0.0"
        },
        "license": "UPL-1.0"
    }                    
  4. Instale los paquetes de NPM.
    npm install
  5. Cree una aplicación "Hello, World!".

    Cree el archivo:

    vi app.js

    En el archivo, introduzca el siguiente texto y guarde el archivo:

    const express = require('express')
    const app = express()
    port = 3000
    
    app.get('/', function (req, res) {
        res.send('<h1>Hello World from Node.js!</h1>')
    })
    
    app.listen(port, function() {
        console.log('Hello World app listening on port ' + port);
    })
                        

Ha configurado correctamente la aplicación Node.js.

Ejecución de la aplicación local

Ejecute la aplicación Node.js.

  1. Ejecute la aplicación Node.js.
    node app.js
    El servidor de Node Express se inicia y muestra:
    Hello World app listening on port 3000
  2. Pruebe la aplicación mediante curl o el explorador.
    • Para probar con curl, introduzca:
      curl -X GET http://localhost:3000
    • Para probar con el explorador, conecte una ventana del explorador a: http://<your-ip-address>:3000 (opcional).
    La aplicación devuelve
    <h1>Hello World from Node.js!</h1>
  3. Pare la aplicación que se está ejecutando.

    Pulse Ctrl+C si desea parar la aplicación en la ventana de terminal con la que inició.

Ha creado correctamente una aplicación Hello World mediante Node.js y Express.

Referencias:

Creación de una imagen de Docker

A continuación, cree una imagen de Docker para la aplicación Node.js Express.

  1. Asegúrese de que está en el directorio node-hello-app.
  2. Cree una imagen de Docker.
    docker build -t node-hello-app .

    Aparece un mensaje que indica que se ha realizado correctamente.

    [INFO] BUILD SUCCESS
    Successfully tagged node-hello-app:latest
  3. Ejecute la imagen de Docker:
    docker run --rm -p 3000:3000 node-hello-app:latest
  4. Pruebe la aplicación.
    curl -X GET http://localhost:3000
    La aplicación devuelve
    <h1>Hello World from Node.js!</h1>
  5. Pare la aplicación que se está ejecutando.
¡Enhorabuena! Ha creado correctamente una imagen de Node.js Express.

4. Despliegue de su imagen de Docker

Transfiera la imagen de Node.js Express a OCI Container Registry. A continuación, utilice la imagen para desplegar la aplicación.

Creación de un repositorio de Docker
  1. Abra el menú de navegación y haga clic en Servicios para desarrolladores. En Contenedores y artefactos, haga clic en Container Registry.
  2. En la navegación situada en la parte izquierda, seleccione <your-compartment-name>.
  3. Haga clic en Crear repositorio.
  4. Cree un repositorio privado con el nombre de repositorio seleccionado:
    <repo-name> = <image-path-name>/<image-name>

    Ejemplo: node-apps/node-hello-app

    Ahora está listo para transferir su imagen local a Container Registry.
    Nota

    Antes de poder transferir una imagen de Docker a un repositorio de Registry, el repositorio debe existir en el compartimento. Si el repositorio no existe, el comando push de Docker no funciona correctamente.
    Nota

    La barra diagonal en un nombre de repositorio no representa una estructura de directorio jerárquica. El valor opcional <image-path-name> facilita la organización de los repositorios.
Transferencia de la imagen local

Con la imagen de Docker local creada, transfiera la imagen al repositorio de Container Registry.

Siga estos pasos.

  1. Abra la sesión de la CLI de OCI.
  2. Conéctese a OCI Container Registry:
    docker login <region-key>.ocir.io

    Se le solicita su nombre de inicio de sesión y contraseña.

    • Nombre de usuario: <tenancy-namespace>/<user-name>
    • Contraseña: <auth-token>
  3. Muestre las imágenes de Docker locales:
    docker images

    Se muestran las imágenes de Docker en el sistema. Identifique la imagen creada en la última sección: node-hello-app

  4. Etiquete la imagen local con la URL para el registro más el nombre de repositorio, para que pueda transferirla a ese repositorio.
    docker tag <your-local-image> <repo-url>/<repo-name>
    • Cambie <repo-url> por:
      <region-key>.ocir.io/<tenancy-namespace>/
    • Cambie <repo-name> por:

      <image-folder-name>/<image-name> de la sección Creación de un repositorio de Docker.

    • Este es un ejemplo después de combinar ambos:
      docker tag node-hello-app iad.ocir.io/my-namespace/node-apps/node-hello-app

      En este ejemplo, los componentes son:

      • URL de repositorio: iad.ocir.io/my-namespace/
      • Nombre del repositorio: node-apps/node-hello-app
    Nota

    OCI Container Registry ahora soporta la creación de un repositorio de registro en cualquier compartimento en lugar de solo en el compartimento raíz (arrendamiento). Para transferir la imagen al repositorio creado, combine la URL del registro con el nombre de repositorio exacto. OCI Container Registry busca la coincidencia del nombre de repositorio único y transfiere la imagen.
  5. Compruebe las imágenes de Docker para ver si la imagen se ha copiado.
    docker images
    • La imagen etiquetada tiene el mismo ID de imagen que la imagen local.
    • El nombre de imagen etiquetada es:
      <region-key>.ocir.io/<tenancy-namespace>/<image-path-name>/<image-name>
  6. Transfiera la imagen a Container Registry.
    docker push <copied-image-name>:latest
    Ejemplo:
    docker push iad.ocir.io/my-namespace/node-apps/node-hello-app:latest
  7. Abra el menú de navegación y haga clic en Servicios para desarrolladores. En Contenedores y artefactos, haga clic en Container Registry.

Busque la imagen en Container Registry una vez que se haya completado el comando push.

Despliegue de la imagen
Con su imagen en Container Registry, ahora puede desplegar la imagen y la aplicación.
  1. Cree un secreto de registro para la aplicación. Este secreto autentica la imagen al desplegarla en el cluster.

    Para crear el secreto, rellene la información de esta plantilla.

    kubectl create secret docker-registry ocirsecret --docker-server=<region-key>.ocir.io  --docker-username='<tenancy-namespace>/<user-name>' --docker-password='<auth-token>'  --docker-email='<email-address>'

    Después de ejecutar el comando, aparece un mensaje similar a: secret/ocirsecret created.

  2. Verifique que se haya creado el secreto. Ejecute el siguiente comando:
    kubectl get secret ocirsecret --output=yaml

    La salida incluye información sobre el secreto en formato yaml.

  3. Determine la URL de host de la imagen de registro mediante la siguiente plantilla:
    <region-code>.ocir.io/<tenancy-namespace>/<repo-name>/<image-name>:<tag>
    Ejemplo:
    iad.ocir.io/my-namespace/node-apps/node-hello-app:latest
  4. En el sistema, cree un archivo denominado node-app.yaml con el siguiente texto:
    Sustituya los siguientes marcadores de posición:
    • <your-image-url>
    • <your-secret-name>
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: node-app
    spec:
      selector:
        matchLabels:
          app: app
      replicas: 3
      template:
        metadata:
          labels:
            app: app
        spec:
          containers:
          - name: app
            image: <your-image-url>
            imagePullPolicy: Always
            ports:
            - name: app
              containerPort: 3000
              protocol: TCP
          imagePullSecrets:
            - name: <your-secret-name>
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: node-app-lb
      labels:
        app: app
      annotations:
        service.beta.kubernetes.io/oci-load-balancer-shape: "flexible"
        service.beta.kubernetes.io/oci-load-balancer-shape-flex-min: "10"
        service.beta.kubernetes.io/oci-load-balancer-shape-flex-max: "100"
    spec:
      type: LoadBalancer
      ports:
      - port: 3000
      selector:
        app: app
  5. Despliegue la aplicación con el siguiente comando.
    kubectl create -f node-app.yaml
    Salida:
    deployment.apps/node-app created
    service/node-app-lb created
    Nota

    En el archivo node-app.yaml, el código que aparece después de los guiones agrega un equilibrador de carga flexible.
Prueba de su aplicación
Después de desplegar la aplicación, el equilibrador de carga puede tardar unos segundos en cargarse.
  1. Compruebe si el equilibrador de carga está activo:
    kubectl get service

    Repita el comando hasta que se asigne una dirección IP al equilibrador de carga.

    Nota

    Mientras espera el despliegue del equilibrador de carga, puede comprobar el estado del cluster con estos comandos:
    • Obtenga cada uno de los estados de pods: kubectl get pods
    • Obtenga el estado de la aplicación: kubectl get deployment
  2. Utilice la dirección IP del equilibrador de carga para conectarse a la aplicación en un explorador:
    http://<load-balancer-IP-address>:3000

    El explorador muestra: <h1>Hello World from Node.js!</h1>

  3. Anule el despliegue de la aplicación del cluster. (Opcional) Para eliminar la aplicación, ejecute este comando:
    kubectl delete -f node-app.yaml
    Salida:
    deployment.apps/node-app deleted
    service "node-app-lb" deleted

    La aplicación ahora se ha eliminado del cluster.

Siguiente paso

Ha creado correctamente una aplicación Hello World, la ha desplegado en un cluster de Kubernetes y la ha publicado en Internet mediante el marco de Node Express.

Consulte estos sitios para obtener más información sobre el desarrollo con productos Oracle: