このページでは、Google Distributed Cloud(GDC)エアギャップ プロジェクトを操作するときに、オブジェクト ストレージを管理するための gdcloud CLI をインストールして構成する方法について説明します。この分離された環境でストレージ バケットとオブジェクトを効果的に使用するために不可欠なコンポーネントと設定をダウンロード、インストール、構成する方法について説明します。
このページは、インフラストラクチャ オペレーター グループの IT 管理者や、アプリケーション オペレーター グループのデベロッパーなど、GDC エアギャップ環境内のプロジェクトにオブジェクト ストレージ バケットをプロビジョニングして管理することを検討している方を対象としています。詳細については、GDC エアギャップ ドキュメントの対象読者をご覧ください。
始める前に
ストレージ CLI をインストールして構成するには、IAM 組織管理者に連絡して、組織ネットワーク ポリシー管理者(org-network-policy-admin)ロールをリクエストします。これにより、組織ネットワーク ポリシーを作成、編集、削除できます。
gdcloud CLI をダウンロードする
gdcloud CLI をダウンロードするの手順に沿って、gdcloud CLI バンドル アーカイブをダウンロードして解凍します。bin/component_bundles/ ディレクトリを含まないスタンドアロンの gdcloud CLI バイナリは使用しないでください。
gdcloud CLI をインストールする
gdcloud storage コマンド グループを使用するには、抽出された gdcloud CLI バンドルから storage-cli-dependencies コンポーネントをインストールします。
gdcloud CLI をインストールするの手順に沿って、抽出したバンドルの
binディレクトリをPATHに追加します。storage-cli-dependenciesコンポーネントをインストールするには、次のコマンドを実行します。gdcloud components install storage-cli-dependenciesこのコマンドは、抽出された gdcloud CLI バンドルの
bin/component_bundles/ディレクトリからstorage-cli-dependenciesをインストールします。bin/component_bundles/がないスタンドアロンの gdcloud CLI バイナリからこのコマンドを実行すると、コマンドはcomponent_registry.yaml: no such file or directoryエラーで失敗します。このエラーを解決するには、gdcloud CLI をダウンロードするからバンドルをダウンロードして抽出し、抽出したバンドル ディレクトリからbin/gdcloudを実行します。components installコマンドの詳細については、コンポーネントをインストールするをご覧ください。
オブジェクト ストレージ用に gdcloud CLI を構成する
オブジェクト ストレージに gdcloud CLI を使用するには、次の構成を設定する必要があります。
ACCESS_KEY_IDは、アクセス認証情報の取得でシークレットから取得したアクセスキー ID に置き換えます。gdcloud config set storage/s3_access_key_id ACCESS_KEY_IDSECRET_ACCESS_KEYは、アクセス認証情報の取得でシークレットから取得したシークレット キーに置き換えます。gdcloud config set storage/s3_secret_access_key SECRET_ACCESS_KEYCA_BUNDLE_FILEは、CA 証明書のパスに置き換えます。これは、ID を保証する信頼できる組織である認証局(CA)に属するデジタル証明書です。GDC CA トラスト バンドルは、インフラストラクチャ オペレーター(IO)グループのメンバーにリクエストできます。GDC CA 証明書の取得の詳細については、GDC 信頼バンドルを取得するをご覧ください。gdcloud config set storage/s3_custom_ca_certs_file CA_BUNDLE_FILEENDPOINTは、インフラストラクチャ オペレーター(IO)が提供するエンドポイントに置き換えます。gdcloud config set storage/s3_endpoint ENDPOINTこの手順は、デュアルゾーン バケットの場合とは少し異なります。各デュアルゾーン バケットには、バケットへのアクセスに使用できる 3 つのエンドポイントが用意されています。ほとんどの場合、自動フェイルオーバーを利用するには、グローバル エンドポイントが適しています。
- zone1 エンドポイント: このエンドポイントは常に zone1 によって受信されます。このエンドポイントを使用すると、zone1 に書き込まれたオブジェクトに対して書き込み後読み取り整合性が確保されます。ただし、zone1 がダウンした場合、クライアントは zone2 またはグローバル エンドポイントを使用するように変更して、このバケットへの読み取り / 書き込みを続行する必要があります。クライアントがユーザー クラスタからアクセスしている場合、このエンドポイントには zone1 内からのみアクセスできます。
- zone2 エンドポイント: このエンドポイントは常に zone2 によって受信されます。このエンドポイントを使用すると、zone2 に書き込まれたオブジェクトに対して書き込み後読み取り整合性が確保されます。ただし、zone2 がダウンした場合、クライアントはこのバケットへの読み取り/書き込みを続行するために、zone1 またはグローバル エンドポイントを使用するように変更する必要があります。クライアントがユーザー クラスタからアクセスしている場合、このエンドポイントには zone2 内からのみアクセスできます。
- グローバル エンドポイント: このエンドポイントを使用すると、リクエストは zone1 または zone2 にルーティングされます。このオプションではセッション アフィニティが提供されません。つまり、同じセッションを使用して行われたリクエストが zone1 または zone2 のいずれかに到着する可能性があります。つまり、グローバル エンドポイントに対して行われたリクエストには、書き込み後の読み取り保証はありません。グローバル エンドポイントは、ゾーンがダウンした場合に自動フェイルオーバーを提供するため、ユーザーはゾーン エンドポイントを使用する場合のようにワークロードのエンドポイントを変更する必要がありません。また、このエンドポイントには、すべてのゾーンのユーザー クラスタからアクセスできます。
管理 API サーバーに対して次のコマンドを実行して、バケットのグローバル エンドポイントとゾーン エンドポイントを表示し、使用するエンドポイントを選択します。
kubectl get buckets BUCKET_NAME -n PROJECT_NAME -o jsonpath="{.status.globalEndpoint}" --kubeconfig MANAGEMENT_API_SERVER kubectl get buckets BUCKET_NAME -n PROJECT_NAME -o jsonpath="{.status.zonalEndpoints}" --kubeconfig MANAGEMENT_API_SERVER