使用 Cloud Console 中的“GKE 应用”页面

本教程介绍如何在 Google Cloud Console 中使用 Google Kubernetes Engine (GKE) 应用页面

如果为许多应用和资源采用 Kubernetes,则确定和跟踪与一个应用相关的各种组件可能会非常困难。在每个命名空间中部署多个应用时,可能很难了解哪些资源与哪个应用相关。此外,您通常还必须在多个位置搜索文档和元数据,描述了应用是什么、所有者是谁以及如何与服务交互。

GKE 通过应用页面帮助您解决这些挑战:

“应用”页面的部分视图,其中显示了应用及其各种属性的列表。

应用页面是架构中的一个独立资源,说明关于系统的元数据。您可以使用此页面直观地组织资源,无需更改架构。通过在 YAML 文件中定义值,您可以对所有应用资源进行分组,并为运营团队添加重要的元数据。创建、修改和删除 YAML 文件不会影响现有资源,因此您可以立即使用资源,而不会给系统带来风险。

为了演示此页面,本教程介绍了如何针对应用实现 Kubernetes 应用资源,以及如何添加用户定义的元数据,以便在 GKE 中整理和简化应用的管理。

本教程适用于创建要在 GKE 中运行的应用的开发者。本文假定您熟悉基本的 Kubernetes 概念,并具有编写 Kubernetes 资源 YAML 文件的经验。

目标

  • 介绍 Kubernetes 应用资源。
  • 将 Kubernetes 应用资源添加到现有架构。
  • 通过 Cloud Console 创建和查看关于应用的自定义信息。

费用

本教程使用 Google Cloud 的以下收费组件:

您可使用价格计算器根据您的预计使用量来估算费用。 Google Cloud 新用户可能有资格申请免费试用

完成本教程后,您可以删除所创建的资源以避免继续计费。如需了解详情,请参阅清理

准备工作

  1. 在 Google Cloud Console 的项目选择器页面上,选择或创建一个 Google Cloud 项目。

    转到“项目选择器”

  2. 确保您的 Cloud 项目已启用结算功能。 了解如何确认您的项目是否已启用结算功能

  3. 启用 Compute Engine and Kubernetes Engine API。

    启用 API

  4. 在 Cloud Console 中,激活 Cloud Shell。

    激活 Cloud Shell

    您可以在 Cloud Shell 或 Cloud Shell 编辑器中运行本教程的命令。

准备环境

  1. 在 Cloud Shell 中,为您的项目设置环境变量:

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

    PROJECT_ID 替换为您的 Google Cloud 项目 ID。

  2. 创建 GKE 集群。

    gcloud container clusters create sample-cluster
    

    在本教程中,您将在默认 GKE 集群中运行应用。

安装示例应用

在本教程中,您将使用基本的 Nginx 示例应用和 Bank for Anthos 示例应用来模拟多个应用在一个命名空间中运行。

  1. 在 Cloud Shell 中,安装 Nginx 示例应用:

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

    此命令会创建名为 web 的 StatefulSet 资源和名为 nginx 的服务。在 Cloud Console 中,您可以在 GKE 工作负载以及服务和入站流量页面上查看这些资源。

  2. 克隆包含 Bank of Anthos 示例应用的 GitHub 代码库:

    git clone https://github.com/GoogleCloudPlatform/bank-of-anthos.git
    cd bank-of-anthos
    
  3. 生成 SSH 密钥并将其存储为 Kubernetes Secret:

    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
    

    Bank of Anthos 示例应用需要 SSH 密钥才能运行。

  4. 将示例应用部署到您的集群:

    kubectl apply -f kubernetes-manifests
    

    片刻之后,您可以在 Cloud Console 中的以下页面上查看应用资源:

    注意事项:

    • Nginx 和 Bank of Anthos 示例应用的资源相互干扰。
    • 应用页面上目前尚未显示任何资源。在后续步骤中,您将在应用页面中填充内容。

准备 GKE

