CloudApp是EDAS在云原生場景下推出的新一代應用模型,踐行了原生K8s的設計理念。通過CRD方式,將EDAS多年來在微服務應用管理中的沉淀經驗標準化,將K8s的Workload(工作負載)和EDAS應用相結合,讓您可以通過原生方式管理EDAS應用。本文介紹如何使用K8s原生方式創建EDAS應用。
前提條件
確保該集群已導入EDAS。具體操作,請參見在EDAS控制臺導入Kubernetes集群和使用Helm方式導入Kubernetes集群。
操作入口
方式一:在ACK控制臺通過CloudShell操作。
登錄容器服務管理控制臺,在左側導航欄選擇集群。
在集群列表頁面中,單擊目標集群右側操作列下的
。
方式二:通過配置KubeConfig在本地終端操作。具體操作,請參見獲取集群KubeConfig并通過kubectl工具連接集群。
通過原生Workload創建EDAS應用
步驟一:創建Workload時同步創建EDAS應用
使用以下內容,創建demo-01.yaml文件。
apiVersion: apps/v1 kind: Deployment metadata: name: deployment-demo-01 spec: replicas: 1 selector: matchLabels: app: deployment-demo-01 template: metadata: labels: app: deployment-demo-01 spec: containers: - name: group-1 image: registry.cn-hangzhou.aliyuncs.com/edas-demo-project/consumer:1.0
在創建應用時,添加
edas.alibabacloud.com/app
標簽,將1的Deployment轉化為一個EDAS應用,標簽值為EDAS中的應用名稱。添加標簽后,Deployment的YAML配置如下:apiVersion: apps/v1 kind: Deployment metadata: labels: edas.alibabacloud.com/app: deployment-demo-01 name: deployment-demo-01 spec: replicas: 1 selector: matchLabels: app: deployment-demo-01 template: metadata: labels: app: deployment-demo-01 spec: containers: - name: group-1 image: registry.cn-hangzhou.aliyuncs.com/edas-demo-project/consumer:1.0
執行以下命令,創建應用。
kubectl apply -f demo-01.yaml
步驟二:驗證應用是否創建成功
方式一:執行命令查看應用信息。
方式二:通過EDAS控制臺上查看應用信息。
查看應用詳情
查看應用監控
執行以下命令,查看EDAS應用是否創建成功,并查看應用信息。
kubectl get cloudapps
如果已指定創建應用至非默認命名空間,查詢時請加namespace。
kubectl get cloudapps -n k8s-namespace
應用如果正常成功創建,會生成CloudApp資源。
應用創建成功后,在EDAS控制臺進行應用的變更、部署等操作。上述應用由于在創建時沒有指定微服務空間,因此默認為創建的集群所在的微服務空間。
創建應用到指定的微服務空間
在EDAS控制臺上的資源管理 > 微服務空間頁面獲取微服務空間ID。
添加以下Annotation,將應用創建至指定的微服務空間,注解值為EDAS微服務空間ID。
edas.alibabacloud.com/namespace: cn-hangzhou:test1
重要應用創建后,無法更改微服務空間。
以下示例是將Demo應用創建至test1微服務空間中,添加Annotation后的配置如下:
apiVersion: apps/v1 kind: Deployment metadata: labels: edas.alibabacloud.com/app: deployment-demo-01 annotations: edas.alibabacloud.com/namespace: cn-hangzhou:test1 name: deployment-demo-01 spec: replicas: 1 selector: matchLabels: app: deployment-demo-01 template: metadata: labels: app: deployment-demo-01 spec: containers: - name: group-1 image: registry.cn-hangzhou.aliyuncs.com/edas-demo-project/consumer:1.0
創建完成后,在應用管理 > 應用列表頁面確認應用是否已創建至指定微服務空間。
通過已有原生Workload轉化EDAS應用
步驟一:轉化為EDAS應用
添加edas.alibabacloud.com/app: deployment-demo-01
標簽,將已有的Workload(Deployment/StatefulSet)轉換為EDAS應用。Label的Value值為EDAS上展示的應用名。
方式一:執行以下命令,為Workload添加Label。
kubectl label deployments/deployment-demo-01 edas.alibabacloud.com/app=deployment-demo-01
方式二:執行以下命令,在編輯應用信息時,添加Label。
kubectl edit deployment deployment-demo-01
步驟二:驗證是否轉化完成
執行以下命令,查看是否正常生成了EDAS應用。
kubectl get cloudapps
登錄EDAS控制臺,在應用管理 > 應用列表頁面查看EDAS應用。
單擊應用名稱,查看應用詳情。
步驟三:重新部署應用
您查看到的簡版的應用詳情,是由于將Workload轉換后,為確保已有業務工作正常,整個轉換過程不會影響正在運行中的應用,所以應用沒有掛載監控及微服務治理的Agent,需要主動部署一次才能正常使用EDAS的監控及微服務治理能力。您可在EDAS控制臺應用總覽頁面重新部署應用,也可執行以下命令部署應用。
編輯應用YAML文件,增加以下Annontation。
edas.alibabacloud.com/immediate-rollout: "true"
執行以下命令,使配置立即生效。
kubectl annotate deployments/deployment-demo-01 edas.alibabacloud.com/immediate-rollout=true
部署后,在應用總覽頁面可以看到監控和微服務治理功能已啟用。
在應用詳情頁面左側導航欄,單擊監控 > 實例監控,查看ARMS監控信息。
在轉化的同時指定微服務空間
在Workload轉化為EDAS應用時,如果沒有指定微服務空間,默認使用導入集群所在的微服務空間。如果需要指定具體的微服務空間,需在轉化的同時添加注解Annotation:edas.alibabacloud.com/namespace: cn-hangzhou:test1
。
執行以下命令,編輯應用。
kubectl edit deployment deployment-demo-01
添加以下Label和Annotation,在轉化為EDAS應用的同時指定微服務空間,編輯并保存后,配置立即生效。
labels: edas.alibabacloud.com/app: deployment-demo-01 annotations: edas.alibabacloud.com/namespace: cn-hangzhou:test1 edas.alibabacloud.com/immediate-rollout: "true"
在應用管理>應用列表頁面確認應用是否已轉化至指定微服務空間。
如果指定的微服務空間不存在,將會轉化失敗,您可以通過
kubectl get events
命令查看Warning事件。因此在轉化前,您需確保微服務空間已存在,如需新建微服務空間,請參見創建微服務空間。如果對已經轉成EDAS的應用增加該注解,會提示以下報錯:
同時產生一個Warning事件,可通過
kubectl get events
命令查看該事件。
原生Workload轉化為EDAS應用的Label和Annotation
類型 | 標簽或者注解內容 | 作用 |
Label |
| 將Workload轉化為EDAS應用。 |
Annotation |
| 指定EDAS上的微服務空間。 |
Annotation |
| 指定應用類型。HSF類型的應用需添加該注解,非HSF類型應用無需添加。 |
Annotation |
| 監控及微服務治理立即生效。同時,在EDAS控制上部署也可以生效。 |
通過Helm方式創建應用
下載測試應用的Helm Chart包。
wget https://edas-hz.oss-cn-hangzhou.aliyuncs.com/helm/edas-apps-chart-1.0.0.tgz
執行以下命令,創建應用。
helm install edas-apps edas-apps-chart-1.0.0.tgz
驗證應用(edas-app-consumer)是否創建成功。
方式一:執行以下命令,查看應用是否已創建成功。
kubectl get cloudapps
方式二:在EDAS控制臺查的應用管理 > 應用列表頁面查看應用是否已創建成功。
查看應用詳情及應用監控。
查看應用詳情
查看應用監控
編輯原生Workload
對于已被EDAS接管的Workload,如果修改Workload下Pod相關信息(Template區域的內容),將會同步到CloudApp被保留。下次通過控制臺部署應用時,不會丟失原有配置信息。例如:
在Deployment下新增以下Annotation。
編輯并保存后,在EDAS控制臺部署時,可看到新增配置。
刪除應用
方式一:刪除Workload(Deployment/StatefulSet) 。
kubectl delete deployment deployment-demo-01
方式二:刪除CloudApp。
kubectl delete cloudapps deployment-demo-01
以上兩種方式,任意一種執行后,EDAS上的應用都會自動刪除。