【云原生】K8S包管理(helm)

2022-11-28 15:55:04 浏览数 (1)

安装 helm

贡献者:幻灰龙 Linux系统上有包管理软件:

  • 例如 centos 上有 yum
  • 例如 ubuntu 上有 apt-get

Mac系统上有包管理软件:

  • 例如 brew

Windows 上也有可用的包管理软件:

  • 例如 scoop
  • 例如 choco

云原生的事实标准平台 k8s 上也可以安装各种组件和服务。而 helm 就是 k8s 的包管理软件,用来给 k8s 平台安装各种组件包或者服务包。 在不同平台上,通过对应平台的包管理软件,可以快速安装 helm 客户端命令。 例如 Windows 上(注:choco 是Windows上的一个包管理命令chocolatey)

代码语言:javascript复制
choco install kubernetes-helm

例如 Mac 上,直接使用 brew 安装:

代码语言:javascript复制
brew install helm

helm三大概念(Chart、Repository、Release)

helm 通过三大概念来管理 k8s 上的包:

  • Chart:Chart 代表着 helm 包。它包含在 Kubernetes 集群内部运行应用程序,工具或服务所需的所有资源定义。
  • Repository:是 chart 的存储库。例如:https://charts.bitnami.com/bitnami
  • Release:Release 是运行在 Kubernetes 集群中的 chart 的实例。一个 chart 通常可以在同一个集群中安装多次。每一次安装都会创建一个新的 release。以 MySQL chart为例,如果你想在你的集群中运行两个数据库,你可以安装该chart两次。每一个数据库都会拥有它自己的 release 和 release name。

使用helm安装mysql

贡献者:幻灰龙 首先,初始化下 helm 的仓库,命名为 bitnami

代码语言:javascript复制
helm repo add bitnami https://charts.bitnami.com/bitnami

其次,查看下仓库 bitnami 里有哪些包

代码语言:javascript复制
helm search repo bitnami

接着,通过 grep 命令过滤下 mysql 包相关的信息 helm serach repo|grep mysql

然后,安装 mysql 包到 k8s,可以看到安装的

代码语言:javascript复制
helm repo update # 确定我们可以拿到最新的charts列表 
helm install bitnami/mysql --generate-name

查看已经安装的 chart 列表,可以看到mysql已经装上了: helm list

现在,使用helm status xxx命令查看已安装mysql的状态

安装后的 mysql 可以通过 kubectl run 命令在pod上启动 mysql服务。

使用 helm 部署 Python 应用

贡献者:幻灰龙 回归下示例Python应用 cloud_native_hello_py 的目录结构:

代码语言:javascript复制
.
├── Dockerfile
├── README.md
├── k8s.deployment.yaml
├── k8s.service.yaml
└── src
    ├── main.py
    └── requirements.txt

我们使用 kubectl 命令部署过该 Python 服务,现在,我们用 helm 来部署。 首先,在项目命令下通过 helm 命令创建一个chart 配置文件夹 makedir chart cd chart helm create hello-py 此时,目录结构如下:

代码语言:javascript复制
.
├── Dockerfile
├── README.md
├── chart
│   └── hello-py
│       ├── Chart.yaml
│       ├── charts
│       ├── templates
│       │   ├── NOTES.txt
│       │   ├── _helpers.tpl
│       │   ├── deployment.yaml
│       │   ├── hpa.yaml
│       │   ├── ingress.yaml
│       │   ├── service.yaml
│       │   ├── serviceaccount.yaml
│       │   └── tests
│       │       └── test-connection.yaml
│       └── values.yaml
├── k8s.deployment.yaml
├── k8s.service.yaml
└── src
    ├── main.py
    └── requirements.txt

其中:

  • Chart.yaml: 基本描述
  • values.yaml: 配置镜像名称等
  • charts: 用于存放依赖的其他 chart
  • templates: 用于存放需要的配置模板

修改 values.yaml:

代码语言:javascript复制
replicaCount: 1
images: 
  image: fanfeilong/cloud_native_hello_py 
pullPolicy: IfNotPresent

现在,使用 heml 安装 helm install ./chart/hello-py/ --generate-name 检测下 k8s 的 deployment 和 sevice:

端口转发:

访问服务:

helm 可以规范化k8s应用的配置和部署。helm 通过chart依赖来解决所部署的k8s应用之间的依赖。

本文内容到此结束了, 如有收获欢迎点赞

0 人点赞