Auf dieser Seite finden Sie eine Anleitung zum Konfigurieren des Intra-Cluster-Traffics für einen Standardcluster mit Kubernetes-Netzwerkrichtlinien in Google Distributed Cloud (GDC) mit Air Gap.
Eine Kubernetes-NetworkPolicy gibt an, wie Gruppen von Pods miteinander und mit anderen Netzwerkendpunkten kommunizieren dürfen. NetworkPolicy-Ressourcen verwenden Labels, um Pods auszuwählen und Regeln zu definieren, die angeben, welcher Traffic für die ausgewählten Pods zulässig ist. Diese Richtlinien sind lokal begrenzt und gelten nur für Traffic innerhalb des Clusters, in dem sie definiert sind, sofern keine „Allow-all“-Richtlinie erstellt wird, die auch die Kommunikation mit Endpunkten aus anderen Standard- und freigegebenen Clustern zulässt.
Hinweise
Wenn Sie Kubernetes-Netzwerkrichtlinien konfigurieren möchten, benötigen Sie die erforderlichen Berechtigungen im Cluster, um NetworkPolicy-Ressourcen in den relevanten Namespaces zu erstellen, zu ändern und zu löschen.
Richtlinie für Pod-zu-Pod-Kommunikation innerhalb des Clusters erstellen
Diese Richtlinien steuern den Traffic zwischen Pods innerhalb desselben Standardclusters.
Richtlinie für eingehenden Pod-zu-Pod-Traffic innerhalb des Clusters erstellen
Um Ingress-Traffic von Pod zu Pod innerhalb des Clusters zuzulassen, erstellen und wenden Sie die folgende Ressource an:
kubectl --kubeconfig CLUSTER_API_SERVER apply -f - <<EOF apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: allow-intra-cluster-ingress-traffic namespace: SUBJECT_NAMESPACE spec: podSelector: matchLabels: SUBJECT_LABEL_KEY: SUBJECT_LABEL_VALUE policyTypes: - Ingress ingress: - from: - namespaceSelector: matchLabels: Kubernetes.io/metadata.name: PEER_NAMESPACE podSelector: matchLabels: PEER_LABEL_KEY: PEER_LABEL_VALUE ports: - protocol: TCP port: PORT EOFErsetzen Sie Folgendes:
CLUSTER_API_SERVER: Der Kubeconfig-Pfad des API-Servers des Clusters. Wenn Sie noch keine kubeconfig-Datei für den API-Server generiert haben, finden Sie weitere Informationen unter Anmelden.SUBJECT_NAMESPACE: Der Betreff-Namespace im Standardcluster.PEER_NAMESPACE: Der Peer-Namespace im Standardcluster.SUBJECT_LABEL_KEY: Der Schlüssel des Labels, mit dem die betreffenden Arbeitslasten ausgewählt werden. Beispiel:app,tieroderrole.SUBJECT_LABEL_VALUE: Der Wert, der mit demSUBJECT_LABEL_KEYverknüpft ist. WennSUBJECT_LABEL_KEYbeispielsweiseappundSUBJECT_LABEL_VALUEbackendist, wird der Traffic an Arbeitslasten mit dem Labelapp: backendweitergeleitet.PEER_LABEL_KEY: Der Schlüssel des Labels, mit dem die Peer-Arbeitslasten ausgewählt werden.PEER_LABEL_VALUE: Der Wert, der mit demPEER_LABEL_KEYverknüpft ist.PORT: Der Port der betreffenden Arbeitslast, auf dem Traffic zulässig ist.
Richtlinie für ausgehenden Pod-zu-Pod-Traffic innerhalb eines Clusters erstellen
Um ausgehenden Pod-zu-Pod-Traffic innerhalb des Clusters zuzulassen, erstellen und wenden Sie die folgende Ressource an:
kubectl --kubeconfig CLUSTER_API_SERVER apply -f - <<EOF apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: allow-egress-intra-cluster-traffic namespace: SUBJECT_NAMESPACE spec: podSelector: matchLabels: SUBJECT_LABEL_KEY: SUBJECT_LABEL_VALUE policyTypes: - Egress egress: - to: - namespaceSelector: matchLabels: Kubernetes.io/metadata.name: PEER_NAMESPACE podSelector: matchLabels: PEER_LABEL_KEY: PEER_LABEL_VALUE ports: - protocol: TCP port: PORT EOFErsetzen Sie Folgendes:
CLUSTER_API_SERVER: Der Kubeconfig-Pfad des API-Servers des Clusters. Wenn Sie noch keine kubeconfig-Datei für den API-Server generiert haben, finden Sie weitere Informationen unter Anmelden.SUBJECT_NAMESPACE: Der Betreff-Namespace im Standardcluster.PEER_NAMESPACE: Der Peer-Namespace im Standardcluster.SUBJECT_LABEL_KEY: Der Schlüssel des Labels, mit dem die betreffenden Arbeitslasten ausgewählt werden. Beispiel:app,tieroderrole.SUBJECT_LABEL_VALUE: Der Wert, der mit demSUBJECT_LABEL_KEYverknüpft ist. WennSUBJECT_LABEL_KEYbeispielsweiseappundSUBJECT_LABEL_VALUEbackendist, wird der Traffic von Arbeitslasten mit dem Labelapp: backendgesendet.PEER_LABEL_KEY: Der Schlüssel des Labels, mit dem die Peer-Arbeitslasten ausgewählt werden.PEER_LABEL_VALUE: Der Wert, der mit demPEER_LABEL_KEYverknüpft ist.PORT: der Port der Peer-Arbeitslast, auf dem Traffic zulässig ist.
Intra-Cluster-Pod-zu-Pod-Richtlinie mit einem Load Balancer erstellen
Mit diesen Richtlinien wird der Traffic zwischen Pods innerhalb desselben Clusters gesteuert, wenn der Traffic über einen externen Load-Balancer weitergeleitet wird.
Ingress-Richtlinie für Pod-zu-Pod-Kommunikation innerhalb eines Clusters mit einem Load Balancer erstellen
Damit Pod-zu-Pod-Ingress-Traffic innerhalb des Clusters über einen Load Balancer möglich ist, erstellen und wenden Sie die folgende Ressource an:
kubectl --kubeconfig CLUSTER_API_SERVER apply -f - <<EOF apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: allow-intra-cluster-ingress-traffic-via-elb namespace: SUBJECT_NAMESPACE spec: podSelector: matchLabels: SUBJECT_LABEL_KEY: SUBJECT_LABEL_VALUE policyTypes: - Ingress ingress: - from: - ipBlock: cidr: EGRESS_NAT_IP/32 ports: - protocol: TCP port: PORT EOFErsetzen Sie Folgendes:
CLUSTER_API_SERVER: Der Kubeconfig-Pfad des API-Servers des Clusters. Wenn Sie noch keine kubeconfig-Datei für den API-Server generiert haben, finden Sie weitere Informationen unter Anmelden.SUBJECT_NAMESPACE: Der Betreff-Namespace im Standardcluster.SUBJECT_LABEL_KEY: Der Schlüssel des Labels, mit dem die betreffenden Arbeitslasten ausgewählt werden. Beispiel:app,tieroderrole.SUBJECT_LABEL_VALUE: Der Wert, der mit demSUBJECT_LABEL_KEYverknüpft ist. WennSUBJECT_LABEL_KEYbeispielsweiseappundSUBJECT_LABEL_VALUEbackendist, wird der Traffic an Arbeitslasten mit dem Labelapp: backendweitergeleitet.EGRESS_NAT_IP: die NAT-IP-Adresse des Quell-Pods für ausgehenden Traffic.PORT: Der Port der betreffenden Arbeitslast, auf dem Traffic zulässig ist.
Egress-Richtlinie für Pod-zu-Pod-Kommunikation innerhalb eines Clusters mit einem Load Balancer erstellen
Damit Pod-zu-Pod-Ausgangstraffic innerhalb des Clusters über einen Load Balancer möglich ist, erstellen und wenden Sie die folgende Ressource an:
kubectl --kubeconfig CLUSTER_API_SERVER apply -f - <<EOF apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: allow-intra-cluster-egress-traffic-via-elb namespace: SUBJECT_NAMESPACE spec: podSelector: matchLabels: SUBJECT_LABEL_KEY: SUBJECT_LABEL_VALUE policyTypes: - Egress egress: - to: - ipBlock: cidr: ELB_EXTERNAL_IP/32 ports: - protocol: TCP port: PORT EOFErsetzen Sie Folgendes:
CLUSTER_API_SERVER: Der Kubeconfig-Pfad des API-Servers des Clusters. Wenn Sie noch keine kubeconfig-Datei für den API-Server generiert haben, finden Sie weitere Informationen unter Anmelden.SUBJECT_NAMESPACE: Der Betreff-Namespace im Standardcluster.SUBJECT_LABEL_KEY: Der Schlüssel des Labels, mit dem die betreffenden Arbeitslasten ausgewählt werden. Beispiel:app,tieroderrole.SUBJECT_LABEL_VALUE: Der Wert, der mit demSUBJECT_LABEL_KEYverknüpft ist. WennSUBJECT_LABEL_KEYbeispielsweiseappundSUBJECT_LABEL_VALUEbackendist, wird der Traffic von Arbeitslasten mit dem Labelapp: backendgesendet.ELB_EXTERNAL_IP: die externe IP-Adresse des Load-Balancers.PORT: der Port am externen Endpunkt, zu dem Traffic zugelassen ist.
Organisationsrichtlinie erstellen
Diese Richtlinien steuern den Traffic zwischen einem Pod in einem Standardcluster und einem externen Endpunkt (einer beliebigen IP-Adresse außerhalb des Clusters).
Richtlinie für eingehenden Traffic für organisationsfremden Traffic erstellen
Wenn Sie eingehenden Traffic von einem organisationsfremden Endpunkt zulassen möchten, erstellen und wenden Sie die folgende Ressource an:
kubectl --kubeconfig CLUSTER_API_SERVER apply -f - <<EOF apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: allow-ingress-from-organization-external-to-standard-cluster-pod namespace: SUBJECT_NAMESPACE spec: podSelector: matchLabels: SUBJECT_LABEL_KEY: SUBJECT_LABEL_VALUE policyTypes: - Ingress ingress: - from: - ipBlock: cidr: EXTERNAL_CIDR ports: - protocol: TCP port: PORT EOFErsetzen Sie Folgendes:
CLUSTER_API_SERVER: Der Kubeconfig-Pfad des API-Servers des Clusters. Wenn Sie noch keine kubeconfig-Datei für den API-Server generiert haben, finden Sie weitere Informationen unter Anmelden.SUBJECT_NAMESPACE: Der Betreff-Namespace im Standardcluster.SUBJECT_LABEL_KEY: Der Schlüssel des Labels, mit dem die betreffenden Arbeitslasten ausgewählt werden. Beispiel:app,tieroderrole.SUBJECT_LABEL_VALUE: Der Wert, der mit demSUBJECT_LABEL_KEYverknüpft ist. WennSUBJECT_LABEL_KEYbeispielsweiseappundSUBJECT_LABEL_VALUEbackendist, wird der Traffic an Arbeitslasten mit dem Labelapp: backendweitergeleitet.EXTERNAL_CIDR: der externe CIDR, z. B.20.0.0.0/16.PORT: Der Port der betreffenden Arbeitslast, auf dem Traffic zulässig ist.
Richtlinie für ausgehenden Traffic für organisationsfremden Traffic erstellen
Wenn Sie ausgehenden Traffic zu einem organisationsfremden Endpunkt zulassen möchten, erstellen und wenden Sie die folgende Ressource an:
kubectl --kubeconfig CLUSTER_API_SERVER apply -f - <<EOF apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: allow-egress-from-standard-cluster-pod-to-organization-external namespace: SUBJECT_NAMESPACE spec: podSelector: matchLabels: SUBJECT_LABEL_KEY: SUBJECT_LABEL_VALUE policyTypes: - Egress egress: - to: - ipBlock: cidr: EXTERNAL_CIDR ports: - protocol: TCP port: PORT EOFErsetzen Sie Folgendes:
CLUSTER_API_SERVER: Der Kubeconfig-Pfad des API-Servers des Clusters. Wenn Sie noch keine kubeconfig-Datei für den API-Server generiert haben, finden Sie weitere Informationen unter Anmelden.SUBJECT_NAMESPACE: Der Betreff-Namespace im Standardcluster.SUBJECT_LABEL_KEY: Der Schlüssel des Labels, mit dem die betreffenden Arbeitslasten ausgewählt werden. Beispiel:app,tieroderrole.SUBJECT_LABEL_VALUE: Der Wert, der mit demSUBJECT_LABEL_KEYverknüpft ist. WennSUBJECT_LABEL_KEYbeispielsweiseappundSUBJECT_LABEL_VALUEbackendist, wird der Traffic von Arbeitslasten mit dem Labelapp: backendgesendet.EXTERNAL_CIDR: der externe CIDR, z. B.20.0.0.0/16.PORT: der Port am externen Endpunkt, zu dem Traffic zugelassen ist.
Richtlinie „Alles zulassen“ erstellen
Mit den folgenden Richtlinien kann der gesamte Traffic explizit zugelassen werden. Dadurch ist die Kommunikation mit Endpunkten aus anderen Standard- und freigegebenen Clustern möglich.
Richtlinie für eingehenden Traffic erstellen, die alles zulässt
Wenn Sie allen eingehenden Traffic zulassen möchten, erstellen Sie die folgende Ressource und wenden Sie sie an:
kubectl --kubeconfig CLUSTER_API_SERVER apply -f - <<EOF apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: allow-all-ingress-traffic namespace: SUBJECT_NAMESPACE spec: podSelector: {} policyTypes: - Ingress ingress: - {} EOFErsetzen Sie Folgendes:
CLUSTER_API_SERVER: Der Kubeconfig-Pfad des API-Servers des Clusters. Wenn Sie noch keine kubeconfig-Datei für den API-Server generiert haben, finden Sie weitere Informationen unter Anmelden.SUBJECT_NAMESPACE: Der Betreff-Namespace im Standardcluster.
Richtlinie für ausgehenden Traffic erstellen, die alles zulässt
Wenn Sie den gesamten ausgehenden Traffic zulassen möchten, erstellen Sie die folgende Ressource und wenden Sie sie an:
kubectl --kubeconfig CLUSTER_API_SERVER apply -f - <<EOF apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: allow-all-egress-traffic namespace: SUBJECT_NAMESPACE spec: podSelector: {} policyTypes: - Egress egress: - {} EOFErsetzen Sie Folgendes:
CLUSTER_API_SERVER: Der Kubeconfig-Pfad des API-Servers des Clusters. Wenn Sie noch keine kubeconfig-Datei für den API-Server generiert haben, finden Sie weitere Informationen unter Anmelden.SUBJECT_NAMESPACE: Der Betreff-Namespace im Standardcluster.