openshift_ex280_v4_10_20240629210102 Flashcards
Cómo se limitan los recursos del deployment hello-world-nginx:v1.0 –image quay.io/redhattraining/hello-world-nginx:v1.0
minimo de recursos:
20 Mi
10m cpu
Maximo de recursos:
cpu: “80m”
memory: 100Mi
En yaml desde el atributo spec:
…output omitted…
spec:
containers:
- image: quay.io/redhattraining/hello-world-nginx:v1.0
name: hello-world-nginx
resources:
requests:
cpu: “10m”
memory: 20Mi
limits:
cpu: “80m”
memory: 100Mi
status: {}
Cómo se observan los límites de requests y limits de los nodos
oc describe node NAME
Cómo se muestra el uso real de todos los pods?
oc adm top pods
Cómo se muestra el uso de los nodos con role worker
oc adm top nodes -l node-role.kubernetes.io/worker
Recursos sobre los que una quota puede limitar en su conteo
Pods Replicationcontrollers services secrets persistentvolumeclaims
Recursos de cómputo que una quota puede restringir por recurso
requests. Cpu
requests. Memory
requests. Storage
Describe la sintaxis de cuota en yaml
nombre dev-quota
servicios a 10
cpu a 1300
memoria 1.5Gi
apiVersion: v1 kind: ResourceQuota metadata: name: dev-quota spec: hard: services: "10" cpu: "1300m" memory: "1.5Gi"
Cómo se crea un recurso desde un archivo FILE.yaml
oc create –save-config -f FILE.yaml
Cómo se crea una cuota dev-quota en cmd oc
servicios 10
cpu 1300m
memory 1.5Gi
oc create quota dev-quota –hard services=10,cpu=1300m,memory=1.5Gi
Cómo se obtienen las cuotas
oc get resourcequota
¿Qué comando se usa en OpenShift para describir los detalles de una cuota específica llamada NAME?
oc describe quota NAME
Cómo se elimina una cuota
oc delete resourcequota QUOTA
Como se coloca el label de un nodo ejemplo master01 etiqueta env a dev
oc label node master01 env=dev
Como se sobreescribe la etiqueta env a prod del nodo master01
oc label node master01 env=prod –overwrite
Como se quita la etiqueta env del nodo master01
oc label node master01 env-
Como se muestran los labels del nodo master02
oc get node master02 –show-labels
Como se obtienen los nodos que tienen la etiqueta env
oc get nodes -L env
Como puedo obtener la relación entre machine set y nodos
oc get machines -n openshift-machine-api -o wide
Como se puede editar el machineset ocp-qz7hf-worker-us-west-1b
oc edit machineset ocp-qz7hf-worker-us-west-1b \
> -n openshift-machine-api
Como se coloca en el deployment llamado myapp para que este solo se coloque en los nodos con el label env dev desde yaml desde el tag spec:
…output omitted…
spec:
…output omitted…
template:
metadata:
annotations:
openshift.io/generated-by: OpenShiftNewApp
creationTimestamp: null
labels:
deployment: myapp
spec:
nodeSelector:
env: dev
containers:
- image: quay.io/redhattraining/scaling:v1.0
…output omitted…
nodeSelector:
env: dev
Como puedes colocar el label env dev con el comando oc patch
[user@host ~]$ oc patch deployment myapp –patch \
> ‘{“spec”:{“template”:{“spec”:{“nodeSelector”:{“env”:”dev”}}}}}’
Como se configura el node selector para el proyecto new-project llamado demo sobre los labels tier=1 con comandos de proyecto nuevo
oc adm new-project demo –node-selector “tier=1”
Como se sobreescribe el selector default del proyecto demo y que utilice “tier=2”
oc annotate namespace demo \
> openshift.io/node-selector=”tier=2” –overwrite
Como se escala el numero de replicas a 3 para el deployment my app
[user@host ~]$ oc scale –replicas 3 deployment/myapp
Como se pueden obtener los eventos de Warning
oc get events –fields-selector type=Warning
Como se pueden eliminar todos los recursos de la app hello-limit
oc delete all -l app=hello-limit
Cómo se limitan los recursos del deployment hello-world-nginx:v1.0 –image quay.io/redhattraining/hello-world-nginx:v1.0
requests=>
20 Mi
10m cpu
limits=>
cpu 80m
memory 100Mi
En linea de comandos
oc set resources deployment hello-world-nginx –requests cpu=10m,memory=20Mi –limits cpu=80m,memory=100Mi
Como se crea un deployment salvando el archivo en ~/DO280/labs/schedule-limit/hello-limit.yaml. Nombre hello-limit y usar la imagen quay.io/redhattraining/hello-world-nginx:v1.0.
oc create deployment hello-limit –image quay.io/redhattraining/hello-world-nginx:v1.0 –dry-run=client -o yaml > ~/DO280/labs/schedule-limit/hello-limit.yaml
Como se modifica el hello-limit.yaml para agregar
3 cpu
20Mi de memoria
spec:
containers:
- image: quay.io/redhattraining/hello-world-nginx:v1.0
name: hello-world-nginx
resources: {}
Se agrega
spec:
containers:
- image: quay.io/redhattraining/hello-world-nginx:v1.0
name: hello-world-nginx
resources:
requests:
cpu: “3”
memory: 20Mi
¿Qué comando se usa en OpenShift para aplicar la configuración especificada en el archivo hello-limit.yaml?
oc apply -f hello-limit.yaml
Como se escala a 4 deplicas el deployment hello-limit
oc scale –replicas 4 deployment/hello-limit
Como se especifica el label y las replicas 1 del deployment sscale en los contenedores del deployment
apiVersion: apps/v1
kind: Deployment
…output omitted…
spec:
replicas: 1
selector:
matchLabels:
deployment: scale
strategy: {}
template:
metadata:
labels:
deployment: scale
spec:
containers:
…output omitted…
Como se coloca un autoscale al deployment hello minimo 1 y maximo 10 con el cpu al 80
oc autoscale deployment/hello \
> –min 1 –max 10 –cpu-percent 80
Como obtienes los limites y requests y los muestras del pod loadtest-5f9565dbfb-jm9md
oc describe pod/loadtest-5f9565dbfb-jm9md | \
> grep -A2 -E “Limits|Requests”
Limits:
cpu: 100m
memory: 100Mi
Requests:
cpu: 25m
memory: 25Mi
Como se obtienen los horizontal pod scalers
oc get hpa/loadtest
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS …
loadtest Deployment/loadtest 0%/50% 2 10 2 …
Que significa hpa
Horizontal Pod Scaler
Que significa SDN
Openshift Software-defined networking
Cuales son los 5 requerimientos que satisface el SDN
Manejar tráfico de red programática mente
Manejar comunicación entre contenedores del mismo proyecto
Manejar comunicación entre pods del mismo u otro proyecto
Manejar comunicación se un pod a un servicio
Manejar comunicación entre una red externa a servicio o de contenedores a redes externas
Que es CNI
Container network interface
Como se crea un recurso desde un archivo todo.yaml
oc create -f todo.yaml
Como se copia un archivo llamado test.txt dentro del pod mypod a la ruta /tmp
oc cp test.txt mypod:/tmp
Como nos firmamos por ssh al pod mysql-73 con bash mysql-73-bdhfo1h-hhdj
oc rsh mysql-73-bdhfo1h-hhdj /bin/bash
Como se expone el servicio de la app frontend en el hostname todo.apps.ocp4.example.com
oc expose service/frontend –hostname todo.apps.ocp4.example.com
Como se validan los servicios expuestos
oc get routes
Como se ven los logs del pod frontend para corregir el problema de red
oc logs PODNAME
Como obtener ip de cluster del servicio frontend usando jsonpath
oc get service/frontend -o jsonpath=“{.spec.clusterIP}{‘\n’}”
Como se hace crea una imagen de debug del deployment MySQL imagen registry.access.redhat.com/ubi8/ubi:8.0
oc debug -t deployment/mysql –image registry.access.redhat.com/ubi8/ubi:8.0
Como se hace la validación de aplicación por curl al puerto 8080
curl -m 10 -v http://clusterIP:8080
Como nos conectamos a un pod por su ip privada
oc get pods -o wide -l name=frontend
debug pod -t deployment/ MySQL –image registry example
Como se obtienen los servicios
oc get svc
Como podemos ver la información del servicio frontend
oc describe svc/frontend
Como se ve la información de Labels y una linea posterior de despliegue
oc describe deployment/frontend | grep Labels -A1
Como se edita un servicio
oc edit svc/frontend
Como se modifica el selector name de un servicio
oc edit svc/frontend
Proceso completo para troubleshooting de red
- Crear deployments frontend/mysql y servicios
- Obtener logs de pod de app
- Obtener ip de mysql, debug a pod frontend, curl a mysql service
- Obtener ip de frontend, debug a pod mysql, curl a frontend
- Obtener ip interna de frontend, debug a pod mysql, curl a ipinterna y puerto interno.
- Describir servicio de frontend para mostrar el selector, endpoints
- Editar servicio frontend y cambiar selector por el correcto
- Prueba de url de servicio frontend
Estructura de servicio en yaml
kind: service
apiVersion: v1
metadata:
name: application-frontend
labels:
app: frontend-svc
spec:
ports:
- name: HTTP
protocol: TCP
port: 443
targetPort: 8443
selector:
app: shopping-cart
name: frontend
type:ClusterIP
Como se muestra el operador de dns
oc describe DNS.operator/default
Cuales son los servicios que DNS resuelve
A para servicios SRV port
Como obtener el cluster domain e ip
oc describe dns.operator/default
Status:
Cluster Domain: cluster.local
Cluster IP: 172.30.0.10
Como te puedes firmar al pod por ssh example-6c4984d949-7m26r
oc rsh example-6c4984d949-7m26r \
> curl hello.test.svc.cluster.local:8080
Que estructura de servicio crea CoreDNS por defecto
_port-name._port-protocol.svc-name.namespace.svc.cluster-domain.cluster-domain.
Ejemplo
_443-tcp._tcp.https.frontend.svc.cluster.local.
Que es OVN kubernetes
Open Virtual Network para kubernetes
Openshift SDN
OVN-kubernetes
Kuryr son ejemplos de
default network providers
Como se obtiene la configuracion del network cluster en yaml
oc get network/cluster -o yaml
apiVersion: config.openshift.io/v1
kind: Network
…output omitted…
spec:
clusterNetwork:
- cidr: 10.128.0.0/14
hostPrefix: 23
externalIP:
policy: {}
networkType: OpenshiftSDN
serviceNetwork:
- 172.30.0.0/16
…output omitted…
Que es CIDR
Classless Inter-Domain Routing
Como se diagnostica un error de red en dos pods frontend y mysql
oc expose service frontend –hostname todo.apps.ocp4.example.com
oc get routes
ver logs
oc logs frontend-57b8b445df-f56qh
App is ready at : 8080
Obtener IP de mysql
oc get service/mysql -o jsonpath=”{.spec.clusterIP}{‘\n’}”
Crear debug pod desde frontend app
oc debug -t deployment/frontend
Telnet hacia mysql
curl -v telnet://172.30.103.29:3306
——————————————
Obtener ip de frontend service
oc get service/frontend -o jsonpath=”{.spec.clusterIP}{‘\n’}”
Crear pod debug de mysql
oc debug -t deployment/mysql –image registry.access.redhat.com/ubi8/ubi:8.4
curl hacia aplicacion frontend
curl -m 10 -v http://172.30.23.147:8080
- Rebuilt URL to: http://172.30.23.147:8080/
- Trying 172.30.23.147…
- TCP_NODELAY set
- Connection timed out after 10000 milliseconds
- Closing connection 0
curl: (28) Connection timed out after 10000 milliseconds
Como obtener la ip privada de la app frontend para comprobar si el servicio esta abajo o es solo la red
oc get pods -o wide -l name=frontend
NAME READY STATUS RESTARTS AGE IP …
frontend-57b8b445df-f56qh 1/1 Running 0 39m 10.128.2.61 …
oc debug -t deployment/mysql –image registry.access.redhat.com/ubi8/ubi:8.4
curl -v http://10.128.2.61:8080/todo
- Trying 10.128.2.61…
- TCP_NODELAY set
- Connected to 10.128.2.61 (10.128.2.61) port 8080 (#0)
> GET /todo/ HTTP/1.1
> Host: 10.128.2.61:8080
> User-Agent: curl/7.61.1
> Accept: /
>< HTTP/1.1 200 OK
…output omitted…
Comprobar configuracion de frontsend service
oc get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
frontend ClusterIP 172.30.23.147 8080/TCP 93m
mysql ClusterIP 172.30.103.29 3306/TCP 93m
[student@workstation network-sdn]$ oc describe svc/frontend
Name: frontend
Namespace: network-sdn
Labels: app=todonodejs
name=frontend
Annotations:
Selector: name=api
Type: ClusterIP
IP: 172.30.23.147
Port: 8080/TCP
TargetPort: 8080/TCP
Endpoints:
Session Affinity: None
Events:
oc describe deployment/frontend | \
> grep -A1 Labels
Labels: app=todonodejs
name=frontend
–
Labels: app=todonodejs
name=frontend
oc edit svc/frontend
[student@workstation network-sdn]$ oc describe svc/frontend
Name: frontend
Namespace: network-sdn
Labels: app=todonodejs
name=frontend
Annotations:
Selector: name=frontend
Type: ClusterIP
IP: 172.30.169.113
Port: 8080/TCP
TargetPort: 8080/TCP
Endpoints: 10.128.2.61:8080
Session Affinity: None
Events:
Como se forma un yaml de una ruta
kind: Route
apiVersion: route.openshift.io/v1
metadata:
name: a-simple-route 1
labels: 2
app: API
name: api-frontend
spec:
host: api.apps.acme.com 3
to:
kind: Service
name: api-frontend 4
port: 5
targetPort: 8443
Como se genera una ruta del servicio api-frontend con hostname api.apps.acme.com key api.key y cert
oc create route edge \
> –service api-frontend –hostname api.apps.acme.com \
> –key api.key –cert api.crt
Como se establece un certificado mountado desde un volumen en modo lectura
volumeMount:
- name: tls-certs
readOnly: true
mountPath: /usr/local/etc/ssl/ssl
- volumes:
- name: tls_certs
- secret:
- secretName:
Con que role debe de ejecutarse la SSCs
cluster-admin
Para que sirve sccs (security context constraints)
Limitar acceso de pods corriendo
Pods privilegiados Solicitar capacidades extra de contenedores Usar directorios de host como volúmenes Cambiar selinux de contenedor Cambiar id de usuario
Cuales son los 8 scc que provee openshift
hostaccess
hostmount-anyuid
hostnetwork
node-exporter
anyuid
nonroot
provileged
restricted
Como se puede obtener más información de un sccs
oc describe scc anyuid
Cómo se puede obtener los scc de un pod
oc describe pod console-5abcd -n project |grep scc
openshift.io/scc: restricted
oc get pod podname -o yaml | oc adm policy scc-subject-review -f -
Oc get modules
Listar los security context constraints que requiere el pod test para funcionar
oc get pod test -o yaml| oc adm policy scc-subject-review -f -
Que significa scc
Security context constraints
Como se agrega un contexto de seguridad a una cuenta de servicio
oc adm policy add-scc-to-user SCC -z serviceAccount
Como se puede corregir el scc del pod test usando el service account sa-test para el deployment test-app
oc get pod/test-app -o yaml| oc adm policy scc-subject-review -f -
oc create serviceaccount sa-test
oc adm policy add-scc-to-user anyuid -z sa-test
oc set serviceaccount deployment/test-app sa-test
Como se crea el secreto test desde una literal con la llave key1 y value1
oc create secret generic test –from-literal key1=value1
Como se crea la aplicación httpd con variables de ambiente ejemplo base de datos bd=db1 y instance=inst1 con la imagen httpd:2.2
oc new-app –name httpd -e bd=bd1 -e instance=inst1 httpd:2.2
Como se crea secreto de llaves de ssh TEST desde los dos archivos /tmp/id_rsa y /tmp/id_rsa.pub de rsa
oc create secret generic TEST –from-file id_rsa=/tmp/id_rsa
–from-file id_rsa.pub=/tmp/id_rsa.pub
Como se crea un secreto tls TESTTLS desde el cert /tmp/certificate y el key /tmp/key
oc create secret tls TESTTLS –cert /tmp/certificate –key /tmp/key
Como se crea un secreto DEMO-SECRET desde literal
root_password=zT1KTgk
user=demo-user
Como se coloca en el deployment config la referencia hacia el
oc create secret generic DEMO-SECRET –from-literal user=demo-user –from-literal root_password=zT1KTgk
Se hace referencia al secreto desde el deployment config
env:
- name: MYROOTPASS
valueFrom:
secretKeyRef:
name: demo-secret
key: root_password
Como puedes setear variables de ambiente de pod MYSQL usando el secreto demo-secret con key root_password en forma de yaml (edit)
oc edit
env:
- name: MYSQL
valueFrom:
secretKeyRef:
name: demo-secret
key: root_password
Como se agregan las variables de ambiente con environment env comando desde un secreto para un despliegue
oc set env deployment/demo –from secret/demo-secret —prefix MYSQL_
Como se cargan variables de ambiente desde un deployment config test
oc set env dc/mysql –prefix MYSQL_ –from test
Como se puede montar un secreto como un filesystem
demo-secret en ruta /app-secrets deployment demo
oc set volume deployment/demo —add —type secret —secret-name demo-secret —mount-path /app-secrets
Como se crea un config map test con llave key1 igual a value1
oc create configmap test —from-literal key1=value1
Como se modifica un config map y secreto test
oc extract secret/test -n openshift-config –to /tmp –confirm
oc set data secret/test-n openshift-config –from-file htpasswd=/tmp/htpasswd
Cual es la diferencia de un config map y un secreto
Secreto se encripta el Config map no
Como se actualiza el secret test desde el archivo /tmp/htpasswd
oc set data secret/test -n openshift-config –from-file /tmp/htpasswd
Como se crea una ruta y como se consume del aplicativo para ver las variables
oc expose service quotes —hostname quotes.apps.ocp4.example.com
oc get routes
Curl -v quotes.apps.ocp4.example.com
Como se coloca ambiente para un deployment configuration
oc set env dc/MySQL –prefix MYSQL_ –from secret/name
Como se crea un config map test desde el archivo /tmp/testconfig
oc create configmap NAME —from-file=/tmp/testconfig
Como se obtienen los config maps
oc get configmaps
Significado de user, identify, service account, group, role
User es identidad que interactúa con el API de openshift
Identity mantiene el registro de autenticaciones de usuario 1 a 1 connu
Como se administran los cluster-roles
oc adm policy
add-cluster-role-to-user
remove-cluster-role-from-user
who can
Cuales son los Roles de default
admin
basic-user
cluster-admin
cluster-status
edit
self-provisioner
view
Como se crea una alternativa para los roles de default (modo correcto de uso)
Export role
Import role con otro usuario
Explica todos los roles
admin puede manejar todos los proyectos y dar acceso
basic-user read project
cluster-admin súper user access to cluster resources full control to projects
cluster-status get cluster status
edit manejar aplicaciones pero no manejar recursos
self-provisioner crear proyectos - cluster role/not a project role
view can view project resources but can’t modify
Como se quita un cluster role de un usuario
oc adm policy remove-cluster-role-from-user ROLE USER
Como se válida que usuarios tiene permisos de eliminar
oc adm policy who-can delete user
Como se que usuarios puede obtener que usuarios pueden obtener pods
oc adm policy whocan get pods
Como se agrega el role basic-user al usuario test en el proyecto basic-project
oc policy add-role-to-user basic-user test -n basic-project
Como se elimina un role de un usuario
oc policy remove-role-from-user role user
Como se obtienen los cluster role bindings
oc get clusterrolebinding -o wide
Como se elimina el permiso de crear projects de todos los usuarios quienes no sean cluster administrators
oc describe clusterrolebinding self-provisioners
oc adm policy remove-cluster-from-group self-provisioner system:authentication:oauth
Ejecutar de nuevo para validar que ya no esté
Como se da el role de admin a leader
oc policy add-role-to-user admin leader
Como se agrega y crea un grupo
oc adm groups new-group dev-group developer
oc adm groups new-group Aquino-group
oc get groups
Como se asigna la política a grupo
oc policy groups add-role-to-group edit groupNAME
Como se obtienen los role bindings
oc get role bindings -o wide
Como se hace deploy de app httpd:2.4
oc new-app —name httpd httpd:2.4
Como se agrega el
Role Edit al grupo qa-engineer
oc policy add-role-to-group edit qa-engenieer
Como se escala un aplicativo
oc scale deployment httpd —replicas=3
Agregar system authentication de self-provider
oc adm policy add-cluster-role-to-group self-provider “system:authenticated:oauth”
Como se quita del role self-provisioner de todos los usuario autenticados y asignar sólo a grupo managers
oc policy remove-cluster-role-from-group self-provisioner “system:authenticated:oauth”
oc policy add-cluster-role-to-group self-provisioner managers
Como se agrega un usuario a un grupo
oc adm groups add-users GROUP USER
Como agregar role edit a grupo developers
oc policy add-role-to-group edit developers
Como se agrega el cluster role al usuario test
oc adm policy add-cluster-role-to-user cluster-role test
Como eliminar el cluster role al usuario test
oc adm policy remove-cluster-role-from-user cluster-role test
Como se puede obtener que usuarios tienen permiso para eliminar usuario
oc adm policy who-can delete user
Como se agrega el cluster role self-provisioner con el nombre role binding self-provisioners al grupo system:authenticated:oauth
oc adm policy add-cluster-role-to-group \
> –rolebinding-name self-provisioners \
> self-provisioner system:authenticated:oauth
Warning: Group ‘system:authenticated:oauth’ not found
clusterrole.rbac.authorization.k8s.io/self-provisioner added: “system:authenticated:oauth”
Como se obtienen las clases de storage
oc get storageclass
Como se crea un volumen persistente en un contenedor
oc set volumes deployment/APP —add —name storage-name —type pvc —claim-class nfs-storage —claim-mode rwo —claim-size 10Gi —mount-path /var/log —claim-name storage-name
Como
Muestras la información de los discos persistentes
pvc
NAME status volume capacity access modes storageclass age
pv NAME capacity access modes reclaimpolicy status claim storageclass reason age
Como se elimina todo del aplicativo MYAPP
oc delete all -l app=MYAPP
Como se elimina un claim de storage persistente
oc delete pvc NAME
Como se obtiene el estado de los
Nodos
oc get nodes
Como se obtiene los procesos de los nodos
oc adm top nodes
Como se ven los recursos de los nodos
oc adm top nodes
NAME CPu CPU% Memory memory%
Como se ve la información de un nodo en particular
oc describe node NAME
Como se muestra la
Información de la versión de cluster
oc describe clusterversion
como se obtiene los operadores de
Cluster
oc get clusteroperators
Como se obtiene la versión de un operador de cluster
oc get clusteroperators
Como se ven los logs de un nodo particular con un usuario particular
oc adm node-logs -u USER NAME
Cual es el usuario del servicio cri-o
crio
Cual es el usuario del servicio kubelet
kubelet
Como se ven los logs de systemd unit
Se usa el usuario crio
oc adm node-logs -u crio NAME
Como mostrar completamente el log de journal
oc adm node-logs NAME
Como se puede entrar a un nodo
oc debug NODE
Como se eleva a root los permisos de un comando en un despliegue myapp
oc debug deployment/myapp —as-root
Como se obtiene el log de un pod con traza 10
oc get pod —loglevel 10
Como se obtiene el usuario con que se ejecuta el comando
oc whoami
Como se obtiene el token con que se ejecuta un comando desde curl
oc whoami -t
Como se analiza el pod openshift-image-registry
oc get pod -n openshift-image-registry
Como se diagnostica un pod que tiene mal la imagen y se ve el estado de los servicios crio-o y kubelet
oc get events
oc get nodes
oc debug NODE —as-root chroot /home systemctl status cri-o systemctl status kubelet crictl ps —name openvswitch
exit
oc project NAME
oc get pods
oc get events
oc debug node/PODNAME
oc status
oc get deployments
skopeo inspect docker://url/tag:999
oc edit deployment/NAME Go to image Corregir nombre y guardar oc get pods oc status
Características de openshift
Red Hat OpenShift Container Platform Red Hat OpenShift Dedicated Red Hat OpenShift Online Red Hat OpenShift Kubernetes Engine Red Hat Code Ready Containers
Capas de openshift
Container
Self Service
Service catalog
Build automation. Deployment automation
Application lifecycle (CI/CD)
Container orchestation y cluster management
Networking storage registry logs/metrics Security
Container runtime and packaging
Linux
Physical virtual prívate public
Como se verifica si hay certificados por aprobar
oc get csr
Como verificar si uno de los cluster operators no están disponibles o degradados o progresando configuración o desplegando pods
oc get clusteroperators
Cual es el
Sistema operativo de los contenedores en openshift
Redhat enterprise Linux CoreOS
Cual es el motor
CRI-O
Cual es el orquestador de contenedor de código abierto
kubernetes
Componentes de Openshift
CoreOS
Motor CRI-O
Kubernetes
Consola web de autoservicio
Una cantidad de servicios de aplicaciones preinstalados
Imágenes de contenedores certificadas para tiempos de ejecución, bases de datos y otros paquetes de varios lenguajes
Cuales son los nodos de tipo maestro
kube-apiserver Kube-controller-manager kube-scheduller etcd kubelet cri-o
Cuales son los pods regulares
openshift-apiserver
Openshift-controller-manager
coredns
Openshift oauth 0 auth
procesos de systemd de openshift
kubelet
cri-o
Que servicio administra conjuntos de pod estáticos y ciclo de vida de los pods
kubelet
Que componente se encarga de replicar los pods y asegurarse que estén replicados
Replication controller
Para que es el control plane
management y control of our cluster
Proceso principal de Runtime
cri-o
Que es lo que hace el kube-apiserver
Proxy API requests
Explica cada característica de openshift
Redhat openshift container platform
Enterprise ready kubernetes you decide when it updates
Redhat openshift dedicated
Cuando openshift está proveído por otro producto
Redhat openshift online pequeños proyectos para un onboard Andrés de ir a un cluster en. Clud
Redhat openshift kubernetes engine
Redhat code ready container
Para instalar en laptop limitado
Como se llama el servicio de kubernetes en el contenedor
kubelet
Que es etcd
Database in a service of a cointainer
Proceso de instalación de un cluster de openshift
- Bootstrap machine boots start the remote resources required for booting the control plane machines
- The control plane fetch the remote resources from the bootstrap machine and finish booting
- The control machines form an Etcd cluster
- The boostrap machine stars a temporary kubernetes control using the newly created etcd cluster
- The temporary control plane schedules the control plane machines
- The temporary control plane shutdown yields to the control plane
- boostrap node injects components specific to openshift into the control plane.
- -the installation tears down the bootstrap machine
Cuales son las customizationes que pueden hacer en openshift
Defining custom storage clases for dynamic storage provisioning
Changing the custom resource
Adding new operadorators to cluster
Defining new machine sets
Como obtener el estado de los nodos
oc get nodes
Cómo se crea un archivo de password htpasswd en ruta /tmp/htpasswd user redhat y password redhat123 con bcrypt
htpasswd -c -B -b /FILE.txt user pass
Cómo se crea un secreto desde un archivo htpasswd
oc create secret generic NAME —from-file htpasswd=/FILE.txt -n NameProject
Cómo se asigna un role de cluster a un usuario
oc adm policy add-cluster-role-to-user ROLE USER
Cómo se obtiene la configuración de oauth
oc get oauth cluster -o yaml>oauth.yaml
Cual es la estructura de un identity provider htpasswd en yaml
apiVersion: config.openshift.io/v1
kind: OAuth
metadata:
name: cluster
spec:
identityProviders:
- name: my_htpasswd_provider
mappingMethod: claim
type: HTPasswd
htpasswd:
fileData:
name: htpasswd-secret
Cual es el role de administrador de cluster
cluster-admin
Como se remplaza la configuración de oauth desde un archivo
oc get oauth cluster -o yaml > oauth.yaml
se edita el archivo
oc replace -f /PATH/oauth.yaml
Se obtienen los pods
Se intenta firmar con el nuevo usuario
como se obtienen los usuarios del proyecto
oc get users
Como se extrae el usuario manager del identity provider localusers ya existente y se cambia el password por uno aleatorio de 15 caracteres
oc extract secret/localusers -n openshift-config –to /tmp/htpasswd –confirm
MANAGER_PASSWD=$(openssl rand -hex 15)
htpassd -b /tmp/htpasswd manager manager $MANAGER_PASSWD
oc set data secret/localusers –from-file htpasswd=/tmp/htpasswd -n openshift-config
Como se obtienen los usuarios
oc get users
Como se ven las identidades de un usuario
oc get users
oc get identity
Como se extrae el password del usuario manager colocar password redhat y actualizar
obtener pods para ver el estado desde el archivo /tmp/htpasswd
oc extract secret/manager -n openshift-config —to /tmp/htpasswd —confirm
htpasswd -b /tmp/htpasswd admin redhat
oc set data secret/manager —from-file htpasswd=/tmp/htpasswd
oc get pods -n openshift-authentication
Como se actualiza el secreto manager desde un archivo htpasswd
oc set data secret/manager –from-file htpasswd=/tmp/htpasswd -n openshift-config
Genera un password aleatorio y asígnalo a usuario manager existente
oc extract secret/localusers -n openshift-config –to /tmp/htpasswd –confirm
MANAGER_PASSWD=$(openssl rand -hex 15)
htpasswd -b /tmp/htpasswd manager ${MANAGER_PASSWD}
oc set data secret/localusers —from-file htpasswd=/tmp/htpasswd -n openshift-config
Cómo Eliminar usuario manager
eliminar password
oc extract secret/localusers –to /tmp/htpasswd –confirm
htpasswd -D /tmp/htpasswd manager
oc set data secret/localusers –from-file /tmp/htpasswd –confirm -n openshift-config
Eliminar identidad
oc delete identity my users:manager
Eliminar usuario
oc delete user manager
Como eliminar proyecto test
oc delete project test
Como
Se elimina el identity provider
oc edit oauth
Eliminar todo de
spec: identityProvider: - htpasswd: fileData: name: localusers mappingMethod: claim name: myusers type: HTPasswd
Por
spec: {}
Como se elimina un secreto
oc delete secret NAME -n openshift-config
Como se eliminan todos los usuarios
oc delete user –all
Como eliminar todos las identidades
oc delete identity –all
Cual es la variable que se usa para usar un archivo de configuración para usar comandos administrativos de openshift sin autenticarse
export KUBECONFIG=/home/user/auth/kubeconfig
Alternativa para especificar un archivo de configuración de openshift sin usar la variable KUBECONFIG obteniendo los nodos
oc –kubeconfig /home/user/auth/kubeconfig get nodes
cual es el virtual user que se crea automaticamente al instalar openshift
kubeadmin
Como puedes evitar que el usuario kubeadmin siga funcionando
Eliminando las credenciales del usuario
oc delete secret kubeadmin -n kube-system
Antes de eliminar las credenciales del usuario kubeadmin que role debe tener un usuario administrativo para poder funcionar como lo haría el kubeadmin
cluster-admin
Cual es el virtual user y grupo virtual que se asigna si no te autenticas al interactuar con el autenticación layer de openshift
system:anonymous virtual user and the system:unauthenticated virtual group
Como se elimina la credencial del usuario student del archivo /tmp/htpasswd
htpasswd -D /tmp/htpasswd student
Como se puede crear el secreto con el archivo /tmp/htpasswd con el nombre htpasswd-secret
oc create secret generic htpasswd-secret \
> –from-file htpasswd=/tmp/htpasswd -n openshift-config
Como se extrae el secreto htpasswd-secret a tmp en el archivo /tmp/htpasswd
oc extract secret/htpasswd-secret -n openshift-config \
> –to /tmp/ –confirm /tmp/htpasswd
Como se actualiza el archivo htpasswd del secreto htpasswd-secret desde /tmp/htpasswd
oc set data secret/htpasswd-secret \
> –from-file htpasswd=/tmp/htpasswd -n openshift-config
Como puedes ver los pods de autenticación
watch oc get pods -n openshift-authentication
Como se elimina el usuario manager
oc delete user manager
Como se elimina la identidad del usuario manager
oc get identities | grep manager
oc delete identity my_htpasswd_provider:manager
Como se le pueda dar permisos de administrador de cluster al usuario
oc adm policy add-cluster-role-to-user cluster-admin student
Cual es el algoritmo que usa htpasswd por defecto si no se mandan banderas al comando
MD5 hashing algorithm
Como se extrae el secreto localusers y se imprime a pantalla
oc extract secret/localusers -n openshift-config –to -
Cómo se loggea
oc login -u admin -p pass URL
Cómo obtienes la versión del cluster
oc get clusterversion
oc describe clusterversion
Cómo obtienes los nodos del cluster
oc get nodes
Cómo puedes ver el log de un pod
oc logs POD
Cómo puedes acceder a un nodo como root
oc debug -t node —as-root
Cómo se llama el servicio que administra los contenedores
Kubelet
Cómo se válida el servicio de kubelet de un nodo como root
oc debug -t node –as-root
chroot /host
systemctl status kubelet
Cómo se válida el servicio cri-o de contenedores como root
oc debug -t node–as-root
chroot /host
systemctl status cri-o
crictl ps —name etcd
Cómo se edita la configuración de despliegue de la aplicaciones
oc edit deployment/NAME
Cómo se obtienen los operadores del cluster
oc get clusteroperators
Cómo se ven los logs de los nodos
oc adm node-logs -u kubeadmin NODE
Cual es el usuario administrador default del cluster en openshift
kubeadmin
Cómo se obtienen los procesos y su uso en tiempo real en los nodos
oc get nodes
oc adm top node -l NAME
Cómo se crea un proyecto nuevo
oc create project NAME
Cómo se selecciona el proyecto en el cual trabajarás
oc project NAME
Cómo se obtienen los Contenedores
oc get pods
Cómo se obtienen el estado de los despliegues
oc status
Cómo se obtienen los eventos de un pod
oc get events
Cómo se obtienen los eventos de un contenedor
oc get events
Como puedes ver los logs de un contenedor
oc logs pod -c container
Como puedes ver los logs de un pod del contenedor anterior
oc logs pod –previous
Como se obtienen los operadores
oc get clusteroperators
Como se obtiene información del cluster
oc cluster-info
como se obtienen las versiones de las apis soportadas
oc api-versions
Como se obtienen las versiones de los recursos api
oc api-resources
3 Banderas de api-resources
–namespaced=true
–sort-by=name
–api-group=apps
Como se obtiene la version del cluster
oc get clusterversion
Como se obtiene el estado actual de un proyecto
oc status
Como se obtiene un recurso
oc get resource NAME
Como puedes ver el consumo de los nodos
oc adm top node
Como puedes ver las banderas de consumo de un nodo
oc describe node NAME
Como se puede diagnosticar un operador
oc projects
oc get pods -n project-name
oc logs podname -n project-name
oc describe pod -n project-name
Como se obtienen los storageclass
oc get storageclass
Como se establece el volumen dinámicamente al despliegue example-application usando el nombre example-pv-storage con nfs-storage class modo río tamaño 15Gi en la ruta /var/lib/example-app claim name example-pv-claim
oc set volumes deployment/example-application
–add –name example-pv-storage –type pvc –claim-class nfs-storage –claim-mode rwo –claim-size 15Gi –mount-path /var/lib/example-app –claim-name example-pv-claim
Cuales son los access modes de un persistent volume claim
ReadWriteMany RWX Kubernetes can mount the volume as read-write on many nodes.
ReadOnlyMany ROX Kubernetes can mount the volume as read-only on many nodes.
ReadWriteOnce RWO Kubernetes can mount the volume as read-write on only a single node
Como se elimina un persistent volume claim
oc delete pvc/example-pvc-storage
Como se crea la app postgresql-persistent con la imagen registry.redhat.io/rhel8/postgresql-13:1-7
usuario redhat
password redhat123
database persistentdb
oc new-app –name postgresql-persistent \
> –image registry.redhat.io/rhel8/postgresql-13:1-7 \
> -e POSTGRESQL_USER=redhat \
> -e POSTGRESQL_PASSWORD=redhat123 \
> -e POSTGRESQL_DATABASE=persistentdb
Como se asigna el disco ya existente de postgresql-storage al deployment postgresql-persistent2 con name postgresql-storage
oc set volumes \
deployment/postgresql-persistent2 \
–add –name postgresql-storage –type pvc \
–claim-name postgresql-storage –mount-path /var/lib/pgsql
Como se elimina el pvc postgresql-storage
oc delete pvc/postgresql-storage
Como se instala el parche por cmd para el canal fast-4.10
oc patch clusterversion version –type=”merge” \
> –patch ‘{“spec”:{“channel”:”fast-4.10”}}’
clusterversion.config.openshift.io/version patched
Que significa OTA
Over The Air
Cuales son los channels de un update
Candidate
Fast
Stable
EUS
Como se obtiene la version del cluster
oc get clusterversion
Como se obtiene el canal de update del cluster
oc get clusterversion -o jsonpath=’{.items[0].spec.channel}{“\n”}’
stable-4.10
Como se ven las versiones a las que se puede dar upgrade
oc adm upgrade
Como se actualiza a la ultima version disponible para el cluster
oc adm upgrade –to-latest=true
Como se actualiza a una version particular del cluster
oc adm upgrade –to=VERSION
Como tengo que hacer aknowladge para instalacion del parche ack-4.8-kube-1.22-api-removals-in-4.9
oc patch configmap admin-acks -n openshift-config \
–type=merge \
–patch ‘{“data”:{“ack-4.8-kube-1.22-api-removals-in-4.9”:”true”}}’
Como puedo ver el estado del upgrade en CVO
[user@host ~]$ oc get clusterversion
NAME VERSION AVAILABLE PROGRESSING SINCE STATUS
version 4.10.3 True True 30m Working towards 4.10.4 …
[user@host ~]$ oc get clusteroperators
NAME VERSION AVAILABLE PROGRESSING DEGRADED
authentication 4.10.3 True False False
cloud-credential 4.10.4 False True False
openshift-apiserver 4.10.4 True False True
…output omitted…
Que es CVO
Cluster Version Operator
Como se puede ver la historia de los parches instalados
oc describe clusterversion
Como se actualza el cluster desde la consola web
The Administration → Cluster Settings page displays an Update Status of Available updates when a new update is available. From this page, click Update now
Como se obtie el link de la consola web desde cmd
oc whoami –show-console
https://console-openshift-console.apps.cluster.example.com
Como se encuentran los resources
Home → Search
resource types and a label selector field
Como se obtienen los pods
Home → Search
resource types and a label selector field pod
Como se crean los usuarios y grupos
User Management → Users
web UI, locate the secret in the openshift-config project and then click Actions → Edit Secret. The Edit Key/Value Secret tool handles the base64 encoding for you. Add a line to allow a new user to log in to OpenShift
The User Management → Groups page displays existing groups, and provides the ability to create new groups.
Como se crea un proyecto
Navigate to the Home → Projects page to display the full list of projects. Then click Create Project and complete the form to create a new project.
After you have created your new project, you can navigate to the Role Bindings tab on the project details page.
Red Hat recommends that administrators responsible for multitenant clusters configure resource quotas and limit ranges, which enforce total project limits and container limits, respectively. Navigate to either Administration → Resource Quotas or Administration → Limit Ranges to access the appropriate YAML editor, where you can configure these limits.