|
Il s'agit d'une documentation non publiée pour SUSE® Virtual Clusters v1.2.0 (Dev). |
Procédure : Exposer l’API Kubernetes du cluster virtuel
Ce guide explique comment exposer l’API Kubernetes des clusters virtuels aux réseaux externes. Les pratiques s’appliquent à la fois au mode virtuel et au mode partagé.
|
Il est important d’ajouter les arguments TLS-SAN au cluster, afin que l’adresse IP ou l’hôte ne soit pas rejeté. |
|
Exécuter |
Ingress
Il est possible d’exposer l’API Kubernetes du cluster virtuel via un contrôleur d’ingress présent sur l’hôte. Cependant, il est important de noter que la terminaison TLS doit être effectuée au niveau du cluster virtuel, nécessitant quelques modifications par rapport aux objets d’ingress normaux.
Traefik
Dans le cas de Traefik, l’API du cluster virtuel est exposée via une ressource IngressRouteTCP. Voici un exemple de configuration :
apiVersion: traefik.io/v1alpha1
kind: IngressRouteTCP
metadata:
name: cluster-ingress-rt
spec:
entryPoints:
- websecure
routes:
- match: HostSNI(`cluster.example.com`)
services:
- name: k3k-clustername-service
port: 443
tls:
passthrough: true
Ingress Nginx
Ingress Nginx n’a pas le passthrough SSL activé par défaut et doit être activé avec le drapeau --enable-ssl-passthrough. Consultez la documentation d’ingress-nginx { ici.
Ensuite, il est possible de créer une ressource d’ingress normale avec l’annotation "nginx.ingress.kubernetes.io/ssl-passthrough". Par exemple :
apiVersion: networking.k8s.io
kind: Ingress
metadata:
annotations:
nginx.ingress.kubernetes.io/ssl-passthrough: "true"
nginx.ingress.kubernetes.io/backend-protocol: "https"
name: cluster-ingress
spec:
rules:
- host: cluster.example.com
http:
paths:
- backend:
service:
name: k3k-clustername-service
port:
number: 443
path: /
pathType: Prefix
Service
Les services créés au moment de la création du cluster virtuel ne peuvent pas être modifiés. Il est nécessaire de créer un nouveau service du type souhaité (LoadBalancer ou NodePort).
LoadBalancer
Si un équilibreur de charge est disponible pour le cluster hôte, soit d’un fournisseur de services cloud, soit d’un produit complémentaire tel que MetalLB, il est possible d’exposer l’API du cluster virtuel via sa propre adresse IP unique.
Pour un cluster d’exemple appelé test dans l’espace de noms k3k_test, créez un service LoadBalancer avec la commande suivante :
kubectl -n k3k_test expose service k3k-test-service --type=LoadBalancer --name=k3k-test-servicelb
NodePort
En l’absence des solutions ci-dessus, l’API Kubernetes virtuelle peut être exposée via un service NodePort en utilisant l’adresse IP de l’un des nœuds hôtes.
Pour un cluster d’exemple nommé test dans l’espace de noms k3k_test, créez un service NodePort en utilisant la commande suivante :
kubectl -n k3k_test expose service k3k-test-service --type=NodePort --name=k3k-test-servicenp