使用 Helm + Kubernetes 部署微服务

11/1/2019 postsKubernetes

# 使用 Helm + Kubernetes 部署微服务

# 前言

在之前的文章中,我提出了轻量型互联网应用架构方式 (opens new window),其中核心思想就是依赖 Kubernetes 实现服务治理。

之后,我尝试在团队中进行落地改造,第一步,就是把目前的服务搬上 Kubernetes。

在这个实践过程中,有些经验可以分享一下。

# 落地经验

在 Kalengo ,开发隐约(并没有 title 上的区别,但实际工作内容有区分)可以分为两类,一类主要处理业务需求,另一类做基础架构。

考虑到 Kubernetes 的复杂性,如果要做到开发不清楚 Kubernetes 原理和部署流程的情况下也能使用这一套工具,要做到以下这些点:

  1. 测试环境使用 Rancher管理 k8s 集群。

Rancher 提供了 web 页面,方便开发直接做环境变量修改,镜像变更和部署等操作。

  1. 在 Rancher 中启用 Helm 模板

把做好的目标发布到内部的 Helm 仓库,然后在配置到 Rancher 商店中,开发如果要新开一套测试环境,直接在 Rancher 商店里点击操作即可。只有模板制作者或运维才需要在本地安装 kubectl 和 helm 等工具

  1. 测试环境使用命名空间实现多租户

不同开发的测试环境使用命名空间隔离,避免冲突

  1. 内部服务的 service name 要固定

服务 A 访问服务 B,在没有 k8s 之前,我们是这样做的:

给服务 B 挂在到负载均衡上:http://b.env.kalengo.cn, 然后在服务 A 通过这个地址访问,不同环境,这个地址不一样,所以就要把地址配置到环境变量中。 但是在 k8s 里,我们可以给服务 B 固定一个 service name:http://b-svc, 服务 A 通过这个地址访问,在任何环境都是这个地址。

# 总结

做好了 helm 模板之后,可以做到一键部署完整的服务集合。

无论是开发本地集群,测试环境还是阿里云,只需要修改对应环境参数即可。

同时借助于 Rancher 提供的优秀的 Web 管理能力,极大简化了微服务部署和管理难度。

Last Updated: 7/20/2022, 5:50:20 PM