Addons

MicroK8s utiliza el mínimo de componentes para un Kubernetes puro y ligero. Sin embargo, hay muchas funciones adicionales disponibles "addons" que son componentes preconfigurados que proporcionarán capacidades adicionales.
El complemento «hostpath-storage» proporciona espacio de directorio en el host. No se usa en cluster
Dashboard

El panel estándar de Kubernetes es una forma conveniente de realizar un seguimiento de la actividad y el uso de recursos de MicroK8.
# Instala el Addon
microk8s enable dashboard
Acceso
Por defecto el acceso es validado con un token. El servicio se expone como ClusterIP y para exponerlo fuera del clúster hacemos un port-forward
# Genera un token para validarte en el Dashboard
microk8s kubectl create token default
# Redirige un puerto del host para poder acceder al dashboard
microk8s kubectl port-forward -n kube-system service/kubernetes-dashboard 10443:443 --address 0.0.0.0
Ahora se puede acceder a Dashboard desde https://<IP_Nodo>:10443
Para cambiar el acceso y acceder mediante NodePort
# Comprueba el servicio
microk8s kubectl -n kube-system get svc kubernetes-dashboard
# Edita el servicio
microk8s kubectl -n kube-system edit svc kubernetes-dashboard
# cambia el type ClusterIP por NodePort
type: NodePort
Ahora se puede acceder a Dashboard desde https://<IP_Nodo>:<NodePort
Ingress

Este complemento añade un controlador de entrada NGINX para MicroK8. Se habilita ejecutando el comando:
microk8s enable ingress
Con Ingress habilitado, se puede crear una regla de tipo "ingress" HTTP/HTTPS. por ejemplo:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: http-ingress
spec:
rules:
- http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: some-service
port:
number: 80
Cert-Manager

Cert-Manager es la solución estándar para la gestión de certificados en clústeres de Kubernetes. Se habilita ejecutando el comando:
microk8s enable cert-manager
ClusterIssuer
Se utiliza un recurso ClusterIssuer para configurar una cuenta con Let's Encrypt. Solo necesita una dirección de correo electrónico (asegúrese de usar una válida).Global -> para todo el clúster
-
Se aplica una sola vez y puedes usarlo en cualquier namespace.
-
Ideal para producción cuando quieres certificados automáticos a nivel de clúster.
Manifiesto "letsencrypt-staging.yaml"
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
name: letsencrypt-staging
spec:
acme:
# The ACME server URL
server: https://acme-staging-v02.api.letsencrypt.org/directory
# Email address used for ACME registration
email: user@example.com
# Name of a secret used to store the ACME account private key
privateKeySecretRef:
name: letsencrypt-staging
# Enable the HTTP-01 challenge provider
solvers:
- http01:
ingress:
class: public
Manifiesto "letsencrypt-prod.yaml":
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
name: letsencrypt-prod
spec:
acme:
# The ACME server URL
server: https://acme-v02.api.letsencrypt.org/directory
# Email address used for ACME registration
email: user@example.com
# Name of a secret used to store the ACME account private key
privateKeySecretRef:
name: letsencrypt-prod
# Enable the HTTP-01 challenge provider
solvers:
- http01:
ingress:
class: public
# ClusterIssuer test
kubectl apply -f letsencrypt-staging.yaml
# ClusterIssuer Producción
kubectl apply -f letsencrypt-prod.yaml
Comprobación
# Lista ClusterIssuers
kubectl get clusterissuer
# Obtener detalles del ClusterIssuer
kubectl describe clusterissuer letsencrypt-staging
kubectl describe clusterissuer letsencrypt-prod