k8s-kubernetes-- helm部署应用
创始人
2025-05-29 09:48:16
0

文章目录

  • 一、helm push插件
    • 1.部署
    • 2.更新、回滚应用
  • 二、helm部署storageclass
  • 三、helm部署ingress-nginx
  • 四、helm部署metrics-server
  • 五、部署kubeapps


一、helm push插件

1.25版本(本版本)的 helm 上传包时需要安装helm-push插件,插件功能没有集成进helm。

1.部署

添加本地仓库
在harbor仓库中创建charts项目
注:我们在harbor仓库的部署时可以添加 --with-chartmuseum 参数,来支持 chart 仓库,我们也可以在k8s集群中部署harbor仓库。
在这里插入图片描述

拷贝仓库证书,把证书放到系统层面,并更新证书:
[root@k8s2 helm]# cp /etc/docker/certs.d/reg.westos.org/ca.crt  /etc/pki/ca-trust/source/anchors/
[root@k8s2 helm]# update-ca-trust添加repo,把仓库加进来:
[root@k8s2 ~]# helm  repo  add local https://reg.westos.org/chartrepo/charts
"mychart" has been added to your repositories[root@k8s2 ~]# helm repo  list
NAME    URL
my-repo https://charts.bitnami.com/bitnami
local https://reg.westos.org/chartrepo/charts

本版本的 helm 上传包时需要安装helm-push插件,插件功能没有集成进helm。
注:由于在线安装需要科学上网,本次实验采用离线安装:

1.安装插件
在线安装(需要科学上网,不然选择离线安装)
[root@k8s2 helm]# yum install -y git
[root@k8s2 helm]# helm plugin install https://github.com/chartmuseum/helm-push
Downloading and installing helm-push v0.10.3 ...
https://github.com/chartmuseum/helm-push/releases/download/v0.10.3/helm-push_0.10.3_linux_amd64.tar.gz
Installed plugin: cm-push[root@k8s2 helm]# helm  plugin list
NAME    VERSION DESCRIPTION
cm-push 0.10.3  Push chart package to ChartMuseum2.离线安装
获取plugin默认目录
[root@k8s2 helm]# helm  env
创建插件目录
[root@k8s2 helm]# mkdir -p /root/.local/share/helm/plugins/helm-push/
解压插件:解压到插件目录
[root@k8s2 ~]# tar zxf helm-push_0.10.3_linux_amd64.tar.gz -C /root/.local/share/helm/plugins/helm-push[root@k8s2 helm]# helm cm-push -h
上传chart包到repo仓库
[root@k8s2 helm]# helm  cm-push mychart-0.1.0.tgz local -u admin -p westos
Pushing mychart-0.1.0.tgz to local...
Done.

在这里插入图片描述

更新repo库,不然刚上传的chart包搜索不到
[root@k8s2 helm]# helm repo update local
Hang tight while we grab the latest from your chart repositories...
...Successfully got an update from the "local" chart repository
Update Complete. ⎈Happy Helming!⎈查找:
[root@k8s2 helm]# helm  search repo mychart
NAME            CHART VERSION   APP VERSION     DESCRIPTION
local/mychart   0.1.0           v1              A Helm chart for Kubernetes
安装应用
[root@k8s2 helm]# helm install myapp local/mychart
NAME: myapp
LAST DEPLOYED: Thu Mar 16 13:46:58 2023
NAMESPACE: default
STATUS: deployed
REVISION: 1
NOTES:
1. Get the application URL by running these commands:http://myapp.westos.org/[root@k8s2 helm]# helm  list
NAME    NAMESPACE       REVISION        UPDATED                                 STATUS          CHART           APP VERSION
myapp   default         1               2023-03-16 13:46:58.650310376 +0800 CST deployed        mychart-0.1.0   v1
测试
[root@k8s1 harbor]# curl  myapp.westos.org
Hello MyApp | Version: v1 | Pod Name

2.更新、回滚应用

[root@k8s2 mychart]# vim Chart.yaml
在这里插入图片描述
[root@k8s2 mychart]# vim values.yaml
在这里插入图片描述

