Usar el agente del servicio de Google Cloud Platform para acceder a Cloud Pub/Sub

En este instructivo se muestra cómo utilizar el catálogo de servicios de Kubernetes y el agente del servicio de Google Cloud Platform (GCP) para conectar una aplicación que se ejecuta en GKE con Cloud Pub/Sub.

¿Por qué es necesario utilizar el catálogo de servicios?

El catálogo de servicios permite que las aplicaciones que se ejecutan en un clúster descubran y se conecten con facilidad a servicios externos sin tener que importar información de forma manual, como credenciales o extremos. Las dependencias de los servicios externos se modelan como recursos de Kubernetes, que pueden integrarse con facilidad a tus procesos de implementación existentes.

En este instructivo, utilizaremos las siguientes funciones del catálogo de servicios:

  • Descubrir los servicios de Google Cloud Platform en el agente del servicio a través del catálogo de servicios.
  • Aprovisionar una instancia de servicio para crear un recurso de Cloud.
  • Vincular la instancia de servicio que se aprovisionó en la aplicación de Kubernetes para ingresar credenciales en el clúster.
  • Utilizar la vinculación del servicio en la aplicación para acceder a la instancia de servicio, que apunta al recurso de Cloud.

Para obtener más información sobre el catálogo de servicios, consulta la documentación sobre el catálogo de servicios de Kubernetes.

Objetivos

En este instructivo se abarcan los siguientes pasos:

  1. Crear un espacio de nombres
  2. Crear una cuenta de servicio de IAM
  3. Crear un tema de Pub/Sub
  4. Crear una suscripción de Pub/Sub al tema
  5. Probar el servicio de Pub/Sub a través de una aplicación de demostración
  6. Limpiar

Antes de comenzar

Sigue los pasos que se indican a continuación para habilitar la API de Kubernetes Engine:
  1. Visita la página de Kubernetes Engine en Google Cloud Platform Console.
  2. Crea o selecciona un proyecto.
  3. Espera a que la API y los servicios relacionados se habiliten. Esto puede tardar varios minutos.
  4. Comprueba que la facturación esté habilitada en tu proyecto.

    Descubre cómo puedes habilitar la facturación

Instala las siguientes herramientas de línea de comandos que se usan en este instructivo:

  • gcloud se usa para crear y borrar clústeres de Kubernetes Engine. gcloud se incluye en el SDK de Google Cloud.
  • kubectl se usa para administrar Kubernetes, el sistema de organización de clústeres que utiliza Kubernetes Engine. Puedes instalar kubectl mediante gcloud:
    gcloud components install kubectl

Establecer valores predeterminados para la herramienta de línea de comandos de gcloud

Para ahorrar tiempo en escribir las opciones de tu ID del proyecto y de la zona de Compute Engine en la herramienta de línea de comandos de gcloud, puedes establecer los valores predeterminados:
gcloud config set project [PROJECT_ID]
gcloud config set compute/zone us-central1-b

Configurar el catálogo de servicios

  • Instala el catálogo de servicios y el agente del servicio en tu clúster de GKE.
  • Verifica que el catálogo de servicios se ejecute a través del uso de kubectl en la línea de comandos para enumerar todos los procesos del catálogo de servicios:

    kubectl get deployment -n service-catalog

    Los informes de todas las implementaciones se deben mostrar como AVAILABLE.

  • (Opcional) Instala la herramienta svcat de CLI para mejorar la experiencia del usuario cuando se trabaja con los recursos del catálogo de servicios.

Paso 1: crear un espacio de nombres

Utilizar un espacio de nombres es opcional, pero se recomienda a fin de facilitar la limpieza de este instructivo.

Asígnale a tu espacio de nombres un alias de variable del entorno:

NAMESPACE=pubsub-app

Crea el espacio de nombres de la aplicación a través de Cloud Pub/Sub. Ejecuta el siguiente comando:

kubectl create namespace [NAMESPACE]

Como resultado, se debería mostrar el siguiente mensaje:

namespace "pubsub-app" created

Paso 2: crear una cuenta de servicio de IAM

Necesitas una cuenta de servicio de IAM para utilizar los servicios de GCP en tu aplicación. En este instructivo, se creará una con el ID pubsub-sa.

En caso contrario, puedes crear una cuenta de servicio de IAM a través del catálogo de servicios. Esto se puede realizar a través del aprovisionamiento y la vinculación a una instancia de servicio de la clase de servicio cloud-iam-service-account.

