关于 sap-btp-service-manager
面向 SAP BTP Service Manager 服务管理的参考 Skill,涵盖实例与绑定生命周期、代理和平台管理、身份验证、命令行与 API 操作及 Kubernetes 集成,并提供故障排查指引。
主要功能
- 01管理服务实例生命周期
- 02创建绑定和服务密钥
- 03注册服务代理与平台
- 04使用 SMCTL、BTP CLI 和 API
- 05配置 Kubernetes 服务 Operator
- 06排查开通与访问问题
适用场景
- 01在 BTP 环境中开通服务
- 02向应用交付凭据
- 03注册服务代理和平台
- 04诊断绑定或限流错误
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ secondsky/ sap-skills --skill sap-btp-service-manager安装后在 Claude Code 中输入/sap-btp-service-manager确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
README.mdagents/openai.yamlreferences/api-reference.mdbtp-cli-commands.mdkubernetes-operator.mdrate-limiting-filtering.mdroles-permissions.mdservice-catalog-legacy.mdsmctl-commands.mdtemplates/oauth-token-request.shservice-binding-cf.jsonservice-binding-k8s.yamlservice-instance-cf.jsonservice-instance-k8s.yaml详细介绍
SAP BTP Service Manager 技能
相关技能
- sap-btp-cloud-platform:用于了解平台基础知识、服务以及 BTP 集成
- sap-btp-best-practices:用于了解生产部署模式和服务管理指南
- sap-btp-connectivity:当服务需要配置连接时使用,用于设置目标
- sap-cap-capire:用于 CAP 服务预配和绑定管理
使用 SAP Service Manager 管理 SAP BTP 环境中的服务的综合技能。
目录
何时使用此技能
处理以下任务时使用此技能:
服务实例管理:
- 在 Cloud Foundry、Kyma、Kubernetes 或其他环境中创建服务实例
- 通过 SAP BTP cockpit、SMCTL CLI 或 BTP CLI 预配服务
- 配置服务参数和标签
- 删除服务实例并管理生命周期
服务绑定管理:
- 创建绑定,为应用提供凭据
- 将服务实例绑定到 Cloud Foundry 应用
- 创建服务密钥,以供外部客户端访问
- 管理 Kubernetes ServiceBinding CRD
平台与 Broker 管理:
- 注册平台(启用了 OSBAPI 的系统)
- 注册服务 Broker
- 管理 Broker 目录和服务产品
- 更新和删除平台/Broker 注册信息
身份验证与授权:
- 配置 OAuth2 客户端凭据
- 使用 X.509 证书身份验证
- 分配 Subaccount Service Administrator 角色
- 管理 Service Manager 计划和作用域
Kubernetes/Kyma 集成:
- 设置 SAP BTP Service Operator
- 创建 ServiceInstance 和 ServiceBinding CRD
- 从 Service Catalog (svcat) 迁移到 SAP BTP Service Operator
- 安装 cert-manager,以支持 Operator 通信
API 与 CLI 操作:
- 使用 SMCTL 命令行界面
- 使用 BTP CLI 管理服务
- 使用 Service Manager REST API
- 筛选和查询服务资源
故障排除:
- 调试服务预配失败问题
- 解决绑定凭据问题
- 处理速率限制(HTTP 429)
- 检查异步操作状态
快速入门
1. 安装 SMCTL CLI
⚠️ 重要:SMCLI 存储库已于 2025 年 9 月 30 日归档。虽然该工具仍可正常使用,但请考虑为长期 SAP BTP 工作流制定迁移策略。
推荐方法(Go):
# Install via Go (preferred approach)
go install github.com/Peripli/service-manager-cli@latest
# Add to PATH (if not already)
export PATH=$PATH:$(go env GOPATH)/bin
smctl --version
替代方法(预构建二进制文件):
# Download from: https://github.com/Peripli/service-manager-cli/releases/latest
tar -xzf smctl-*.tar.gz && chmod +x smctl
sudo mv smctl /usr/local/bin/ && smctl --version
注意:虽然预构建二进制文件的方法仍可正常使用,但官方推荐使用 Go 安装方式。对于新的部署,请考虑将 SAP 原生 BTP CLI 作为替代方案进行评估。
2. 登录
# Interactive login
smctl login -a https://service-manager.cfapps.<region>.hana.ondemand.com \
--param subdomain=<subdomain>
# Client credentials
smctl login -a https://service-manager.cfapps.<region>.hana.ondemand.com \
--param subdomain=<subdomain> --auth-flow client-credentials \
--client-id <id> --client-secret <secret>
3. 基本操作
# Browse services
smctl marketplace
# Create instance (async)
smctl provision my-instance <service> <plan>
# Create binding
smctl bind my-instance my-binding
核心概念
Service Manager 架构
SAP Service Manager 是 SAP BTP 中服务 Broker 和平台的中央注册表。
主要资源:
- 平台 - 应用运行所在的、启用了 OSBAPI 的系统
- 服务 Broker - 发布服务目录的中间方
- 服务实例 - 单个服务实例化对象
- 服务绑定 - 实例的访问凭据
- 服务计划 - 服务提供的功能集
- 服务产品 - Broker 发布的服务
Service Manager 计划
| 计划 | 用途 | 作用域 |
|---|---|---|
| subaccount-admin | 完整管理 | 10 个作用域(管理 + 读取) |
| subaccount-audit | 只读监控 | 6 个作用域 |
| container | 隔离管理 | 7 个作用域 |
角色
- 子账户服务管理员 - 对资源具有完整的 CRUD 权限
- 子账户服务查看者 - 只读访问权限(功能集 B)
Cloud Foundry 操作
服务实例与绑定
通过 Cockpit:服务 > 实例 > 创建 > 选择服务/计划 > Cloud Foundry 运行时
通过 CF CLI:
# Create instance
cf create-service <service> <plan> <instance-name>
# Bind to app
cf bind-service <app-name> <instance-name>
# Create service key (external access)
cf create-service-key <instance-name> <key-name>
Kubernetes 操作
前提条件
- Kubernetes 集群,且 kubectl 版本为 v1.7+
- Helm v3.1.2+
- SMCTL v1.10.1+
设置服务 Operator
1. 安装 cert-manager:
kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.12.0/cert-manager.yaml
2. 创建 Service Manager 资源:
smctl provision sm-operator service-manager service-operator-access --mode sync
smctl bind sm-operator sm-operator-binding --mode sync
smctl get-binding sm-operator-binding -o json
3. 部署 Operator:
helm repo add sap-btp-operator https://sap.github.io/sap-btp-service-operator/
helm install sap-btp-operator sap-btp-operator/sap-btp-operator \
--namespace sap-btp-operator --create-namespace \
--set manager.secret.clientid=<id> \
--set manager.secret.clientsecret=<secret>
创建资源
ServiceInstance:
apiVersion: services.cloud.sap.com/v1alpha1
kind: ServiceInstance
metadata:
name: my-service-instance
spec:
serviceOfferingName: <service-offering>
servicePlanName: <plan-name>
ServiceBinding:
apiVersion: services.cloud.sap.com/v1alpha1
kind: ServiceBinding
metadata:
name: my-binding
spec:
serviceInstanceName: my-service-instance
参考:查看 references/kubernetes-operator.md,获取完整指南。
BTP CLI 操作
使用统一的 BTP CLI 作为 SMCTL 的替代方案:
# Create instance
btp create services/instance \
--subaccount <subaccount-id> \
--service <service-name> \
--plan <plan-id> \
--parameters '{"key":"value"}' \
--labels '{"env":["dev"]}'
# Get instance details
btp get services/instance <instance-id> \
--subaccount <subaccount-id> \
--show-parameters
# Create binding
btp create services/binding \
--subaccount <subaccount-id> \
--binding <binding-name> \
--service-instance <instance-id>
# Platform management
btp list services/platform --subaccount <id>
btp register services/platform --subaccount <id> --name <name> --type <type>
btp unregister services/platform <platform-id> --subaccount <id>
API 操作
获取 OAuth2 令牌
curl '<uaa_url>/oauth/token' -X POST \
-H 'Accept: application/json' \
-d 'grant_type=client_credentials&client_id=<clientid>&client_secret=<clientsecret>'
响应:
{
"access_token": "<token>",
"token_type": "bearer",
"expires_in": 43199,
"scope": "<xsappname>.job.read <xsappname>.event.read"
}
API 基础 URI
https://service-manager.cfapps.<region>.hana.ondemand.com/v1/
速率限制
系统会同时实施以下三个层级的限制:
- 级别 1:所有 API - 每小时 10,000 次,每分钟 1,000 次
- 级别 2:特定资源 - 每小时 1,000-6,000 次
- 级别 3:实例操作 - 每小时 50-6,000 次
超出限制时会返回 HTTP 429,并附带 Retry-After 标头。
筛选
查询参数:
fieldQuery- 按资源属性筛选labelQuery- 按资源标签筛选- 运算符:
eq、ne、in、contains等
参考:查看 references/rate-limiting-filtering.md,了解完整的速率限制和筛选详情。
SMCTL 命令参考
主要命令
| 类别 | 命令 | 描述 |
|---|---|---|
| 身份验证 | login、logout | 管理会话 |
| 实例 | provision、deprovision、list-instances | 服务实例生命周期管理 |
| 绑定 | bind、unbind、list-bindings | 服务绑定管理 |
| Broker | register-broker、update-broker | 服务 Broker 操作 |
| 平台 | register-platform、list-platforms | 平台注册 |
| 市场 | marketplace | 浏览服务产品 |
常用标志
--mode sync/async- 执行模式(默认:async)-c, --parameters- JSON 配置-o, --output- 输出格式(json、yaml、text)-v, --verbose- 详细输出
参考:查看 references/smctl-commands.md,获取包含所有标志和示例的完整命令参考。
常见操作
检查异步操作状态
# Get operation URL from provision/bind response
smctl status /v1/service_instances/<id>/operations/<op-id>
API:
GET /v1/{resourceType}/{resourceID}/operations/{operationID}
响应状态:in progress、succeeded、failed
删除服务实例
前提条件:
- 移除所有服务绑定
- 移除所有服务密钥
- 实例未绑定到应用程序
# Force delete without confirmation
smctl deprovision my-instance -f
# Sync mode
smctl deprovision my-instance --mode sync
注意:无法从 BTP Cockpit 删除 Kyma/Kubernetes 实例。
分配管理员角色
- 前往子账户 > 安全 > 信任配置 > SAP ID Service
- 输入用户电子邮件地址
- 点击显示分配 > 添加用户
- 分配角色集合 > 选择“子账户服务管理员”
故障排除
问题:在市场中看不到服务
检查:
- 是否已将服务权益添加到子账户?
- 是否已分配配额(企业账户)?
- 是否选择了正确的区域?
问题:实例创建失败
检查:
- 是否选择了有效计划?
- 参数 JSON 语法是否正确?
- 是否超出配额?
- 是否已预配所需依赖项?
调试:
smctl get-instance <name> -o json
# Check "last_operation" for error details
问题:超出速率限制(HTTP 429)
解决方案:
- 检查
Retry-After标头 - 实施指数退避
- 尽可能批量执行操作
- 考虑缓存响应
问题:缺少绑定凭据
检查:
- 绑定是否已成功完成?
- 是否引用了正确的绑定名称?
- 是否已创建 Secret(Kubernetes)?
# SMCTL
smctl get-binding <name> -o json
# Kubernetes
kubectl get secrets <binding-name> -o yaml
问题:X.509 身份验证失败
检查:
- 证书是否已过期?
- 证书和密钥是否匹配?
- 证书链是否完整?
- 客户端 ID 是否与证书匹配?
最佳实践
1. 脚本使用同步模式
smctl provision my-instance service plan --mode sync
2. 为资源添加标签
smctl provision my-instance service plan \
-c '{}' \
--labels '{"environment":"production","team":"platform"}'
3. 使用服务密钥进行外部访问
不要绑定到应用,而是为外部客户端创建服务密钥。
4. 实现重试逻辑
对于异步操作,使用指数退避轮询状态。
5. 选择合适的计划
subaccount-admin:完整管理权限subaccount-audit:只读监控container:每个实例独立访问
6. 保护凭据
- 定期轮换服务密钥
- 在生产环境中使用 X.509
- 将凭据存储在密钥管理器中
捆绑资源
模板(5 个文件)
templates/ 目录中的即用型模板:
- service-instance-cf.json - Cloud Foundry 实例参数
- service-binding-cf.json - Cloud Foundry 绑定参数
- service-instance-k8s.yaml - Kubernetes ServiceInstance CRD
- service-binding-k8s.yaml - Kubernetes ServiceBinding CRD
- oauth-token-request.sh - OAuth2 令牌获取脚本
参考文档(7 个文件)
references/ 目录中的详细文档:
- api-reference.md - 完整的 API 端点、操作和示例
- smctl-commands.md - 完整的 SMCTL CLI 参考,包含所有标志和用法
- btp-cli-commands.md - 全面的 BTP CLI 命令参考
- kubernetes-operator.md - Service Operator 设置、CRD、迁移指南
- rate-limiting-filtering.md - 速率限制、筛选和最佳实践
- roles-permissions.md - 计划、角色、范围和授权详情
- service-catalog-legacy.md - 旧版 svcat 和代理中继设置(已弃用)
快速参考模板
官方文档链接
主要资源
- GitHub 文档:https://github.com/SAP-docs/sap-btp-service-manager/tree/main/docs
- SAP 帮助门户:https://help.sap.com/docs/service-manager
- SMCTL 版本:https://github.com/Peripli/service-manager-cli/releases
- Service Operator:https://github.com/SAP/sap-btp-service-operator
API 文档
- Swagger UI:
https://service-manager.cfapps.<region>.hana.ondemand.com/swaggerui/swagger-ui.html - 区域:https://help.sap.com/docs/btp/sap-business-technology-platform/regions-and-api-endpoints-available-for-cloud-foundry-environment
相关文档
- BTP Cockpit:https://cockpit.btp.cloud.sap/
- cert-manager:https://cert-manager.io/docs/installation/kubernetes/
- Kyma 服务:https://help.sap.com/docs/btp/sap-business-technology-platform/using-services-in-kyma-environment
Claude 使用说明
使用此技能时:
- 识别环境 - Cloud Foundry、Kyma、Kubernetes 或 Other
- 选择合适的工具 - SMCTL、BTP CLI、CF CLI、kubectl 或 cockpit
- 使用正确的身份验证方式 - OAuth2、X.509 或交互式身份验证
- 检查速率限制 - 为批量操作实现重试逻辑
- 验证异步操作是否完成 - 轮询 provision/bind 操作的状态
- 参考模板 - 使用提供的模板执行常见操作
- 查看参考文件 - 详细信息位于 references/ 目录中
对于 Cloud Foundry:使用 cf CLI 或 cockpit
对于 Kubernetes:使用 ServiceInstance/ServiceBinding CRD
对于其他环境:使用 SMCTL 或 BTP CLI
对于 API 访问:先获取 OAuth2 令牌
排查问题时:
- 检查异步操作的状态
- 验证凭据和权限
- 如果遇到 429 错误,请检查速率限制
- 检查前置条件(授权、配额、依赖项)
许可证:GPL-3.0 版本:1.1.1 维护者:Eduard Jiglau 电子邮件:[email protected] 网站:https://sap-ai-skills.com 代码仓库:https://github.com/secondsky/sap-skills