En esta página, se proporciona información para configurar el Directorio de servicios con Google Kubernetes Engine (GKE) y registrar automáticamente tus clústeres de GKE en el Directorio de servicios. Puedes configurar el Directorio de servicios para GKE con Autopilot clústeres de GKE 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 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 del Directorio de servicios.
- Debes registrar tus clústeres de GKE con flotas antes de que puedas sincronizar los servicios de esos clústeres con el Directorio de servicios. Para obtener detalles sobre cómo registrar tus clústeres de GKE, consulta Cómo registrar un clúster.
- Todos los recursos del Directorio de servicios se registran en el proyecto de la flota, no en el proyecto del clúster.
- No puedes modificar las entidades del 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 Google Cloud cuenta de. 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 que se indican en Cómo registrar 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 GKE del Directorio de servicios.
- Configura la política de registro del Directorio de servicios.
- Implementa el servicio de GKE.
Habilita la función de flota de GKE del Directorio de servicios
Para habilitar la función de flota de GKE del Directorio de servicios, ejecuta
el gcloud container hub comando.
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 porGroupyKind. De forma predeterminada, elGroupescore. Solo está disponibleKind: service.selector: Es un selector de etiquetas de GKE que coincide con las etiquetas key:value que se aplican en el recurso de GKE. De forma predeterminada, no se selecciona ningún recurso.annotationsToSync: Son las claves de anotación del recurso que se sincronizan con el Directorio de servicios. Si esta lista está vacía, los recursos se sincronizan con el 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 reconcilia 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 unoServiceDirectoryRegistrationPolicyen un espacio de nombres. Si hay varias políticas en un solo espacio de nombres, GKE elige una política para que sea la política activa y marca las demás como inactivas.LABELS: Es el selector de etiquetas, comosd-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 el Directorio de servicios con el recurso. Si esta lista está vacía, los recursos se sincronizan con el Directorio de servicios sin anotaciones.
Guarda el manifiesto como registration_policy.yaml.
Aplica el manifiesto al clúster.
Para aplicar el manifiesto al 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 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 al Directorio de servicios.
Crea un archivo YAML y aplícalo como cualquier otro recurso de GKE. Aquí hay 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
Aquí hay un manifiesto para una 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 del Directorio de servicios para tu servicio con el
gcloud service-directory services resolve
comando:
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
El Directorio de servicios no cobra por los recursos creados por la integración de GKE. Sin embargo, sí se cobra 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 el Directorio de servicios, consulta Solución de problemas.