Crea políticas de red a nivel de la carga de trabajo

En esta página, se proporcionan instrucciones para configurar políticas de red a nivel de la carga de trabajo en Google Distributed Cloud (GDC) aislado.

Las políticas de red a nivel de la carga de trabajo ofrecen un control detallado sobre la comunicación entre cargas de trabajo individuales dentro de un proyecto. Esta granularidad permite un control más estricto del acceso a la red, lo que mejora la seguridad y el uso de los recursos.

Las políticas de red a nivel de la carga de trabajo pueden aplicar PNP a lo largo de una sola zona. Se pueden agregar etiquetas específicas a las cargas de trabajo dentro de una sola zona, lo que te permite controlar la comunicación entre cargas de trabajo individuales dentro de un proyecto o en diferentes proyectos para esa zona. Para obtener más información, consulta Política de red a nivel de la carga de trabajo de una sola zona.

Crea una política de tráfico intraproyecto a nivel de la carga de trabajo

Puedes crear una política de tráfico intraproyecto a nivel de la carga de trabajo para habilitar o inhabilitar el acceso a la red para el tráfico entre cargas de trabajo dentro de un proyecto.

Política de red de tráfico intraproyecto a nivel de la carga de trabajo de entrada

Cuando creas un proyecto, también creas de forma implícita un recurso ProjectNetworkPolicy base predeterminado que permite la comunicación dentro del proyecto entre todas las cargas de trabajo. Esta política permite el tráfico entrante de otras cargas de trabajo en el mismo proyecto.

Para crear una política de tráfico dentro del proyecto a nivel de la carga de trabajo, primero se debe borrar la política básica predeterminada. De lo contrario, es posible que se produzca un comportamiento inesperado.

  1. Para borrar la política básica predeterminada, ejecuta el siguiente comando:

    kubectl --kubeconfig GLOBAL_API_SERVER delete pnp base-policy-allow-intra-project-traffic -n PROJECT
    
  2. Para crear una política de red de tráfico intraproyecto a nivel de la carga de trabajo de entrada, crea y aplica el siguiente recurso personalizado:

    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
    

    Reemplaza lo siguiente:

    • GLOBAL_API_SERVER: Es la ruta de acceso de kubeconfig del servidor de la API global. Para obtener más información, consulta Servidores de API globales y zonales. Si aún no generaste un archivo kubeconfig para el servidor de la API, consulta Acceder para obtener más detalles.
    • PROJECT: Es el nombre del proyecto en el que deseas permitir el tráfico entrante intraproyecto a nivel de la carga de trabajo.
    • SUBJECT_LABEL_KEY: Es la clave de la etiqueta que se usa para seleccionar las cargas de trabajo de origen. Por ejemplo, app, tier o role.
    • SUBJECT_LABEL_VALUE: Es el valor asociado con el SUBJECT_LABEL_KEY. Especifica qué cargas de trabajo son la fuente del tráfico permitido. Por ejemplo, si SUBJECT_LABEL_KEY es app y SUBJECT_LABEL_VALUE es backend, las cargas de trabajo con la etiqueta app: backend son la fuente de tráfico.
    • TARGET_LABEL_KEY: Es la clave de la etiqueta que se usa para seleccionar las cargas de trabajo de destino.
    • TARGET_LABEL_VALUE: Es el valor asociado con el TARGET_LABEL_KEY. Especifica qué cargas de trabajo son el destino del tráfico permitido.

Crea una política de tráfico entre proyectos a nivel de la carga de trabajo

Puedes crear una política de tráfico entre proyectos a nivel de la carga de trabajo para habilitar o inhabilitar el acceso a la red para el tráfico entre cargas de trabajo en diferentes proyectos.