应用页面显示的资源是使用 Kubernetes 应用资源类型指定的,这是由开源 Kubernetes 项目提供的自定义资源定义 (CRD)。默认情况下,Kubernetes 中未启用应用 CRD。GKE 中的一些服务(例如 Marketplace 和应用部署)会安装应用 CRD,但如果您不使用上述服务中的任何一项,则默认情况下应用 CRD 不可用。

如需安装应用 CRD,请执行以下操作:

  1. 在 Cloud Shell 中,在每个集群上应用一次应用 CRD:

    kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/application/master/deploy/kube-app-manager-aio.yaml
    
  2. (可选)命令完成后,查看集群上的应用 CRD:

    kubectl get crd
    

    以下输出是已安装 CRD 的列表,其中包括 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
    

添加应用资源

现在,应用 CRD 已在集群中提供,下一步是创建和部署应用资源实例。

由于应用资源是一种 Kubernetes 资源,因此它的结构类似于其他 Kubernetes 资源,其中包括 apiVersionkindmetadataspec 的字段和选项:

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

在以下各部分中,您将使用应用资源中提供的各种字段和选项。

创建基本应用资源

您可以将应用资源添加到任何现有资源集中。在本教程中,您将从一个空资源入手,并填写每个部分。

  1. 在 Cloud Shell 中,在 kubernetes-manifests 目录中创建和修改 application.yaml 文件:

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

    Cloud Shell 编辑器将打开并显示一个空白文件。

  2. 粘贴以下行以定义您的第一个应用:

    apiVersion: app.k8s.io/v1beta1
    kind: Application
    metadata:
      name: "bank-of-anthos"
    
  3. 在 Cloud Shell 菜单栏上,点击打开终端

  4. 在 Cloud Shell 中,应用资源:

    kubectl apply -f kubernetes-manifests/application.yaml
    
  5. 在 Cloud Console 中,转到应用页面。

    转到“应用”

    应用页面会显示您添加的资源:

    Bank of Anthos 应用包含在应用列表中。

按组件包含资源

应用页面会显示 Bank of Anthos 应用。名称字段中点击 bank-of-aloalto 后,您会看到有关该应用的基本信息:

应用详细信息包括集群、命名空间和创建日期。

您可以添加要在 Cloud Console 中显示的各种组件类型。例如,如需显示 Service、Deployment 和 StatefulSet,请修改 application.yaml 定义的 componentKinds 部分,如下所示:

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

在以下步骤中,将这些组件添加到 Bank for Anthos 资源定义:

  1. 在 Cloud Shell 菜单栏上,点击打开编辑器

  2. 在 Cloud Shell 编辑器中,通过粘贴以下内容覆盖 kubernetes-manifests/application.yaml 文件的内容:

    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
    

    添加 spec 部分会将 ServiceDeploymentStatefulSet 添加到应用定义中。

  3. 在 Cloud Shell 中,应用资源:

    kubectl apply -f kubernetes-manifests/application.yaml
    
  4. 在 Cloud Console 中,转到 Bank for Anthos 应用的详细信息页面。

    转到 Bank for Anthos 详细信息

    这时会显示指定类型的组件:

    详细信息列表包含 Service 和 Deployment 等组件类型。

使用选择器过滤资源

在本教程的这个阶段,组件列表包括整个命名空间中适用于所定义组件集的两个示例应用的所有资源。例如,下图显示了来自 Nginx 示例应用的 nginx Service,以及来自 Bank of Anthos 示例应用的 transactionhistory Deployment:

组件列表是根据命名空间中的所有应用生成的。

为确保仅显示一个应用的资源(例如,仅显示 Bank of Anthos 应用的资源),您可以使用选择器来识别特定资源。如需查看选择器的工作原理,请按照以下步骤为资源添加标签:

  1. 在 Cloud Shell 中,打开 frontend.yaml 文件:

    edit kubernetes-manifests/frontend.yaml
    
  2. 在 Cloud Shell 编辑器中,将以下 label 条目粘贴到第 18 行之后:

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

    metadata 部分如下所示:

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

    已完成的 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
    
  3. 在 Cloud Shell 中,应用资源:

    kubectl apply -f kubernetes-manifests/
    
  4. 在 Cloud Console 中,转到 Bank for Anthos 应用的详细信息页面。

    转到 Bank for Anthos 详细信息

    这时只会显示与特定标签相匹配的资源:

    组件列表显示 Deployment 资源。

将标签应用于具有 kustomize 的所有资源

手动为应用中的每个资源应用标签可能很繁琐。以下步骤演示了如何使用 kustomize 有效地为所有资源添加标签:

  1. 在 Cloud Shell 中,下载 kustomize

    curl -s "https://raw.githubusercontent.com/\
    kubernetes-sigs/kustomize/master/hack/install_kustomize.sh" | bash
    
  2. 创建和修改 kustomization.yaml 文件:

    touch kubernetes-manifests/kustomization.yaml
    edit kubernetes-manifests/kustomization.yaml
    
  3. 在 Cloud Shell 编辑器中,将以下行添加到 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"
    

    在此 kustomization.yaml 定义中,您指定要在哪些资源中应用修改以及要进行哪些修改。在本示例中,您将指定所有资源应具有通用标签 app.kubernetes.io/name: "bank-of-anthos"

  4. 在 Cloud Shell 中,删除旧资源:

    kubectl delete -f kubernetes-manifests/
    

    应用 kustomization.yaml 中指定的新资源之前,必须先删除旧资源。

  5. 使用 kustomize 标志(而非 file 标志)应用资源:

    ./kustomize build kubernetes-manifests/ | kubectl apply -f -
    
  6. 在 Cloud Console 中,转到 Bank for Anthos 应用的详细信息页面。

    转到 Bank for Anthos 详细信息

    该详细信息页面显示 Bank for Anthos 示例应用的资源,且没有来自 Nginx 示例应用的资源:

    其中仅显示 Bank of Anthos 组件,例如 StatefulSet。

在显示区中添加有用的元数据

您可以在 Cloud Console 中显示应用的自定义元数据。您可以添加应用的用途、所有者、找到应用详细信息的位置以及登录方式。此类信息适用于各种使用场景,例如,您在组织内运行多个应用时。

以下各部分介绍了您可以添加的一些元数据。

添加说明和文档

您可以添加将在应用信息面板中显示的说明和链接。如需从详细信息页面访问此面板,请点击显示信息面板

如需在此面板中显示信息,您可以在 application.yaml 文件的 descriptor 部分中定义 descriptionlinks 等元素。

descriptor:
    description:
    links:
    - description:
      url:

如需更新 descriptor 部分,请执行以下操作:

  1. 在 Cloud Shell 编辑器中,通过粘贴以下内容覆盖 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:
        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. 在 Cloud Shell 中,部署应用资源:

    kubectl apply -f kubernetes-manifests/application.yaml
    
  3. 在 Cloud Console 中,转到 Bank for Anthos 应用的详细信息页面。

    转到 Bank for Anthos 详细信息

  4. 如需查看更新,请点击显示信息面板

    应用信息面板会显示说明和文档列表:

    列表中的文档采用超链接格式。

包含软件类型

应用页面包括应用列表中软件类型的字段(软件)。您可以自定义此字段,以便根据需要对应用进行整理和分类。例如,您可以指明软件是内部还是外部的。或者,如果您根据共享基本类型构建了多个应用,则可以指明应用实现的基本类型。

如需向软件类型添加自定义说明,请使用 application.yaml 文件的 descriptor 部分中的 type 字段:

 descriptor:
    type: External App

您可以在 Cloud Console 中将 type 的值显示为超链接。您可以使用 links 部分中的第一个条目来指定超链接的网址。在以下步骤中,您将更新 links 部分,如下所示:

    links:
    - description: 'Bank of Anthos GitHub Repository'
      url: https://github.com/GoogleCloudPlatform/bank-of-anthos
  1. 在 Cloud Shell 编辑器中,通过粘贴以下内容覆盖 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. 在 Cloud Shell 中,部署应用资源:

    kubectl apply -f kubernetes-manifests/application.yaml
    
  3. 在 Cloud Console 中,转到应用页面。

    转到“应用”

    外部应用显示在软件字段中:

    外部应用的软件类型采用超链接格式。

包含应用版本

应用页面包括版本字段。实际上,此字段的值会以编程方式进行更新,以引用已部署的实际版本。

如需填充版本字段,您可以在 descriptor 下添加 version 字段,如下例所示:

  descriptor:
    type: External App
    version: "2.3.2"

在以下步骤中,您将为应用版本添加字段。

  1. 在 Cloud Shell 编辑器中,通过粘贴以下内容覆盖 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
    
  2. 在 Cloud Shell 中,部署应用资源:

    kubectl apply -f kubernetes-manifests/application.yaml
    
  3. 在 Cloud Console 中,转到应用页面。

    转到“应用”

    Bank for Anthos 应用的版本字段显示为 2.3.2

    应用的详细信息包括软件类型和版本字段。

添加维护人员详细信息

在此步骤中,您将向应用页面的主部分添加自定义静态文本。您可以在 application.yaml 文件的 info 部分中指定这些详细信息,如下所示:

  info:
  - name: LABEL
    value: STRING

如需添加静态值,请在 info 部分中提供 LABELSTRING 的详细信息。例如,您可以为 name 输入 Owner,为 value 输入 John Smith

  1. 在 Cloud Shell 编辑器中,通过粘贴以下内容覆盖 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. 在 Cloud Shell 中,部署应用资源:

    kubectl apply -f kubernetes-manifests/application.yaml
    
  3. 在 Cloud Console 中,转到 Bank for Anthos 应用的详细信息页面。

    转到 Bank for Anthos 详细信息

    该详情页面包含 Bank for Anthos 应用的所有者:

    John Smith 被列为所有者。

公开应用端点

除静态值外,您还可以公开 Deployment 本身中的动态值。在以下步骤中,您会看到负载平衡器 IP 地址,以便查看应用详细信息页面的任何人均可直接访问应用。

如需呈现此值,请使用 serviceRef 规范。其他有效的规范包括:configMapKeyRefingressRefsecretKeyRef

serviceRef 规范中,您可以使用 Reference 类型添加这些动态值。在本教程中,serviceRef 规范如下所示:

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

您可以替换以下值:

  • LABEL:描述特定引用实例的标签,例如 App Frontend URL
  • SERVICE_NAME:用于识别 Service $mdash 的名称;例如 frontend
  • DATA_LOCATION:Service 中的数据位置,例如 status.loadBalancer.ingress[0].ip

serviceRefingressRef 规范还支持 path 元素。如果您的网址需要路径相关详细信息,请在 path 字段中添加这些详细信息:

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

端点 IP 地址和路径串联,例如 35.202.90.0/wp-admin

您还可以通过使用 protocol 字段来强制使用 HTTP 或 HTTPS,如下所示:

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

这些详细信息会生成以下网址:

https://35.202.90.0/wp-admin

在以下步骤中,您将使用 serviceRef 公开 Bank of Anthos 应用的 Service 负载平衡器 IP 地址:

  1. 在 Cloud Shell 编辑器中,使用以下代码覆盖 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
      - name: App Frontend URL
        type: Reference
        valueFrom:
          serviceRef:
            name: frontend
            fieldPath: status.loadBalancer.ingress[0].ip
            protocol: HTTPS
    
  2. 在 Cloud Shell 中,部署应用资源:

    kubectl apply -f kubernetes-manifests/application.yaml
    
  3. 在 Cloud Console 中,转到 Bank for Anthos 应用的详细信息页面。

    转到 Bank for Anthos 详细信息

    该详细信息页面包括 Bank of Anthos 应用的端点 IP 地址:

    该 IP 地址标记有应用前端网址。

提供访问凭据

如前所述,您可以使用 secretKeyRef 元素通过 Cloud Console 公开 Kubernetes Secret。在本教程中,您需要为操作员提供用户名和密码,以便可以登录应用。

  1. 在 Cloud Shell 中,创建 Secret:

    kubectl create secret generic boa-access --from-literal=boa-user=testuser --from-literal=boa-pass=password
    
  2. 在 Cloud Shell 编辑器中,通过粘贴以下内容覆盖 application.yaml 文件的内容。此更新包含对 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. 在 Cloud Shell 中,部署应用资源:

    kubectl apply -f kubernetes-manifests/application.yaml
    
  4. 在 Cloud Console 中,转到 Bank for Anthos 应用的详细信息页面。

    转到 Bank for Anthos 详细信息

  5. 点击预览 Secret 数据。系统会显示用户名和密码:

    应用详细信息包括用于访问凭据的链接。

能够显示 Secret 数据对于运营团队而言是一项实用功能。不过,能否查看这些 Secret 取决于 GKE 详细信息页面的 Identity and Access Management (IAM) 访问权限。有权查看集群的任何人也可以查看 Secret,因此请务必仔细考虑公开的内容。

添加应用图标

为了让您的应用显而易见,您可以添加应用列表和详细信息页面上显示的徽标。如需添加徽标,请在 kubernetes-engine.cloud.google.com/icon 注解中指定图片的数据 URI

将图片转换为数据 URI 不在本教程的讨论范围内。不过,通过 Google 搜索“将图片转换为数据 URI”会返回各种实用程序,可帮助您根据图片生成数据字符串。由于本部分中使用的图片的数据 URI 很长,因此在本教程中添加该 URI 是不切实际的。您可以在已完成的 application.yaml 文件中看到完整的数据 URI。数据 URI 字符串的开头应如 data:image/png;base64,iVBORw0KGgoAAAANSUhEUg.... 所示,并以 K5CYII= 结尾。请勿包含任何尾随英文引号或 HTML 字符。

已完成的 application.yaml 文件可用作 gist,供您参考。

如需添加图标,请更新 application.yamlmetadata 部分:

  1. 复制以下代码:

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

    DATA_URI 替换为在前面引用的完整 application.yaml 文件中发现的字符串。

  2. 在 Cloud Shell 编辑器中,粘贴您在 application.yamlmetadata 部分中的 labels 部分后复制的代码。

    application.yaml 的该部分类似于以下内容,其中 DATA_URI 表示数据 URI 值。

    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. 在 Cloud Shell 中,部署应用资源:

    kubectl apply -f kubernetes-manifests/application.yaml
    
  4. 在 Cloud Console 中,转到应用页面。

    转到“应用”

    应用列表中会显示一个徽标:

    徽标显示在应用列表中的应用名称的旁边。

  5. 在 Cloud Console 中,转到 Bank for Anthos 应用的详细信息页面。

    转到 Bank for Anthos 详细信息

    该详细信息页面的标题中会显示一个徽标:

    徽标将显示在应用详细信息列表的顶部。

清理

为避免因本教程中使用的资源而导致您的 Google Cloud 帐号产生费用,您可以删除为本教程创建的 Google Cloud 项目。

删除项目

  1. 在 Cloud Console 中,转到管理资源页面。

    转到“管理资源”

  2. 在项目列表中,选择要删除的项目,然后点击删除
  3. 在对话框中输入项目 ID,然后点击关闭以删除项目。

后续步骤

  • click-to-deploy GitHub 代码库的 Kubernetes 文件夹中查看 application.yaml 文件的其他示例。对于各种应用(例如,此文件中所示),在 chart/<application>/templates/ 下查找其他 application.yaml 文件。
  • 针对 Google GKE 的一键部署式解决方案使用 Marketplace 部署
  • 探索有关 Google Cloud 的参考架构、图表、教程和最佳做法。查看我们的云架构中心