helm使用

应用程序是代码和配置的复杂集合,这些集合对其安装方式有很大的影响。 像所有开源软件一样,它们可以从源代码安装,但是大多数时候用户希望简单,一致地安装某些东西。 这就是为什么软件包管理器几乎存在于管理安装过程的每个操作系统中的原因。

同样,Kubernetes依靠软件包管理来简化安装过程。 在本文中,我们将使用Helm软件包管理器及其稳定图表的概念来创建一个小型应用程序。

什么是Helm软件包管理器?

Helm 是用于部署到Kubernetes并在Kubernetes上运行的应用程序的程序包管理器。 它由 Cloud Native Computing Foundation (CNCF) 与使用Kubernetes的最大公司合作维护。 Helm可以用作命令行实用程序,在此 介绍如何使用 。

安装头盔

对于Linux和macOS,安装Helm既快捷又容易。 有两种方法可以执行此操作,您可以转到发布 页面 ,下载首选版本,解压缩文件,然后将Helm可执行文件移动到   / usr / local / bin 或您的 / usr / bin, 无论您使用的是哪个。

另外,您可以使用操作系统软件包管理( dnfsnapbrew或其他方式)进行安装。 在 GitHub页面 上有关于如何在每个操作系统上安装的说明 。

什么是舵图?

我们希望能够重复安装应用程序,而且还可以根据我们的环境对其进行自定义。 那就是Helm Charts发挥作用的地方。 Helm使用称为图表的标准化模板来协调应用程序的部署。 图表用于定义,安装和升级各种级别的应用程序。

图表是头盔包。 它包含在Kubernetes集群中运行应用程序,工具或服务所需的所有资源定义。 可以将其视为类似于Homebrew公式,Apt dpkg或Yum RPM文件的Kubernetes。

使用头盔

图表可以快速创建,我发现它们易于维护。 如果您有一个可以从公共版本控制站点访问的文件,则可以将其发布到 稳定的存储库中, 以使其更具可见性。 为了使图表稳定添加,它必须满足许多技术要求 。 最后,如果Helm维护人员认为它已正确维护,则可以将其发布到 Helm Hub 。

由于我们要使用社区管理的稳定图表,因此我们将通过添加快捷方式来使其更容易:

$ helm repo add stable https: // kubernetes-charts.storage.googleapis.com
"stable" has been added to your repositories

运行我们的第一个 头盔图

由于我已经在 本文中 介绍了Helm的基本用法, 因此 在 本文中 ,我将重点介绍如何编辑和使用图表。 要继续进行下去,您需要安装Helm并访问一些Kubernetes环境,例如minikube(您可以在 此处 或 此处进行 遍历 )。

首先,我将选择一张图表 。 通常,在我的文章中,我以詹金斯为例,如果图表不是很复杂,我会很乐意这样做。 这次,我将使用基本图表,并使用 mediawiki及其图表 创建一个小型Wiki 。

那我怎么得到这张图呢? 头盔让那么容易的一 拉 的 。

默认情况下,图表压缩为.tgz文件,但是我们可以使用--untar标志解压缩该文件以自定义Wiki。

$ helm pull stable / mediawiki --untar
$ ls
mediawiki /
$ cd mediawiki /
$ ls
Chart.yaml         README.md          requirements.lock  templates /
OWNERS             charts /            requirements.yaml  values.yaml

现在我们有了这个,我们可以开始定制图表了。

编辑头盔图

解压缩文件后,会出现大量文件。 尽管确实令人恐惧,但实际上我们只应该使用一个文件,那就是 values.yaml 文件。

解压缩的所有内容都是模板文件的列表,其中包含基本应用程序配置的所有信息。 实际上,所有模板文件都取决于values.yaml文件中配置的内容。 这些模板和图表文件中的大多数实际上是用于在集群中创建服务帐户的,而如果要在常规服务器上构建此应用程序,则通常会将这些必需的应用程序配置的各种集合放在一起。

但是转到values.yaml文件以及我们应该在其中进行的更改。 在您喜欢的文本编辑器或IDE中打开它。 我们看到具有大量配置的YAML文件。 如果仅放大容器映像文件,则会看到其存储库,注册表和标签以及其他详细信息。

## Bitnami DokuWiki image version
## ref: https://hub.docker.com/r/bitnami/mediawiki/tags/
##
image :
registry : docker.io
repository : bitnami/mediawiki
tag : 1.34.0-debian-10-r31
## Specify a imagePullPolicy
## Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent'
## ref: http://kubernetes.io/docs/user-guide/images/#pre-pulling-images
##
pullPolicy : IfNotPresent
## Optionally specify an array of imagePullSecrets.
## Secrets must be manually created in the namespace.
## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
##
# pullSecrets:
#   - myRegistryKeySecretName

正如您在文件中看到的那样,这些值的每个配置都是定义明确的。 我们的提取策略设置为 IfNotPresent 。 这意味着,如果运行helm pull命令,它将不会覆盖现有版本。 如果将其设置为 always ,则每次拉动图像都会默认为图像的最新版本。 在这种情况下,我将使用默认值,因为在过去,如果我在不希望它达到最新版本的情况下遇到了图像损坏的情况(请记住,版本控制您的软件,伙计们)。

