Primeros pasos con AKS: Namespaces línea de comando

martes, 5 de enero de 2021

 

En la entrada anterior vimo cómo crear un namespace desde al portal de Azure, ahora vamos a ver cómo podemos hacer lo mismo usando la línea de comando.

Ingresamos a Azure Cloud Shell, desde allí podemos usar el comando kubectl el cual nos permite enviar instrucciones a la API de Kubernetes, 

Ahora,veamos cómo conectarnos a nuestro cluster de AKS utilizando Azure CLI, para ello corremos el siguiente comando:

az aks get-credentials --resource-group [nombre-grupo-recursos] --name [nombre-cluster-kubernetes]


Ahora veamos los namespaces que tenemos, para ello corremos lo siguiente:

kubectl get namespaces



Como se puede apreciar en la imagen anterior, vemos exactamente lo mismo que vimos desde el portal de Azure.

Vamos a crear un nuevo namespace usando el comando kubectl:

kubectl create namesapce  [nombre-namespace]


Ahora, volvamos a consultar los namespaces, deberiamos ver nuestro namespace recién creado testcmd


Por ahora ya tenemos nuestro namespace creado, pero aún no hemos desplegado ningún recurso sobre el mismo, ya veremos en entregas posteriores más detalles sobre otros recursos como pods, servicios, etc, pero para resumir un poco, es posible desplegar recursos en un namespace existente, si no especificamos sobre cual namespace desplegar nuestra app, kubernetes lo hará sobre el namespace default. Por ejemplo vamos a crear un pod con el siguiente código YAML:


El código anterior lo guardé en un archivo llamado mypod.yml y lo ejecutaré corriendo lo siguiente:

kubectl apply -f mypod.yml


Como no especificamos sobre cuál namespace desplegar Kubernetes lo hará sobre default, y esto lo podemos verificar si ejecutamos lo siguiente:

kubectl get pods -o yaml

En la salida YAML que aparece en pantalla podemos buscar la sección donde muestra el nombre del namespace, y podemos comprobar que se trata del namespace default


Si ejecutamos el siguiente comando para ver el despliegue que hicimos, veremos nuestro pod en ejecución:


Pero aquí nos surge la duda sobre cómo desplegar el pod por ejemplo en el namespace test que creamos, básicamente vamos a realizar un cambio en el archivo mypod,yml para que quede de la siguiente forma:


Como podemos ver hemos simplemente agregado el namespace en la definición y lo ejecutamos de la misma forma.

si volvemos a consultar los pods veremos que esta vez no aparece:


Lo anterior sucede porque estamos ubicados en el namespace por defecto, y este nuevo pod lo hemos creado en el namespace test, así que una de las formas que tenemos para consultar recursos en otros namespaces es especificarlo a través del parámetro --namespace de la siguiente forma:

kubectl get pods --namespace=test

De esta forma si veremos el pod recién creado sobre este espacio de nombres


Otra opción que tenemos para desplegar un pod en otro espacio de nombres sin necesidad de especificarlo en el archivo YAML, es hacerlo desde la misma línea de comando, para ello basta con agregar el parámetro --namespace durante la ejecución de kubectl apply tal como se muestra a continuación:


kubectl apply -f mypod.yml --namespace=test

Ahora bien, si por ejemplo estamos en el namespace default y no queremos estar especificando el espacio de nombres cada vez que ejecutemos algún comando, basta con cambiar el contexto a otro namespace, en el siguiente ejemplo voy a establecer el namespace test como mi nuevo cotexto:

kubectl config set-context --current --namespace=test



Ahora podemos volver a ejecutar kubectl para listar los pods pero sin poner el espacio de nombres, y podemos observar que esta vez lo muestra sin necesidad de especificar el espacio de nombres test, esto es porque hemos cambiado el contexto:


Bien, y esto es todo por hoy! espero sea de utilidad.

 

Lo más visto

Comunidad

Comunidad
Comunidad Técnica

Visitas