文章目录
Helm 针对Kubernetes的Helm包管理器。Helm的一般操作:
# 查看帮助
helm --help

官方文档:https://helm.sh/zh/docs/helm/helm/
Helm 架构和基础语法讲解可以参考我这篇文章:【云原生】Helm 架构和基础语法详解
添加、列出、删除、更新和索引chart仓库。
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo list
helm repo update bitnami
helm repo remove bitnami
使用给定名称创建新的chart,该命令创建chart目录和chart用到的公共文件目录。
比如’helm create foo’会创建一个目录结构看起来像这样:
$ helm create foo
foo/
├── .helmignore # Contains patterns to ignore when packaging Helm charts.
├── Chart.yaml # Information about your chart
├── values.yaml # The default values for your templates
├── charts/ # Charts that this chart depends on
└── templates/ # The template files
└── tests/ # The test files
该命令用于安装chart包。安装参数必须是chart的引用,一个打包后的chart路径,未打包的chart目录或者是一个URL。
要重写chart中的值,使用--values参数传递一个文件或者使用--set参数在命令行传递配置,强制使用字符串要用--set-string。 当值本身对于命令行太长或者是动态生成的时候,可以使用--set-file设置独立的值。
helm install -f myvalues.yaml myredis ./redis
helm install --set name=prod myredis ./redis
helm install --set-string long_int=1234567890 myredis ./redis
helm install --set-file my_script=dothings.sh myredis ./redis
比如Chart.yaml声明了两个依赖:
# Chart.yaml
dependencies:
- name: nginx
version: "1.2.3"
repository: "https://example.com/charts"
- name: memcached
version: "3.2.1"
repository: "https://another.example.com/charts"
name 是chart名称,必须匹配Chart.yaml文件中名称。
version 字段应该包含一个语义化的版本或版本范围。
从2.2.0开始,仓库可以被定义为本地存储的依赖chart的目录路径。路径应该以"file://"前缀开头,比如:
# Chart.yaml
dependencies:
- name: nginx
version: "1.2.3"
repository: "file://../dependency_chart/nginx"
# helm dependency list CHART
helm dependency list wordpress
基于Chart.yaml内容升级charts/
# helm dependency update CHART [flags]
helm dependency update wordpress
列举发布版本,该命令会列举出指定命名空间的所有发布版本,(如果没有指定命名空间,会使用当前命名空间)。
默认情况下,只会列举出部署的或者失败的发布,像--uninstalled或者--all会修改默认行为。这些参数可以组合使用:--uninstalled --failed。
默认情况下,最多返回256项,使用--max限制数量,--max设置为0不会返回所有结果,而是返回服务器默认值,可能要比256更多。 同时使用--max和--offset参数可以翻页显示。
# -A显示所有
helm list --max=10 --offset=2 -A
该命令将发布升级到新版的chart。升级参数必须是发布和chart。chart参数可以是:
chart引用('example/mariadb'),chart目录路径,打包的chart或者完整URL。 对于chart引用,除非使用’–version’参数指定,否则会使用最新版本。
helm upgrade --set foo=bar --set foo=newbar redis ./redis
检索发布历史,打印给定版本的历史修订。默认会返回最大的
256个历史版本。设置--max配置返回历史列表的最大长度。
历史发布集合会被打印成格式化的表格,例如:
$ helm history angry-bird
REVISION UPDATED STATUS CHART APP VERSION DESCRIPTION
1 Mon Oct 3 10:15:13 2016 superseded alpine-0.1.0 1.0 Initial install
2 Mon Oct 3 10:15:13 2016 superseded alpine-0.1.0 1.0 Upgraded successfully
3 Mon Oct 3 10:15:13 2016 superseded alpine-0.1.0 1.0 Rolled back to 2
4 Mon Oct 3 10:15:13 2016 deployed alpine-0.1.0 1.0 Upgraded successfully
回滚发布到上一个版本,回滚命令的第一个参数是发布的名称,第二是修订(版本)号,如果省略此参数,会回滚到上一个版本。
# helm rollback <RELEASE> [REVISION] [flags]
# 先查看历史版本
helm history myharbor -n harbor
# 不指定版本就回退上个版本
helm rollback myharbor 1 -n harbor
helm rollback myharbor -n harbor
# helm show all [CHART] [flags]
# 该命令检查chart(目录、文件或URL)并显示所有的内容(values.yaml, Chart.yaml, README)
helm show all mysql
# helm show values [CHART] [flags]
# 该命令检查chart(目录、文件或URL)并显示values.yaml文件的内容
helm show values mysql
从仓库下载并(可选)在本地目录解压。
# helm pull [chart URL | repo/chartname] [...] [flags]
# 仅下载
helm pull bitnami/redis
# 下载并解压到当前目录
helm pull bitnami/redis --untar
--sign参数,在大多数场景中,也要提供--keyring path/to/secret/keys和--key keyname。helm package mysql/
# Successfully packaged chart and saved it to: /opt/k8s/helm/mysql-9.3.1.tgz
如果想忽略helm中的文件,可以在
.helmignore进行匹配,该.helmignore文件支持Unix shell全局匹配,相对路径匹配和否定(以!前缀反向匹配)。每行仅考虑一种模式。示例如下:
# .helmignore
.git
*/temp*
*/*/temp*
temp?
将chart推送到远程。
helm plugin install https://github.com/chartmuseum/helm-push
下载地址:https://github.com/chartmuseum/helm-push/tags
# 1、下载安装包
wget https://github.com/chartmuseum/helm-push/releases/tag/v0.10.3
# 2、查看helm的plugin路径:helm env
helm env
# 3、在该路径下创建helm-push文件夹,并将安装包拷贝到该文件夹下解压即可
mkdir /root/.local/share/helm/plugins/helm-push
wget https://github.com/chartmuseum/helm-push/releases/download/v0.10.3/helm-push_0.10.3_linux_amd64.tar.gz
tar zxvf /root/.local/share/helm/plugins/helm-push/helm-push_0.10.3_linux_amd64.tar.gz -C /root/.local/share/helm/plugins/helm-push
查看插件
helm plugin list
# chartrepo,固定参数,bigdata自定义项目
helm repo add local-harbor --username=admin --password=Harbor12345 https://myharbor.com/chartrepo/bigdata/ --ca-file /opt/k8s/helm/ca.crt
证书直接在harbor上下载

# 查看帮助
helm cm-push --help
# 推送,接【目录】
helm cm-push mysql/ local-harbor --ca-file /opt/k8s/helm/ca.crt
# 推送,接【压缩包】
helm cm-push wordpress-15.1.5.tgz local-harbor --ca-file /opt/k8s/helm/ca.crt
# 推送,指定版本,--version
helm cm-push mychart/ --version="1.2.3" local-harbor --ca-file /opt/k8s/helm/ca.crt
# 强制推送,--force
helm cm-push --force mychart-0.3.2.tgz local-harbor
查看

在Artifact Hub或自己的hub实例中搜索chart。Artifact Hub 是基于web页面的应用,支持CNCF项目的查找、安装和发布包及配置项,包括了公开发布的Helm chart。它是CNCF的沙盒项目。可以访问https://artifacthub.io/
# 不带参数,列出所有
helm search hub
# 指定chart
helm search hub mysql

用chart中关键字搜索仓库,搜索会读取系统上配置的所有仓库,并查找匹配。搜索这些仓库会使用存储在系统中的元数据。它会展示找到最新稳定版本的chart。如果指定了
--devel参数,输出会包括预发布版本。
# Search for stable release versions matching the keyword "nginx"
$ helm search repo nginx
# Search for release versions matching the keyword "nginx", including pre-release versions
$ helm search repo nginx --devel
# Search for the latest stable release for nginx-ingress with a major version of 1
$ helm search repo nginx-ingress --version ^1.0.0
该命令使用一个chart路径并运行一系列的测试来验证chart的格式是否正确。如果遇到引起chart安装失败的情况,会触发[ERROR]信息,如果遇到违反惯例或建议的问题,会触发[WARNING]。
# helm lint PATH [flags]
helm lint ./mysql


helm version // 查看helm版本
helm create xxx // 创建一个xxx charts
helm lint ./xxx // 检查包的格式或信息是否有问题
helm install xxx1 ./xxx // 部署安装xxx,设置名称为xxx1
helm list // 列出已经部署的charts
helm history // 发布历史
helm upgrade // 更新版本
helm rollback // 回滚版本
helm package ./xxx // 打包charts
helm repo add --username admin --password password myharbor xxx // 增加repo
helm uninstall xxx1 // 卸载删除xxx1
helm pull // 拉取chart包
helm cm-push // 推送chart包
helm repo update // 更新仓库资源
helm search hub // 从 Artifact Hub 中查找并列出 helm charts。 Artifact Hub中存放了大量不同的仓库
helm search repo // 从你添加(使用 helm repo add)到本地 helm 客户端中的仓库中进行查找。该命令基于本地数据进行搜索,无需连接互联网
Helm 常用命令(chart 安装、升级、回滚、卸载等操作)就先到这里,有疑问的小伙伴,欢迎给我留言哦,后面会有大量的企业案例,请耐心等待哦~
我想为Heroku构建一个Rails3应用程序。他们使用Postgres作为他们的数据库,所以我通过MacPorts安装了postgres9.0。现在我需要一个postgresgem并且共识是出于性能原因你想要pggem。但是我对我得到的错误感到非常困惑当我尝试在rvm下通过geminstall安装pg时。我已经非常明确地指定了所有postgres目录的位置可以找到但仍然无法完成安装:$envARCHFLAGS='-archx86_64'geminstallpg--\--with-pg-config=/opt/local/var/db/postgresql90/defaultdb/po
尝试通过RVM将RubyGems升级到版本1.8.10并出现此错误:$rvmrubygemslatestRemovingoldRubygemsfiles...Installingrubygems-1.8.10forruby-1.9.2-p180...ERROR:Errorrunning'GEM_PATH="/Users/foo/.rvm/gems/ruby-1.9.2-p180:/Users/foo/.rvm/gems/ruby-1.9.2-p180@global:/Users/foo/.rvm/gems/ruby-1.9.2-p180:/Users/foo/.rvm/gems/rub
我打算为ruby脚本创建一个安装程序,但我希望能够确保机器安装了RVM。有没有一种方法可以完全离线安装RVM并且不引人注目(通过不引人注目,就像创建一个可以做所有事情的脚本而不是要求用户向他们的bash_profile或bashrc添加一些东西)我不是要脚本本身,只是一个关于如何走这条路的快速指针(如果可能的话)。我们还研究了这个很有帮助的问题:RVM-isthereawayforsimpleofflineinstall?但有点误导,因为答案只向我们展示了如何离线在RVM中安装ruby。我们需要能够离线安装RVM本身,并查看脚本https://raw.github.com/wayn
我有一个奇怪的问题:我在rvm上安装了rubyonrails。一切正常,我可以创建项目。但是在我输入“railsnew”时重新启动后,我有“程序'rails'当前未安装。”。SystemUbuntu12.04ruby-v"1.9.3p194"gemlistactionmailer(3.2.5)actionpack(3.2.5)activemodel(3.2.5)activerecord(3.2.5)activeresource(3.2.5)activesupport(3.2.5)arel(3.0.2)builder(3.0.0)bundler(1.1.4)coffee-rails(
我刚刚为fedora安装了emacs。我想用emacs编写ruby。为ruby提供代码提示、代码完成类型功能所需的工具、扩展是什么? 最佳答案 ruby-mode已经包含在Emacs23之后的版本中。不过,它也可以通过ELPA获得。您可能感兴趣的其他一些事情是集成RVM、feature-mode(Cucumber)、rspec-mode、ruby-electric、inf-ruby、rinari(用于Rails)等。这是我当前用于Ruby开发的Emacs配置:https://github.com/citizen428/emacs
我正在尝试在我的centos服务器上安装therubyracer,但遇到了麻烦。$geminstalltherubyracerBuildingnativeextensions.Thiscouldtakeawhile...ERROR:Errorinstallingtherubyracer:ERROR:Failedtobuildgemnativeextension./usr/local/rvm/rubies/ruby-1.9.3-p125/bin/rubyextconf.rbcheckingformain()in-lpthread...yescheckingforv8.h...no***e
我的最终目标是安装当前版本的RubyonRails。我在OSXMountainLion上运行。到目前为止,这是我的过程:已安装的RVM$\curl-Lhttps://get.rvm.io|bash-sstable检查已知(我假设已批准)安装$rvmlistknown我看到当前的稳定版本可用[ruby-]2.0.0[-p247]输入命令安装$rvminstall2.0.0-p247注意:我也试过这些安装命令$rvminstallruby-2.0.0-p247$rvminstallruby=2.0.0-p247我很快就无处可去了。结果:$rvminstall2.0.0-p247Search
我在我的Rails项目中使用Pow和powifygem。现在我尝试升级我的ruby版本(从1.9.3到2.0.0,我使用RVM)当我切换ruby版本、安装所有gem依赖项时,我通过运行railss并访问localhost:3000确保该应用程序正常运行以前,我通过使用pow访问http://my_app.dev来浏览我的应用程序。升级后,由于错误Bundler::RubyVersionMismatch:YourRubyversionis1.9.3,butyourGemfilespecified2.0.0,此url不起作用我尝试过的:重新创建pow应用程序重启pow服务器更新战俘
我实际上是在尝试使用RVM在我的OSX10.7.5上更新ruby,并在输入以下命令后:rvminstallruby我得到了以下回复:Searchingforbinaryrubies,thismighttakesometime.Checkingrequirementsforosx.Installingrequirementsforosx.Updatingsystem.......Errorrunning'requirements_osx_brew_update_systemruby-2.0.0-p247',pleaseread/Users/username/.rvm/log/138121
由于fast-stemmer的问题,我很难安装我想要的任何rubygem。我把我得到的错误放在下面。Buildingnativeextensions.Thiscouldtakeawhile...ERROR:Errorinstallingfast-stemmer:ERROR:Failedtobuildgemnativeextension./System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/rubyextconf.rbcreatingMakefilemake"DESTDIR="cleanmake"DESTDIR=