在ACK中部署一个应用时,通常需要配置包括工作负载、Service、Ingress、ConfigMap在内的多种资源,过程较为繁琐。通过使用Helm,您可对这些资源以应用为单位进行部署与升级,实现更高效的应用管理。ACK在控制台上集成了Helm,提供了WordPress、Dify、ComfyUI等常见的第三方应用。本文介绍在ACK集群中使用Helm部署应用的方法。
Helm介绍
Helm是一个用于在Kubernetes集群中进行应用管理的开源工具,它提供了统一的应用打包方式,同时支持版本控制,降低了应用分发和部署的复杂性。您可参照下方的表格,了解Helm的基本概念,更多信息请参见官方文档。
Helm概念 | 说明 |
Helm概念 | 说明 |
Chart | 一个Helm包,其中包含了运行一个应用所需要的镜像、依赖和资源定义等,还可能包含Kubernetes集群中的服务定义,类似Homebrew中的formula、APT的dpkg或者Yum的rpm文件。 |
Release | 在Kubernetes集群上运行的Chart的一个实例。在同一个集群上,一个Chart可以安装多次。每次安装都会创建一个新的Release。例如,如果一个MySQL Chart想在服务器上运行两个数据库,可以将此Chart安装两次,并在每次安装中生成自己的Release以及Release名称。 |
Helm CLI | Helm的客户端,在本地执行。可用于在ACK集群中部署第三方Chart。 |
Repository | Chart存储库,Helm CLI通过HTTP协议来访问存储库中Chart的索引文件和压缩包。 |
前提条件
已创建ACK集群。具体操作,请参见创建ACK托管集群。
已使用kubectl连接集群并安装Helm CLI。具体操作,请参见获取集群KubeConfig并通过kubectl工具连接集群、Installing Helm。
通过控制台部署应用
ACK提供了一些常见应用的Chart,您可以在控制台使用这些Chart安装应用。下面的步骤展示了通过Helm安装WordPress的示例。
登录容器服务管理控制台,在左侧导航栏单击集群列表。
在集群列表页面,单击目标集群名称,然后在左侧导航栏,选择
。在Helm页面,单击创建。参考如下信息完成基础信息配置。
参数
说明
示例值
参数
说明
示例值
应用名
Release在集群内的名称。
wordpress
命名空间
Release部署的命名空间。
default
来源
Chart的来源:ACK应用市场或ACR企业版。
应用市场
Chart
安装应用所使用的Chart。
ack-wordpress-sample
单击面板左下方的下一步,然后选择最新的Chart 版本。确认Chart内容后,单击面板下方的确定。
安装WordPress成功后,执行以下命令获取外部IP访问地址,即
EXTERNAL-IP
。kubectl get svc --namespace default
预期输出如下,
EXTERNAL-IP
为118.xx.xx.10
。NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE wordpressabc-ack-wordpress-sample LoadBalancer 172.16.86.22 118.190.xx.xx 80:30837/TCP,443:32433/TCP 33m wordpressabc-mariadb ClusterIP 172.16.70.108 <none> 3306/TCP 33m
使用
kubectl get pod
命令找到WordPress Pod的名称,然后执行以下命令获取访问用户。kubectl get pod <wordpress-ack-wordpress-sample-name> -o=jsonpath='{.spec.containers[*].env[?(@.name=="WORDPRESS_USERNAME")].value}'
预期输出:
user
执行以下命令获取访问密码。
kubectl get secret --namespace default wordpress-ack-wordpress-sample -o jsonpath="{.data.wordpress-password}" | base64 --decode
预期输出:
ps**jRx**V
在浏览器中,输入之前获取的
EXTERNAL-IP
,在IP后方添加/login
访问WordPress应用,然后输入访问用户和密码登录界面。
通过控制台管理已安装的应用
您可以在Helm页面对已安装的Release进行操作:
单击Release的发布名称或详情,可查看该Release的信息,例如资源、YAML文件、历史版本等信息。
单击更新,在更新发布面板中修改相关参数,然后单击确定,可对该Release进行更新。
单击删除,在删除应用对话框中,选中清除发布记录,然后单击确定,删除Release以及包含的Service、Deployment等资源。
若不选中清除发布记录,此时该Release会保留在发布列表中,后续在部署应用时,可能会出现重名冲突,导致应用部署失败。
通过Helm CLI使用第三方库部署应用
如果ACK提供的Chart无法满足您的需求,您可参照以下示例,通过Helm CLI使用第三方库部署应用。
helm repo add <REPO_NAME> <REPO_URL> # 添加Chart存储库,REPO_NAME替换为Chart存储库的名称,REPO_URL替换为存储库的地址
helm repo update # 更新存储库信息
helm install <APP_NAME> <REPO_NAME>/<CHART_NAME> # 安装应用,APP_NAME替换为一个应用的名称,CHART_NAME替换为Chart的名称
Helm更多命令请参见Using Helm。
相关文档
为避免Helm V2 Tiller服务端的一些潜在安全问题,例如攻击者可以通过Tiller在集群内安装未经授权的应用,推荐您将Helm V2升级至Helm V3版本,并且可以使用更多的Helm特性。您可通过下列命令查看集群中的Helm版本。升级操作详情,请参见将Helm V2升级迁移至Helm V3。
helm version
预期输出:
version.BuildInfo{Version:"***", GitCommit:"***", GitTreeState:"***", GoVersion:"go***"}
您可以通过容器镜像服务企业版的Helm Chart功能,拉取和推送Chart。具体操作,请参见推送和拉取Helm Chart。