
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 createdNo se pudo iniciar la implementación:
$ oc get pods
NAME READY STATUS RESTARTS AGE
Mysql-ffb7… 0/1 CrashLoopBackOff 1 (2s ago) 31sNecesito 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/mysqlEspere 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 updatedEspere 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: falsePuede 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
k8sEste 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 -- shSi esa es tu intención, puedes usar oc:
$ oc rsh deploy/mysqlshell 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 createdHubo 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 5m1sPara 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 8m18senvolver
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) ]









