Créer des règles de réseau au niveau de la charge de travail

Cette page explique comment configurer des règles de réseau au niveau de la charge de travail dans Google Distributed Cloud (GDC) sous air gap.

Les règles de réseau au niveau de la charge de travail offrent un contrôle précis de la communication entre les charges de travail individuelles d'un projet. Cette précision permet un contrôle plus strict de l'accès au réseau, ce qui améliore la sécurité et l'utilisation des ressources.

Les règles de réseau au niveau de la charge de travail peuvent appliquer le PNP dans une seule zone. Vous pouvez ajouter des libellés spécifiques aux charges de travail d'une même zone. Cela vous permet de contrôler la communication entre les charges de travail individuelles d'un projet ou de différents projets pour cette zone. Pour en savoir plus, consultez Règles réseau au niveau de la charge de travail à zone unique.

Créer une règle de trafic intra-projet au niveau de la charge de travail

Vous pouvez créer une règle de trafic intra-projet au niveau de la charge de travail pour activer ou désactiver l'accès au réseau pour le trafic entre les charges de travail d'un projet.

Stratégie de réseau pour le trafic Ingress au niveau de la charge de travail intra-projet

Lorsque vous créez un projet, vous créez implicitement une ressource ProjectNetworkPolicy de base par défaut qui permet la communication intra-projet entre toutes les charges de travail. Cette règle autorise le trafic entrant provenant d'autres charges de travail du même projet.

Pour créer une règle de trafic intra-projet au niveau de la charge de travail, vous devez d'abord supprimer la règle de base par défaut. Dans le cas contraire, un comportement inattendu peut se produire.

  1. Pour supprimer la règle de base par défaut, exécutez la commande suivante :

    kubectl --kubeconfig GLOBAL_API_SERVER delete pnp base-policy-allow-intra-project-traffic -n PROJECT
    
  2. Pour créer une règle de réseau de trafic intra-projet au niveau de la charge de travail d'entrée, créez et appliquez la ressource personnalisée suivante :

    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
    

    Remplacez les éléments suivants :

    • GLOBAL_API_SERVER : chemin d'accès au fichier kubeconfig du serveur d'API global. Pour en savoir plus, consultez Serveurs d'API globaux et zonaux. Si vous n'avez pas encore généré de fichier kubeconfig pour le serveur d'API, consultez Se connecter pour en savoir plus.
    • PROJECT : nom du projet dans lequel vous souhaitez autoriser le trafic entrant intra-projet au niveau de la charge de travail.
    • SUBJECT_LABEL_KEY : clé du libellé utilisé pour sélectionner les charges de travail sources. Par exemple, app, tier ou role.
    • SUBJECT_LABEL_VALUE : valeur associée à SUBJECT_LABEL_KEY. Il spécifie les charges de travail qui sont à l'origine du trafic autorisé. Par exemple, si SUBJECT_LABEL_KEY est app et que SUBJECT_LABEL_VALUE est backend, les charges de travail portant le libellé app: backend sont la source de trafic.
    • TARGET_LABEL_KEY : clé du libellé utilisé pour sélectionner les charges de travail de destination.
    • TARGET_LABEL_VALUE : valeur associée à TARGET_LABEL_KEY. Il spécifie les charges de travail qui sont la destination du trafic autorisé.

Créer une règle de trafic inter-projets au niveau de la charge de travail

Vous pouvez créer une règle de trafic interprojets au niveau de la charge de travail pour activer ou désactiver l'accès au réseau pour le trafic entre les charges de travail de différents projets.

Stratégie de réseau pour le trafic de sortie inter-projets au niveau de la charge de travail

  • Pour créer une règle de réseau de trafic inter-projets au niveau de la charge de travail de sortie, créez et appliquez la ressource personnalisée suivante :

    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
    

    Remplacez les éléments suivants :

    • GLOBAL_API_SERVER : chemin d'accès au fichier kubeconfig du serveur d'API global. Pour en savoir plus, consultez Serveurs d'API globaux et zonaux. Si vous n'avez pas encore généré de fichier kubeconfig pour le serveur d'API, consultez Se connecter pour en savoir plus.
    • PROJECT_1 : nom du projet pour lequel vous souhaitez autoriser le trafic sortant inter-projets au niveau de la charge de travail.
    • PROJECT_2 : nom du projet vers lequel vous souhaitez envoyer le trafic sortant multiprojet au niveau de la charge de travail.
    • SUBJECT_LABEL_KEY : clé du libellé utilisé pour sélectionner les charges de travail sources. Par exemple, app, tier ou role.
    • SUBJECT_LABEL_VALUE : valeur associée à SUBJECT_LABEL_KEY. Il spécifie les charges de travail qui sont à l'origine du trafic autorisé. Par exemple, si SUBJECT_LABEL_KEY est app et que SUBJECT_LABEL_VALUE est backend, les charges de travail portant le libellé app: backend sont la source de trafic.
    • TARGET_LABEL_KEY : clé du libellé utilisé pour sélectionner les charges de travail de destination.
    • TARGET_LABEL_VALUE : valeur associée à TARGET_LABEL_KEY. Il spécifie les charges de travail qui sont la destination du trafic autorisé.

Créer une règle de trafic intra-projet au niveau de la charge de travail dans une seule zone

Vous pouvez créer une règle de trafic intra-projet au niveau de la charge de travail pour une seule zone afin d'activer ou de désactiver l'accès au réseau pour le trafic entre les charges de travail d'un projet dans une zone spécifique.

Stratégie réseau de trafic intra-projet au niveau de la charge de travail d'entrée à zone unique

