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上的应用都会自动删除。