Crea criteri di rete a livello di workload

Questa pagina fornisce istruzioni per configurare i criteri di rete a livello di carico di lavoro in Google Distributed Cloud (GDC) con air gap.

I criteri di rete a livello di workload offrono un controllo granulare sulla comunicazione tra i singoli workload all'interno di un progetto. Questa granularità consente un controllo più rigoroso dell'accesso alla rete, migliorando la sicurezza e l'utilizzo delle risorse.

I criteri di rete a livello di workload possono applicare PNP lungo una singola zona. È possibile aggiungere etichette specifiche ai carichi di lavoro all'interno di una singola zona, consentendoti di controllare la comunicazione tra singoli carichi di lavoro all'interno di un progetto o in progetti diversi per quella zona. Per saperne di più, consulta Policy di rete a livello di workload per una singola zona.

Crea un criterio di traffico intra-progetto a livello di workload

Puoi creare una policy di traffico intra-progetto a livello di workload per attivare o disattivare l'accesso alla rete per il traffico tra i workload all'interno di un progetto.

Policy di rete per il traffico intraprogetto a livello di workload in entrata

Quando crei un progetto, crei implicitamente una risorsa di base ProjectNetworkPolicy predefinita che consente la comunicazione intra-progetto tra tutti i carichi di lavoro. Questa policy consente il traffico in entrata da altri workload nello stesso progetto.

Per creare una policy di gestione del traffico intra-progetto a livello di workload, devi prima eliminare la policy di base predefinita. In caso contrario, potrebbero verificarsi comportamenti imprevisti.

  1. Per eliminare la policy di base predefinita, esegui questo comando:

    kubectl --kubeconfig GLOBAL_API_SERVER delete pnp base-policy-allow-intra-project-traffic -n PROJECT
    
  2. Per creare una policy di rete per il traffico intra-progetto a livello di workload in entrata, crea e applica la seguente risorsa personalizzata:

    kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF
    apiVersion: networking.global.gdc.goog/v1
    kind: ProjectNetworkPolicy
    metadata:
      namespace: PROJECT
      name: allow-intra-project-inbound-traffic-from-target-to-subject
    spec:
      policyType: Ingress
      subject:
        subjectType: UserWorkload
        workloadSelector:
          matchLabels:
            SUBJECT_LABEL_KEY: SUBJECT_LABEL_VALUE
      ingress:
      - from:
        - projectSelector:
            projects:
              matchNames:
              - PROJECT
            workloads:
              matchLabels:
                TARGET_LABEL_KEY: TARGET_LABEL_VALUE
    EOF
    

    Sostituisci quanto segue:

    • GLOBAL_API_SERVER: il percorso kubeconfig del server API globale. Per saperne di più, vedi Server API globali e di zona. Se non hai ancora generato un file kubeconfig per il server API, consulta la sezione Accedi per maggiori dettagli.
    • PROJECT: il nome del progetto in cui vuoi consentire il traffico in entrata intraprogetto a livello di workload.
    • SUBJECT_LABEL_KEY: la chiave dell'etichetta utilizzata per selezionare i carichi di lavoro di origine. Ad esempio, app, tier o role.
    • SUBJECT_LABEL_VALUE: il valore associato a SUBJECT_LABEL_KEY. Specifica quali carichi di lavoro sono l'origine del traffico consentito. Ad esempio, se SUBJECT_LABEL_KEY è app e SUBJECT_LABEL_VALUE è backend, i carichi di lavoro con l'etichetta app: backend sono la sorgente di traffico.
    • TARGET_LABEL_KEY: la chiave dell'etichetta utilizzata per selezionare i carichi di lavoro di destinazione.
    • TARGET_LABEL_VALUE: il valore associato a TARGET_LABEL_KEY. Specifica quali carichi di lavoro sono la destinazione del traffico consentito.

Crea una policy di gestione del traffico tra progetti a livello di carico di lavoro

Puoi creare una policy di traffico tra progetti a livello di workload per attivare o disattivare l'accesso alla rete per il traffico tra workload in progetti diversi.

