Documentación de autoayuda
< Todos los temas
Imprimir

Introspección WLS – Verrazzano

Verrazano de Introspección a despliegue de Weblogic

Contents

Creación del cluster OKE 3

Instalación de Verrazzano 7

Introspección 9

Configuración de proyecto 9

Ejecución de la introspección 10

Configuración de cambios 11

Generación de la imagen 13

Despliegue 15

Despliegue de los componentes 15

Despliegue de la aplicación 18

Acceso a las aplicaciones desplegadas 20

Cambios específicos para la prueba 21

Cambios en el model/imagen 21

Cambios en el configmap asociado al model y en los secrets 23

Cambios en los componentes Verrazzano 24

Scripts 28

Otros 29

Creación del cluster OKE

Desde “Developer Services” del cloud, “Kubernetes Clusters (OKE)”

Importante, la versión de Kubernetes tiene que estar soportada por la versión de Verrazzano que vamos a instalar.

En el momento de esta instalación el tipo de networking soportado era únicamente “Flannel”

En este punto es recomendable incrementar el tamaño del Boot Volume ya que el valor por defecto de 46Gb es muy pequeño (specify a custom boot volume size) y da problemas pronto.

Una vez creado el cluster para acceder a través de línea de comando, kubectl, seleccionar “Access Your Cluster” en la página del propio cluster. Allí te proporciona los comandos para crear el kubeconfig desde una máquina de bastión.

Subnets necesarias:

Service LB subnet 1: En nuestro ejemplo “desa-lb-subnet” (subnet donde se publican los servicios)

Kubernetes API endpoint subnet: En nuestro ejemplo “desa-cluster-subnet” o “desa-lb-subnet” para que sea público (subnet donde se publica el API de kubernetes y donde se instala el control plane)

Worker node subnet: En nuestro ejemplo “desa-private-subnet” (subnet donde se ejecutan los nodos)

El control plane lo crea en la subnet. Hay que tener en cuenta en las security lists de las subnets en el ingress y en los egress las comunicaciones:

  • 443 entrada a los servicios
  • 6443 api de kubernetes
  • 12250 workers
  • otros

Instalación de Verrazzano

Desde una máquina bastión con kubectl configurado:

curl -LO https://github.com/verrazzano/verrazzano/releases/download/v1.5.2/verrazzano-1.5.2-linux-amd64.tar.gz

tar xvf verrazzano-1.5.2-linux-amd64.tar.gz

sudo cp verrazzano-1.5.2/bin/vz /usr/local/bin

Crear un fichero vz.yaml con el siguiente contenido (ajustar según sea requerido):

apiVersion: install.verrazzano.io/v1beta1

kind: Verrazzano

metadata:

name: example-verrazzano

spec:

profile: prod

components:

argoCD:

enabled: true

velero:

enabled: true

Lanzar la instalación:

vz install -f vz.yaml –context context-telcovz

Una vez terminada se puede verificar el estado final y las urls de acceso a la plataforma:

vz status –context context-telcovz

Verrazzano Status

Name: example-verrazzano

Namespace: default

Profile: prod

Version: 1.5.2

State: Ready

Available Components: 24/25

Access Endpoints:

argoCDUrl: https://argocd.default.143.47.46.42.nip.io

consoleUrl: https://verrazzano.default.143.47.46.42.nip.io

grafanaUrl: https://grafana.vmi.system.default.143.47.46.42.nip.io

keyCloakUrl: https://keycloak.default.143.47.46.42.nip.io

kialiUrl: https://kiali.vmi.system.default.143.47.46.42.nip.io

openSearchDashboardsUrl: https://osd.vmi.system.default.143.47.46.42.nip.io

openSearchUrl: https://opensearch.vmi.system.default.143.47.46.42.nip.io

prometheusUrl: https://prometheus.vmi.system.default.143.47.46.42.nip.io

rancherUrl: https://rancher.default.143.47.46.42.nip.io

Para obtener las passwords de acceso a las consolas:

kubectl -n argocd get secret argocd-initial-admin-secret –context context-telcovz -o jsonpath={.data.password} | base64 –decode; echo

admin/xxxxx

kubectl get secret –namespace verrazzano-system verrazzano –context context-telcovz -o jsonpath={.data.password} | base64 –decode; echo

