AppStack 提供環境刪除能力,但實際應用中還會存在希望手工進行環境資源清理的場景,可以參考如下操作步驟。
非工作負載類型資源刪除
手工運維進行環境刪除時,非工作負載類資源(如:Service、Ingress、ConfigMap、Secret、PersistentVolumeClaim等),可以直接使用 kubectl 命令或其他方式刪除。
如,執行以下命令刪除一個.metadata.name
值為service-demo
的Service資源。更多 kubectl 命令參見。
kubectl delete service service-demo
工作負載類型資源刪除
AppStack 提供基于 開放應用模型 Open Application Model (OAM) 的部署增強能力,使用OAM部署的工作負載類資源會被集群中的OAM runtime納管(如:Deployment),直接刪除一段時間后會被重建。手工刪除需要參考下面的操作步驟。
說明:以下示例使用 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
至此,工作負載類型的資源清理完畢。