自定义我们的头盔图

因此,让我们使用一些基本更改来配置此值文件,并使其成为我们自己的。 我将更改一些命名约定,Wiki用户名和mediawiki网站名称。 注意:这是values.yaml的另一个代码段。 所有这些自定义都在一个文件中进行。

## User of the application
## ref: https://github.com/bitnami/bitnami-docker-mediawiki#environment-variables
##
mediawikiUser : cherrybomb

## Application password
## Defaults to a random 10-character alphanumeric string if not set
## ref: https://github.com/bitnami/bitnami-docker-mediawiki#environment-variables
##
# mediawikiPassword:

## Admin email
## ref: https://github.com/bitnami/bitnami-docker-mediawiki#environment-variables
##
mediawikiEmail : root@example.com

## Name for the wiki
## ref: https://github.com/bitnami/bitnami-docker-mediawiki#environment-variables
##
mediawikiName : Jess's Home of Helm


之后,我将对我们的数据库名称和用户帐户进行一些小的修改。 我将默认设置更改为“ jess”,以便您可以看到更改的位置。

externalDatabase :
 ## Database host
host :

## Database port
port : 3306

## Database user
user : jess_mediawiki

## Database password
password :

## Database name
database : jess_mediawiki

##
## MariaDB chart configuration
##
## https://github.com/helm/charts/blob/master/stable/mariadb/values.yaml
##
mariadb :
 ## Whether to deploy a mariadb server to satisfy the applications database requirements. To use an external database set this to false and configure the externalDatabase parameters
enabled : true
## Disable MariaDB replication
replication :
enabled : false

## Create a database and a database user
## ref: https://github.com/bitnami/bitnami-docker-mariadb/blob/master/README.md#creating-a-database-user-on-first-run
##
db :
name : jess_mediawiki
user : jess_mediawiki


最后,我将在负载均衡器中添加一些端口,以允许来自本地主机的流量。 我在minikube上运行,发现LoadBalancer选项运行良好。

service :
 ## Kubernetes svc type
## For minikube, set this to NodePort, elsewhere use LoadBalancer
##
type : LoadBalancer
## Use serviceLoadBalancerIP to request a specific static IP,
## otherwise leave blank
##
# loadBalancerIP:
# HTTP Port
port : 80
# HTTPS Port
## Set this to any value (recommended: 443) to enable the https service port
# httpsPort: 443
## Use nodePorts to requets some specific ports when usin NodePort
## nodePorts:
##   http: <to set explicitly, choose port between 30000-32767>
##   https: <to set explicitly, choose port between 30000-32767>
##
# nodePorts:
#  http: "30000"
#  https: "30001"
## Enable client source IP preservation
## ref http://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip
##
externalTrafficPolicy : Cluster

现在,我们已经进行了配置以允许流量并创建数据库,我们知道可以继续并部署图表了。

部署并享受!

现在我们有了Wiki的自定义版本,是时候创建部署了。 在开始讨论之前,让我们首先确认Helm没有安装任何其他工具,以确保我的集群具有可用资源来运行我们的Wiki。

$ helm ls
NAME    NAMESPACE       REVISION        UPDATED STATUS  CHART   APP VERSION

目前没有通过Helm进行的其他部署,因此让我们继续进行。

$ helm install jesswiki -f values.yaml stable / mediawiki
NAME: jesswiki
LAST DEPLOYED: Thu Mar  5 12 : 35 : 31 2020
NAMESPACE: default
STATUS: deployed
REVISION: 2
NOTES:
1 . Get the MediaWiki URL by running:

NOTE: It may take a few minutes for the LoadBalancer IP to be available.
Watch the status with: 'kubectl get svc --namespace default -w jesswiki-mediawiki'

export SERVICE_IP =$ ( kubectl get svc --namespace default jesswiki-mediawiki --template "{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}" )
echo "Mediawiki URL: http:// $SERVICE_IP /"

2 . Get your MediaWiki login credentials by running:

echo Username: user
echo Password: $ ( kubectl get secret --namespace default jesswiki-mediawiki -o jsonpath = "{.data.mediawiki-password}" | base64 --decode )
$


完善! 现在,我们将导航至维基,该维基可在群集IP地址上访问。 要确认该地址:

kubectl get svc --namespace default -w jesswiki-mediawiki
NAME                 TYPE           CLUSTER-IP      EXTERNAL-IP   PORT ( S )        AGE
jesswiki-mediawiki   LoadBalancer   10.103.180.70   < pending >     80 : 30220 / TCP   17s

现在我们有了IP,我们继续检查它是否可用:

现在,我们已经启动并运行了新的Wiki,并且可以通过个人编辑来欣赏我们的新应用程序。 使用上面输出中的命令来获取密码并开始填写您的Wiki。

结论

Helm是一个功能强大的软件包管理器,它使在Kubernetes上安装和卸载应用程序变得非常简单。 图表通过为我们提供经过精心设计和测试的模板来安装我们独特的自定义应用程序,从而增加了体验。 继续探索Helm和Charts提供的内容,并在评论中让我知道您对它们的处理方式。