Policy di rete per il traffico tra progetti a livello di carico di lavoro in uscita

  • Per creare una policy di rete per il traffico tra progetti a livello di workload in uscita, crea e applica la seguente risorsa personalizzata:

    kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF
    apiVersion: networking.global.gdc.goog/v1
    kind: ProjectNetworkPolicy
    metadata:
      namespace: PROJECT_1
      name: allow-cross-project-outbound-traffic-to-subject-from-target
    spec:
      policyType: Egress
      subject:
        subjectType: UserWorkload
        workloadSelector:
          matchLabels:
            SUBJECT_LABEL_KEY: SUBJECT_LABEL_VALUE
      egress:
      - to:
        - projectSelector:
            projects:
              matchNames:
              - PROJECT_2
            workloads:
              matchLabels:
                TARGET_LABEL_KEY: TARGET_LABEL_VALUE
    EOF
    

    Sostituisci quanto segue:

    • GLOBAL_API_SERVER: il percorso kubeconfig del server API globale. Per saperne di più, vedi Server API globali e di zona. Se non hai ancora generato un file kubeconfig per il server API, consulta la sezione Accedi per maggiori dettagli.
    • PROJECT_1: il nome del progetto in cui vuoi consentire il traffico in uscita tra progetti a livello di workload.
    • PROJECT_2: il nome del progetto a cui vuoi inviare il traffico in uscita tra progetti a livello di workload.
    • SUBJECT_LABEL_KEY: la chiave dell'etichetta utilizzata per selezionare i carichi di lavoro di origine. Ad esempio, app, tier o role.
    • SUBJECT_LABEL_VALUE: il valore associato a SUBJECT_LABEL_KEY. Specifica quali carichi di lavoro sono l'origine del traffico consentito. Ad esempio, se SUBJECT_LABEL_KEY è app e SUBJECT_LABEL_VALUE è backend, i carichi di lavoro con l'etichetta app: backend sono la sorgente di traffico.
    • TARGET_LABEL_KEY: la chiave dell'etichetta utilizzata per selezionare i carichi di lavoro di destinazione.
    • TARGET_LABEL_VALUE: il valore associato a TARGET_LABEL_KEY. Specifica quali carichi di lavoro sono la destinazione del traffico consentito.

Crea un criterio di gestione del traffico intraprogetto a livello di carico di lavoro per una singola zona

Puoi creare una policy di traffico intra-progetto a livello di workload per abilitare o disabilitare l'accesso alla rete per il traffico tra i workload all'interno di un progetto in una zona specifica.

Policy di rete per il traffico intraprogetto a livello di workload in entrata in una singola zona

Quando crei un progetto, crei implicitamente una risorsa di base ProjectNetworkPolicy predefinita che consente la comunicazione intra-progetto tra tutti i carichi di lavoro. Questa policy consente il traffico in entrata da altri workload nello stesso progetto.

Per creare un criterio di rete per il traffico intra-progetto a livello di workload in entrata a zona singola, devi prima eliminare il criterio di base predefinito. In caso contrario, potrebbero verificarsi comportamenti imprevisti.

  1. Per eliminare la policy di base predefinita, esegui questo comando:

    kubectl --kubeconfig GLOBAL_API_SERVER delete pnp base-policy-allow-intra-project-traffic -n PROJECT
    
  2. Per creare un criterio di rete per il traffico intraprogetto a livello di workload Ingress a zona singola, crea e applica la seguente risorsa personalizzata:

    kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF
    apiVersion: networking.global.gdc.goog/v1
    kind: ProjectNetworkPolicy
    metadata:
      namespace: PROJECT
      name: allow-single-zone-intra-project-inbound-traffic-from-target-to-subject
    spec:
      policyType: Ingress
      subject:
        subjectType: UserWorkload
        workloadSelector:
          matchLabels:
            SUBJECT_LABEL_KEY: SUBJECT_LABEL_VALUE
            ZONE_SUBJECT_LABEL_KEY: ZONE_SUBJECT_LABEL_VALUE
      ingress:
      - from:
        - projectSelector:
            projects:
              matchNames:
              - PROJECT
            workloads:
              matchLabels:
                TARGET_LABEL_KEY: TARGET_LABEL_VALUE
                ZONE_TARGET_LABEL_KEY: ZONE_TARGET_LABEL_VALUE
    EOF
    

    Sostituisci quanto segue:

    • GLOBAL_API_SERVER: il percorso kubeconfig del server API globale. Per saperne di più, vedi Server API globali e di zona. Se non hai ancora generato un file kubeconfig per il server API, consulta la sezione Accedi per maggiori dettagli.
    • PROJECT: il nome del progetto in cui vuoi consentire il traffico in entrata intraprogetto a livello di workload di una singola zona.
    • SUBJECT_LABEL_KEY: la chiave dell'etichetta utilizzata per selezionare i carichi di lavoro di origine. Ad esempio, app, tier o role.
    • SUBJECT_LABEL_VALUE: il valore associato a SUBJECT_LABEL_KEY. Specifica quali carichi di lavoro sono l'origine del traffico consentito. Ad esempio, se SUBJECT_LABEL_KEY è app e SUBJECT_LABEL_VALUE è backend, i carichi di lavoro con l'etichetta app: backend sono la sorgente di traffico.
    • TARGET_LABEL_KEY: la chiave dell'etichetta utilizzata per selezionare i carichi di lavoro di destinazione.
    • TARGET_LABEL_VALUE: il valore associato a TARGET_LABEL_KEY. Specifica quali carichi di lavoro sono la destinazione del traffico consentito.
    • ZONE_SUBJECT_LABEL_KEY: la chiave dell'etichetta utilizzata per selezionare la zona di origine. Ad esempio, zone o region.
    • ZONE_SUBJECT_LABEL_VALUE: il valore associato a ZONE_SUBJECT_LABEL_KEY. Specifica la zona di origine del traffico consentito. Ad esempio, se ZONE_SUBJECT_LABEL_KEY è zone e ZONE_SUBJECT_LABEL_VALUE è us-central1-a, i carichi di lavoro con l'etichetta zone: us-central1-a sono la sorgente di traffico.
    • ZONE_TARGET_LABEL_KEY: la chiave dell'etichetta utilizzata per selezionare la zona di destinazione.
    • ZONE_TARGET_LABEL_VALUE: il valore associato a ZONE_TARGET_LABEL_KEY. Specifica la zona di destinazione del traffico consentito.

