博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
helm使用_通过图表提升您在Kubernetes上使用Helm的能力
阅读量:2522 次
发布时间:2019-05-11

本文共 9318 字,大约阅读时间需要 31 分钟。

helm使用

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

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

什么是Helm软件包管理器?

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

安装头盔

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

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

什么是舵图?

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

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

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

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

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

运行我们的第一个 头盔图

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

首先,我将选择一张图表 。 通常,在我的文章中,我以詹金斯为例,如果图表不是很复杂,我会很乐意这样做。 这次,我将使用基本图表,并使用 创建一个小型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中打开它。 我们看到具有大量配置的文件。 如果仅放大容器映像文件,则会看到其存储库,注册表和标签以及其他详细信息。

## 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:
 
##   https:
 
##
 
# 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,我们继续检查它是否可用:

A working wiki installed through helm charts

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

结论

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

翻译自:

helm使用

转载地址:http://wvdzd.baihongyu.com/

你可能感兴趣的文章
MySQL创建数据库及用户
查看>>
Springboot静态页面放在static路径下还是访问不到
查看>>
centos7 重启网卡失败
查看>>
springboot(一)注解
查看>>
07 Mybatis的多表查询1----1对多和多对1
查看>>
debian和ubuntu的sh dash bash
查看>>
java9-8 局部内部类
查看>>
数据库分页
查看>>
Centos6.8源码编译安装PHP7
查看>>
012 debug调试工具的指令
查看>>
慕课网消息的接收与响应3
查看>>
第三十二讲:UML类图(下)
查看>>
linux下更改时区
查看>>
复杂链表的复制
查看>>
code vs 3376 符号三角形
查看>>
[CF193B] Xor(暴力,剪枝,异或)
查看>>
[CF825D] Suitable Replacement (贪心乱搞)
查看>>
大数据笔记(二十五)——Scala函数式编程
查看>>
win7 IIS7 运行vs2003 web 项目 无法识别的配置节“system.webServer” 解决
查看>>
jQuery源码分析_工具方法(学习笔记)
查看>>