Lorsque vous créez un projet, vous créez implicitement une ressource ProjectNetworkPolicy de base par défaut qui permet la communication intra-projet entre toutes les charges de travail. Cette règle autorise le trafic entrant provenant d'autres charges de travail du même projet.

Pour créer une règle de réseau de trafic intra-projet au niveau de la charge de travail d'entrée à zone unique, la règle de base par défaut doit d'abord être supprimée. Dans le cas contraire, un comportement inattendu peut se produire.

  1. Pour supprimer la règle de base par défaut, exécutez la commande suivante :

    kubectl --kubeconfig GLOBAL_API_SERVER delete pnp base-policy-allow-intra-project-traffic -n PROJECT
    
  2. Pour créer une règle de réseau de trafic intra-projet au niveau de la charge de travail Ingress à zone unique, créez et appliquez la ressource personnalisée suivante :

    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
    

    Remplacez les éléments suivants :

    • GLOBAL_API_SERVER : chemin d'accès au fichier kubeconfig du serveur d'API global. Pour en savoir plus, consultez Serveurs d'API globaux et zonaux. Si vous n'avez pas encore généré de fichier kubeconfig pour le serveur d'API, consultez Se connecter pour en savoir plus.
    • PROJECT : nom du projet dans lequel vous souhaitez autoriser le trafic entrant intra-projet au niveau de la charge de travail à zone unique.
    • SUBJECT_LABEL_KEY : clé du libellé utilisé pour sélectionner les charges de travail sources. Par exemple, app, tier ou role.
    • SUBJECT_LABEL_VALUE : valeur associée à SUBJECT_LABEL_KEY. Il spécifie les charges de travail qui sont à l'origine du trafic autorisé. Par exemple, si SUBJECT_LABEL_KEY est app et que SUBJECT_LABEL_VALUE est backend, les charges de travail portant le libellé app: backend sont la source de trafic.
    • TARGET_LABEL_KEY : clé du libellé utilisé pour sélectionner les charges de travail de destination.
    • TARGET_LABEL_VALUE : valeur associée à TARGET_LABEL_KEY. Il spécifie les charges de travail qui sont la destination du trafic autorisé.
    • ZONE_SUBJECT_LABEL_KEY : clé du libellé utilisé pour sélectionner la zone source. Par exemple, zone ou region.
    • ZONE_SUBJECT_LABEL_VALUE : valeur associée à ZONE_SUBJECT_LABEL_KEY. Elle indique la zone qui est la source du trafic autorisé. Par exemple, si ZONE_SUBJECT_LABEL_KEY est zone et que ZONE_SUBJECT_LABEL_VALUE est us-central1-a, les charges de travail portant le libellé zone: us-central1-a sont la source de trafic.
    • ZONE_TARGET_LABEL_KEY : clé du libellé utilisé pour sélectionner la zone de destination.
    • ZONE_TARGET_LABEL_VALUE : valeur associée à ZONE_TARGET_LABEL_KEY. Elle spécifie la zone de destination du trafic autorisé.

Créer une règle de trafic inter-projets au niveau de la charge de travail à zone unique

Vous pouvez créer une règle de trafic interprojets au niveau de la charge de travail à zone unique pour activer ou désactiver l'accès au réseau pour le trafic entre les charges de travail de différents projets dans une zone spécifique.

Stratégie de réseau de trafic inter-projets au niveau de la charge de travail de sortie à zone unique

  • Pour créer une règle de réseau de trafic intra-projet au niveau de la charge de travail de sortie d'une seule zone, créez et appliquez la ressource personnalisée suivante :

    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
    

    Remplacez les éléments suivants :

    • GLOBAL_API_SERVER : chemin d'accès au fichier kubeconfig du serveur d'API global. Pour en savoir plus, consultez Serveurs d'API globaux et zonaux. Si vous n'avez pas encore généré de fichier kubeconfig pour le serveur d'API, consultez Se connecter pour en savoir plus.
    • PROJECT_1 : nom du projet dans lequel vous souhaitez autoriser le trafic sortant multizone au niveau de la charge de travail.
    • PROJECT_2 : nom du projet vers lequel vous souhaitez envoyer le trafic sortant multizone au niveau de la charge de travail.
    • SUBJECT_LABEL_KEY : clé du libellé utilisé pour sélectionner les charges de travail sources. Par exemple, app, tier ou role.
    • SUBJECT_LABEL_VALUE : valeur associée à SUBJECT_LABEL_KEY. Il spécifie les charges de travail qui sont à l'origine du trafic autorisé. Par exemple, si SUBJECT_LABEL_KEY est app et que SUBJECT_LABEL_VALUE est backend, les charges de travail portant le libellé app: backend sont la source de trafic.
    • TARGET_LABEL_KEY : clé du libellé utilisé pour sélectionner les charges de travail de destination.
    • TARGET_LABEL_VALUE : valeur associée à TARGET_LABEL_KEY. Il spécifie les charges de travail qui sont la destination du trafic autorisé.
    • ZONE_SUBJECT_LABEL_KEY : clé du libellé utilisé pour sélectionner la zone source. Par exemple, zone ou region.
    • ZONE_SUBJECT_LABEL_VALUE : valeur associée à ZONE_SUBJECT_LABEL_KEY. Elle indique la zone qui est la source du trafic autorisé. Par exemple, si ZONE_SUBJECT_LABEL_KEY est zone et que ZONE_SUBJECT_LABEL_VALUE est us-central1-a, les charges de travail portant le libellé zone: us-central1-a sont la source de trafic.
    • ZONE_TARGET_LABEL_KEY : clé du libellé utilisé pour sélectionner la zone de destination.
    • ZONE_TARGET_LABEL_VALUE : valeur associée à ZONE_TARGET_LABEL_KEY. Elle spécifie la zone de destination du trafic autorisé.