Cloud Console で GKE アプリケーション ページを使用する

このチュートリアルでは、Google Cloud Console で Google Kubernetes Engine(GKE)アプリケーション ページを使用する方法を説明します。

多くのアプリケーションやリソースに Kubernetes を導入すると、1 つのアプリケーションに関連するさまざまなコンポーネントを特定して追跡することが困難になる場合があります。各名前空間に複数のアプリケーションをデプロイする場合、どのリソースがどのアプリケーションに関連しているのか判断するのは難しいことがあります。また、アプリケーションの概要、所有者、サービスの操作方法を説明するドキュメントやメタデータを複数のロケーションで検索することもよくあります。

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 Editor で実行します。

環境の準備

  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 of 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 のワークロードService と Ingress のページで、これらのリソースを表示できます。

  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 Application リソースタイプ(オープンソースの Kubernetes プロジェクトが提供するカスタム リソース定義、CRD)によって指定されます。デフォルトでは、Application CRD は Kubernetes で有効になっていません。GKE の一部のサービス(Marketplace や Application Deployment など)では Application CRD がインストールされますが、これらのサービスを使用していない場合、デフォルトではそれらの Application CRD を使用できません。

Application CRD をインストールするには、次の手順を行います。

  1. Cloud Shell で、クラスタごとに Application CRD を 1 回適用します。

    kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/application/master/deploy/kube-app-manager-aio.yaml
    
  2. (省略可)コマンドが完了したら、クラスタの Application CRD が表示されます。

    kubectl get crd
    

    次の出力は、applications.app.k8s.io を含むインストール済みの CRD のリストです。

    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
    

アプリケーション リソースを含める

これで、クラスタで Application CRD が使用可能になりました。次のステップでは、Application リソースのインスタンスを作成してデプロイします。

Application リソースは Kubernetes リソースであるため、apiVersionkindmetadataspec のフィールドとオプションを含む他の Kubernetes リソースと同様の構造になります。

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

以降のセクションでは、Application リソースで使用可能なさまざまなフィールドとオプションについて説明します。

ベースとなる Application リソースを作成する

Application リソースは、既存の任意のリソースセットに追加できます。このチュートリアルでは、空のリソースから始めて、各セクションに入力します。

  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-anthos] をクリックすると、アプリケーションの基本情報が表示されます。

アプリケーションの詳細にはクラスタ、名前空間、作成日が含まれます。

Cloud Console に表示するさまざまなタイプのコンポーネントを追加できます。たとえば、Service、Deployment、StatefulSet を表示するには、application.yaml 定義の componentKinds セクションを次のように編集します。

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

次の手順では、これらのコンポーネントを Bank of 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 of Anthos アプリケーションの詳細ページに移動します。

    Bank of 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 of Anthos アプリケーションの詳細ページに移動します。

    Bank of 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. file フラグの代わりに kustomize フラグを使用してリソースを適用します。

    ./kustomize build kubernetes-manifests/ | kubectl apply -f -
    
  6. Cloud Console で、Bank of Anthos アプリケーションの詳細ページに移動します。

    Bank of Anthos の詳細に移動

    詳細ページには、Bank of Anthos サンプル アプリケーションのリソースが表示され、Nginx サンプル アプリケーションのリソースは表示されません。

    StatefulSet、Bank of Anthos コンポーネントのみが表示されます。

有用なメタデータを画面に表示する

アプリケーションのカスタム メタデータは 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 で、Application リソースをデプロイします。

    kubectl apply -f kubernetes-manifests/application.yaml
    
  3. Cloud Console で、Bank of Anthos アプリケーションの詳細ページに移動します。

    Bank of Anthos の詳細に移動

  4. 更新内容を確認するには、[情報パネルを表示] をクリックします。

    [アプリケーション情報] パネルに、説明とドキュメントのリストが表示されます。

    リスト内のドキュメントはハイパーリンクとしてフォーマットされます。

ソフトウェア タイプを含める

[アプリケーション] ページのアプリケーション リストに、ソフトウェア タイプに対応するフィールド(ソフトウェア)が表示されます。このフィールドをカスタマイズすることで、必要に応じてアプリケーションの整理や分類ができます。たとえば、ソフトウェアが内部または外部であることを示します。共有ベースタイプから構築された複数のアプリがある場合は、アプリケーションで実装されているベースタイプを示すこともできます。

ソフトウェアの種類に説明を追加するには、application.yaml ファイルの descriptor セクションの type フィールドを使用します。

 descriptor:
    type: External App

type の値は、Cloud Console のハイパーリンクとして表示できます。links セクションの最初のエントリを使用して、ハイパーリンクの URL を指定します。次の手順では、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 で、Application リソースをデプロイします。

    kubectl apply -f kubernetes-manifests/application.yaml
    
  3. Cloud Console で、[アプリケーション] ページに移動します。

    [アプリケーション] に移動

    External App」が [ソフトウェア] フィールドに表示されます。

    ソフトウェア タイプ「External App」はハイパーリンクとしてフォーマットされます。

アプリケーションのバージョンを含める

メインの [アプリケーション] ページには、バージョン用のフィールドがあります。このフィールドの値は、デプロイされた実際のバージョンを参照するようにプログラムで更新されます。

バージョン フィールドに入力するには、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 で、Application リソースをデプロイします。

    kubectl apply -f kubernetes-manifests/application.yaml
    
  3. Cloud Console で、[アプリケーション] ページに移動します。

    [アプリケーション] に移動

    Bank of 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 で、Application リソースをデプロイします。

    kubectl apply -f kubernetes-manifests/application.yaml
    
  3. Cloud Console で、Bank of Anthos アプリケーションの詳細ページに移動します。

    Bank of Anthos の詳細に移動

    詳細ページに、Bank of 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 を識別する名前(例: frontend
  • DATA_LOCATION: Service 内のデータの場所(例: status.loadBalancer.ingress[0].ip

serviceRefingressRef 仕様も path 要素をサポートしています。URL にパスの詳細情報が必要な場合は、これらの詳細情報を 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

これらの詳細情報により、次の URL が生成されます。

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 で、Application リソースをデプロイします。

    kubectl apply -f kubernetes-manifests/application.yaml
    
  3. Cloud Console で、Bank of Anthos アプリケーションの詳細ページに移動します。

    Bank of Anthos の詳細に移動

    詳細ページに、Bank of Anthos アプリケーションのエンドポイント IP アドレスが表示されます。

    IP アドレスに「App Frontend URL」というラベルが付いています。

アクセス認証情報を指定する

前述のように、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 で、Application リソースをデプロイします。

    kubectl apply -f kubernetes-manifests/application.yaml
    
  4. Cloud Console で、Bank of Anthos アプリケーションの詳細ページに移動します。

    Bank of Anthos の詳細に移動

  5. [シークレット データをプレビュー] をクリックします。ユーザー名とパスワードが表示されます。

    アプリケーションの詳細に、アクセス認証情報のリンクが含まれています。

Secret データを公開する機能は運用チームにとって便利な機能です。ただし、これらの Secret を表示する権限は、GKE の詳細ページの Identity and Access Management(IAM)アクセス権限によって制御されます。クラスタを表示する権限を持つユーザーは Secret も表示できるため、公開対象は慎重に検討する必要があります。

アプリケーション アイコンを追加する

アプリケーションを目立たせるため、アプリケーション リストと詳細ページにロゴを表示してみましょう。ロゴを追加するには、kubernetes-engine.cloud.google.com/icon アノテーションで画像のデータ URI を指定します。

このチュートリアルでは、データ URI への変換について説明しません。ただし、Google で「画像をデータ URI に変換する」と検索すると、画像からデータ文字列の生成に役立つさまざまなユーティリティが見つかります。このセクションで使用する画像のデータ URI は長すぎるため、このチュートリアルでの使用に適していません。完全なデータ URI は、完成した application.yaml ファイルで確認できます。データ 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 で、Application リソースをデプロイします。

    kubectl apply -f kubernetes-manifests/application.yaml
    
  4. Cloud Console で、[アプリケーション] ページに移動します。

    [アプリケーション] に移動

    アプリケーションのリストにロゴが表示されます。

    アプリケーションのリストでアプリケーション名の横にロゴが表示されています。

  5. Cloud Console で、Bank of Anthos アプリケーションの詳細ページに移動します。

    Bank of Anthos の詳細に移動

    詳細ページのヘッダーにロゴが表示されます。

    アプリケーションの詳細リストの上部にロゴが表示されています。

クリーンアップ

このチュートリアルで使用したリソースについて、Google Cloud アカウントに課金されないようにするには、このチュートリアルで作成した Google Cloud プロジェクトを削除します。

プロジェクトの削除

  1. Cloud Console で [リソースの管理] ページに移動します。

    [リソースの管理] に移動

  2. プロジェクト リストで、削除するプロジェクトを選択し、[削除] をクリックします。
  3. ダイアログでプロジェクト ID を入力し、[シャットダウン] をクリックしてプロジェクトを削除します。

次のステップ

  • click-to-deploy GitHub リポジトリの Kubernetes フォルダにある application.yaml ファイルのその他の例を確認する。さまざまなアプリの chart/<application>/templates/ にある他の application.yaml ファイルを探します(たとえば、このファイル)。
  • Marketplace を使用して、GKE 用の Google クリック デプロイ ソリューションをデプロイする。
  • Google Cloud に関するリファレンス アーキテクチャ、図、チュートリアル、ベスト プラクティスを確認する。Cloud Architecture Center を確認します。