使用Nexus管理Helm Charts

Helm现在正成为管理Kubernetes应用程序的标准,并且是使用Kubernetes的任何人的必备技能。

Helm是Kubernetes的最受欢迎的软件包管理工具。它允许DevOps团队对Kubernetes应用程序进行版本控制,分发和管理。尽管可以使用标准的kubectl命令和Kubernetes清单YAML文件,但是当组织从事微服务体系结构时-数百个容器相互交互-这就需要对Kubernetes清单进行版本化和管理。

为什么要使用Helm?
Helm使模板应用程序变得容易

我们可以使用同一个DockerImage来创建多个容器,而Kubernetes并非如此。您不能轻易重用清单文件,当部署多个实例的时候就需要复制清单文件。Helm可帮助您使用chart和变量对其进行管理。您只需要创建一个通用的chart并使用变量以发布的形式部署不同的实例。

Helm使Kubernetes应用程序的版本控制成为可能

开发人员最初使用YAML文件创建Kubernetes清单,然后将其存储在源代码存储库中。这种方法的问题是清单没有进行语义版本控制。应该始终将发行版作为软件包进行版本控制。Helm通过将应用程序打包到Helm Chart中来解决此问题,这使得可以在Helm存储库中存储Chart的多个版本,并且您可以快速发布或回滚而无需再次从源代码构建。

Helm使重用和共享成为可能

对于Docker映像,您可以在DockerHub上共享您的映像-Kubernetes无法做到这一点。有了KubernetesCharts之类的公共Helm存储库,现在就可以实现。公共Helm存储库允许重复使用Kubernetes应用程序,使供应商能够为消费者提供标准的Helm图表,并使两者的工作变得简单。

Helm使部署Kubernetes应用程序变得简洁

使用Helm,您可以运行简单的命令(例如helm install和helm del)来安装和删除发行版。

您不必担心查找清单文件并运行kubectl delete。Helm一切都充满活力。

Helm使依赖管理成为可能

让我们以一个LAMP堆栈为例。Apache对MySQL有明确的依赖性。您不应该在没有MySQL的情况下安装Apache。使用Helm,您可以在Apache图表上添加MySQL的依赖项以允许这种情况发生,而纯粹的Kubernetes清单则无法做到这一点。

Helm有助于执行标准

Helm允许图表开发人员从标准模板开始,然后根据其应用程序要求对其进行自定义。标准模板将使它们满足使用Kubernetes开发应用程序的最低标准。Helm生成的清单模板具有一定的质量,开发人员可以从中学习。




Helm三大概念
Helm charts

Chart是Helm程序包。如果您了解Linux,那么Helm图表相当于Kubernetes的RPM或DEB。Helm Chart将您的Kubernetes清单包装成具有chart版本和所有所需依赖项的动态模板,这使您可以标准化和分发应用程序。

Helm release

Helm release是Kubernetes集群上Helm chart的一个实例。Helm chart充当发布的模板,而发布是实际运行的Helm应用程序。您可以使用相同的Helm chart来创建多个版本。

Helm repo

Helm存储库存储Helm chart,如Yum存储库存储RPM。任何需要在Kubernetes上安装应用程序的人都可以使用简单的Helm命令从Helm存储库下载该应用程序。

Helm存储库可以在任何Web服务器上运行,因此托管一个Web服务器很简单。传统方法包括index.yaml在charts目录中创建一个文件,该public文件在Web服务器的文件夹中创建,并在将图表推入存储库时手动更新文件。以下是Web服务器目录结构的示例结构:

charts/
  |
  |- index.yaml
  |
  |- alpine-0.1.2.tgz
  |
  |- alpine-0.1.2.tgz.prov

但是,目前,成熟的组织使用某种形式的工件存储库管理器,例如Sonatype Nexus,它与CI / CD管道集成在一起。

带有Docker和Helm的CI/CD

与Docker和Helm一起使用的典型的持续集成和持续部署(CI/CD)管道如下所示:

DevOps工程师创建Docker文件和所需的依赖关系(以及应用程序的HelmChart),并将其推送到源代码存储库。

源代码存储库具有对CI / CD工具(例如Jenkins)的提交后触发构建,该工具可以:

  • 使用Dockerfile构建Docker映像并将其推送到Sonatype Nexus中的Docker存储库

  • 打包HelmChart并将其推送到Sonatype Nexus中的Helm存储库

然后,它使用Nexus使用的最新软件包来更新索引,helm repo update并触发Kubernetes运行,helm upgrade --install以根据Nexus中可用的最新chart升级现有版本或安装新版本。


在Sonatype Nexus上托管Helm存储库

Nexus为各种技术(例如Maven,Yum,Go,Python,npm,Docker等)提供的多种类型的存储库支持,使存储库的组织和管理变得容易。

对于已经使用Sonatype Nexus的组织,将它们托管在Nexus中的Helm存储库是很有意义的。Sonatype社区已做出努力来构建托管Helm存储库的功能。需要安装nexus-repository-helm插件来完成。

Nexus Repository Manager 3.21+ 中已包含Helm格式。因此,无需安装它。如果您的Nexus安装版本低于此版本,建议升级或者使用正确的插件版本手动配置。


创建仓库

测试配置

