Instalación y configuración ODM Kubernetes AWS EKS
por Diego Alexander Arias, el 7 de diciembre de 2020
IBM Operational Decision Management (ODM) es una familia de productos que utilizan TI y usuarios comerciales para crear y administrar la lógica de decisiones comerciales que se utiliza a lo largo de sus organizaciones. Permite a las empresas responder a los datos en tiempo real con sistemas inteligentes y decisiones automatizadas.
La gestión de decisiones operativas consta de dos componentes clave:
- WebSphere Decision Center proporciona un repositorio integrado y permite la gestión de reglas de negocio y lógica basada en eventos. Proporciona una gobernanza de decisiones integral, permitiendo que los usuarios de TI y empresariales trabajen en colaboración en toda una organización.
- WebSphere Decision Server proporciona herramientas basadas en Eclipse y ejecución de alto rendimiento times, Decision Server Rules y Decision Server Events, para el procesamiento de reglas y eventos.
Este proyecto implementa tecnologías de Kubernetes y Docker, para más detalle de la implementación seguir el link.
PRERREQUISITOS
Se requiere instalar y configurar las siguientes aplicaciones:
- AWS CLI - https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html
- HELM - https://github.com/helm/helm/releases
- KUBECTL - (https://kubernetes.io/docs/tasks/tools/install-kubectl/).
- EKSCTL - https://docs.aws.amazon.com/es_es/eks/latest/userguide/getting-started-eksctl.html
- Docker-desktop - https://www.docker.com/products/docker-desktop
Estos pasos nos permitirán implementar una topología en clúster de IBM Operational Decision Manager (ODM) en la nube de Amazon utilizando el servicio Elastic Kubernetes Service (EKS).

La instalación Comprende los siguientes componentes:
- Operational Decision Manager de IBM
- Amazon Elastic Kubernetes (Amazon EKS)
- Registro de contenedores elásticos de Amazon (Amazon ECR)
- Base de datos relacional de Amazon (Amazon RDS)
- Balanceador de carga de aplicaciones de Amazon (Amazon ALB)
Para complementar la información pueden revisar ODM sobre AWS EKS
1. Crear role IAM para cluster EKS
Abra la consola de IAM, Elija Roles y a continuación, Crear rol y luego seleccione EKS en la lista de servicios
Luego Seleccione para su caso de uso EKS - Cluster y continuación Siguiente:Permisos.
Seleccione Siguiente:etiquetas.
De manera opcional, añada metadatos al rol asociando etiquetas como pares de clave-valor y seleccione Siguiente:Revisar.
En nombre de rol (eks-pruebaODM-cluster), debe ser un nombre exclusivo para su rol y elija Crear rol.
2. Crear una VPC
Al crear un clúster de Amazon EKS, se deben especificar las subredes de la VPC que el clúster va a usar. Amazon EKS requiere subredes en al menos dos Zona de disponibilidad y recomienda una VPC con subredes públicas y privadas para que Kubernetes pueda crear balanceadores de carga públicos en las subredes públicas que equilibren la carga de tráfico con los pods que se ejecutan en los nodos de las subredes privadas.
Abra la consola AWS CloudFormation.
Asegure una región compatible con Amazon EKS y elija Crear stack, con nuevos recursos [estándar], y creamos el stack a partir de un template donde seleccionamos la ubicación del archivo con el template (eksODM-prueba-VPC.yaml), debemos asegurar que el template no cree NATGateway, ni Elastic IP y seleccionamos Siguiente.
Seleccionamos crear stack y esperamos que se cree el stack y la VPC.
3. Crear cluster EKS Consola administrativa de AWS
Abra la consola de Amazon EKS, elija Crear cluster y en configurar clúster rellene los siguientes campos:
- Nombre: Un nombre único para el clúster (cluster_EKS_ODM_prueba).
- Versión de Kubernetes: Versión de Kubernetes que debe usarse para el clúster (1.17).
- Rol de servicio de clúster: Seleccione el rol de IAM con el que creó Cree su rol de IAM del clúster de Amazon EKS (eks-pruebaODM-cluster).
Para los campos de cifrado de secretos, se deben tener las siguientes consideraciones y posterior al diligenciamiento, seleccionamos Siguiente.
- Cifrado de secretos: (Opcional) Seleccione habilitar el cifrado de sobres de los secretos de Kubernetes mediante AWS Key Management Service (AWS KMS).
- Etiquetas: (opcional) añada las etiquetas a su clúster para su identificación.
En la página Especificar red, seleccione valores para los siguientes campos:
- VPC: la VPC que creó anteriormente en Crear la VPC del clúster de Amazon EKS.
- Encontrará el nombre de la VPC en la lista desplegable.
- Subredes: De forma predeterminada se escogen las subredes disponibles de la VPC especificada en el campo anterior.
- Security Groups: El valor de SecurityGroups de la salida de AWS CloudFormation generada en Crear la VPC del clúster de Amazon EKS. Este grupo de seguridad tiene ControlPlaneSecurityGroup en el nombre desplegable.
Configurar el intervalo de direcciones IP del servicio Kubernetes (Opcional), especifique un valor en Service IPv4 range (Intervalo de IPv4 del servicio) si desea especificar el bloque de CIDR desde el que Kubernetes asigna direcciones IP del servicio.
En Acceso de punto de enlace del clúster, elija la opción público/privado y seleccione Siguiente:
Public and private (Público y/o privado): Permite el acceso público y privado al punto de enlace del servidor de la API Kubernetes de su clúster, De forma predeterminada, se permite el acceso desde cualquier dirección IP de origen.
En la página Configure logging (Configurar registro) puede elegir opcionalmente los tipos de registro que desea habilitar. De forma predeterminada, los tipos de registro están Disabled (Deshabilitados). Seleccione Next (Siguiente).
En la página revisar y crear, revise la información que ha introducido o seleccionado en las páginas anteriores y seleccione Crear.
El campo Status (Estado) muestra CREATING (CREANDO) hasta que termina el proceso de aprovisionamiento del clúster. Cuando se complete el aprovisionamiento del clúster (normalmente entre 10 y 15 minutos), observe los valores de API server endpoint (Punto de enlace del servidor de API) y Certificate authority (Autoridad de certificado). Se usarán en la configuración de kubectl.
4. Configurar kubeconfig
Existen varios métodos para crear o actualizar su kubeconfig. en nuestro caso utilizaremos rápidamente un kubeconfig con el update-kubeconfig comando de la AWS CLI.
Ejecutar el comando, para la creación del kubeconfig
$aws eks --region us-east-1 update-kubeconfig --name cluster_EKS_ODM_prueba
Comprobar que el entorno esté configurado correctamente, obtenga la información del clúster ejecutando el siguiente comando:
$kubectl get svc
5. Create compute
Para crear el compute, se puede utilizar Fargate – Linux o Managed nodes – Linux, para este caso utilizaremos la segunda opción. Para profundizar más en las posible opciones, podemos validar el link
Role del compute
Abra la consola de IAM, elija Rol y Crear rol, elija EC2 en la lista de Casos de uso comunes, y elija Siguiente:Permisos.
En el cuadro Políticas de filtro, escriba AmazonEKSWorkerNodePolicy y active la casilla de verificación situada a la izquierda de AmazonEKSWorkerNodePolicy, repita los pasos para la politica AmazonEKS_CNI_Policy y AmazonEC2ContainerRegistryReadOnly, poterior a esto seleccione Siguiente:Etiquetas.
De manera opcional, añada metadatos al rol asociando etiquetas como pares de clave-valor y seleccione Siguiente:Review.
- Nombre de rol: Escriba un nombre único para su rol (eks-pruebaODM-NodeInstanceRole).
- Descripción del rol: Sustituya el texto actual por el texto descriptivo (Amazon EKS - Node Group Role), a continuación elija Crear rol
Crear grupo de nodos administrados
Para crear su grupo de nodos administrados mediante la consola de administración de AWS, se debe asegurar que el estado del clúster creado previamente, se encuentre en estado ACTIVO, de lo contrario no puede crear un grupo de nodos administrados.
Abra la consola AWS EKS, elija el nombre del clúster en el que desea crear el grupo de nodos administrados y en la página del clúster, seleccione la pestaña Calcular y, a continuación, elija Agregar grupo de nodos.
En la página Configurar grupo de nodos rellene los parámetros en consecuencia y, a continuación, elija Siguiente.
- Nombre: Escriba un nombre único para el grupo de nodos administrados (NodeGroupCompute-eks-pruebaODM).
- Nombre del rol de – del nodo: Elija el rol de instancia de nodo que va a utilizar con el grupo de nodos (eks-pruebaODM-NodeInstanceRole).
- Use launch template (opcional): elija si desea utilizar una plantilla de lanzamiento existente y, a continuación, seleccione una Launch template version (opcional). Si no selecciona una versión, Amazon EKS utiliza la versión predeterminada de la plantilla.
- Kubernetes labels (opcional): puede elegir aplicar etiquetas de Kubernetes a los nodos de su grupo de nodos administrados.
- Tags (Opcional): Puede elegir etiquetar el grupo de nodos administrados de Amazon EKS. Estas etiquetas no se propagan a otros recursos del grupo de nodos, como instancias o grupos Auto Scaling.
En la página configurar compute y configuración de scaling, rellene los parámetros según corresponda y elija Next.
Para la configuración del compute del grupo de nodos, se debe tener en cuenta:
- AMI type: – Elija Amazon Linux 2 (AL2_x86_64) para instancias que no sean de GPU.
- Instance type: Elija el tipo de instancia que desea utilizar en el grupo de nodos administrados (t3.medium).
- Disk size: Escriba el tamaño del disco (20 en GiB) que se usará para el volumen raíz del nodo.
Parar la configuración de escalado del grupo de nodos, debe considerar:
- Minimum size: Especifique el número mínimo de nodos al que puede escalar el grupo de nodos administrados.
- Maximum size: Especifique el número máximo de nodos al que puede escalar el grupo de nodos administrados.
- Desired size: Especifique el número actual de nodos que debe mantener el grupo de nodos administrados durante el lanzamiento.
En la página Especificar redes, diligencie los parámetros teniendo en cuenta cada parámetros y, a continuación, elija Next (Siguiente).
- Subredes: Seleccione las subredes en las que iniciar los nodos gestionados.
- Allow remote access to nodes (opcional, pero predeterminado): El acceso SSH le permite conectarse a sus instancias y recopilar información de diagnóstico si hay algún problema.
- Par de claves SSH: Elija una clave SSH de Amazon EC2 para utilizar.
En la página Revisar y crear revise la configuración del grupo de nodos administrados y elija Crear.
Observe el estado de sus nodos y espere a que alcancen el Ready estado.
Para validar el estado de los nodos, ejecutar el comando.
$ kubectl get nodes --watch
6. Envíe las imágenes ODM al registro ECR
Amazon ECR, puede usar los registros de para alojar sus imágenes de contenedor en una arquitectura escalable y de alta disponibilidad, lo que le permite implementar contenedores para sus aplicaciones con fiabilidad.
Conectarse desde cli hacia AWS ECR
$ aws ecr get-login-password --region us-east-1 | docker login --username AWS --password-stdin <AWS-AccountId>.dkr.ecr.us-east-1.amazonaws.com
Crear instancias de repositorio ECR
Puede administrarrepositorios ECR que consten de imágenes de Docker, para lo cual se debe utilizar el comando en realcion y el parámetro (--repository-name), donde se debe enviar por cada imagen a utilizar (odm-decisioncenter, odm-decisionrunner, odm-decisionserverruntime, odm-decisionserverconsole y dbserver)
$ aws ecr create-repository --repository-name <Ingresar nombre de cada imagen> --image-scanning-configuration scanOnPush=true --region us-east-1
7. Cargar imágenes de ODM localmente
Descargue binarios de IBM passport advantage
Descargue uno o más paquetes (archivos .tgz) de IBM Passport Advantage, para ver la lista completa de imágenes de instalación de eAssembly.
Compruebe que puede ejecutar un comando de Docker, de lo contrario asegure la descarga e instalación.
$ docker ps
Cargar imágenes a un docker local
Utilizar el comando para cargar las imágenes, con el parámetro (--input), donde se debe ingresar el nombre de cada imagen.
$ docker load --input [Ingrese el nombre de cada una de las imágenes descargadas y descomprimida en formato tar.gz]
Etiquetar imágenes en docker local
Se debe etiquetar las imágenes en el registro ECR creado previamente, utilizando el comando en relación y modificando el parámetro (--repository-name), donde se debe enviar por cada imagen a utilizar (odm-decisioncenter, odm-decisionrunner, odm-decisionserverruntime, odm-decisionserverconsole y dbserver)
.
$ docker tag odm-decisioncenter:8.10.3.0-amd64 <AWS-AccountId>.dkr.ecr.us-east-1.amazonaws.com/<Ingresar nombre del tag de cada imagen>:8.10.3.0-amd64
Crear a pull secret para registro ECR
Utilizar el siguiente comando para generar un secreto de pull para las imágenes.
$ kubectl create secret docker-registry ecrodm --docker-server=<AWS-AccountId>.dkr.ecr.us-east-1.amazonaws.com --docker-username=AWS --docker-password=$(aws ecr get-login-password --region us-east-1)
Subir imágenes de docker local a repositorio ECR
Se debe cargar las imágenes en el registro ECR creado previamente, utilizando el comando en relación y teniendo en cuenta cada uno de los tag configurados en cada imagen.
$ docker push <AWS-AccountId>.dkr.ecr.eu-west-3.amazonaws.com/<Ingresar nombre del tag de cada imagen>:8.10.3.0-amd64
En una nueva lección estaremos realizando la Instalación y configuración ODM 8.10.3 - AWS EKS