广告

从Helm Kubernetes Package Manager开始

  • 浏览(379)
  • 评论(0)
  • 译者:k8s

如果你刚刚开始使用Kubernetes,你可能已经发现为应用程序创建完整的堆栈清单是多么具有挑战性。你花时间熟悉应用程序和服务的部署方式,这会变得容易得多,但即便如此,编写完整的清单也可能是一项艰巨的任务。

这就是Helm发挥作用的地方。Helm是Kubernetes的包管理器和应用程序管理工具,使部署应用程序和服务变得相当容易。

可以把Helm想象成Kubernetes式的apt或dnf。使用此应用程序,你可以更轻松地将预构建的应用程序部署(甚至自定义)到Kubernetes集群。

Helm背后的神奇之处在于Helm Charts,它是一个预先配置的资源的打包集合,用于部署应用程序和服务。通过使用Helm,你可以显著提高Kubernetes的生产效率,同时也可以更轻松地一次又一次地重新创建成功的部署。

让我们了解一下安装Helm的过程,使用它查找并下载Helm chart,然后使用这些chart将应用程序部署到Kubernetes集群。

Helm Chart

让我们先谈谈Helm chart的结构。典型的Helm chart由以下文件组成:

——.helmignore–:包含打包chart时将被忽略的所有文件。

——Chart.yaml:包含有关正在打包的chart的所有信息(例如类型、版本和appVersion)。

——Values.yaml:包含要注入模板的所有定义。

——charts:包含chart所依赖的其他charts的目录。

——templates:存放要部署的清单的目录。

创建或下载chart后,目录结构可能如下所示:

├── charts
├── Chart.yaml
├── templates
│   ├── deployment.yaml
│   ├── _helpers.tpl
│   ├── hpa.yaml
│   ├── ingress.yaml
│   ├── NOTES.txt
│   ├── serviceaccount.yaml
│   ├── service.yaml
│   └── tests
│       └── test-connection.yaml
└── values.yaml

安装Helm

在安装Helm之前,你必须首先确保你已经安装了Kubernetes。一旦Kubernetes启动并运行,就可以安装Helm了。

Helm的安装非常简单。登录到Kubernetes机器(你将从中开发)并发出以下命令:

curl https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 |bash

系统会提示你输入管理员密码。一旦成功验证,安装将启动并完成。然后,你可以使用以下命令验证安装:

helm version –short

你应该看到:

v3.8.1+g5cb9af4

这表明,Helm已经安装好了。

下载稳定存储库

下一个任务是下载稳定的存储库(其中包含大量预先配置的Helm charts)。要执行此操作,请发出以下命令:

helm repo add stable https://charts.helm.sh/stable

使用以下命令测试以确保已成功下载存储库:

helm repo list

你应该看到:

1

2

NAME     URL

stable    https://charts.helm.sh/stable

如何在存储库中搜索chart

如果你想了解稳定存储库中有哪些chart可用,请发出以下命令:

helm search repo stable

当你运行该搜索命令时,你将看到大多数chart都已弃用(图1)。

图片

图1:在稳定存储库中发现的弃用Helm charts。

其原因是CNCF不再愿意支付单个集中式存储库的成本上升。因此,这些chart现在通过几个不同的组织托管在不同的存储库中。

幸运的是,在ArtifactHub中有一个解决方案。在这个网站上,你可以搜索任何你想象得到的Helm chart。

例如,假设想下载Kubernetes仪表板的Helm char,可以去ArtifactHub,搜索该应用程序,然后查看chart的所有必要信息。甚至还有一个安装链接,弹出一个窗口,提供安装repo和图chart所需的命令(图2)。

图片

图2:Kubernetes仪表板的安装说明。

要安装Helm chart,首先使用以下命令添加存储库:

helm repo add k8s-dashboard https://kubernetes.github.io/dashboard

立即用以下内容更新存储库:

helm repo update

使用以下内容搜索新添加的存储库:

helm search repo k8s-dashboard

你应该看到存储库中包含的所有应用程序(在本例中,只有一个)。

添加存储库后,使用以下内容安装chart:

helm install my-kubernetes-dashboard k8s-dashboard/kubernetes-dashboard –version 5.3.1

my kubernetes dashboard是你为chart指定的唯一名称(这使得可以多次下载chart)。下载chart可能需要一些时间(取决于文件的大小和数量)。

在~/。cache/helm/repository/directory,你应该会看到kubernetes-dashboard-5.3.1.tgz文件。使用以下命令解压缩该文件:

tar xvzf ~/.cache/helm/repository/kubernetes-dashboard-5.3.1.tgz

现在,ni 应该在当前工作目录中看到一个新目录kubernetes dashboard。该目录的结构如下所示:

├── Chart.lock
├── charts
│   └── metrics-server
│       ├── Chart.yaml
│       ├── ci
│       │   └── ci-values.yaml
│       ├── README.md
│       ├── templates
│       │   ├── apiservice.yaml
│       │   ├── clusterrole-aggregated-reader.yaml
│       │   ├── clusterrolebinding-auth-delegator.yaml
│       │   ├── clusterrolebinding.yaml
│       │   ├── clusterrole.yaml
│       │   ├── deployment.yaml
│       │   ├── _helpers.tpl
│       │   ├── NOTES.txt
│       │   ├── pdb.yaml
│       │   ├── psp.yaml
│       │   ├── rolebinding.yaml
│       │   ├── serviceaccount.yaml
│       │   └── service.yaml
│       └── values.yaml
├── Chart.yaml
├── README.md
├── templates
│   ├── clusterrolebinding-metrics.yaml
│   ├── clusterrolebinding-readonly.yaml
│   ├── clusterrole-metrics.yaml
│   ├── clusterrole-readonly.yaml
│   ├── configmap.yaml
│   ├── deployment.yaml
│   ├── _helpers.tpl
│   ├── ingress.yaml
│   ├── networkpolicy.yaml
│   ├── NOTES.txt
│   ├── pdb.yaml
│   ├── psp.yaml
│   ├── rolebinding.yaml
│   ├── role.yaml
│   ├── secret.yaml
│   ├── serviceaccount.yaml
│   ├── servicemonitor.yaml
│   ├── service.yaml
│   └── _tplvalues.tpl
└── values.yaml

你可以梳理这些文件,并对部署进行必要的更改。

安装完chart后,你将在底部看到部署说明。例如,Kubernetes仪表板部署是通过以下命令处理的。

通过运行以下命令获取Kubernetes仪表板URL:

export POD_NAME=$(kubectl get pods -n default -l “app.kubernetes.io/name=kubernetes-dashboard,app.kubernetes.io/instance=my-kubernetes-dashboard” -o jsonpath=”{.items[0].metadata.name}”)

如果pod成功运行,你应该看到如下输出:

echo https://127.0.0.1:8443/

最后,将本地端口转发到pod中的一个端口:

kubectl -n default port-forward $POD_NAME 8443:8443

一切就绪并运行后,你应该能够访问Kubernetes仪表板(或与Helm一起部署的任何应用程序/服务)。

这就是你开始与Helm合作的方式。熟悉这个Kubernetes包管理系统,你就可以节省时间和精力来部署Kubernetes。

即使您实际上没有使用Helm charts部署应用程序,这也是了解创建Kubernetes清单的细节的好方法。下载各种chart,并研究Chart.yaml文件,以了解有关如何创建这些清单的更多信息。

原文链接:

https://thenewstack.io/get-started-with-the-helm-kubernetes-package-manager/

  • 分享到:
  • icon
  • icon
  • icon
  • icon
箭头