Política de red de tráfico entre proyectos a nivel de la carga de trabajo de salida

  • Para crear una política de red de tráfico entre proyectos a nivel de la carga de trabajo de salida, crea y aplica el siguiente recurso personalizado:

    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
    

    Reemplaza lo siguiente:

    • GLOBAL_API_SERVER: Es la ruta de acceso de kubeconfig del servidor de la API global. Para obtener más información, consulta Servidores de API globales y zonales. Si aún no generaste un archivo kubeconfig para el servidor de la API, consulta Acceder para obtener más detalles.
    • PROJECT_1: Es el nombre del proyecto en el que deseas permitir el tráfico saliente entre proyectos a nivel de la carga de trabajo.
    • PROJECT_2: Es el nombre del proyecto al que deseas enviar el tráfico saliente entre proyectos a nivel de la carga de trabajo.
    • SUBJECT_LABEL_KEY: Es la clave de la etiqueta que se usa para seleccionar las cargas de trabajo de origen. Por ejemplo, app, tier o role.
    • SUBJECT_LABEL_VALUE: Es el valor asociado con el SUBJECT_LABEL_KEY. Especifica qué cargas de trabajo son la fuente del tráfico permitido. Por ejemplo, si SUBJECT_LABEL_KEY es app y SUBJECT_LABEL_VALUE es backend, las cargas de trabajo con la etiqueta app: backend son la fuente de tráfico.
    • TARGET_LABEL_KEY: Es la clave de la etiqueta que se usa para seleccionar las cargas de trabajo de destino.
    • TARGET_LABEL_VALUE: Es el valor asociado con el TARGET_LABEL_KEY. Especifica qué cargas de trabajo son el destino del tráfico permitido.

Crea una política de tráfico intraproyecto a nivel de la carga de trabajo para una sola zona

Puedes crear una política de tráfico intraproyecto a nivel de la carga de trabajo de una sola zona para habilitar o inhabilitar el acceso a la red para el tráfico entre cargas de trabajo dentro de un proyecto en una zona específica.

Política de red de tráfico intraproyecto a nivel de la carga de trabajo de entrada de una sola zona

Cuando creas un proyecto, también creas de forma implícita un recurso ProjectNetworkPolicy base predeterminado que permite la comunicación dentro del proyecto entre todas las cargas de trabajo. Esta política permite el tráfico entrante de otras cargas de trabajo en el mismo proyecto.

Para crear una política de red de tráfico interno del proyecto a nivel de la carga de trabajo de entrada de una sola zona, primero se debe borrar la política básica predeterminada. De lo contrario, es posible que se produzca un comportamiento inesperado.

  1. Para borrar la política básica predeterminada, ejecuta el siguiente comando:

    kubectl --kubeconfig GLOBAL_API_SERVER delete pnp base-policy-allow-intra-project-traffic -n PROJECT
    
  2. Para crear una política de red de tráfico interno del proyecto a nivel de la carga de trabajo de entrada de una sola zona, crea y aplica el siguiente recurso personalizado:

    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
    

    Reemplaza lo siguiente:

    • GLOBAL_API_SERVER: Es la ruta de acceso de kubeconfig del servidor de la API global. Para obtener más información, consulta Servidores de API globales y zonales. Si aún no generaste un archivo kubeconfig para el servidor de la API, consulta Acceder para obtener más detalles.
    • PROJECT: Es el nombre del proyecto en el que deseas permitir el tráfico entrante intraproyecto a nivel de la carga de trabajo de una sola zona.
    • SUBJECT_LABEL_KEY: Es la clave de la etiqueta que se usa para seleccionar las cargas de trabajo de origen. Por ejemplo, app, tier o role.
    • SUBJECT_LABEL_VALUE: Es el valor asociado con el SUBJECT_LABEL_KEY. Especifica qué cargas de trabajo son la fuente del tráfico permitido. Por ejemplo, si SUBJECT_LABEL_KEY es app y SUBJECT_LABEL_VALUE es backend, las cargas de trabajo con la etiqueta app: backend son la fuente de tráfico.
    • TARGET_LABEL_KEY: Es la clave de la etiqueta que se usa para seleccionar las cargas de trabajo de destino.
    • TARGET_LABEL_VALUE: Es el valor asociado con el TARGET_LABEL_KEY. Especifica qué cargas de trabajo son el destino del tráfico permitido.
    • ZONE_SUBJECT_LABEL_KEY: Es la clave de la etiqueta que se usa para seleccionar la zona de origen. Por ejemplo, zone o region.
    • ZONE_SUBJECT_LABEL_VALUE: Es el valor asociado con el ZONE_SUBJECT_LABEL_KEY. Especifica qué zona es la fuente del tráfico permitido. Por ejemplo, si ZONE_SUBJECT_LABEL_KEY es zone y ZONE_SUBJECT_LABEL_VALUE es us-central1-a, las cargas de trabajo con la etiqueta zone: us-central1-a son la fuente de tráfico.
    • ZONE_TARGET_LABEL_KEY: Es la clave de la etiqueta que se usa para seleccionar la zona de destino.
    • ZONE_TARGET_LABEL_VALUE: Es el valor asociado con el ZONE_TARGET_LABEL_KEY. Especifica qué zona es el destino del tráfico permitido.

