組織間のコミュニケーションを有効にする

このページでは、Gemini とお客様の組織間の通信を確立する方法について説明します。

お客様の組織は、推論ゲートウェイから、GenAI ルーターとモデルサーバーをホストする Gemini 組織にリクエストを送信します。GenAI Router の API Platform(APIP)統合は、Inference Gateway からのリクエストをチェックします。APIP 統合により、リクエストに適切な認証情報(STS トークン)とロール権限が付与されます。

Gemini とお客様の組織の詳細については、Gemini とお客様の組織をご覧ください。

始める前に

組織間のコミュニケーションを有効にするには、次の要件を満たしている必要があります。

  • 同じゾーンで実行されている既存のお客様の組織Gemini 組織
  • jq CLI ツールと yq CLI ツール。jqyq を含むツール コンテナの設定の詳細については、OOPS-P0065 ランブックをご覧ください。
  • お客様と Gemini の両方の組織の OIDC クライアントと ID プロバイダ。OIDC クライアントを作成するには、OC IT ADFS で OIDC クライアントを作成するをご覧ください。

Gemini とお客様の組織間の接続を確立する

Gemini on GDC の必要なネットワーク帯域幅を満たすために、Gemini 組織にはカスタム ハードウェア ネットワーキング構成が存在します。ハードウェアを使用して帯域幅を増やすには、インターコネクトを使用した追加の構成が必要です。

両方の組織間の接続を確立するには、ルート管理者クラスタに AttachmentGroup リソースを作成して、Gemini と顧客の組織をペア設定します。

カスタム リソースは次の例のようになります。

IDENTIFIER=ag-gdc-gemini
GEMINI_ORG_NAME=GEMINI_ORG_NAME
CUSTOMER_ORG_NAME=CUSTOMER_ORG_NAME

apiVersion: system.private.gdc.goog/v1alpha1
kind: AttachmentGroup
metadata:
  name: attachment-group-$IDENTIFIER
  namespace: gpc-system
spec:
  entities:
  - domainType: OrgMixed
    orgName: $CUSTOMER_ORG_NAME
  - domainType: OrgMixed
    orgName: $GEMINI_ORG_NAME
  identifier: $IDENTIFIER

次のように置き換えます。

  • GEMINI_ORG_NAME: Gemini 組織の名前。
  • CUSTOMER_ORG_NAME: 顧客組織の名前。

データ ネットワークを使用するように Inference Gateway リクエストを構成する

推論ゲートウェイ サービスと GenAI ルーター サービスは、それぞれの組織の組織インフラストラクチャ クラスタで実行されます。デフォルトでは、両方のサービスがインフラストラクチャ ネットワーク経由でルーティングされますが、データ ネットワークを使用する必要があります。

Gemini リクエストに十分なネットワーク帯域幅を確保するには、GenAI Router 宛ての Inference Gateway リクエストをデータ ネットワーク経由で転送する必要があります。デフォルトのインフラストラクチャ Ingress ゲートウェイではなく、Gemini 組織のデータ Ingress ゲートウェイを介してリクエストを転送するには、Istio ネットワーキング リソースを使用する必要があります。

