En esta página, se proporciona información para configurar Directorio de servicios con Google Kubernetes Engine (GKE) y registrar automáticamente tus clústeres de GKE en Directorio de servicios. Puedes configurar el Directorio de servicios para GKE con clústeres de GKE Autopilot o clústeres de GKE Standard. Para obtener información sobre los dos modos, consulta Elige un modo de operación de GKE.
Para obtener más información sobre el Directorio de servicios para GKE, consulta la descripción general del Directorio de servicios para GKE.
Limitaciones
El Directorio de servicios para GKE tiene las siguientes limitaciones:
- Solo puedes registrar servicios con la integración de Directorio de servicios y GKE. Debes registrar las entradas, las puertas de enlace y otros recursos de forma manual con la API de Directorio de servicios.
- Debes registrar tus clústeres de GKE con Flotas antes de poder sincronizar los servicios de esos clústeres con Directorio de servicios. Si deseas obtener más información para registrar tus clústeres de GKE, consulta Registra un clúster.
- Todos los recursos de Service Directory se registran en el proyecto de la flota, no en el proyecto del clúster.
- No puedes modificar las entidades de Directorio de servicios registradas con esta integración. Debes realizar todos los cambios en los recursos del servicio de GKE para que se propaguen al Directorio de servicios.
Antes de comenzar
- Accede a tu cuenta de Google Cloud . Si eres nuevo en Google Cloud, crea una cuenta para evaluar el rendimiento de nuestros productos en situaciones reales. Los clientes nuevos también obtienen $300 en créditos gratuitos para ejecutar, probar y, además, implementar cargas de trabajo.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
- Debes registrar tu clúster de GKE en una flota. Para registrar tu clúster de GKE, sigue las instrucciones en Registra un clúster.
Configura el clúster de GKE
Para configurar el clúster de GKE, sigue estos pasos.
- Habilita la función de flota de Service Directory de GKE.
- Configura la política de registro del Directorio de servicios.
- Implementa el servicio de GKE.
Habilita la función de flota de Service Directory de GKE
Para habilitar la función de flota de Service Directory de GKE, ejecuta el comando gcloud container hub.
gcloud
gcloud alpha container hub service-directory enable
Configura la política de registro del Directorio de servicios para el servicio
La política de registro define qué tipos de servicios dentro de GKE importa automáticamente el Directorio de servicios. En la siguiente lista, se muestran las opciones configurables para esta política:
resources: Es el tipo de recursos de GKE que se importan. Puedes especificar varios tipos de recursos. Los recursos se identifican conGroupyKind. De forma predeterminada, el valor deGroupescore. Solo está disponibleKind: service.selector: Es un selector de etiquetas de GKE que coincide con las etiquetas de clave:valor que se aplican en el recurso de GKE. De forma predeterminada, no se selecciona ningún recurso.annotationsToSync: Son las claves de anotación en el recurso que se sincronizan con Directorio de servicios. Si esta lista está vacía, los recursos se sincronizan con Directorio de servicios sin anotaciones.
Cada espacio de nombres debe definir una sola política. Esta política debe tener name:
"default". El controlador no permite ni concilia otros nombres.
Configura un ServiceDirectoryRegistrationPolicy.
En el siguiente manifiesto, se describe un ServiceDirectoryRegistrationPolicy:
apiVersion: networking.gke.io/v1alpha1 kind: ServiceDirectoryRegistrationPolicy metadata: # Only the name "default" is allowed. name: default # The ServiceDirectoryRegistrationPolicy is a namespaced resource namespace: NAMESPACE spec: resources: # Kind specifies the types of Kubernetes resources that can be synced into Service Directory. - kind: Service # Selector is a label selector for the resource types specified in Kind. selector: matchLabels: LABELS # annotationsToSync specifies the annotations that are matched and imported. # Any annotations that do not match this set of keys will not be imported into Service Directory. annotationsToSync: - ANNOTATIONS
Reemplaza lo siguiente:
NAMESPACE: Es el nombre del espacio de nombres. Solo puede haber unServiceDirectoryRegistrationPolicyen un espacio de nombres. Si hay varias políticas en un solo espacio de nombres, GKE elige una política para que sea la activa y marca las demás como inactivas.LABELS: Es el selector de etiquetas, por ejemplo,sd-import: "true". Este valor se aplica a los recursos especificados en kind. De forma predeterminada, no se selecciona ningún recurso.ANNOTATIONS: Es una lista de anotaciones que coinciden y se importan, como- cloud.google.com/load-balancer-type. Si un recurso de GKE seleccionado tiene una de las anotaciones de la lista, la anotación y sus valores se sincronizan con Directorio de servicios junto con el recurso. Si esta lista está vacía, los recursos se sincronizan con Directorio de servicios sin anotaciones.
Guarda el manifiesto como registration_policy.yaml:
Aplica el manifiesto al clúster.
Para aplicar el manifiesto a tu clúster, ejecuta el comando kubectl apply -f:
kubectl apply -f registration_policy.yaml
Implementa el servicio de GKE
Implementa el servicio y la aplicación del balanceador de cargas de red de transferencia externo regional de GKE en el clúster de GKE de tu región. Por ejemplo, si tu región es us-central1, impleméntalo en un clúster de GKE gke-us-central1.
Esto importa tu servicio de GKE a Directorio de servicios.
Crea un archivo YAML y aplícalo como cualquier otro recurso de GKE. A continuación, se muestra un manifiesto para un servicio de tipo LoadBalancer:
apiVersion: v1
kind: Service
metadata:
name: hello-app-service
labels:
sd-import: "true"
annotations:
cloud.google.com/load-balancer-type: "Internal"
spec:
type: LoadBalancer
selector:
app: hello
ports:
- name: tcp-port
protocol: TCP
port: 80
targetPort: 8080
A continuación, se muestra un manifiesto de un Deployment:
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: hello
name: hello-app
spec:
replicas: 2
selector:
matchLabels:
app: hello
template:
metadata:
labels:
app: hello
spec:
containers:
- image: gcr.io/google-samples/hello-app:1.0
name: hello
ports:
- containerPort: 8080
protocol: TCP
Para verificarlo, ejecuta la consulta de Directorio de servicios para tu servicio con el comando gcloud service-directory services resolve:
gcloud
gcloud beta service-directory services resolve SERVICE_NAME \ --location=LOCATION \ --namespace=NAMESPACE
Reemplaza lo siguiente:
SERVICE_NAME: Es el nombre o el identificador completamente calificado del servicio, por ejemplo,hello-app-service.LOCATION: Es el nombre de la región del servicio, por ejemplo,us-central1.NAMESPACE: Es el nombre del espacio de nombres del servicio, por ejemplo,default.
El resultado muestra tu servicio y es similar al siguiente:
service:
endpoints:
- address: 10.140.0.5
metadata:
cloud.google.com/load-balancer-type: "Internal"
name: projects/my-project/locations/us-central1/namespaces/default/services/hello-app-service/endpoints/my-cluster-12345
port: 80
network: projects/123456789/locations/global/networks/default
name: projects/my-project/locations/us-central1/namespaces/default/services/hello-app-service
Facturación
Directorio de servicios no cobra por los recursos creados por la integración de GKE. Sin embargo, sí se aplican cargos por las llamadas a la API. Para obtener detalles sobre los precios, consulta Precios del Directorio de servicios.
¿Qué sigue?
- Para obtener una descripción general del Directorio de servicios, consulta la Descripción general del Directorio de servicios.
- Para encontrar soluciones a problemas habituales que podrías tener cuando usas Directorio de servicios, consulta Solución de problemas.