Accéder à votre cluster kubernetes depuis votre machine avec tailscale
Tailscale
Nous allons utiliser tailscale
afin de créer un réseau VPN entre notre control plane
et notre machine locale.
Tout d’abord, nous allons installer tailscale
sur les deux machines, le control plane et notre machine.
Pour tout autre système d’exploitation qu’Ubuntu, vous pouvez vous référer à la documentation officielle.
# Ajout des repos & des clés
curl -fsSL https://pkgs.tailscale.com/stable/ubuntu/focal.noarmor.gpg | sudo tee /usr/share/keyrings/tailscale-archive-keyring.gpg >/dev/null
curl -fsSL https://pkgs.tailscale.com/stable/ubuntu/focal.tailscale-keyring.list | sudo tee /etc/apt/sources.list.d/tailscale.list
# Installation de tailscale
sudo apt-get update
sudo apt-get install tailscale
Nous devons maintenant nous authentifier afin de connecter notre machine au réseau tailscale.
sudo tailscale up
Depuis le console d’administrateur, il est possible de désactiver l'expiration de la clé
.
Cela permet de ne pas avoir à se reconnecter régulièrement pour se re-authentifier.
L’installation de tailscale doit se faire sur les deux machines.
Connectivité
Tout d’abord, nous allons ouvrir notre firewall
sur Orcale Cloud.
Mais avant de commencer, nous devons récupérer l’adresse IP de notre machine dans le réseau tailscale.
Exécuter la commande suivante:
tailscale ip -4
100.X.Y.Z
Nous allons ouvrir le port 6433
en TCP uniquement pour notre machine.
Pour cela, sur le portail d’Oracle Cloud, nous allons aller dans Cloud Networks public-subnet
Puis dans Security Lists -> Default Security List
Et enfin sur Ingress Rules -> Add Ingress Rules
KubeConfig
Nous allons devoir nous connecter en ssh sur le control plane afin d’y récupérer le fichier KubeConfig
situé .kube/config
.
Nous devons également récupérer l’adresse IP du control plane dans le réseau tailscale.
tailscale ip -4
100.X.Y.Z
Nous pouvons maintenant créer le fichier de configuration pour nos cluster sur notre machine locale.
Nous allons aussi remplacer la line server: https://10.0.0.X:6443
par l’adresse IP que nous avons obtenue précédemment.
# Sur la machine locale
mkdir -p ~/.kube
# Coller le contenue du fichier obtenu sur le control plane et remplacer l'IP
vi ~/.kube/oracle-config
# Utilisation de ce kube config
export KUBECONFIG=~/.kube/oracle-config
Si nous essayons d’interagir avec notre cluster, nous obtenons une erreur de certificat.
Unable to connect to the server: tls: failed to verify certificate: x509: certificate is valid for 10.0.0.W, not 100.X.Y.Z
Ajout de SAN
Nous devons ajouter notre adresse IP pour le certificat.
Pour cela, nous allons d’abord supprimer les certificats de l’API server existant afin de pouvoir par la suite les régénérer.
sudo rm /etc/kubernetes/pki/apiserver.{crt,key}
Ensuite, nous devons récupérer le fichier de configuration kubeadm de notre cluster.
kubectl -n kube-system get configmap kubeadm-config -o jsonpath='{.data.ClusterConfiguration}' > kubeadm.yaml
Nous devons maintenant le modifier pour y ajouter la configuration SAN.
Remplacer par vos adresses IPs.
apiServer:
certSANs:
- "PRIVATE_IP_ADDR_OF_CONTROLPLANE"
- "kubernetes.default"
- "TAILSCALE_IP_ADDR_OF_CONTROLPLANE"
extraArgs:
authorization-mode: Node,RBAC
timeoutForControlPlane: 4m0s
apiVersion: kubeadm.k8s.io/v1beta3
certificatesDir: /etc/kubernetes/pki
clusterName: kubernetes
...
...
...
Pour finir nous allons régénérer les certificats de l’API server avec notre nouvelle configuration.
sudo kubeadm init phase certs apiserver --config kubeadm.yaml
Conclusion
Nous sommes maintenant en mesure d’accéder a notre cluster kubernetes depuis notre machine locale grâce à tailscale.
J’espère que cet article vous a été utile !