安装 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/bitnamiRelease
: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应用之间的依赖。
本文内容到此结束了, 如有收获欢迎点赞