verrazzano/xxxxx

kubectl get secret –namespace keycloak keycloak-http –context context-telcovz -o jsonpath={.data.password} | base64 –decode; echo

keycloakadmin/xxxxx

kubectl get secret –namespace cattle-system rancher-admin-secret –context context-telcovz -o jsonpath={.data.password} | base64 –decode; echo

admin/xxxxx

Introspección

Creación de proyecto en la Weblogic Kubernetes Toolkit UI.

Requiere: JDK y Weblogic de la versión a introspeccionar (recomendado “Weblogic Remote Console” para hacer cambios en el modelo). Para este punto el podman/docker no es necesario.

File -> New Project (Crear Proyecto en un directorio específico)

Configuración de proyecto

Ejecución de la introspección

File -> Add Model -> Discover Model (Online si es remoto requiere descargar binarios posteriormente), (Offline requiere acceso al filesystem)

Binarios (Deployments), puede darse 2 situaciones en las que no se obtengan durante el import:

  • En las introspecciones remotas o
  • Si no funciona la descarga de binarios (en las que no son remotas)

En estos casos hay que generar un fichero “archive.zip”:

  • Crear una subcarpeta “wlsdeploy\applications”
  • Copiar ahí los wars y ears
  • Se ubicará en el directorio de los modelos del proyecto
  • Añadirlo en el proecto con “File->Add Model->Add Archive File”.

El resultado tiene que ser similar al siguiente:

Dentro del directorio models:

(Los ficheros con el sufijo “-original” se generan renombrando los iniciales cuando se hace un “Prepare” del model)

Hay que validar el modelo “validate model” una vez validado, se ejecuta el “prepare model”, que prepara los yaml en este caso para Verrazzano. (Si hubiésemos elegido operator, los yaml se prerararian para despliegue en WLS Operator, sin Vz de por medio)

Configuración de cambios

En el modelo, en la parte “Code View”, podemos ajustar los valores de las variables que se quieran aplicar a la imagen auxiliar, por ejemplo, usuarios y passwords, puertos, etc…

Si modificamos alguno de los valores, estas variables aparecerán en el fichero variables.properties.

Generación de la imagen

Se puede realizar desde una máquina distinta a donde se realizó la introspección, siempre y cuando nos llevemos el proyecto con el modelo preparado.

Requiere: JDK y podman/docker para generar la imagen. En este punto no necesita la instalación de WLS.

File->Open->Abrir proyecto

En el OCI destino, es necesario crear un repository privado de OCIR para subir la imagen auxiliar generada, en nuestro ejemplo ejemplo “telco.cohi”.

Es posible configurarlo para que se cree automáticamente con el primer push.

Preparamos la generación de la imagen auxiliar, proporcionando los datos para subirla al repositorio de OCIR.

También proporcionamos los datos para descargar la imagen base del repositorio oficial de Oracle, teniendo en cuenta que el usuario antes ha tenido que aceptar las condiciones de las imágenes en la propia web del repositorio oficial de Oracle.

Se pueden especificar credenciales para el dockerhub si no funciona el acceso anónimo.

Se genera la imagen con “Create Auxiliary Image” y luego se hace un push “Push Auxiliary Image” para que la suba al repositorio OCIR.

Despliegue

En este punto se requiere: kubectl para desplegar la imagen

Despliegue de los componentes

Configuración del cliente kubectl y chequeo de la conectividad:

Chequeamos la instalación de verrazzano:

Introducimos el usuario y password de weblogic del usuario administrador del dominio de la imagen creada especificando el secret (p.ej. “cohi-weblogic-credentials) donde debe almacenarse.

También se especifica el tag completo de la imagen primaria y los datos para descargar la imagen primaria del registro oficial de Oracle.

Para ello, también se puede especificar un secret (p.ej. “domain secret”) para que se almacenen ahí las credenciales de descarga.

Introducimos los datos para descargar la imagen auxiliar del repositorio OCIR.

Se puede especificar un secret (p.ej. “model secret”) para que se almacenen ahí las credenciales de descarga.

Rellenamos el resto de las variables cuyos valores se quiera sobreescribir (irán al configmap asociado al componente):

Y los secrets, por ejemplo con los usuarios y passwords para los datasources:

Ejecutamos “Deploy Component” y se crearán/actualizarán todos los objetos indicados, inicialmente sin crear ningún pod hasta el último paso donde se despliega la aplicación.

Despliegue de la aplicación

Ponemos el número de versión de la aplicación y añadimos como componentes los que hemos desplegado en el anterior paso.

Además, podemos añadir los “Trait” que sean necesarios, como por ejemplo para publicar la consola en el ingress de Istio. En Host se indica el servicio y en puerto el port y en el path la ruta a acceder desde el navegador.

Una vez ejecutemos “Deploy Application”, se arrancará un job y un pod “introspector” que se ocupará de crear el Admin Server y una vez arrancado este, el resto de manejados.

Mas adelante, este pod “introspector” también detectará cambios que aplicará reiniciando el adminserver y los manejados. Los cambios que provocan estos reinicios son los que se realizan en el componente (a través del interfaz gráfico o editando directamente el yaml). Los cambios realizados sobre el objeto de la aplicación no provocan reinicios del adminserver/manejados.

Los cambios realizados al componente que se aplican automáticamente son, por ejemplo: Cambio de la imagen base o auxiliar, Cambios en las variables de entorno, etc. Hay otro tipo de cambios que no se aplican automáticamente (al menos con la configuración por defecto), por ejemplo, las anotaciones. Para estos cambios es necesario eliminar la aplicación y volverla a desplegar o aplicar algún cambio a una variable de entorno definida a tal efecto.

Acceso a las aplicaciones desplegadas

En la consola accedemos al submenú de “Istio/VirtualServices” y seleccionamos el/los virtual service que se han creado. En este caso la consola de weblogic.

Al seleccionarlo podremos ver la dirección donde atiende las peticiones https://cohi-app.cohi-ns.143.47.60.68.nip.io/console:

Cambios específicos para la prueba

Cambios en el model/imagen

  • Coherence
    • Bajados los niveles de log y la rotación y límite de ficheros
    • Cambiado el modo de replicación del cluster de coherence a “Unicast”
    • Añadidas las direcciones WKA para el unicast
    • Añadido puerto para el unicast.
    • Cambiadas las cadenas de conexión de los datasources
    • Cambiadas las direcciones de listen address y cluster address.
CoherenceResource:

CoherenceClusterParams:

ClusteringMode: unicast

TimeToLive: 0

ClusterListenPort: ‘@@PROP:Coherence.COHI_Coherence.ClusterListenPort@@’

CoherenceClusterWellKnownAddress:

WKA1:

ListenAddress: ‘@@PROP:Coherence.COHI_Coherence.WKA1.ListenAddress@@’

WKA2:

ListenAddress: ‘@@PROP:Coherence.COHI_Coherence.WKA2.ListenAddress@@’

WKA3:

ListenAddress: ‘@@PROP:Coherence.COHI_Coherence.WKA3.ListenAddress@@’

WKA4:

ListenAddress: ‘@@PROP:Coherence.COHI_Coherence.WKA4.ListenAddress@@’

WKA5:

ListenAddress: ‘@@PROP:Coherence.COHI_Coherence.WKA5.ListenAddress@@’

WKA6:

ListenAddress: ‘@@PROP:Coherence.COHI_Coherence.WKA6.ListenAddress@@’

WKA7:

ListenAddress: ‘@@PROP:Coherence.COHI_Coherence.WKA7.ListenAddress@@’

JDBC.UOD_CATALG1_DS_XA.URL=jdbc:oracle:thin:@(description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1521)(host=adb.eu-madrid-1.oraclecloud.com))(connect_data=(service_name=g29dbebba3538cf_desa_high.adb.oraclecloud.com))(security=(ssl_server_dn_match=yes)))

JDBC.UOD_CLIENT1_DS_XA.URL=jdbc:oracle:thin:@(description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1521)(host=adb.eu-madrid-1.oraclecloud.com))(connect_data=(service_name=g29dbebba3538cf_desa_high.adb.oraclecloud.com))(security=(ssl_server_dn_match=yes)))

JDBC.UOD_CNALES1_DS_XA.URL=jdbc:oracle:thin:@(description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1521)(host=adb.eu-madrid-1.oraclecloud.com))(connect_data=(service_name=g29dbebba3538cf_desa_high.adb.oraclecloud.com))(security=(ssl_server_dn_match=yes)))

