Usa la página Aplicaciones de GKE en Cloud Console

En este instructivo, se describe cómo usar la página Aplicaciones de Google Kubernetes Engine (GKE) en Google Cloud Console.

Cuando adoptas Kubernetes para muchas aplicaciones y recursos, puede ser difícil identificar y hacer un seguimiento de los diversos componentes relacionados con una aplicación. Cuando implementas varias aplicaciones en cada espacio de nombres, puede ser difícil saber qué recursos están relacionados con qué aplicación. Además, a menudo debes buscar en varias ubicaciones la documentación y los metadatos que describen cuáles son las aplicaciones, quiénes son los propietarios y cómo interactuar con los servicios.

GKE ayuda a resolver estos desafíos con la página Aplicaciones:

Una vista parcial de la página Aplicaciones que muestra una lista de aplicaciones junto con varias propiedades.

La página Aplicaciones es un recurso independiente dentro de tu arquitectura que describe los metadatos sobre tu sistema. Puedes usar esta página para organizar tus recursos de forma visual sin cambiar la arquitectura. Mediante la definición de valores en un archivo YAML, puedes agrupar todos los recursos de la aplicación y, también, incluir metadatos vitales para el equipo de operaciones. Crear, modificar y borrar el archivo YAML no afecta los recursos existentes, por lo que puedes trabajar de inmediato con los recursos sin riesgos para tu sistema.

Para demostrar esta página, en este instructivo se muestra cómo implementar el recurso Application de Kubernetes en una aplicación y agregar metadatos definidos por el usuario para organizar y simplificar la administración de la aplicación en GKE.

Este instructivo está dirigido a desarrolladores que crean aplicaciones para ejecutar en GKE. Suponemos que estás familiarizado con los conceptos básicos de Kubernetes y que tienes experiencia en la escritura de archivos YAML de recursos de Kubernetes.

Objetivos

  • Ingresar el recurso Application de Kubernetes
  • Agregar el recurso Aplicación de Kubernetes a una arquitectura existente
  • Crear y visualizar información personalizada sobre una aplicación a través de Cloud Console

Costos

En este instructivo, se usan los siguientes componentes facturables de Google Cloud:

Para generar una estimación de costos en función del uso previsto, usa la calculadora de precios. Es posible que los usuarios nuevos de Google Cloud califiquen para obtener una prueba gratuita.

Cuando finalices este instructivo, podrás borrar los recursos creados para evitar que se te siga facturando. Para obtener más información, consulta cómo hacer una limpieza.

Antes de comenzar

  1. En la página del selector de proyectos de Google Cloud Console, selecciona o crea un proyecto de Google Cloud.

    Ir al selector de proyectos

  2. Asegúrate de que la facturación esté habilitada para tu proyecto de Cloud. Descubre cómo confirmar que tienes habilitada la facturación en un proyecto.

  3. Habilita las API de Compute Engine and Kubernetes Engine.

    Habilita las API

  4. En Cloud Console, activa Cloud Shell.

    Activar Cloud Shell

    Ejecuta los comandos para este instructivo en Cloud Shell o en el editor de Cloud Shell.

Prepara tu entorno

  1. En Cloud Shell, configura las variables de entorno para tu proyecto:

    export PROJECT_ID=PROJECT_ID
    gcloud config set core/project $PROJECT_ID
    gcloud config set compute/zone us-central1-c
    

    Reemplaza PROJECT_ID por el ID del proyecto de Google Cloud.

  2. Crea un clúster de GKE:

    gcloud container clusters create sample-cluster
    

    Para este instructivo, debes ejecutar aplicaciones en un clúster de GKE predeterminado.

Instala las aplicaciones de muestra

