Aller au contenu

Lab 05 : Peering entre OKS et un réseau de VM

  • Configurer un peering entre un cluster OKS et un réseau de VM (autre NET/VPC)
  • Mettre à jour les routes et Security Groups pour autoriser le trafic privé
  • Tester la connectivité privée entre un pod OKS et une VM

Le peering permet aux deux réseaux de communiquer via leurs adresses IP privées. C’est la base pour des architectures hybrides où des services OKS interagissent avec des ressources dans d’autres VPC.

  1. Un cluster Kubernetes opérationnel fourni par OKS
  2. Une VM dans un réseau privé (autre NET/VPC), dans la même région
  3. Accès à la CLI kubectl, oks-cli et osc-cli
  4. Plages CIDR qui ne se chevauchent pas entre les deux réseaux
  5. Droits nécessaires pour accepter le peering côté réseau de la VM (et/ou profil OSC adapté)
Terminal window
oks-cli cluster kubeconfig --cluster-name my-cluster --project-name my-project > kubeconfig.yaml
export KUBECONFIG=./kubeconfig.yaml
Terminal window
kubectl get nodes

Crée un fichier peering-request.yaml :

apiVersion: oks.dev/v1beta
kind: NetPeeringRequest
metadata:
name: peering-request
spec:
accepterNetId: vpc-xxxxxxxx # ID du VPC de la VM
accepterOwnerId: "123456789012" # Account ID du réseau cible

Applique la ressource :

Terminal window
kubectl apply -f peering-request.yaml

Après l’application, vérifie que la demande a bien été prise en compte et qu’elle a généré un NetPeeringId :

Terminal window
kubectl get npr

Exemple de sortie :

Terminal window
NAME SOURCE NET ID ACCEPTER NET ID NET PEERING ID STATE NAME STATE MESSAGE
peering-request vpc-oks123456 vpc-a9321987 pcx-0123abcd pending-acceptance Pending acceptance by 123904561278

Note le NET PEERING ID (ex: pcx-0123abcd) pour l’étape d’acceptation.

Utilise osc-cli (ou Cockpit) pour accepter la demande :

Terminal window
osc-cli api AcceptNetPeering \
--profile "<profile_name>" \
--NetPeeringId "pcx-0123abcd"

Ajoute une route vers le CIDR du projet OKS via la connexion de peering :

Terminal window
osc-cli api CreateRoute \
--profile "<profile_name>" \
--RouteTableId "rtb-xxxxxxxx" \ # table de routage associée au subnet de la VM
--DestinationIpRange "10.50.0.0/16" \ # remplace par le CIDR exact de ton projet OKS
--NetPeeringId "pcx-0123abcd"
> Dans la plupart des cas, le routage côté OKS est géré automatiquement. Si nécessaire, contacte le support OKS pour une configuration avancée.

Modifie le Security Group de la VM pour autoriser le trafic entrant depuis le CIDR OKS (ex: 10.50.0.0/16) sur les ports nécessaires :

  • ICMP (tests de ping)
  • SSH/HTTP/HTTPS selon les besoins

Lance un pod temporaire depuis le cluster OKS :

Terminal window
kubectl run -it peeringtest-pod --image=alpine --restart=Never -- sh

Depuis le pod, teste la connectivité vers l’IP privée de la VM :

Terminal window
ping <IP_PRIVEE_VM>

✅ Attendu : si la configuration est correcte (peering actif, routes à jour, Security Groups ouverts), la réponse au ping s’affiche.

Tu peux aussi tester une application (HTTP) si elle est exposée sur la VM :

Terminal window
apk add --no-cache curl
curl -m 5 http://<IP_PRIVEE_VM>:80

Exemple de résultat attendu :

Terminal window
PING 10.0.1.49 (10.0.1.49): 56 data bytes
64 bytes from 10.0.1.49: seq=110 ttl=60 time=1.39 ms
64 bytes from 10.0.1.49: seq=111 ttl=60 time=1.29 ms
...

Supprime la ressource côté OKS :

Terminal window
kubectl delete -f peering-request.yaml

Supprime la route et le peering côté VPC de la VM (adapte les IDs) :

Terminal window
osc-cli api DeleteRoute \
--profile "<profile_name>" \
--RouteTableId "rtb-xxxxxxxx" \
--DestinationIpRange "10.50.0.0/16"
osc-cli api DeleteNetPeering \
--profile "<profile_name>" \
--NetPeeringId "pcx-0123abcd"
  • Le peering permet la communication privée entre OKS et un VPC de VM
  • Les routes et Security Groups sont indispensables pour autoriser le trafic
  • Les tests depuis un pod OKS valident la connectivité bout-en-bout