名称: dot-ai-port-destroy 描述: 移除由/port-setup创建的所有Port集成、Kubernetes资源和本地文件 用户可调用: true
销毁Port集成
移除由 /port-setup 创建的所有Port集成、Kubernetes资源和本地文件。
先决条件
检查以下内容,如果缺少则指导用户安装/配置:
- kubectl - 已安装并配置了集群访问权限
- helm - 已安装
- gh - GitHub CLI 已安装并认证
- 环境变量 设置:
PORT_CLIENT_IDPORT_CLIENT_SECRET
一般指南
- 在删除前与用户确认
- 顺序重要 - 先停止同步,然后删除Port资源
- 删除前检查存在性 以避免错误
- 使用Port MCP工具 发现创建的内容
- 用户操作与自动化:某些步骤需要用户操作(标记为“用户操作需要”) - 提供这些作为说明,然后 停止并等待用户确认 再继续下一步。
步骤0:发现环境
在销毁之前,发现存在的内容及其部署方式:
- GitOps工具:检查是否有ArgoCD(
argocd命名空间)或 Flux(flux-system命名空间) - 清单目录:检查Port相关的清单文件(例如,
apps/port-*.yaml) - Port资源:使用Port MCP工具列出蓝图、实体、操作、集成
- GitHub资源:检查工作流(
.github/workflows/port-*.yaml)和仓库秘密
GitOps工作流规则
重要:当检测到ArgoCD或Flux时,删除必须通过Git进行。
- 从Git删除清单 - 从清单目录中移除YAML文件
- 提交并推送 - GitOps工具将检测变化并自动删除资源
- 等待同步 - 验证资源已删除后再继续Port清理
- 然后删除Port资源 - 仅在同步停止后删除蓝图/实体/操作
这个顺序确保在删除Port资源之前,导出器停止同步。
第一部分:删除Kubernetes资源(先停止同步)
关键: 先删除K8s导出器以停止新实体同步到Port。
卸载Port K8s导出器
检查部署方法并相应删除:
使用ArgoCD/Flux(GitOps):
- 从Git删除清单文件:
rm <manifest-dir>/port-k8s-exporter.yaml
git add -A && git commit -m "移除 port-k8s-exporter" && git push
- 等待ArgoCD/Flux同步并删除资源
- 验证:
kubectl get ns port-k8s-exporter应该返回未找到 - 如果同步后命名空间仍然存在,手动删除:
kubectl delete ns port-k8s-exporter
直接使用Helm(非GitOps):
helm uninstall port-k8s-exporter -n port-k8s-exporter
kubectl delete secret port-credentials -n port-k8s-exporter
kubectl delete externalsecret port-credentials -n port-k8s-exporter # 如果使用ESO
kubectl delete namespace port-k8s-exporter
第二部分:删除Port自服务操作
删除为CRDs创建的所有自服务操作。在删除蓝图之前执行此操作,因为操作引用蓝图。
- 使用
mcp__port-vscode-eu__list_actions查找符合模式的标识符的操作:create_*,update_*,delete_*
- 对于每个操作,使用
mcp__port-vscode-eu__delete_action
第三部分:删除Port蓝图和实体(用户操作需要)
从数据模型页面删除在设置过程中创建的蓝图。
步骤:
- 使用
mcp__port-vscode-eu__list_blueprints发现存在的蓝图 - 识别由
/port-setup创建的蓝图(排除以_开头的系统蓝图和默认值:cluster,namespace,workload) - 向用户展示列表
- 指导用户:
- 转到 数据模型
- 提示: 切换到 卡片 视图(右上角切换)以便更容易找到和删除蓝图
- 对于每个蓝图,点击“…”菜单 -> 删除所有 [蓝图名称]
- 这将在一个操作中删除所有实体和蓝图
停止并等待用户确认后再继续。
第四部分:删除GitHub工作流和秘密
删除工作流文件
查找Port相关的工作流并删除:
rm .github/workflows/port-*.yaml
删除仓库秘密
gh secret delete PORT_CLIENT_ID
gh secret delete PORT_CLIENT_SECRET
gh secret delete KUBE_CONFIG # 如果创建了
提交并推送删除:
git add -A && git commit -m "移除Port自服务工作流" && git push
第五部分:删除GitHub集成映射(可选)
如果用户想移除GitHub集成:
- 转到Port数据源:https://app.port.io/settings/data-sources
- 找到GitHub集成
- 要么:
- 移除特定资源映射(用户操作需要)
- 或者卸载整个GitHub应用(用户操作需要)
验证
清理后,验证:
- Kubernetes:
kubectl get ns port-k8s-exporter返回未找到 - Port:没有自定义蓝图、实体或操作保留
- GitHub:没有Port相关工作流或秘密
- 本地:仓库中没有Port清单