Nota:

Cree pipelines DevOps de OCI para crear y desplegar microservicios de Golang

Introducción

Esto forma parte de cuatro de una serie de tutoriales de seis partes que muestra cómo desplegar un juego temporal de recursos en un cluster de OKE mediante microservicios de Golang que representan el uso del SDK de OCI, OCI-CLI, Resource Manager, OCI Devops y Helm para desplegar y destruir Apache Airflow.

Objetivo

En este tutorial aprenderá a crear pipelines DevOps de OCI para la creación y el despliegue.

Requisitos

Tarea 1: Explorar el código de inicio de sesión

Nota
El código ya se ha cargado en el repositorio de OCI denominado conexión en pasos anteriores de esta práctica.

T1_1

Tarea 2: Explorar el código de acceso a microservicios

Nota
El código ya se ha cargado en el repositorio de OCI denominado go-microservice en pasos anteriores de esta práctica.

T2_1

Tarea 3: Creación de los artefactos DevOps para go-login y go-microservice

Antes de crear el pipeline de compilación DevOps, necesitamos crear los artefactos que se conectarán con los resultados de la compilación (paquete Helm e imagen de contenedor).

  1. Vaya al registro de OCI que ha creado para este tutorial.

    T3_1

  2. Haga clic en los artefactos del proyecto DevOps, haga clic en Agregar artefacto y, a continuación, escriba Repositorio de imágenes de contenedor.

    T3_2

    Nota importante sobre la URL del registro:

    T3_2

    • Esta es la base del registro para la región sa-saopaulo-1.

    • Compruebe el código de región, que será diferente si no utiliza "sa-saopaulo-1". Para obtener más información, consulte Regiones y dominios de disponibilidad.

    T3_2

  3. Repita el paso 2 y agregue el artefacto go-microservice.

    T3_2

  4. Cree un nuevo artefacto general para almacenar los valores de Helm para go-login pegando el contenido del archivo values.yaml del repositorio de código.

    T3_4

  5. Cree un nuevo artefacto general para almacenar los valores de Helm para go-microservice pegando el contenido del archivo values.yaml del repositorio de código.

    T3_5

  6. Cree un nuevo artefacto de tipo de gráfico de Helm para go-login. Debe definir el espacio de nombres y el código de región correctos en la URL del gráfico.

    T3_6

  7. Cree un nuevo artefacto de tipo de gráfico de Helm para ir a microservicio. Debe definir el espacio de nombres y el código de región correctos en la URL del gráfico.

    T3_7

En este punto, debe tener los siguientes artefactos en el proyecto DevOps.

T3_7

Tarea 4: Creación del pipeline de creación de Devops para go-login

  1. Vaya a la página de la consola del DevOps proyecto y seleccione el proyecto DevOps que ha creado.

  2. Seleccione Crear pipelines y, a continuación, haga clic en Crear pipeline de compilación, introduzca el nombre y la descripción y haga clic en Crear.

    T4_2

  3. Haga clic en Agregar etapa y, a continuación, seleccione Creación gestionada.

    T4_2

    T4_2

  4. En Repositorio de código principal, seleccione el repositorio de OCI para conectar.

    T4_4

    • Confirme el repositorio, seleccione y haga clic en Agregar.
  5. Agregue una nueva etapa en el pipeline de compilación para publicar el artefacto en el registro. Seleccione la opción Enviar artefactos y, a continuación, seleccione el artefacto go-login-image creado en los pasos anteriores.

    T4_5

    T4_5

El pipeline se debe parecer a este.

T4_5

