本文介绍了AppStack环境下特定场景如何手动删除环境资源,以确保系统的清洁和资源的有效利用。
非工作负载类型资源删除
手工运维进行环境删除时,非工作负载类资源(如:Service、Ingress、ConfigMap、Secret、PersistentVolumeClaim等),可以直接使用 kubectl 命令或其他方式删除。
如,执行以下命令删除一个.metadata.name
值为service-demo
的Service资源。更多 kubectl 命令参见。
kubectl delete service service-demo
工作负载类型资源删除
AppStack 提供基于 开放应用模型 Open Application Model (OAM) 的部署增强能力,使用OAM进行工作负载管理,直接删除资源会被重建,因此需要手工删除。以下是具体步骤:
说明:以下示例使用 kubectl 并假设可以从本地开发机连接到集群;假定待删除的工作负载的 .metadata.name
值为 deploy-demo
,所在的命令空间名字为 namespace-demo
。
1. 确认工作负载
执行以下命令查看待删除的工作负载。
kubectl get application deploy-demo -n namespace-demo
kubectl get componentdefinition deploy-demo -n namespace-demo
2. 确认定位标签
若第1步中查找的编排对象和组件定义都存在,执行以下命令查看编排对象。
kubectl get application deploy-demo -n namespace-demo -o=yaml
编排对象形如:
metadata:
name: "deploy-demo"
namespace: "namespace-demo"
annotations:
app.oam.dev/rollout-template: "true"
app.oam.dev/rolling-components: "deploy-demo"
appstack.aliyun.com/change-made-by: "1f061dfd-d612-4628-914f-14b4c207fe5f"
labels:
appstack/appconfig-selector: "deploy-demo"
appstack/current-revision: "deploy-demo-v1"
devops.aliyun.com/app-name: "app1028836"
devops.aliyun.com/env-name: "production"
devops.aliyun.com/org-id: "5ebbc0******************"
apiVersion: "core.oam.dev/v1beta1"
kind: "Application"
spec:
components:
- name: "deploy-demo"
type: "deploy-demo"
properties: {}
traits: []
找到编排对象中如下三个标签,它们分别对应 应用名称、环境名称、云效组织ID:
devops.aliyun.com/app-name: "app1028836"
devops.aliyun.com/env-name: "production"
devops.aliyun.com/org-id: "5ebbc0******************"
3. 使用标签清理发布执行辅助对象
使用第2步中记录下 应用名称、环境名称、云效组织ID 的标签,执行以下命令进行发布执行辅助对象(approllout)的删除。
kubectl delete approllout -l devops.aliyun.com/app-name=app1028836,devops.aliyun.com/env-name=production,devops.aliyun.com/org-id=5ebbc0****************** -n namespace-demo
执行以下命令确认辅助对象是否删除完成,当kubectl输出查不到结果的信息时,表明删除完成。
kubectl get approllout -l devops.aliyun.com/app-name=app1028836,devops.aliyun.com/env-name=production,devops.aliyun.com/org-id=5ebbc0****************** -n namespace-demo
4. 清理OAM工作负载托管对象
执行以下命令清理OAM工作负载托管对象。
kubectl delete application deploy-demo -n namespace-demo
执行以下命令确认工作负载托管对象是否删除完成,当kubectl输出查不到结果的信息时,表明删除完成。
kubectl get application deploy-demo -n namespace-demo
如果希望确认deployment删除进度,可以执行以下命令,当kubectl输出查不到结果的信息时,表明deployment的级联清理已经完成。
kubectl delete componentdefinition deploy-demo -n namespace-demo
5. 清理组件定义元数据
执行以下命令删除组件定义元数据。
kubectl delete componentdefinition deploy-demo -n namespace-demo
执行以下命令确认组件定义元数据是否删除完成,当kubectl输出查不到结果的信息时,表明删除完成。
kubectl get componentdefinition deploy-demo -n namespace-demo
至此,工作负载类型的资源清理完毕。