Despliegue de microservicios creados con helidon, en oracle kubernetes engine a través de oracle wercker. Parte 1 de 2.

Por Rolando Carrasco Oracle ACE Groundbreaker Ambassador
Publicado en Febrero 2019

Revisado por Juan Pablo Guizado




Oracle tiene diferentes herramientas y plataformas para el desarrollo y despliegue de aplicaciones, microservicios sobre Kubernetes.
Podemos identificar algunos componentes, relativamente obvios, así como algunos otros que son proyectos open-source apoyados por Oracle. Por ejemplo:

  1. Proyecto Helidon.io

  2. Oracle Kubernetes Engine. Esto está basado en Oracle Cloud Infrastructure (OCI),  y es tal cual un motor para el despliegue de clústers de Kubernetes

  3. Oracle Wercker. Es una herramienta de entrega continua para contenedores. Esto puede ser utilizado para desplegar contendores, en cualquier plataforma que soporte clúster de Kubernetes.

  4. GraalVM

  5. Y si quisiéramos irnos aun más lejos, podemos identificar a Oracle Fn Project y Oracle Functions, como una plataforma Serverless para la ejecución de funciones. De eso ya hemos escrito algunos artículos que puedes encontrar aquí: http://oracleradio.blogspot.com


En esta serie artículos vamos a cubrir los primeros tres puntos de la lista pasada:

  1. Vamos a aprovisionar un clúster de Kubernetes sobre Oracle Cloud Infrastructure

  2. Vamos a configurar el Command Line Interface de OCI, así como obtener el archivo de configuración del cluster, para poderlo gestionar a través de kubectl

  3. Vamos a crear un microservicio muy sencillo, así como lo necesario para que viva en un contendor de Docker

  4. Vamos a crear un Pipeline de despliegue hacia el cluster, usando Wercker



APROVISIONAMIENTO DE CLUSTER DE KUBERNETES EN OKE.


Para poder hacer el aprovisionamiento, requieres de lo siguiente:

  1. Una suscripción (puedes ser el trial de 30 días y 300 USD que te da Oracle), activa hacia Oracle Cloud Services.
  2. Configurar la política para permitir la gestión de recursos para uso de OKE
  3. Crear el clúster de Kubernetes
  4. Instalar el CLI de OCI
  5. Crear el Kubeconfig
  6. Probar la gestión del clúster desde kubectl (tenerlo también instalado).

 

Suscripción en Oracle Cloud Services


Este paso es muy rápido, tal vez ya tienes una suscripción activa o tuviste alguna en el pasado, de ser así, este paso te lo puedes brincar.

En caso nunca hayas sacado una suscripción de Oracle Cloud, lo que debes hacer es entrar a:

  1. https://cloud.oracle.com/home
  2. Saldrá una pantalla como esta:



  3. Da click en el botón de Try for Free
  4. Eso te llevará a esta pantalla:



  5. Llena tus datos personales
  6. Abajo en esa misma pantalla, verás lo siguiente:



  7. Pon tus datos del teléfono móvil al cual te mandarán un código de verificación. Si eso no te llega, pide ayuda a través del Chat:




  8. Una vez que te den el código de verificación, se habilitará un formulario en la parte de debajo de la pantalla, que te pedirá tus datos de tarjeta de crédito. Estos solo son para ser utilizados, en caso compres el servicio, mientras sea un trial no se te hará un cargo; sin embargo, sí es necesario metas dicha información
  9. Una vez hecho esto, te llegará un correo similar al siguiente:



  10. Y más abajo:




    Al darle click a ese botón azul, te llevará a esta página:




    Usa las credenciales que te llegaron en el correo mencionado anteriormente, y te pedirá que hagas un reset de password. Una vez hecho esto, tendrás acceso al dashboard:



  11. Con esto ya tienes acceso a Oracle Cloud Services.




Configuración de política para acceso a recursos por parte de OKE


Para llevar a cabo esta actividad, debes entrar al Dashboard (ver paso anterior) y dar click en el botón que tiene tres líneas horizontales:




Al darle click a ese botón, saldrá un menú:




Da click en Compute, el que está señalado en la pantalla anterior. Al darle click te llevará  las página principal para la gestión de Oracle Cloud Infrastructure (OCI):




Estando aquí, vuele a dar click en el Menú que tiene las tras rayas horizontales



 