Tarea 5: Crear el pipeline de creación DevOps para el servicio de microempresa

  1. Vaya a la página de la consola del DevOps proyecto y seleccione el proyecto DevOps que ha creado.

  2. Seleccione Crear pipelines, haga clic en Crear pipeline de compilación, introduzca el nombre y la descripción y haga clic en Crear.

    T4_2

  3. Haga clic en Agregar etapa y, a continuación, seleccione Creación gestionada.

    T4_2

    T4_2

  4. En Repositorio de código principal, seleccione el repositorio de OCI para go-microservice.

    T4_4

    • Confirme el repositorio, seleccione y haga clic en Agregar.
  5. Agregue una nueva etapa en el pipeline de compilación para publicar el artefacto en el registro. Seleccione la opción Enviar artefactos y, a continuación, seleccione el artefacto go-microservice-image creado en los pasos anteriores.

    T4_5

    T4_5

El pipeline se debe parecer a este.

T4_5

Tarea 6: Pipeline de compilación {build_spec.yaml} - go-login

El archivo build_spec es un archivo yaml que describe los pasos que se deben realizar durante la ejecución del pipeline de compilación. Se ejecuta en un ejecutor de compilación en la nube y admite la mayoría de los lenguajes populares en las aplicaciones nativas en la nube. El archivo se encuentra en la raíz del código de repositorio go-login en OCI. Este archivo utiliza algunas variables del VAULT y necesitamos cambiarlo a nuestros ocids del tutorial Vault.

Para obtener más detalles sobre las especificaciones de compilación, consulte Especificación de compilación.

Se deben definir las dos variables siguientes.

  1. Vaya a sus secretos de almacén y obtenga el OCID para cada secreto.

    T6_1

  2. Vaya a los repositorios de proyectos y obtenga ssh url para go-login.

    T6_2

    • Actualice el archivo build_spec.yaml y sustituya los valores por los secretos de OCID copiados y, a continuación, confirme los cambios en el código.

      T6_2

  3. Vaya a la consola de shell bastion jump-box.

    cd $HOME
    # If you still have the old go-login.git and go-microservices.git directory, delete it!
    rm -rf go-login.git
    rm -rf go-microservice.git
    git clone <your ssh url for the repo>
    cd go-login/
    vi build_spec.yaml
    #perform the needed changes for your ocid variables and save the file.
    git add .
    git commit -m "fixed ocid variables"
    git push
    

    T6_3

    T6_3

  4. Vaya al pipeline de compilación go-login del proyecto DevOps, seleccione el separador "Parámetros" y agregue los siguientes parámetros nuevos.

    • HELM_REPO: base de su registro de OCI xxx.ocir.io.
    • HELM_REPO_URL: URL del registro de OCI para el gráfico de Helm relacionado.
    • APP_HOST: el host se utilizará para acceder a la aplicación en el controlador de entrada.
    • IMAGE_URL: URL de imagen de registro de OCI sin la etiqueta.

    T6_4

  5. Haga clic en el separador Crear pipeline y, a continuación, haga clic en Iniciar ejecución manual.

    T6_5

    T6_5

    • Como podemos ver, la creación se ha completado correctamente junto con la transferencia de imagen al registro de OCI.

      T6_5

  6. Vaya a OCI Container Registry y compruebe si hay una imagen allí.

    T6_5

Tarea 7: Configurar credenciales de OCI para ir a microservicios

Los microservicios de go interactúan con OCI mediante SDK y, para poder hacerlo, necesitamos configurar las credenciales correctas. Utilizaremos la información similar que hemos utilizado para configurar la CLI de OCI durante la configuración del bastión a partir de los pasos anteriores de este tutorial.

Todas las credenciales requeridas se almacenarán en el configmap de OKE y se inyectarán en las variables de entorno dentro del contenedor en ejecución.