JDBC.UOD_COBROS1_DS_XA.URL=jdbc:oracle:thin:@(description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1521)(host=adb.eu-madrid-1.oraclecloud.com))(connect_data=(service_name=g29dbebba3538cf_desa_high.adb.oraclecloud.com))(security=(ssl_server_dn_match=yes)))

JDBC.UOD_COCOTE1_DS_XA.URL=jdbc:oracle:thin:@(description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1521)(host=adb.eu-madrid-1.oraclecloud.com))(connect_data=(service_name=g29dbebba3538cf_desa_high.adb.oraclecloud.com))(security=(ssl_server_dn_match=yes)))

JDBC.UOD_GESTOR1_DS_XA.URL=jdbc:oracle:thin:@(description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1521)(host=adb.eu-madrid-1.oraclecloud.com))(connect_data=(service_name=g29dbebba3538cf_desa_high.adb.oraclecloud.com))(security=(ssl_server_dn_match=yes)))

JDBC.UOD_GIFTRA1_DS_XA.URL=jdbc:oracle:thin:@(description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1521)(host=adb.eu-madrid-1.oraclecloud.com))(connect_data=(service_name=g29dbebba3538cf_desa_high.adb.oraclecloud.com))(security=(ssl_server_dn_match=yes)))

JDBC.UOD_GISSTE1_DS.URL=jdbc:oracle:thin:@(description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1521)(host=adb.eu-madrid-1.oraclecloud.com))(connect_data=(service_name=g29dbebba3538cf_desa_high.adb.oraclecloud.com))(security=(ssl_server_dn_match=yes)))

JDBC.UOD_INUBIC1_DS_XA.URL=jdbc:oracle:thin:@(description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1521)(host=adb.eu-madrid-1.oraclecloud.com))(connect_data=(service_name=g29dbebba3538cf_desa_high.adb.oraclecloud.com))(security=(ssl_server_dn_match=yes)))

Cluster.COHIcohCCHE.ClusterAddress=cohi-cohicohcche01:36000,cohi-cohicohcche02:36000,cohi-cohicohcche03:36000,cohi-cohicohcche04:36000

Cluster.COHIcohPRXY.ClusterAddress=cohi-cohicohprxy01:36000,cohi-cohicohprxy02:36000

Cluster.COHIcohTEST.ClusterAddress=cohi-cohicohtest01:36000

Coherence.COHI_Coherence.ClusterListenPort=9001

Coherence.COHI_Coherence.WKA1.ListenAddress=cohi-cohicohcche01

Coherence.COHI_Coherence.WKA2.ListenAddress=cohi-cohicohcche02

Coherence.COHI_Coherence.WKA3.ListenAddress=cohi-cohicohcche03

Coherence.COHI_Coherence.WKA4.ListenAddress=cohi-cohicohcche04

Coherence.COHI_Coherence.WKA5.ListenAddress=cohi-cohicohprxy01

Coherence.COHI_Coherence.WKA6.ListenAddress=cohi-cohicohprxy02

Coherence.COHI_Coherence.WKA7.ListenAddress=cohi-cohicohtest01

Server.COHIcohCCHE01.AdministrationPort=9002

Server.COHIcohCCHE01.ListenAddress=cohi-cohicohcche01

Server.COHIcohCCHE01.ListenPort=36000

Server.COHIcohCCHE02.AdministrationPort=9002

Server.COHIcohCCHE02.ListenAddress=cohi-cohicohcche02

Server.COHIcohCCHE02.ListenPort=36000

Server.COHIcohCCHE03.AdministrationPort=9002

Server.COHIcohCCHE03.ListenAddress=cohi-cohicohcche03

Server.COHIcohCCHE03.ListenPort=36000

Server.COHIcohCCHE04.AdministrationPort=9002

Server.COHIcohCCHE04.ListenAddress=cohi-cohicohcche04

Server.COHIcohCCHE04.ListenPort=36000

Server.COHIcohPRXY01.AdministrationPort=9002

Server.COHIcohPRXY01.ListenAddress=cohi-cohicohprxy01

Server.COHIcohPRXY01.ListenPort=36000

Server.COHIcohPRXY02.AdministrationPort=9002

Server.COHIcohPRXY02.ListenAddress=cohi-cohicohprxy02

