スキル プロファイル: デプロイ エンジニア
オペレーターは、組織を作成して、プラットフォーム インフラストラクチャへのアクセスをお客様に提供できます。組織の作成に必要な権限を取得するには、組織管理者ロールを付与するようセキュリティ管理者に依頼してください。
Organization リソースは、Google Distributed Cloud(GDC)エアギャップ リソース階層のルートノードであり、組織に属するすべてのリソースは組織ノードの下にグループ化されます。これにより、組織に属するすべてのリソースを集中管理できます。
組織の詳細については、組織の概要をご覧ください。
1.1. 始める前に
以下がインストールされていることを確認します。
システム内のブラウザ。
Git コマンドライン インターフェース(CLI)。
kubectl CLI。
gdcloud CLI。
1.2. OC IT ADFS で OIDC クライアントを作成する
ADFS OIDC 構成の手順に沿って、作成する組織に Operator がアクセスできるように、ADFS で OpenID Connect(OIDC)クライアントを作成します。OIDC クライアントのクライアント ID とクライアント シークレットを記録します。ルート管理クラスタや他の組織管理クラスタなどの他のクラスタや、ServiceNow などのサービスへの接続でクライアントを再利用しないでください。
作成する組織用に作成した ADFS OIDC クライアントの許可リストに、次の GKE Identity Service コールバック URL を追加します。
https://ais-core.ORG_NAME.GDC_URL.GDC_DOMAIN/finish-login次に例を示します。
- 組織名:
operations - Distributed Cloud インスタンス名:
google - Distributed Cloud ドメイン名:
gdch.test
この場合の GKE Identity Service コールバック URL は
https://ais-core.operations.google.gdch.test/finish-loginです。- 組織名:
次の GKE Identity Service コールバック URL を、GDC ユニバースの各ゾーン用に作成した ADFS OIDC クライアントの許可リストに追加します。
https://ais-core.ORG_NAME.ZONE.GDC_URL.GDC_DOMAIN/finish-login次に例を示します。
- 組織名:
operations - ゾーン名:
zone-1 - Distributed Cloud インスタンス名:
google - Distributed Cloud ドメイン名:
gdch.test
この場合の GKE Identity Service コールバック URL は
https://ais-core.operations.zone-1.google.gdch.test/finish-loginです。- 組織名:
以降のセクションで使用する変数を設定します。
export ADFS_CERT_BASE64=ADFS_CERT_BASE64 export ADFS_CLIENT_ID=ADFS_CLIENT_ID export ADFS_CLIENT_SECRET=ADFS_CLIENT_SECRET export ADFS_ISSUER_URI=ADFS_ISSUER_URI変数を次の値に置き換えます。
変数 定義 ADFS_CERT_BASE64base64 でエンコードされた adfs.pemファイル。ADFS_CLIENT_IDADFS クライアント識別子。 ADFS_CLIENT_SECRETADFS クライアントの共有シークレット。 ADFS_ISSUER_URIADFS 発行者 URI。URI を取得するには、ADFS サーバーの /adfs/.well-known/openid-configurationパスを確認します。
curl -s https://fs.opscenter.local/adfs/.well-known/openid-configuration | jq '.issuer' "https://fs.opscenter.local/adfs"
通常、値はhttps://adfs.domain.com/adfsです。
1.3 グローバル サブネットを作成し、ゾーンごとに分割する
組織を作成する前に、グローバル ルート サブネットを作成し、IP アドレス管理(IPAM)パブリック API サブネットを使用して各ゾーンに分割する必要があります。以前に v1 組織が存在していたゾーンに新しい v2 組織を作成する場合は、グローバル サブネットを作成する前に、追加の前提条件のページをご覧ください。
グローバル ルート サブネットは、テナント組織内のすべてのクラスタ(組織のインフラストラクチャ クラスタやワークロード VM など)をブートストラップするために各ゾーンに分割されるルート IP アドレス範囲(CIDR)プールをホストします。IP アドレス範囲の小さな部分も、エニーキャスト IP アドレス プールとしてルート サブネットで使用できます。コントローラを使用して各ゾーンに専用 CIDR を自動的に割り当てることも、各ゾーンに CIDR を手動で指定することもできます。
組織をブートストラップするには、組織入力アンケート(OIQ)から内部 IP アドレス範囲の入力を取得する必要があります。これらの IP アドレス範囲を使用して、グローバル API サーバーにグローバル ルート サブネットを作成する必要があります。
グローバル API サーバーごとに異なるルート サブネットを作成する必要があります。OIQ フィールド、グローバル ルート サブネット名、グローバル API サーバーのマッピングについては、次のセクションで説明します。
1.3.1. OIQ の CIDR 範囲を定義する
CIDR 範囲は互いに重複することはできません。また、zone-infra-cidr と重複することもできません。
zone-infra-cidr は各ゾーンに存在し、お客様が定義した場合は、顧客インテーク アンケート(CIQ)から取得できます。
zone-infra-cidr を取得するには、次のコマンドを実行します。
kubectl --kubeconfig ROOT_ADMIN_KUBECONFIG get cidrclaim -n gpc-system zone-infra-cidr
YAML 出力の例を次に示します。
apiVersion: system.private.gdc.goog/v1alpha1
kind: CIDRClaim
metadata:
name: zone-infra-cidr
namespace: gpc-system
spec:
ipv4Spec:
staticCidrBlocks:
- 192.0.2.0/24
ipv6Spec:
staticCidrBlocks:
- 2001:db8::/32
status:
ipv4AllocationStatus:
cidrBlocks:
- 192.0.2.0/24
ipv6AllocationStatus:
cidrBlocks:
- 2001:db8::/32
この例では、zone-infra-cidr は 192.0.2.0/24 であるため、OIQ のフィールドは 192.0.2.0/24 と重複してはなりません。
次の表に、OIQ フィールドとそのデフォルトの最小値を示します。
| OIQ フィールド | 説明 | 必要最小限のサイズ | 組織のゾーンあたりの最小サイズ | グローバル ルート サブネット名 | グローバル API サーバー |
|---|---|---|---|---|---|
infraVPCCIDR |
組織コンソール、管理 API、ファーストパーティ サービスなどのシステム ワークロード。 | \( 15 - \lceil \log_2(ZoneNumber) \rceil \) | 16 | infra-vpc-root-cidr |
グローバル ルート |
defaultVPCCIDR |
ゾーン間のデフォルト VPC のユーザー ワークロードとエンドポイント。 | \( 16 - \lceil \log_2(ZoneNumber) \rceil \) | 16 | default-vpc-root-cidr |
グローバル組織 |
orgAdminExternalCIDR |
外部ネットワークと組織間の管理トラフィックを処理する境界クラスタ内のワークロードとエンドポイント。 | \( 22 - \lceil \log_2(ZoneNumber) \rceil \) | 23 | admin-external-root-cidr |
グローバル ルート |
orgDataExternalCIDR |
外部ロードバランサや下り(外向き)NAT など、ユーザーが外部からアクセスできるワークロードとエンドポイント。 | \( 22 - \lceil \log_2(ZoneNumber) \rceil \) | 23 | data-external-root-cidr |
グローバル ルート |
デフォルトの最小推奨値として十分な IP がない場合は、手動分割プロセスに沿って各ゾーンのサブネットを作成する必要があります。
IPv4 サブネット範囲には次の制限事項があります。
orgDataExternalCIDR、orgAdminExternalCIDR、infraVPCCIDR、defaultVPCCIDRは、相互に重複したり、組織内の他の割り当て済み範囲や、ピアリングされたネットワーク内の IPv4 範囲と重複したりしてはなりません。これらの CIDR は RFC 1918 プライベート アドレス空間から取得されます。ピアリングされたネットワーク: 相互接続アタッチメントを介して外部ネットワークでアドバタイズされたサブネット、または同じ組織内の他の VPC とピアリングされたサブネットを指定できます。
組織が同じ相互接続
AttachmentGroupリソースを共有している場合、orgDataExternalCIDR値とorgAdminExternalCIDR値は一意である必要があります。それ以外の場合は、他の組織との重複が許可されます。
1.3.2. グローバル ルート管理者 API サーバーにグローバル サブネットを作成する
組織を作成する前に、グローバル ルート管理者 API サーバーに次のサブネットを作成する必要があります。
infra-vpc-root-cidradmin-external-root-cidrdata-external-root-cidr
これらのサブネットは、各ゾーンで組織の組織インフラストラクチャ クラスタをブートストラップするために必要です。
組織に割り当てる組織名と一致する名前の Namespace が必要です。この Namespace が存在することを確認します。
kubectl --kubeconfig GLOBAL_ROOT_ADMIN_KUBECONFIG get namespaceこの Namespace が存在しない場合は、作成します。
kubectl --kubeconfig GLOBAL_ROOT_ADMIN_KUBECONFIG create namespace ORG_NAMEinfra-vpc-root-cidrサブネット YAML ファイル(ORG_NAME-infra-vpc-root-cidr.yamlなど)を作成します。apiVersion: ipam.global.gdc.goog/v1 kind: Subnet metadata: labels: ipam.gdc.goog/vpc: infra-vpc ipam.gdc.goog/usage: network-root-range annotations: ipam.gdc.goog/pivot-destination: global-org name: infra-vpc-root-cidr namespace: ORG_NAME spec: ipv4Request: cidr: INFRA_VPC_CIDR type: Rootadmin-external-root-cidrサブネット YAML ファイル(ORG_NAME-admin-external-root-cidr.yamlなど)を作成します。apiVersion: ipam.global.gdc.goog/v1 kind: Subnet metadata: labels: ipam.gdc.goog/network-segment: admin ipam.gdc.goog/usage: network-root-range annotations: ipam.gdc.goog/pivot-destination: global-org name: admin-external-root-cidr namespace: ORG_NAME spec: ipv4Request: cidr: ORG_ADMIN_EXTERNAL_CIDR type: Rootdata-external-root-cidrサブネット YAML ファイル(ORG_NAME-data-external-root-cidr.yamlなど)を作成します。apiVersion: ipam.global.gdc.goog/v1 kind: Subnet metadata: labels: ipam.gdc.goog/network-segment: data ipam.gdc.goog/usage: network-root-range annotations: ipam.gdc.goog/pivot-destination: global-org name: data-external-root-cidr namespace: ORG_NAME spec: ipv4Request: cidr: ORG_DATA_EXTERNAL_CIDR type: Rootinfra-vpc-root-cidr、admin-external-root-cidr、data-external-root-cidrのサブネット YAML ファイルをルート組織の IAC リポジトリにコピーします。cp YAML_FILE_PATH/ORG_NAME-infra-vpc-root-cidr.yaml \ IAC_REPO_PATH/iac/infrastructure/global/orgs/root/ cp YAML_FILE_PATH/ORG_NAME-admin-external-root-cidr.yaml \ IAC_REPO_PATH/iac/infrastructure/global/orgs/root/ cp YAML_FILE_PATH/ORG_NAME-data-external-root-cidr.yaml \ IAC_REPO_PATH/iac/infrastructure/global/orgs/root/組織のルートにある
kustomization.yamlファイルに、新しく追加されたSubnet定義が含まれていることを確認します。IAC_REPO_PATH/iac/infrastructure/global/orgs/root/kustomization.yamlを確認します。apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization metadata: name: global-root-kustomization resources: - ... # existing resource items - ORG_NAME-admin-external-root-cidr.yaml - ORG_NAME-data-external-root-cidr.yaml - ORG_NAME-infra-vpc-root-cidr.yamlサブネット YAML ファイルをステージングして commit します。
git add "IAC_REPO_PATH/iac/infrastructure" git commitマージ リクエストを作成します。
git checkout -b ${USERNAME1}-branch git -c http.sslVerify=false push -o merge_request.create origin {USERNAME1}-branchコードレビューとマージを待ちます。
1.3.3. ゾーンのルート サブネットを分割する
グローバル ルート サブネットは、すべてのゾーンのルート IP アドレス範囲(CIDR)をホストします。ゾーンで IP アドレス範囲を使用するには、まずグローバル ルート サブネットを、ゾーンで使用できる小さなサブネットに分割する必要があります。各ゾーンには、少なくとも 1 つのルート IP アドレス範囲が必要です。
IPAM には、グローバル ルート サブネットを既存のゾーンの小さなサブネットに自動的に分割するグローバル コントローラがあります。管理者は、特定のゾーンで使用される正確な CIDR ブロックを気にしない場合は、IPAM コントローラに委任して、ゾーンのサブネットを自動的に分割できます。コントローラはグローバル ルート サブネットの作成を監視し、固定のデフォルトの接頭辞長で各ゾーンのサブネットを作成します。
| ゾーン ルート サブネット | デフォルトの固定プレフィックス長 |
|---|---|
defaultZoneInfraVPCSubnetSize |
16 |
defaultZoneAdminVRFSubnetSize |
23 |
defaultZoneDataVRFSubnetSize |
23 |
defaultZoneDefaultVPCSubnetSize |
16 |
defaultAnycastSubnetSize |
26 |
IPAM コントローラがゾーンのサブネットを自動的に分割する場合は、グローバル ルート サブネットに固定名を付ける必要があります。
infra-vpc-root-cidradmin-external-root-cidrdata-external-root-cidrdefault-vpc-root-cidr
Subnet リソースに ipam.gdc.goog/pause-auto-division: true アノテーションを設定する場合は、特定のゾーンで使用される正確な CIDR ブロックを手動で定義する必要があります。グローバル ルート サブネットを異なる名前で作成すると、ipam.gdc.goog/pause-auto-division アノテーションは無効になり、グローバル サブネットは自動的に分割されません。
1.3.3.1. ゾーンのルート サブネットを自動的に分割する
グローバル コントローラは、グローバル ルート サブネットを既存のゾーンの小さなサブネットに自動的に分割します。たとえば、次のワークフローを検討して、コントローラが既存のゾーン用にグローバル ルート サブネットをより小さなサブネットに分割する方法を確認します。
zone1 と zone2 という名前の 2 つのゾーンがある場合、org-1 名前空間の OIQ からの infraVPCCIDR(10.0.0.0/16 など)を使用するグローバル ルート サブネット infra-vpc-root-cidr の例は次のようになります。
apiVersion: ipam.global.gdc.goog/v1
kind: Subnet
metadata:
labels:
ipam.gdc.goog/vpc: infra-vpc
ipam.gdc.goog/usage: network-root-range
annotations:
ipam.gdc.goog/pivot-destination: global-org
name: infra-vpc-root-cidr
namespace: org-1
spec:
ipv4Request:
cidr: 10.0.0.0/14
type: Root
GDC プラットフォームにデプロイすると、コントローラは接頭辞長 /16 の infra-vpc-zone1-root-cidr と infra-vpc-zone2-root-cidr という名前の 2 つの子サブネットを自動的に作成します。
apiVersion: ipam.global.gdc.goog/v1
kind: Subnet
metadata:
labels:
ipam.gdc.goog/vpc: infra-vpc
ipam.gdc.goog/usage: zone-network-root-range
annotations:
ipam.gdc.goog/pivot-destination: global-org
name: infra-vpc-zone1-root-cidr
namespace: org-1
spec:
ipv4Request:
prefixLength: 16
zone: zone1
propagationStrategy: SingleZone
type: Branch
parentReference:
name: infra-vpc-root-cidr
namespace: org-1
apiVersion: ipam.global.gdc.goog/v1
kind: Subnet
metadata:
labels:
ipam.gdc.goog/vpc: infra-vpc
ipam.gdc.goog/usage: zone-network-root-range
annotations:
ipam.gdc.goog/pivot-destination: global-org
name: infra-vpc-zone2-root-cidr
namespace: org-1
spec:
ipv4Request:
prefixLength: 16
zone: zone2
propagationStrategy: SingleZone
type: Branch
parentReference:
name: infra-vpc-root-cidr
namespace: org-1
1.3.3.2. ゾーンのルート サブネットを手動で分割する
このセクションでは、グローバル ルート管理 API サーバーでグローバル ルート サブネットを作成するときに、アノテーション ipam.gdc.goog/pause-auto-division: true を設定することを前提としています。このアノテーションは、コントローラを一時停止してグローバル ルート サブネットを調整します。これにより、ゾーンのルート サブネットとエニーキャスト サブネットを手動で作成できます。
グローバル ルート サブネットをゾーンの小さなサブネットに手動で分割するには、次の操作を行います。
ユニバース内のゾーンを一覧表示します。
kubectl --kubeconfig GLOBAL_ROOT_ADMIN_KUBECONFIG get zone -Aゾーンに適用するルート サブネットの専用 CIDR を確認します。これは、ユニバース内の各ゾーンに対して行います。
専用 CIDR を、
ORG_NAME-infra-vpc-zone1-root-cidr.yamlなどの YAML ファイルでゾーンのサブネットに割り当てます。apiVersion: ipam.global.gdc.goog/v1 kind: Subnet metadata: labels: ipam.gdc.goog/vpc: infra-vpc ipam.gdc.goog/usage: zone-network-root-range annotations: ipam.gdc.goog/pivot-destination: global-org name: infra-vpc-zone1-root-cidr namespace: ORG_NAME spec: ipv4Request: cidr: ZONAL_CIDR zone: ZONE_NAME propagationStrategy: SingleZone type: Branch parentReference: name: infra-vpc-root-cidr namespace: ORG_NAMEこの手順を GDC ユニバースの各ゾーンで繰り返します。
エニーキャスト サブネットに適用するルート サブネットの専用 CIDR を確認します。
専用 CIDR を YAML ファイル(
ORG_NAME-infra-vpc-anycast-cidr.yamlなど)のエニーキャスト サブネットに割り当てます。apiVersion: ipam.global.gdc.goog/v1 kind: Subnet metadata: labels: ipam.gdc.goog/vpc: infra-vpc annotations: ipam.gdc.goog/pivot-destination: global-org name: infra-vpc-anycast-cidr namespace: ORG_NAME spec: ipv4Request: cidr: ANYCAST_CIDR propagationStrategy: None type: Branch parentReference: name: infra-vpc-root-cidr namespace: ORG_NAMEゾーン サブネットの YAML ファイルをルート組織の IAC リポジトリにコピーします。たとえば、2 つのゾーン サブネット YAML ファイルがあるとします。
cp YAML_FILE_PATH/ORG_NAME-infra-vpc-zone1-root-cidr.yaml \ IAC_REPO_PATH/iac/infrastructure/global/orgs/root/ cp YAML_FILE_PATH/ORG_NAME-infra-vpc-zone2-root-cidr.yaml \ IAC_REPO_PATH/iac/infrastructure/global/orgs/root/ cp YAML_FILE_PATH/ORG_NAME-infra-vpc-anycast-cidr.yaml \ IAC_REPO_PATH/iac/infrastructure/global/orgs/root/組織のルートにある
kustomization.yamlファイルに、新しく追加されたSubnet定義が含まれていることを確認します。IAC_REPO_PATH/iac/infrastructure/global/orgs/root/kustomization.yamlを確認します。apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization metadata: name: global-root-kustomization resources: - ... # existing resource items - ORG_NAME-infra-vpc-zone1-root-cidr.yaml - ORG_NAME-infra-vpc-zone2-root-cidr.yaml - ORG_NAME-infra-vpc-anycast-cidr.yamlサブネット YAML ファイルをステージングして commit します。
git add "IAC_REPO_PATH/iac/infrastructure" git commitマージ リクエストを作成します。
git checkout -b ${USERNAME1}-branch git -c http.sslVerify=false push -o merge_request.create origin {USERNAME1}-branchコードレビューとマージを待ちます。
1.3.3.2.1. infra-vpc のゾーンのルートサブネットを手動で分割する例
zone1 と zone2 という名前の 2 つのゾーンがある場合、org-1 名前空間の OIQ からの infraVPCCIDR(192.0.2.0/24 など)を使用するグローバル ルート サブネット infra-vpc-root-cidr の例は次のようになります。
apiVersion: ipam.global.gdc.goog/v1
kind: Subnet
metadata:
labels:
ipam.gdc.goog/vpc: infra-vpc
ipam.gdc.goog/usage: network-root-range
annotations:
ipam.gdc.goog/pivot-destination: global-org
ipam.gdc.goog/pause-auto-division: "true"
name: infra-vpc-root-cidr
namespace: org-1
spec:
ipv4Request:
cidr: 192.0.2.0/24
type: Root
各ゾーンのサブネット(infra-vpc-zone1-root-cidr と infra-vpc-zone2-root-cidr)と、専用の CIDR を使用するエニーキャスト サブネット infra-vpc-anycast-cidr を手動で作成します。
apiVersion: ipam.global.gdc.goog/v1
kind: Subnet
metadata:
labels:
ipam.gdc.goog/vpc: infra-vpc
ipam.gdc.goog/usage: zone-network-root-range
annotations:
ipam.gdc.goog/pivot-destination: global-org
name: infra-vpc-zone1-root-cidr
namespace: org-1
spec:
ipv4Request:
cidr: 192.0.2.0/26
zone: zone1
propagationStrategy: SingleZone
type: Branch
parentReference:
name: infra-vpc-root-cidr
namespace: org-1
apiVersion: ipam.global.gdc.goog/v1
kind: Subnet
metadata:
labels:
ipam.gdc.goog/vpc: infra-vpc
ipam.gdc.goog/usage: zone-network-root-range
annotations:
ipam.gdc.goog/pivot-destination: global-org
name: infra-vpc-zone2-root-cidr
namespace: org-1
spec:
ipv4Request:
cidr: 192.0.2.64/26
zone: zone2
propagationStrategy: SingleZone
type: Branch
parentReference:
name: infra-vpc-root-cidr
namespace: org-1
apiVersion: ipam.global.gdc.goog/v1
kind: Subnet
metadata:
labels:
ipam.gdc.goog/vpc: infra-vpc
annotations:
ipam.gdc.goog/pivot-destination: global-org
name: infra-vpc-anycast-cidr
namespace: org-1
spec:
ipv4Request:
cidr: 192.0.2.128/26
propagationStrategy: None
type: Branch
parentReference:
name: infra-vpc-root-cidr
namespace: org-1
すべてのサブネット YAML ファイルを IAC リポジトリに追加してください。
1.3.3.2.2. データ ネットワーク セグメントのゾーンのルート サブネットを手動で分割する例
zone1 と zone2 という名前の 2 つのゾーンがある場合、org-1 名前空間の OIQ からの orgDataExternalCIDR(10.0.0.0/24 など)を使用するグローバル ルートサブネット data-external-root-cidr の例は次のようになります。
apiVersion: ipam.global.gdc.goog/v1
kind: Subnet
metadata:
labels:
ipam.gdc.goog/network-segment: data
ipam.gdc.goog/usage: network-root-range
annotations:
ipam.gdc.goog/pivot-destination: global-org
ipam.gdc.goog/pause-auto-division: "true"
name: data-external-root-cidr
namespace: org-1
spec:
ipv4Request:
cidr: 10.0.0.0/24
type: Root
各ゾーンのサブネット(data-external-zone1-root-cidr と data-external-zone2-root-cidr)と、専用の CIDR を使用するエニーキャスト サブネット data-global-anycast-cidr を手動で作成します。
apiVersion: ipam.global.gdc.goog/v1
kind: Subnet
metadata:
labels:
ipam.gdc.goog/network-segment: data
ipam.gdc.goog/usage: zone-network-root-range
annotations:
ipam.gdc.goog/pivot-destination: global-org
name: data-external-zone1-root-cidr
namespace: org-1
spec:
ipv4Request:
cidr: 10.0.0.0/26
zone: zone1
propagationStrategy: SingleZone
type: Branch
parentReference:
name: data-external-root-cidr
namespace: org-1
apiVersion: ipam.global.gdc.goog/v1
kind: Subnet
metadata:
labels:
ipam.gdc.goog/network-segment: data
ipam.gdc.goog/usage: zone-network-root-range
annotations:
ipam.gdc.goog/pivot-destination: global-org
name: data-external-zone2-root-cidr
namespace: org-1
spec:
ipv4Request:
cidr: 10.0.0.64/26
zone: zone2
propagationStrategy: SingleZone
type: Branch
parentReference:
name: data-external-root-cidr
namespace: org-1
apiVersion: ipam.global.gdc.goog/v1
kind: Subnet
metadata:
labels:
ipam.gdc.goog/network-segment: data
annotations:
ipam.gdc.goog/pivot-destination: global-org
name: data-global-anycast-cidr
namespace: org-1
spec:
ipv4Request:
cidr: 10.0.0.128/26
propagationStrategy: None
type: Branch
parentReference:
name: data-external-root-cidr
namespace: org-1
すべてのサブネット YAML ファイルを IAC リポジトリに追加してください。
1.3.3.2.3. 管理者ネットワーク セグメントのゾーンのルートサブネットを手動で分割する例
zone1 と zone2 という名前の 2 つのゾーンがある場合、org-1 名前空間の OIQ から orgAdminExternalCIDR(192.168.1.0/24 など)を使用するグローバル ルート サブネット admin-external-root-cidr の例は次のようになります。
apiVersion: ipam.global.gdc.goog/v1
kind: Subnet
metadata:
labels:
ipam.gdc.goog/network-segment: admin
ipam.gdc.goog/usage: network-root-range
annotations:
ipam.gdc.goog/pivot-destination: global-org
ipam.gdc.goog/pause-auto-division: "true"
name: admin-external-root-cidr
namespace: org-1
spec:
ipv4Request:
cidr: 192.168.1.0/24
type: Root
admin-external-zone1-root-cidr と admin-external-zone2-root-cidr という名前の各ゾーンのサブネットと、専用の CIDR を使用するエニーキャスト サブネット admin-global-anycast-cidr を手動で作成します。
apiVersion: ipam.global.gdc.goog/v1
kind: Subnet
metadata:
labels:
ipam.gdc.goog/network-segment: admin
ipam.gdc.goog/usage: zone-network-root-range
annotations:
ipam.gdc.goog/pivot-destination: global-org
name: admin-external-zone1-root-cidr
namespace: org-1
spec:
ipv4Request:
cidr: 192.168.1.0/26
zone: zone1
propagationStrategy: SingleZone
type: Branch
parentReference:
name: admin-external-root-cidr
namespace: org-1
apiVersion: ipam.global.gdc.goog/v1
kind: Subnet
metadata:
labels:
ipam.gdc.goog/network-segment: admin
ipam.gdc.goog/usage: zone-network-root-range
annotations:
ipam.gdc.goog/pivot-destination: global-org
name: admin-external-zone2-root-cidr
namespace: org-1
spec:
ipv4Request:
cidr: 192.168.1.64/26
zone: zone2
propagationStrategy: SingleZone
type: Branch
parentReference:
name: admin-external-root-cidr
namespace: org-1
apiVersion: ipam.global.gdc.goog/v1
kind: Subnet
metadata:
labels:
ipam.gdc.goog/network-segment: data
annotations:
ipam.gdc.goog/pivot-destination: global-org
name: admin-global-anycast-cidr
namespace: org-1
spec:
ipv4Request:
cidr: 192.168.1.128/26
propagationStrategy: None
type: Branch
parentReference:
name: admin-external-root-cidr
namespace: org-1
すべてのサブネット YAML ファイルを IAC リポジトリに追加してください。
1.4. IAC を使用して組織を作成する
IAC を使用して組織を作成します。
使用可能なサーバーとサーバータイプのリストを生成します。
kubectl get servers -n gpc-system -o jsonpath='{range .items[?(@.status.bareMetalHostStatus.provisionState=="available")]}{.metadata.name}{"\t"}{.spec.serverHardware.machineClassName}{"\t"}{.status.bareMetalHostStatus.provisionState}{"\n"}{end}'出力例は次のようになります。
ag-aa-bm04 o1-standard1-64-gdc-metal available ag-ab-bm07 o1-standard1-64-gdc-metal available ag-ab-bm11 o1-highmem1-96-gdc-metal available ag-ab-bm12 o1-highmem1-96-gdc-metal available ag-ab-bm13 o1-highmem1-96-gdc-metal available ag-ab-bm14 o1-highgpu1-48-gdc-metal available ag-ab-bm15 o1-highgpu1-48-gdc-metal available ag-ab-bm16 o1-highgpu1-48-gdc-metal available後で
--server-quotaと--admin-serverを指定する場合は、リクエストを満たすのに十分なavailableサーバーがあることを確認してください。iacリポジトリに移動し、新しい組織のディレクトリ構造を追加します。mkdir -p infrastructure/global/orgs/root/ORG_NAME/Organizationカスタム リソースを作成します。gdcloud organizations config create --name ORG_NAME \ --log-retention-policy LOG_RETENTION_POLICY \ --kms-root-key-type KMS_ROOT_KEY_TYPE次に例を示します。
gdcloud organizations config create --name org-1 \ --log-retention-policy paAuditLogsRetentionTime=400,ioAuditLogsRetentionTime=2000,operationalLogsRetentionTime=90,metricsRetentionTime=90 \ --kms-root-key-type ctm-root次の変数を置き換えます。
変数 定義 ORG_NAME組織の名前。組織の名前は、次の条件を満たす必要があります。
- 3 ~ 19 文字の小文字の ASCII 文字、数字、ハイフンを使用します。
- 先頭には英字を使用してください。
- 末尾にハイフンがない。
- 文字列
-systemで終わらないこと。
LOG_RETENTION_POLICY監査ログ、運用ログ、指標の保持期間(日数)。 KMS_ROOT_KEY_TYPEこの構成には、組織の KMS に選択されたルート鍵のタイプが保持されます。すべての KMS サービスには、KMS によって生成された鍵を暗号化するルート鍵があります。デフォルトでは、KMS は CTM ルート鍵を生成します。これは、物理 HSM でバックアップされた Thales CipherTrust Manager に保存されるルート鍵です。Kubernetes Secret として保存されているソフトウェア ルートキーを選択することもできます。 kmsRootKeyTypeにctm-rootまたはlocal-rootのいずれかを渡します。生成された
Organizationカスタム リソース YAML ファイルの例は、次のようになります。apiVersion: resourcemanager.global.private.gdc.goog/v1alpha1 kind: Organization metadata: namespace: gpc-system name: org-1 spec: type: Tenant logRetentionPolicy: paAuditLogsRetentionTime: 400 ioAuditLogsRetentionTime: 2000 operationalLogsRetentionTime: 90 metricsRetentionTime: 90 securityConfig: kmsRootKeyType: "ctm-root"省略可: バージョン 1.14.2 以降では、ノード間 IPsec 暗号化はデフォルトで無効になっています。この IPsec 暗号化が必要な場合は、
Organizationカスタム リソース YAML ファイルを編集してアノテーションを追加することで、ノード間 IPsec 暗号化を有効にできます。metadata: annotations: n2n.security.private.gdc.goog/node-to-node-encryption-disabled: "false"このアノテーションの値が
"false"の場合、暗号化が有効になります。デプロイ内の各ゾーンに
OrganizationZonalConfigカスタム リソースを作成します。gdcloud organizations zonal-configs create --name ORG_NAME \ --zones=ZONES \ --version GDC_VERSION \ --server-quota SERVER_QUOTA \ --storage-sku STORAGE_SIZE \ --admin-server ADMIN_SERVER次に例を示します。
gdcloud organizations zonal-configs create --name org-1 \ --zones=us-central1-a,us-central1-b \ --version 1.9.2-gdch.153 \ --server-quota o1-highmem1-40-gdc-metal=1,o1-standard1-64-gdc-metal=2,o1-highmem1-96-gdc-metal=3,o1-highmem1-104-gdc-metal=4,o1-highmem1-448-gdc-metal=5,o1-highgpu1-48-gdc-metal=6 \ --storage-sku block-standard=100Ti,file-standard=100Ti,object-standard=100Ti \ --admin-server o1-standard1-64-gdc-metal=3次の変数を置き換えます。
変数 定義 ORG_NAME組織の名前。組織の名前は、次の条件を満たす必要があります。
- 3 ~ 30 文字の小文字の ASCII 文字、数字、ハイフンにする。
- 先頭には英字を使用してください。
- 末尾にハイフンがない。
- 文字列
-systemで終わらないこと。
ZONESデプロイ内のゾーンの名前。 GDC_VERSION組織を作成する GDC システムのバージョン。 SERVER_QUOTA組織管理クラスタとシステム クラスタが自動生成されるときに割り当てるサーバー。事前トレーニング済みの AI/ML API などの VM ベースのワークロードであるグラフィック プロセッシング ユニット(GPU)リソースを実行する場合は、組織の作成時に GPU マシンをプロビジョニングする必要があります。詳細については、システム クラスタの GPU サポートを有効にするをご覧ください。 ADMIN_SERVERサーバータイプと、そのサーバータイプに割り当てる組織管理者サーバーの量の Key-Value ペア。サーバーでは混合型はサポートされていません。デフォルト値は o1-standard1-64-gdc-metal: 3です。STORAGE_SIZE組織に割り当てるさまざまなストレージ タイプのサイズ。組織の最小ブロック ストレージ サイズは 250 Gi です。これは BlockStandardフラグで設定されます。生成された
OrganizationZonalConfigカスタム リソース YAML ファイルの例は、次のようになります。apiVersion: resourcemanager.global.private.gdc.goog/v1alpha1 kind: OrganizationZonalConfig metadata: namespace: gpc-system name: org-1-zone1-config spec: organizationRef: name: org-1 zone: zone1 version: 1.5.0-gdch.11 capacities: storage: block-standard: 10Ti file-standard: 10Ti object-nearline: 10Ti object-standard: 10Ti workloadServers: o1-highmem1-40-gdc-metal: 1生成された YAML ファイルを確認します。ファイルは
HOMEディレクトリにあります。組織の種類を確認します。プロビジョニングできる組織タイプは次の 2 つです。
- 組織 v1 アーキテクチャ(v1 組織)
- Org v2 アーキテクチャ(v2 組織)
デフォルトでは、新しい組織は、機能ゲートの設定で設定されたデプロイタイプに基づいてプロビジョニングされます。
PRODUCTIONデプロイでは、デフォルトで v2 組織が生成されます。ACCREDITEDデプロイは、デフォルトで v1 組織を生成します。
デプロイ タイプのデフォルトの組織タイプをオーバーライドする必要がある場合は、生成された
Organizationカスタム リソースのspec.compatibilityOptions.architectureOverridePolicyフィールドを、使用する組織タイプに応じてForceV1またはForceV2に更新します。たとえば、次のスニペットは、ACCREDITEDデプロイで v2 組織の作成を強制します。... spec: ... compatibilityOptions: architectureOverridePolicy: ForceV2 ...残りの設定を確認して、ストレージやコンピューティング能力などのコンポーネントが会社のニーズを満たしていることを確認します。
Organizationカスタム リソースとOrganizationZonalConfigカスタム リソースを、新しい組織のディレクトリにあるリポジトリにコピーします。cp YAML_FILE_PATH/ORG_NAME.yaml IAC_REPO_PATH/iac/infrastructure/global/orgs/root/ORG_NAME/cp YAML_FILE_PATH/ORG_NAME-ZONE.yaml IAC_REPO_PATH/iac/infrastructure/global/orgs/root/ORG_NAME/次のように置き換えます。
ORG_NAME:--nameパラメータを使用してgdcloud organizations config createコマンドで定義した組織名。ZONE: デプロイ内の各ゾーンの名前。ゾーン名は{generalRegion}-{regionQualifier}{regionCounter}-{zoneLetter}という形式で派生します。例:us-central1-b。ゾーン属性値の説明については、お客様のオンボーディング アンケートのゾーンのセクションをご覧ください。
新しい組織の
kustomization.yamlファイルを追加します。cat > IAC_REPO_PATH/iac/infrastructure/global/orgs/root/ORG_NAME/kustomization.yaml << EOF apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization metadata: name: ORG_NAME-kustomization resources: - ORG_NAME.yaml - ORG_NAME-ZONE.yaml EOF新しい組織をルート組織のリソースとして追加します。
グローバル ルートの
kustomization.yamlファイルを開きます。vim /iac/infrastructure/global/orgs/root/kustomization.yaml既存のリソース リストの末尾に、新しい
Organizationをリソースとして追加します。apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization metadata: name: global-root-kustomization resources: - ... # existing resource items - ORG_NAME
組織の YAML ファイルと kustomize ファイルをステージングして commit します。
git add "IAC_REPO_PATH/iac/infrastructure" git commitマージ リクエストを作成します。
git checkout -b ${USERNAME1}-branch git -c http.sslVerify=false push -o merge_request.create origin {USERNAME1}-branchコードレビューとマージを待ちます。
グローバル組織とゾーン構成が使用可能であることを確認します。
グローバル組織が GDC ユニバースで使用可能であることを確認します。
kubectl get organization -A出力は次のようになります。
NAMESPACE NAME AGE gpc-system org 34s gpc-system root 14hグローバル組織のステータスを確認します。
kubectl --kubeconfig GLOBAL_ROOT_ADMIN_KUBECONFIG \ get organization/ORG_NAME -n gpc-system -o yamlYAML 出力の
status条件がTrueであることを確認します。各ゾーンの組織構成のステータスを確認します。
kubeconfig --kubeconfig ROOT_ADMIN_KUBECONFIG \ get organization/ORG_NAME -n gpc-system -o yamlゾーン コンテキストを切り替えるには、gdcloud CLI を使用して各ゾーンにログインしてから、組織のステータスを確認します。各ゾーンの YAML 出力の
status条件がTrueであることを確認します。
1.5. グローバル組織 API サーバーにグローバル サブネットを作成する
グローバル API サーバーの実行後、組織のグローバル API サーバーの platform 名前空間に default-vpc-root-cidr を作成する必要があります。このルート サブネットは、ユーザー クラスタなどのテナント組織内のクラスタの IP アドレスと、VM ワークロードの IP アドレスを割り当てます。
default-vpc-root-cidrサブネット YAML ファイル(default-vpc-root-cidr.yamlなど)を作成します。apiVersion: ipam.global.gdc.goog/v1 kind: Subnet metadata: labels: ipam.gdc.goog/allocation-preference: default ipam.gdc.goog/vpc: default-vpc ipam.gdc.goog/usage: network-root-range name: default-vpc-root-cidr # don't change the name if you want IPAM controller to automatically divide the zone's subnet. namespace: platform spec: type: Root ipv4Request: cidr: DEFAULT_VPC_CIDRiacリポジトリに移動し、グローバル組織のディレクトリ構造を追加します。cd iac; mkdir -p infrastructure/global/orgs/ORG_NAME/default-vpc-root-cidrサブネット YAML ファイルを新しい組織のディレクトリにある IAC リポジトリにコピーします。cp YAML_FILE_PATH/default-vpc-root-cidr.yaml \ IAC_REPO_PATH/iac/infrastructure/global/orgs/ORG_NAME/新しく追加された
Subnet定義を使用して、組織フォルダにkustomization.yamlファイルを作成します。IAC_REPO_PATH /iac/infrastructure/global/orgs/ORG_NAME/kustomization.yamlを確認します。cat > infrastructure/global/orgs/ORG_NAME/kustomization.yaml << EOF apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization metadata: name: ORG_NAME-kustomization resources: - default-vpc-root-cidr.yaml EOF組織の YAML ファイルと kustomize ファイルをステージングして commit します。
git add "IAC_REPO_PATH/iac/infrastructure" git commitマージ リクエストを作成します。
git checkout -b ${USERNAME1}-branch git -c http.sslVerify=false push -o merge_request.create origin {USERNAME1}-branchコードレビューとマージを待ちます。
グローバル ルート管理クラスタのグローバル サブネットが分割されるのと同様に、default-vpc-root-cidr も分割され、ゾーン組織が IP アドレスを使用できるように各ゾーンに伝播されます。
1.7. 組織管理者の NTPRelay を構成する
root-admin と org-admin の NTPRelay 間の認証を手動で構成する必要があります。
NTP-P0001.3(ルート管理者 -> 組織管理者 NTPRelay 暗号化)に沿って、この組織の暗号化を構成します。
1.8. IAC を使用して IO ID プロバイダを組織に接続する
ADFS ガイドを参照して、新しい組織の ADFS で OIDC クライアントを作成し、OIDC クライアントのクライアント ID とクライアント シークレットをメモします。
組織名を環境変数として設定します。
export ORG_NAME=ORG_NAMEORG_NAMEが組織の正式名称と一致することを確認します。ルート管理クラスタの kubeconfig ファイルをエクスポートし、次の
kubectlコマンドを実行して、クラスタ名とゾーン名を取得します。export KUBECONFIG=ROOT_ADMIN_KUBECONFIG kubectl get clusters -A kubectl get zones -n mz-system組織の
ioauthmethod.yamlファイルを追加します。cat > infrastructure/global/orgs/${ORG_NAME}/ioauthmethod.yaml << EOF apiVersion: iam.global.private.gdc.goog/v1alpha1 kind: IOAuthMethod metadata: name: io-idp-authmethod namespace: gpc-system oidc: certificateAuthorityData: ADFS_CERT_BASE64 clientID: ADFS_ORG_CLIENT_ID clientSecret: ADFS_ORG_CLIENT_SECRET groupPrefix: gdch-infra-operator- groupsClaim: groups issuerURI: ADFS_ISSUER_URI scopes: openid email offline_access userClaim: email userPrefix: gdch-infra-operator- cloudConsoleRedirectURI: http://cloud.console.not.enabled kubectlRedirectURI: http://localhost:9879/callback EOF次の変数を置き換えます。
変数 定義 ADFS_CERT_BASE64ADFS が自己署名に使用する証明書の base64 エンコード。GKE Identity Service が内部 ADFS インスタンスとの安全な接続を確立するために必要です。 ADFS_ORG_CLIENT_IDADFS の組織のクライアントの OpenID Connect ID。 ADFS_ORG_CLIENT_SECRETADFS に登録されている組織のクライアントの OpenID Connect シークレット。 ADFS_ISSUER_URI有効な発行元 URI。GKE Identity Service で ADFS へのリダイレクト ログイン リクエストを許可するために必要です。 組織の
initial-admin.yamlファイルを追加します。cat > infrastructure/global/orgs/${ORG_NAME}/initial-admin.yaml << EOF apiVersion: iam.private.gdc.goog/v1alpha1 kind: ExpirationClusterRoleBinding metadata: name: iac-binding-USER-org-iam-admin spec: expirationTimestamp: EXPIRATION roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: organization-iam-admin subjects: - apiGroup: rbac.authorization.k8s.io kind: User name: gdch-infra-operator-USER@opscenter.local EOF次の変数を置き換えます。
変数 定義 USERクラスタに最初にログインする IO の接頭辞が付いたユーザー名。ユーザー名に接頭辞を追加してください。 EXPIRATIONシステムがアクセスを取り消す RFC 3339 形式のタイムスタンプ。たとえば、 "2020-11-14T00:20:12+00:00"のようにします。新しく作成したファイルを
IAC_REPO_PATH /iac/infrastructure/global/orgs/ORG_NAME/kustomization.yamlのkustomization.yamlファイルに追加します。apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization metadata: name: ORG_NAME-kustomization resources: - ... # existing resource items - ioauthmethod.yaml - initial-admin.yaml組織の YAML ファイルと kustomize ファイルをステージングして commit します。
git add "infrastructure/global" git add "infrastructure/zonal" git commit更新を GitLab に push します。
git -c http.sslVerify=false pushコードレビューとマージを待ちます。
Operator が組織にアクセスできることを確認するには、生成された組織にログインし、次のコマンドを実行して、組織の
ClientConfigに ID プロバイダ(IdP)が存在することを確認します。組織のアーキテクチャに応じて、管理クラスタの kubeconfig ファイルを設定します。
v1 組織の場合は、次のコマンドを実行します。
export KUBECONFIG=ORG_ADMIN_CLUSTER_KUBECONFIGORG_ADMIN_CLUSTER_KUBECONFIG は、組織管理クラスタの kubeconfig のパス(
/tmp/${ORG}-admin-kubeconfigなど)に置き換えます。v2 組織の場合は、次のコマンドを実行します。
export KUBECONFIG=ORG_INFRA_CLUSTER_KUBECONFIGORG_INFRA_CLUSTER_KUBECONFIG は、組織のインフラストラクチャ クラスタの kubeconfig のパス(
/tmp/${ORG}-infra-kubeconfigなど)に置き換えます。
組織の
ClientConfigに IdP が存在することを確認します。kubectl get ClientConfig default -n kube-public -o yaml
バージョン 1.14.3 では、すべての認証済みユーザーが gdcloud CLI を使用してユニバース内のゾーンを表示できるように、
global-zone-viewerロールを手動で適用する必要があります。ロールとロール バインディングのリソースを適用します。kubectl --kubeconfig ORG_GLOBAL_API_SERVER_KUBECONFIG apply -f - <<EOF apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: global-zone-viewer namespace: mz-system rules: - apiGroups: - location.mz.global.private.gdc.goog resources: - zones verbs: - get - list --- apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: global-zone-viewer-binding namespace: mz-system roleRef: apiGroup: rbac.authorization.k8s.io kind: Role name: global-zone-viewer subjects: - apiGroup: rbac.authorization.k8s.io kind: Group name: system:authenticated EOFORG_GLOBAL_API_SERVER_KUBECONFIGは、組織のグローバル API サーバーの kubeconfig ファイルに置き換えます。詳細については、kubeconfig ファイルを手動で生成するをご覧ください。
1.9. 顧客 ID プロバイダを組織に接続する
顧客の ID プロバイダ(IdP)を組織に接続し、ID を使用して組織にログインするには、次の操作を行います。
組織の作成時に設定された最初の IO 管理者アカウントを使用して CLI からログインします。このアカウントは、組織管理者クラスタの
org-iam-adminに自動的にバインドされます。お客様に、作成する組織用に作成した OIDC または SAML クライアントの許可リストに、次のグローバル AIS コールバック URL を追加するよう依頼します。
https://ais-core.ORG_NAME.GDC_URL/finish-loginたとえば、GDC のルート URL が
.google.gdch.testで、組織の名前がoperationsの場合、グローバル AIS コールバック URL はhttps://ais-core.operations.google.gdch.test/finish-loginになります。SAML クライアントを使用している場合は、次のグローバル AIS SAML コールバック URL も許可リストに追加する必要があります。
https://ais-core.ORG_NAME.GDC_URL/saml-callbackお客様に、各ゾーンで作成した OIDC または SAML クライアントの許可リストに次の AIS コールバック URL を追加するよう依頼します。たとえば、3 つのゾーンのユニバースの場合、ゾーン AIS コールバック URL は次のようになります。
https://ais-core.ORG_NAME.ZONE_1.GDC_URL/finish-login https://ais-core.ORG_NAME.ZONE_2.GDC_URL/finish-login https://ais-core.ORG_NAME.ZONE_3.GDC_URL/finish-loginGDC のルート URL が
.google.gdch.test、ゾーン名がzone-1、組織名がoperationsの場合、AIS コールバック URL はhttps://ais-core.operations.zone-1.google.gdch.test/finish-loginです。SAML クライアントを使用している場合は、次の AIS SAML コールバック URL を各ゾーンの許可リストに追加する必要があります。
https://ais-core.ORG_NAME.ZONE_1.GDC_URL/saml-callback https://ais-core.ORG_NAME.ZONE_2.GDC_URL/saml-callback https://ais-core.ORG_NAME.ZONE_3.GDC_URL/saml-callback組織のアーキテクチャに応じて、管理クラスタの kubeconfig ファイルを設定します。kubeconfig 変数をすでに設定している場合は、この手順をスキップしてください。
v1 組織の場合は、次のコマンドを実行します。
export KUBECONFIG=ORG_ADMIN_CLUSTER_KUBECONFIGORG_ADMIN_CLUSTER_KUBECONFIG は、組織の管理クラスタ kubeconfig のパス(
/tmp/${ORG}-admin-kubeconfigなど)に置き換えます。v2 組織の場合は、次のコマンドを実行します。
export KUBECONFIG=MANAGEMENT_API_SERVER_KUBECONFIGMANAGEMENT_API_SERVER_KUBECONFIG は、
/tmp/${ORG}-management-kubeconfigなどの Management API サーバー kubeconfig のパスに置き換えます。
新しい組織のお客様のリクエスト チケットから、IdP が OIDC と SAML のどちらを使用しているかを判断します。指定された IdP タイプに対応するガイドに沿って操作します。
OIDC を使用して設定する
identity-provider-config.yamlファイルを作成し、PA のアカウント IdP の値について組織作成チケットを参照して、このファイルに入力します。cat << EOF > identity-provider-config.yaml apiVersion: iam.global.gdc.goog/v1 kind: IdentityProviderConfig metadata: name: pa-idp-oidc namespace: platform spec: oidc: certificateAuthorityData: "PA_IDP_BASE64_ENCODED_CERTIFICATE" clientID: PA_IDP_CLIENT_ID clientSecret: PA_IDP_CLIENT_SECRET groupPrefix: PA_IDP_GROUP_CLAIM groupsClaim: PA_IDP_PREFIX issuerURI: PA_IDP_ISSUER_URI scopes: openid email profile userClaim: PA_IDP_USER_CLAIM userPrefix: PA_IDP_PREFIX EOF各フィールドの詳細な説明は次のとおりです。
属性 属性のタイプ 説明 certificateAuthorityData必須 OIDC プロバイダ用の標準の Base64 エンコード形式と PEM 形式の認証局証明書。 clientID必須 OpenID プロバイダへの認証リクエストを行うクライアント アプリケーションの ID。 clientSecret必須 OIDC クライアント アプリケーションと OIDC プロバイダ間の共有シークレット。 extraParams省略可 クエリ エンコードされ、認証エンドポイント リクエストとともに送信される Key-Value ペアのカンマ区切りのリスト。 groupPrefix省略可 既存のグループと競合しないようにグループ クレームに追加する接頭辞。通常は、複数の ID プロバイダを構成するときに使用されます。
すべてのグループ名の前にグループ プレフィックスを付ける必要があります。たとえば、グループ プレフィックスとしてmyprefix-があり、ID プロバイダにgroupAという名前のグループがある場合、ポリシーまたはバインディングを追加するときにmyprefix-groupAをバインドする必要があります。グループ名はgroupsClaimフィールドで設定されます。groupsClaim省略可 ユーザーのグループ情報を保持する OIDC ID トークンに含まれるクレームの名前。この名前は、OIDC プロバイダのグループ メンバーシップ情報を含むクレームの名前と同じである必要があります。 issuerURI必須 認可リクエストが OIDC プロバイダに送信される URL。この URI は、 .well-known/openid-configuration内のレベルを指す必要があります。scopes省略可 openidスコープに加えてリクエストされているアクセス権限を指定する識別子のカンマ区切りリスト。userClaim必須 ユーザー名を保持する OIDC ID トークンのクレームの名前。たとえば、ユーザー クレームが emailの場合、ユーザーは OIDC トークンのユーザー フィールドによって識別されます。
ID トークンがない場合、認証は失敗します。userPrefix省略可 既存のユーザー名と競合しないように、ユーザー クレームの先頭に付加する接頭辞。通常は、複数の ID プロバイダを構成するときに使用されます。
たとえば、ユーザー クレームがemailで、ユーザー接頭辞がprefix-の場合、ユーザーはprefix-sally@example.comとして識別されます。ユーザーはsally@example.comであり、異なる ID プロバイダを区別するために、接頭辞prefix-はユーザーの接頭辞になります。
この表で前述したように、groupPrefixを設定する際は、接頭辞の末尾に区切り文字を挿入することをおすすめします。省略可: ID プロバイダがカスタム属性を使用している場合は、まず IdP で属性を構成します。次に、ユーザーやグループに関する追加のクレーム(部門や誕生日など)について、
identity-provider-config.yamlファイルのoidcセクションに対応する Key-Value ペアを追加します。ID プロバイダ構成に変更を適用すると、GKE Identity Service はカスタム属性を認識します。カスタム属性の例を次に示します。"attributeMapping": { "attribute.birthday": "assertion.birthday", "attribute.department": "assertion.department" }ID プロバイダ構成を構成します。
kubectl apply -f identity-provider-config.yamlさまざまなシステム コンポーネントが再構成されるまで待ちます。
ウェブブラウザで Platform Admin UI コンソールを開いて、構成を確認します。リダイレクト ページで [Log in with pa-idp-oidc] を選択します。PA アカウント IdP インスタンスにリダイレクトされ、PA アカウント IdP インスタンスでログインした後、プラットフォーム管理者 UI コンソール ページにリダイレクトされる場合、構成は成功しています。それ以外の場合は、
identity-provider-config.yamlの値を確認して、前の手順をもう一度適用します。
SAML を使用して設定する
identity-provider-config.yamlファイルを作成し、PA のアカウント IdP の値について組織作成チケットを参照して、このファイルに入力します。cat << EOF > identity-provider-config.yaml apiVersion: iam.global.gdc.goog/v1 kind: IdentityProviderConfig metadata: name: pa-idp-saml namespace: platform spec: saml: idpEntityID: PA_IDP_ISSUER_URI idpSingleSignOnURI: PA_IDP_SSO_URI groupPrefix: PA_IDP_PREFIX groupsAttribute: PA_IDP_GROUPS_ATTRIBUTE idpCertificateDataList: [PA_IDP_SAML_CERT] userAttribute: PA_IDP_USER_ATTRIBUTE userPrefix: PA_IDP_PREFIX EOF各フィールドの詳細な説明は次のとおりです。
.属性 属性のタイプ 説明 idpCertificateDataList必須 SAML レスポンスの検証に使用される IDP 証明書。これらの証明書は標準の Base64 エンコード形式と PEM 形式にする必要があります。IdP 証明書のローテーションを容易にするため、サポートされる証明書は 2 つまでです。 idpEntityID必須 SAML プロバイダの SAML エンティティ ID(URI 形式で指定)。たとえば、https://www.idp.com/saml です。 idpSingleSignOnURI必須 SAML プロバイダの SSO エンドポイントの URI。たとえば、`https://www.idp.com/saml/sso` です。 groupPrefix省略可 各グループ名の先頭に付加する接頭辞(省略可)。 userPrefix省略可 ユーザー名の先頭に付加する接頭辞(省略可)。 userAttribute省略可 SAML レスポンスでユーザー名を保持する属性の名前。この属性が SAML レスポンスにない場合、認証は失敗します。 groupsAttribute省略可 ユーザーのグループを保持する SAML レスポンスの属性の名前。 省略可: ID プロバイダがカスタム属性を使用している場合は、まず IdP で属性を構成します。次に、ユーザーやグループに関する追加のクレーム(部門や誕生日など)について、
identity-provider-config.yamlファイルのsamlセクションに対応する Key-Value ペアを追加します。ID プロバイダ構成に変更を適用すると、GKE Identity Service はカスタム属性を認識します。カスタム属性の例を次に示します。"attributeMapping": { "attribute.birthday": "assertion.birthday", "attribute.department": "assertion.department" }ID プロバイダ構成パッチを構成します。
kubectl apply -f identity-provider-config.yamlさまざまなシステム コンポーネントが再構成されるまで待ちます。
ウェブブラウザで Platform Admin UI コンソールを開いて、構成を確認します。リダイレクト ページで [Log in with pa-idp-oidc] を選択します。PA アカウント IdP インスタンスにリダイレクトされ、PA アカウント IdP インスタンスでログインした後、プラットフォーム管理者 UI コンソール ページにリダイレクトされる場合、構成は成功しています。それ以外の場合は、
identity-provider-config.yamlの値を確認して、前の手順をもう一度適用します。
ユーザーとグループの接頭辞
異なる IdP のアカウント間で名前の競合が発生しないように、Distributed Cloud のすべての IdP にユーザーとグループの接頭辞を設定する必要があります。この接頭辞は、ユーザー名とグループ名とともに使用され、クラスタ内のロール バインディングのサブジェクト名を連結します。たとえば、名前が jack@example.com のユーザーで、IdP のユーザー接頭辞が example-org-idp- の場合、クラスタ内のサブジェクト名は example-org-idp-jack@example.com になります。
接頭辞の値を決定するには:
- 階層レベル(ルート、組織、プロジェクト)を含めます。
- IdP の名前(adfs、keycloak)を含めます。
- 接頭辞とユーザー名の間に区切り文字は追加されないため、
-などの区切り文字を接尾辞として追加することをおすすめします。
最初の管理者を割り当てる
PA に組織への初回アクセス権を付与するには、PA を組織の管理者として割り当てる必要があります。PA を初期管理者として割り当てるには、グローバル API サーバーに IAMRoleBinding を作成します。
kubectl apply -f --kubeconfig=GLOBAL_API_SERVER_KUBECONFIG - <<EOF
apiVersion: iam.global.gdc.goog/v1
kind: IAMRoleBinding
metadata:
name: PA_INITIAL_ADMIN_EMAIL-binding
namespace: platform
spec:
roleRef:
apiGroup: iam.global.gdc.goog
kind: IAMRole
name: organization-iam-admin
subjects:
- apiGroup: rbac.authorization.k8s.io
kind: User
name: PA_IDP_PREFIXPA_INITIAL_ADMIN_EMAIL
EOF
1.10 組織のネットワーク接続を確立する
新しく作成された組織は分離されており、外部ネットワークからアクセスすることはできません。組織を運用可能にするには、Interconnect サービスを使用して 1 つ以上の外部ネットワークに接続する必要があります。
このプロセスでは、論理接続を定義する一連のカスタム リソースを構成します。新しい組織に接続を提供する一般的なシナリオは次の 2 つです。
シナリオ 1: 組織を既存の共有インターコネクトに接続する
共有ネットワークの既存の相互接続がある場合は、新しい組織を含めるように AttachmentGroup と RoutePolicy を更新するだけで済みます。
AttachmentGroupを更新する:AttachmentGroupは、どの組織が VLAN アタッチメントのセットを使用できるかを指定します。AttachmentGroupYAML ファイルを編集し、新しい組織をspec.entitiesリストに追加します。v2 組織の場合は、接続するネットワークdomainType(OrgAdmin、OrgData、OrgMixed)を指定する必要があります。AttachmentGroupの更新例:apiVersion: system.private.gdc.goog/v1alpha1 kind: AttachmentGroup metadata: name: attachment-group-shared namespace: gpc-system spec: identifier: shared-network entities: - orgName: existing-org-1 # Existing organization domainType: OrgMixed - orgName: new-customer-org # Add the new organization domainType: OrgMixedRoutePolicyを更新する:RoutePolicyは、アドバタイズされる IP プレフィックスを定義します。ポリシーを編集し、新しい組織の外部 IP サブネットをspec.out.ipPrefixListに追加します。これにより、受信トラフィックが組織に到達できるようになります。RoutePolicyの更新例:apiVersion: system.private.gdc.goog/v1alpha1 kind: RoutePolicy metadata: name: shared-routepolicy namespace: gpc-system spec: # ... other fields ... out: asPathAccessList: - action: Permit asPathRegex: ".*" ipPrefixList: - action: Permit ipPrefix: EXTERNAL_SUBNET_OF_EXISTING_ORG_1 - action: Permit ipPrefix: EXTERNAL_SUBNET_OF_NEW_CUSTOMER_ORG # Add new prefix # ... deny rules ...Infrastructure as Code(IaC)プロセスで
kubectl applyを使用して、変更を適用します。
シナリオ 2: 新しい専用相互接続を作成する
専用接続の場合は、新しい一連の Interconnect リソースを作成する必要があります。プロセス全体では、5 つのカスタム リソースを順番に作成します。
- 新しい物理接続ごとに
InterconnectLinkを作成します。 InterconnectGroupを作成して、物理リンクをバンドルし、新しい組織を許可します。AttachmentGroupを作成し、entitiesリストで新しい組織を指定します。- この専用接続のインバウンドとアウトバウンドの IP プレフィックスを許可する
RoutePolicyを作成します。 - 1 つ以上の
InterconnectAttachmentリソースを作成して、VLAN と BGP セッションを定義します。
これらの各リソースの包括的な例と詳細な手順については、インターコネクトを構成するのドキュメントをご覧ください。
1.11 Alertmanager Webhook を設定して ServiceNow に接続する
MON-T0016 の手順に沿って、アラートマネージャーの Webhook を ServiceNow に接続してインシデントを作成します。
1.12 組織の課金料金表を構成する
組織の Billing サブコンポーネントでは、請求対象のプロダクトまたはサービスがカスタム リソース SKUDescription で構成されている必要があります。単一の SKUDescription は、請求対象となる単一の商品またはサービスとその価格を表します。したがって、SKUDescription オブジェクトのコレクションは、組織の価格表と見なすことができます。次の手順では、IAC で組織の価格表を構成します。
1.12.1 料金表を入手する
組織の SKUDescription 価格表リソースがまだない場合は、プログラム管理オフィス(PMO)に連絡して価格表を入手してください。料金表は、SKUDescription リソースを含む一連の YAML ファイルである必要があります。
1.12.2 価格表が共有されているかどうかを判断する
価格表は、すべての組織で共有することも、組織ごとに構成することもできます。価格表が共有されているかどうかは、PMO にお問い合わせください。
1.12.2.1 共有料金表
価格表が共有されている場合は、common-data 共有 IAC フォルダに価格表を配置します。
この組織が最初に作成された組織でない場合、価格表は共有
common-dataフォルダにすでに存在している可能性があります。価格表が存在する場合は、ステップ 2 ~ 4 が完了していることを確認し、ステップ 5 に進みます。価格表の共有フォルダを作成します。
mkdir -p IAC_REPO_PATH/iac/infrastructure/common-data/bil/skudescriptions/IAC_REPO_PATH は、IAC リポジトリのパスに置き換えます。
SKUDescriptionの料金表 YAML リソースをこのフォルダに保存します。その後、skudescriptionsフォルダには、エリアごとに分割された YAML ファイルが含まれている必要があります。課金ユースケースに合わせてフォルダ構造と YAML ファイルを構成します。パートナー運営の請求: Google はパートナーに請求します。
SKUDescriptionリソースをpartner-billing-systemNamespace に配置します。お客様への請求: パートナー様がエンドユーザーに請求します。
SKUDescriptionリソースをbilling-systemNamespace に配置します。
次の例は、顧客の請求とパートナーが運営する請求モデルの両方のファイル構造を示しています。モデルごとに、コンピューティングとストレージの 2 つのサービスが表示され、各サービスに 2 つの YAML ファイルがあります。
お客様への請求:
├── customer ├── compute │ ├── compute-sku1.yaml │ └── compute-sku2.yaml └── storage ├── storage-sku1.yaml └── storage-sku2.yamlパートナー運営の請求:
├── partner ├── compute │ ├── partner-compute-sku1.yaml │ └── partner-compute-sku2.yaml └── storage ├── partner-storage-sku1.yaml └── partner-storage-sku2.yamlすべての
SKUDescription価格表 YAML ファイルを含むディレクトリにkustomization.yamlファイルがあることを確認します。touch IAC_REPO_PATH/iac/infrastructure/common-data/bil/skudescriptions/kustomization.yaml cd IAC_REPO_PATH/iac/infrastructure/common-data/bil/skudescriptions/ kustomize edit add resource */*.yamlORG_CLUSTER環境変数をエクスポートします。v1 組織の場合は、次のコマンドを実行します。
export ORG_CLUSTER=ORG_ADMIN_CLUSTER_NAMEv2 組織の場合は、次のコマンドを実行します。
export ORG_CLUSTER=ORG_INFRA_CLUSTER_NAME
組織に
skudescriptions請求先ディレクトリを作成します。v1 組織の場合:
mkdir -p IAC_REPO_PATH/iac/infrastructure/zonal/zones/ZONE_NAME/ORG_CLUSTER_NAME/bil/skudescriptionsv2 組織の場合:
mkdir -p IAC_REPO_PATH/iac/infrastructure/zonal/zones/ZONE_NAME/ORG_CLUSTER_NAME-management/bil/skudescriptions
組織のバージョン タイプに応じて、ORG_CLUSTER_NAME を組織の管理者クラスタの名前に置き換えます。
組織に共通の価格表を含めます。
v1 組織の場合:
cat > IAC_REPO_PATH/iac/infrastructure/zonal/zones/ZONE_NAME/ORG_CLUSTER_NAME/bil/skudescriptions/kustomization.yaml << EOF apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization resources: - ../../../../common-data/bil/skudescriptions EOFv2 組織の場合:
cat > IAC_REPO_PATH/iac/infrastructure/zonal/zones/ZONE_NAME/ORG_CLUSTER_NAME-management/bil/skudescriptions/kustomization.yaml << EOF apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization resources: - ../../../../common-data/bil/skudescriptions EOF
YAML ファイルをステージングして commit し、ファイルをカスタマイズします。
cd IAC_REPO_PATH git add "iac" git commit更新を GitLab に push します。
git -c http.sslVerify=false pushコードレビューとマージを待ちます。
対応する課金モデルの
SKUDescriptionオブジェクトが、指定されたクラスタに存在することを確認します。組織のタイプに応じて
KUBECONFIG値をエクスポートします。v1 組織の場合は、次のコマンドを実行します。
export KUBECONFIG=ORG_ADMIN_CLUSTER_KUBECONFIGORG_ADMIN_CLUSTER_KUBECONFIG は、組織管理クラスタの kubeconfig のパス(
/tmp/${ORG}-admin-kubeconfigなど)に置き換えます。v2 組織の場合は、次のコマンドを実行します。
export KUBECONFIG=MANAGEMENT_API_SERVER_KUBECONFIGMANAGEMENT_API_SERVER_KUBECONFIG は、管理 API サーバーの kubeconfig へのパス(
/tmp/${ORG}-management-kubeconfigなど)に置き換えます。
kubectlCLI を実行します。お客様への請求の場合:
kubectl get SKUDescription -n billing-systemパートナーの請求の場合:
kubectl get SKUDescription -n partner-billing-system
1.12.2.2 組織固有の料金表
価格表が組織に固有の場合は、価格表を組織クラスタ フォルダに配置する必要があります。
組織クラスタに
skudescriptions課金ディレクトリを作成します。v1 組織の場合:
mkdir -p IAC_REPO_PATH/iac/infrastructure/zonal/zones/ZONE_NAME/ORG_CLUSTER_NAME/bil/skudescriptionsv2 組織の場合:
mkdir -p IAC_REPO_PATH/iac/infrastructure/zonal/zones/ZONE_NAME/ORG_CLUSTER_NAME-management/bil/skudescriptions
SKUDescriptionの料金表 YAML リソースをこのフォルダに保存します。その後、skudescriptionsフォルダには、エリアごとに分割された YAML ファイルが必要です。次の例では、コンピューティングとストレージの 2 つのサービスがあり、それぞれに 2 つの YAML ファイルがあります。. ├── compute │ ├── compute-sku1.yaml │ └── compute-sku2.yaml └── storage ├── storage-sku1.yaml └── storage-sku2.yamlすべての
SKUDescription料金表 YAML ファイルを含むディレクトリにkustomization.yamlファイルがあることを確認します。v1 組織の場合:
touch IAC_REPO_PATH/iac/infrastructure/zonal/zones/ZONE_NAME/ORG_CLUSTER_NAME/bil/skudescriptions/kustomization.yaml cd IAC_REPO_PATH/iac/infrastructure/zonal/zones/ZONE_NAME/ORG_CLUSTER_NAME/bil/skudescriptions/ kustomize edit add resource */*.yamlv2 組織の場合:
touch IAC_REPO_PATH/iac/infrastructure/zonal/zones/ZONE_NAME/ORG_CLUSTER_NAME-management/bil/skudescriptions/kustomization.yaml cd IAC_REPO_PATH/iac/infrastructure/zonal/zones/ZONE_NAME/ORG_CLUSTER_NAME-management/bil/skudescriptions/ kustomize edit add resource */*.yaml
組織のルートにある
kustomization.yamlファイルに、新しく追加されたbil/skudescriptionsフォルダが含まれていることを確認します。v1 組織の場合はIAC_REPO_PATH/iac/infrastructure/zonal/zones/ZONE_NAME/ORG_CLUSTER_NAME/kustomization.yaml、v2 組織の場合はIAC_REPO_PATH/iac/infrastructure/zonal/zones/ZONE_NAME/ORG_CLUSTER_NAME-management/kustomization.yamlを確認します。apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization resources: - ... # existing resource items - bil/skudescriptionsYAML ファイルと kustomize ファイルをステージングして commit します。
cd IAC_REPO_PATH git add "iac" git commit更新を GitLab に push します。
git -c http.sslVerify=false pushコードレビューとマージを待ちます。
指定されたクラスタに
SKUDescriptionオブジェクトが存在することを確認します。v1 組織の場合は、次のコマンドを実行します。
export KUBECONFIG=ORG_ADMIN_CLUSTER_KUBECONFIG kubectl get SKUDescription -n billing-systemORG_ADMIN_CLUSTER_KUBECONFIG は、組織管理クラスタの kubeconfig のパス(
/tmp/${ORG}-admin-kubeconfigなど)に置き換えます。v2 組織の場合は、次のコマンドを実行します。
export KUBECONFIG=MANAGEMENT_API_SERVER_KUBECONFIG kubectl get SKUDescription -n billing-systemMANAGEMENT_API_SERVER_KUBECONFIG は、管理 API サーバーの kubeconfig のパス(
/tmp/${ORG}-management-kubeconfigなど)に置き換えます。.
1.13 請求の定期的な使用状況を作成する
Distributed Cloud には、定期的な料金が発生する最小管理単位(SKU)が用意されています。ただし、Distributed Cloud では、特定の SKU の使用料金は追跡されません。このような情報を管理するには、RecurringUsage リソースを使用します。定期的な使用量の作成の詳細と手順については、定期的な使用量を作成するをご覧ください。
1.14 組織の課金を構成する
課金サブコンポーネントは、課金開始時刻に達するまで組織の費用の計算を開始しません。請求開始時間のデフォルト値は 9999-01-01T00:00:00-07:00 です。そのため、組織の準備が整ったと判断された後、IO は請求開始時間をオーバーライドして請求ワークフローを開始します。
1.14.1 請求開始時間を取得する
請求開始時間は、契約に記載されている履行期間の開始時にする必要があります。組織の課金開始時間がまだ設定されていない場合は、プログラム管理オフィス(PMO)にお問い合わせください。
1.14.2 請求先お支払いアカウントを組織にマッピングする
Google Distributed Cloud(GDC)のエアギャップ環境では、プロジェクトと組織の費用を追跡するために請求先アカウントが必要です。請求先アカウントを組織またはプロジェクトにリンクしないと、リソースに関連付けられた費用データが失われます。
サービスの使用料金を顧客に請求するには、組織内のすべての請求先アカウントで単一の料金表を使用します。
1.14.2.1 始める前に
続行する前に、セキュリティ管理者に次の必要なロールを付与するよう依頼してください。これらのロールは、プロジェクト レベルの課金の場合はプロジェクト Namespace に、組織レベルの課金の場合はプラットフォーム Namespace にバインドされます。
組織の請求先アカウント管理者:
BillingAccountリソースの作成、管理、バインドを行います。セキュリティ管理者にorganization-billing-account-adminロールを付与するよう依頼します。組織の請求先アカウント ユーザー:
BillingAccountリソースの読み取り、一覧表示、バインドを行います。セキュリティ管理者にorganization-billing-account-userロールを付与するよう依頼します。組織の請求先アカウント管理者:
BillingAccountBindingリソースの読み取り、一覧表示、作成、更新を行います。セキュリティ管理者にorganization-billing-managerロールを付与するよう依頼します。
1.14.2.2 新しい請求先アカウントを作成する
請求先アカウントは、name と namespace によって一意に識別されます。請求先アカウントを作成するには、カスタム リソースを使用して name と namespace を確立します。
YAML ファイルを作成し、
BillingAccountカスタム リソースと次の内容を追加します。apiVersion: billing.gdc.goog/v1 kind: BillingAccount metadata: namespace: platform name: BIL_ACCOUNT_NAME spec: displayName: BIL_DISPLAY_NAME paymentSystemConfig: cloudBillingConfig: accountID: "012345-6789AB-CDEF01"次の変数を置き換えます。
- BIL_ACCOUNT_NAME: 請求先アカウントの名前。たとえば、
test-billing-account。 - BIL_DISPLAY_NAME: 請求先アカウントの表示名。たとえば、
"Test Billing Account"。
- BIL_ACCOUNT_NAME: 請求先アカウントの名前。たとえば、
お支払い構成のタイプを確認します。Distributed Cloud 請求先アカウントには、次のいずれかの支払い構成が必要です。
cloudBillingConfig: デフォルトの支払い構成。この構成には、Cloud 請求先アカウント ID が保存されます。customConfig: パートナーが組織に請求するための支払い構成を保存するためのカスタム構成。customConfigは、Key-Value 文字列のディクショナリをサポートしています。必須のキーはpayment-config-typeです。
次の例は、さまざまな支払い構成の
BillingAccountYAML ファイル スニペットを示しています。cloudBillingConfigspec: paymentSystemConfig: cloudBillingConfig: accountID: CLOUD_BILLING_ACCOUNT_IDCLOUD_BILLING_ACCOUNT_IDは、実際のGoogle Cloud 課金アカウント ID に置き換えます。customConfigspec: paymentSystemConfig: customConfig: "payment-config-type": PAYMENT_CONFIG_TYPEPAYMENT_CONFIG_TYPEは、カスタム課金構成用に選択したお支払い構成タイプに置き換えます。組織の
customConfig構成に関する情報がない場合は、次の詳細を入力します。spec: paymentSystemConfig: customConfig: "payment-config-type": "N/A"次の YAML ファイルは、
cloudBillingConfig構成を含む完全なBillingAccountリソースを示しています。apiVersion: billing.gdc.goog/v1 kind: BillingAccount metadata: namespace: platform name: test-billing-account spec: displayName: "Test Billing Account" paymentSystemConfig: cloudBillingConfig: accountID: "012345-6789AB-CDEF01"カスタム リソースの YAML ファイルを保存します。
kubectlCLI を実行して、課金対象の特定の組織またはプロジェクトの組織クラスタ内のリソースを適用します。kubectl --kubeconfig $ORG_KUBECONFIG apply -f billingaccount.yaml
1.14.2.3 組織を請求先アカウントにリンクする
組織を BillingAccount にリンクする手順は次のとおりです。
YAML ファイル
billingaccountbinding.yamlに次の内容を追加します。billingAccountRefセクションで、リンクするBillingAccountのnameフィールドのコンテンツをnameフィールドに入力します。metadataセクションで、namespaceフィールドにBillingAccountリソースの同じフィールドのコンテンツを入力します。この例では、組織の Namespace はplatformです。
apiVersion: billing.gdc.goog/v1 kind: BillingAccountBinding metadata: name: billing namespace: platform spec: billingAccountRef: name: BIL_ACCOUNT_NAME namespace: platformbillingaccountbinding.yamlファイルを適用します。kubectl --kubeconfig $ORG_KUBECONFIG apply -f billingaccountbinding.yaml
1.14.3 始める前に
続行する前に、セキュリティ管理者に billing-system Namespace の組織管理者クラスタで請求モニタリング(bil-monitor)ロールを付与するよう依頼してください。この権限により、検証に関連するリソースを読み取ることができます。
1.14.4 請求開始時間をオーバーライドする
次のパスで 2 つの YAML ファイルを作成します。
infrastructure/zonal/zones/ZONE_NAME/root-admin/components/bil/ORG_NAME/bil-monetizer-override.yaml。infrastructure/zonal/zones/ZONE_NAME/root-admin/components/bil/ORG_NAME/bil-invoice-override.yaml。- 必要なサブディレクトリがない場合は、ファイルごとに作成します。
SubcomponentOverrideリソースと次の内容を各ファイルに追加します。お客様への請求の場合:
bil-monetizer-override.yamlファイル:apiVersion: lcm.private.gdc.goog/v1 kind: SubcomponentOverride metadata: name: bil-monetizer namespace: ORG_NAME spec: subComponentRef: bil-monetizer backend: operableParameters: billingStartTime: BILLING_START_TIME billingTimezone: BILLING_TIMEZONEbil-invoice-override.yamlファイル:apiVersion: lcm.private.gdc.goog/v1 kind: SubcomponentOverride metadata: name: bil-invoice namespace: ORG_NAME spec: subComponentRef: bil-invoice backend: operableParameters: billingStartTime: BILLING_START_TIME billingTimezone: BILLING_TIMEZONE
パートナーが運営する請求の場合:
各 YAML ファイルの末尾に
enablePartnerBilling: trueフラグを追加します。bil-monetizer-override.yamlファイル:apiVersion: lcm.private.gdc.goog/v1 kind: SubcomponentOverride metadata: name: bil-monetizer namespace: ORG_NAME spec: subComponentRef: bil-monetizer backend: operableParameters: billingStartTime: BILLING_START_TIME billingTimezone: BILLING_TIMEZONE enablePartnerBilling: truebil-invoice-override.yamlファイル:apiVersion: lcm.private.gdc.goog/v1 kind: SubcomponentOverride metadata: name: bil-invoice namespace: ORG_NAME spec: subComponentRef: bil-invoice backend: operableParameters: billingStartTime: BILLING_START_TIME billingTimezone: BILLING_TIMEZONE enablePartnerBilling: true
次の変数を置き換えます。
ORG_NAME: 組織の名前。例:
org-1。BILLING_START_TIME: 課金ワークフローを開始するタイムスタンプ。タイムスタンプは RFC 3339 形式に従う必要があります。たとえば、請求ワークフローが 2024 年 1 月 1 日に米国とカナダの太平洋標準時(UTC-8)のタイムゾーンで開始される場合は、タイムスタンプ値を
2024-01-01T00:00:00-08:00として追加します。BILLING_TIMEZONE: 課金ワークフローのタイムゾーン。タイムゾーンは RFC 3339 形式に準拠している必要があります。たとえば、請求のタイムゾーンが米国とカナダの太平洋標準時(UTC-8)の場合、タイムゾーンの値を
PST8PDTとして追加します。
bil-monetizer-override-mp.yamlファイル:apiVersion: lcm.private.gdc.goog/v1 kind: SubcomponentOverride metadata: name: bil-monetizer namespace: ORG_NAME-mp spec: subComponentRef: bil-monetizer backend: operableParameters: billingStartTime: BILLING_START_TIME billingTimezone: BILLING_TIMEZONE enablePartnerBilling: truebil-invoice-override-mp.yamlファイル:apiVersion: lcm.private.gdc.goog/v1 kind: SubcomponentOverride metadata: name: bil-invoice namespace: ORG_NAME-mp spec: subComponentRef: bil-invoice backend: operableParameters: billingStartTime: BILLING_START_TIME billingTimezone: BILLING_TIMEZONE enablePartnerBilling: true
YAML ファイルを保存して
infrastructure/zonal/zones/ZONE_NAME/root-admin/components/bil/ORG_NAMEフォルダに保存します。必要な kustomization ファイルとともに YAML ファイルを含む pull リクエストを作成します。
1.14.5 請求開始時刻を検証する
収益化と請求書の生成の両方で、請求の開始時刻をオーバーライドしていることを確認します。
kubectl --kubeconfig ORG_ADMIN_KUBECONFIG \
get deployment billing-monetizer -n billing-system \
-o jsonpath='{.spec.template.spec.containers[0].args}{"\n"}'
kubectl --kubeconfig ORG_ADMIN_KUBECONFIG \
get cronjob billing-ig-job -n billing-system \
-o jsonpath='{.spec.jobTemplate.spec.template.spec.containers[0].args}{"\n"}'
1.15 組織の管理クラスタでオブジェクト ストレージ プロキシのネットワーク ポリシーを構成する
1.15.1 ネットワーク ポリシーの YAML ファイルを作成する
allow-obs-system-ingress-traffic ネットワーク ポリシーの YAML ファイル(networkpolicy.yaml など)を作成します。
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
annotations:
policy.network.gke.io/enable-logging: "true"
resourcemanager.gdc.goog/propagated-name: allow-obs-system-ingress-traffic
name: allow-obs-system-ingress-traffic
namespace: obj-system
spec:
ingress:
- from:
- namespaceSelector:
matchLabels:
resourcemanager.gdc.goog/project-name: obs-system
podSelector: {}
policyTypes:
- Ingress
1.15.2 ネットワーク ポリシーを組織の管理クラスタに適用する
kubectl --kubeconfig ORG_ADMIN_KUBECONFIG apply -f networkpolicy.yaml
1.16. バックアップ サイトを作成する
障害復旧サポートを利用する場合は、バックアップ サイトで上記の手順を再度行う必要があります。障害復旧が有効になっていない場合は、このセクションをスキップしてください。
- セクション 1.4 に沿って対応します。- 1.9. バックアップ サイト用の別の組織を作成します。
1.17. 組織の作成に関するトラブルシューティング
1.17.1. デプロイされたすべてのリソースが正常で存在することを確認する
組織の作成プロセスでは、複数の Kubernetes クラスタに複数のリソースが作成されます。まず、デプロイされたリソースを確認し、良好な状態であることを確認します。以降のセクションでは、operations という名前の組織に対して作成されたリソースの概要について説明します。
1.17.2. ルート管理クラスタにデプロイされたすべてのリソースを確認する
次の手順を完了して、ルート管理クラスタ内のすべてのリソースが正常で存在することを確認します。
IAM-R0004 に従って、ルート管理クラスタに必要な kubeconfig 構成を取得します。次の環境変数とエイリアスをこの検証手順に設定してください。
export KUBECONFIG=ROOT_ADMIN_KUBECONFIG export ORG="ORG_NAME" alias k=kubectlファイアウォール リソースが使用可能であることを確認します。
ファイアウォールへの SSH 接続を確立し、新しい
vsysが作成されていることを確認します。show config running | match 'vsys[0-9] '出力は次のようになります。
vsys1 { vsys2 {FirewallVirtualSystemリソースを確認します。k get firewallvirtualsystem -n gpc-system出力は次のようになります。
NAME AGE kb-ab-fw01-internal-vsys2-operations 4d19h kb-ab-fw01-vsys-root-admin 13d kb-ac-fw01-internal-vsys2-operations 4d19h kb-ac-fw01-vsys-root-admin 13d
ストレージ リソースが使用可能であることを確認します。
StorageVirtualMachineリソースを確認します。k get StorageVirtualMachine -n gpc-system出力は次のようになります。
NAME STORAGEORG MGMTIP READY AGE operations-admin operations 10.0.2.10 True 5d22h operations-user operations 10.0.2.18 True 5d22h root-admin root 10.0.2.2 True 13d
HSM リソースが使用可能であることを確認します。
HSM を確認します。
k get hsms -n gpc-system出力は次のようになります。
NAMESPACE NAME AGE IP READY REASON gpc-system zk-aa-hsm01 2h 198.51.100.192 True ReconcileHSMSuccess gpc-system zk-aa-hsm02 2h 198.51.100.193 True ReconcileHSMSuccess gpc-system zk-ab-hsm01 2h 198.51.100.194 True ReconcileHSMSuccessHSM クラスタを確認します。
k get hsmcluster -n gpc-system出力は次のようになります。
NAMESPACE NAME AGE READY REASON gpc-system hsmcluster 38h True ReconcileHSMClusterSuccessHSM テナントを確認します。
k get hsmtenant -A出力は次のようになります。
NAMESPACE NAME AGE READY REASON gpc-system root 13d True ReconcileHSMTenantSuccess operations operations 5d22h True ReconcileHSMTenantSuccess
マシンとノードのリソースが使用可能であることを確認します。
AddressPoolClaimリソースを確認します。k get addresspoolclaims -A出力は次のようになります。
NAMESPACE NAME AGE operations admin-control-plane-node-pool 5d23h operations operations-admin-dns-default-ipv4-ipc 5d23h operations operations-admin-load-balancer-default-ipv4-ipc 5d23hNodePoolClaimリソースを確認します。k get nodepoolclaims -A出力は次のようになります。
NAMESPACE NAME AGE operations admin-control-plane-node-pool 5d23h root root-admin-control-plane 13dNodePoolリソースを確認します。k get nodepool -A出力は次のようになります。
NAMESPACE NAME READY RECONCILING STALLED UNDERMAINTENANCE UNKNOWN operations admin-control-plane-node-pool 3 0 0 0 0 root root-admin-control-plane 3 0 0 0 0ベアメタル クラスタを確認します。
k get baremetalclusters -A出力は次のようになります。
NAMESPACE NAME CLUSTER READY operations operations-admin operations-admin true root root-admin root-admin trueベアメタル マシンを確認します。
k get baremetalmachines -A出力は次のようになります。
NAMESPACE NAME CLUSTER READY INSTANCEID MACHINE operations 10.251.82.28 operations-admin true baremetal://10.251.82.28 10.251.82.28 operations 10.251.82.29 operations-admin true baremetal://10.251.82.29 10.251.82.29 operations 10.251.82.30 operations-admin true baremetal://10.251.82.30 10.251.82.30 root 10.251.80.2 root-admin true baremetal://10.251.80.2 10.251.80.2 root 10.251.80.3 root-admin true baremetal://10.251.80.3 10.251.80.3 root 10.251.80.4 root-admin true baremetal://10.251.80.4 10.251.80.4サーバーを確認します。
provisioned状態になっています。k get servers -n gpc-system | grep provisioned出力は次のようになります。
kb-aa-bm01 13d o1-highmem1-40-gdc-metal 10.251.252.61 10.251.80.2 10.251.252.62 provisioned true kb-aa-bm02 13d o1-standard1-64-gdc-metal 10.251.252.63 10.251.82.28 10.251.252.64 provisioned true kb-aa-bm03 13d o1-standard1-64-gdc-metal 10.251.252.65 10.251.82.29 10.251.252.66 provisioned true kb-aa-bm04 13d o1-standard1-64-gdc-metal 10.251.252.67 10.251.82.30 10.251.252.68 provisioned true kb-aa-bm08 13d o1-highmem1-96-gdc-metal 10.251.252.75 10.0.35.2 10.251.252.76 provisioned true kb-aa-bm10 13d o1-highmem1-96-gdc-metal 10.251.252.79 10.0.35.4 10.251.252.80 provisioned true kb-aa-bm14 13d o1-highgpu1-48-gdc-metal 10.251.252.87 10.0.35.9 10.251.252.88 provisioned true kb-aa-bm15 13d o1-highgpu1-48-gdc-metal 10.251.252.89 10.0.35.10 10.251.252.90 provisioned true kb-aa-bm16 13d o1-highgpu1-48-gdc-metal 10.251.252.91 10.0.35.11 10.251.252.92 provisioned true kb-ab-bm01 13d o1-highmem1-40-gdc-metal 10.251.253.61 10.251.80.3 10.251.253.62 provisioned true kb-ac-bm01 13d o1-highmem1-40-gdc-metal 10.251.254.61 10.251.80.4 10.251.254.62 provisioned trueKubernetes クラスタを確認します。
k get cluster -A出力は次のようになります。
NAMESPACE NAME AGE operations operations-admin 5d23h root root-admin 13dkubeconfig の Secret を確認します。
k get secrets -A | grep kubeconfig出力は次のようになります。
operations operations-admin-kubeconfig Opaque 1 5d22h root root-admin-kubeconfig Opaque 1 13d
1.17.3. v1 組織クラスタにデプロイされたすべてのリソースを確認する
次の手順を完了して、v1 組織の組織管理クラスタとシステム クラスタ内のすべてのリソースが正常に存在することを確認します。v2 組織がある場合は、次のセクションに進みます。
1.17.3.1. 組織管理クラスタにデプロイされたすべてのリソースを確認する
IAM-R0004 に従って、ルート管理クラスタに必要な kubeconfig 構成を取得します。次の環境変数とエイリアスをこの検証手順に設定してください。
export ORG="ORG_NAME" export KUBECONFIG=ROOT_ADMIN_KUBECONFIG k get secrets -n ${ORG} ${ORG}-admin-kubeconfig -o jsonpath='{.data.value}' \ | base64 -d > /tmp/${ORG}-admin-kubeconfig export ORG_ADMIN_KUBECONFIG=/tmp/${ORG}-admin-kubeconfig alias ka="kubectl --kubeconfig ${ORG_ADMIN_KUBECONFIG}"マシンとノードのリソースが使用可能であることを確認します。
ベアメタル クラスタを確認します。
ka get baremetalclusters -A出力は次のようになります。
NAMESPACE NAME CLUSTER READY operations-system-cluster operations-system operations-system trueベアメタル マシンを確認します。
ka get baremetalmachines -A出力は次のようになります。
NAMESPACE NAME CLUSTER READY INSTANCEID MACHINE operations-system-cluster 10.0.35.10 operations-system true baremetal://10.0.35.10 10.0.35.10 operations-system-cluster 10.0.35.11 operations-system true baremetal://10.0.35.11 10.0.35.11 operations-system-cluster 10.0.35.2 operations-system true baremetal://10.0.35.2 10.0.35.2 operations-system-cluster 10.0.35.3 operations-system true baremetal://10.0.35.3 10.0.35.3 operations-system-cluster 10.0.35.4 operations-system true baremetal://10.0.35.4 10.0.35.4 operations-system-cluster 10.0.35.9 operations-system true baremetal://10.0.35.9 10.0.35.9 operations-system-cluster 10.251.82.205 operations-system true baremetal://10.251.82.205 10.251.82.205 operations-system-cluster 10.251.82.206 operations-system true baremetal://10.251.82.206 10.251.82.206 operations-system-cluster 10.251.82.207 operations-system true baremetal://10.251.82.207 10.251.82.207 operations-system-cluster 10.251.82.232 operations-system true baremetal://10.251.82.232 10.251.82.232マシンを確認します。
ka get machines -A出力は次のようになります。
NAMESPACE NAME NODEPOOL operations-system-cluster 10.0.35.10 worker-node-pool-o1-highgpu1-48-gdc-metal operations-system-cluster 10.0.35.11 worker-node-pool-o1-highgpu1-48-gdc-metal operations-system-cluster 10.0.35.2 worker-node-pool-o1-highmem1-96-gdc-metal operations-system-cluster 10.0.35.3 worker-node-pool-o1-highmem1-96-gdc-metal operations-system-cluster 10.0.35.4 worker-node-pool-o1-highmem1-96-gdc-metal operations-system-cluster 10.0.35.9 worker-node-pool-o1-highgpu1-48-gdc-metal operations-system-cluster 10.251.82.205 control-plane-node-pool operations-system-cluster 10.251.82.206 control-plane-node-pool operations-system-cluster 10.251.82.207 control-plane-node-pool operations-system-cluster 10.251.82.232 control-plane-node-poolVirtualmachinesInstanceリソースを確認します。ka get virtualmachineinstances -A出力は次のようになります。
NAMESPACE NAME AGE PHASE IP NODENAME READY operations-system-cluster vm-19753801 2d16h Running 10.251.82.207 kb-aa-bm02 True operations-system-cluster vm-3661f750 4d19h Running 10.251.82.232 kb-aa-bm03 True operations-system-cluster vm-3c77c480 5d20h Running 10.251.82.206 kb-aa-bm04 TrueNodePoolリソースを確認します。ka get nodepools -A出力は次のようになります。
NAMESPACE NAME READY RECONCILING STALLED UNDERMAINTENANCE UNKNOWN operations-system-cluster control-plane-node-pool 3 0 0 0 0 operations-system-cluster worker-node-pool-o1-highgpu1-48-gdc-metal 3 0 0 0 0 operations-system-cluster worker-node-pool-o1-highmem1-96-gdc-metal 2 0 0 0 0Kubernetes クラスタを確認します。
ka get clusters -A出力は次のようになります。
NAMESPACE NAME AGE operations-system-cluster operations-system 5d20hノードを確認します。
ka get nodes -A出力は次のようになります。
NAME STATUS ROLES AGE VERSION kb-aa-bm02 Ready control-plane,master 5d23h v1.23.5-gke.1505 kb-aa-bm03 Ready control-plane,master 5d23h v1.23.5-gke.1505 kb-aa-bm04 Ready control-plane,master 5d23h v1.23.5-gke.1505kubeconfig の Secret を確認します。
ka get secret -n ${ORG}-system-cluster ${ORG}-system-kubeconfig出力は次のようになります。
NAME TYPE DATA AGE operations-system-kubeconfig Opaque 1 5d20h
1.17.3.2. システム ユーザー クラスタにデプロイされたすべてのリソースを確認する
次の手順に沿って、システム クラスタ内のすべてのリソースが正常に存在することを確認します。
IAM-R0004 に従って、ルート管理クラスタに必要な kubeconfig 構成を取得します。次の環境変数とエイリアスをこの検証手順に設定してください。
export ORG="ORG_NAME" export KUBECONFIG=ROOT_ADMIN_KUBECONFIG k get secrets -n ${ORG} ${ORG}-admin-kubeconfig -o jsonpath='{.data.value}' \ | base64 -d > /tmp/${ORG}-admin-kubeconfig export ORG_ADMIN_KUBECONFIG=/tmp/${ORG}-admin-kubeconfig alias ka="kubectl --kubeconfig ${ORG_ADMIN_KUBECONFIG}" ka get secret -n ${ORG}-system-cluster ${ORG}-system-kubeconfig -o jsonpath='{.data.value}' \ | base64 -d > /tmp/${ORG}-system-kubeconfig export SYSTEM_KUBECONFIG=/tmp/${ORG}-system-kubeconfig alias ku="kubectl --kubeconfig ${SYSTEM_KUBECONFIG}"マシンとノードのリソースが使用可能であることを確認します。
VirtualmachineInstanceリソースを確認します。ku get vmi -A出力は次のようになります(ユーザー クラスタが作成されている場合)。
NAMESPACE NAME AGE PHASE IP NODENAME READY gdc-vm-infra vm-61aa554d 3d21h Running 10.0.35.6 kb-aa-bm10 True gdc-vm-infra vm-b627da1f 3d21h Running 10.0.35.5 kb-aa-bm08 Trueノードを確認します。
ku get nodes出力は次のようになります。
NAME STATUS ROLES AGE VERSION kb-aa-bm10 Ready worker 5d20h v1.23.5-gke.1505 kb-aa-bm14 Ready worker 38h v1.23.5-gke.1505 kb-aa-bm15 Ready worker 38h v1.23.5-gke.1505 kb-aa-bm16 Ready worker 38h v1.23.5-gke.1505 vm-19753801 Ready control-plane,master 5d21h v1.23.5-gke.1505 vm-3661f750 Ready control-plane,master 4d20h v1.23.5-gke.1505 vm-3c77c480 Ready control-plane,master 5d20h v1.23.5-gke.1505GPU の割り当てを確認します。
ku get gpuallocations -A出力は次のようになります。
NAMESPACE NAME ALLOCATED DEVICEMODEL vm-system kb-aa-bm14 true A100 PCIe 40GB vm-system kb-aa-bm15 true A100 PCIe 40GB vm-system kb-aa-bm16
1.17.4. v2 組織クラスタにデプロイされたすべてのリソースを確認する
次の手順を完了して、v2 組織の組織インフラストラクチャ クラスタ内のすべてのリソースが正常に存在することを確認します。v1 組織がある場合は、このセクションをスキップします。
IAM-R0004 に従って、ルート管理クラスタに必要な kubeconfig 構成を取得します。次の環境変数とエイリアスをこの検証手順に設定してください。
export ORG="ORG_NAME" export KUBECONFIG=ROOT_ADMIN_KUBECONFIG k get secrets -n ${ORG} ${ORG}-admin-kubeconfig -o jsonpath='{.data.value}' \ | base64 -d > /tmp/${ORG}-admin-kubeconfig export ORG_ADMIN_KUBECONFIG=/tmp/${ORG}-admin-kubeconfig alias ka="kubectl --kubeconfig ${ORG_ADMIN_KUBECONFIG}"ノードと API サーバーが正常な状態であることを確認します。
ノードを確認します。
ka get nodes -A出力は次のようになります。
NAME STATUS ROLES AGE VERSION kb-aa-bm02 Ready control-plane,master 5d23h v1.23.5-gke.1505 kb-aa-bm03 Ready control-plane,master 5d23h v1.23.5-gke.1505 kb-aa-bm04 Ready control-plane,master 5d23h v1.23.5-gke.1505 kb-aa-bm05 Ready worker 5d23h v1.23.5-gke.1505 kb-aa-bm06 Ready worker 5d23h v1.23.5-gke.1505 kb-aa-bm07 Ready worker 5d23h v1.23.5-gke.1505kubeconfig の Secret を確認します。
ka get secret -n management-kube-system kube-admin-remote-kubeconfig出力は次のようになります。
NAME TYPE DATA AGE kube-admin-remote-kubeconfig Opaque 1 5d20h
GPU の割り当てを確認して、GPU リソースが準備できていることを確認します(該当する場合)。
ka get gpuallocations -A出力は次のようになります。
NAMESPACE NAME ALLOCATED DEVICEMODEL vm-system kb-aa-bm14 true A100 PCIe 40GB vm-system kb-aa-bm15 true A100 PCIe 40GB vm-system kb-aa-bm16
1.17.5. すべての組織リソースが調整されていることを確認する
ターゲットが 2 つのゾーン(zone-1 と zone-2)を持つ operations 組織の作成であると仮定して、グローバル ルート管理クラスタとゾーン ルート管理クラスタ内の組織関連のリソースがすべて正常で存在することを確認するには、次の操作を行います。
グローバル ルート管理者 API にアクセスするに沿って、グローバル API サーバーにアクセスし、グローバル ルート管理者 API kubectl に次のエイリアスを使用します。
alias kga='kubectl --kubeconfig ROOT_ADMIN_KUBECONFIG export ORG="ORG_NAME"グローバル組織リソースが使用可能であることを確認します。
グローバル
Organizationリソースを確認します。kga get organization -A出力は次のようになります。
NAMESPACE NAME READY gpc-system operations gpc-system rootグローバル
OrganizationReplicaリソースを確認します。kga get organizationreplica -A出力は次のようになります。
NAMESPACE NAME AGE gpc-system operations-zone1 3d16h gpc-system operations-zone2 3d16h gpc-system root-zone1 3d17h gpc-system root-zone2 3d16hグローバル
OrganizationZonalConfigリソースを確認します。kga get organizationzonalconfig -A出力は次のようになります。
NAMESPACE NAME AGE gpc-system operations-zone1-config 3d16h gpc-system operations-zone2-config 3d16hグローバル
OrganizationZonalConfigReplicaリソースを確認します。kga get organizationzonalconfigreplica -A出力は次のようになります。
NAMESPACE NAME AGE gpc-system operations-zone1-config-zone1 3d16h gpc-system operations-zone1-config-zone2 3d16h gpc-system operations-zone2-config-zone1 3d16h gpc-system operations-zone2-config-zone2 3d16h
ゾーンルート管理クラスタの kubeconfig 構成エイリアスを設定します。
alias ka='kubectl --kubeconfig /root/GDC_VERSION/root-admin/root-admin-kubeconfig'ゾーン組織リソースが使用可能であることを確認します。
Organizationリソースを確認します。ka get organization -A出力は次のようになります。
NAMESPACE NAME READY gpc-system operations True gpc-system root TrueOrganizationReplicaリソースを確認します。ka get organizationreplica -A出力は次のようになります。
NAMESPACE NAME AGE gpc-system operations 3d16h gpc-system root 3d17hOrganizationZonalConfigReplicaリソースを確認します。ka get organizationzonalconfigreplica -A出力は次のようになります。
NAMESPACE NAME AGE gpc-system operations-zone1-config 3d16h gpc-system operations-zone2-config 3d16h
組織へのアクセスをすべてのアドレスに許可するの手順に沿って、ソースサイトからバックアップ サイトへの組織管理クラスタで DCI トラフィックを許可します。