T7_0

  1. Vaya a sus repositorios de OCI y obtenga ssh url para su repositorio go-microservice.

    T7_1

  2. Vaya a la página de la consola para el cluster de OKE, copie el cluster ocid y reemplace el comando para la variable env ENV_CLUSTER_ID en el siguiente paso.

    T7_2

  3. Abra el terminal de shell bastion jump-box. Asegúrese de que ha creado la clave ssh en: ~/.oci/oci_api_key.pem. A excepción de la variable ENV_CLUSTER_ID, todas las demás variables se pueden encontrar en el archivo ~/.oci/config en el host bastión que configuró previamente la CLI de OCI.

    cat ~/.oci/config
    

    T7_2

  4. La siguiente lista de comandos de shell creará un nuevo archivo configmap/values.yaml con todas las variables necesarias para inyectarse en el contenedor en ejecución y, a continuación, lo enviará al repositorio de código de OCI. Antes de ejecutar los comandos en el terminal de host bastión, sustituya los valores "PASTE SU..." a continuación.

    cd $HOME
    rm -rf go-microservice/
    git clone <PAST YOUR ssh url>
    cd go-microservice/chart-go-microservice/configmap/
    rm values.yaml
    pem=$(cat ~/.oci/oci_api_key.pem|base64 -w 0)
    echo 'ENV_PEM: "'$pem'"' > values.yaml
    echo 'ENV_TENANCY_OCID: "PASTE YOUR TENANCY OCID"' >> values.yaml
    echo 'ENV_USER_OCID: "PASTE YOUR USER OCID"' >> values.yaml
    echo 'ENV_REGION: "PASTE YOUR REGION NAME"' >> values.yaml
    echo 'ENV_FINGERPRINT: "PASTE YOUR FINGERPRINT"' >> values.yaml
    echo 'ENV_CLUSTER_ID: "PASTER YOUR CLUSTER OCID"' >> values.yaml
    cd $HOME/go-microservice
    git add .
    git commit -m "added correct values on configmap"
    git push
    

    T7_3

    T7_3

Ahora, el microservicio de inicio puede comunicarse con OCI mediante el SDK.

Tarea 8: pipeline de compilación {build_spec.yaml} - microservicios de go

El archivo build_spec es un archivo yaml que describe los pasos que se deben realizar durante la ejecución del pipeline de compilación. Se ejecuta en un ejecutor de compilación en la nube y admite la mayoría de los lenguajes populares en las aplicaciones nativas en la nube. El archivo se encuentra en la raíz del código de repositorio go-microservice en OCI. Este archivo utiliza algunas variables del VAULT y necesitamos cambiarlo a nuestros ocids del tutorial Vault.

Para obtener más detalles sobre las especificaciones de compilación, consulte Especificación de compilación.

Se deben definir las dos variables siguientes.

  1. Vaya a sus secretos de almacén y obtenga el OCID para cada secreto.

    T6_1

  2. Vaya a los repositorios del proyecto y obtenga la URL ssh para go-login.

    T6_2

    • Deberá actualizar el archivo build_spec.yaml y sustituir los valores por los secretos de OCID copiados y, a continuación, confirmar los cambios en el código.

    T6_2

  3. Vaya a la consola de shell bastion jump-box.

    cd $HOME
    # If you still have the old go-login.git and go-microservices.git directory, delete it!
    rm -rf go-login.git
    rm -rf go-microservice.git
    git clone <your ssh url for the repo>
    cd go-microservice/
    vi build_spec.yaml
    #perform the needed changes for your ocid variables and save the file.
    git add .
    git commit -m "fixed ocid variables"
    git push
    

    T8_3

    T8_3

  4. Vaya al pipeline de compilación go-microservice del proyecto Devops, seleccione el separador "Parámetros" y agregue nuevos parámetros.

    • HELM_REPO: base de su registro de OCI xxx.ocir.io.
    • HELM_REPO_URL: URL del registro de OCI para el gráfico de Helm relacionado.
    • APP_HOST: el host se utilizará para acceder a la aplicación en el controlador de entrada.
    • IMAGE_URL: URL de imagen de registro de OCI sin la etiqueta.

    T6_4

  5. Haga clic en el separador Crear pipeline y, a continuación, haga clic en Iniciar ejecución manual.

    T8_5

    T8_5

    • Como podemos ver, la creación se ha completado correctamente junto con la transferencia de imagen al registro de OCI.

      T8_5

  6. Vaya a OCI Container Registry y compruebe si hay una imagen allí.

    T8_5

