Cuando creas tu balanceador de cargas, puedes registrarlo como un extremo en un espacio de nombres y un servicio del Directorio de servicios existentes que elijas. Luego, las aplicaciones cliente pueden usar el Directorio de servicios (a través de HTTP o gRPC) para resolver la dirección del servicio del balanceador de cargas de red de transferencia externo y conectarse a él directamente.
Permisos necesarios para esta tarea
Para realizar esta tarea, debes tener los siguientes permisos y roles de IAM.
Permisos
servicedirectory.endpoints.create
servicedirectory.endpoints.delete
Funciones
roles/compute.networkAdmin
roles/compute.securityAdmin
roles/compute.instanceAdmin
Limitaciones
La integración del Directorio de servicios con balanceadores de cargas de red de transferencia externos tiene las siguientes
limitaciones:
El registro automático solo admite balanceadores de cargas de la capa externa 4. Puedes registrar los servicios de balanceo de cargas de Google Kubernetes Engine con la integración de GKE. Para registrar otros balanceadores de cargas externos, balanceadores de cargas globales, entradas y puertas de enlace de Google Kubernetes Engine, llama a la API del Directorio de servicios.
Puedes usar el registro automático solo en el momento de la creación de la regla de reenvío. No está disponible el registro automático con la actualización de Google Cloud CLI para una regla de reenvío ya existente.
El Directorio de servicios no proporciona conectividad, lo que significa que, aunque
almacena la dirección IP virtual del balanceador de cargas de red de transferencia externo,
buscar el balanceador de cargas de red de transferencia externo en el Directorio de servicios no garantiza
que puedas conectarte a la dirección IP virtual.
Antes de comenzar
Estas instrucciones requieren lo siguiente:
Ya debes tener un espacio de nombres y un servicio del Directorio de servicios.
De lo contrario, crea un espacio de nombres y un servicio con el procedimiento que se indica en Configura el Directorio de servicios.
El espacio de nombres y el servicio de Directory deben estar en el
mismo proyecto y región que la regla de reenvío del balanceador de cargas de red de transferencia externo
que estás creando.
Ya debes haber configurado los recursos necesarios para crear una regla de reenvío de balanceador de cargas de red de transferencia externa.
Configura reglas de reenvío para registrar un balanceador de cargas de red de transferencia externo en el Directorio de servicios
Debes configurar una regla de reenvío para registrar el balanceador de cargas de red de transferencia externo en
el Directorio de servicios. Para registrar un balanceador de cargas de red de transferencia externo, consulta la siguiente sección.
Registra un balanceador de cargas de red de transferencia externo
Para registrar un balanceador de cargas de red de transferencia externo, ejecuta el comando gcloud compute forwarding-rules
create y
establece la marca service-directory-registration:
FORWARDING_RULE_NAME: un nombre para la regla de reenvío que deseas crear
REGION: la región en la que se creará la regla de reenvío
RESERVED_IP_ADDRESS: la dirección IP que entrega la regla de reenvío
PROTOCOL_TYPE: el protocolo IP que la regla entregará
PORT_NUMBER: una lista de puertos separados por comas
BACKEND_SERVICE_NAME: el servicio de backend de destino que
recibe el tráfico
SD_SERVICE_NAME: el nombre completamente calificado del servicio de Directorio de servicios en el que deseas registrar el extremo. Este
servicio debe estar en el mismo proyecto y región que la regla de reenvío que
se crea.
Por ejemplo: projects/PROJECT/locations/REGION/namespaces/NAMESPACE_NAME/services/SERVICE_NAME.
Verifica el extremo
Los extremos del Directorio de servicios que se crean cuando registras
un balanceador de cargas de red de transferencia externo tienen las siguientes características:
El extremo tiene el mismo nombre que el de la regla de reenvío con el número de puerto especificado (<forwarding rule name>-<port>). Por ejemplo, si creas una regla de reenvío RULE con --port=8080, obtienes un extremo llamado RULE-8080. Para la misma regla, si especificaste dos puertos --port=8080, 8081, obtienes dos extremos, RULE-8080 y RULE-8081. Si especificas --port=ALL,
el extremo del Directorio de servicios se registrará con el puerto 0. Si eres el propietario del balanceador de cargas de red de transferencia externo, debes asegurarte de que el llamador de la API sepa a qué puerto conectarse.
No puedes modificar ni borrar el extremo con la API pública de Service Directory. Solo cuando borras la regla de reenvío, el extremo se borra
automáticamente. Esto significa que no puedes borrar el servicio ni el espacio de nombres en el que reside el extremo mientras exista la regla de reenvío.
No se factura el extremo en sí, aunque los detalles de precios normales se aplican a cualquier llamada a la API al extremo.
Para confirmar que se creó el extremo, resuelve el servicio en el Directorio de servicios.
Deberías ver un extremo con el mismo nombre que el de la
regla de reenvío con el número de puerto especificado.
SD_SERVICE_NAME: Es el nombre del servicio del Directorio de servicios que se resolverá. Debe residir en el nombre del espacio de nombres del directorio de servicios.
SD_NAMESPACE_NAME: Es el nombre que le asignaste al espacio de nombres que contiene tu servicio.
REGION: Es la Google Cloud región que contiene el espacio de nombres. Debe ser la misma que la región en la que creaste la
regla de reenvío.
Limpieza
Para borrar los recursos que creaste, sigue estos pasos.
Para confirmar que la eliminación de la regla de reenvío borró automáticamente el extremo del Directorio de servicios, ejecuta el comando gcloud service-directory
services resolve que se describe en la sección Verifica el extremo de tu servicio del Directorio de servicios.
Para borrar el espacio de nombres y el servicio del Directorio de servicios, consulta Cómo borrar recursos.
[[["Fácil de comprender","easyToUnderstand","thumb-up"],["Resolvió mi problema","solvedMyProblem","thumb-up"],["Otro","otherUp","thumb-up"]],[["Difícil de entender","hardToUnderstand","thumb-down"],["Información o código de muestra incorrectos","incorrectInformationOrSampleCode","thumb-down"],["Faltan la información o los ejemplos que necesito","missingTheInformationSamplesINeed","thumb-down"],["Problema de traducción","translationIssue","thumb-down"],["Otro","otherDown","thumb-down"]],["Última actualización: 2025-09-04 (UTC)"],[],[],null,["# Register an external passthrough Network Load Balancer\n\nThis page provides information about how to configure an\n[external passthrough Network Load Balancer](/load-balancing/docs/network) so that it is automatically\nregistered in Service Directory.\n\nWhen you create your load balancer, you can register it as an endpoint in an\nexisting Service Directory namespace and service of your choice. Client\napplications can then use Service Directory (using HTTP or gRPC) to resolve\nthe address of the external passthrough Network Load Balancer service and connect to it\ndirectly.\n\n#### Permissions required for this task\n\nTo perform this task, you must have been granted the following permissions\n*and* IAM roles.\n\n**Permissions**\n\n- `servicedirectory.endpoints.create`\n- `servicedirectory.endpoints.delete`\n\n**Roles**\n\n- `roles/compute.networkAdmin`\n- `roles/compute.securityAdmin`\n- `roles/compute.instanceAdmin`\n\nLimitations\n-----------\n\nService Directory integration with external passthrough Network Load Balancers has the following\nlimitations:\n\n- Automatic registration only supports external Layer 4 load balancers. You can register Google Kubernetes Engine load balancing services using the [GKE\n integration](/service-directory/docs/configuring-sd-for-gke). You can register other external load balancers, global load balancers, and Google Kubernetes Engine ingresses and gateways by calling the [Service Directory\n API](/service-directory/docs/apis).\n- You can use automatic registration only at the time of forwarding rule creation. Automatic registration using Google Cloud CLI update for an already existing forwarding rule is not available.\n- Service Directory does not provide connectivity, which means that although Service Directory stores the virtual IP address of the external passthrough Network Load Balancer, looking up the external passthrough Network Load Balancer in Service Directory does not guarantee that you can connect to the virtual IP address.\n\nBefore you begin\n----------------\n\nThese instructions require the following:\n\n- You must already have a Service Directory namespace and service in place.\n If you do not, create a namespace and service using\n the procedure in [Configure Service Directory](/service-directory/docs/configuring-service-directory).\n\n The Service Directory namespace and service must be in the\n same project and region as the external passthrough Network Load Balancer forwarding rule that\n you are creating.\n- You must already have set up the necessary\n resources to create an external passthrough Network Load Balancer forwarding rule.\n\n For information about how to create an external passthrough Network Load Balancer, see [Setting up a\n external passthrough Network Load Balancer](/load-balancing/docs/network/setting-up-network-backend-service).\n\nSet up forwarding rules to register an external passthrough Network Load Balancer in Service Directory\n------------------------------------------------------------------------------------------------------\n\nYou must set up a forwarding rule to register the external passthrough Network Load Balancer in\nService Directory. To register an external passthrough Network Load Balancer, see the following section.\n\n### Register an external passthrough Network Load Balancer\n\nTo register an external passthrough Network Load Balancer, run the [`gcloud compute forwarding-rules\ncreate` command](/sdk/gcloud/reference/compute/forwarding-rules/create) and\nset the `service-directory-registration` flag: \n\n```\ngcloud beta compute forwarding-rules create FORWARDING_RULE_NAME \\\n --region=REGION \\\n --load-balancing-scheme=EXTERNAL \\\n --address=RESERVED_IP_ADDRESS \\\n --ip-protocol=PROTOCOL_TYPE \\\n --ports=PORT_NUMBER \\\n --backend-service=BACKEND_SERVICE_NAME \\\n --backend-service-region=REGION \\\n --service-directory-registration=SD_SERVICE_NAME\n```\n\nReplace the following:\n\n- \u003cvar translate=\"no\"\u003eFORWARDING_RULE_NAME\u003c/var\u003e: a name for the forwarding rule that you want to create\n- \u003cvar translate=\"no\"\u003eREGION\u003c/var\u003e: the region to create the forwarding rule in\n- \u003cvar translate=\"no\"\u003eRESERVED_IP_ADDRESS\u003c/var\u003e: the IP address that the forwarding rule serves\n- \u003cvar translate=\"no\"\u003ePROTOCOL_TYPE\u003c/var\u003e: the IP protocol that the rule is to serve\n- \u003cvar translate=\"no\"\u003ePORT_NUMBER\u003c/var\u003e: a list of comma-separated ports\n- \u003cvar translate=\"no\"\u003eBACKEND_SERVICE_NAME\u003c/var\u003e: the target backend service that receives the traffic\n- \u003cvar translate=\"no\"\u003eSD_SERVICE_NAME\u003c/var\u003e: the fully qualified name of the Service Directory service where you want to register the endpoint. This service must be in the same project and region as the forwarding rule being created. For example: projects/\u003cvar translate=\"no\"\u003ePROJECT\u003c/var\u003e/locations/\u003cvar translate=\"no\"\u003eREGION\u003c/var\u003e/namespaces/\u003cvar translate=\"no\"\u003eNAMESPACE_NAME\u003c/var\u003e/services/\u003cvar translate=\"no\"\u003eSERVICE_NAME\u003c/var\u003e.\n\n### Verify the endpoint\n\nThe Service Directory endpoints that are created when you register\nan external passthrough Network Load Balancer have the following characteristics:\n\n- The endpoint has the same name as the name of the forwarding rule with the specified port number (`\u003cforwarding rule name\u003e-\u003cport\u003e`). For example, if you create a forwarding rule `RULE` with `--port=8080`, you get an endpoint called `RULE-8080`. For the same rule, if you specified two ports `--port=8080, 8081`, you get two endpoints, `RULE-8080` and `RULE-8081`. If you specify `--port=ALL`, the Service Directory endpoint is registered with port `0`. If you are the owner of the external passthrough Network Load Balancer, you must ensure that the API caller knows what port to connect on.\n- You cannot modify or delete the endpoint using the public Service Directory API. Only when you delete the forwarding rule does the endpoint get automatically deleted. This means that you cannot delete the service and namespace that the endpoint resides in while the forwarding rule exists.\n- The endpoint itself is not billed, although normal pricing details apply to any API calls to the endpoint.\n\nTo confirm that the endpoint is created, resolve the service in Service Directory.\nYou should see an endpoint with the same name as the name of the\nforwarding rule with the specified port number.\n\nTo resolve the service in Service Directory, run the [`gcloud service-directory\nservices resolve`](/sdk/gcloud/reference/service-directory/services/resolve)\ncommand: \n\n```\ngcloud service-directory services resolve SD_SERVICE_NAME \\\n --namespace=SD_NAMESPACE_NAME \\\n --location=REGION\n```\n\nReplace the following:\n\n- \u003cvar translate=\"no\"\u003eSD_SERVICE_NAME\u003c/var\u003e: the name of the Service Directory service to resolve. It must live in the Service Directory namespace name.\n- \u003cvar translate=\"no\"\u003eSD_NAMESPACE_NAME\u003c/var\u003e: the name that you gave the namespace containing your service.\n- \u003cvar translate=\"no\"\u003eREGION\u003c/var\u003e: the Google Cloud region containing the namespace. This should be the same as the region that you created the forwarding rule in.\n\nCleanup\n-------\n\nTo delete the resources that you created, follow these steps.\n\n1. To delete the forwarding rule, run the [`gcloud compute forwarding-rules\n delete`](/sdk/gcloud/reference/compute/forwarding-rules/delete)\n command:\n\n ```\n gcloud compute forwarding-rules delete FORWARDING_RULE_NAME \\\n --region=REGION\n ```\n\n Replace the following:\n - \u003cvar translate=\"no\"\u003eFORWARDING_RULE_NAME\u003c/var\u003e: the name of the forwarding rule that you created\n - \u003cvar translate=\"no\"\u003eREGION\u003c/var\u003e: the region for the forwarding rule\n\n For further details, see [Deleting a forwarding\n rule](/load-balancing/docs/using-forwarding-rules#deleting-fr).\n\n To confirm that deleting the forwarding rule has automatically deleted the\n endpoint from Service Directory, run the [`gcloud service-directory\n services resolve`](/sdk/gcloud/reference/service-directory/services/resolve)\n command described in [Verify the endpoint](#verify-endpoint)\n section on your Service Directory service.\n2. To delete the Service Directory namespace and service, see [Delete\n resources](/service-directory/docs/configuring-service-directory#delete_resources).\n\nWhat's next\n-----------\n\n- To get an overview of Service Directory, see the [Service Directory overview](/service-directory/docs/overview).\n- To find solutions for common issues that you might encounter when using Service Directory, see [Troubleshooting](/service-directory/docs/troubleshooting)."]]