打包
[root@k8s2 helm]# helm  package  mychart
Successfully packaged chart and saved it to: /root/helm/mychart-0.2.0.tgz上传chart包
[root@k8s2 helm]# helm  cm-push mychart-0.2.0.tgz local -u admin -p westos
Pushing mychart-0.2.0.tgz to local...
Done.更新repo
[root@k8s2 helm]# helm repo update local
Hang tight while we grab the latest from your chart repositories...
...Successfully got an update from the "local" chart repository
Update Complete. ⎈Happy Helming!⎈[root@k8s2 helm]# helm  search repo mychart -l                 /列出所有
NAME            CHART VERSION   APP VERSION     DESCRIPTION
local/mychart   0.2.0           v2              A Helm chart for Kubernetes
local/mychart   0.1.0           v1              A Helm chart for Kubernetes
更新应用
[root@k8s2 helm]# helm  upgrade myapp local/mychart
Release "myapp" has been upgraded. Happy Helming!
NAME: myapp
LAST DEPLOYED: Thu Mar 16 13:50:27 2023
NAMESPACE: default
STATUS: deployed
REVISION: 2
NOTES:
1. Get the application URL by running these commands:http://myapp.westos.org/

注意:也可以指定版本安装,方法如下
[root@server2 mychart]# helm install demo local/mychart --version 0.1.0
kubec get podNAME: demo

测试
[root@k8s1 data]# curl  myapp.westos.org
Hello MyApp | Version: v2 | Pod Name[root@k8s2 helm]# helm history myapp
REVISION        UPDATED                         STATUS          CHART           APP VERSION     DESCRIPTION
1               Thu Mar 16 13:46:58 2023        superseded      mychart-0.1.0   v1              Install complete
2               Thu Mar 16 13:50:27 2023        deployed        mychart-0.2.0   v2              Upgrade complete

回滚应用

回滚应用
[root@k8s2 helm]# helm rollback myapp                       ##或者# helm rollback myapp 1
Rollback was a success! Happy Helming![root@k8s2 helm]# helm history myapp
REVISION        UPDATED                         STATUS          CHART           APP VERSION     DESCRIPTION
1               Thu Mar 16 13:46:58 2023        superseded      mychart-0.1.0   v1              Install complete
2               Thu Mar 16 13:50:27 2023        superseded      mychart-0.2.0   v2             upgrade complete
3               Thu Mar 16 13:52:02 2023        deployed        mychart-0.1.0   v1              Rollback to 1测试
[root@k8s1 data]# curl  myapp.westos.org
Hello MyApp | Version: v1 | Pod Name回收
[root@k8s2 helm]# helm  uninstall myapp
release "myapp" uninstalled

helm绑定了所有的数据。直接卸载即可。
同理我们可以使用helm部署其他的应用。

二、helm部署storageclass

我们之前在学习存储的时候做过nfs的部署,我们现在删除之前的所有东西,用helm重新部署一遍

在nfs目录中删除原有的部署
[root@k8s2 nfs]# ls
class.yaml  deployment.yaml  pod.yaml  pvc.yaml  rbac.yaml
[root@k8s2 nfs]# kubectl delete  -f .

添加repo
[root@k8s2 helm]# helm repo add nfs-subdir-external-provisioner https://kubernetes-sigs.github.io/nfs-subdir-external-provisioner/
在这里插入图片描述
在这里插入图片描述

[root@k8s2 ~]# helm search  repo nfs-subdir-external-provisioner
NAME                                                    CHART VERSION   APP VERSION     DESCRIPTION
nfs-subdir-external-provisioner/nfs-subdir-exte...      4.0.18          4.0.2           nfs-subdir-external-provisioner is an automatic...[root@k8s1 nfsdata]# showmount -e			##查看k8s1上已经做好的nfs。
Export list for k8s1:
/nfsdata *		
storageClass:		/存储类create: truedefaultClass: true	 	/设为默认存储类
rbac:			/授权[root@k8s2 helm]# helm  pull nfs-subdir-external-provisioner/nfs-subdir-external-provisioner
下载至此目录,解压后操作
[root@k8s2 helm]# tar zxf nfs-subdir-external-provisioner-4.0.18.tgz
[root@k8s2 helm]# cd nfs-subdir-external-provisioner/可自行修改所需功能后进行安装;所需镜像必须符合我们的仓库的版本
[root@k8s2 nfs-subdir-external-provisioner]# vim values.yaml

在这里插入图片描述

创建namespace
[root@k8s2 nfs-subdir-external-provisioner]# kubectl create namespace nfs-provisioner

