Especifica la red para un trabajo

En este documento, se explica cómo especificar la red para las VMs que ejecutan un trabajo.

Puedes controlar las conexiones de las VMs que ejecutan un trabajo si especificas una red con el acceso deseado. Por ejemplo, puedes especificar una red que permita que un trabajo acceda a los recursos requeridos o limita el acceso para mejorar la seguridad. Como alternativa, si no tienes ningún requisito de red Si no quieres configurar redes para un trabajo, omite especificar la red para usa la configuración de red predeterminada.

Para más información sobre los conceptos de red y cuándo configurarlas, consulta Descripción general de las herramientas de redes por lotes.

Antes de comenzar

  1. Si nunca usaste Batch, revisa Comienza a usar Batch y habilitar Batch completando el requisitos previos para los proyectos y usuarios.
  2. A fin de obtener los permisos que necesita para crear un trabajo que se ejecuta en una red específica, solicita a tu administrador que te otorgue el los siguientes roles de IAM:

    Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.

    También puedes obtener los permisos necesarios mediante roles personalizados o cualquier otro rol predefinido.

  3. Identifica la red que quieres usar para el trabajo. La red que especifiques para un trabajo debe cumplir con los requisitos: Para obtener más información, consulta Crea y administra redes de VPC.
  4. Si deseas que una tarea se ejecute en una subred de una red de VPC compartida que aloja otro proyecto, se debe otorgar permiso al agente de servicio por lotes de tu proyecto para usar esa subred.

    Para asegurarte de que el agente de servicio de Batch de tu proyecto tenga permisos para crear un trabajo que se ejecute en una subred de una red de VPC compartida, pedirle a tu administrador que otorgue al agente de servicio de Batch de tu proyecto Rol de IAM de usuario de la red de Compute (roles/compute.networkUser) en la subred de VPC compartida.

    Para obtener más información, consulta la documentación del cómo configurar una VPC compartida para cuentas de servicio.

Crear un trabajo que se ejecute en una red específica

Especifica la red de un trabajo cuando lo creas. Específicamente, debes especificar una red de VPC y una subred que se encuentra donde quieres ejecutar este trabajo.

Si quieres Usar una plantilla de instancias de VM mientras creas este trabajo, debes especificar la red en la plantilla de instancias de VM. De lo contrario, sigue estos pasos para especificar la red para un trabajo con gcloud CLI o la API de Batch.

gcloud

Para crear un trabajo que se ejecute en una red específica con el gcloud CLI, selecciona una de las siguientes opciones:

Usa las marcas de gcloud para especificar la red de un trabajo

Para crear un trabajo y usar marcas de gcloud a fin de especificar la red para el trabajo, completa los siguientes pasos:

  1. Crea un archivo JSON que especifique los detalles de configuración de tu trabajo.

    Por ejemplo, para crear un trabajo básico de secuencia de comandos, crea un archivo JSON con el siguiente contenido.

    {
      "taskGroups": [
        {
          "taskSpec": {
            "runnables": [
              {
                "script": {
                  "text": "echo Hello world! This is task ${BATCH_TASK_INDEX}. This job has a total of ${BATCH_TASK_COUNT} tasks."
                }
              }
            ]
          },
          "taskCount": 3
        }
      ],
      "logsPolicy": {
        "destination": "CLOUD_LOGGING"
      }
    }
    
  2. Crea el trabajo con el comando gcloud batch jobs submit. Para especificar la red del trabajo, incluye las marcas --network y --subnetwork.

    gcloud batch jobs submit JOB_NAME \
        --location LOCATION \
        --config JSON_CONFIGURATION_FILE \
        --network projects/HOST_PROJECT_ID/global/networks/NETWORK \
        --subnetwork projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET
    

    Reemplaza lo siguiente:

    • JOB_NAME: Es el nombre de este trabajo.
    • LOCATION: el location para este trabajo.
    • JSON_CONFIGURATION_FILE: Es la ruta de acceso del Archivo JSON con los detalles de configuración del trabajo.
    • HOST_PROJECT_ID: el ID del proyecto del proyecto para la red que especifiques:
      • Si usas una red de VPC compartida, especifica el host en un proyecto final.
      • De lo contrario, especifica el proyecto actual.
    • NETWORK: Es el nombre de un Red de VPC en el proyecto actual o una red de VPC compartida alojado en el proyecto actual o que se comparte con él.
    • REGION: el region donde la subred y las VMs del trabajo se encuentran en las siguientes ubicaciones:
      • Si incluyes Campo allowedLocations para especificar la ubicación permitida para las VMs del trabajo, debe especificar la misma región aquí.
      • De lo contrario, la región debe ser la misma que location que selecciones para el trabajo (LOCATION).
    • SUBNET: Es el nombre de un subnet que es parte del red de VPC y se encuentra en la misma región que la VMs para el trabajo.