Server.COHIcohPRXY02.ListenPort=36000

Server.COHIcohTEST01.AdministrationPort=9002

Server.COHIcohTEST01.ListenAddress=cohi-cohicohtest01

Server.COHIcohTEST01.ListenPort=36000

Server.COHIwladmin0.AdministrationPort=9002

Server.COHIwladmin0.ChannelGestion.ClusterAddress=cohi-cohiwladmin0

Server.COHIwladmin0.ChannelGestion.ListenAddress=cohi-cohiwladmin0

Server.COHIwladmin0.ChannelGestion.ListenPort=23601

Server.COHIwladmin0.ChannelGestion.PublicAddress=cohi-cohiwladmin0

Server.COHIwladmin0.ChannelGestion.PublicPort=23601

Server.COHIwladmin0.ListenAddress=cohi-cohiwladmin0

Server.COHIwladmin0.ListenPort=23600

  • Núcleos WCV2
    • Listen address y direcciones de cluster.
    • Bajados los niveles de log y la rotación y límite de ficheros
  • JMS
    • Listen address y direcciones de cluster.
    • Corregidos tópicos con error destination vacío.
    • Bajados los niveles de log y la rotación y límite de los ficheros

Cambios en el configmap asociado al model y en los secrets

  • Coherence
    • Prueba para verificar la sobreescritura por el configmap: cambiadas las cadenas de conexión de los datasources y el listen port del AdminServer:
cohi-overrides.properties: >-

JDBC.UOD_CATALG1_DS_XA.URL=jdbc:oracle:thin:@(description=

(retry_count=30)(retry_delay=3)(address=(protocol=tcps)(port=1521)(host=adb.eu-madrid-1.oraclecloud.com))(connect_data=(service_name=g29dbebba3538cf_desa_high.adb.oraclecloud.com))(security=(ssl_server_dn_match=yes)))

Server.COHIwladmin0.ListenPort=33000

    • Cambiados los usuarios y password de los datasources en los secrets.
    • Cambiados los usuarios y password de descarga de imagen base y auxiliar en los secrets.
  • Núcleos WCV2
    • Cambiadas las cadenas de conexión de los datasources:
    • Cambiados los usuarios y password de los datasources en los secrets.
    • Cambiados los usuarios y password de descarga de imagen base y auxiliar en los secrets.
  • JMS
    • Cambiadas las cadenas de conexión de los datasources:
    • Cambiados los usuarios y password de los datasources en los secrets.
    • Cambiados los usuarios y password de descarga de imagen base y auxiliar en los secrets.

Cambios en los componentes Verrazzano

  • Coherence
    • Añadidos JAVA_OPTIONS de configuración de coherence por cada cluster:

-Dcoherence.reporter.output.directory=/scratch/logs/cohi/report

-Dcoherence.mode=prod -Doracle.coherence.machine=${HOSTNAME}

-Dmovistar.coherence.proxyaddress=${HOSTNAME}

-Dtangosol.coherence.role=CacheServer

-Dmovistar.coherence.cacheenabled.infra=true

-Dmovistar.coherence.cacheenabled.servicio=true

-Dmovistar.coherence.cacheenabled.var=true

-Dmovistar.coherence.cacheenabled.drot=true

-Dmovistar.coherence.cacheenabled.servicio.cata=true

-Dtangosol.coherence.ttl=0

-Dtangosol.coherence.localhost=127.0.0.1

-Djava.net.preferIPv4Stack=true

-Dcoherence.reporter.output.directory=/scratch/logs/cohi/report

-Dcoherence.mode=prod -Doracle.coherence.machine=${HOSTNAME}

-Dmovistar.coherence.proxyaddress=${HOSTNAME}

-Dtangosol.coherence.role=ProxyServer

-Dmovistar.coherence.proxyenabled.infra=true

-Dmovistar.coherence.proxyenabled.servicio=true

-Dmovistar.coherence.proxyenabled.var=true

-Dmovistar.coherence.proxyenabled.drot=true

-Dmovistar.coherence.proxyenabled.servicio.cata=true

-Dmovistar.coherence.proxyport.infra=36102

-Dmovistar.coherence.proxyport.servicio=36112

-Dmovistar.coherence.proxyport.var=36122

-Dmovistar.coherence.proxyport.drot=36132