En este instructivo, simularás la ejecución de varias aplicaciones en el mismo espacio de nombres mediante una aplicación de muestra básica Nginx y la aplicación de muestra Bank of Anthos.

  1. En Cloud Shell, instala la aplicación de muestra Nginx:

    kubectl apply -f https://raw.githubusercontent.com/kubernetes/website/master/content/en/examples/application/web/web.yaml
    

    Este comando crea un recurso de StatefulSet llamado web y un servicio llamado nginx. En Cloud Console, puedes ver estos recursos en las páginas Cargas de trabajo y Ingress y servicios de GKE.

  2. Clona el repositorio de GitHub que contiene la aplicación de muestra del Bank de Anthos:

    git clone https://github.com/GoogleCloudPlatform/bank-of-anthos.git
    cd bank-of-anthos
    
  3. Genera una clave SSH y guárdala como un Secret de Kubernetes:

    openssl genrsa -out jwtRS256.key 4096
    openssl rsa -in jwtRS256.key -outform PEM -pubout -out jwtRS256.key.pub
    kubectl create secret generic jwt-key --from-file=./jwtRS256.key --from-file=./jwtRS256.key.pub
    

    La aplicación de muestra Bank of Anthos requiere una clave SSH para ejecutarse.

  4. Implementa la aplicación de muestra en el clúster.

    kubectl apply -f kubernetes-manifests
    

    Después de unos momentos, podrás ver los recursos de aplicación en las páginas siguientes de Cloud Console:

    Ten en cuenta lo siguiente:

    • Los recursos para las aplicaciones de muestra Nginx y Bank of Anthos están mezclados.
    • Aún no se muestra ningún recurso en la página Aplicaciones. Completarás la página Aplicaciones en pasos posteriores.

Prepara GKE

Los recursos que muestra la página Aplicaciones se especifican con el tipo de recurso Application de Kubernetes, una definición de recurso personalizada (CRD) que proporciona el proyecto de código abierto de Kubernetes. De manera predeterminada, la CRD del recurso Aplicación no está habilitada en Kubernetes. Algunos servicios de GKE, como de Marketplace y el Deployment de Aplicación, instalan la CRD de Aplicación, pero, si no usas ninguno de esos servicios, el CRD de Aplicación no estará disponible de forma predeterminada.

Para instalar la CRD de Aplicación, haz lo siguiente:

  1. En Cloud Shell, aplica la CRD de Aplicación una vez en cada clúster:

    kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/application/master/deploy/kube-app-manager-aio.yaml
    
  2. (Opcional) Una vez que se complete el comando, visualiza la CRD de Aplicación en el clúster:

    kubectl get crd
    

    El siguiente resultado es una lista de CRD instaladas, incluida applications.app.k8s.io:

    NAME                                    CREATED AT
    applications.app.k8s.io                 2020-07-24T19:32:20Z
    backendconfigs.cloud.google.com         2020-07-24T19:28:40Z
    managedcertificates.networking.gke.io   2020-07-24T19:28:57Z
    scalingpolicies.scalingpolicy.kope.io   2020-07-24T19:28:57Z
    updateinfos.nodemanagement.gke.io       2020-07-24T19:28:57Z
    

Incluye recursos de la aplicación

Ahora que el CRD del recurso Application está disponible en el clúster, el siguiente paso es crear y, luego, implementar una instancia del recurso Application.

Debido a que el recurso Application es un recurso de Kubernetes, tiene una estructura similar a otros recursos de Kubernetes, incluidos campos y opciones para apiVersion, kind, metadata y spec:

apiVersion: app.k8s.io/v1beta1
kind: Application
metadata:
  name: ...
spec:
   ...

En las siguientes secciones, trabajarás con varios campos y opciones que están disponibles en el recurso Application.

Crea el recurso Application base

Puedes agregar el recurso de Aplicación a cualquier conjunto existente de recursos. En este instructivo, comenzarás con un recurso vacío y completarás cada sección.

  1. En Cloud Shell, crea y edita un archivo application.yaml en el directorio kubernetes-manifests:

    touch kubernetes-manifests/application.yaml
    edit kubernetes-manifests/application.yaml
    

    Se abre el editor de Cloud Shell y se muestra un archivo en blanco.

  2. Pega las siguientes líneas para definir tu primera aplicación:

    apiVersion: app.k8s.io/v1beta1
    kind: Application
    metadata:
      name: "bank-of-anthos"
    
  3. En la barra de menú de Cloud Shell, haz clic en Abrir terminal.

  4. En Cloud Shell, aplica el siguiente recurso:

    kubectl apply -f kubernetes-manifests/application.yaml
    
  5. En Cloud Console, ve a la página Aplicaciones.

    Ir a Aplicaciones

    En la página Aplicaciones, se muestran los recursos que agregaste:

    La aplicación Bank of Anthos se incluye en la lista de aplicaciones.