Aprovisionar una instancia de la cuenta de servicio de IAM

Utiliza el siguiente comando para almacenar el nombre de la cuenta de servicio en una variable del entorno:

SERVICE_ACCOUNT_ID=pubsub-sa

svcat

Utiliza el comando svcat para aprovisionar una instancia de la cuenta de servicio:

svcat provision gcp-iam \
    --class cloud-iam-service-account \
    --plan beta \
    --namespace [NAMESPACE] \
    --param accountId=$SERVICE_ACCOUNT_ID

El resultado del comando debería mostrar el siguiente mensaje:

  Name:        gcp-iam
  Namespace:   pubsub-app
  Status:
  Class:       cloud-iam-service-account
  Plan:        beta

Parameters: accountId: pubsub-sa

Verifica el estado de la instancia del servicio con el siguiente comando:

svcat get instance gcp-iam --namespace [NAMESPACE]

El resultado debería ser similar al siguiente ejemplo:

   NAME     NAMESPACE              CLASS             PLAN   STATUS
+---------+------------+---------------------------+------+--------+
  gcp-iam   pubsub-app   cloud-iam-service-account   beta   Ready

La instancia del servicio se aprovisiona de forma correcta cuando su STATUS (estado) es Ready.

kubectl

Crea un archivo YAML de ServiceInstance llamado iam_instance.yaml, con las siguientes especificaciones. Asegúrate de que el valor del campo serviceAccount sea el mismo que echo $SERVICE_ACCOUNT_ID:

apiVersion: servicecatalog.k8s.io/v1beta1
kind: ServiceInstance
metadata:
  name: gcp-iam
  namespace: pubsub-app
spec:
  # This should match with a SERVICE EXTERNAL NAME
  # in the list of available services.
  clusterServiceClassExternalName: cloud-iam-service-account
  # This should match with a PLAN EXTERNAL NAME
  # in the list of available service plans.
  clusterServicePlanExternalName: beta
  parameters:
    accountId: pubsub-sa

Utiliza el comando kubectl para aprovisionar la instancia de la cuenta de servicio mediante el archivo YAML:

kubectl apply -f iam_instance.yaml

El resultado del comando debería mostrar el siguiente mensaje:

serviceinstance "gcp-iam" created

Verifica el estado de la instancia del servicio con el siguiente comando:

kubectl get serviceinstances gcp-iam -n [NAMESPACE] -o 'custom-columns=INSTANCE-NAME:.metadata.name,SERVICE:.spec.clusterServiceClassExternalName,PLAN:.spec.clusterServicePlanExternalName,STATUS:.status.conditions[0].reason'

El resultado debería ser similar al siguiente ejemplo:

INSTANCE-NAME   SERVICE                     PLAN      STATUS
gcp-iam         cloud-iam-service-account   beta      ProvisionedSuccessfully

Una vez que la instancia del servicio se aprovisiona de forma correcta, también puedes verificar la cuenta de servicio de IAM pubsub-sa@[PROJECT_ID].iam.gserviceaccount.com correspondiente en Cloud Console.

Realizar la vinculación a la instancia de la cuenta de servicio de IAM

Realizar la vinculación a la instancia de la cuenta de servicio creará un secreto en el mismo espacio de nombres. El secreto contiene el nombre de la cuenta de servicio y una clave privada a la que tu aplicación puede hacer referencia fácilmente.

Utiliza el siguiente comando para almacenar el nombre del secreto en una variable del entorno:

SA_SECRET_NAME=pubsub-credentials

svcat

Utiliza el comando svcat para realizar la vinculación a la instancia de la cuenta de servicio:

svcat bind gcp-iam --namespace [NAMESPACE] --secret-name $SA_SECRET_NAME

El resultado del comando debería mostrar el siguiente mensaje:

  Name:        gcp-iam
  Namespace:   pubsub-app
  Status:
  Instance:    gcp-iam

Parameters: {}

Verifica el estado de la vinculación del servicio a través del siguiente comando:

svcat get binding gcp-iam --namespace [NAMESPACE]

El resultado debería ser similar al siguiente ejemplo:

   NAME     NAMESPACE    INSTANCE   STATUS
+---------+------------+----------+--------+
  gcp-iam   pubsub-app   gcp-iam    Ready

Espera a que el estado de la vinculación del servicio sea Ready antes de continuar. Esto podría tardar un minuto.