部署应用
[root@k8s2 nfs-subdir-external-provisioner]# helm install nfs-provisioner . -n nfs-provisioner
在这里插入图片描述
测试:
[root@k8s2 nfs]# ls
class.yaml deployment.yaml pod.yaml pvc.yaml rbac.yaml

[root@k8s2 nfs]# kubectl apply -f pvc.yaml

[root@k8s2 nfs]# kubectl get pvc
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
test-claim Bound pvc-562f2568-ea3e-4ad6-a183-e013b3d36c34 1Gi RWX nfs-client 2s
k8s1进行查看
在这里插入图片描述
[root@k8s2 nfs]# kubectl delete -f pvc.yaml
k8s1进行查看
在这里插入图片描述

三、helm部署ingress-nginx

回收原有部署
[root@k8s2 ingress]# kubectl delete -f deploy.yaml
在这里插入图片描述

[root@k8s2 helm]# helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
[root@k8s2 ~]# helm search repo ingress-nginx
NAME                            CHART VERSION   APP VERSION     DESCRIPTION
ingress-nginx/ingress-nginx     4.5.2           1.6.4           Ingress controller for Kubernetes using NGINX a...[root@k8s2 helm]# helm  pull ingress-nginx/ingress-nginx
[root@k8s2 helm]# tar zxf ingress-nginx-4.5.2.tgz
[root@k8s2 helm]# cd ingress-nginx/

[root@k8s2 ingress-nginx]# vim values.yaml
在这里插入图片描述在这里插入图片描述在这里插入图片描述

创建namespace
[root@k8s2 ingress-nginx]# kubectl create namespace ingress-nginx部署应用
[root@k8s2 ingress-nginx]# helm  install ingress-nginx . -n ingress-nginx

在这里插入图片描述

测试
[root@k8s2 ~]# helm install myapp local/mychart[root@k8s1 nfsdata]# curl  myapp.westos.org
Hello MyApp | Version: v2 | Pod Name[root@k8s2 ~]# helm uninstall myapp

四、helm部署metrics-server

回收原有部署
[root@k8s2 metrics]# kubectl delete -f components.yaml
在这里插入图片描述

[root@k8s2 helm]# helm repo add metrics-server https://kubernetes-sigs.github.io/metrics-server/[root@k8s2 dashboard]# helm  search repo metrics-server
NAME                            CHART VERSION   APP VERSION     DESCRIPTION
metrics-server/metrics-server   3.8.4           0.6.2           Metrics Server is a scalable, efficient source ...[root@k8s2 helm]# helm  pull metrics-server/metrics-server
[root@k8s2 helm]# tar zxf metrics-server-3.8.4.tgz
[root@k8s2 helm]# cd metrics-server

[root@k8s2 metrics-server]# vim values.yaml
在这里插入图片描述
忽略secure-tls
在这里插入图片描述

创建namespace
[root@k8s2 metrics-server]# kubectl create namespace metrics-server部署应用
[root@k8s2 metrics-server]# helm  install metrics-server . -n metrics-server

在这里插入图片描述
测试:
在这里插入图片描述

五、部署kubeapps

kubeapps应用可以为Helm提供web UI界面管理,尤其是是用于部署的应用非常多的时候。

下载并上传所需镜像至harbor下创建的bitnami仓库:

