Tutoriales

5 consejos para trabajar más rápido en Kubernetes con oc

Si tiene muchos clústeres de Kubernetes, a veces necesita usar el directo kubectl comando para acceder a su clúster. Esto puede deberse a que una herramienta de línea de comandos simple suele ser mejor o más rápida, pero algunas operaciones, incluso en otras herramientas más avanzadas, son lentas o pueden causar errores de sintaxis en YAML.

[ Get the YAML cheat sheet. ]

¿Sabía que puede utilizar las herramientas de línea de comandos de OpenShift? oc reemplazar kubectl ¿Acceso a su clúster de Kubernetes?y ocpuede inyectar secretos, mapas de configuración o volúmenes directamente en su implementación con un solo comando, abra un shell interactivo más rápido con rshverifique el secreto decodificado simple o vincule el secreto a una cuenta de servicio para la autenticación.

Si desea seguir estos ejemplos, puede descargar el cliente OpenShift desde Portal de sombrero rojo (se requiere inicio de sesión) o cliente okd Repositorio OKDestoy en un minicubo Ejecutando Kubernetes versión 1.24.

[ For more on minikube, read Start learning Kubernetes from your local machine. ]

es posible que hayas notado oc más corto que kubectl, por lo que escribir es más rápido. Pero siempre puedes crear un alias para superar este «problema».¿Cuáles son las diferencias útiles entre oc y kubectl?

Inyectar secretos o mapas de configuración en implementaciones

¿Con qué frecuencia necesita editar su manifiesto para agregar algunas variables de entorno?puedes usar esto oc Truco: inyecte secretos o mapas de configuración en pods existentes o variables de entorno de pod implementadas con un solo comando.

usaré oc cliente y olvidó deliberadamente establecer la variable requerida:

$ oc create deploy mysql --image mysql:5.7
deployment.apps/mysql created

No se pudo iniciar la implementación:

$ oc get pods
NAME        READY STATUS           RESTARTS AGE
Mysql-ffb7… 0/1  CrashLoopBackOff 1 (2s ago) 31s

Necesito crear un secreto:

$ cat > mysql.env <

Los secretos ahora existen en Kubernetes, usando el subcomando set env Adjúntelo a la implementación de MySQL:

$ oc set env --from secret/mysql.env deploy/mysql

Espere unos segundos y observe cómo se ejecuta la implementación y configure las variables de entorno especificadas:

$ oc set env --from secret/mysql.env deploy/mysql
deployment.apps/mysql updated
$ oc get pods
NAME                 	READY   STATUS	RESTARTS   AGE
mysql-56db5fbf6c-52ptv   1/1 	Running   0      	10s

$ oc describe deploy/mysql | grep Environment: -A4
    Environment:
      MYSQL_ROOT_PASSWORD:  Optional: false
      MYSQL_USER:                    Optional: false
      MYSQL_DATABASE:            Optional: false
      MYSQL_PASSWORD:            Optional: false

Puedes hacer lo mismo con configmap.

[ Get the Kubernetes basics cheat sheet. ]

Adjunte el volumen a la implementación

Este truco es muy poderoso y útil cuando estás probando. Adjunte volúmenes a pods o implementaciones con un solo comando. El volumen adjunto puede ser un secreto existente, un mapa de configuración o una reclamación de volumen persistente (PVC), o incluso puede crear un nuevo PVC. Aquí hay un ejemplo:

$ oc set volume --add --claim-size 1Gi --mount-path /var/lib/mysql deploy/mysql
info: Generated volume name: volume-xxj6r
deployment.apps/mysql volume updated

Espere unos segundos y podrá describir la implementación o usar un enfoque más elegante oc set volumes deploy/mysql --all Comprobar volumen. Aquí hay unos ejemplos:

$ oc set volumes deploy/mysql --all
 mysql
  pvc/pvc-b5vlg (allocated 1GiB) as volume-xxj6r
    mounted at /var/lib/mysql

$ oc describe deploy/mysql | grep Volumes: -A4
  Volumes:
   volume-xxj6r:
    Type:   	PersistentVolumeClaim (a reference to a PVC in the same namespace)
    ClaimName:  pvc-b5vlg
    ReadOnly:   false