-Dmovistar.coherence.proxyport.servicio.cata=36142

-Dtangosol.coherence.ttl=0

-Dtangosol.coherence.localhost=127.0.0.1

-Djava.net.preferIPv4Stack=true

-Dtangosol.coherence.cacheconfig=/coherenceclient/cache_config_client_TDELZ.xml

-Dtangosol.coherence.distributed.localstorage=false

-Dtangosol.coherence.ttl=0

-Dtangosol.coherence.localhost=127.0.0.1

-Djava.net.preferIPv4Stack=true

    • Añadido el configmap para los clientes:

volumeMounts:

– mountPath: /coherenceclient

mountPropagation: None

name: coherence-vol

volumes:

– configMap:

name: cache-config-client

name: coherence-vol

    • Cambiados los parámetros de memoria según los clusters o admin:

– name: USER_MEM_ARGS

value: ‘-Xms64m -Xmx256m’

– name: USER_MEM_ARGS

value: ‘-Xms1g -Xmx1g’

    • Desactivado el uso de Istio para que funcione coherence correctamente:

annotations:

sidecar.istio.io/inject: ‘false’

    • Añadido el “Ingress trait” al componente de aplicación para poder acceder a la consola de weblogic y a la aplicación de prueba:
– trait:

apiVersion: oam.verrazzano.io/v1alpha1

kind: IngressTrait

spec:

rules:

– destination:

host: cohi-cohiwladmin0

port: 33000

paths:

– path: /console

pathType: prefix

– destination:

host: cohi-cohicohtest01

port: 36000

paths:

– path: /CoherenceToolsEE5

pathType: prefix

  • Núcleos WCV2
    • Incrementado los tiempos de la sonda de readiness

readinessProbe:

failureThreshold: 5

initialDelaySeconds: 900

periodSeconds: 60

successThreshold: 1

timeoutSeconds: 5

    • Añadido variables de arranque: zookeeper, fichero de coherence

– name: tap.config-server.connection-string

value: zookeeper.zk-ns:2181

– name: tap.cache.config-file

value: /coherenceclient/cache_config_client_TDELZ.xml

– name: TelcoPropertySource.zookeper.connectionString

value: zookeeper.zk-ns:2181

    • Añadido configmap de coherence

volumeMounts:

– mountPath: /coherenceclient

mountPropagation: None

name: coherence-vol

volumes:

– configMap:

name: cache-config-client

name: coherence-vol

    • Cambiados los parámetros de memoria según los clusters o admin:

– name: USER_MEM_ARGS

value: ‘-Xms64m -Xmx256m’

– name: USER_MEM_ARGS

value: ‘-Xms8g -Xmx8g’

– name: USER_MEM_ARGS

value: ‘-Xms16g -Xmx16g’

    • Añadido el “Ingress trait” al componente de aplicación para poder acceder a la consola de weblogic:
– trait:

apiVersion: oam.verrazzano.io/v1alpha1

kind: IngressTrait

spec:

rules:

– destination:

host: wcv2-wcv2wladmin0

port: 23870

paths:

– path: /console

pathType: prefix

  • JMS
    • Añadido variables de arranque: zookeeper, fichero de coherence

– name: tap.config-server.connection-string

value: zookeeper.zk-ns:2181

– name: tap.cache.config-file

value: /coherenceclient/cache_config_client_TDELZ.xml

– name: TelcoPropertySource.zookeper.connectionString

value: zookeeper.zk-ns:2181

    • Añadido configmap de coherence

volumeMounts:

– mountPath: /coherenceclient

mountPropagation: None

name: coherence-vol

volumes:

– configMap:

name: cache-config-client

name: coherence-vol

    • Añadido el “Ingress trait” al componente de aplicación para poder acceder a la consola de weblogic:
– trait:

apiVersion: oam.verrazzano.io/v1alpha1

kind: IngressTrait

spec:

rules:

– destination:

host: wjms-wjmswladmin0

port: 23740

paths:

– path: /console

pathType: prefix

Scripts