Tarea 9: Preparación de OKE para recibir los despliegues

En este tutorial, crearemos manualmente los espacios de nombres de OKE para go-login y go-microservices. También necesitamos configurar las credenciales del registro de contenedor de OCI en cada uno de los espacios de nombres mediante secretos. Esto es necesario; de lo contrario, el despliegue no podrá recuperar la imagen de contenedor del registro.

  1. Obtenga el texto sin formato TOKEN y el nombre de usuario del registro de OCI que ha almacenado en el almacén.

    T9_1

  2. Abra la consola de shell bastion jump-box y ejecute el siguiente comando.

    Nota: Asegúrese de sustituir las variables de los comandos siguientes por las credenciales que obtuvo en el paso anterior y también compruebe el docker-server correcto según la región gru.ocir.io.

     cd $HOME
     kubectl get ns
     kubectl create ns go-login
     kubectl create ns go-microservices
     kubectl create secret docker-registry docker-registry --docker-server=gru.ocir.io --docker-username='your_user_name' --docker-password='your_token' --docker-email='user-email' -n go-login
     kubectl create secret docker-registry docker-registry --docker-server=gru.ocir.io --docker-username='your_user_name' --docker-password='your_token' --docker-email='user-email' -n go-microservices
    
    
    • Ahora vamos a desplegar el controlador de entrada para poder acceder a los microservicios a través de Internet. Utilizamos la imagen de entrada oficial en la versión v1.4.0.

       kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.4.0/deploy/static/provider/cloud/deploy.yaml
       kubectl scale --replicas=4 deployment ingress-nginx-controller -n ingress-nginx
      
      

      T9_2

      T9_2

    • Ahora, vamos a comprobar si los servicios de entrada son buenos, debería ser así.

      kubectl get svc -n ingress-nginx
      

      T9_2

    • Después de crear el nodo de entrada, se crea automáticamente un nuevo equilibrador de carga en OCI. Ahora, actualice la unidad del equilibrador de carga a una unidad más barata y evite costos adicionales.

  3. Vaya a la consola, seleccione Equilibradores de carga en Red y, a continuación, seleccione el equilibrador de carga recién creado.

    T9_3

  4. Haga clic para actualizar el SHAPE y seleccione la casilla de control Usar un equilibrador de carga flexible.

    T9_4

Tarea 10: Crear un nuevo entorno DevOps de OCI

Para poder desplegar sus aplicaciones, necesitamos crear el entorno.

  1. Seleccione el proyecto DevOps, haga clic en Entornos y, a continuación, haga clic en Crear entorno.

    T10_1

    T10_1

Tarea 11: Despliegue de go-login en OCI DevOps mediante gráficos de Helm

  1. Vaya al proyecto DevOps, haga clic en Pipelines de despliegue y cree un nuevo pipeline para conectar.

    T11_1

  2. Haga clic para agregar una nueva etapa que desplegar, seleccione "Instalar gráficos de Helm en cluster de Kubernetes", seleccione el artefacto de helm y el artefacto de valores para go-login. Asegúrese de rellenar el nombre del espacio de nombres como go-login.

    T11_2

  3. Cree un disparador en el pipeline de compilación para iniciar el despliegue automáticamente una vez terminada la compilación.

    1. Vaya al pipeline de compilación go-login en el proyecto de DevOps y haga clic en Agregar etapa.

    2. Seleccione Despliegue de disparador, haga clic en Seleccionar pipeline de despliegue y, a continuación, seleccione go-login-deploy.

      T11_3

  4. Haga clic en Iniciar ejecución manual para probar el pipeline.

    T11_4

    T11_4

  5. En la página Depura el proyecto, haga clic en Despliegues para comprobar el estado de despliegue en ejecución.

    T11_5