Incluye recursos por componente

En la página Aplicaciones, se muestra la aplicación de Bank of Anthos. Cuando haces clic en bank-of-anthos en el campo Nombre, verás información básica sobre la aplicación:

Los detalles de la aplicación incluyen el clúster, el espacio de nombres y la fecha de creación.

Puedes agregar varios tipos de componentes para que se muestren en Cloud Console. Por ejemplo, para mostrar objetos Services, Deployments y StatefulSets, edita la sección componentKinds de la definición application.yaml, de la siguiente manera:

spec:
  componentKinds:
    - group: v1
      kind: Service
    - group: apps
      kind: Deployment
    - group: v1
      kind: StatefulSet

En estos pasos, debes agregar estos componentes a la definición del recurso de Bank of Anthos:

  1. En la barra de menú de Cloud Shell, haz clic en Abrir editor.

  2. En el editor de Cloud Shell, reemplaza el contenido del archivo kubernetes-manifests/application.yaml y pega lo siguiente:

    apiVersion: app.k8s.io/v1beta1
    kind: Application
    metadata:
      name: "bank-of-anthos"
    spec:
      componentKinds:
        - group: v1
          kind: Service
        - group: apps
          kind: Deployment
        - group: v1
          kind: StatefulSet
    

    La adición de la sección spec agrega Service, Deployment y StatefulSet a la definición de la aplicación.

  3. En Cloud Shell, aplica el siguiente recurso:

    kubectl apply -f kubernetes-manifests/application.yaml
    
  4. En Cloud Console, ve a la página de detalles de la aplicación Bank of Anthos.

    Ir a los detalles de Bank of Anthos

    Se muestran los componentes de un tipo determinado:

    La lista de detalles incluye los tipos de componentes, como Service y Deployment.

Filtra recursos con selectores

En este punto del instructivo, la lista de componentes incluye todos los recursos para ambas aplicaciones de muestra del conjunto de componentes definido desde el espacio de nombres completo. Por ejemplo, el siguiente diagrama muestra el Service nginx de la aplicación de muestra Nginx y el Deployment transactionhistory de la aplicación de muestra Bank of Anthos:

La lista de componentes se genera a partir de todas las aplicaciones en el espacio de nombres.

A fin de garantizar que solo se muestren los recursos de una aplicación, por ejemplo, para la aplicación del Bank of Anthos, puedes usar selectores para identificar recursos específicos. Para ver cómo funcionan los selectores, agrega una etiqueta a tu recurso en los siguientes pasos:

  1. En Cloud Shell, abre el archivo frontend.yaml:

    edit kubernetes-manifests/frontend.yaml
    
  2. En el editor de Cloud Shell, pega la siguiente label de entrada después de la línea 18:

    labels:
        app.kubernetes.io/name: "bank-of-anthos"
    

    La sección metadata se ve de la siguiente manera:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: frontend
      labels:
        app.kubernetes.io/name: "bank-of-anthos"
    spec:
    

    El archivo application.yaml completo se ve de la siguiente manera:

    apiVersion: app.k8s.io/v1beta1
    kind: Application
    metadata:
      name: "bank-of-anthos"
      labels:
        app.kubernetes.io/name: "bank-of-anthos"
    spec:
      selector:
        matchLabels:
         app.kubernetes.io/name: "bank-of-anthos"
      componentKinds:
        - group: v1
          kind: Service
        - group: apps
          kind: Deployment
        - group: v1
          kind: StatefulSet
    
  3. En Cloud Shell, aplica los siguientes recursos:

    kubectl apply -f kubernetes-manifests/
    
  4. En Cloud Console, ve a la página de detalles de la aplicación Bank of Anthos.

    Ir a los detalles de Bank of Anthos

    Se muestra el único recurso que coincide con una etiqueta específica:

    En la lista de componentes, se muestra el recurso Deployment.

Aplica etiquetas a todos los recursos con kustomize