Es posible ejecutar la generación de imágenes y el despliegue de los componentes mediante scripts. De esta manera se pueden incluir dentro de Jobs de CI/CD.

  • Creación y parcheo de imagen base (00-generateBaseImage.sh): la herramienta proporciona el script de generación de imágenes base en el submenú “image” en la pestaña “Code View->Primary Image”. Este script tiene un bug al pasar el nombre de la variable de entorno “–passwordEnv={ORACLE_SUPPORT_PASS}” debería ser “–passwordEnv=ORACLE_SUPPORT_PASS”
  • Generación de imagen (01-generateImage.sh): La herramienta proporciona el script de generación de imágenes en el submenú “image” en la pestaña “Code View->Auxiliary Image”.

Importante: este script es necesario ejecutarlo en el mismo directorio donde se encuentren los ficheros de modelo, variables y el zip que contiene los binarios.

  • Despliegues varios (02-createExtras.sh): Este script no lo proporciona la herramienta y sirve para crear los namespaces, secrets, etc. que requiera la aplicación.
  • Despliegue de componentes (03-deployComponents.sh):
    • El script de despliegue de componentes verrazzano se encuentra en el submenú “component” en la pestaña “Code View->Install script”.
    • Este submenú proporciona también:
      • El componente a desplegar que representa el dominio de weblogic.
      • El configmap con las variables que permiten sobreescribir ciertas configuraciones del dominio.
    • La interfaz gráfica en este punto crea previamente el namespace y los secrets necesarios. Por ejemplo para descarga de imágenes de los repositorios, el dominio de weblogic o los datasources. Para estos componentes no proporciona script por lo que hay que crearlos manualmente (se puede usar un script creado manualmente para tal fin)
    • Los cambios en el componente y el configmap deberían disparar automáticamente un “introspector” que actualice la aplicación, pero solo parece funcionar con los cambios de componente, los del configmap requieren eliminar y volver a crear la aplicación.
    • Importante: el valor “introspectVersion” hay que ir incrementándolo para que el “introspector” detecte los cambios.
  • Despliegue de aplicación (04-deployApplication.sh):
    • El script de despliegue de aplicación está en el menú “Application”, pestaña “Code View->Deploy script” junto con la posibilidad de crear un “Project” (esto último solo es necesario en proyectos multicluster).
    • Al desplegar la aplicación es cuando realmente se crean los pods.

Otros

  • Toda la configuración del dominio de weblogic se realiza en el modelo (ayudado por la interfaz gráfica Weblogic Kubernetes Toolkit UI) y las configuraciones dependientes del entorno se configuran en el configmap que le acompaña. Esto se puede almacenar en git o similar y lo que se genera y despliega sería la imagen auxiliar.
  • Toda la configuración respecto a kubernetes/istio/verrazano se realiza en el componente y la aplicación (más el namespace, los secretes, configmaps, etc). Esto se puede almacenar en git o similar y lo que se generan son objetos de kubernetes/istio/verrazzano.
  • La configuración que parece recomendable crear es un único recurso, aplicación y namespace por dominio de weblogic.
  • La mayoría de los problemas se pueden ver en
    • los eventos del cluster
    • los eventos de los componentes
    • si ya han arrancado, en los logs de cada uno de estos pods (incluyendo los de los introspectores).
  • Para desactivar el uso de los proxies del sidecar de istio en aquellos recursos que no se desea (p.ej. coherence), se puede poner la siguiente anotación en el componente:

sidecar.istio.io/inject=false

Aquellos clientes que luego quieran acceder a los recursos que no usan istio tienen que utilizar un destination rule de istio para que no intente acceder a ellos utilizando mTLS:

trafficPolicy:

portLevelSettings:

– port:

number: 9000

tls: {}

  • Para que se lance el instrospector en caso de que no detecte cambios, se puede actualizar el número de introspección (introspectVersion) del componente.
  • Si no salta el introspector porque los servidores de weblogic no están todos en estado correcto es necesario eliminarlos para que se reinicien.
  • Algunos cambios, por ejemplo, la imagen base o variables de entorno, provocan el arranque del introspector y el reinicio del cluster.

Actualización/Parcheado imagen base

In the current release, the Patch Oracle Home pane will disappear if the base image contains an Oracle Fusion Middleware installation. The rationale being that the act of patching a base image installation will bloat the size of the image. As such, it is better to either create the base image with the latest patches already installed or allow the WebLogic Image Tool’s multistage build to install and patch the Oracle Fusion Middleware installation while minimizing the resulting image size.

Tabla de contenidos
Follow by Email
Twitter