前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【kubernetes】新版helm3的三大概念+快速指南+自定义charts模板

【kubernetes】新版helm3的三大概念+快速指南+自定义charts模板

原创
作者头像
秋意零
发布于 2022-05-12 11:45:52
发布于 2022-05-12 11:45:52
1.7K00
代码可运行
举报
文章被收录于专栏:YeTechLogYeTechLog
运行总次数:0
代码可运行

Helm的三大概念

  • chart:代表helm包,包含在 Kubernetes 集群内部运行应用程序,工具或服务所需的所有资源定义。
  • Repository(仓库):用来存放和共享 charts 的地方。
  • Release :运行在 Kubernetes 集群中的 chart 的实例,一个 chart 通常可以在同一个集群中安装多次,每一次安装都会创建一个新的 release。简单来说!!其实我们可以对比yum来理解

chart看作linux中rpm包,repository看作repo仓库,release就是我们的yum install安装启动后的软件

还不理解吗??

还可以,这样

chart看作docker镜像,release看作docker镜像运行的容器,而Repository看作我们的docker Hub镜像仓库

环境准备

  • 一个 Kubernetes 集群

支持的版本

Helm的版本用 x.y.z 描述,x是主版本,y是次版本,z是补丁版本,遵循 语义化版本 术语

在这里插入图片描述
在这里插入图片描述

安装Helm

helm官方下载地址

两种方式安装Helm,按需选择。这里使用二进制安装。

方式1:使用二进制版本安装

代码语言:shell
AI代码解释
复制
tar -zxf helm-v3.7.0-linux-amd64.tar.gz
cp linux-amd64/helm /usr/local/bin/helm  或者 mv linux-amd64/helm /usr/local/bin/helm
helm version

方式二:使用脚本安装

这是官方提供的脚本,自动拉取最新的Helm版本并安装在本地。

代码语言:shell
AI代码解释
复制
$ curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
$ chmod 700 get_helm.sh
$ ./get_helm.sh

Helm的基本操作(快速指南)

下列所有操作以nginx为例

Helm 自带一个强大的搜索命令,可以从两种来源中进行搜索:

  • helm search hub 从 Artifact Hub 中查找并列出 helm charts。 Artifact Hub中存放了大量不同的仓库。
  • helm search repo 从你添加(使用 helm repo add)到本地 helm 客户端中的仓库中进行查找。该命令基于本地数据进行搜索,无需连接互联网。

从 Artifact Hub 中搜索所有的 nginx charts。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ helm search hub nginx
URL                                                     CHART VERSION   APP VERSION                     DESCRIPTION                              
https://artifacthub.io/packages/helm/wiremind/n...      2.1.1                                           An NGINX HTTP server                     
https://artifacthub.io/packages/helm/zrepo-test...      5.1.5           1.16.1                          Chart for the nginx server               
https://artifacthub.io/packages/helm/mirantis/n...      0.1.0           1.16.0                          A NGINX Docker Community based Helm chart for K...
...