Aplicar de forma manual las etiquetas a cada recurso en una aplicación puede ser una tarea tediosa. En los siguientes pasos, se muestra cómo usar kustomize para agregar etiquetas a todos los recursos de forma eficiente:

  1. En Cloud Shell, descarga kustomize:

    curl -s "https://raw.githubusercontent.com/\
    kubernetes-sigs/kustomize/master/hack/install_kustomize.sh" | bash
    
  2. Crea y edita un archivo kustomization.yaml:

    touch kubernetes-manifests/kustomization.yaml
    edit kubernetes-manifests/kustomization.yaml
    
  3. En el editor de Cloud Shell, agrega las siguientes líneas a kustomization.yaml:

    apiVersion: kustomize.config.k8s.io/v1beta1
    kind: Kustomization
    
    resources:
    - accounts-db.yaml
    - application.yaml
    - balance-reader.yaml
    - config.yaml
    - contacts.yaml
    - frontend.yaml
    - ledger-db.yaml
    - ledger-writer.yaml
    - loadgenerator.yaml
    - transaction-history.yaml
    - userservice.yaml
    
    commonLabels:
        app.kubernetes.io/name: "bank-of-anthos"
    

    En esta definición kustomization.yaml, debes especificar a qué recursos aplicar las modificaciones y qué modificaciones realizar. En este caso, debes especificar que todos los recursos tengan una etiqueta común de app.kubernetes.io/name: "bank-of-anthos".

  4. En Cloud Shell, borra los recursos anteriores:

    kubectl delete -f kubernetes-manifests/
    

    Es necesario borrar los recursos anteriores antes de aplicar los nuevos que se especifican en kustomization.yaml.

  5. Aplica los recursos con la marca kustomize en lugar de la marca file:

    ./kustomize build kubernetes-manifests/ | kubectl apply -f -
    
  6. En Cloud Console, ve a la página de detalles de la aplicación Bank of Anthos.

    Ir a los detalles de Bank of Anthos

    En la página de detalles, se muestran los recursos de la aplicación de muestra del Bank of Anthos y no los de la aplicación de Nginx de muestra:

    Solo se muestran los componentes de Bank of Anthos, como StatefulSet.

Agrega metadatos útiles en la pantalla

Puedes mostrar metadatos personalizados de una aplicación en Cloud Console. Puedes incluir qué hace la aplicación, quién es el propietario, dónde encontrar más información sobre ella y cómo acceder a ella. Este tipo de información es valiosa para varios casos de uso, por ejemplo, si administras varias aplicaciones dentro de tu organización.

En las siguientes secciones, se describen algunos de los metadatos que puedes agregar.

Agrega una descripción y documentación

Puedes agregar una descripción y los vínculos que aparecen en el panel Información de la aplicación. Para acceder a este panel desde la página Detalles, haz clic en Mostrar panel de información.

Para mostrar información en este panel, define elementos como description y links en la sección descriptor de tu archivo application.yaml.

descriptor:
    description:
    links:
    - description:
      url:

Para actualizar la sección descriptor, haz lo siguiente:

  1. En el editor de Cloud Shell, reemplaza el contenido del archivo application.yaml con lo siguiente:

    apiVersion: app.k8s.io/v1beta1
    kind: Application
    metadata:
      name: "bank-of-anthos"
      labels:
        app.kubernetes.io/name: "bank-of-anthos"
    spec:
      selector:
        matchLabels:
         app.kubernetes.io/name: "bank-of-anthos"
    
      componentKinds:
        - group: v1
          kind: Service
        - group: apps
          kind: Deployment
        - group: v1
          kind: StatefulSet
    
      descriptor:
        description: |-
            This application simulates a bank's payment processing network using
            [Anthos](/anthos/).
            Bank of Anthos allows users to create artificial accounts and
            simulate transactions between accounts. Bank of Anthos was developed
            to create an end-to-end sample demonstrating Anthos best practices.
    
        links:
        - description: 'About Anthos on GCP'
          url: /anthos/
        - description: 'Bank of Anthos GitHub Repository'
          url: https://github.com/GoogleCloudPlatform/bank-of-anthos
    
  2. En Cloud Shell, implementa el recurso Application:

    kubectl apply -f kubernetes-manifests/application.yaml
    
  3. En Cloud Console, ve a la página de detalles de la aplicación Bank of Anthos.

    Ir a los detalles de Bank of Anthos

  4. Para revisar las actualizaciones, haz clic en Mostrar panel de información.

    En el panel Información de la aplicación, se muestra una descripción y una lista de documentos:

    Los documentos de la lista tienen el formato de hipervínculos.

