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 VM 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 necesarios o que limite el acceso para mejorar la seguridad. Como alternativa, si no tienes requisitos de red y no deseas configurarlas para un trabajo, omite especificar la red a fin de usar la configuración de red predeterminada.

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

Antes de comenzar

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

Especifica la red para un trabajo cuando lo crees. En particular, debes especificar una red de VPC y una subred ubicada en la ubicación en la que deseas ejecutar este trabajo.

Si deseas usar una plantilla de instancias de VM mientras creas este trabajo, debes especificar la red en la plantilla. De lo contrario, sigue estos pasos a fin de especificar la red para un trabajo con gcloud CLId o la API de Batch.

gcloud

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

Usa marcas de gcloud para especificar la red de un trabajo

Si quieres crear un trabajo y usar marcas de gcloud para especificar la red del 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: Es la ubicación de este trabajo.
    • JSON_CONFIGURATION_FILE: Es la ruta del archivo JSON con los detalles de configuración del trabajo.
    • HOST_PROJECT_ID: Es el ID del proyecto para la red que especifiques:
      • Si usas una red de VPC compartida, especifica el proyecto host.
      • De lo contrario, especifica el proyecto actual.
    • NETWORK: Es el nombre de una red de VPC en el proyecto actual o una red de VPC compartida que se aloja en el proyecto actual o se comparte con él.
    • REGION: Es la región en la que se encuentran la subred y las VM del trabajo:
      • Si incluyes el campo allowedLocations a fin de especificar la ubicación permitida para las VM del trabajo, debes especificar la misma región aquí.
      • De lo contrario, la región debe ser la misma que la ubicación 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 VM del trabajo.

Usa campos JSON para especificar la red de un trabajo

Si deseas crear un trabajo y usar campos en el archivo de configuración JSON para especificar la red del trabajo, completa los siguientes pasos:

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

    Por ejemplo, para crear un trabajo de secuencia de comandos básico que se ejecuta en una red específica, 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
        }
      ],
      "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 para la red que especifiques:
      • Si usas una red de VPC compartida, especifica el proyecto host.
      • De lo contrario, especifica el proyecto actual.
    • NETWORK: Es el nombre de una red de VPC en el proyecto actual o una red de VPC compartida que se aloja en el proyecto actual o se comparte con él.
    • REGION: Es la región en la que se encuentran la subred y las VM del trabajo:
      • Si incluyes el campo allowedLocations a fin de especificar la ubicación permitida para las VM del trabajo, debes especificar la misma región aquí.
      • De lo contrario, la región debe ser la misma que la ubicación 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 VM del trabajo.
  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: Es la ubicación de este trabajo.
    • JSON_CONFIGURATION_FILE: Es la ruta 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 los campos network y subnetwork.

Por ejemplo, para crear un trabajo básico de secuencia de comandos que se ejecute en una 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: Es el ID del proyecto.
  • LOCATION: Es la ubicación de este trabajo.
  • JOB_NAME: Es el nombre de este trabajo.
  • HOST_PROJECT_ID: Es el ID del proyecto para la red que especifiques:
    • Si usas una red de VPC compartida, especifica el proyecto host.
    • De lo contrario, especifica el proyecto actual (PROJECT_ID).
  • NETWORK: Es el nombre de una red de VPC en el proyecto actual o una red de VPC compartida que se aloja en el proyecto actual o se comparte con él.
  • REGION: Es la región en la que se encuentran la subred y las VM del trabajo:
    • Si incluyes el campo allowedLocations a fin de especificar la ubicación permitida para las VM del trabajo, debes especificar la misma región aquí.
    • De lo contrario, la región debe ser la misma que la ubicación 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 VM del trabajo.

¿Qué sigue?