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.

Para obtener información adicional, consulte:
Antes de empezar
Para realizar correctamente este tutorial, debe tener lo siguiente:
- Para Container Registry, Kubernetes y Equilibradores de carga:
- Una cuenta de Oracle Cloud Infrastructure de pago.
- Consulte Registro en Oracle Cloud Infrastructure.
- Para crear aplicaciones e imágenes de Docker:
- Uno de los siguientes entornos locales:
- Una máquina MacOS o Linux.
- Una máquina de Windows con soporte de Linux. Por ejemplo:
- 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+
- Uno de los siguientes entornos locales:
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
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.
- 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 una máquina virtual de Oracle Linux
Instale Node.js en el sistema.
Para instalar Node.js y NPM, ejecute los siguientes comandos:
- 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
- Ubuntu:
sudo apt update
Instale los paquetes
nodejs
ynpm
.sudo apt install -y nodejs sudo apt install -y npm
- Verifique la instalación.
node -v npm -v
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
Siga estos pasos para seleccionar la subred pública de la VCN y agregar la regla de entrada.
- Abra el menú de navegación y haga clic en Red y, a continuación, haga clic en Redes virtuales en la nube.
- Seleccione la VCN que ha creado con su instancia informática.
- 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.
- Haga clic en el enlace Lista de seguridad por defecto.
Se muestran las reglas de entrada por defecto para su VCN.
- Haga clic en Agregar reglas de entrada.
Se muestra un cuadro de diálogo Agregar reglas de entrada.
- 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
- 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.
- Verifique la instalación actual.
python3 --version
- 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
- Oracle Linux:
- 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)
- 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
- Oracle Linux:
- Verifique el pip para la instalación de Python 3.
pip3 -V
- 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"...
- Para instalar el cliente
kubectl
, consulte los siguientes enlaces: - Verifique la instalación.
kubectl version --client
- Verifique la instalación actual:
docker -v
- 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.
- Ubuntu Linux
Para instalar Docker en Ubuntu Linux, consulte el siguiente enlace: Obtención de Docker
- Verifique la instalación.
docker -v
1. Preparación
Prepare su entorno para crear y desplegar la aplicación.
- Conéctese a la consola de Oracle Cloud Infrastructure.
- Abra el menú de navegación y haga clic en Gobernanza y administración. En Gobernanza, haga clic en Límites, cuotas y uso.
- 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
- Nombre de límite:
- Filtre las siguientes opciones:
- 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
- Nombre de límite:
- 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.
- Filtre las siguientes opciones:
- 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
- Nombre de límite:
- 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.
- Filtre las siguientes opciones:
- 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
- Nombre de límite:
- Filtre las siguientes opciones:
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.
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.
- 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 Tokens de autenticación.
- Haga clic en Generar token.
- Asígnele una descripción.
- Haga clic enGenerar token.
- Copie el token y guárdelo.
- Haga clic en Cerrar.
Asegúrese de guardar el token justo después de crearlo. No tendrá acceso a él más adelante.
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.
- Instale
virtualenv
.pip3 install --user virtualenv
- Instale
virtualenvwrapper
.pip3 install --user virtualenvwrapper
- 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
- Ejemplo de Linux:
- 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.
- 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
- Inicie un entorno virtual.
workon cli-app
- 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>:~$
- Instale la CLI de OCI.
pip3 install oci-cli
- Pruebe la instalación:
oci --version
Si todo está configurado correctamente, obtendrá la versión.
oci --help
- Introduzca el siguiente comando en el entorno virtual:
oci setup config
- 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>
- Ubicación de la configuración [$HOME/.oci/config]:
- 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>
- Desactive el entorno virtual:
deactivate
El prefijo
(cli-app)
en su entorno ya no se muestra.
La clave privada es
oci_api_key.pem
y la clave pública es oci_api_key_public.pem
.- Active el entorno
cli-app
:workon cli-app
- Muestre la clave pública.
cat $HOME/.oci/oci_api_key_public.pem
- Copie la clave pública.
- 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
yEND PUBLIC KEY
. - Haga clic en Agregar.
- 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.
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.
- 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.
- En el panel de la izquierda, haga clic en Grupos.
- En un bloc de notas, copie el nombre de grupo al que pertenece el nombre de usuario.
- Abra el menú de navegación y haga clic en Identidad y seguridad. En Identidad, haga clic en Políticas.
- Seleccione el compartimento de la lista desplegable Compartimento.
- Haga clic en Crear política.
- 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)
- Nombre:
- En Creador de política, haga clic en Mostrar editor manual.
- Pegue la siguiente política:
allow group <the-group-your-username-belongs> to manage compartments in tenancy
- Haga clic en Crear.
Referencia: Tipo de recurso compartments
en Combinaciones de verbos + tipo de recurso para IAM
Cree un compartimento para los recursos que cree en este tutorial.
- Conéctese a la consola de Oracle Cloud Infrastructure.
- Abra el menú de navegación y haga clic en Identidad y seguridad. En Identidad, haga clic en Compartimentos.
- Haga clic en Crear compartimento.
- Rellene la siguiente información:
- Nombre:
<your-compartment-name>
- Descripción:
Compartment for <your-description>.
- Compartimento principal:
<your-tenancy>(root)
- Nombre:
- Haga clic en Crear compartimento.
Referencia: Creación de un 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 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.
- Abra el menú de navegación y haga clic en Identidad y seguridad. En Identidad, haga clic en Políticas.
- Seleccione el compartimento de la lista desplegable Compartimento.
- Haga clic en Crear política.
- 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)
- Nombre:
- 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)
- Casos de uso de política:
- Haga clic en Crear.
Referencia: Políticas comunes
Cree un cluster con la configuración por defecto y los nuevos recursos de red mediante el flujo de trabajo 'Creación rápida'.
Después de crear un cluster de Kubernetes, configure el sistema local para acceder al cluster.
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.
Cree su aplicación Node.js.
Ha configurado correctamente la aplicación Node.js.
Ejecute la aplicación Node.js.
Ha creado correctamente una aplicación Hello World mediante Node.js y Express.
Referencias:
- Para obtener información detallada sobre este ejemplo, consulte Introducción a Express.
A continuación, cree una imagen de Docker para la aplicación 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.
Con la imagen de Docker local creada, transfiera la imagen al repositorio de Container Registry.
Siga estos pasos.
Busque la imagen en Container Registry una vez que se haya completado el comando push.
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: