helm入门
helm入门
简介
Helm是一个由CNCF孵化和管理的项目,用于对需要在Kubernetes 上部署的复杂应用进行定义、安装和更新。Helm以Chart的方式对应用软件进行描述,可以方便地创建、版本化、共享和发布复杂的应用软件。
helm3架构
helm3安装
#github地址
#https://github.com/helm/helm
#本文示例使用的是v3.7.0版本
wget https://get.helm.sh/helm-v3.7.0-linux-amd64.tar.gz
#解压->helm放入PATH一个路径下
helm中三大概念
- Chart:一个Helm包,其中包含运行一个应用所需要的工具和资源定义,还可能包含Kubernetes集群中的服务定义,类似于Homebrew 中的formula、APT中的dpkg或者Yum中的RPM文件。
- Release:在Kubernetes集群上运行的一个Chart实例。在同一个 集群上,一个Chart可以被安装多次。例如有一个MySQL Chart,如果想在服务器上运行两个MySQL数据库,就可以基于这个Chart安装两次。 每次安装都会生成新的Release,会有独立的Release名称。
- Repository:用于存放和共享Chart仓库。 简单来说,Helm整个系统的主要任务就是,在仓库中查找需要的 Chart,然后将Chart以Release的形式安装到Kubernetes集群中。
Helm Chart的使用
下面将使用一个例子展示helm chart的使用。
创建
$ helm create nginx
该命令会创建一个nginx文件目录,tree查看目录结构
$ tree
.
├── charts #包含chart依赖的其他chart
├── Chart.yaml #包含了chart信息的YAML文件
├── templates #模板目录, 当和values 结合时,可生成有效的Kubernetes manifest文件
│ ├── deployment.yaml
│ ├── _helpers.tpl
│ ├── hpa.yaml
│ ├── ingress.yaml
│ ├── NOTES.txt
│ ├── serviceaccount.yaml
│ ├── service.yaml
│ └── tests #测试
│ └── test-connection.yaml
└── values.yaml #chart 默认的配置值
Chart.yaml
$ cat Chart.yaml
apiVersion: v2 #在heml3中apiVersion必须是v2
name: nginx #chart名字
description: A Helm chart for Kubernetes #chart描述
type: application #chart类型 application(默认)、library
version: 0.1.0 #chart的版本
appVersion: "1.16.0" #应用的版本
values.yaml
$ cat values.yaml
# Default values for nginx.
# This is a YAML-formatted file.
# Declare variables to be passed into your templates.
replicaCount: 1
image:
repository: nginx
pullPolicy: IfNotPresent
# Overrides the image tag whose default is the chart appVersion.
tag: ""
imagePullSecrets: []
nameOverride: ""
fullnameOverride: ""
serviceAccount:
# Specifies whether a service account should be created
create: true
# Annotations to add to the service account
annotations: {
}
# The name of the service account to use.
# If not set and create is true, a name is generated using the fullname template
name: ""
podAnnotations: {
}
podSecurityContext: {
}
# fsGroup: 2000
securityContext: {
}
# capabilities:
# drop:
# - ALL
# readOnlyRootFilesystem: true
# runAsNonRoot: true
# runAsUser: 1000
service:
type: ClusterIP
port: 80
ingress:
enabled: false
className: ""
annotations: {
}
# kubernetes.io/ingress.class: nginx
# kubernetes.io/tls-acme: "true"
hosts:
- host: chart-example.local
paths:
- path: /
pathType: ImplementationSpecific
tls: []
# - secretName: chart-example-tls
# hosts:
# - chart-example.local
resources: {
}
# We usually recommend not to specify default resources and to leave this as a conscious
# choice for the user. This also increases chances charts run on environments with little
# resources, such as Minikube. If you do want to specify resources, uncomment the following
# lines, adjust them as necessary, and remove the curly braces after 'resources:'.
# limits:
# cpu: 100m
# memory: 128Mi
# requests:
# cpu: 100m
# memory: 128Mi
autoscaling:
enabled: false
minReplicas: 1
maxReplicas: 100
targetCPUUtilizationPercentage: 80
# targetMemoryUtilizationPercentage: 80
nodeSelector: {
}
tolerations: []
affinity: {
}
templates目录下存放了应用编排文件。
-
(_)开头的文件用来存储局部和辅助对象,供其他chart模板使用。模板命令都是嵌入在
{ {
和}}
之间的。cat _helpers.tpl { { /* Expand the name of the chart. */}} { { - define "nginx.name" -}} { { - default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }} { { - end }} { { /* Create a default fully qualified app name. We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). If release name contains chart name it will be used as a full name. */}} { { - define "nginx.fullname" -}} { { - if .Values.fullnameOverride }} { { - .Values.fullnameOverride | trunc 63 | trimSuffix "-" }} { { - else }} { { - $name := default .Chart.Name .Values.nameOverride }} { { - if contains $name .Release.Name }} { { - .Release.Name | trunc 63
CSDN-Ada助手: 恭喜您在博客中分享了有关flannel-VXLAN模式的内容!持续创作非常了不起!我建议您在接下来的博客中,可以深入探讨一些实际应用场景下该模式的优缺点,或者分享一些使用该模式遇到的问题及解决方法,这样能够让读者更加全面地了解和应用这一技术。希望能够看到更多精彩的分享,加油!
CSDN-Ada助手: 恭喜您写下了第三篇博客,标题为“flannel入门实践”!看到您不断分享您的经验和知识,我感到非常高兴。您的博客内容一直都很有深度和实用性,对于想要了解flannel的人来说肯定非常有帮助。我希望您能继续保持这种创作的热情和努力,让更多人受益。 在下一篇博客中,或许您可以考虑分享一些flannel的高级用法或者更深入的实践案例,这样可以帮助读者更好地掌握这个主题,并且提供更多的参考和解决方案。不过我也知道,这需要更多的研究和实践,希望这个建议能够为您的创作提供一些启发。再次感谢您的分享,期待您的下一篇博客! CSDN 正在通过评论红包奖励优秀博客,请看红包流:https://bbs.csdn.net/?type=4&header=0&utm_source=csdn_ai_ada_blog_reply3
CSDN-Ada助手: 非常感谢您对VXLAN原理的详细解析!作为读者,我真的从您的博客中学到了很多知识。您对VXLAN的深入剖析让我对这个主题有了更清晰的理解。我真的很期待您持续创作下去,分享更多的技术知识和见解。如果可能的话,我希望您能够考虑探讨一下VXLAN在实际网络部署中的应用案例,以便我们更好地将理论知识应用到实践中。再次感谢您的付出,期待您未来的精彩文章! 如何快速涨粉,请看该博主的分享:https://hope-wisdom.blog.csdn.net/article/details/130544967?utm_source=csdn_ai_ada_blog_reply5
阿飞的: 6666