Openshift. Exportar / Importar DeploymentConfig

En la entrada Openshift. Creación de imagen Java y despliegue sin GIT hemos visto como crear una imagen y desplegarla en openshift utilizando la opción Source2Image (s2i).

En esta entrada veremos como exportar el Deployment Config desde linea de comandos para modificar algún aspecto del despliegue tal como variables de entorno, límites de cpu y memoria, número de pods (replicas), etc…

Para obtener el Deployment Config, una vez autenticados con oc login y situados en el proyecto o namespace adecuado, debemos ejecutar el export:

oc export dc/mydeployment > ./mydeployment.yaml

Si abrimos el yaml, veremos algo similar a esto:

apiVersion: apps.openshift.io/v1
kind: DeploymentConfig
metadata:
annotations:
openshift.io/generated-by: OpenShiftNewApp
creationTimestamp: '2019-05-29T10:54:06Z'
generation: 82
labels:
app: myfirstimageopenshift
name: myfirstimageopenshift
namespace: pgyonamespace
resourceVersion: '136685545'
selfLink: >-
/apis/apps.openshift.io/v1/namespaces/pgyonamespace/deploymentconfigs/myfirstimageopenshift
uid: 14655b12-8200-11e9-a807-98f2b3253a4c
spec:
replicas: 1

revisionHistoryLimit: 10
selector:
app: myfirstimageopenshift
deploymentconfig: myfirstimageopenshift
strategy:
activeDeadlineSeconds: 21600
resources: {}
rollingParams:
intervalSeconds: 1
maxSurge: 25%
maxUnavailable: 25%
timeoutSeconds: 600
updatePeriodSeconds: 1
type: Rolling
template:
metadata:
annotations:
openshift.io/generated-by: OpenShiftNewApp
creationTimestamp: null
labels:
app: myfirstimageopenshift
deploymentconfig: myfirstimageopenshift
spec:
containers:
- env:
- name: com_sun_xml_bind_v2_bytecode_ClassTailor_noOptimize
value: 'true'
- name: GC_MAX_METASPACE_SIZE
value: '250'
- name: JAVA_MAX_MEM_RATIO
value: '75'
- name: JAVA_INITIAL_MEM_RATIO
value: '100'
- name: tap_security_enabled
value: 'false'
- name: TZ
value: Europe/Madrid
image: >-
docker-registry.default.svc:5000/pgyonamespace/myfirstimageopenshift@sha256:ac1d002fedd8175ca55655a512061b682b71d72940429b8f796bb829bbbcc91a
imagePullPolicy: IfNotPresent
name: myfirstimageopenshift
ports:
- containerPort: 8778
protocol: TCP
- containerPort: 8080
protocol: TCP
- containerPort: 8443
protocol: TCP
resources:
limits:
memory: 512Mi
requests:
cpu: 100m
memory: 128Mi
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
volumeMounts:
- mountPath: /data/config
name: coherence-cache-config
dnsPolicy: ClusterFirst
restartPolicy: Always
schedulerName: default-scheduler
securityContext: {}
terminationGracePeriodSeconds: 30
test: false
triggers:
- type: ConfigChange
- imageChangeParams:
automatic: true
containerNames:
- myfirstimageopenshift
from:
kind: ImageStreamTag
name: 'myfirstimageopenshift:1.0.0-SNAPSHOT'
namespace: pgyonamespace
lastTriggeredImage: >-
docker-registry.default.svc:5000/pgyonamespace/myfirstimageopenshift@sha256:ac1d002fedd8175ca55655a512061b682b71d72940429b8f796bb829bbbcc91a
type: ImageChange
status:
availableReplicas: 1
conditions:
- lastTransitionTime: '2019-06-26T11:48:06Z'
lastUpdateTime: '2019-06-26T11:48:08Z'
message: >-
replication controller "myfirstimageopenshift-46" successfully
rolled out
reason: NewReplicationControllerAvailable
status: 'True'
type: Progressing
- lastTransitionTime: '2019-07-03T14:31:00Z'
lastUpdateTime: '2019-07-03T14:31:00Z'
message: Deployment config has minimum availability.
status: 'True'
type: Available
details:
causes:
- imageTrigger:
from:
kind: DockerImage
name: >-
docker-registry.default.svc:5000/pgyonamespace/myfirstimageopenshift@sha256:ac1d002fedd8175ca55655a512061b682b71d72940429b8f796bb829bbbcc91a
type: ImageChange
message: image change
latestVersion: 46
observedGeneration: 82
readyReplicas: 1
replicas: 1
unavailableReplicas: 0
updatedReplicas: 1

Marcado en negrita está la zona donde se modifica el número de pods activos (spec: replicas: 1), es desde aquí donde podemos, por ejemplo, aumentar a 3 réplicas, modificando el fichero (spec: replicas: 3), e importándolo de nuevo en openshift con:

oc replace -f ./mydeployment.yaml

Podemos verificar que se ha incrementado el número de pods obteniendo información del Deployment Config modificado:

oc describe dc/myfirstimageopenshift

Esto es todo. Si detectas algún error o tienes alguna sugerencia/mejora, no dudes en dejarnos un comentario.

Que pases un feliz día.

Nota: Para aumentar/disminuir el número de réplicas, también se puede utilizar directamente el comando scale:

oc scale <object_type> <object_name> --replicas=<#_of_replicas>

Read More

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *