ログイン

このページでは、Google Distributed Cloud(GDC)エアギャップ内でワークロードとリソースにアクセスして管理する方法について説明します。認証方法、ゾーンリソースとグローバル リソースの kubeconfig ファイルの生成方法、セッションの非アクティブ状態の管理方法について説明します。これらのプロセスを理解することで、プロジェクトとワークロードへの安全で信頼性の高いアクセスが保証されます。

このページは、GDC リソースを使用するプラットフォーム管理者グループ(IT 管理者など)またはアプリケーション オペレーター グループ(アプリケーション デベロッパーなど)のユーザーを対象としています。詳細については、GDC エアギャップの対象読者に関するドキュメントをご覧ください。

ワークロードには、GDC コンソール、gdcloud CLI、kubectl CLI を使用してアクセスできます。

アクセス用にアカウントを認証する

GDC コンソールまたはクラスタにログインするには、次の手順を行います。

コンソール

次の URL を新しいブラウザタブで開いて、Distributed Cloud ユーザー インターフェース(UI)にアクセスします。

https://GDC_URL

GDC_URL は、Infrastructure Operator(IO)が提供する Distributed Cloud へのアクセスに使用するドメイン名に置き換えます。URL を初めて開くと、Infrastructure Operator(IO)がページを構成している場合、Distributed Cloud は ID プロバイダのログイン ページにリダイレクトします。

たとえば、次の画像は、org-1 という名前の組織のコンソール UI にログインしています。

org-1 プロジェクトのウェルカム画面を示すコンソール UI。

CLI

gdcloud CLI にログインするときは、gdcloud auth login コマンドを使用して、gdcloud CLI に対するプリンシパルを認証します。gdcloud CLI は、そのプリンシパルを使用して、 Google Cloud のリソースとサービスを管理するための認証と認可を行います。

ログインする前に、次のことを確認してください。

  • gdcloud CLI バイナリをダウンロードして、システムにインストールします。詳細については、gdcloud CLI をダウンロードするをご覧ください。
  • gdcloud CLI のデフォルト構成を設定して初期化します。ログイン構成エンドポイントの取得に使用される正しい組織 URL を設定してください。詳細については、gdcloud CLI のインストールをご覧ください。
  • 認証プラグイン gdcloud-k8s-auth-plugin をインストールします。詳細については、gdcloud CLI 認証をご覧ください。

Management API サーバーまたは Kubernetes クラスタにログインする手順は次のとおりです。

  • Management API サーバー:
  1. Management API サーバーの kubeconfig ファイルを保存するパスをエクスポートします。

    export KUBECONFIG=MANAGEMENT_API_SERVER
    

    MANAGEMENT_API_SERVER は、kubeconfig ファイルを保存するディレクトリのパスに置き換えます。

  2. gdcloud CLI インスタンスを認証してログインします。認証には次の 2 つの方法があります。

    • 標準のブラウザ ログイン: ブラウザからログインするときにこの認証フローを使用します。

      gdcloud auth login
      
    • セカンダリ デバイスのログイン: メイン デバイスでブラウザを使用できない場合は、この認証フローを使用します。このフローでは、ブラウザ アクセス権のないプライマリ デバイスでログインを開始し、ブラウザ アクセス権のあるセカンダリ デバイスでログインを続行します。

      ブラウザのないメインのデバイスでログインを開始します。

      gdcloud auth login --no-browser
      

      KUBECONFIG 環境変数は、組織内のすべての API サーバーとクラスタの kubeconfig ファイルで更新されます。KUBECONFIG 変数が設定されていない場合、kubectl CLI は $HOME/.kube/config に保存されているデフォルトの kubeconfig ファイルを使用します。

      kubeconfig ファイルの編集をスキップするには、コマンドに --skip-kubeconfig-update フラグを追加します。次に例を示します。

      gdcloud auth login --no-browser --skip-kubeconfig-update
      

      出力された gdcloud CLI コマンド出力をコピーし、ブラウザ アクセス権のあるマシンで実行します。

  3. ウェブページの手順に沿ってログインを完了します。

    ログインが正常に完了すると、ブラウザに「認証に成功しました。このウィンドウを閉じてください

  4. ターミナルの指示に沿って操作します。ログインに成功すると、ターミナルに「You are now logged in」というメッセージが表示されます。

  • Kubernetes クラスタ:
  1. gdcloud CLI インスタンスを認証してログインします。認証には次の 2 つの方法があります。

    • 標準のブラウザ ログイン: ブラウザからログインするときにこの認証フローを使用します。

      gdcloud auth login
      
    • セカンダリ デバイスのログイン: メイン デバイスでブラウザを使用できない場合は、この認証フローを使用します。このフローでは、ブラウザ アクセス権のないプライマリ デバイスでログインを開始し、ブラウザ アクセス権のあるセカンダリ デバイスでログインを続行します。

      1. ブラウザのないメインのデバイスでログインを開始します。

        gdcloud auth login --no-browser
        

        プライマリ デバイスのコマンドは、手順 c でセカンダリ デバイスで実行する必要がある別の gdcloud コマンドを出力します。

      2. 手順 1 を繰り返して、セカンダリ デバイスに証明書をダウンロードします。

      3. 手順 a でメインのデバイスに表示されたコマンドを入力して、セカンダリ デバイスでのログインを完了します。

    この操作により、構成された ID プロバイダ(IdP)にログインするためのブラウザが開きます。ログインするには、gdcloud CLI の初期設定時に設定したユーザーとパスワードを指定します。

  2. ユーザー ID kubeconfig ファイルを変数としてエクスポートします。

    export KUBECONFIG=/tmp/admin-kubeconfig-with-user-identity.yaml
    
  3. ユーザー ID を使用して kubeconfig ファイルを生成します。

    gdcloud clusters get-credentials CLUSTER_NAME --zone ZONE
    

    ZONE は、ゾーン名に置き換えます。

    kubeconfig ファイルがユーザー ID で生成されます。次の YAML ファイルは、例を示しています。

    apiVersion: v1
    clusters:
    - cluster:
      certificate-authority-data: <REDACTED>
      server: https://10.200.0.32:443
    name: cluster-name
    contexts:
    - context:
      cluster: cluster-name
      user: cluster-name-anthos-default-user
    name: cluster-name-cluster-name-anthos-default-user
    current-context: cluster-name-cluster-name-anthos-default-user
    kind: Config
    preferences: {}
    users:
    - name: cluster-name-anthos-default-user
    user:
      exec:
        apiVersion: client.authentication.k8s.io/v1
        args:
        - --audience=root-admin
        command: gdcloud-k8s-auth-plugin
        env: null
        installHint: Run 'gdcloud components install gdcloud-k8s-auth-plugin' to use plugin
        interactiveMode: Never
        provideClusterInfo: false
    
  4. クラスタにアクセスできることを確認するには、生成された kubeconfig ファイルを使用してユーザー ID でログインします。

    kubectl --kubeconfig /tmp/admin-kubeconfig-with-user-identity.yaml version
    

ログアウト

GDC コンソールからログアウトするには、次の操作を行います。

コンソール

メニューバーの [ログアウト] をクリックします。

CLI

CLI からログアウトします。

gdcloud auth revoke

kubeconfig ファイルを手動で生成する

KRM API を直接呼び出して kubectl CLI でリソースを管理している場合は、管理するリソースのタイプに応じて、リソースをホストするクラスタまたは API サーバーの kubeconfig ファイルを生成する必要があります。

また、GDC ユニバースの構成を把握して、ゾーンリソースをデプロイするゾーン、またはグローバル リソースのグローバル API サーバーを決定する必要があります。詳細については、グローバル API サーバーとゾーン API サーバーをご覧ください。

操作するリソースがグローバル リソースかゾーンリソースかを判断します。不明な場合は、リソースの専用ドキュメントをご覧ください。

リソースタイプに基づいて、該当する設定を完了します。

ゾーン Management API サーバー リソース

ゾーン Management API サーバーの kubeconfig ファイルを生成する手順は次のとおりです。

  1. 利用可能なすべてのゾーンを表示します。

    gdcloud zones list
    

    カスタム リソースをホストするゾーンの名前をメモします。

  2. ZONE 環境変数を、ゾーンリソースをホストするゾーンに設定します。

    export ZONE="ZONE"
    

    ZONE は、ゾーン名に置き換えます。

  3. MANAGEMENT_API_SERVER 環境変数を設定します。

    export MANAGEMENT_API_SERVER="ORG_NAME-admin"
    

    ORG_NAME は、組織名(org-1 など)に置き換えます。

  4. ターゲット ゾーンの Management API サーバーの kubeconfig ファイルを生成し、認証情報を検証します。

    export KUBECONFIG=${HOME}/${MANAGEMENT_API_SERVER:?}-kubeconfig.yaml
    rm ${KUBECONFIG:?}
    gdcloud clusters get-credentials ${MANAGEMENT_API_SERVER:?} --zone ${ZONE:?}
    [[ $(kubectl config current-context) == *${MANAGEMENT_API_SERVER:?}* ]] && echo "Success. Your kubeconfig is at $KUBECONFIG" || echo "Failure"
    

    コマンド rm ${KUBECONFIG:?} は、ホーム ディレクトリ内の既存の kubeconfig ファイルを削除します。新しい kubeconfig ファイルを生成すると、既存のファイルが上書きされます。既存のファイルを上書きまたは削除したくない場合は、別の安全な場所にバックアップしてください。

ゾーン Kubernetes クラスタのリソース

ゾーン Kubernetes クラスタの kubeconfig ファイルを生成する手順は次のとおりです。

  1. 利用可能なすべてのゾーンを表示します。

    gdcloud zones list
    

    カスタム リソースをホストするゾーンの名前をメモします。

  2. ZONE 環境変数を Kubernetes クラスタをホストするゾーンに設定します。

    export ZONE="ZONE"
    

    ZONE は、ゾーン名に置き換えます。

  3. KUBERNETES_CLUSTER 環境変数を設定します。

    export KUBERNETES_CLUSTER="KUBERNETES_CLUSTER_NAME"
    

    KUBERNETES_CLUSTER_NAME は、Kubernetes クラスタの名前に置き換えます。

  4. ターゲット ゾーン変数に対して Kubernetes クラスタの kubeconfig ファイルを生成し、認証情報を検証します。

    export KUBECONFIG=${HOME}/${KUBERNETES_CLUSTER:?}-kubeconfig.yaml
    rm ${KUBECONFIG:?}
    gdcloud clusters get-credentials ${KUBERNETES_CLUSTER:?} --zone ${ZONE:?}
    [[ $(kubectl config current-context) == *${KUBERNETES_CLUSTER:?}* ]] && echo "Success. Your kubeconfig is at $KUBECONFIG" || echo "Failure"
    

    コマンド rm ${KUBECONFIG:?} は、ホーム ディレクトリ内の既存の kubeconfig ファイルを削除します。新しい kubeconfig ファイルを生成すると、既存のファイルが上書きされます。既存のファイルを上書きまたは削除したくない場合は、別の安全な場所にバックアップしてください。

グローバル API サーバー リソース

グローバル API サーバーの kubeconfig ファイルを生成する手順は次のとおりです。

  1. GLOBAL_API_SERVER 環境変数を設定します。

    export GLOBAL_API_SERVER="global-api"
    
  2. グローバル API サーバーの kubeconfig ファイルを生成し、認証情報を検証します。

    export KUBECONFIG=${HOME}/${GLOBAL_API_SERVER:?}-kubeconfig.yaml
    rm ${KUBECONFIG:?}
    gdcloud clusters get-credentials ${GLOBAL_API_SERVER:?}
    [[ $(kubectl config current-context) == *${GLOBAL_API_SERVER:?}* ]] && echo "Success. Your kubeconfig is at $KUBECONFIG" || echo "Failure"
    

    コマンド rm ${KUBECONFIG:?} は、ホーム ディレクトリ内の既存の kubeconfig ファイルを削除します。新しい kubeconfig ファイルを生成すると、既存のファイルが上書きされます。既存のファイルを上書きまたは削除したくない場合は、別の安全な場所にバックアップしてください。

セッションの非アクティブ ログアウト

セッションで 15 分以上操作がないと、GDC コンソールと gdcloud CLI からログアウトされます。Distributed Cloud では、セッションの非アクティブ状態は、開いているセッション中にカーソルやキーボードの操作など、ユーザーによるアクティブな操作がない期間と見なされます。アクティブ セッションは、ユーザー アクティビティがある場合、最大 12 時間継続します。

コンソール

セッションが非アクティブになると、GDC コンソールからログアウトされます。GDC コンソールが非アクティブ状態のためにログアウトする 2 分前に、ログアウトを警告するダイアログが表示されます。

操作がないためユーザーをログアウトするまでの残り時間を示す 99 秒のタイマーが表示されたダイアログを示すコンソール UI。

操作がないためログアウトすると、次の画面が表示されます。

セッションのログアウトに関するテキストを含むバナーが表示されたログイン画面を示すコンソール UI: 「セッションが長時間アクティブでなかったため、システムからログアウトされました。もう一度ログインするか、管理者にお問い合わせください。」

GDC コンソールに再度ログインするには、ID プロバイダを選択してログイン認証情報を追加します。モニタリング ダッシュボードなどのサービスを使用しているときに、GDC コンソールが非アクティブ状態のためにログアウトした場合は、再度ログインしてアクセスしてください。

gdcloud

セッションが非アクティブになると、gdcloud CLI からログアウトします。gdcloud CLI からログアウトした後、コマンドを実行しようとすると、承認エラーが発生します。

Error: error when creating kube client: unable to create k8sclient: Unauthorized

GDC に再度ログインするには、ログインの CLI 手順に沿って操作します。

Management API サーバーを介して GDC に再度ログインすると、kubeconfig ファイルが自動的に更新されます。kubeconfig ファイルが更新されないようにするには、gdcloud auth login コマンドで --skip-kubeconfig-update フラグを使用します。

kubectl

gdcloud CLI は、セッションが非アクティブになると kubeconfig ファイルを期限切れにします。非アクティブ状態の後に kubectl コマンドを実行しようとすると、認証エラーが発生します。

error: You must be logged in to the server (Unauthorized)

再度ログインして kubeconfig ファイルを使用するには、ログインの CLI の手順に沿って操作します。セッションがタイムアウトするたびに、kubeconfig ファイルを再生成する必要があります。

ログインと新規ユーザーのアクティビティをモニタリングする

ログインなどのアクティビティは監査ログとしてエクスポートされます。監査ログの表示の詳細については、監査ログをご覧ください。