kubernetes helm

目录

一、helm 

二、部署helm

三、封装chart包

四、上传chart到OCI仓库

五、部署wordpress博客系统

六、helm部署storageclass

七、helm部署ingress-nginx

八、helm部署metrics-server

九、kubeapps


一、helm 

  • Helm是Kubernetes 应用的包管理工具,主要用来管理 Charts,类似Linux系统的yum
  • Helm Chart 是用来封装 Kubernetes 原生应用程序的一系列 YAML 文件。可以在你部署应用的时候自定义应用程序的一些 Metadata,以便于应用程序的分发
  • 对于应用发布者而言,可以通过 Helm 打包应用、管理应用依赖关系、管理应用版本并发布应用到软件仓库
  • 对于使用者而言,使用 Helm 后不用需要编写复杂的应用部署文件,可以以简单的方式在 Kubernetes 上查找、安装、升级、回滚、卸载应用程序

 Helm V3 与 V2 最大的区别在于去掉了tiller

二、部署helm

官网:https://helm.sh/zh/docs/intro/quickstart/

https://github.com/helm/helm/releases

安装:

tar zxf helm-v3.11.0-linux-amd64.tar.gz
cd linux-amd64/
mv helm  /usr/local/bin/

 配置helm命令补齐

echo "source <(helm completion bash)" >> ~/.bashrc
source ~/.bashrc
helm version

查询官方应用中心

helm search hub nginx

 添加第三方repo源

helm repo add my-repo https://charts.bitnami.com/bitnami
helm  repo  list
helm search repo nginx

拉取应用
helm  pull my-repo/nginx
tar zxf nginx-15.4.0.tgz
cd nginx/

按需修改
vim values.yaml

 

 上传镜像

docker pull bitnami/nginx:1.25.3-debian-11-r0
docker tag docker.io/bitnami/nginx:1.25.3-debian-11-r0 reg.westos.org/bitnami/nginx:1.25.3-debian-11-r0
docker push reg.westos.org/bitnami/nginx:1.25.3-debian-11-r0

 部署应用

helm  install myapp .

测试:

 

 再次修改配置

vim values.yaml

更新应用
helm upgrade myapp .

 查看应用

helm list

查看应用历史
helm  history myapp

回滚应用

helm  rollback myapp 1
回收
helm uninstall myapp

三、封装chart包

helm  create mychart
vim Chart.yaml
vim values.yaml

 

检测语法 打包  部署应用  回收

helm lint mychart/
helm package mychart/
helm install  myapp mychart-0.1.0.tgz
helm  list

 

测试:更新:

 

测试:

回收:

kubectl get all

四、上传chart到OCI仓库

创建harbor仓库:

未登录认证时 :

需要拷贝证书以及登录

cp /etc/docker/certs.d/reg.westos.org/ca.crt /etc/pki/tls/certs/
helm  registry login reg.westos.org -u admin -p 123456

helm env

 上传chart

helm  push mychart-0.2.0.tgz oci://reg.westos.org/charts

 下载chart,默认下载最新版本

helm pull oci://reg.westos.org/charts/mychart --version 0.2.0

安装chart

helm install myapp oci://reg.westos.org/charts/mychart  --version 0.1.0

测试:

升级
helm upgrade myapp oci://reg.westos.org/charts/mychart  --version 0.2.0

也可以使用 

helm  rollback myapp 1 回滚版本

 测试:

五、部署wordpress博客系统

上传镜像:

下载chart包部署 mysql数据库集群     使用yml文件安装应用 

vim mysql-values.yaml

global:
  imageRegistry: reg.westos.org
architecture: replication
auth:
  rootPassword: westos
  database: wordpress
  username: wordpress
  password: wordpress
  replicationUser: replicator
  replicationPassword: westos

helm install --wait mydbcluster -f mysql-values.yaml mysql-9.14.2.tgz

 查看部署信息

helm  get manifest mydbcluster |kubectl get -f -

连接数据库
MYSQL_ROOT_PASSWORD=$(kubectl get secret --namespace default mydbcluster-mysql -o jsonpath="{.data.mysql-root-password}" | base64 -d)

kubectl run mydbcluster-mysql-client --rm --tty -i --restart='Never' --image  reg.westos.org/bitnami/mysql:8.0.35-debian-11-r0 --namespace default --env MYSQL_ROOT_PASSWORD=$MYSQL_ROOT_PASSWORD --command -- bash

