OpenShift Uso
OpenShift Uso
https://www.youtube.com/playlist?list=PLiCqqNxsrxJdbcEFKLASxNhUqZp_vvt3A
https://www.youtube.com/playlist?list=PLiCqqNxsrxJdbcEFKLASxNhUqZp_vvt3A
https://www.youtube.com/playlist?list=PLiCqqNxsrxJdbcEFKLASxNhUqZp_vvt3A
C.D.G. - 1
2
PROCEDIMIENTOS DE USO DE UN CLUSTER OPENSHIFT
C.D.G. - 2
3
PROCEDIMIENTOS DE USO DE UN CLUSTER OPENSHIFT
C.D.G. - 3
4
PROCEDIMIENTOS DE USO DE UN CLUSTER OPENSHIFT
C.D.G. - 4
5
PROCEDIMIENTOS DE USO DE UN CLUSTER OPENSHIFT
C.D.G. - 5
6
PROCEDIMIENTOS DE USO DE UN CLUSTER OPENSHIFT
IMÁGENES DE CONTENEDOR
podman login <opt> <registry> Token:
${XDG_RUNTIME_DIR}/containers/auth.json
$HOME/.docker/config.json
Registries:
/etc/containers/registries.conf
sudo podman login
quay.io --verbose
sudo podman login
-u testuser -p testpassword localhost:5000
sudo podman login
--authfile authdir/myauths.json docker.io
sudo podman login
--cert-dir /etc/containers/certs.d/
-u user -p password localhost:5000
sudo podman login --tls-verify=false -u test -p test localhost:5000
sudo podman login -u user --password-stdin < testpassword.txt docker.io
echo $testpassword | sudo podman login -u user --password-stdin docker.io
podman commit
sudo podman commit -a 'Cesar Delgado' official-httpd custom-httpd
podman tag
sudo podman tag custom-httpd quay.io/${QUAY_USER}/custom-httpd:v1.0
podman pull/push
sudo podman push quay.io/${QUAY_USER}/custom-httpd:v1.0
sudo podman pull -q quay.io/${QUAY_USER}/custom-httpd:v1.0
skopeo copy <origen> <destino> --src-creds <user>:<pass>
--dest-creds <user>:<pass>
--src-tls-verify={true/false}
--dest-tls-verify={true/false}
read -p "PASSWORD: " -s PASS
skopeo copy containers-storage:myimage
docker://quay.io/user/image
--dest-creds=user:$PASS
skopeo copy oci:/home/my/image
docker://quay.io/user/image
--dest-creds=user:$PASS
skopeo copy docker://quay.io/user/repo
docker://registry.redhat.io/rhscl/postgresql
--src-creds quayUser:quayPass
--dest-creds rhUser:rhPass
podman rmi <id imagen>
sudo podman rmi do180/mynginx:v1.0-SNAPSHOT
sudo podman rmi -a -f
sudo podman rmi –-force c4dfb1609ee2 93fd78260bd1 c0ed59d05ff7
skopeo delete <ruta> --creds <user>:<pass>
--tls-verify={true/false}
skopeo delete oci:/home/user/myimage
skopeo delete containers-storage:myimage
skopeo delete docker://registry.redhat.io/rhscl/postgresql
--creds developer1:MyS3cret!
podman build -t <name> <Dockerfile>
sudo podman build --layers=false -t do180/apache .
sudo podman build -t do180/apache /home/user/git/apache
C.D.G. - 7
8
PROCEDIMIENTOS DE USO DE UN CLUSTER OPENSHIFT
2.3.- DOCKERFILE.
CONSTRUCCION IMÁGENES CONTENEDOR
# FROM => Imagen UBI de partida
FROM docker.io/ubuntu:bionic
# - Puerto
EXPOSE 6379/tcp
#==> START: arrancar aplicación bajo estas condiciones
# 1.- Usuario no privilegiado (ID encima de 1000)
# 2.- Puerto no privilegiado (Puerto encima 1024).
USER redis
CMD ["/sbin/entrypoint.sh"]
C.D.G. - 8
9
PROCEDIMIENTOS DE USO DE UN CLUSTER OPENSHIFT
PLANO CONTROL:
API SERVER
oc login <URL_API> -u <user> -p <passwds>
____ 1.- Login
oc login -u ${DEV_USER} -p ${DEV_PASSWORD} ${URL_MASTER_API}
# Configuración Conexiones
contexts:
- context:
cluster: api-com:6443
namespace: default
user: admin
name: default/api-ocp4-example-com:6443/admin
current-context: default/api-ocp4-example-com:6443/admin
kind: Config
preferences: {}
C.D.G. - 9
10
PROCEDIMIENTOS DE USO DE UN CLUSTER OPENSHIFT
PLANO CONTROL:
API SERVER
Verificación del Cluster => Planteamiento
C.D.G. - 10
11
PROCEDIMIENTOS DE USO DE UN CLUSTER OPENSHIFT
PLANO CONTROL:
API SERVER
4- Smoke Test: Acceso al Sistema Almacenamiento Externo (Montar PVs)
____ 1.- Listado PVs y Storage Classes del Cluster
oc get storageclass
oc get pv -o custom-columns=NAME:.metadata.name,CLAIM:.spec.claimRef.name
C.D.G. - 11
12
PROCEDIMIENTOS DE USO DE UN CLUSTER OPENSHIFT
PLANO CONTROL:
RECURSOS - DESCRIPCIÓN
oc get <resource> <name> <opt> -o yaml : fichero definición recurso
-l <label>: filtra por etiqueta
-n <namespace>: busca en namespace
____ 1.- Lista todos los recursos
oc get all # Recursos Convencionales
oc get pv,pvc,is,template,cm,secret,probes # Recursos no Convencionales
oc get all -l app=miaplicacion
C.D.G. - 12
13
PROCEDIMIENTOS DE USO DE UN CLUSTER OPENSHIFT
PLANO CONTROL:
RECURSOS – ACCIÓN
oc project <name>
oc new-project <name> --description=<long> --display-name=<short>
oc new-project myproj --description="My Project" --display-name="Project"
oc adm create-bootstrap-project-template <opt>
____ 1.- Exportar Bootstrap de proyecto
oc adm create-bootstrap-project-template -o yaml > project-template.yaml
PLANO CONTROL:
RECURSOS - PLANTILLAS
oc process <opt> <template> -n <namespace>
____ 1.- Parametros Plantilla
oc process --parameters mongodb-persistent -n openshift
.....
MEMORY_LIMIT
NAMESPACE
DATABASE_SERVICE_NAME=mongodb
MONGODB_USER=frutero
MONGODB_PASSWORD=vitaminas
MONGODB_DATABASE=fruits
MONGODB_ADMIN_PASSWORD
VOLUME_CAPACITY
MONGODB_VERSION
C.D.G. - 14
15
PROCEDIMIENTOS DE USO DE UN CLUSTER OPENSHIFT
PLANO CONTROL:
RBAC
oc create sa <nombre_sa>
oc adm groups new <grupo>
oc adm groups {add/remove}-users <grupo> <user>
oc create identity <id_provider>:<user>
oc label user/<name> <label>
WORKDIR=/home/user/work
WORKFILE=${WORKDIR}/tmp_users
C.D.G. - 15
16
PROCEDIMIENTOS DE USO DE UN CLUSTER OPENSHIFT
PLANO CONTROL:
RBAC
oc delete sa <nombre_sa>
oc delete sa <nombre_sa>
oc delete <virtual user>
______ 1.- Backup del fichero kubeconfig
(poder gestionar si no hay usuarios cluster-admin, ni kubeadmin)
cp ${HOME}/auth/kubeconfig ${HOME}/kubeconfig.BACKUP
C.D.G. - 16
17
PROCEDIMIENTOS DE USO DE UN CLUSTER OPENSHIFT
PLANO CONTROL:
RBAC
oc create role <nombre_rol>
--verb={get,list,watch} -–resource={pod,dc…}
oc {delete/edit} role <nombre_rol> <opt>
______ 1.- Crear Rol
oc create role foo –-verb=get,list,watch –-resource=rs.extensions -o yaml
oc create role pod-reader –-verb=get –-resource=pods,pods/status -o yaml
C.D.G. - 17
18
PROCEDIMIENTOS DE USO DE UN CLUSTER OPENSHIFT
____ 3.- Si está pending… no existen nodos con ese NodeSelector, buscar etiquetas
oc login -u admin -p redhat
oc describe node | more
oc describe node | sed -n -e '/Label/,/: */p' -e '/Name:/,/: */p'
oc login -u developer -p developer
Quotas/Límites, en Deployment/DeploymentConfig
oc edit deployment/hello-limit
_____ Quotas: deployment.spec.template.spec.containers.resources.requests
____ Límites: deployment.spec.template.spec.resources.limits
deployment.spec.template.spec.containers.resources.limits
...output omitted...
spec:
containers:
- image: quay.io/redhattraining/hello-world-nginx:v1.0
name: hello-world-nginx
-------> ADD THIS BLOCK
resources:
requests:
cpu: "3"
memory: 20M
limits:
cpu: "100m"
memory: 100Mi
-------> ADD THIS BLOCK
...output omitted...
oc {create/delete} quota project-quota <opt>
oc create quota project-quota -n schedule-limit
--hard cpu="3",memory="1G",configmaps="3"
oc adm create-bootstrap-project-template -o yaml > project-template.yaml
- apiVersion: v1 - apiVersion: v1
kind: ResourceQuota kind: LimitRange
metadata: metadata:
name: ${PROJECT_NAME}-quota name: ${PROJECT_NAME}-limits
spec: spec:
hard: limits:
cpu: 3 - type: {Pod/Container}
memory: 10G {max/min/MaxLimitRequestRatio
default/defaultRequest}:
cpu: 30m
memory: 30M
C.D.G. - 18
19
PROCEDIMIENTOS DE USO DE UN CLUSTER OPENSHIFT
PLANO CONTROL:
SCHEDULING
oc adm taint nodes <nodo> <key>=<value>:<effect>
oc adm taint nodes <nodo> <key>-
Exposición Ruta
PLANO CONTROL:
MONITORIZACIÓN
C.D.G. - 19
20
PROCEDIMIENTOS DE USO DE UN CLUSTER OPENSHIFT
PLANO OPERACIÓN:
LÓGICA - BUILD
Assemble
S2I
Triggers
Hooks Web
C.D.G. - 20
21
PROCEDIMIENTOS DE USO DE UN CLUSTER OPENSHIFT
C.D.G. - 21
22
PROCEDIMIENTOS DE USO DE UN CLUSTER OPENSHIFT
PLANO OPERACIÓN:
LÓGICA - DEPLOY
Rollback (retroceder versión) Rollout (elegir versión)
Service Discovery
1.- Variables entorno… DNS interno OpenShift
Triggers
C.D.G. - 22
23
PROCEDIMIENTOS DE USO DE UN CLUSTER OPENSHIFT
C.D.G. - 23
24
PROCEDIMIENTOS DE USO DE UN CLUSTER OPENSHIFT
C.D.G. - 24
25
PROCEDIMIENTOS DE USO DE UN CLUSTER OPENSHIFT
PLANO OPERACIÓN:
LÓGICA - SDN
Activar Multitenant en Bootstrap
C.D.G. - 25
26
PROCEDIMIENTOS DE USO DE UN CLUSTER OPENSHIFT
PLANO OPERACIÓN:
LÓGICA - SERVICIO
Paso 2: Troubleshoot EndPoint – SVC Selector, Puerto
##################
## CASO 1: SVC SELECTOR
##################
oc describe pods/frontend-5598cfc446-lkhsj
...output omitted...
Labels: app=todonodejs
name=frontend
pod-template-hash=5598cfc446
...output omitted...
# 2.- Comprobaciones
oc get endpoints, pods
##################
## CASO 2: PUERTOS CONTENEDOR
##################
PLANO OPERACIÓN:
LÓGICA - SERVICIO
Paso 3: Troubleshoot uServicio – Service Discovery, visibilidad uServicios
#............. SÍNTOMAS ...........
A) Firefox => Aplicación Ok
B) Error base datos, o no hay persistencia
1.- End Points se ven entre sí, desde dentro del cluster
--------
oc get endpoints # End Point Properties
C.D.G. - 27
28
PROCEDIMIENTOS DE USO DE UN CLUSTER OPENSHIFT
4.- BIBLIOGRAFÍA
C.D.G. - 28