K8s集群上使用Helm部署2.4.6版本Rancher集群

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了K8s集群上使用Helm部署2.4.6版本Rancher集群相关的知识,希望对你有一定的参考价值。

参考技术A

参考文档
Helm安装Rancher

Rancher简介
Rancher是一套容器管理平台,它可以帮助组织在生产环境中轻松快捷的部署和管理容器。 Rancher可以轻松地管理各种环境的Kubernetes,满足IT需求并为DevOps团队提供支持。
Kubernetes不仅已经成为的容器编排标准,它也正在迅速成为各类云和虚拟化厂商提供的标准基础架构。Rancher用户可以选择使用Rancher Kubernetes Engine(RKE)创建Kubernetes集群,也可以使用GKE,AKS和EKS等云Kubernetes服务。 Rancher用户还可以导入和管理现有的Kubernetes集群。
Rancher支持各类集中式身份验证系统来管理Kubernetes集群。例如,大型企业的员工可以使用其公司Active Directory凭证访问GKE中的Kubernetes集群。IT管​​理员可以在用户,组,项目,集群和云中设置访问控制和安全策略。 IT管​​理员可以在单个页面对所有Kubernetes集群的健康状况和容量进行监控。
Rancher为DevOps工程师提供了一个直观的用户界面来管理他们的服务容器,用户不需要深入了解Kubernetes概念就可以开始使用Rancher。 Rancher包含应用商店,支持一键式部署Helm和Compose模板。Rancher通过各种云、本地生态系统产品认证,其中包括安全工具,监控系统,容器仓库以及存储和网络驱动程序。下图说明了Rancher在IT和DevOps组织中扮演的角色。每个团队都会在他们选择的公共云或私有云上部署应用程序。

集群环境

Helm环境

添加Chart仓库地址

通过Helm安装Rancher
注意:这里指定了hostname=rancher.minminmsn.com,必须使用域名访问才行。
注意:rancher默认使用https访问,因此,需要有一个公网的SSL才行,可以使用之前ingress-secret2021。

注意:其中有几个参数需要特别注意,如果不注意后续再修改服务配置也可,比如namespace、hostname、ingress等,下面正式helm部署rancher

发现默认是3节点rancher集群,测试k8s集群只有2个节点,所以有1个pod没有启动,这里需要修改deploy中的replicas为2

修改其中replicas由2变为2

全部内容如下

修改ingress证书
需要修改rancher默认ingress的secretName由tls-rancher-ingress变更为ingress-secret2021

登陆rancher设置环境
默认密码为admin需要设置复杂密码,默认语言为英文可以改为中文,默认管理本地k8s集群

添加TKE集群
创建ptech集群并导入,需要在ptech集群上执行如下

创建enterprise集群并导入,需要在enterprise集群上执行如下

最终效果如下

云原生部署之Helm最佳实践(上)


半年多前,我们从传统的Ansible自动化部署迁移到了云原生部署。我们没有通过Rancher或者KubeSphere这些平台的可视化界面部署,而是选择了Helm这个命令行工具。原因有以下几点:

1.坚持一切版本化,一切自动化的原则;2.Helm在声明式思维方面相对其它工具更友好;3.方便配置与制品分离;

Helm目前有两个版本:v2和v3。幸运的是,我们正准备大规模使用时,v3版本发布。所以,我们没有经历升级之苦。特此说明以下最佳实践基于Helm3。

注:本文针对对Helm有一定基础的同学,如果没有基础,可以先收藏。

正片开始:

自行版本化chart

maven、npm等构建工具的包会有一个唯一的官方源,但是,Helm的chart包似乎没有,你会遇到很多不同的源。这对chart的版本控制非常不利,因为你不知道哪天,远端的源就不见了。所以,最好的做法,使用helm pull命令将chart下载本地,然后指定一个版本上传制品库Nexus的Helm仓库中。上传命令为:

curl -s -u '${USER_PASS}' --upload-file ${chart_name}-${charts_version}.tgz http://xxx-nexus.com/repository/helm-repo/

使用upgrade —install子命令部署应用

刚开始学习Helm时,我们通常使用helm install来安装chart。但是,第二次执行helm install,就会报错,因为K8s中已经存在了该chart的release了。这个过程对流水线是不友好的,所以,在流水线,我们使用的是helm upgrade —install xx ./xx.tgz来部署。

尽早标准化应用,标准化chart

如果存在100个微服务,我们是不是要创建100个chart呢?事实上,一开始,我们团队就是这样的。这是因为我们的微服务一开始不够标准化,所以,chart也跟着不同。后来,我们逐渐标准化了应用。chart也变成了标准。也就是所有的后端服务使用的是同一个chart。这样做的还有利于提高我们创建新的微服务的速度。

所谓标准化,指的是pod对外提供服务的端口号、优雅停机、设置环境变量的方法等等这些通用的领域的配置都应该是统一的。

尽量少使用if-else判断

以chart中,我们应该尽量少使用if-else判断。有时,宁愿多写几个YAML也不要在同一个文件嵌套if-else。因为要尽可能的让chart本身所见即所得。

下篇预告:

Helm下,如何实现同一应用多版本部署?chart工程该如何安排更合理?密码该如何管理?如何更好的调试chart?