kubectl

Crea un archivo YAML de ServiceBinding llamado iam_binding.yaml con las siguientes especificaciones:

apiVersion: servicecatalog.k8s.io/v1beta1
kind: ServiceBinding
metadata:
  name: gcp-iam
  namespace: pubsub-app
spec:
  instanceRef:
    name: gcp-iam
  secretName: pubsub-credentials

Ejecuta el siguiente comando para crear la vinculación del servicio:

kubectl apply -f iam_binding.yaml

Ejecuta el siguiente comando para verificar el estado de la vinculación del servicio:

kubectl get servicebindings gcp-iam -n [NAMESPACE] -o 'custom-columns=BINDING-NAME:.metadata.name,SERVICE-INSTANCE:.spec.instanceRef.name,STATUS:.status.conditions[0].reason,OUTPUT-SECRET:.spec.secretName'

El resultado debería ser similar al siguiente ejemplo:

BINDING-NAME      SERVICE-INSTANCE   STATUS               OUTPUT-SECRET
gcp-iam           gcp-iam            InjectedBindResult   gcp-iam

Una vez que se crea con éxito la vinculación del servicio, confirma la existencia del secreto a través del siguiente comando kubectl:

kubectl get secrets $SA_SECRET_NAME --namespace [NAMESPACE]

El resultado debería ser similar al siguiente ejemplo:

NAME                 TYPE      DATA      AGE
pubsub-credentials   Opaque    2         1m

También puedes visualizar el secreto que contiene las credenciales de la cuenta de servicio:

kubectl get secrets $SA_SECRET_NAME --namespace [NAMESPACE] -o yaml

Ten en cuenta que el valor privateKeyData está codificado en Base64 y contiene la clave privada de la cuenta de servicio.

Paso 3: crear un tema de Pub/Sub

Aprovisionamiento de una instancia de servicio de Pub/Sub

Ahora, utilizaremos el catálogo de servicios para aprovisionar una instancia de servicio de Pub/Sub. Esto creará un tema de Pub/Sub desde el que tu aplicación realizará publicaciones y lecturas.

svcat

Utiliza el comando svcat para aprovisionar una instancia de servicio de Pub/Sub:

svcat provision gcp-pubsub \
    --class cloud-pubsub \
    --plan beta \
    --namespace [NAMESPACE] \
    --param topicId=pubsub-app

El resultado del comando debería mostrar el siguiente mensaje:

  Name:        gcp-pubsub
  Namespace:   pubsub-app
  Status:
  Class:       cloud-pubsub
  Plan:        beta

Parameters: topicId: pubsub-app

Verifica el estado de la instancia del servicio con el siguiente comando:

svcat get instance gcp-pubsub --namespace [NAMESPACE]

El resultado debería ser similar al siguiente ejemplo:

     NAME      NAMESPACE       CLASS       PLAN   STATUS
+------------+------------+--------------+------+--------+
  gcp-pubsub   pubsub-app   cloud-pubsub   beta   Ready

La instancia del servicio se aprovisiona de forma correcta cuando su STATUS (estado) es Ready.

kubectl

Crea un archivo YAML de ServiceInstance llamado pubsub_instance.yaml, con las siguientes especificaciones:

apiVersion: servicecatalog.k8s.io/v1beta1
kind: ServiceInstance
metadata:
  name: gcp-pubsub
  namespace: pubsub-app
spec:
  clusterServiceClassExternalName: cloud-pubsub
  # This should match with a PLAN EXTERNAL NAME
  # in the list of available service plans for Pub/Sub.
  clusterServicePlanExternalName: beta
  parameters:
    topicId: pubsub-app

Aprovisiona una instancia de servicio de Pub/Sub a través del siguiente comando:

kubectl create -f pubsub_instance.yaml

Como resultado, se debería mostrar el siguiente mensaje:

serviceinstance "gcp-pubsub" created

Verifica el estado de la instancia de servicio de Pub/Sub a través del siguiente comando:

kubectl get serviceinstances gcp-pubsub -n [NAMESPACE] -o 'custom-columns=INSTANCE-NAME:.metadata.name,SERVICE:.spec.clusterServiceClassExternalName,PLAN:.spec.clusterServicePlanExternalName,STATUS:.status.conditions[0].reason'

Se debería mostrar un mensaje de estado similar al siguiente ejemplo:

INSTANCE-NAME   SERVICE        PLAN      STATUS
gcp-pubsub      cloud-pubsub   beta      ProvisionedSuccessfully

Una vez que se aprovisiona la instancia del servicio de Pub/Sub de forma correcta, también puedes verificar el tema projects/[PROJECT_ID]/topics/pubsub-app de Pub/Sub correspondiente en Cloud Console.

Realizar la vinculación a la instancia de servicio de Pub/Sub

La vinculación a la instancia de servicio de Pub/Sub causa las siguientes acciones:

  • Otorga los permisos apropiados para que la cuenta de servicio de IAM especificada acceda al servicio de Pub/Sub.
  • Permite que la información de acceso a la instancia del servicio esté disponible para la aplicación de Kubernetes, en el formato de un secreto de Kubernetes.
  • De forma opcional, crea una suscripción al tema de Pub/Sub.

La aplicación de demostración necesita que estas tareas se lleven a cabo, ya que necesitará los permisos para acceder al servicio, ejecutarse como la identidad adquirida de la cuenta de servicio, y desde allí publicar mensajes en un tema de Pub/Sub.

En la clase del servicio de Pub/Sub existen varios tipos de vinculaciones del servicio. Primero, crearemos una vinculación del servicio del tipo publisher, que contiene dos funciones: roles/pubsub.publisher y roles/pubsub.viewer. La vinculación permitirá que nuestra cuenta de servicio publique en este tema y visualice los mensajes.

Sugerencia: Para obtener más información sobre las funciones y permisos de IAM de Cloud Pub/Sub, consulta la [documentación del control de acceso] de Cloud Pub/Sub (/pubsub/docs/access-control#tbl_roles).

svcat

Utiliza el comando svcat para vincularte al tema de Pub/Sub como publisher:

svcat bind gcp-pubsub --namespace [NAMESPACE] --params-json '{
  "serviceAccount": "'${SERVICE_ACCOUNT_ID}'",
  "roles": [
    "roles/pubsub.publisher",
    "roles/pubsub.viewer"
  ]
}'

El resultado del comando debería mostrar el siguiente mensaje (el valor serviceAccount puede ser el nombre de la cuenta de servicio que creaste anteriormente):

  Name:        gcp-pubsub
  Namespace:   pubsub-app
  Status:
  Instance:    gcp-pubsub

Parameters: roles:

  • roles/pubsub.publisher
  • roles/pubsub.viewer serviceAccount: pubsub-sa

Verifica el estado de la vinculación del servicio a través del siguiente comando:

svcat get binding gcp-pubsub --namespace [NAMESPACE]

El resultado debería ser similar al siguiente ejemplo:

     NAME      NAMESPACE     INSTANCE    STATUS
+------------+------------+------------+--------+
  gcp-pubsub   pubsub-app   gcp-pubsub   Ready

Espera a que el estado de la vinculación del servicio sea Ready antes de continuar. Esto podría tardar un minuto.

kubectl

Crea un archivo YAML de ServiceBinding llamado pubsub_binding.yaml con las siguientes especificaciones para vincularte al tema de Pub/Sub como publisher. Asegúrate de que el valor del campo serviceAccount sea el mismo que echo $SERVICE_ACCOUNT_ID:

apiVersion: servicecatalog.k8s.io/v1beta1
kind: ServiceBinding
metadata:
  name: gcp-pubsub
  namespace: pubsub-app
spec:
  instanceRef:
    name: gcp-pubsub
  parameters:
    serviceAccount: pubsub-sa
    roles:
    - roles/pubsub.publisher
    - roles/pubsub.viewer

Realiza la vinculación a la instancia de servicio de Cloud Pub/Sub:

kubectl create -f pubsub_binding.yaml

Ejecuta el siguiente comando para verificar el estado de la vinculación del servicio:

kubectl get servicebindings gcp-pubsub -n [NAMESPACE] -o 'custom-columns=BINDING-NAME:.metadata.name,SERVICE-INSTANCE:.spec.instanceRef.name,STATUS:.status.conditions[0].reason,OUTPUT-SECRET:.spec.secretName'

Debería mostrar un estado InjectedBindResult.

El secreto de gcp-pubsub que se crea como resultado de la vinculación contiene el proyecto (projectId), la cuenta de servicio (serviceAccount) y el ID del tema (topicId). Para verificar el secreto, ejecuta el siguiente comando:

