mcpField
C
cap-operator

cap-operator

github.com/sap云与 DevOps2541 次安装今天更新
代码仓库

关于 cap-operator

通过 CAP Operator 在 Kubernetes 上管理多租户 SAP Cloud Application Programming Model 应用的技能,涵盖生命周期操作、资源安全规则、故障排查,以及分阶段的 Helm 图表生成与部署流程。

主要功能

  1. 01管理 CAP 应用生命周期
  2. 02配置域名和服务暴露
  3. 03通过新资源升级版本
  4. 04查看资源状态并排查问题
  5. 05按部署关卡生成 Helm 图表

适用场景

  1. 01部署新的 CAP 应用
  2. 02升级各租户的应用版本
  3. 03检查租户和订阅状态
  4. 04诊断 Operator 与应用问题

安装

复制下面的命令,在终端中运行。

$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命名空间级表示一个使用方订阅 — 由订阅服务器创建
SubscriptionProvider命名空间级缓存订阅凭据和依赖信息 — 由控制器自动创建
Domain命名空间级一个应用的 Istio Gateway、TLS 和 DNS
ClusterDomain集群级供多个应用共享的域配置

重要规则:

  • CAPApplicationVersion 创建后不可变。要升级,请创建一个语义版本号更高的新资源。
  • 绝不能手动创建或删除 Subscription — 它完全由订阅服务器根据 SaaS Provisioning 服务回调进行管理。
  • 绝不能手动创建或删除 CAPTenant — 它由控制器作为 Subscription 的子资源创建。
  • CAPTenantOperation 由控制器自动创建 — 请勿手动创建或删除。
  • 控制器会为每个 CAPApplication 自动创建 SubscriptionProvider 并使其保持同步 — 请勿手动创建、修改或删除。
  • 切勿手动移除 CAP Operator 资源的 finalizer。
  • 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 — 命名空间范围,一个应用。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、finalizer、@sap/cds-mtxs 安全上下文、Approuter 目标配置/超时问题、凭据注入、SAP HANA 连接错误以及控制器内存限制。

请参阅故障排除参考 | website/content/en/docs/troubleshoot/_index.md | https://sap.github.io/cap-operator/docs/troubleshoot/

控制器配置

通过控制器 Deployment 上的环境变量进行调整。关键变量:

变量用途
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 插件(Helm Chart 生成)

@cap-js/cap-operator-plugin CDS 插件为 CAP 应用搭建 Helm chart 框架、生成运行时值,并构建最终可部署的 chart。

不要在调用技能时执行以下任何步骤。 只有用户明确要求生成 Helm chart 或部署应用时,才开始操作。仅加载此技能(例如通过 /cap-operator)不代表用户提出了请求 — 介绍此技能的功能并等待。

Chart 生成和部署是两个独立阶段,中间设有确认关卡 — 只创建 chart;由用户决定是否以及何时部署。

  1. 搭建 chart 框架。 检查是否存在有内容的 MTX sidecar 文件夹(mtx/sidecar):存在 sidecar → 多租户 → --with-templates;没有 sidecar → 仅服务 → --with-service-only。
  2. 询问用户是否要部署。
  3. **仅在用户回答是之后,**收集运行时输入(appName、capOperatorSubdomain、clusterDomain、providerSubaccountId),并生成 runtime-values.yaml。
  4. 部署前先验证 — 传入 runtime-values.yaml 运行 helm lint,并确认没有缺少必需值。
  5. 部署 — 使用 helm upgrade -i。

更多关于插件用法和配置的详情,请参阅 CAP Operator 插件参考。

评论

支持 Markdown