Incluye el tipo de software

La página Aplicaciones incluye un campo (Software) para el tipo de software en la lista de aplicaciones. Puedes personalizar este campo para organizar y clasificar tus aplicaciones según tus necesidades. Por ejemplo, puedes indicar si el software es interno o externo. O bien, si tienes varias apps compiladas a partir de un tipo de base compartida, puedes indicar qué tipo de base implementa una aplicación.

Para agregar una descripción personalizada al tipo de software, usa el campo type en la sección descriptor del archivo application.yaml:

 descriptor:
    type: External App

Puedes mostrar el valor de type como un hipervínculo en Cloud Console. Especifica la URL para el hipervínculo con la primera entrada de la sección links. En los siguientes pasos, actualizarás la sección links de la siguiente manera:

    links:
    - description: 'Bank of Anthos GitHub Repository'
      url: https://github.com/GoogleCloudPlatform/bank-of-anthos
  1. En el editor de Cloud Shell, pega lo siguiente y reemplaza el contenido de application.yaml.

    apiVersion: app.k8s.io/v1beta1
    kind: Application
    metadata:
      name: "bank-of-anthos"
      labels:
        app.kubernetes.io/name: "bank-of-anthos"
    spec:
      selector:
        matchLabels:
         app.kubernetes.io/name: "bank-of-anthos"
    
      componentKinds:
        - group: v1
          kind: Service
        - group: apps
          kind: Deployment
        - group: v1
          kind: StatefulSet
    
      descriptor:
        type: External App
    
        description: |-
            This application simulates a bank's payment processing network using [Anthos](/anthos/).
            Bank of Anthos allows users to create artificial accounts and simulate transactions between accounts. Bank of Anthos was developed to create an end-to-end sample demonstrating Anthos best practices.
    
        links:
        - description: 'About Anthos on GCP'
          url: /anthos/
        - description: 'Bank of Anthos GitHub Repository'
          url: https://github.com/GoogleCloudPlatform/bank-of-anthos
    
  2. En Cloud Shell, implementa el recurso Application:

    kubectl apply -f kubernetes-manifests/application.yaml
    
  3. En Cloud Console, ve a la página Aplicaciones.

    Ir a Aplicaciones

    Se muestra Aplicación externa en el campo Software:

    El tipo de software de aplicación externa tiene el formato de un hipervínculo.

Incluye una versión de la aplicación

La página principal Aplicaciones incluye un campo para la versión. En la práctica, el valor de este campo se actualiza de manera programática para hacer referencia a la versión real implementada.

Para propagar el campo de versión, incluye el campo version en descriptor, como en el siguiente ejemplo:

  descriptor:
    type: External App
    version: "2.3.2"

En los siguientes pasos, agregarás un campo para la versión de la aplicación.

  1. En el editor de Cloud Shell, reemplaza el contenido del archivo application.yaml y pega lo siguiente:

    apiVersion: app.k8s.io/v1beta1
    kind: Application
    metadata:
      name: "bank-of-anthos"
      labels:
        app.kubernetes.io/name: "bank-of-anthos"
    spec:
      selector:
        matchLabels:
         app.kubernetes.io/name: "bank-of-anthos"
    
      componentKinds:
        - group: v1
          kind: Service
        - group: apps
          kind: Deployment
        - group: v1
          kind: StatefulSet
    
      descriptor:
        type: External App
    
        version: "2.3.2"
    
        description: |-
            This application simulates a bank's payment processing network using [Anthos](/anthos/).
            Bank of Anthos allows users to create artificial accounts and simulate transactions between accounts. Bank of Anthos was developed to create an end-to-end sample demonstrating Anthos best practices.
    
        links:
        - description: 'About Anthos on GCP'
          url: /anthos/
        - description: 'Bank of Anthos GitHub Repository'
          url: https://github.com/GoogleCloudPlatform/bank-of-anthos
    
  2. En Cloud Shell, implementa el recurso Application:

    kubectl apply -f kubernetes-manifests/application.yaml
    
  3. En Cloud Console, ve a la página Aplicaciones.

    Ir a Aplicaciones

    El campo Versión de la aplicación del Bank of Anthos se muestra como 2.3.2:

    Los detalles de la aplicación incluyen los campos de tipo de software y versión.