翻译自: https://opensource.com/article/20/3/helm-kubernetes-charts

helm使用

helm使用_通过图表提升您在Kubernetes上使用Helm的能力相关推荐

  1. Kubernetes中安装Helm及使用

    Helm 致力于成为 Kubernetes 的包管理工具,可以方便地发现.共享和使用为 Kubernetes 构建的应用,它包含几个基本概念: Chart:一个 Helm 包,其中包含了运行一个应用所 ...

  2. 前端绘制绘制图表_绘制图表(第2页):JavaScript图表库的比较

    前端绘制绘制图表 by Mandi Cai 蔡曼迪 绘制图表(第2页):JavaScript图表库的比较 (Charting the waters (pt. 2): a comparison of J ...

  3. helm安装_如何利用 Helm 在 Kubernetes 上快速部署 Jenkins

    Jenkins 做为最著名的 CI/CD 工具,在全世界范围内被广泛使用,而随着以 Kubernetes 为首的云平台的不断发展与壮大,在 Kubernetes 上运行 Jenkins 的需求越来越多 ...

  4. mac安装helm工具_部署利器 helm v3 安装以及使用指南

    山月最近想起来自己还有一个 k8s 集群,决定输出一些云原生的文章,在我的 github 仓库 github.com/shfshanyue/- 可以看到.本篇文章主要介绍 helm,说到它,实在是太简 ...

  5. excel部分网格线不见了_精品图表 | Excel绘制y轴带有阈值分割的柱形图和棒棒图...

    作者:刘必麟(@小必) 图书<Excel人力资源管理实战宝典>一书作者(书见文末) 本期内容主要是给大家介绍一下在y轴上带有阈值分割的柱形图是如何做的? 当然这个图还可以进行稍微地变化,有 ...

  6. aws 短信验证_在AWS Kubernetes上进行抛光的rshiny身份验证

    aws 短信验证 If you're looking for a hassle free way to add authentication to your RShiny Apps you shoul ...

  7. Kubernetes系列之Helm介绍篇

    本次系列使用的所需部署包版本都使用的目前最新的或最新稳定版,安装包地址请到公众号内回复[K8s实战]获取 介绍 Helm 是 Deis 开发的一个用于 Kubernetes 应用的包管理工具,主要用来 ...

  8. helm安装postgres_添加到postgres数据库外的keycloak k8s helm chart环境参数

    我是Kubernetes和helm-charts的新手,并试图让Keycloak在Postgres中保存数据而不是在H2中(因为他默认情况下这样做) . Postgres将由单独的头盔图创建 . 首先 ...

  9. helm安装postgres_Helm 入门介绍 Kubernetes 上的包管理软件

    这篇文章介绍一下云原生应用在 Kubernetes 上安装时,经常会用到的一个重要工具,Helm. Helm 是 Kubernetes 的包管理软件.提到包管理软件,很多人都不陌生.Maven.Gra ...

最新文章

  1. 扩增子分析解读4去嵌合体,非细菌序列,生成代表性序列和OTU表
  2. 推荐系统+覆盖率(coverage)
  3. 学习XHTML的强烈欲望、!
  4. html中的标签在xml中被识别为什么,在strings.xml中定义html标签
  5. 一年中最后一个月的最后一天说说_新的一年又开始了说说 年底最后一天的心情说说...
  6. ES6 Fetch API和Cookie相关的知识点
  7. Almost Arithmetic Progression
  8. javaSE知识点汇总
  9. 推荐系统遇上深度学习(十一)--神经协同过滤NCF原理及实战
  10. 最大矩阵和 2015-05-13 21:23 8人阅读 评论(0) 收藏...
  11. echart层级圆饼图
  12. 【线性分类器】(二)“深度学习”的鼻祖——感知器
  13. HTML5中weight属性的作用,weight属性
  14. 火剪剪辑系统,火剪矩阵系统,火剪系统源码框架
  15. 优势比(Odds Ratios)
  16. 北京今年已发生7次因乘客打架影响地铁运营-打架-地铁-地铁打架
  17. 方向余弦矩阵DCM刚体的矢量—矩阵描述
  18. Python学习-爬虫入门知识点整理
  19. idea中搭建基于maven的ssm整合框架
  20. 计算机系统漫游:贯穿计算机系统所有方面的重要概念

热门文章

  1. 复杂的c语言,C语言:复杂数据类型
  2. SpringBoot邮件服务
  3. linux下几个压缩命令
  4. 泛函编程(16)-泛函状态-Functional State
  5. 如何阅读Cookbook技术书——如果我要把一本几百上千页的书从头读到尾,应该怎样有效阅读。...
  6. cocos2d-x 3.0游戏实例学习笔记《卡牌塔防》第八部---怪物出场
  7. C++ 虚函数表解析 继承
  8. 将本地已经存在的代码跟github上新建的仓库建立关联,解决“fatal: 'origin' does not appear to be a git repository...”
  9. 算法高级(26)-在Java8中为什么要使用红黑树来实现的HashMap?
  10. 程序员的进阶课-架构师之路(6)-链表