Kubernetes/k8s之包管理器helm

这篇具有很好参考价值的文章主要介绍了Kubernetes/k8s之包管理器helm。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

helm

在没有helm之前,我们要部署一个服务,deployment、service ingress

的作用通过打包的方式。把deployment、service ingress打包在一块,一键式部署服务。类似于yum功能。是官方提供的类似安装仓库的功能,可以实现一键化部署应用

helm的概念

由三个部分组成

chart:helm的软件包,部署包,service ingress,是一些定义好的yaml资源,类似于yum的rpm包

Release:可以理解为版本,也可以理解为在安装过程中,给部署的应用起一个名字,

Repository:仓库,提供一个人服务器,这个服务器当中包含chart这些资源,yaml资源的保存地址。

一般使用的是helm3

将Helm安装在master01节点上 


tar -zxvf helm-v3.6.0-linux-amd64.tar.gz
mv linux-amd64/helm /usr/local/bin/helm


添加helm的自动补全功能,方便后续使用
vim /etc/bashrc
source <(helm completion bash)

使用 helm 安装 Chart 
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo add stable http://mirror.azure.cn/kubernetes/charts
helm repo add aliyun https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
helm repo add incubator https://charts.helm.sh/incubato

更新和查看 charts 列表

helm repo update          
helm repo list

查看 stable 仓库可用的 charts 列表
helm search repo stable

删除 incubator 仓库
helm repo remove incubator

查看 chart 信息

helm show chart stable/mysql

helm show all stable/mysql         #获取指定 chart 的所有信息

安装 chart 
helm install my-redis bitnami/nginx 
my-nginx: bitnami仓库名,nginx就是chart一些列yaml资源的集合。
helm uninstall my-nginx  #删除
helm install bitnami/nginx --generate-name
--generate-name #随机生成一个rmlist的名称
helm ls #查看安装的所有版本


helm自定义模板:根据自己需要,定义chart,然后部署到集群中


helm pull stable/mysql
tar -xf mysql-1.6.9.tgz
tree nginx
nginx/
├── charts
├── Chart.yaml
├── templates
│   ├── deployment.yaml
│   ├── _helpers.tpl
│   ├── hpa.yaml
│   ├── ingress.yaml
│   ├── NOTES.txt
│   ├── serviceaccount.yaml
│   ├── service.yaml
│   └── tests
│       └── test-connection.yaml
└── values.yaml

charts:用于存储依赖环境,如果这个chart依赖于其他的chart,依赖文件保存这个目录

chart.yaml:helm chart的元数据文件,包含了这个chart的名称,版本,维护者信息等等

templates:包含清单模板的目录

deployment.yaml:部署应用的模板文件

heplers.tpl:帮助文档,告诉用户如何来定义模板的值

hpa.yaml:定义了应用程序副本数的扩缩容行为

ingress.yaml:定义了外部流量如何转发到应用程序

HOSTs.txt:注意事项

serviceaccount.yaml:应用程序的服务账号

service.yaml:集群内部的访问

tests test-connection.yaml:测试的目录和文件,部署完chart之后,用测试的文件

values.yaml:核心文件,自定义的值,都是通过values.yaml。把我们的数据覆盖到安装的chart

vim nginx/Chart.yaml
apiVersion: v2
name: nginx 
chart名字
description: A Helm chart for Kubernetes
type: application
chart类型,application或library
version: 0.1.0
chart版本
appVersion: 1.16.0
application部署版本
vim values.yaml
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 #开启ingress
  # 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: www.lucky.com  #指定域名
      paths:
        - path: /
          pathType: Prefix
  #指定ingress路径类型

  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: {}
helm lint nginx        #检查依赖和模版配置是否正确
 
helm package nginx     #打包 chart,会在当前目录下生成压缩包 nginx-0.1.0.tgz

helm install nginx ./nginx --dry-run --debug    #使用 --dry-run 参数验证 Chart 的配置,并不执行安装

helm install nginx ./nginx -n default           #部署 chart,release 版本默认为 1
wget https://gitee.com/mirrors/ingress-nginx/raw/nginx-0.30.0/deploy/static/mandatory.yaml

wget https://gitee.com/mirrors/ingress-nginx/raw/nginx 0.30.0/deploy/static/provider/baremetal/service-nodeport.yaml

kubectl apppy -f mandatory.yaml
kubectl apppy -f service-nodeport.yaml

访问域名Kubernetes/k8s之包管理器helm,kubernetes,容器,云原生

修改chart之后重新部署
vim values.yaml
service:
  type: NodePort
  port: 80
  nodePort: 30000

ingress:
  enabled: false
  className: ""
  annotations: {}


vim service.yaml


apiVersion: v1
kind: Service
metadata:
  name: {{ include "nginx.fullname" . }}
  labels:
    {{- include "nginx.labels" . | nindent 4 }}
spec:
  type: {{ .Values.service.type }}
  ports:
    - port: {{ .Values.service.port }}
      targetPort: http
      protocol: TCP
      name: http
      nodePort: {.Values.service.nodePort}
  selector:
    {{- include "nginx.selectorLabels" . | nindent 4 }}


helm upgrade nginx-22 nginx
自定义chart的版本回滚 
helm history nginx1-22              #查看 release 版本历史
 
helm rollback nginx1-22 1           #回滚 release 到版本1

Helm 的私有仓库-Habor

harbor端



vim harbor.yml
harbor_admin_password: 123456

chart:
  absolute_url: enabled
#在chart当中使用绝对路径的url,https://hub.test.com/charts 相对路径: /charts

./install.sh

master上

mkdir -p ~/.local/share/helm/plugins/helm-push

tar -xf helm-push_0.8.1_linux_amd64.tar.gz -C ~/.local/share/helm/plugins/helm-push

docker login -u admin -p 123456 https://hub.test.com

helm package nginx

docker push nginx-0.2.0.tgz oci://hub.test.com/charts --insecure-skip-tls-verify

Kubernetes/k8s之包管理器helm,kubernetes,容器,云原生

拉取chart包测试: 

rm -rf nginx

helm pull oci://hub.test.com/charts/nginx --version 0.2.0 --insecure-skip-tls-verify

helm install nginx-22 ./nginx-0.2.0.tgz

helm就是一个部署微服务的工具,可以跳过繁琐的自定义yaml过程,一键式的拉取和部署所有自定义或者模板定义的服务文章来源地址https://www.toymoban.com/news/detail-819434.html

helm查用的命令

helm repo add 仓库名 url地址 添加仓库

helm repo update 不加仓库名 就是更新所有仓库

helm repo list 仓库列表

hele repo remove 仓库名称  删除

helm show chart stable/nginx 可以查看指定仓库chart信息

helm show all stable/nginx 查看所有信息

helm install nginx-11 stable/nginx -n lucky-cloud 指定命名空间 安装chart,安装官网默认版本

helm uninstall nginx-11 删除安装好的chart

helm list 查看已经安装的chart

自定义模板

helm create nginx 创建一个自定义的chart模板

values.yaml:这里的值回传给templates里面的yaml文件

helm install nginx-11 ./nginx

helm install nginx-11 ./nginx-0.1.0/tgz

如何打包创建好的chart

helm package nginx

回滚

helm history nginx-11

helm rollback nginx-11 1