Agrega detalles del encargado de mantenimiento

En este paso, agregarás texto estático personalizado a la sección principal de la página Aplicaciones. Debes especificar estos detalles en la sección info del archivo application.yaml de la siguiente manera:

  info:
  - name: LABEL
    value: STRING

A fin de incluir valores estáticos, debes proporcionar detalles para LABEL y STRING en la sección info. Por ejemplo, puedes ingresar Owner para name, y John Smith para value.

  1. En el editor de Cloud Shell, pega lo siguiente y reemplaza el contenido de application.yaml.

    apiVersion: app.k8s.io/v1beta1
    kind: Application
    metadata:
      name: "bank-of-anthos"
      labels:
        app.kubernetes.io/name: "bank-of-anthos"
    spec:
      selector:
        matchLabels:
         app.kubernetes.io/name: "bank-of-anthos"
    
      componentKinds:
        - group: v1
          kind: Service
        - group: apps
          kind: Deployment
        - group: v1
          kind: StatefulSet
    
      descriptor:
        type: External App
    
        version: "2.3.2"
    
        description: |-
            This application simulates a bank's payment processing network using [Anthos](/anthos/).
            Bank of Anthos allows users to create artificial accounts and simulate transactions between accounts. Bank of Anthos was developed to create an end-to-end sample demonstrating Anthos best practices.
    
        links:
        - description: 'About Anthos on GCP'
          url: /anthos/
        - description: 'Bank of Anthos GitHub Repository'
          url: https://github.com/GoogleCloudPlatform/bank-of-anthos
    
      info:
      - name: Owner
        value: John Smith
    
  2. En Cloud Shell, implementa el recurso Application:

    kubectl apply -f kubernetes-manifests/application.yaml
    
  3. En Cloud Console, ve a la página de detalles de la aplicación Bank of Anthos.

    Ir a los detalles de Bank of Anthos

    En la página de detalles, se incluye un propietario para la aplicación Bank of Anthos:

    John Smith aparece como propietario.

Permite exponer un extremo de la aplicación

Además de los valores estáticos, puedes exponer los valores dinámicos desde el objeto Deployment. En los pasos siguientes, revelarás la dirección IP del balanceador de cargas para que cualquier persona que vea la página de detalles de la aplicación pueda acceder a la aplicación directamente.

Para mostrar este valor, usa la especificación serviceRef. Otras especificaciones válidas son configMapKeyRef, ingressRef y secretKeyRef.

En la especificación serviceRef, debes incluir estos valores dinámicos mediante el tipo Reference. Para este instructivo, la especificación de serviceRef es la siguiente:

 info:
  - name: LABEL
    type: Reference
    valueFrom:
      serviceRef:
        name: SERVICE_NAME
        fieldPath: DATA_LOCATION

Puedes reemplazar los siguientes valores:

  • LABEL: Una etiqueta que describe una instancia de referencia específica, por ejemplo, App Frontend URL
  • SERVICE_NAME: el nombre que identifica el Service$mdash; por ejemplo, frontend
  • DATA_LOCATION: la ubicación de los datos en el Service; por ejemplo, status.loadBalancer.ingress[0].ip

Las especificaciones serviceRef y ingressRef también admiten el elemento path. Si la URL requiere detalles relacionados con la ruta de acceso, incluye esos detalles en el campo path:

 info:
  - name: LABEL
    type: Reference
    valueFrom:
      serviceRef:
        name: SERVICE_NAME
        fieldPath: DATA_LOCATION
        path: /wp-admin

La dirección IP del extremo y la ruta se concatenan; por ejemplo, 35.202.90.0/wp-admin.