Puede especificar un PVC existente --claim-nameun secreto --secret-nameo diagrama de configuración --configmap-name.

[ Get this complimentary eBook from Red Hat: Managing your Kubernetes clusters for dummies. ]

comprobar secreto

Este es uno de mis trucos favoritos para verificar secretos.ver un secreto kubectl, primero necesito mostrar el secreto y luego convertirlo de Base64.y ocpuedo verlo directamente en la terminal o ponerlo en un archivo:

$ oc extract secret/mysql.env --to=-

En este caso ya que estoy usando --to=-la salida se muestra en la terminal:

# MYSQL_ROOT_PASSWORD
k8s
# MYSQL_USER
k8s
# MYSQL_DATABASE
k8s
# MYSQL_PASSWORD
k8s

Este método es útil para verificar rápidamente los secretos utilizando contraseñas o tokens de uso común.

[ Getting started with containers? Check out Deploying containerized applications: A technical overview. ]

importar un contenedor

Para irrumpir en un contenedor o acceder a un caparazón dentro de un contenedor, use el comando exec:

$ kubectl exec -ti deploy/mysql -- sh

Si esa es tu intención, puedes usar oc:

$ oc rsh deploy/mysql

shell remoto (rsh) el comando asigna un pseudo ttyMantener stdin abrir e inicializar sh Ordenar. Puede cambiar el comando predeterminado a cualquier otro comando; simplemente especifíquelo como el último argumento.

Vincular o desvincular la autenticación a ServiceAccount

Este consejo es más específico, pero podría ser útil si usa muchos registros externos privados.Puede adjuntar un secreto a una cuenta de servicio de Kubernetes (SA) para la autenticación oc.

Primero, crearé una implementación con una imagen privada. Si desea continuar, necesitará su propia imagen privada:

$ oc create deploy lua --image hectorvido/lua-app
deployment.apps/lua created

Hubo un problema al descargar la imagen:

$ oc get pods
NAME                     READY   STATUS             RESTARTS   AGE
lua-7df97f9c94-4zjr6     0/1     ImagePullBackOff   0          20s
mysql-769f4d56b7-95p5z   1/1     Running            0          5m1s

Para solucionar esto, agregue un docker-registry El secreto de la cuenta de servicio predeterminada.Ya sea creando un secreto y editando la ServiceAccount o usando oc cliente. Por supuesto, no compartiré mis credenciales aquí; la información confidencial está oculta:

$ oc create secret docker-registry dockerhub \
  --docker-username hectorvido \
  --docker-password '' \
  --docker-server docker.io
secret/dockerhub created

$ oc secrets link default dockerhub --for=pull

La magia aquí es oc secrets link Ordenar. Agregará el secreto a SA, diciéndole que este secreto se usa exclusivamente para descargar imágenes del repositorio de imágenes. Luego, eliminé el pod para forzar otro intento de descarga:

$ oc delete pod -l app=lua
pod "lua-7df97f9c94-4zjr6" deleted

$ oc get pods
NAME                     READY   STATUS    RESTARTS   AGE
lua-7df97f9c94-msjzp     1/1     Running   0          22s
mysql-769f4d56b7-95p5z   1/1     Running   0          8m18s

envolver

Como puedes ver, oc Los comandos funcionan con OpenShift y Kubernetes y son más rápidos de escribir. Esta interoperabilidad es solo un pequeño detalle.Te doy cinco consejos que pueden agilizar tus pruebas e incluso las tareas cotidianas oc:

  • oc set env - Inyectar secretos o mapas de configuración en entornos de contenedores.
  • oc set volume - Adjunte un PVC, un mapa de configuración o un secreto a un pod.
  • oc extract - Revelar fácilmente secretos.
  • oc rsh - Contenedores con menos parámetros de entrada.
  • oc secrets link - Vincule un secreto a una cuenta de servicio para la autenticación.

Hay más opciones, pero son específicas para la gestión de OpenShift y estas opciones también se aplican a Kubernetes.Sabiendo esto, ¿por qué no intentarlo? oc ¿Empiezas tu trabajo hoy?

[ Learning path: Getting started with Red Hat OpenShift Service on AWS (ROSA) ]

LEER  Presentación del curso de Linux en español ✔

Publicaciones relacionadas

Deja una respuesta

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

Botón volver arriba