GenAI Router 宛ての Inference Gateway リクエストがデータ ネットワークを使用するように構成する手順は次のとおりです。

  1. GenAI Router コンポーネントの完全修飾ドメイン名(FQDN)を取得します。

    KUBECONFIG=GEMINI_ORG_MGMT_KUBECONFIG_PATH
    
    GEN_AI_ROUTER_FQDN=$(kubectl --kubeconfig ${KUBECONFIG:?} \
      get dnsregistrations.network.private.gdc.goog/genai-router \
      -n gemini-system -o json | jq '.status.fqdn')
    
    echo $GEN_AI_ROUTER_FQDN
    

    GEMINI_ORG_MGMT_KUBECONFIG_PATH は、Gemini 組織の管理 API サーバーの kubeconfig ファイルのパスに置き換えます。

    出力は次の例のようになります。

    "genai-router.org-1.zone1.google.gdch.test"
    
  2. Gemini 組織からサービス アカウントの FQDN を取得します。

    GEM_ORG_SERVICE_ACCOUNT_SERVICE_FQDN=$(kubectl --kubeconfig ${KUBECONFIG:?} \
      get dnsregistrations.network.private.gdc.goog/service-accounts-infra-external \
      -n iam-system -o json | jq '.status.fqdn')
    
    echo $GEM_ORG_SERVICE_ACCOUNT_SERVICE_FQDN
    

    出力は次の例のようになります。

    "service-accounts.org-1.zone1.google.gdch.test"
    
  3. Gemini 組織のデータプレーンから Ingress ゲートウェイ ELB の IP アドレスを取得します。

    KUBECONFIG=GEMINI_ORG_MGMT_KUBECONFIG_PATH
    
    GEM_DATA_INGRSS_ELB_IP_ADDRESS=$(kubectl get Forwardingruleexternals/dataplane-ingress-gateway \
      -n istio-system -ojson | jq .status.cidr)
    
    echo $GEM_DATA_INGRSS_ELB_IP_ADDRESS
    

    出力は次の例のようになります。

    "10.137.14.0/32"
    
  4. GenAI Router と ID FQDN の ServiceEntry リソースを追加します。次に、Gemini 組織のデータプレーンから Ingress ゲートウェイ ELB IP アドレスの静的 IP アドレスに解決します。

    KUBECONFIG=CUS_ORG_CP_KUBECONFIG_PATH
    
    kubectl apply --kubeconfig ${KUBECONFIG:?} -f - << EOF
    apiVersion: networking.istio.io/v1beta1
    kind: ServiceEntry
    metadata:
      name: genai-service-entry
      namespace: aics-system
    spec:
      hosts:
      - $GEN_AI_ROUTER_FQDN
      ports:
      - number: 443
        name: https
        protocol: TLS
      location: MESH_EXTERNAL
      resolution: STATIC
      endpoints:
      - address: $GEM_DATA_INGRSS_ELB_IP_ADDRESS
    EOF
    
    kubectl apply --kubeconfig ${KUBECONFIG:?} -f - << EOF
    apiVersion: networking.istio.io/v1beta1
    kind: ServiceEntry
    metadata:
      name: identity-service-entry
      namespace: aics-system
    spec:
      hosts:
      -  $GEM_ORG_SERVICE_ACCOUNT_SERVICE_FQDN
      ports:
      - number: 443
        name: https
        protocol: TLS
      location: MESH_EXTERNAL
      resolution: STATIC
      endpoints:
      - address: $GEM_DATA_INGRSS_ELB_IP_ADDRESS
    EOF
    

    CUS_ORG_CP_KUBECONFIG_PATH は、顧客組織の組織インフラストラクチャ クラスタのデータプレーンの kubeconfig ファイルのパスに置き換えます。

  5. aics-system システム プロジェクトの下り(外向き)NAT IP アドレスを取得します。

    KUBECONFIG=CUS_ORG_MGMT_KUBECONFIG_PATH
    
    IG_PROJECT_EGRESS_IP=$(kubectl --kubeconfig ${KUBECONFIG:?} get projects/aics-system \
      -n gpc-system -ojson | jq .status.clusters[0].egressNATIPAddress)
    
    echo $IG_PROJECT_EGRESS_IP
    

    CUS_ORG_MGMT_KUBECONFIG_PATH は、顧客組織の管理 API サーバーの kubeconfig ファイルのパスに置き換えます。

    出力は次の例のようになります。

    "10.200.32.29"
    
  6. Gemini 組織から管理 API サーバーに組織ネットワーク ポリシーを適用して、顧客組織からのリクエストを許可します。

    KUBECONFIG=GEMINI_ORG_MGMT_KUBECONFIG_PATH
    
    kubectl apply --kubeconfig ${KUBECONFIG:?} -f - << EOF
    apiVersion: networking.gdc.goog/v1
    kind: OrganizationNetworkPolicy
    metadata:
      name: allow-all-access
      namespace: platform
    spec:
      subject:
        services:
          matchTypes:
          - "all"
      ingress:
        - from:
          - ipBlock:
             cidr: $IG_PROJECT_EGRESS_IP
    EOF
    

    GEMINI_ORG_MGMT_KUBECONFIG_PATH は、Gemini 組織の管理 API サーバーの kubeconfig ファイルのパスに置き換えます。

  7. 省略可: 顧客組織から管理 API サーバーに組織のネットワーク ポリシーを適用して、Gemini 組織へのリクエストを許可します。

    KUBECONFIG=CUS_ORG_MGMT_KUBECONFIG_PATH
    
    kubectl apply --kubeconfig ${KUBECONFIG:?} -f - << EOF
    apiVersion: networking.gdc.goog/v1
    kind: OrganizationNetworkPolicy
    metadata:
      name: allow-all-access
      namespace: platform
    spec:
      ingress:
      - from:
        - ipBlock:
            cidr: CUSTOMER_ORG_OIQ
      subject:
        services:
          matchTypes:
          - all
        subjectType: ManagedService
    EOF
    

    次のように置き換えます。

    • CUS_ORG_MGMT_KUBECONFIG_PATH: お客様の組織の管理 API サーバーの kubeconfig ファイルへのパス。
    • CUSTOMER_ORG_OIQ: 顧客組織の OIQ。

次のステップ