所需nginx镜像自己拉取即可[root@k8s1 ~]docker pull bitnami/kubeapps-dashboard:2.6.4-debian-11-r0
[root@k8s1 ~]docker tag bitnami/kubeapps-dashboard:2.6.4-debian-11-r0 reg.westos.org/bitnami/kubeapps-dashboard:2.6.4-debian-11-r0
[root@k8s1 ~]docker push reg.westos.org/bitnami/kubeapps-dashboard:2.6.4-debian-11-r0维护repo list
[root@k8s1 ~]docker pull bitnami/kubeapps-apprepository-controller:2.6.4-scratch-r0
[root@k8s1 ~]docker tag bitnami/kubeapps-apprepository-controller:2.6.4-scratch-r0 reg.westos.org/bitnami/kubeapps-apprepository-controller:2.6.4-scratch-r0
[root@k8s1 ~]docker push reg.westos.org/bitnami/kubeapps-apprepository-controller:2.6.4-scratch-r0自动同步仓库(update功能)
[root@k8s1 ~]docker pull bitnami/kubeapps-asset-syncer:2.6.4-scratch-r0
[root@k8s1 ~]docker tag bitnami/kubeapps-asset-syncer:2.6.4-scratch-r0 reg.westos.org/bitnami/kubeapps-asset-syncer:2.6.4-scratch-r0
[root@k8s1 ~]docker push reg.westos.org/bitnami/kubeapps-asset-syncer:2.6.4-scratch-r0[root@k8s1 ~]docker pull bitnami/kubeapps-apis:2.6.4-debian-11-r0
[root@k8s1 ~]docker tag bitnami/kubeapps-apis:2.6.4-debian-11-r0 reg.westos.org/bitnami/kubeapps-apis:2.6.4-debian-11-r0
[root@k8s1 ~]docker push reg.westos.org/bitnami/kubeapps-apis:2.6.4-debian-11-r0数据库( vim charts/postgresql/values.yaml需要的镜像)
[root@k8s1 ~]docker pull bitnami/postgresql:15.2.0-debian-11-r5
[root@k8s1 ~]docker tag bitnami/postgresql:15.2.0-debian-11-r5 reg.westos.org/bitnami/postgresql:15.2.0-debian-11-r5
[root@k8s1 ~]docker push reg.westos.org/bitnami/postgresql:15.2.0-debian-11-r5

在这里插入图片描述

[root@server2 nfs-client]# helm repo add bitnami https://charts.bitnami.com/bitnami      ##1.25版本实验时为执行此命令[root@server2 nfs-client]# helm repo list
[root@server2 kubeapps]# helm search repo kubeapps
NAME                    CHART VERSION   APP VERSION     DESCRIPTION
my-repo/kubeapps        12.2.7          2.6.4           Kubeapps is a web-based UI for launching and ma...
[root@server2 nfs-client]# helm pull bitnami/kubeapps                ##默认拉取最新版本

[root@k8s2 helm]# tar zxf kubeapps-12.2.7.tgz
[root@k8s2 helm]# cd kubeapps/
[root@k8s2 kubeapps]# vim values.yaml
全局的镜像仓库名称
在这里插入图片描述
[root@k8s2 kubeapps]# vim charts/postgresql/values.yaml
在这里插入图片描述
创建一个命名空间
[root@k8s2 kubeapps]# kubectl create ns kubeapps
部署应用
[root@k8s2 kubeapps]# helm install kubeapps . -n kubeapps
在这里插入图片描述
修改svc暴露方式为LoadBalancer
[root@k8s2 kubeapps]# kubectl -n kubeapps edit svc kubeapps
在这里插入图片描述
访问:http://192.168.56.101
在这里插入图片描述
授权并获取token
创建sa(serviceaccount)
[root@k8s2 kubeapps]# kubectl create serviceaccount kubeapps-operator -n kubeapps

通过clusterrolebinding给创建的sa绑定cluster-admin权限
[root@k8s2 kubeapps]# kubectl create clusterrolebinding kubeapps-operator --clusterrole=cluster-admin --serviceaccount=kubeapps:kubeapps-operator

给创建的sa的kubeapps-operator用户身份申请token
[root@k8s2 kubeapps]# kubectl -n kubeapps create token kubeapps-operator
在这里插入图片描述
使用token登录web页面
在这里插入图片描述


相关内容

热门资讯

AWSECS:访问外部网络时出... 如果您在AWS ECS中部署了应用程序,并且该应用程序需要访问外部网络,但是无法正常访问,可能是因为...
AWSElasticBeans... 在Dockerfile中手动配置nginx反向代理。例如,在Dockerfile中添加以下代码:FR...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...
北信源内网安全管理卸载 北信源内网安全管理是一款网络安全管理软件,主要用于保护内网安全。在日常使用过程中,卸载该软件是一种常...
AWR报告解读 WORKLOAD REPOSITORY PDB report (PDB snapshots) AW...
AWS管理控制台菜单和权限 要在AWS管理控制台中创建菜单和权限,您可以使用AWS Identity and Access Ma...
​ToDesk 远程工具安装及... 目录 前言 ToDesk 优势 ToDesk 下载安装 ToDesk 功能展示 文件传输 设备链接 ...
群晖外网访问终极解决方法:IP... 写在前面的话 受够了群晖的quickconnet的小水管了,急需一个新的解决方法&#x...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
Azure构建流程(Power... 这可能是由于配置错误导致的问题。请检查构建流程任务中的“发布构建制品”步骤,确保正确配置了“Arti...