También puedes forzar el uso de HTTP o HTTPS mediante el campo protocol de la siguiente manera:

 info:
  - name: LABEL
    type: Reference
    valueFrom:
      serviceRef:
        name: SERVICE_NAME
        fieldPath: DATA_LOCATION
        path: /wp-admin
        protocol: HTTPS

Estos detalles producen la siguiente URL:

https://35.202.90.0/wp-admin

En los pasos siguientes, usas serviceRef para exponer la dirección IP del balanceador de cargas del Service correspondiente a la aplicación Bank of Anthos:

  1. En el editor de Cloud Shell, reemplaza el contenido del archivo application.yaml por lo siguiente:

    apiVersion: app.k8s.io/v1beta1
    kind: Application
    metadata:
      name: "bank-of-anthos"
      labels:
        app.kubernetes.io/name: "bank-of-anthos"
    spec:
      selector:
        matchLabels:
         app.kubernetes.io/name: "bank-of-anthos"
    
      componentKinds:
        - group: v1
          kind: Service
        - group: apps
          kind: Deployment
        - group: v1
          kind: StatefulSet
    
      descriptor:
        type: External App
    
        version: "2.3.2"
    
        description: |-
            This application simulates a bank's payment processing network using [Anthos](/anthos/).
            Bank of Anthos allows users to create artificial accounts and simulate transactions between accounts. Bank of Anthos was developed to create an end-to-end sample demonstrating Anthos best practices.
    
        links:
        - description: 'About Anthos on GCP'
          url: /anthos/
        - description: 'Bank of Anthos GitHub Repository'
          url: https://github.com/GoogleCloudPlatform/bank-of-anthos
    
      info:
      - name: Owner
        value: John Smith
      - name: App Frontend URL
        type: Reference
        valueFrom:
          serviceRef:
            name: frontend
            fieldPath: status.loadBalancer.ingress[0].ip
            protocol: HTTPS
    
  2. En Cloud Shell, implementa el recurso Application:

    kubectl apply -f kubernetes-manifests/application.yaml
    
  3. En Cloud Console, ve a la página de detalles de la aplicación Bank of Anthos.

    Ir a los detalles de Bank of Anthos

    En la página de detalles, se incluye una dirección IP de extremo para la aplicación Bank of Anthos:

    La dirección IP tiene la etiqueta de URL de frontend de aplicación.

Proporciona credenciales de acceso

Como se mencionó antes, puedes exponer los Secrets de Kubernetes a través de Cloud Console mediante el elemento secretKeyRef. En este instructivo, proporcionas un nombre de usuario y una contraseña al operador para que pueda acceder a la aplicación.

  1. En Cloud Shell, crea el Secret:

    kubectl create secret generic boa-access --from-literal=boa-user=testuser --from-literal=boa-pass=password
    
  2. En el editor de Cloud Shell, reemplaza lo que se encuentra en el archivo application.yaml y pega lo siguiente. Esta actualización incluye referencias al nombre de usuario y la contraseña en la anotación secretKeyRef.

    apiVersion: app.k8s.io/v1beta1
    kind: Application
    metadata:
      name: "bank-of-anthos"
      labels:
        app.kubernetes.io/name: "bank-of-anthos"
    spec:
      selector:
        matchLabels:
         app.kubernetes.io/name: "bank-of-anthos"
    
      componentKinds:
        - group: v1
          kind: Service
        - group: apps
          kind: Deployment
        - group: v1
          kind: StatefulSet
    
      descriptor:
        type: External App
    
        version: "2.3.2"
    
        description: |-
            This application simulates a bank's payment processing network using [Anthos](/anthos/).
            Bank of Anthos allows users to create artificial accounts and simulate transactions between accounts. Bank of Anthos was developed to create an end-to-end sample demonstrating Anthos best practices.
    
        links:
        - description: 'About Anthos on GCP'
          url: /anthos/
        - description: 'Bank of Anthos GitHub Repository'
          url: https://github.com/GoogleCloudPlatform/bank-of-anthos
    
      info:
      - name: Owner
        value: John Smith
      - name: App Frontend URL
        type: Reference
        valueFrom:
          serviceRef:
            name: frontend
            fieldPath: status.loadBalancer.ingress[0].ip
            protocol: HTTPS
      - name: TestUser username
        type: Reference
        valueFrom:
          secretKeyRef:
            name: boa-access
            key: boa-user
    
      - name: TestUser password
        type: Reference
        valueFrom:
          secretKeyRef:
            name: boa-access
            key: boa-pass
    
  3. En Cloud Shell, implementa el recurso Application:

    kubectl apply -f kubernetes-manifests/application.yaml
    
  4. En Cloud Console, ve a la página de detalles de la aplicación Bank of Anthos.

    Ir a los detalles de Bank of Anthos

  5. Haz clic en Vista previa de los datos secretos. Se revelan el nombre de usuario y la contraseña:

    Los detalles de la aplicación incluyen vínculos para acceder a las credenciales.

