0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

初期セットアップ(Cloud Foundry/Kyma)

0
Posted at

はじめに

「SAP AI Core技術連載」第3回。

SAP AI Coreの初期セットアップ(Cloud Foundry環境・Kyma環境)を扱う。前回(#2)はコンセプト(内部動作・AI API・リソースグループ)を扱った。次回(#4)は管理①(Gitリポジトリ・アプリケーション管理)を扱う。

Cloud Foundry環境での有効化

SAP AI Coreは、SAP BTP、Cloud Foundry環境の標準手順で有効化する。

Tip: BoosterのSet Up Account for SAP AI Coreを使うと、本章の手順の多くを自動化できる

SAP AI Coreをプロビジョニングすると、システムはサービスキーを生成する。このキーには、SAP AI Coreインスタンスへのアクセスに必要なURLと認証情報が含まれる。

SAP AI Coreはテナント対応の再利用サービスで、ゾーンID(サブアカウントを表す)に基づいてテナントを分離する。サブアカウント内にSAP AI Coreサービスインスタンスを作成すると、それがSAP AI Coreテナントを表す。

この「サブアカウント単位でテナントが分離される」という点は、複数プロジェクト・複数環境(dev/staging/prod等)でSAP AI Coreを使い分ける際の設計上の基準になる。 サブアカウントを分ければテナントも分離され、同一サブアカウント内でインスタンスを増やしてもテナントは増えない。

Note: SAP AI Coreはサービスインスタンス単位ではテナントを分離しない。同一サブアカウント内に複数のサービスインスタンスを作成しても、すべて同じSAP AI Coreテナントを参照する

4.1.1 サブアカウント作成

1. SAP BTPコックピットでAccount Explorerを開き、Create > Subaccountをクリック
2. サブアカウント名を入力し、リージョンを選択(親はグローバルアカウント名がデフォルト)
3. (任意)本番用途の場合、AdvancedでUsed for productionにチェック
   ※この設定自体はサブアカウントの構成を変えない。クラウド運用者がミッションクリティカルな
     アカウントのインシデント対応時に参照する目印
4. Createをクリック
5. Account Explorerに戻り、作成したサブアカウントを確認

4.1.2 Cloud Foundry有効化

1. サブアカウントをクリックし、OverviewページでEnable Cloud Foundryを選択
2. Cloud Foundry環境インスタンスの基本情報を入力し、Createをクリック

4.1.3 スペース作成

1. サブアカウントのOverviewページでCreate Spaceを選択
2. スペース名を入力し、必要なロールを割り当ててCreateをクリック

4.1.4 サービスプラン追加

1. SAP BTPコックピットでグローバルアカウントを開き、Entitlements > Entity Assignmentsを選択
2. 入力補助でサブアカウントを選択し、Editをクリック
3. Add Service Plansを選択
4. SAP AI Coreを選び、使用するサービスプランを選択
   ※生成AI機能を使う場合はExtendedプランを選ぶこと
5. 変更を保存

サービスプランの選び方

  • Free:限られたリソースでサービスを試す。コミュニティサポートのみ
  • Standard:生成AIを使わない本番ワークロード向け
  • Extended:Generative AI Hubへのアクセスを含む本番ワークロード向け

Tip: ハンズオンで試したい場合、30日間の無料トライアルでGenerative AI Hubを試せる

プラン比較

  • Free

    • アカウントタイプ:Enterprise account(SAP BTP free tier限定、SAP BTP Trialでは不可)
    • サポート:コミュニティのみ(SLAなし)
    • Generative AI Hub:含まれない
    • 価格:無料
    • インスタンス数:サブアカウントあたり1つ(Standardと排他)
    • 実行/デプロイ:同時に1つのみ
    • リソースグループ:デフォルトのみ
    • リソースプラン:Starterのみ
    • アップグレード規則:Standardへのアップグレードは可能。Standardからのダウングレードは不可
  • Standard

    • アカウントタイプ:Enterprise account
    • サポート:SLA付きフルSAPサポート
    • Generative AI Hub:含まれない
    • 価格:リソース従量課金+ベースライン課金
    • インスタンス数:1つ以上(Freeと排他)
    • 実行/デプロイ:複数可
    • リソースグループ:複数可(クォータあり)
    • リソースプラン:選択可能
    • アップグレード規則:同一サブアカウントにFreeプランが有効な場合は作成不可
  • Extended

    • アカウントタイプ:Enterprise account
    • サポート:SLA付きフルSAPサポート
    • Generative AI Hub:含まれる
    • 価格:リソース従量課金+モデル/トークン使用量課金
    • インスタンス数:1つ以上
    • 実行/デプロイ:複数可
    • リソースグループ:複数可(クォータあり)
    • リソースプラン:選択可能
    • アップグレード規則:同一サブアカウントにFreeプランが有効な場合は作成不可

Note: 同一サブアカウントでFree・Standardを同時に稼働させることはできない。Extendedも同様のルールに従う

クォータ

  • デプロイメントクォータ:テナントごとにデプロイ数・レプリカ数のデフォルト上限がある。上限到達時はデプロイが作成されず通知される。既存デプロイの削除で空きを作るか、コンポーネントCA-ML-AICへのチケット起票で増枠依頼できる
  • リソースグループクォータ:テナントあたり最大50個。到達するとエラーになる。削除するか増枠チケットを起票する
  • テナント全体シークレットクォータ:テナントあたり最大5個。到達するとエラーになる。削除するか増枠チケットを起票する

実務上の留意点として、増枠チケットの処理には一定のリードタイムがかかることが想定される。本番稼働直前にクォータ超過へ気づくと計画に影響するため、利用規模が見えた時点で早めに増枠申請を計画しておくとよい

Freeプランのセットアップ

前提:SAP BTP free tierのグローバルアカウントを保有(SAP BTP Trialでは不可)

1. SAP BTPコックピットでグローバルアカウントを開く
2. サブアカウントに移動
3. Instances and Subscriptionsを選択
4. New Instance or Subscriptionを選択
5. ServiceでSAP AI Coreを検索
6. PlanでFreeを選択

サービスプランの更新

Freeプランからスタンダード/エクステンデッドプランへ、データ・モデルを保持したまま更新できる。更新中、学習済みモデルを含む全メタデータ・トランザクションデータは保持される。Standardからextendedへの更新も可能。

Restriction: Standard/Extendedからfreeへのダウングレードは不可。Extendedからstandardへのダウングレードも不可。Standard/Extendedインスタンスを削除した場合、新たなstandardプランインスタンスは作成できない

1. SAP BTPコックピットでグローバルアカウント→サブアカウントに移動
2. Instances and Subscriptionsを選択
3. SAP AI Coreを検索
4. サブスクリプション行末の(…)からUpdateを選択
5. ウィザードでdefaultを選択しUpdate Subscriptionをクリック

更新後、Freeプランの制限は解除され、データは新プランへ自動移行、ユーザー権限は変わらない。

4.1.5 サービスインスタンス作成

1. サブアカウントでService Marketplaceを開く(SAP AI Coreのタイルがある)
2. タイルを開きCreateをクリック
3. サービスインスタンス名を入力しNext(他項目はデフォルト)
4. JSONファイルアップロード機能は現時点未対応のためNextで進む
5. 内容を確認しCreate

作成されたインスタンスは、サブアカウントのInstances and Subscriptionsページで確認できる。

4.1.6 サービスキー作成

1. Instances and Subscriptionsページで対象インスタンスのドロップダウンから
   Create Service Keyを選択
2. サービスキー名を入力しCreate

Remember: BTP内のSAP AI Coreアクセス認証情報・証明書のローテーションは、リージョンポリシーに従いユーザー自身の責任で行う

クライアントシークレットの代わりにx.509証明書を使う場合、以下のJSONを調整してアップロードする。

{
  "xsuaa": {
    "credential-type": "x509",
    "x509": {
      "key-length": 2048,
      "validity": 7,
      "validity-type": "DAYS"
    }
  }
}
  • key-length:生成される秘密鍵のバイト長。デフォルト2048
  • validity:有効期間の単位数。デフォルト7
  • validity-type:有効期間の単位(DAYS/MONTHS/YEARS)。デフォルトDAYS

デフォルトの組み合わせは「長さ2048、有効期間7日」となる。

Note: デフォルトの有効期間は7日と短いため、x.509証明書方式を運用に使う場合は、証明書の再生成・ローテーションを頻繁に行う運用フローをあらかじめ組み込んでおく必要がある

サービスキーには、SAP AI Launchpad・SAP AI Core toolkit・サードパーティAPIプラットフォーム・curlからアクセスするためのURLと認証情報が含まれる。

クライアントシークレット方式の場合に含まれる項目

  • clientidclientsecreturl:認証トークン生成に使用
  • identityzoneidentityzoneid:テナントIDを表す
  • appname:サービスインスタンス分離が実装されている場合のインスタンス詳細
  • serviceurls(AI_API_URL含む):認証トークン生成後にSAP AI Coreと通信するためのURL

x.509証明書方式の場合に含まれる項目

  • certificatecerturlkey(RSA秘密鍵):認証トークン生成に使用
  • identityzoneidentityzoneidappnameserviceurlsはクライアントシークレット方式と同様

4.1.7 サービスキーの利用

サービスキー作成後、ローカルクライアント・他スペースのアプリ・デプロイ外のエンティティから、以下いずれかのインターフェースでSAP AI Coreにアクセスできる。

サードパーティAPIプラットフォームを使う場合

1. https://api.sap.com/api/AI_CORE_API/overview からJSONコレクションをダウンロード
2. APIプラットフォームにJSONファイルをインポート
3. コレクションを選択しAuthorizationタブを開く
4. Configure New Tokenでサービスキーの認証情報を入力し保存
   - Token Name:任意の識別名
   - Access Token URL:サービスキーのurlの末尾に/oauth/tokenを追加
   - Grant Type:Client Credentials
5. Variablesタブでサービスキーの baseUrl(AI_API_URL)を設定し保存
6. AuthorizationタブでGet New Access Tokenを実行し、認証完了後Use Tokenを選択

Note: x.509証明書を使う場合は、certificate・key・certUrlを用いてトークンを作成する(例:curl --cert <cert.pem> --key <key.pem> -XPOST <certUrl>/oauth/token -d 'grant_type=client_credentials&client_id=<client id>')

Curlを使う場合

# Linux環境変数の設定(URLは末尾スラッシュなし)
export CLIENTID=<clientid>        # service keyより
export CLIENTSECRET=<clientsecret> # service keyより
export XSUAA_URL=<url>             # service keyより
export AI_API_URL=<AI_API_URL>     # service keyより
# Windows PowerShellの場合
$env:CLIENTID = <clientid>
$env:CLIENTSECRET = <clientsecret>
$env:XSUAA_URL = <url>
$env:AI_API_URL = <AI_API_URL>

XSUAA OAuthトークンを取得する。

# Linux
SECRET=`echo -n "$CLIENTID:$CLIENTSECRET" | base64 -i - `
TOKEN=`curl --request POST \
  --url "$XSUAA_URL/oauth/token" \
  --header "Content-Type: application/x-www-form-urlencoded" \
  --data "grant_type=client_credentials" \
  --data "client_id=$CLIENTID" \
  --data "client_secret=$CLIENTSECRET"`

トークンが正しく取得できたかはecho $TOKENで確認する。長い英数字文字列(JWT)が返れば成功。

Note: トークンの有効期限は限られている。期限切れ後は同じ手順で再取得する

macOSでcurlコマンドを使う際はjqのインストールが必要な場合がある(brew install jq)。

Kyma環境での有効化

Kyma環境の有効化は、Cloud Foundryに比べてシンプルである。

1. Kyma環境でサービスインスタンスを作成
2. アプリケーションにサービスインスタンスをバインドするか、
   サービスキーを作成してサービスインスタンスと直接通信する

まとめ

  • Cloud Foundry環境の有効化は、サブアカウント作成→Cloud Foundry有効化→スペース作成→サービスプラン追加→サービスインスタンス作成→サービスキー作成、という流れで進む
  • SAP AI CoreはゾーンID(サブアカウント)単位でテナントを分離する。サービスインスタンス単位では分離しない
  • サービスプランはFree/Standard/Extendedの3種類。Standard⇔Free間は相互排他、Extendedへのアップグレードのみ可能でダウングレードは不可
  • デプロイメント・リソースグループ(最大50)・テナント全体シークレット(最大5)にはそれぞれクォータがある
  • サービスキーはクライアントシークレット方式・x.509証明書方式のいずれかで作成でき、サードパーティAPIプラットフォームまたはcurlで利用できる
  • Kyma環境の有効化は、サービスインスタンス作成+バインド(またはサービスキー作成)のみで完結する
  • 次回(#4)は管理①(Gitリポジトリ・アプリケーション管理)を扱う

用語解説

  • サブアカウント:SAP BTPグローバルアカウント配下の管理単位。SAP AI Coreのテナント分離の基準(ゾーンID)となる
  • サービスキー:SAP AI Coreインスタンスへのアクセスに必要なURL・認証情報が含まれる鍵情報
  • XSUAA:SAP BTPの認証・認可基盤。OAuthトークンの発行を担う
  • サービスプラン:SAP AI Coreの利用条件(価格・機能・クォータ)を定めるプラン区分。Free/Standard/Extendedの3種
  • クォータ:デプロイメント数・リソースグループ数・シークレット数などに設定される利用上限
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?