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
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:
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:
kubectl get pods --namespace=test
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