Al darle click allí, saldrá este otro menú:



 

Busca la sección de Developer Services:




Da click en la opción de Container Clusters (OKE) y saldrá esta pantalla:




Fíjate bien en el mensaje que dice Cluster Requirements:




Allí toma nota del policy statement que ahí viene:

allow service OKE to manage all-resources in tenancy

Y da click en el hipervínculo que en la pantalla anterior dice “here”. Esto nos llevará a la gestión de políticas, en donde justamente vamos a crear una nueva en donde incluyamos el statement.

Te llevará a esta pantalla:




Fíjate la sección de List Scope y COMPARTMENT. Ahí escoge el compartment que aparece. Por ejemplo:



 

Al hacer esto, del lado derecho saldrá esta pantalla:


Da click en el botón de Create Policy:

Eso te llevará a la siguiente pantalla:


Llena los datos como lo ves en la imagen anterior, y en Statement, copia el statement que copiamos hace unos pasos atrás.

Una vez hecho eso dale click en el botón de “+” que te señalo en la pantalla. Finalmente da click en el botón de Create:




Esto te regresará a la pantalla de políticas, con esta nueva política recién creada:



 

Ahora ya tienes tres políticas creadas, y la primera que aparece debe ser la que recién creamos.

Una vez hecho esto, estamos listos para crear el clúster de Kubernetes sobre OCI.

 


Crear clúster de Kubernetes


Ya que hayas completado el paso de la política, debes volver a la página principal de OKE, para esto vuelve a dar click en el Menú de la esquina superior izquierda -> Developer Services -> Containers Clusters:




Esto te llevará a esta página:


Fíjate cómo ya tenemos habilitado el botón de Create Cluster.

Da click allí:

Te saldrá el siguiente formulario:



 

Para nuestro ejercicio, vamos a usar la opción de  Quick Create, para lo cual, lo único que debes de escribir, es el nombre; en mi caso usaré este: spsk8scluster1




Revisa las opciones que te da el formulario, en realidad no hay nada adicional a cambiar. Asegúrate de usar:




El resto de opciones sí revísalas, pero no las muevas; el quickstart hará todo por ti. Pero sí es bueno que veas qué va a crear por ti. Entre otras cosas, te pedirá un SSH key, en caso te quieras conectar a los nodos del cluster vía ssh. Si eso lo requieres, genera una llave y ahí ponla. En caso contrario solo ve hasta abajo del formulario y da click en:



 

Al darle click, se generarán las instancias de OCI necesarias; así como la configuración de red, de seguridad, etc.

Después de dar click, verás una pantalla similar a esta:




Y mas debajo de esta misma pantalla:



 

Poco a poco irán saliendo los datos y cambiará a estatus de ACTIVE. Esto puede tardar unos minutos, pero se paciente mientras se aprovisiona todo lo necesario para el clúster de Kubernetes sobre OKE.

Tienes que esperar hasta que aparezca en estado Active:




Una vez que lo veas en active, tendrás a tu clúster de Kubernetes creado. Si tienes curiosidad, revisa todo lo que aprovisionó en términos de redes, subredes, instancias de cómputo, seguridad, etc. Todo lo aprovisionó Oracle por detrás, pero es bueno que reconozcas qué fue lo que se hizo, y no lo veas como una caja negra.

 


Instalar el CLI de OCI


Ya que está creado el clúster, lo que vamos a hacer es gestionarlo desde nuestras estaciones de trabajo. Para esto vamos a instalar dos cosas:

  1. El command line interface de OCI
  2. Kubectl

El primero es una utilería de Oracle para no solo gestionar el clúster de kubernetes, pero en sí toda la infraestructura de OCI.  Con esto vamos a crear el kubeconfig, para poder gestionarlo con kubectl.

El CLI y Kubectl los puedes ejecutar tanto en Windows como Linux. En mi caso usaré Linux, que representará  la máquina desde la cual quiero gestionar al clúster.

Entra a dicha máquina LINUX y ejecuta lo siguiente:


bash -c "$(curl -L  https://raw.githubusercontent.com/oracle/oci-cli/
master/scripts/install/install.sh)"


Al hacerlo, pasará lo siguiente:




Mi sugerencia es que dejes todo por default, esto es simplemente una demo; después, para cosas ya productivas, debes usar otras rutas y demás. Pero por lo pronto, usemos los valores por default.