mysql -h mydbcluster-mysql-primary.default.svc.cluster.local -uroot -p"$MYSQL_ROOT_PASSWORD"

mysql -h mydbcluster-mysql-secondary.default.svc.cluster.local -uwordpress -pwordpress

 部署wordpress

vim wordpress-values.yaml

global:
  imageRegistry: reg.westos.org
wordpressUsername: james
wordpressPassword: james
mariadb:
  enabled: false
externalDatabase:
  host: mydbcluster-mysql-primary
  user: wordpress
  password: wordpress
  database: wordpress

helm  install myblog -f wordpress-values.yaml wordpress-18.1.6.tgz

 等待myblog初始化完毕

kubectl logs myblog-wordpress-c6d4c4647-qdts6  -f

 获取myblog 外部IP

helm get manifest  myblog |kubectl get -f -

使用浏览器访问wordpress  登录 192.168.67.122/admin

升级mydbcluster

vim mysql-values-update.yaml
global:
  imageRegistry: reg.westos.org
architecture: replication
auth:
  rootPassword: westos
  database: wordpress
  username: wordpress
  password: wordpress
  replicationUser: replicator
  replicationPassword: westos
secondary:
  replicaCount: 2

helm upgrade --atomic --timeout 10m mydbcluster -f mysql-values-update.yaml mysql-9.14.2.tgz

查看历史修订   回滚版本

helm  history  mydbcluster
helm get manifest mydbcluster --revision 1
helm  rollback mydbcluster 1
helm  history  mydbcluster

回收:

六、helm部署storageclass

删除原有的部署
kubectl delete  -f  nfs-client.yaml

添加repo
helm repo add nfs-subdir-external-provisioner https://kubernetes-sigs.github.io/nfs-subdir-external-provisioner/
helm search  repo nfs-subdir-external-provisioner

修改配置文件

将修改好的文件打包 上传chart到oci

创建namespace

kubectl create namespace nfs-provisioner

 使用oci部署应用

helm -n nfs-provisioner install --wait oci://reg.westos.org/charts/nfs-subdir-external-provisioner
kubectl -n nfs-provisioner get pod

测试:

七、helm部署ingress-nginx

回收原有部署
kubectl delete  -f deploy.yaml
上传镜像文件

添加repo下载chart包

helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
helm search repo ingress-nginx
helm  pull ingress-nginx/ingress-nginx

修改配置文件

vim values.yaml

将修改好的文件打包 上传chart到oci

tar zxf ingress-nginx-4.8.3.tgz
helm package ingress-nginx
helm push ingress-nginx-4.8.3.tgz oci://reg.westos.org/charts

 创建namespace   部署应用

kubectl create namespace ingress-nginx
helm -n ingress-nginx install ingress-nginx oci://reg.westos.org/charts/ingress-nginx

 测试:

helm -n ingress-nginx get manifest ingress-nginx |kubectl get -f -
helm install myapp local/mychart
curl  myapp.westos.org
helm uninstall myapp

八、helm部署metrics-server

回收原有部署
kubectl delete -f components.yaml

添加repo 及下载

helm repo add metrics-server https://kubernetes-sigs.github.io/metrics-server/
helm  search repo metrics-server
helm  pull metrics-server/metrics-server

 解压修改配置文件

tar zxf metrics-server-3.8.4.tgz
cd metrics-server
vim values.yaml

上传至oci

创建namespace

kubectl create namespace metrics-server
helm -n metrics-server install metrics-server oci://reg.westos.org/charts/metrics-server
helm -n metrics-server get manifest metrics-server  kubectl get -f 

测试:

九、kubeapps

下载上传镜像:

docker load -i kubeapps-2.9.0.tar
docker images |grep reg.westos.org/bitnami | awk '{system("docker push "$1":"$2"")}'

 

下载chart包

helm search repo kubeapps
helm pull my-repo/kubeapps

解压修改配置文件

tar zxf kubeapps-14.0.2.tgz
cd kubeapps/
vim values.yaml

使用LoadBalancer  不使用ingress ingress访问需要在Windows上添加解析

打包上传至oci

helm package kubeapps/
helm push  kubeapps-14.0.2.tgz oci://reg.westos.org/charts

创建namespace 使用oci部署

kubectl create namespace kubeapps
helm -n kubeapps install kubeapps oci://reg.westos.org/charts/kubeapps

获取访问信息:

 访问:

授权并获取token
kubectl create serviceaccount kubeapps-operator -n kubeapps
kubectl create clusterrolebinding kubeapps-operator --clusterrole=cluster-admin --serviceaccount=kubeapps:kubeapps-operator
kubectl -n kubeapps create token kubeapps-operator

 使用token登录web页面

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/126508.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

经销商管理怎么做?

有人说&#xff0c;谁占据了渠道&#xff0c;谁就拥有了销售的大半个江山。在渠道为王的时代&#xff0c;每个企业都想快速打开市场&#xff0c;以渠道铺设自己的销路&#xff0c;捞取一桶桶金。因此&#xff0c;占领渠道&#xff0c;将渠道管理好是企业&#xff0c;尤其是快消…

K8S概念与架构

K8S概念与架构 一、Kubernetes 概述1、K8S 是什么2、为什么要用 K8S3、k8s介绍二、Kubernetes 集群架构与组件2.1、Master核心组件 2.2、Node核心组件 三、Kubernetes 核心概念3.1、Pod 控制器 一、Kubernetes 概述 1、K8S 是什么 K8S 的全称为 Kubernetes (K12345678S)&…

如何用Excel软件制作最小二乘法①

一、用自带的选项&#xff08;不推荐&#xff09;&#xff0c;因为感觉只是近似&#xff0c;虽然结果一样 1.在Excel中输入或打开要进行在excel中输入或打开要进行最小二乘法拟合的数据&#xff0c;如图所示。 2.按住“shift”键的同时&#xff0c;用鼠标左键单击以选择数据&a…

linux 显卡驱动 cuda 离线安装

1、 安装显卡驱动&#xff1a; Download NVIDIA, GeForce, Quadro, and Tesla Drivers &#xff08;1&#xff09;注意选择对应的cuda版本&#xff0c;和系统版本&#xff0c;并下载 &#xff08;2&#xff09;

element-Cascader级联选择器用法?

html <el-form-item label"行业选择" :label-width"formLabelWidth"><div class"m-4"><el-cascader v-model"form.tradeid" :options"options" :props"props" /></div></el-form-ite…

FPGA高端项目:图像缩放+GTX+UDP架构,高速接口以太网视频传输,提供2套工程源码加QT上位机源码和技术支持

目录 1、前言免责声明本项目特点 2、相关方案推荐我这里已有的 GT 高速接口解决方案我这里已有的以太网方案我这里已有的图像处理方案 3、设计思路框架设计框图视频源选择IT6802解码芯片配置及采集动态彩条跨时钟FIFO图像缩放模块详解设计框图代码框图2种插值算法的整合与选择 …

代码随想录算法训练营Day 47 || 198.打家劫舍、213.打家劫舍II、337.打家劫舍 III

198.打家劫舍 力扣题目链接(opens new window) 你是一个专业的小偷&#xff0c;计划偷窃沿街的房屋。每间房内都藏有一定的现金&#xff0c;影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统&#xff0c;如果两间相邻的房屋在同一晚上被小偷闯入&#xff0c;系…

CocosCreator | 2.3.3及后续版本浏览器无法断点和控制台不显示错误代码路径的解决方案(cocos代码报错无法定位的问题)

在2.3.3正式版的官方介绍中有这么一项&#xff1a; 提升网页预览时的加载速度 为了进一步提升开发效率&#xff0c;我们优化了网页预览时的脚本加载速度。不论是对引擎还是项目中的代码&#xff0c;载入速度都获得了提升。特别是在开启自定义引擎&#xff0c;或者使用手机扫码…

AIGC视频生成/编辑技术调研报告

人物AIGC&#xff1a;FaceChain人物写真生成工业级开源项目&#xff0c;欢迎上github体验。 简介&#xff1a; 随着图像生成领域的研究飞速发展&#xff0c;基于diffusion的生成式模型取得效果上的大突破。在图像生成/编辑产品大爆发的今天&#xff0c;视频生成/编辑技术也引起…

TDD、BDD、ATDD以及SBE的概念和区别