使用以下命令将Nexus存储库添加到您的Helm配置中,访问Helm存储库。

# helm repo add  nexus http://admin:admin123@192.168.1.200:8081/repository/myhelm/
"nexus" has been added to your repositories
# helm repo list
NAME        URL
stable      http://mirror.azure.cn/kubernetes/charts/
gitlab      https://charts.gitlab.io
mattermost  https://helm.mattermost.com
nexus       http://admin:admin123@192.168.1.200:8081/repository/myhelm/
[root@zeyang-nuc-service ~]#

上传chart到存储库

[root@zeyang-nuc-service new-k8s-runner]# ls
buildcache-pvc.yml  buildsdir-pvc.yml  gitlab-runner
[root@zeyang-nuc-service new-k8s-runner]# ls gitlab-runner/
CHANGELOG.md     Chart.yaml  Makefile  README.md  values.yaml
CONTRIBUTING.md  LICENSE     NOTICE    templates
[root@zeyang-nuc-service new-k8s-runner]# helm package ./gitlab-runner
Successfully packaged chart and saved it to: /root/new-k8s-runner/custom-gitlab-runner-0.15.0.tgz
[root@zeyang-nuc-service new-k8s-runner]# ls
buildcache-pvc.yml  custom-gitlab-runner-0.15.0.tgz
buildsdir-pvc.yml   gitlab-runner

curl -v -F file=@custom-gitlab-runner-0.15.0.tgz -u admin:admin123 http://192.168.1.200:8081/service/rest/v1/components?repository=myhelm

接下来测试在nexus中获取helm chart

要从Nexus安装chart,您需要使用Nexus上的最新软件包更新本地仓库索引,helm repo update然后运行helm install以从Chart中创建新版本。如果一切顺利,Helm将从Nexus下载该chart并将其安装在您的Kubernetes集群上

# helm search repo -l custom-gitlab-runner
No results found
# helm repo update
Hang tight while we grab the latest from your chart repositories...
...Successfully got an update from the "nexus" chart repository
...Successfully got an update from the "mattermost" chart repository
...Successfully got an update from the "gitlab" chart repository
...Successfully got an update from the "stable" chart repository
Update Complete. ⎈ Happy Helming!⎈
# helm search repo -l custom-gitlab-runner
NAME                        CHART VERSION  APP VERSION  DESCRIPTION
nexus/custom-gitlab-runner  0.15.0         12.9.0       GitLab Runner


# helm fetch nexus/custom-gitlab-runner --version 0.15.0
[root@zeyang-nuc-service opt]# ls
atlassian  ci-build-cache  cni         custom-gitlab-runner-0.15.0.tgz  jenkins    teamviewer
cache      ci-build-dir    containerd  halyard                          spinnaker  zap


本着学习的态度翻译分享,如有侵权等请联系我立即删除,多谢!。


2020最实用的DevOps流水线实践教程

本课程我们主要讲解通过使用Jenkins/GitLabCI完成DevOps交付流水线,实践内容较多。从多个角度出发让每个实践都能落地。内容从最基础部分到最佳实践,每个点都能让感受到Jenkins功能的强大。内容都是来源于自身在企业中的实践。

对于零基础同学建议选择全套教程系统学习 [点击????图片报名]

对于零基础同学建议选择全套教程系统学习 [点击????图片报名]

更多精彩请关注 DevOps云学堂



  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Helm Charts 是 Kubernetes 的一种包管理工具,用于将 Kubernetes 应用程序的部署、配置和管理打包成可重复使用的包。使用 Helm Charts 可以大大简化 Kubernetes 应用程序的部署和管理。 以下是 Helm Charts 的学习文档: 1. Helm 官方文档:https://helm.sh/docs/ Helm 官方文档提供了 Helm 的概述、安装、使用、开发等方面的详细介绍,是学习 Helm 的最佳资源。 2. Helm Charts 官方文档:https://helm.sh/docs/topics/charts/ Helm Charts 官方文档介绍了 Helm Charts 的结构、模板、依赖关系、值文件等方面的内容,可以帮助你了解如何编写和使用 Helm Charts。 3. Kubernetes 官方文档:https://kubernetes.io/docs/home/ Kubernetes 官方文档提供了 Kubernetes 的概述、安装、使用、开发等方面的详细介绍,是学习 Kubernetes 的最佳资源。 4. Helm Tutorials:https://helm.sh/docs/topics/tutorials/ Helm Tutorials 提供了一系列的教程,包括如何使用 Helm 安装应用程序、如何编写自己的 Helm Charts 等方面的内容。 5. Helm Hub:https://hub.helm.sh/ Helm Hub 是一个 Helm Charts 的社区库,包含了大量的 Helm Charts,可以帮助你快速找到并部署所需要的应用程序。 6. Helm Best Practices:https://helm.sh/docs/chart_best_practices/ Helm Best Practices 提供了一系列的最佳实践,包括如何编写高质量的 Helm Charts、如何管理 Helm Charts 的版本等方面的内容,可以帮助你编写更好的 Helm Charts。 总之,学习 Helm Charts 需要掌握 Helm 的基本概念和使用方法,熟悉 Kubernetes 的基本概念和使用方法,并且有一定的编写经验。通过不断地学习和实践,你可以成为一个熟练的 Helm Charts 开发者。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值