La capacidad de revelar datos de Secrets puede ser una característica útil para tus equipos de operaciones. Sin embargo, la capacidad de ver estos Secrets se rige por los permisos de acceso de Identity and Access Management (IAM) de la página de detalles de GKE. Cualquier persona con permisos para ver clústeres también puede ver los Secrets, por lo que es importante que consideres cuidadosamente lo que expones.

Agrega un ícono de la aplicación

Para que tu aplicación se destaque, puedes incluir un logotipo que se muestra en la lista de aplicaciones y en tu página de detalles. Para incluir un logotipo, especifica el URI de datos de la imagen en la anotación kubernetes-engine.cloud.google.com/icon.

La conversión de una imagen en un URI de datos no se incluye en este instructivo. Sin embargo, una Búsqueda de Google de “convertir imagen en URI de datos” muestra varias utilidades que pueden ayudarte a producir la string de datos de una imagen. Debido a que el URI de los datos de la imagen que se usa en esta sección es tan largo, no es práctico incluirlo en el instructivo. El URI de datos completo se puede ver en el archivo application.yaml completo. La string de URI de los datos debe comenzar de la siguiente manera: data:image/png;base64,iVBORw0KGgoAAAANSUhEUg.... y termina con K5CYII=. Asegúrate de no incluir comillas simples ni caracteres HTML.

El archivo application.yaml completo está disponible como gist a modo de referencia.

Para agregar un ícono, actualiza la sección metadata de application.yaml:

  1. Copia el siguiente código:

    annotations:
      kubernetes-engine.cloud.google.com/icon: >-
        data:image/png;base64,DATA_URI
    

    Reemplaza DATA_URI por la string que se encuentra en el archivo application.yaml completo al que se hizo referencia antes.

  2. En el editor de Cloud Shell, pega el código que copiaste después de la sección labels en la sección metadata de application.yaml.

    Esa sección de application.yaml es similar a la siguiente, en la que DATA_URI representa el valor del URI de datos.

    apiVersion: app.k8s.io/v1beta1
    kind: Application
    metadata:
      name: "bank-of-anthos"
      labels:
        app.kubernetes.io/name: "bank-of-anthos"
      annotations:
        kubernetes-engine.cloud.google.com/icon: >-
          data:image/png;base64,DATA_URI
    spec:
    
  3. En Cloud Shell, implementa el recurso Application:

    kubectl apply -f kubernetes-manifests/application.yaml
    
  4. En Cloud Console, ve a la página Aplicaciones.

    Ir a Aplicaciones

    Se muestra un logotipo en la lista de aplicaciones:

    Se muestra un logotipo junto al nombre de la aplicación en la lista de aplicaciones.

  5. En Cloud Console, ve a la página de detalles de la aplicación Bank of Anthos.

    Ir a los detalles de Bank of Anthos

    Se muestra un logotipo en el encabezado de la página de detalles:

    Se muestra un logotipo en la parte superior de la lista de detalles de la aplicación.

Limpia

Para evitar que se apliquen cargos a la cuenta de Google Cloud por los recursos que se usaron en este instructivo, puedes borrar el proyecto de Google Cloud que creaste para este instructivo.

Borra el proyecto

  1. En Cloud Console, ve a la página Administrar recursos.

    Ir a Administrar recursos

  2. En la lista de proyectos, elige el proyecto que quieres borrar y haz clic en Borrar.
  3. En el diálogo, escribe el ID del proyecto y, luego, haz clic en Cerrar para borrar el proyecto.

¿Qué sigue?