Al grano hoy
Actividad 6: Create a service messaging-service to expose the redis deployment in the marketing namespace within the cluster on port 6379 (use imperative commands)
Primero ‘imperative commands’ se refiere a ‘kubectl create’ sin -f
Para lograr todo este tema primero necesito configurar mi ambiente
- Tener un namespace llamado ‘marketing’
- Tener un deployment llamado ‘redis’
Y posterior a ello puedo crear el servicio, que no lo he hecho en dias pasados y hoy me limitare a solo comando impertivo. Para que quede grabado en mi mente, que no debo crear un .yaml
Entonces primero
kubectl create namespace marketing
Segundo
kubectl create deployment redis –image=redis –namespace=marketing
Validar (de este me olvide) el flag es –all-namespaces
kubectl get pods –all-namespaces
Bien con eso ya tengo mi contexto. Podria cambiar mi namespace pero de momento no me importa.
Ahora sigue : Expose the service within the cluster
Hay varios tipos de service, segun mi lectura rapida y llms, hay 4
- ClusterIP: Un IP dentro del Cluster, con solo capacidades internas. (Este es el caso de la pregunta)
- NodePort: Un IP + un puerto, asociado un IP Externo, fuera del cluster.
- LoadBalancer: Crea un LoadBalancer externo, con un IP publico que lo relaciona
- ExternalName: Crea un CName relacionado a un DNS externo.
Para el caso de hoy vamos por ClusterIP
Esta es la documentacion de create service https://kubernetes.io/docs/reference/kubectl/generated/kubectl_create/kubectl_create_service
Y esta la del comando que necesitamos https://kubernetes.io/docs/reference/kubectl/generated/kubectl_create/kubectl_create_service_clusterip/
kubectl create service clusterip redis-service –tcp6379:6379
Y esto, no sirve para nada. (Tambien me olvide del namespace)
¿Por que? Pues porque estoy creando un servicio para el deployment, este servicio no esta relacionado.
En teoria debo ser capaz de relacionar el servicio de forma declartiva con selectores.
De forma Imperativa el comando que quiero es expose
Vamos con ese
https://kubernetes.io/docs/reference/kubectl/generated/kubectl_expose
kubectl expose deployment redis –port=6379 –target-port=6379 –name=serviceimperative –namespace=marketing
¿Como validar?
kubectl get all -n=marketing

No hay YAMLs para hoy.
¿Que aprendimos?
- No se debe olvidar –namespace=nombre, al momento de ejecutar los comandos
- Imperativo se refiere a comados directos con kubectl
- Los servicios tiene 4 sabores. Espero tener un ejercicio del tipo LoadBalancer mas adelante. O con un DNS autofirmado.
- No hay un comando directo o sencillo para de forma imperativa relacionar el selector del service. Este es el service construido con el Spec: Selector: app: redis

- Para exponer un aplicativo se debe usar ‘expose’