kubectl get secrets gcp-pubsub --namespace [NAMESPACE] -o yaml

Paso 4: crear una suscripción de Pub/Sub al tema

Además de requerir la vinculación a la instancia de servicio de Pub/Sub para publicar en el tema, la aplicación de demostración también necesita una vinculación del servicio con la que pueda suscribirse y leer mensajes en el tema.

Ahora, crearemos otra vinculación del servicio a la instancia de servicio de Pub/Sub, pero esta vez de tipo subscriber, que contiene una suscripción y dos funciones: roles/pubsub.subscriber y roles/pubsub.viewer. Esto creará una suscripción de Pub/Sub a este tema y permitirá que nuestra cuenta de servicio obtenga y visualice mensajes desde esta suscripción.

svcat

Utiliza el comando svcat para vincularte al tema de Pub/Sub como subscriber:

svcat bind gcp-pubsub \
    --name gcp-pubsub-subscription \
    --namespace [NAMESPACE] \
    --params-json '{
      "serviceAccount": "'${SERVICE_ACCOUNT_ID}'",
      "roles": [
        "roles/pubsub.subscriber",
        "roles/pubsub.viewer"
      ],
      "subscription": {
        "subscriptionId": "pubsub-app"
      }
    }'

El resultado del comando debería mostrar el siguiente mensaje (el valor serviceAccount puede ser el nombre de la cuenta de servicio que creaste anteriormente):

  Name:        gcp-pubsub-subscription
  Namespace:   pubsub-app
  Status:
  Instance:    gcp-pubsub

Parameters: roles:

  • roles/pubsub.subscriber
  • roles/pubsub.viewer serviceAccount: pubsub-sa subscription: subscriptionId: pubsub-app

Verifica el estado de la vinculación del servicio a través del siguiente comando:

svcat get binding gcp-pubsub-subscription --namespace [NAMESPACE]

El resultado debería ser similar al siguiente ejemplo:

           NAME             NAMESPACE     INSTANCE    STATUS
+-------------------------+------------+------------+--------+
  gcp-pubsub-subscription   pubsub-app   gcp-pubsub   Ready

Espera a que el estado de la vinculación del servicio sea Ready antes de continuar. Esto podría tardar un minuto.

kubectl

Crea un archivo YAML de ServiceBinding llamado pubsub_subscription_binding.yaml para vincularte al tema de Pub/Sub como subscriber. Asegúrate de que el valor del campo serviceAccount sea el mismo que echo $SERVICE_ACCOUNT_ID:

apiVersion: servicecatalog.k8s.io/v1beta1
kind: ServiceBinding
metadata:
  name: gcp-pubsub-subscription
  namespace: pubsub-app
spec:
  instanceRef:
    name: gcp-pubsub
  parameters:
    serviceAccount: pubsub-sa
    roles:
    - roles/pubsub.subscriber
    - roles/pubsub.viewer
    subscription:
      subscriptionId: pubsub-app

Realiza la vinculación a la instancia de servicio de Cloud Pub/Sub:

kubectl create -f pubsub_subscription_binding.yaml

Ejecuta el siguiente comando para verificar el estado de la vinculación del servicio:

kubectl get servicebindings gcp-pubsub-subscription -n [NAMESPACE] -o 'custom-columns=BINDING-NAME:.metadata.name,SERVICE-INSTANCE:.spec.instanceRef.name,STATUS:.status.conditions[0].reason,OUTPUT-SECRET:.spec.secretName'

Debería mostrar un estado InjectedBindResult.

La nueva suscripción projects/[PROJECT_ID]/subscriptions/pubsub-app se puede encontrar en Cloud Console. El secreto gcp-pubsub-subscription que se crea como resultado de la vinculación contiene el proyecto (projectId), la cuenta de servicio (serviceAccount), el ID del tema (topicId) y el ID de la suscripción (subscriptionId). Para verificar el secreto, ejecuta el siguiente comando:

kubectl get secrets gcp-pubsub-subscription --namespace [NAMESPACE] -o yaml

Paso 5: probar el servicio de Pub/Sub con una aplicación de demostración

Ejecuta la aplicación de demostración en tu clúster de GKE para probar la conexión con el servicio de Cloud Pub/Sub.

Crea un archivo de trabajo de Kubernetes llamado hello_pubsub_world.yaml con las siguientes especificaciones (reemplaza el valor de secretName por [SA_SECRET_NAME] si creaste de forma manual el secreto para almacenar la clave privada de la cuenta de servicio):