Crea una política de tráfico entre proyectos a nivel de la carga de trabajo de una sola zona

Puedes crear una política de tráfico entre proyectos a nivel de la carga de trabajo de una sola zona para habilitar o inhabilitar el acceso a la red para el tráfico entre cargas de trabajo dentro de diferentes proyectos en una zona específica.

Política de red de tráfico entre proyectos a nivel de carga de trabajo de salida de una sola zona

  • Para crear una política de red de tráfico interno del proyecto a nivel de la carga de trabajo de salida de una sola zona, crea y aplica el siguiente recurso personalizado:

    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
    

    Reemplaza lo siguiente:

    • GLOBAL_API_SERVER: Es la ruta de acceso de kubeconfig del servidor de la API global. Para obtener más información, consulta Servidores de API globales y zonales. Si aún no generaste un archivo kubeconfig para el servidor de la API, consulta Acceder para obtener más detalles.
    • PROJECT_1: Es el nombre del proyecto en el que deseas permitir el tráfico saliente entre proyectos a nivel de la carga de trabajo de una sola zona.
    • PROJECT_2: Es el nombre del proyecto al que deseas enviar el tráfico saliente entre proyectos a nivel de la carga de trabajo de una sola zona.
    • SUBJECT_LABEL_KEY: Es la clave de la etiqueta que se usa para seleccionar las cargas de trabajo de origen. Por ejemplo, app, tier o role.
    • SUBJECT_LABEL_VALUE: Es el valor asociado con el SUBJECT_LABEL_KEY. Especifica qué cargas de trabajo son la fuente del tráfico permitido. Por ejemplo, si SUBJECT_LABEL_KEY es app y SUBJECT_LABEL_VALUE es backend, las cargas de trabajo con la etiqueta app: backend son la fuente de tráfico.
    • TARGET_LABEL_KEY: Es la clave de la etiqueta que se usa para seleccionar las cargas de trabajo de destino.
    • TARGET_LABEL_VALUE: Es el valor asociado con el TARGET_LABEL_KEY. Especifica qué cargas de trabajo son el destino del tráfico permitido.
    • ZONE_SUBJECT_LABEL_KEY: Es la clave de la etiqueta que se usa para seleccionar la zona de origen. Por ejemplo, zone o region.
    • ZONE_SUBJECT_LABEL_VALUE: Es el valor asociado con el ZONE_SUBJECT_LABEL_KEY. Especifica qué zona es la fuente del tráfico permitido. Por ejemplo, si ZONE_SUBJECT_LABEL_KEY es zone y ZONE_SUBJECT_LABEL_VALUE es us-central1-a, las cargas de trabajo con la etiqueta zone: us-central1-a son la fuente de tráfico.
    • ZONE_TARGET_LABEL_KEY: Es la clave de la etiqueta que se usa para seleccionar la zona de destino.
    • ZONE_TARGET_LABEL_VALUE: Es el valor asociado con el ZONE_TARGET_LABEL_KEY. Especifica qué zona es el destino del tráfico permitido.