到了这里,关于Kubernetes/k8s之包管理器helm的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 一小时完成Rancher高可用搭建丨基于kubernetes(K8s)完成丨Docker helm

    一句话介绍:Rancher可用于对K8S集群进行部署及实现对业务部署进行管理等。 对于规模化较小的管理团队或初始使用Rancher管理K8S集群部署,建议使用此种方式。 对于具体一定规模且有一定K8S管理经验的团队,我们建议可以通过在Kubernetes部署Rancher,以达到Rancher高可用目的。

    2024年02月04日
    浏览(52)
  • kubernetes/k8s配置资源管理

    配置资源管理 Secret Configmap*.1.2加入新特征 1.18 Secret:保存密码,token,敏感的k8s资源 这类数据可以存放在镜像当中,但是防止secret可以更方便的控制,减少暴漏风险。 保存加密的信息 Secret的类型: docker-registry:存储docker仓库认证信息,以及docker组件的认证信息(私有的) generic:是

    2024年01月17日
    浏览(50)
  • (kubernetes)k8s常用资源管理

    目录 k8s常用资源管理 1、创建一个pod 1)创建yuml文件 2)创建容器 3)查看所有pod创建运行状态 4)查看指定pod资源 5)查看pod运行的详细信息 6)验证运行的pod 2、pod管理 1)删除pod 2)查看删除pod无法找到 3)创建pod 4)发现最先创建的pod运行在k8s-master节点上,下载镜像速度太

    2024年02月13日
    浏览(46)
  • K8S:Rancher管理 Kubernetes 集群

    Rancher 是一个开源的企业级多集群 Kubernetes 管理平台,实现了 Kubernetes 集群在混合云+本地数据中心的集中部署与管理, 以确保集群的安全性,加速企业数字化转型。超过 40000 家企业每天使用 Rancher 快速创新。 官网:https://docs.rancher.cn/ Rancher 和 k8s 都是用来作为容器的调度与

    2024年02月07日
    浏览(48)
  • yum部署kubernetes(k8s)集群、k8s常用资源管理

    目录 一、环境搭建 1、准备环境 1)计算机说明,建议系统版本7.4或者7.6 2)修改所有主机的计算机名设置host文件  2、安装master节点 1)安装etcd配置etcd 2)安装k8s-master节点 3)配置apiserver 4)配置controller和scheduler 5)启动k8s服务 3、安装k8s-master上的node 1)安装node 2)配置kube

    2024年02月13日
    浏览(60)
  • 云原生Kubernetes:K8S配置资源管理

    目录 一、理论 1.Secret 2.Secret创建 3.Secret使用 4.Configmap 5.Configmap创建 6.Configmap使用 二、实验 1.Secret创建 2.Secret使用 3.Configmap创建 4.Configmap使用 三、问题 1.变量引用生成资源报错 2.查看pod日志失败 3.创建configmap报错 4.YAML创建configmap报错 5. 生成资源报错 6.文件挂载pod报错Error 四

    2024年02月07日
    浏览(62)
  • 【云原生、k8s】管理Kubernetes应用搭建与部署

    官方提供Kubernetes部署3种方式 (一)minikube Minikube是一个工具,可以在本地快速运行一个单点的Kubernetes,尝试Kubernetes或日常开发的用户使用。不能用于生产环境。 官方文档:https://kubernetes.io/docs/setup/minikube/ (二)二进制包 从官方下载发行版的二进制包,手动部署每个组件,

    2024年01月21日
    浏览(71)
  • 【云原生 | Kubernetes 系列】K8s 实战 使用 Kustomize 对 Kubernetes 对象进行声明式管理

    Kustomize 是一个用来定制 Kubernetes 配置的工具。它提供以下功能特性来管理应用配置文件: 从其他来源生成资源 为资源设置贯穿性(Cross-Cutting)字段 组织和定制资源集合 ConfigMap 和 Secret 包含其他 Kubernetes 对象(如 Pod)所需要的配置或敏感数据。 ConfigMap 或 Secret 中数据的来

    2024年01月17日
    浏览(68)
  • 【云原生 | Kubernetes 系列】K8s 实战 管理 Secret 详解

    Secret 是一种包含少量敏感信息例如密码、令牌或密钥的对象。 这样的信息可能会被放在 Pod 规约中或者镜像中。 用户可以创建 Secret,同时系统也创建了一些 Secret。 一个 Secret 可以包含 Pod 访问数据库所需的用户凭证。 例如,由用户名和密码组成的数据库连接字符串。 你可

    2024年02月02日
    浏览(59)
  • 【云原生 | Kubernetes 系列】K8s 实战 Kubernetes 对象管理之指令式命令管理和配置文件命令式管理

    kubectl 工具能够支持三种对象管理方式: 声明式对象配置 指令式命令 指令式对象配置 前面我使用了两篇文章讲解了 使用配置文件对 Kubernetes 对象进行声明式管理 的相关知识点,本篇文章我将带领大家一起学习剩下的两个Kubernetes 对象管理的指令式命令管理和配置文件命令式

    2023年04月15日
    浏览(74)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包