apiVersion: batch/v1
kind: Job
metadata:
  name: hello-pubsub-world
  namespace: pubsub-app
spec:
  template:
    spec:
      volumes:
        # Make the 'pubsub-credentials' secret available as volume
        # 'google-cloud-key'.
        - name: google-cloud-key
          secret:
            secretName: pubsub-credentials
      restartPolicy: OnFailure
      containers:
        - name: hello-pubsub-world
          image: gcr.io/gcp-services/samples/hello-pubsub-world
          volumeMounts:
            # Mount the 'google-cloud-key' volume into the container file
            # system.
            - name: google-cloud-key
              mountPath: /var/secrets/google
          env:
            # Pass the path to the private key JSON file from the mounted volume
            # to the environment variable.
            - name: "GOOGLE_APPLICATION_CREDENTIALS"
              value: /var/secrets/google/privateKeyData

            # The two environment variables below come from the 'gcp-pubsub'
            # secret and, together, point at the Cloud Pub/Sub topic to use.
            - name: "GOOGLE_CLOUD_PROJECT_ID"
              valueFrom:
                secretKeyRef:
                  # Use the projectId value from the 'gcp-pubsub' secret created
                  # as a result of binding to the Pub/Sub service instance.
                  name: gcp-pubsub
                  key: projectId
            - name: "GOOGLE_CLOUD_PUBSUB_TOPIC"
              valueFrom:
                secretKeyRef:
                  # Use the topicId value from the 'gcp-pubsub' secret created
                  # as a result of binding to the Pub/Sub service instance.
                  name: gcp-pubsub
                  key: topicId

            # The environment variable below come from the
            # 'gcp-pubsub-subscription' secret and, together with the
            # GOOGLE_CLOUD_PROJECT_ID above, point at the Cloud Pub/Sub
            # subscription to use.
            - name: "GOOGLE_CLOUD_PUBSUB_SUBSCRIPTION"
              valueFrom:
                secretKeyRef:
                  # Use the subscriptionId value from the
                  # 'gcp-pubsub-subscription' secret created as a result of the
                  # subscription binding to the Pub/Sub service instance.
                  name: gcp-pubsub-subscription
                  key: subscriptionId

Observa cómo utiliza los valores de los secretos [SA_SECRET_NAME] (debería ser pubsub-credentials si creaste una cuenta de servicio de IAM nueva), gcp-pubsub, y gcp-pubsub-subscription, que se crearon a partir de las vinculaciones a la cuenta de servicio de IAM y a las instancias de servicio de Pub/Sub.

Crea un trabajo:

kubectl apply -f hello_pubsub_world.yaml

El resultado del comando debería mostrar el siguiente mensaje:

job "hello-pubsub-world" created

Visualiza la lista de pods:

kubectl get pods --namespace [NAMESPACE] --show-all

Debería mostrar los detalles del pod que se ejecuta en ese espacio de nombres, que debería ser similar al siguiente ejemplo:

NAME                       READY     STATUS      RESTARTS   AGE
hello-pubsub-world-zh8hm   0/1       Completed   0          1m

Espera a que el pod tenga el estado Completed, y luego verifica sus registros a través del siguiente comando:

kubectl -n [NAMESPACE] logs [POD_NAME]

Deberías ver líneas que contengan entradas similares a las que se muestran a continuación:

Publishing 10 messages.
Publishing done.
Subscribing 10 messages.
Got message: "hello world #9"
Got message: "hello world #0"
Got message: "hello world #1"
Got message: "hello world #2"
Got message: "hello world #3"
Got message: "hello world #4"
Got message: "hello world #5"
Got message: "hello world #6"
Got message: "hello world #7"
Got message: "hello world #8"
Subscription done.

Limpieza

Sigue estos pasos para evitar que se apliquen cargos a tu cuenta de Google Cloud Platform por los recursos que usaste en este instructivo:

  1. Borra el espacio de nombres de demostración, que borrará la aplicación, las vinculaciones del servicio y las instancias de servicio:

    kubectl delete namespace [NAMESPACE]
  2. Para obtener más información sobre cómo limpiar el catálogo de servicios, consulta esta guía

Qué sigue

¿Te ha resultado útil esta página? Enviar comentarios:

Enviar comentarios sobre...

Documentación de Kubernetes Engine