Tarea 12: Verificación del despliegue de inicio de sesión

  1. Vaya al terminal del host bastión y compruebe lo siguiente:

    • Compruebe el estado del pod.

      kubectl get pod -n go-login
      
    • Compruebe el host de entrada y la dirección de la aplicación.

      kubectl get ingress -n go-login
      

      T12_1

    • Este despliegue utiliza el tráfico de enrutamiento de control de entrada sobre el nombre de host, lo que significa que necesitamos llamar al servicio con el nombre de host correcto como parte de la URL.

    • En este tutorial, no utilizamos certificados SSL. Para poder llamar a los servicios que necesitamos incluir en el /etc/hosts local de su portátil la ruta DNS adecuada para él. No se recomienda para entornos de producción.

    • Tome nota de la dirección IP externa y agregue la entrada en /etc/hosts.

       sudo vi /etc/hosts
      
      
    • Agregue una nueva línea al final del archivo.

      your.ip.aaa.xx go-login.superocilab.com
      
    • Ejecute el siguiente comando.

      cat /etc/hosts
      
    • /etc/hosts debe tener este aspecto.

      T12_1

  2. Ahora puede llamar al servicio go-login mediante una curl y generar un TOKEN de jwt llamando al punto final /login.

    curl http://go-login.superocilab.com
    curl http://go-login.superocilab.com/login
    

    T12_1

Tarea 13: despliegue del microservicio en OCI Devops mediante gráficos de Helm

  1. Vaya a su proyecto DevOps, haga clic en Pipelines de despliegue y cree un nuevo pipeline para hacer microservicio.

    T13_1

  2. Haga clic para agregar una nueva etapa que desplegar, seleccione Instalar gráficos de Helm en cluster de Kubernetes, seleccione el artefacto de helm y el artefacto de valores para go-microservice. Asegúrese de rellenar el nombre del espacio de nombres como go-microservices.

    T13_2

  3. Cree un disparador en el pipeline de compilación para iniciar el despliegue automáticamente una vez terminada la compilación.

    1. Vaya al pipeline de compilación go-microservice en el proyecto DevOps y haga clic en Agregar etapa.

    2. Seleccione Despliegue de disparador y, a continuación, haga clic en Seleccionar pipeline de despliegue y, a continuación, seleccione go-microservice-deploy.

    T13_3

    T13_3

  4. Haga clic en Iniciar ejecución manual para probar el pipeline.

    T13_4

    T13_4

  5. En la página Depura el proyecto, haga clic en Despliegues para comprobar el estado de despliegue en ejecución.

    T11_5

Tarea 14: Verificación del despliegue de microservicios básicos

  1. Vaya al terminal del host bastión y compruebe los siguientes detalles:

    • Compruebe el estado del pod.

      kubectl get pod -n go-microservices
      
    • Compruebe el host de entrada y la dirección de la aplicación.

      kubectl get ingress -n go-microservices
      

      T14_1

    • Este despliegue utiliza el tráfico de enrutamiento de control de entrada sobre el nombre de host, lo que significa que necesitamos llamar al servicio con el nombre de host correcto como parte de la URL.

    • En este tutorial, no utilizamos certificados SSL. Para poder llamar a los servicios que necesitamos incluir en el /etc/hosts local de su portátil la ruta DNS adecuada para él. No se recomienda para entornos de producción.

    • Tome nota de la dirección IP externa y agregue la entrada a /etc/hosts (también puede agregar a su máquina local).

       sudo vi /etc/hosts
      
      
    • Agregue una nueva línea al final del archivo.

      your.ip.aaa.xx go-microservice.superocilab.com
      
    • Ejecute el siguiente comando.

      cat /etc/hosts
      
    • /etc/hosts debe tener este aspecto.

      T14_1

Ahora puede llamar al servicio go-microservice.

curl curl http://go-microservice.superocilab.com

T14_1

Siguiente Paso

Para continuar con el siguiente tutorial en esta ruta de aprendizaje, haga clic aquí.

Agradecimientos

Más recursos de aprendizaje

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

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