web-dev-qa-db-fra.com

Comment vérifier si la stratégie de réseau a été appliquée à POD?

J'essaie de limiter à mon OpenVPN pour permettre d'accéder à l'infrastructure interne et de ne pas limiter que par "Développement" d'espace de noms ", j'ai donc commencé avec une stratégie simple qui nie tout le trafic de sortie et ne voit aucun effet ou aucun retour de cluster qu'il a été appliqué, je J'ai lu toutes les documents officiels et non et n'a pas trouvé de solution, voici ma politique:

kind: NetworkPolicy
apiVersion: networking.k8s.io/v1
metadata:
  name: policy-openvpn
  namespace: default
spec:
  podSelector:
    matchLabels:
      app: openvpn
  policyTypes:
  - Egress
  egress: []

J'ai appliqué la politique de réseau ci-dessus avec kubectl apply -f policy.yaml Commande, mais je ne vois aucun effet de cette politique, je suis toujours capable de vous connecter à quelque chose de mon POD OpenVPN, comment déboguer cela et voir ce qui ne va pas avec ma politique?

Cela ressemble à une boîte noire pour moi et que ne peut faire que la méthode d'erreur d'essai, ce qui ne semble pas fonctionner.

Comment puis-je valider cela qu'il trouve des pods et applique la stratégie à leur politique?

J'utilise le dernier cluster Kubettes fourni par GKE

J'ai remarqué que je n'ai pas vérifié "Utilisez NetworkPolicy" dans Google Cloud Paramètres et après avoir vérifié que mon VPN arrêté, mais je ne sais pas comment vérifier, ou pourquoi VPN me permet de vous connecter et de bloquer toutes les demandes de réseau. , très étrange, existe-t-il un moyen de déboguer est plutôt que de changer de manière aléatoire?

9
animekun

GKE utilise Calico pour la mise en œuvre de la politique de réseau. Vous devez activer la stratégie réseau réseau pour les maîtres et les nœuds avant d'appliquer la stratégie de réseau. Vous pouvez vérifier si Calico est activé en recherchant des pods calico dans l'espace de noms de Kube-System.

kubectl get pods --namespace=kube-system

Pour vérifier les stratégies de réseau, vous pouvez voir les commandes suivantes.

kubectl get networkpolicy
kubectl describe networkpolicy <networkpolicy-name>
1
newoxo

Lorsque vous exécutez, vous pouvez vérifier l'étiquette utilisée pour un sélecteur de pod:

k describe netpol <networkpolicy-name>
Name:         <networkpolicy-name>
Namespace:    default
Created on:   2020-06-08 15:19:12 -0500 CDT
Labels:       <none>
Annotations:  Spec:
  PodSelector:     app=nginx

Le sélecteur de pod vous montrera les étiquettes de ce NetPol appliqué également. Ensuite, vous pouvez présenter tous les pods avec cette étiquette par:

k get pods -l app=nginx
NAME                              READY   STATUS    RESTARTS   AGE
nginx-deployment-f7b9c7bb-5lt8j   1/1     Running   0          19h
nginx-deployment-f7b9c7bb-cf69l   1/1     Running   0          19h
nginx-deployment-f7b9c7bb-cxghn   1/1     Running   0          19h
nginx-deployment-f7b9c7bb-ppw4t   1/1     Running   0          19h
nginx-deployment-f7b9c7bb-v76vr   1/1     Running   0          19h
4
Trigoman