Questa pagina fornisce istruzioni per configurare il traffico intra-cluster per un cluster standard utilizzando i criteri di rete Kubernetes in Google Distributed Cloud (GDC) air-gapped.
Un NetworkPolicy Kubernetes è una specifica di come i gruppi di pod sono autorizzati a comunicare tra loro e con altri endpoint di rete. Le risorse NetworkPolicy utilizzano le etichette per selezionare i pod e definire regole che specificano il traffico consentito ai pod selezionati. Questi criteri hanno ambito locale e si applicano solo al traffico all'interno del cluster in cui sono definiti, a meno che non venga creato un criterio di tipo "consenti tutto", che consente anche la comunicazione con gli endpoint di altri cluster standard e condivisi.
Prima di iniziare
Per configurare le policy di rete Kubernetes, devi disporre delle autorizzazioni necessarie all'interno del cluster per creare, modificare ed eliminare risorse NetworkPolicy negli spazi dei nomi pertinenti.
Crea un criterio da pod a pod all'interno del cluster
Queste policy controllano il traffico tra i pod all'interno dello stesso cluster standard.
Crea un criterio in entrata da pod a pod all'interno del cluster
Per consentire il traffico in entrata da pod a pod all'interno del cluster, crea e applica la seguente risorsa:
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 EOFSostituisci quanto segue:
CLUSTER_API_SERVER: il percorso kubeconfig del server API del cluster. Se non hai ancora generato un file kubeconfig per il server API, consulta la sezione Accedi per maggiori dettagli.SUBJECT_NAMESPACE: lo spazio dei nomi del soggetto nel cluster standard.PEER_NAMESPACE: lo spazio dei nomi peer nel cluster standard.SUBJECT_LABEL_KEY: la chiave dell'etichetta utilizzata per selezionare i carichi di lavoro del soggetto. Ad esempio,app,tierorole.SUBJECT_LABEL_VALUE: il valore associato aSUBJECT_LABEL_KEY. Ad esempio, seSUBJECT_LABEL_KEYèappeSUBJECT_LABEL_VALUEèbackend, i carichi di lavoro con l'etichettaapp: backendricevono il traffico.PEER_LABEL_KEY: la chiave dell'etichetta utilizzata per selezionare i carichi di lavoro peer.PEER_LABEL_VALUE: il valore associato aPEER_LABEL_KEY.PORT: la porta sul workload soggetto in cui è consentito il traffico.
Crea un criterio in uscita da pod a pod all'interno del cluster
Per consentire il traffico di uscita da pod a pod all'interno del cluster, crea e applica la seguente risorsa:
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 EOFSostituisci quanto segue:
CLUSTER_API_SERVER: il percorso kubeconfig del server API del cluster. Se non hai ancora generato un file kubeconfig per il server API, consulta la sezione Accedi per maggiori dettagli.SUBJECT_NAMESPACE: lo spazio dei nomi del soggetto nel cluster standard.PEER_NAMESPACE: lo spazio dei nomi peer nel cluster standard.SUBJECT_LABEL_KEY: la chiave dell'etichetta utilizzata per selezionare i carichi di lavoro del soggetto. Ad esempio,app,tierorole.SUBJECT_LABEL_VALUE: il valore associato aSUBJECT_LABEL_KEY. Ad esempio, seSUBJECT_LABEL_KEYèappeSUBJECT_LABEL_VALUEèbackend, i carichi di lavoro con l'etichettaapp: backendinviano il traffico.PEER_LABEL_KEY: la chiave dell'etichetta utilizzata per selezionare i carichi di lavoro peer.PEER_LABEL_VALUE: il valore associato aPEER_LABEL_KEY.PORT: la porta sul workload peer in cui è consentito il traffico.
Crea una policy da pod a pod all'interno del cluster utilizzando un bilanciatore del carico
Queste policy controllano il traffico tra i pod all'interno dello stesso cluster quando il traffico viene instradato tramite un bilanciatore del carico esterno.
Crea un criterio di ingresso da pod a pod all'interno del cluster utilizzando un bilanciatore del carico
Per consentire il traffico in entrata da pod a pod all'interno del cluster utilizzando un bilanciatore del carico, crea e applica la seguente risorsa:
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 EOFSostituisci quanto segue:
CLUSTER_API_SERVER: il percorso kubeconfig del server API del cluster. Se non hai ancora generato un file kubeconfig per il server API, consulta la sezione Accedi per maggiori dettagli.SUBJECT_NAMESPACE: lo spazio dei nomi del soggetto nel cluster standard.SUBJECT_LABEL_KEY: la chiave dell'etichetta utilizzata per selezionare i carichi di lavoro del soggetto. Ad esempio,app,tierorole.SUBJECT_LABEL_VALUE: il valore associato aSUBJECT_LABEL_KEY. Ad esempio, seSUBJECT_LABEL_KEYèappeSUBJECT_LABEL_VALUEèbackend, i carichi di lavoro con l'etichettaapp: backendricevono il traffico.EGRESS_NAT_IP: l'IP NAT in uscita del pod di origine.PORT: la porta sul workload soggetto in cui è consentito il traffico.
Crea un criterio di uscita da pod a pod all'interno del cluster utilizzando un bilanciatore del carico
Per consentire il traffico di uscita da pod a pod all'interno del cluster utilizzando un bilanciatore del carico, crea e applica la seguente risorsa:
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 EOFSostituisci quanto segue:
CLUSTER_API_SERVER: il percorso kubeconfig del server API del cluster. Se non hai ancora generato un file kubeconfig per il server API, consulta la sezione Accedi per maggiori dettagli.SUBJECT_NAMESPACE: lo spazio dei nomi del soggetto nel cluster standard.SUBJECT_LABEL_KEY: la chiave dell'etichetta utilizzata per selezionare i carichi di lavoro del soggetto. Ad esempio,app,tierorole.SUBJECT_LABEL_VALUE: il valore associato aSUBJECT_LABEL_KEY. Ad esempio, seSUBJECT_LABEL_KEYèappeSUBJECT_LABEL_VALUEèbackend, i carichi di lavoro con l'etichettaapp: backendinviano il traffico.ELB_EXTERNAL_IP: l'indirizzo IP esterno del bilanciatore del carico.PORT: la porta sull'endpoint esterno a cui è consentito il traffico.
Crea una policy esterna all'organizzazione
Queste norme controllano il traffico tra un pod in un cluster standard e un endpoint esterno (qualsiasi indirizzo IP al di fuori del cluster).
Crea un criterio in entrata per il traffico esterno all'organizzazione
Per consentire il traffico in entrata da un endpoint esterno all'organizzazione, crea e applica la seguente risorsa:
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 EOFSostituisci quanto segue:
CLUSTER_API_SERVER: il percorso kubeconfig del server API del cluster. Se non hai ancora generato un file kubeconfig per il server API, consulta la sezione Accedi per maggiori dettagli.SUBJECT_NAMESPACE: lo spazio dei nomi del soggetto nel cluster standard.SUBJECT_LABEL_KEY: la chiave dell'etichetta utilizzata per selezionare i carichi di lavoro del soggetto. Ad esempio,app,tierorole.SUBJECT_LABEL_VALUE: il valore associato aSUBJECT_LABEL_KEY. Ad esempio, seSUBJECT_LABEL_KEYèappeSUBJECT_LABEL_VALUEèbackend, i carichi di lavoro con l'etichettaapp: backendricevono il traffico.EXTERNAL_CIDR: il CIDR esterno, ad esempio:20.0.0.0/16.PORT: la porta sul workload soggetto in cui è consentito il traffico.
Crea un criterio in uscita per il traffico esterno all'organizzazione
Per consentire il traffico in uscita a un endpoint esterno all'organizzazione, crea e applica la seguente risorsa:
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 EOFSostituisci quanto segue:
CLUSTER_API_SERVER: il percorso kubeconfig del server API del cluster. Se non hai ancora generato un file kubeconfig per il server API, consulta la sezione Accedi per maggiori dettagli.SUBJECT_NAMESPACE: lo spazio dei nomi del soggetto nel cluster standard.SUBJECT_LABEL_KEY: la chiave dell'etichetta utilizzata per selezionare i carichi di lavoro del soggetto. Ad esempio,app,tierorole.SUBJECT_LABEL_VALUE: il valore associato aSUBJECT_LABEL_KEY. Ad esempio, seSUBJECT_LABEL_KEYèappeSUBJECT_LABEL_VALUEèbackend, i carichi di lavoro con l'etichettaapp: backendinviano il traffico.EXTERNAL_CIDR: il CIDR esterno, ad esempio:20.0.0.0/16.PORT: la porta sull'endpoint esterno a cui è consentito il traffico.
Crea una policy di tipo Consenti tutto
I seguenti criteri possono essere utilizzati per consentire esplicitamente tutto il traffico. Ciò consente la comunicazione con gli endpoint di altri cluster standard e condivisi.
Crea una policy in entrata che consenta tutto
Per consentire tutto il traffico in entrata, crea e applica la seguente risorsa:
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: - {} EOFSostituisci quanto segue:
CLUSTER_API_SERVER: il percorso kubeconfig del server API del cluster. Se non hai ancora generato un file kubeconfig per il server API, consulta la sezione Accedi per maggiori dettagli.SUBJECT_NAMESPACE: lo spazio dei nomi del soggetto nel cluster standard.
Crea una policy in uscita che consenta tutto
Per consentire tutto il traffico in uscita, crea e applica la seguente risorsa:
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: - {} EOFSostituisci quanto segue:
CLUSTER_API_SERVER: il percorso kubeconfig del server API del cluster. Se non hai ancora generato un file kubeconfig per il server API, consulta la sezione Accedi per maggiori dettagli.SUBJECT_NAMESPACE: lo spazio dei nomi del soggetto nel cluster standard.