Instalando servicios en un cluster de Tanzu
VMware Tanzu clusters, a diferencia de otras soluciones, despliega cluster de Kubernetes sin servicios preinstalados. Somos nosotros los que decidimos qué servicios van en cada cluster. Si no contamos con herramientas como Tanzu Mission Control, el desplieque de los servicios de infraestructura requiere de un poco de conocimiento. En este articulo (y los siguientes) voy a documentar cómo desplegar algunos de los servicios más instalados en los clusters.
Helm y Bitnami
Para la mayoría de los servicios estoy usando Helm y los servicios, si están disponibles, los obtengo desde el repositorio de Bitnami que contiene las imágenes curadas por VMware.
Una vez instalado Helm, agregamos el repositorio de Bitnami:
helm repo add bitnami https://charts.bitnami.com/bitnami
Cert-Manager y Countour
Probablemente el primer servicios que necesitamos en todos los clusters es el de "Ingress" para exponer nuestras aplicaciones con un balanceador capa 7. VMware recomienda el proyecto Contour y este requiere del servicio Cert-Manager que nos provee de certificados.
Luego de conectarnos a nuestro cluster con "kubectl vsphere login", instalamos Cert-Manager:
helm install -n cert-manager cert-manager bitnami/cert-manager --set installCRDs=true --create-namespace
Ahora podemos instalar Contour:
helm install -n system-ingress contour bitnami/contour --create-namespace
Probando los servicios
Hay muchas formas de utilizar estos servicios, pero para probar que funcionan correctamente, yo hago lo siguiente:
# creamos el namespace
kubectl create ns test
# creamos el issuer
kubectl apply -f - <<EOF
apiVersion: cert-manager.io/v1
kind: Issuer
metadata:
name: test-issuer
namespace: test
spec:
selfSigned: {}
EOF
# creamos el certificado
kubectl apply -f - <<EOF
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: test-tls
namespace: test
spec:
dnsNames:
- '*.default.svc.cluster.local'
- '*.default'
issuerRef:
name: test-issuer
secretName: test-tls-secret
EOF
# es un test por lo que deshabilito Pod Security
kubectl label --overwrite ns test \
pod-security.kubernetes.io/enforce=privileged \
pod-security.kubernetes.io/enforce-version=latest \
pod-security.kubernetes.io/warn=baseline \
pod-security.kubernetes.io/warn-version=latest \
pod-security.kubernetes.io/audit=baseline \
pod-security.kubernetes.io/audit-version=latest
# desplegamos nginx
kubectl -n test create deploy nginx --image=nginx:1.27.3-alpine
# creamos el servicio
kubectl -n test expose deploy nginx --port=80
# creamos el ingress
kubectl apply -f - <<EOF
apiVersion: projectcontour.io/v1
kind: HTTPProxy
metadata:
name: test-ingress
namespace: test
spec:
virtualhost:
fqdn: nginx.gitops.playground.net
tls:
secretName: test-tls-secret
routes:
- conditions:
- prefix: /
services:
- name: nginx
port: 80
EOF
# obtenemos la IP del ingress (siempre será la misma para este cluster)
kubectl -n system-ingress get svc contour-envoy | awk '{print $4}'
Listo, si configuramos nuestro archivo "hosts" con el fqdn que pusimos en el ingress apuntando a la IP de del ingress, ya podemos navegar nuestro nginx con certificado autofirmado.
Comentarios
Publicar un comentario