Introspección WLS – Verrazzano
Verrazano de Introspección a despliegue de Weblogic
Contents
Ejecución de la introspección 10
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 configmap asociado al model y en los secrets 23
Cambios en los componentes Verrazzano 24
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:
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.