Crea una policy di traffico tra progetti a livello di workload per una singola zona

Puoi creare una policy di traffico tra progetti a livello di workload per una singola zona per attivare o disattivare l'accesso alla rete per il traffico tra workload all'interno di progetti diversi in una zona specifica.

Policy di rete per il traffico tra progetti a livello di workload in uscita da una singola zona

  • Per creare un criterio di rete per il traffico intraprogetto a livello di workload in uscita da una singola zona, crea e applica la seguente risorsa personalizzata:

    kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF
    apiVersion: networking.global.gdc.goog/v1
    kind: ProjectNetworkPolicy
    metadata:
      namespace: PROJECT_1
      name: allow-single-zone-cross-project-outbound-traffic-to-subject-from-target
    spec:
      policyType: Egress
      subject:
        subjectType: UserWorkload
        workloadSelector:
          matchLabels:
            SUBJECT_LABEL_KEY: SUBJECT_LABEL_VALUE
            ZONE_SUBJECT_LABEL_KEY: ZONE_SUBJECT_LABEL_VALUE
      egress:
      - to:
        - projectSelector:
            projects:
              matchNames:
              - PROJECT_2
            workloads:
              matchLabels:
                TARGET_LABEL_KEY: TARGET_LABEL_VALUE
                ZONE_TARGET_LABEL_KEY: ZONE_TARGET_LABEL_VALUE
    EOF
    

    Sostituisci quanto segue:

    • GLOBAL_API_SERVER: il percorso kubeconfig del server API globale. Per saperne di più, vedi Server API globali e di zona. Se non hai ancora generato un file kubeconfig per il server API, consulta la sezione Accedi per maggiori dettagli.
    • PROJECT_1: il nome del progetto in cui vuoi consentire il traffico in uscita tra progetti a livello di workload di una singola zona.
    • PROJECT_2: il nome del progetto in cui vuoi inviare il traffico in uscita tra progetti a livello di workload di una singola zona.
    • SUBJECT_LABEL_KEY: la chiave dell'etichetta utilizzata per selezionare i carichi di lavoro di origine. Ad esempio, app, tier o role.
    • SUBJECT_LABEL_VALUE: il valore associato a SUBJECT_LABEL_KEY. Specifica quali carichi di lavoro sono l'origine del traffico consentito. Ad esempio, se SUBJECT_LABEL_KEY è app e SUBJECT_LABEL_VALUE è backend, i carichi di lavoro con l'etichetta app: backend sono la sorgente di traffico.
    • TARGET_LABEL_KEY: la chiave dell'etichetta utilizzata per selezionare i carichi di lavoro di destinazione.
    • TARGET_LABEL_VALUE: il valore associato a TARGET_LABEL_KEY. Specifica quali carichi di lavoro sono la destinazione del traffico consentito.
    • ZONE_SUBJECT_LABEL_KEY: la chiave dell'etichetta utilizzata per selezionare la zona di origine. Ad esempio, zone o region.
    • ZONE_SUBJECT_LABEL_VALUE: il valore associato a ZONE_SUBJECT_LABEL_KEY. Specifica la zona di origine del traffico consentito. Ad esempio, se ZONE_SUBJECT_LABEL_KEY è zone e ZONE_SUBJECT_LABEL_VALUE è us-central1-a, i carichi di lavoro con l'etichetta zone: us-central1-a sono la sorgente di traffico.
    • ZONE_TARGET_LABEL_KEY: la chiave dell'etichetta utilizzata per selezionare la zona di destinazione.
    • ZONE_TARGET_LABEL_VALUE: il valore associato a ZONE_TARGET_LABEL_KEY. Specifica la zona di destinazione del traffico consentito.