mcpField
S
sap-btp-service-manager

sap-btp-service-manager

github.com/secondsky云与 DevOps480664 次安装3 周前更新
代码仓库

关于 sap-btp-service-manager

面向 SAP BTP Service Manager 服务管理的参考 Skill,涵盖实例与绑定生命周期、代理和平台管理、身份验证、命令行与 API 操作及 Kubernetes 集成,并提供故障排查指引。

主要功能

  1. 01管理服务实例生命周期
  2. 02创建绑定和服务密钥
  3. 03注册服务代理与平台
  4. 04使用 SMCTL、BTP CLI 和 API
  5. 05配置 Kubernetes 服务 Operator
  6. 06排查开通与访问问题

适用场景

  1. 01在 BTP 环境中开通服务
  2. 02向应用交付凭据
  3. 03注册服务代理和平台
  4. 04诊断绑定或限流错误

安装

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

$npx skills add https://github.com/secondsky/sap-skills --skill sap-btp-service-manager

安装后在 Claude Code 中输入/sap-btp-service-manager确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

README.md
agents/
openai.yaml
references/
api-reference.md
btp-cli-commands.md
kubernetes-operator.md
rate-limiting-filtering.md
roles-permissions.md
service-catalog-legacy.md
smctl-commands.md
templates/
oauth-token-request.sh
service-binding-cf.json
service-binding-k8s.yaml
service-instance-cf.json
service-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服务绑定管理
Brokerregister-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

删除服务实例

前提条件:

  1. 移除所有服务绑定
  2. 移除所有服务密钥
  3. 实例未绑定到应用程序
# Force delete without confirmation
smctl deprovision my-instance -f

# Sync mode
smctl deprovision my-instance --mode sync

注意:无法从 BTP Cockpit 删除 Kyma/Kubernetes 实例。

分配管理员角色
  1. 前往子账户 > 安全 > 信任配置 > SAP ID Service
  2. 输入用户电子邮件地址
  3. 点击显示分配 > 添加用户
  4. 分配角色集合 > 选择“子账户服务管理员”

故障排除

问题:在市场中看不到服务

检查:

  1. 是否已将服务权益添加到子账户?
  2. 是否已分配配额(企业账户)?
  3. 是否选择了正确的区域?
问题:实例创建失败

检查:

  1. 是否选择了有效计划?
  2. 参数 JSON 语法是否正确?
  3. 是否超出配额?
  4. 是否已预配所需依赖项?

调试:

smctl get-instance <name> -o json
# Check "last_operation" for error details
问题:超出速率限制(HTTP 429)

解决方案:

  1. 检查 Retry-After 标头
  2. 实施指数退避
  3. 尽可能批量执行操作
  4. 考虑缓存响应
问题:缺少绑定凭据

检查:

  1. 绑定是否已成功完成?
  2. 是否引用了正确的绑定名称?
  3. 是否已创建 Secret(Kubernetes)?
# SMCTL
smctl get-binding <name> -o json

# Kubernetes
kubectl get secrets <binding-name> -o yaml
问题:X.509 身份验证失败

检查:

  1. 证书是否已过期?
  2. 证书和密钥是否匹配?
  3. 证书链是否完整?
  4. 客户端 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/ 目录中的详细文档:

  1. api-reference.md - 完整的 API 端点、操作和示例
  2. smctl-commands.md - 完整的 SMCTL CLI 参考,包含所有标志和用法
  3. btp-cli-commands.md - 全面的 BTP CLI 命令参考
  4. kubernetes-operator.md - Service Operator 设置、CRD、迁移指南
  5. rate-limiting-filtering.md - 速率限制、筛选和最佳实践
  6. roles-permissions.md - 计划、角色、范围和授权详情
  7. service-catalog-legacy.md - 旧版 svcat 和代理中继设置(已弃用)
快速参考模板

官方文档链接

主要资源
API 文档
相关文档

Claude 使用说明

使用此技能时:

  1. 识别环境 - Cloud Foundry、Kyma、Kubernetes 或 Other
  2. 选择合适的工具 - SMCTL、BTP CLI、CF CLI、kubectl 或 cockpit
  3. 使用正确的身份验证方式 - OAuth2、X.509 或交互式身份验证
  4. 检查速率限制 - 为批量操作实现重试逻辑
  5. 验证异步操作是否完成 - 轮询 provision/bind 操作的状态
  6. 参考模板 - 使用提供的模板执行常见操作
  7. 查看参考文件 - 详细信息位于 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

评论

支持 Markdown