Usa campos JSON para especificar la red de un trabajo

Para crear una tarea y usar campos en el archivo de configuración JSON para especificar la red de la tarea, completa los siguientes pasos:

  1. Crea un archivo JSON que especifique los detalles de configuración de tu trabajo. Para especificar la red del trabajo, incluye los campos network y subnetwork.

    Por ejemplo, para crear un trabajo de secuencia de comandos básico que se ejecute en un en una red específica, crea un archivo JSON con los siguientes contenidos.

    {
      "taskGroups": [
        {
          "taskSpec": {
            "runnables": [
              {
                "script": {
                  "text": "echo Hello world! This is task ${BATCH_TASK_INDEX}. This job has a total of ${BATCH_TASK_COUNT} tasks."
                }
              }
            ]
          },
          "taskCount": 3
        }
      ],
      "allocationPolicy": {
        "network": {
          "networkInterfaces": [
            {
              "network": "projects/HOST_PROJECT_ID/global/networks/NETWORK",
              "subnetwork": "projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET"
            }
          ]
        }
      },
      "logsPolicy": {
        "destination": "CLOUD_LOGGING"
      }
    }
    

    Reemplaza lo siguiente:

    • HOST_PROJECT_ID: Es el ID del proyecto del proyecto de la red que especificas:
      • Si usas una red de VPC compartida, especifica el host en un proyecto final.
      • De lo contrario, especifica el proyecto actual.
    • NETWORK: Es el nombre de un Red de VPC en el proyecto actual o una red de VPC compartida alojado en el proyecto actual o que se comparte con él.
    • REGION: el region donde la subred y las VMs del trabajo se encuentran en las siguientes ubicaciones:
      • Si incluyes el campo allowedLocations para especificar la ubicación permitida para las VMs del trabajo, debes especificar la misma región aquí.
      • De lo contrario, la región debe ser la misma que location que selecciones para el trabajo (LOCATION).
    • SUBNET: Es el nombre de una subred que forma parte de la red de VPC y se encuentra en la misma región que las VMs para la tarea.
  2. Crea el trabajo con el comando gcloud batch jobs submit.

    gcloud batch jobs submit JOB_NAME \
        --location LOCATION \
        --config JSON_CONFIGURATION_FILE
    

    Reemplaza lo siguiente:

    • JOB_NAME: Es el nombre de este trabajo.
    • LOCATION: el location para este trabajo.
    • JSON_CONFIGURATION_FILE: Es la ruta de acceso del Archivo JSON con los detalles de configuración del trabajo.

API

Para crear un trabajo con la API de Batch, usa el Método jobs.create y especifica los detalles de configuración de tu trabajo. Para especificar la red para el trabajo, incluye la Campos network y subnetwork.

Por ejemplo, para crear un trabajo de secuencia de comandos básico que se ejecute en un red específica, realiza la siguiente solicitud POST:

POST https://batch.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/jobs?job_id=JOB_NAME

{
  "taskGroups": [
    {
      "taskSpec": {
        "runnables": [
          {
            "script": {
              "text": "echo Hello world! This is task ${BATCH_TASK_INDEX}. This job has a total of ${BATCH_TASK_COUNT} tasks."
            }
          }
        ]
      },
      "taskCount": 3
    }
  ],
  "allocationPolicy": {
    "network": {
      "networkInterfaces": [
        {
          "network": "projects/HOST_PROJECT_ID/global/networks/NETWORK",
          "subnetwork": "projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET"
        }
      ]
    }
  },
  "logsPolicy": {
    "destination": "CLOUD_LOGGING"
  }
}

Reemplaza lo siguiente:

  • PROJECT_ID: el ID del proyecto de tu proyecto.
  • LOCATION: Es la ubicación. para este trabajo.
  • JOB_NAME: Es el nombre de este trabajo.
  • HOST_PROJECT_ID: el ID del proyecto del proyecto para la red que especifiques:
    • Si usas una red de VPC compartida, especifica el host en un proyecto final.
    • De lo contrario, especifica el proyecto actual (PROJECT_ID).
  • NETWORK: Es el nombre de un Red de VPC en el proyecto actual o una red de VPC compartida alojado en el proyecto actual o que se comparte con él.
  • REGION: el region donde la subred y las VMs del trabajo se encuentran en las siguientes ubicaciones:
    • Si incluyes Campo allowedLocations para especificar la ubicación permitida para las VMs del trabajo, debe especificar la misma región aquí.
    • De lo contrario, la región debe ser la misma que location que selecciones para el trabajo (LOCATION).
  • SUBNET: Es el nombre de un subnet que es parte del red de VPC y se encuentra en la misma región que la VMs para el trabajo.

¿Qué sigue?