mcpField
C
cap-operator

cap-operator

github.com/sapクラウド・DevOps2541 回インストール今日更新
リポジトリ

cap-operator について

CAP Operator を通じて Kubernetes 上のマルチテナント SAP Cloud Application Programming Model アプリを運用するスキルです。ライフサイクル管理、リソースの安全規則、トラブルシューティングに加え、段階を分けた Helm チャート生成とデプロイを扱います。

主な機能

  1. 01CAP アプリのライフサイクル管理
  2. 02ドメインとサービス公開の設定
  3. 03新しいリソースによるバージョン更新
  4. 04リソース状態の確認と問題調査
  5. 05段階的な確認を伴う Helm チャート生成

活用シーン

  1. 01新しい CAP アプリのデプロイ
  2. 02テナント全体のアプリ更新
  3. 03テナントとサブスクリプション状態の確認
  4. 04Operator とアプリの問題診断

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/sap/cap-operator --skill cap-operator

インストール後、Claude Code で/cap-operatorを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
cap-operator-plugin.md
credential-rotation.md
deploy.md
domain.md
service-exposure.md
troubleshooting.md
upgrade.md

詳細

CAP Operator スキル

CAP Operator コントローラーを介して、Kubernetes 上のマルチテナント SAP Cloud Application Programming Model(CAP)アプリケーションのライフサイクルを管理します。

回答ルール: 質問に回答する際は、関連するページへのリンクを必ず含めてください。リンク先は https://sap.github.io/cap-operator/docs/ にあるページとします。トピックに最も適した、できるだけ具体的なページ(リソースリファレンス、使用ガイド、トラブルシューティング、設定など)を選んでください。

ドキュメントと API リファレンスの全文:website/content/en/docs/ | https://sap.github.io/cap-operator/docs/

カスタムリソース

リソーススコープ目的
CAPApplication名前空間高レベルのアプリ:BTP サービス、ドメイン参照、プロバイダーサブアカウント
CAPApplicationVersion名前空間不変のバージョン:イメージ、ワークロード、テナント操作手順
CAPTenant名前空間サブスクライブ済みのコンシューマーテナント — コントローラーのみが管理
CAPTenantOperation名前空間プロビジョニング/アップグレード/プロビジョニング解除を調整 — 自動作成
Subscription名前空間1 つのコンシューマーサブスクリプションを表す — サブスクリプションサーバーが作成
SubscriptionProvider名前空間サブスクリプションの認証情報と依存関係情報をキャッシュ — コントローラーが自動作成
Domain名前空間1 つのアプリケーション用の Istio Gateway + TLS + DNS
ClusterDomainクラスターアプリケーション間で共有するドメイン設定

重要なルール:

  • CAPApplicationVersion は作成後、変更できません。アップグレードするには、より大きなセマンティックバージョンの新しいリソースを作成してください。
  • Subscription を手動で作成または削除してはなりません。SaaS Provisioning サービスのコールバックに応じて、サブスクリプションサーバーのみが管理します。
  • CAPTenant を手動で作成または削除してはなりません。Subscription の子としてコントローラーが作成します。
  • CAPTenantOperation はコントローラーが自動作成します。手動で作成または削除しないでください。
  • SubscriptionProvider は各 CAPApplication に対してコントローラーが自動作成し、同期状態を維持します。手動で作成、変更、削除しないでください。
  • CAP Operator リソースのファイナライザーを手動で削除しないでください。
  • CAPApplication.spec.provider は非推奨です。以前は、コントローラーがプロバイダー CAPTenant を自動作成するために使われていましたが、この動作は削除されました。現在はプロバイダーを含むすべてのテナントを、明示的にサブスクライブする必要があります。kubectl get captenant -n <namespace> の結果が空でも、アクティブなサブスクリプションがないアプリでは想定どおりです。

一般的な操作

新しいアプリケーションをデプロイする
  1. Domain または ClusterDomain を作成します
  2. CAPApplication を作成します(BTP サービスとドメインを参照)
  3. CAPApplicationVersion を作成します(イメージとワークロード)

YAML の詳細な例は、デプロイリファレンスを参照してください。

新しいバージョンにアップグレードする

より大きなセマンティックバージョンの新しい CAPApplicationVersion を作成してください。既存のものは編集しないでください。 コントローラーはすべてのテナントを自動的にアップグレードし、Istio の VirtualService ルーティングを更新します。

詳しくは、アップグレードリファレンスと tenantOperations/contentJobs の設定を参照してください。

ステータスの確認
kubectl get capapplication,capapplicationversion,captenant,captenantoperation,subscription -n <namespace>
kubectl describe capapplication <name> -n <namespace>
kubectl get domain,clusterdomain -A

ステータスの遷移:

  • CAPApplicationVersion:Processing → Ready | Error
  • CAPTenant:Provisioning → Ready | Upgrading → Ready | Deleting
  • CAPTenantOperation:Processing → Completed | Failed
  • Subscription:Processing → Ready | ProcessingError(再試行可能)| Error(終端状態)| Deleting