Posteriormente te preguntará:



 

Igualmente deja el default. Y así seguirá el instalador, al final deberás poder ejecutar el comando: oci.




Ya que el CLI fue instalado, debemos realizar el setup para que apunte a nuestras instancias. Para ejemplo, ejecuta el siguiente comando:


oci setup config
      


Al ejecutarlo, saldrá esto:



 

Deja las ubicaciones por default, y da enter. Esta configuración te va a pedir tanto el OCID del usuario como del tenant. Esto sácalos de las pantallas de OCI, es decir:


Y en Tenant, lo puedes sacar de aquí:




Cuando le des click al Tenancy, te llevará a esta página:




Ya que tengas esos datos, esto es lo que te pedirá el setup:





 

En sí, te va a pedir:

  1. La ubicación del archivo config: /root/.oci/config
  2. El OCID del usuario con el que estás confgurando.
  3. El OCI del tenant
  4. La región: us-ashburn-1. En mi caso fue se
  5. El te generará un juego de llaves RSA. Esto hazlo pues las vamos a usar mas adelante
  6. Te pedirá la ubicación de dichas llaves así como el passphrase

Una vez que hayas hecho esto, tenemos que seguir la sugerencia que el propio script nos da:


If you haven't already uploaded your public key through the console,
follow the instructions on the page linked below in the section 'How to
upload the public key':

https://docs.us-phoenix-1.oraclecloud.com/Content/API/Concepts/apisigningkey.htm#How2

 



Para realizar esto, ten a la mano las llaves que se generaron por el script. Me refiero a estas:



 

El script generó: rcpotnkey.pem y rcpotnkey_public.pem.

Vuelve al navegador web y ve a esta ubicación:



 

Que es la sección de Identity->Users

Ahí da click en el usuario con el que realizamos la configuración del CLI:




Esto te llevará a:




Da click en el botón de Add Public Key y pega la llave pública recientemente creada:



 

Al darle click en Add, ya la verás ahí listada:




Con esto, ya nuestro oci CLI está configurado y podría realizar llamadas a tus instancias.

El siguiente paso es configurar el kubeconfig de tu cluster de Kubernetes.





Creación de Kubeconfig


Antes de realizar los siguientes pasos, debes de tener instaldao el kubectl en la máquina donde estás ejecutando estos pasos. Para instalar el kubectl ve a este ubicación:

https://kubernetes.io/docs/tasks/tools/install-kubectl/


Una vez instalado el kubectl, puedes seguir con los siguiente pasos:

Para crear el kubeconfig, tu CLI debe estar completamente configurado (con los pasos anteriores); ahora ve a la página principal del cluster de Kubernetes que creamos en secciones pasadas, es decir:




Da click en el botón de Access Kubeconfig, saldrá esto:




Hay que ejecutar ambos pasos:


mkdir -p $HOME/.kube
oci ce cluster create-kubeconfig --cluster-id 
ocid1.cluster.oc1.iad.aaaaaaaaaeydkmzqmmzwemzwe525yytenjvmy4dcnbqmererteodghc3wmnjsgi3t 
--file $HOME/.kube/config --region us-ashburn-1



Ya que generes el archivo de configuración del clúster de kubernetes, podrás gestionarlo usando el kubectl:




En la imagen ya aparecen pods que yo he publicado, pero en tu caso deberás de ver cero resultados, pero el clúster te debe de responder.

En la siguiente parte de este artículo, vamos a crear un microservicio con Helidon.io; vamos a meterlo en un contenedor y finalmente automatizaremos su publicación hacia el clúster de Kubernetes creado en esta primera parte.




Rolando Carrasco es un Oracle ACE enfocado a las tecnologías de Middleware. Su experiencia es de casi 15 años en la integración de aplicaciones. Actualmente se desempeña como CTO de una firma mexicana de consultoría, llamada S&P Solutions. Rolando ha trabajado con tecnología Oracle desde el 2001, fue parte del equipo de Product Management de Oracle Fusion Middleware, por lo que tiene un background grande en el uso de estas tecnologías a lo largo de la región de latinoamérica. Rolando es co-líder del grupo de usuarios de Oracle en México.

Este artículo ha sido revisado por el equipo de productos Oracle y se encuentra en cumplimiento de las normas y prácticas para el uso de los productos Oracle.