在软件开发或是软件测试中会遇到以下这些词&#xff1a;TDD 、BDD 、ATDD以及SBE&#xff0c;这些词代表什么意思呢&#xff1f; 它们之间有什么关系吗&#xff1f; TDD 、BDD 、ATDD以及SBE的基本概念 TDD&#xff1a;&#xff08;Test Driven Development&#xff09;是一种…

Docker容器 虚拟化技术

Docker容器 1、容器化技术的由来 虚拟化技术发展已经非常强大了&#xff0c;那为什么还需要容器化技术呢&#xff1f; 如今的虚拟机解决了基础设计计算&#xff0c;网络&#xff0c;存储着几个方面的弹性&#xff0c;可以非常方便的扩展出应用的资源&#xff0c;但是仍然存在…

ES6学习

let和const命名 let基本用法-块级作用域 在es6中可以使用let声明变量&#xff0c;用法类似于var ⚠️ let声明的变量&#xff0c;只在let命令所在的代码块内有效 {let a 10;var b 20; } console.log(a); //a is not defined console.log(b); //20不存在变量提升 var命令…

【VS2019 Qt5 VTK9.2】临时解决配置相关问题的简单方法

配置报错 编译报错提示&#xff08;LNK2019或LNK2001&#xff09; 严重性 代码 说明 项目 文件 行 禁止显示状态 错误 LNK2019 无法解析的外部符号 “__declspec(dllimport) public: __cdecl QVTKOpenGLNativeWidget::QVTKOpenGLNativeWidget(class QWidget *,class QFlags)(_i…

禅道研发项⽬管理系统未授权RCE漏洞复现

1、产品介绍 Zendao禅道是第一款国产的开源项目管理软件&#xff0c;他的核心管理思想基于敏捷方法scrum&#xff0c;内置了产品管理和项目管理&#xff0c;同时又根据国内研发现状补充了测试管理、计划管理、发布管理、文档管理、事务管理等功能。 2、漏洞描述 该系统在202…

晶振分频【FPGA】

所有数据对齐晶振。 6分频&#xff1a;【1】 module divider_six // 6分频 【0~2】 ( input wire sys_clk , //系统时钟 50MHz input wire sys_rst_n , //全局复位 output reg clk_out //对系统时钟 6 分频后的信号 );reg [1:0] cnt; //用于计数的寄存器 //cnt:计数器从 0 到…

2023网络钓鱼状况报告:ChatGPT等工具致网络钓鱼电子邮件数量激增1265%

近日&#xff0c;SlashNext发布了《2023年网络钓鱼状况报告》&#xff0c;报告显示&#xff1a;自ChatGPT于2022年11月推出以来&#xff0c;网络钓鱼电子邮件数量激增1265%&#xff0c;这标志着网络犯罪依托于人工智能进入了一个新的时代。 该报告深入分析了2022年第四季度至2…

Python Selenium Headless:以 Headless 模式打开 Chrome 浏览器

本篇文章介绍了如何在 Python 中使用 Selenium 运行浏览器无头模式。 在 Python 中使用 Selenium 以无头模式运行 Chrome 浏览器 要说 headless 浏览器,你也可以称它们为真正的浏览器,只不过它们是在后台运行的; 您将无法在任何地方看到它们,但它们仍在后台运行。 在某些…

03-React事件处理 生命周期 Diffing算法

React事件处理 背景 1.通过onXxx属性指定事件处理函数(注意大小写) React使用的是自定义(合成)事件, 而不是使用的原生DOM事件 比如原生onclick的事件在React中变成了onClick&#xff0c;这么搞是为了更好的兼容性React中的事件是通过事件委托方式处理的(委托给组件最外层的…

小程序如何设置自取模式下的服务方式

设置自取模式下的服务方式是非常重要的&#xff0c;尤其是对于到店自取和到店堂食这两种不同的服务模式。下面我们就来介绍一下如何在小程序中设置这两种服务方式。 在小程序管理员后台->配送设置处&#xff0c;在服务方式处&#xff0c;设置自取情况下的服务方式。默认是&…

深度学习检测小目标常用方法

前言 在深度学习目标检测中&#xff0c;特别是人脸检测中&#xff0c;小目标、小人脸的检测由于分辨率低&#xff0c;图片模糊&#xff0c;信息少&#xff0c;噪音多&#xff0c;所以一直是一个实际且常见的困难问题。不过在这几年的发展中&#xff0c;也涌现了一些提高小目标…