ドメイン管理
  • Domain — 名前空間スコープで、アプリケーションは1つです。ClusterDomain — クラスタースコープで、共有されます。
  • TLS モード:Simple(デフォルト)、Mutual、OptionalMutual
  • DNS モード:None(デフォルト)、Wildcard、Subdomain、Custom
  • domainRefs の最初のエントリーがプライマリドメインです。
  • CAPApplication のインラインセクション domains は v0.26.0 で削除されました。代わりに domainRefs を使用してください。

ドメインのリファレンスを参照してください。

サービスの公開(テナント非依存)

CAPApplicationVersion の serviceExposures を使用すると、テナントルーティングに依存せず、固定サブドメインでワークロードを公開できます。ルートは、最も具体的なものから順に指定してください。

サービス公開のリファレンスを参照してください。

認証情報ローテーションのロールアウト

CAPApplication で rolloutOnCredentialUpdate: true を設定すると、BTP サービスの認証情報 Secret が変更された際に、ワークロードが自動的に再起動します。ローリング再起動を使用するため、ダウンタイムは発生しません。新しい認証情報を発行した後、古い認証情報を少なくとも24時間有効な状態に保ってください。

認証情報ローテーションのリファレンスを参照してください。

バージョンのクリーンアップ(モニタリングベース)

CAPApplication にアノテーション sme.sap.com/enable-cleanup-monitoring: "true" を設定して有効にします。ワークロードの monitoring セクションで deletionRules.expression(PromQL)を設定します。式の評価結果が true になると、そのバージョンは削除可能になります。

バージョンのモニタリング(website/content/en/docs/usage/version-monitoring.md)を参照してください。

主なアノテーション

アノテーションリソース効果
sme.sap.com/enable-cleanup-monitoring: "true"CAPApplicationモニタリングベースのバージョンクリーンアップを有効化
sme.sap.com/enable-version-affinity: "true"CAPApplicationログアウトするまでユーザーを現在のバージョンに維持(実験的)
sme.sap.com/logout-endpoint: "<path>"CAPApplicationVersionバージョンアフィニティ用のカスタムログアウトパス

トラブルシューティング

よくある症状と解決方法 — CAPApplicationVersion/CAPTenant が停止したままになる、WaitingForSecrets、ファイナライザー、@sap/cds-mtxs のセキュリティコンテキスト、Approuter の宛先/タイムアウトに関する問題、認証情報の注入、SAP HANA の接続エラー、コントローラーのメモリー制限。

トラブルシューティングのリファレンス | website/content/en/docs/troubleshoot/_index.md | https://sap.github.io/cap-operator/docs/troubleshoot/

コントローラーの設定

コントローラーのデプロイメントに設定する環境変数で調整します。主な変数:

変数目的
CERT_MANAGERgardener または cert-manager.io
DNS_MANAGERgardener または kubernetes
MAX_CONCURRENT_RECONCILES_CAP_APPLICATIONCAPApplication の調整処理の並行実行数
MAX_CONCURRENT_RECONCILES_CAP_APPLICATION_VERSIONCAPApplicationVersion の調整処理の並行実行数
MAX_CONCURRENT_RECONCILES_CAP_TENANTCAPTenant の調整処理の並行実行数
MAX_CONCURRENT_RECONCILES_CAP_TENANT_OPERATIONCAPTenantOperation の調整処理の並行実行数
MAX_CONCURRENT_RECONCILES_SUBSCRIPTIONSubscription の調整処理の並行実行数

全一覧:website/content/en/docs/configuration/_index.md | https://sap.github.io/cap-operator/docs/configuration/

CAP Operator Plugin(Helm Chart の生成)

@cap-js/cap-operator-plugin CDS プラグインは、CAP アプリケーション用の Helm チャートのひな形を作成し、ランタイム値を生成して、デプロイ可能な最終チャートをビルドします。

スキルの呼び出し時に、これらの手順を実行しないでください。 ユーザーが Helm チャートの生成またはアプリのデプロイを明示的に依頼した場合にのみ開始してください。このスキルを読み込んだだけでは(例:/cap-operator)、依頼とはみなしません。スキルでできることを説明し、指示を待ってください。

チャートの生成とデプロイは、間に確認を挟む別々のフェーズです。チャートのみを作成し、デプロイするかどうか、またそのタイミングはユーザーに判断してもらってください。

  1. チャートのひな形を作成します。 内容がある MTX サイドカーフォルダー(mtx/sidecar)が存在するか確認して、バリアントを選択します。サイドカーがある場合 → マルチテナント → --with-templates、サイドカーがない場合 → サービスのみ → --with-service-only。
  2. デプロイするかどうかを尋ねます。
  3. 「はい」と回答された後にのみ、 ランタイム入力(appName、capOperatorSubdomain、clusterDomain、providerSubaccountId)を収集し、runtime-values.yaml を生成します。
  4. デプロイ前に検証します — runtime-values.yaml を指定して helm lint を実行し、必須の値に不足がないことを確認します。
  5. helm upgrade -i でデプロイします。

プラグインの使用方法と設定の詳細については、CAP Operator Plugin のリファレンスを参照してください。

コメント