使用 helm repo add 命令,添加gitlab仓库。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ helm repo add bitnami https://charts.bitnami.com/bitnami
"bitnami" has been added to your repositories$ helm search repo nginx
NAME                                    CHART VERSION   APP VERSION     DESCRIPTION
bitnami/nginx                           10.2.1          1.21.6          NGINX Open Source is a web server that can be a...
bitnami/nginx-ingress-controller        9.1.27          1.2.0           NGINX Ingress Controller is an Ingress controll...
bitnami/nginx-intel                     1.0.5           0.4.7           NGINX Open Source for Intel is a lightweight se...
bitnami/kong                            5.0.2           2.7.0           Kong is a scalable, open source API layer (aka ...
  1. 使用 helm search repo 命令,你可以从你所添加的仓库中查找chart的名字。
  2. 一旦你找到你想安装的 helm 包,便可以通过使用helm install命令来安装它。

Helm 安装 charts 到 Kubernetes 集群中,每次安装都会创建一个新的 release。你可以在 Helm 的 chart repositories 中寻找新的 chart。

代码语言:shell
AI代码解释
复制
$ helm install my-nginx bitnami/nginx --version 10.2.1 
NAME: my-nginx
LAST DEPLOYED: Fri May  6 11:06:07 2022
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
CHART NAME: nginx
CHART VERSION: 10.2.1
APP VERSION: 1.21.6
...

使用 helm status来追踪 release 的状态、信息。

代码语言:shell
AI代码解释
复制
$ helm status my-nginx
NAME: my-nginx
LAST DEPLOYED: Fri May  6 11:06:07 2022
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
CHART NAME: nginx
CHART VERSION: 10.2.1
APP VERSION: 1.21.6
...

查看helm安装,releases的列表[root@master helm]# helm list

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制

NAME            NAMESPACE       REVISION        UPDATED                                 STATUS          CHART           APP VERSION
my-nginx        default         1               2022-05-06 11:06:07.215433713 +0800 CST deployed        nginx-10.2.1    1.21.6

浏览器访问,验证nginx服务

查看nginx的svc

代码语言:shell
AI代码解释
复制
[root@master ~]# kubectl get svc
NAME         TYPE           CLUSTER-IP       EXTERNAL-IP   PORT(S)        AGE
kubernetes   ClusterIP      10.96.0.1        <none>        443/TCP        115d
my-nginx     LoadBalancer   10.102.231.181   <pending>     80:30769/TCP   25m
在这里插入图片描述
在这里插入图片描述

自定义Charts模板

上述nginx安装只是使用仓库chart的默认配置。不利于个性化需求和生成环境的使用。我们也可以修改chart默认配置,也可以自己创建Charts模板。

1. 创建一个chart模板

代码语言:shell
AI代码解释
复制
# helm create testnginx
Creating testnginx

2. Helm chart的目录结构如下:

代码语言:shell
AI代码解释
复制
# tree testnginx/
testnginx/
├── charts
├── Chart.yaml
├── templates
│   ├── deployment.yaml
│   ├── _helpers.tpl
│   ├── hpa.yaml
│   ├── ingress.yaml
│   ├── NOTES.txt
│   ├── serviceaccount.yaml
│   ├── service.yaml
│   └── tests
│       └── test-connection.yaml
└── values.yaml
  • templates/目录是我们资源清单的yaml文件。
  • values.yaml文件内容,定义一些template目录下yaml文件所引用的字段
  • Chart.yaml文件是该chart的描述信息。charts/目录 可以 包含其他的chart(称之为 子chart)。

3. templates/ 目录下,会注意到一些文件:

  • NOTES.txt: chart的"帮助文本"。这会在你的用户执行helm install时展示给他们。
  • _helpers.tpl: 放置可以通过chart复用的模板辅助对象

我们删除templates/目录下的文件:

代码语言:shell
AI代码解释
复制
# rm -rf testnginx/templates/*

修改values.yaml文件

代码语言:shell
AI代码解释
复制
# cat values.yaml
name: app-nginx
image:
  repository: 192.168.200.11/library/nginx

创建deploy.yaml文件,并引用values.yaml文件的字段,之后只要我们修改values.yaml文件,就可以达到改变templates/deploy.yaml文件的效果。

代码语言:shell
AI代码解释
复制
# cat templates/deploy.yaml
kind: Deployment
apiVersion: apps/v1
metadata:
  name: {{ .Values.name  }}
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
        - name: web-nginx
          image: {{ .Values.image.repository  }}
          ports:
            - name: http
              containerPort: 80
---
kind: Service
apiVersion: v1
metadata:
  name: svc-nginx
spec:
  ports:
    - name: http
      port: 80
      targetPort: 80
  selector:
    app: nginx
  type: NodePort

使用helm install创建release

代码语言:shell
AI代码解释
复制
# helm install test-nginx testnginx/
NAME: test-nginx
LAST DEPLOYED: Fri May  6 14:52:43 2022
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None

检查服务

代码语言:shell
AI代码解释
复制
# helm list
NAME            NAMESPACE       REVISION        UPDATED                                 STATUS          CHART           APP VERSION
test-nginx      default         1               2022-05-06 14:52:43.081379354 +0800 CST deployed        testnginx-0.1.0 1.16.0
# kubectl get deploy,pod
NAME                        READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/app-nginx   1/1     1            1           5m14s

NAME                             READY   STATUS    RESTARTS   AGE
pod/app-nginx-57fbfbd5c5-g2sjq   1/1     Running   0          5m14s

NAME                 TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
service/kubernetes   ClusterIP   10.96.0.1       <none>        443/TCP        115d
service/svc-nginx    NodePort    10.106.42.241   <none>        80:32755/TCP   5m14s
在这里插入图片描述
在这里插入图片描述

4. helm upgrade升级 release

当我们想给我们的服务升级版本时,就需要使用到helm upgrade 命令非常简便快捷

  • 修改values.yaml文件切换版本# cat testnginx/values.yaml name: app-nginx image: #repository: 192.168.200.11/library/nginx repository: 192.168.200.11/library/nginx-2
代码语言:shell
AI代码解释
复制
# helm upgrade test-nginx testnginx/
Release "test-nginx" has been upgraded. Happy Helming!
NAME: test-nginx
LAST DEPLOYED: Fri May  6 15:26:08 2022
NAMESPACE: default
STATUS: deployed
REVISION: 2
TEST SUITE: None
在这里插入图片描述
在这里插入图片描述

5. helm rollback回滚

假如在一次发布过程中,发生了不符合预期的事情,就需要使用helm rollback 命令回滚到之前的发布版本。

  • 查看test-nginx历史版本:[root@master helm]# helm history test-nginx
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制

REVISION        UPDATED                         STATUS          CHART           APP VERSION     DESCRIPTION
1               Fri May  6 15:28:12 2022        superseded      testnginx-0.1.0 1.16.0          Install complete
2               Fri May  6 15:28:56 2022        superseded      testnginx-0.1.0 1.16.0          Upgrade complete# helm rollback test-nginx 1
Rollback was a success! Happy Helming!
在这里插入图片描述
在这里插入图片描述
卸载一个版本新版helm3卸载后不会保留历史版本,如果您在执行 helm uninstall 的时候提供 --keep-history 选项, Helm将会保存版本历史。# helm uninstall test-nginx release "test-nginx" uninstalled
  • 回滚到版本1

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
在GitLab中集成Azure Kubernetes
Self-Hosted 的 GitLab 中可以集成 Kubernetes,但是官方只提供了 Amazon AWS 和 Google Cloud 的一键部署按钮,没有提供 Microsoft Azure 的一键集成。
凝神长老
2021/03/13
7600
在GitLab中集成Azure Kubernetes
在GitLab中集成Azure Kubernetes
Self-Hosted 的 GitLab 中可以集成 Kubernetes,但是官方只提供了 Amazon AWS 和 Google Cloud 的一键部署按钮,没有提供 Microsoft Azure 的一键集成。
凝神长老
2021/03/26
8640
在GitLab中集成Azure Kubernetes
Gitlab添加K8S集群
本文介绍如何在Gitlab项目中添加K8S集群,以便使用K8S集群部署gitlab-runner帮我们运行gitlab的CI/CD。
jwangkun
2021/12/23
1.5K0
为你的 GitLab 项目使用 k3s 集群
k3s 是一个轻量级的 Kubernetes 发行版(小于 40 MB),它非常容易安装,仅需要 512 MB 的 RAM。对 IoT 设备、边缘计算以及运行 CI 任务来说均是一个完美的选择。这篇文章中我将创建一个 k3s 集群然后展示怎样将它集成到一个 GitLab 项目中。
LinuxSuRen
2020/05/19
1K0
为你的 GitLab 项目使用 k3s 集群
11 . KubernetesRBAC认证及ServiceAccount、Dashboard
允许读取一个名为my-config的ConfigMap(必须绑定到一个RoleBinding来限制到一个Namespace下的ConfigMap)
iginkgo18
2020/09/27
1.3K0
11 . KubernetesRBAC认证及ServiceAccount、Dashboard
二进制安装k8s集群(15)-安装kube-dashboard
在上一篇文章里我们主要介绍安装k8s集群内的基础服务coredns,这里我们继续介绍安装k8s集群内基础服务kube-dashboard,这个基础服务也创建在kube-system namesapce里,是以deployment的方式运行。image镜像从我们的private repo pull来(以前文章里介绍过harbor private repo的创建,以及镜像的push和pull)。当然原始image来源于官方的k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.1,不过要下载它需要科学上网或者搭个梯子。
TA码字
2020/04/01
6260
二进制安装k8s集群(15)-安装kube-dashboard
「走进k8s」Kubernetes1.15.1的RBAC(28)
PS:RBAC只是k8s中的一种安全的认证方式,后面在一起说说k8s的关于安全的一些设计。
IT架构圈
2019/09/02
7760
9-Kubernetes入门基础之集群安全介绍
描述: Kubernetes 作为一个分布式的集群管理工具,保证集群的安全性是非常至关重要的。同时由于API Server是集群内部各个组件通信的中介,也是外部控制的入口,所以Kubernetes的安全机制基本是就是围绕保护API Server 来进行设计的;
全栈工程师修炼指南
2022/09/29
1.3K0
9-Kubernetes入门基础之集群安全介绍
Kubernetes Dashboard 及监控组件 Heapster 部署
3、修改 yaml 文件中的 Dashboard Service,暴露服务使外部能够访问
轻量级云原生架构实验室
2018/08/02
8930
Kubernetes Dashboard 及监控组件 Heapster 部署
Kubernetes(k8s)权限管理RBAC详解
在K8S中支持授权有AlwaysDeny、AlwaysAllow、ABAC、Webhook、RBAC、Node共6种模式,从1.6版本起,K8S默认启用RBAC访问控制策略,目前RBAC已作为稳定的功能,管理员可以通过 Kubernetes API 动态配置策略来启用RBAC,需要在 kube-apiserver 中添加参数--authorization-mode=RBAC。
王先森sec
2023/10/17
1.9K0
Kubernetes(k8s)权限管理RBAC详解
​TKE容器服务搭建kubernetes-dashboard教程
目前TKE控制台暂时不支持Job, Pod, CronJob等对象的展示。有通过web界面查看这些类型对象的需求的话,可以自行安装k8s dashboard UI来实现。
马凌鑫
2018/10/24
1.3K0
​TKE容器服务搭建kubernetes-dashboard教程
Kubernetes API服务器的安全防护
  认证插件会连同用户名,和用户id返回组,组可以一次性给用户服务多个权限,不用单次赋予,
星哥玩云
2022/07/28
1.3K0
Kubernetes API服务器的安全防护
k8s1.13.0二进制部署-Dashboard和coredns(五)
下载yaml文件 https://github.com/kubernetes/kubernetes
yuezhimi
2020/09/30
3940
k8s1.13.0二进制部署-Dashboard和coredns(五)
Gitlab CI 集成 Kubernetes
首先将本节所用到的代码库从 Github 上获得:cnych/gitlab-ci-k8s-demo,可以在 Gitlab 上新建一个项目导入该仓库,当然也可以新建一个空白的仓库,然后将 Github 上面的项目 Clone 到本地后,更改远程仓库地址即可:
jwangkun
2021/12/23
1.6K0
Gitlab CI 集成 Kubernetes
kubernetes-CI/CD
原因就是运行git remote add origin http://45.77.**.**/root/webmaven.git是默认是80端口,由于你修改了80端口,所以就会报错,如果修改为88端口,则应该运行:git remote add origin http://45.77.**.**:88/root/webmaven.git来指明端口。貌似修改了22端口会影响https。
茶半香初
2021/11/26
5030
kubernetes-CI/CD
K8s dashboard
必须https:// IP:端口 同时必须是在firefox浏览器下才支持的
用户1499526
2019/07/15
1.6K0
3. 死磕 k8s系列之安装k8s仪表盘(Dashboard)
从读音还以为是国人发明的呢,其实不是。真正的原因是kubernetes太长了,老外也容易拼错,所以就省略了中间8个字母以 8 代替,就变成了k8s。
彤哥
2020/02/10
5.6K0
容器编排引擎Kubernetes 04——部署Dashboard
因为前边K8S安装的是V1.23版本,所以这里需要选择能与V1.23的K8S兼容的dashboard版本。从页面上可以找到能兼容的dashboard最新的版本为V2.5.1。
用户8100582
2024/01/22
9320
Kubernetes-dashboard的身份认证
我们成功配置安装了kubernetes-dashboard插件,但是这里似乎来了另外一个问题:我们怎样进入到dashboard? 如上图,kubernetes-dashboard提供了两种验证方式:k
我的小碗汤
2018/11/07
3.8K0
k8s二进制集群安装-补充安装dashboard
安装Dashboard # 安装 kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.5.0/aio/deploy/recommended.yaml ​ # 创建管理用户 cat > admin.yaml << EOF apiVersion: v1 kind: ServiceAccount metadata: name: admin-user namespace: kube-system --- api
堕落飞鸟
2022/06/07
2400
相关推荐
在GitLab中集成Azure Kubernetes
更多 >
LV.2
暂无GitLab CI/CD布道师
目录
  • Helm的三大概念
  • 还不理解吗??
  • 环境准备
  • 支持的版本
  • 安装Helm
  • Helm的基本操作(快速指南)
  • 自定义Charts模板
    • 1. 创建一个chart模板
    • 2. Helm chart的目录结构如下:
    • 3. templates/ 目录下,会注意到一些文件:
    • 4. helm upgrade升级 release
    • 5. helm rollback回滚
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档