Charts

Helm的使用

Helm使用称为Chart的包装格式。Charts是描述相关的一组Kubernetes资源的文件集合。单个Charts可能用于部署简单的东西,比如memcached pod,或者一些复杂的东西,比如完整的具有HTTP服务,数据库,缓存等的Web应用程序堆栈。

Chart通过创建为特定目录树的文件,将它们打包到版本化的压缩包,然后进行部署。一个Chart是一个Helm包。它包含在Kubernetes集群内部运行应用程序,工具或服务所需的所有资源定义。把它想像为一个自制软件,一个Apt dpkg或一个Yum RPM文件的Kubernetes环境里面的等价物。一个RepositoryCharts收集和共享的地方。它就像PerlCPAN archiveFedora软件包repoFedora Package Database

一个Release是处于Kubernetes集群中运行的Chart的一个实例。一个Charts通常可以多次安装到同一个群集中。每次安装时,都会创建一个新release 。比如像一个MySQL Charts。如果希望在群集中运行两个数据库,则可以安装该Charts两次。每个都有自己的release,每个release都有自己的release name

有了这些概念,我们现在可以这样解释HelmHelmChartss安装到Kubernetes中,每个安装创建一个新release 。要找到新的Charts,可以搜索Helm Chartss存储库repositories

命令详解

‘helm search’:查找Charts

首次安装Helm时,它已预配置为使用官方Kubernetes Charts存储库repo。该repo包含许多精心设计和维护的Chartss。此Chartss repo默认以stable命名。可以通过运行helm search查看有哪些Chartss可用:

$ helm search
NAME                     VERSION     DESCRIPTION
stable/drupal       0.3.2       One of the most versatile open source content m...
stable/jenkins      0.1.0       A Jenkins Helm Charts for Kubernetes.
stable/mariadb      0.5.1       Chart for MariaDB
stable/mysql        0.1.0       Chart for MySQL
...

如果没有使用过滤条件,helm search显示所有可用的Chartss。可以通过使用过滤条件进行搜索来缩小搜索的结果范围:

$ helm search mysql
NAME                   VERSION    DESCRIPTION
stable/mysql      0.1.0      Chart for MySQL
stable/mariadb    0.5.1      Chart for MariaDB

现在只会看到与过滤条件匹配的结果。为什么mariadb在列表中?因为它的包描述与MySQL相关。我们可以使用helm inspect Charts到这个:

$ helm inspect stable/mariadb
Fetched stable/mariadb to mariadb-0.5.1.tgz
description: Chart for MariaDB
engine: gotpl
home: https://mariadb.org
keywords:
- mariadb
- mysql
- database
- sql
...

‘helm install’:安装一个软件包

要安装新的软件包,请使用该helm install命令。最简单的方法,它只需要一个参数:Charts的名称。

$ helm install stable/mariadb
Fetched stable/mariadb-0.3.0 to /Users/mattbutcher/Code/Go/src/k8s.io/helm/mariadb-0.3.0.tgz
NAME: happy-panda
LAST DEPLOYED: Wed Sep 28 12:32:28 2016
NAMESPACE: default
STATUS: DEPLOYED

Resources:
==> extensions/Deployment
NAME                     DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
happy-panda-mariadb   1         0         0            0           1s

==> v1/Secret
NAME                     TYPE      DATA      AGE
happy-panda-mariadb   Opaque    2         1s

==> v1/Service
NAME                     CLUSTER-IP   EXTERNAL-IP   PORT(S)    AGE
happy-panda-mariadb   10.0.0.70    <none>        3306/TCP   1s


Notes:
MariaDB can be accessed via port 3306 on the following DNS name from within your cluster:
happy-panda-mariadb.default.svc.cluster.local

To connect to your database run the following command:

   kubectl run happy-panda-mariadb-client --rm --tty -i --image bitnami/mariadb --command -- mysql -h happy-panda-mariadb

现在mariadb Charts已安装,请注意,安装Charts会创建一个新release对象。上面的release被命名 为happy-panda(如果你想使用你自己的release名称,只需使用 –name参数 配合helm install)在安装过程中,helm客户端将打印有关创建哪些资源的有用信息,release的状态以及是否可以或应该采取其他的配置步骤。

Helm不会一直等到所有资源都运行才退出。许多Chartss需要大小超过600MDocker镜像,因此可能需要很长时间才能安装到群集中。

helm status

要跟踪release状态或重新读取配置信息,可以使用helm status

$ helm status happy-panda
Last Deployed: Wed Sep 28 12:32:28 2016
Namespace: default
Status: DEPLOYED

Resources:
==> v1/Service
NAME                     CLUSTER-IP   EXTERNAL-IP   PORT(S)    AGE
happy-panda-mariadb   10.0.0.70    <none>        3306/TCP   4m

==> extensions/Deployment
NAME                     DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
happy-panda-mariadb   1         1         1            1           4m

==> v1/Secret
NAME                     TYPE      DATA      AGE
happy-panda-mariadb   Opaque    2         4m


Notes:
MariaDB can be accessed via port 3306 on the following DNS name from within your cluster:
happy-panda-mariadb.default.svc.cluster.local

To connect to your database run the following command:

   kubectl run happy-panda-mariadb-client --rm --tty -i --image bitnami/mariadb --command -- mysql -h happy-panda-mariadb