helm使用
helm
0. helm安装
基本上到github上面,下载二进制就行。mac的话用brew安装。
https://github.com/helm/helm
brew:
brew install kubernetes-helm
1. helm基本操作
helm create xx 创建一个chart
helm install chartxx 安装
helm uninstall chartxx 卸载
helm upgrade chartxx 更新
helm template 渲染
helm list 列出已经deploy的应用
v3版本以后使用很方便,不需要repo的操作了,kubeconfig 有了就能用。需要注意先指定kubeconfig的环境变量。或者放到~/.kube/config。
2. helm init (v3已经不需要了)
helm init --upgrade --tiller-image registry.cn-hangzhou.aliyuncs.com/google_containers/tiller:v2.9.1 --stable-repo-url https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
将tiller的版本换了。kube-system应该会有tiller-deploy的deployment,启动就ok。
# kubectl get deployments.apps -n kube-system
NAME READY UP-TO-DATE AVAILABLE AGE
calico-kube-controllers 1/1 1 1 6d8h
coredns 2/2 2 2 6d8h
tiller-deploy 1/1 1 1 2d19h
添加serviceaccount,clusterrolebinding:
kubectl create serviceaccount --namespace kube-system tiller
kubectl create clusterrolebinding tiller-cluster-rule --clusterrole=cluster-admin --serviceaccount=kube-system:tiller
kubectl patch deploy --namespace kube-system tiller-deploy -p '{"spec":{"template":{"spec":{"serviceAccount":"tiller"}}}}'
卸载helm :
helm reset
3. chart 包制作
helm create
#helm create qymapp
#ls qymapp
charts Chart.yaml templates values.yaml
修改相应文件,打包chart
4. chart 使用
helm install --dry-run --debug <chart_dir> --name <release_name>
# helm install --debug local/qymapp --name qym-test
[debug] Created tunnel using local port: '42233'
[debug] SERVER: "127.0.0.1:42233"
[debug] Original chart version: ""
[debug] Fetched local/qymapp to /root/.helm/cache/archive/qymapp-0.1.0.tgz
[debug] CHART PATH: /root/.helm/cache/archive/qymapp-0.1.0.tgz
NAME: qym-test
REVISION: 1
RELEASED: Wed Oct 23 16:54:34 2019
CHART: qymapp-0.1.0
USER-SUPPLIED VALUES:
{}
COMPUTED VALUES:
affinity: {}
fullnameOverride: ""
image:
pullPolicy: IfNotPresent
repository: nginx
tag: stable
imagePullSecrets: []
ingress:
annotations: {}
enabled: false
hosts:
- host: chart-example.local
paths: []
tls: []
nameOverride: ""
nodeSelector: {}
podSecurityContext: {}
replicaCount: 1
resources: {}
securityContext: {}
service:
port: 80
type: ClusterIP
serviceAccount:
create: true
name: null
tolerations: []
HOOKS:
---
# qym-test-qymapp-test-connection
apiVersion: v1
kind: Pod
metadata:
name: "qym-test-qymapp-test-connection"
labels:
app.kubernetes.io/name: qymapp
helm.sh/chart: qymapp-0.1.0
app.kubernetes.io/instance: qym-test
app.kubernetes.io/version: "1.0"
app.kubernetes.io/managed-by: Tiller
annotations:
"helm.sh/hook": test-success
spec:
containers:
- name: wget
image: busybox
command: ['wget']
args: ['qym-test-qymapp:80']
restartPolicy: Never
MANIFEST:
---
# Source: qymapp/templates/serviceaccount.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
name: qym-test-qymapp
labels:
app.kubernetes.io/name: qymapp
helm.sh/chart: qymapp-0.1.0
app.kubernetes.io/instance: qym-test
app.kubernetes.io/version: "1.0"
app.kubernetes.io/managed-by: Tiller
---
# Source: qymapp/templates/service.yaml
apiVersion: v1
kind: Service
metadata:
name: qym-test-qymapp
labels:
app.kubernetes.io/name: qymapp
helm.sh/chart: qymapp-0.1.0
app.kubernetes.io/instance: qym-test
app.kubernetes.io/version: "1.0"
app.kubernetes.io/managed-by: Tiller
spec:
type: ClusterIP
ports:
- port: 80
targetPort: http
protocol: TCP
name: http
selector:
app.kubernetes.io/name: qymapp
app.kubernetes.io/instance: qym-test
---
# Source: qymapp/templates/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: qym-test-qymapp
labels:
app.kubernetes.io/name: qymapp
helm.sh/chart: qymapp-0.1.0
app.kubernetes.io/instance: qym-test
app.kubernetes.io/version: "1.0"
app.kubernetes.io/managed-by: Tiller
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: qymapp
app.kubernetes.io/instance: qym-test
template:
metadata:
labels:
app.kubernetes.io/name: qymapp
app.kubernetes.io/instance: qym-test
spec:
serviceAccountName: qym-test-qymapp
securityContext:
{}
containers:
- name: qymapp
securityContext:
{}
image: "nginx:stable"
imagePullPolicy: IfNotPresent
ports:
- name: http
containerPort: 80
protocol: TCP
livenessProbe:
httpGet:
path: /
port: http
readinessProbe:
httpGet:
path: /
port: http
resources:
{}
LAST DEPLOYED: Wed Oct 23 16:54:34 2019
NAMESPACE: default
STATUS: DEPLOYED
RESOURCES:
==> v1/Deployment
NAME READY UP-TO-DATE AVAILABLE AGE
qym-test-qymapp 0/1 1 0 0s
==> v1/Pod(related)
NAME READY STATUS RESTARTS AGE
qym-test-qymapp-5d4bcc5db7-xdrh5 0/1 ContainerCreating 0 0s
==> v1/Service
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
qym-test-qymapp ClusterIP 10.108.218.211 <none> 80/TCP 0s
==> v1/ServiceAccount
NAME SECRETS AGE
qym-test-qymapp 1 0s
NOTES:
1. Get the application URL by running these commands:
export POD_NAME=$(kubectl get pods --namespace default -l "app.kubernetes.io/name=qymapp,app.kubernetes.io/instance=qym-test" -o jsonpath="{.items[0].metadata.name}")
echo "Visit http://127.0.0.1:8080 to use your application"
kubectl port-forward $POD_NAME 8080:80
# helm list
NAME REVISION UPDATED STATUS CHART APP VERSION NAMESPACE
qym-test 1 Wed Oct 23 16:54:34 2019 DEPLOYED qymapp-0.1.0 1.0 default
升级chart包,修改一下
# helm package qymapp
Successfully packaged chart and saved it to: /root/.helm/repository/local/qymapp-0.2.0.tgz
# ls
index.yaml qymapp qymapp-0.1.0.tgz qymapp-0.2.0.tgz
# helm search qymapp -l
NAME CHART VERSION APP VERSION DESCRIPTION
local/qymapp 0.2.0 1.0 A Helm chart for Kubernetes
local/qymapp 0.1.0 1.0 A Helm chart for Kubernetes
helm upgrade qym-test local/qymapp
Release "qym-test" has been upgraded.
LAST DEPLOYED: Wed Oct 23 17:17:13 2019
NAMESPACE: default
STATUS: DEPLOYED
# helm list
NAME REVISION UPDATED STATUS CHART APP VERSION NAMESPACE
qym-test 2 Wed Oct 23 17:17:13 2019 DEPLOYED qymapp-0.2.0 1.0 default
v3 不需要package ,直接helm upgrade就行了。是不是很方便。再也回不去了。
参考:
https://helm.sh/
官方文档很不错,重要的几个点都讲了。
这篇文章还缺怎么制作chart包,未完待续。
helm使用的更多相关文章
- Why Helm? - 每天5分钟玩转 Docker 容器技术(160)
本章我们将学习 Helm,Kubernetes 的包管理器. 每个成功的软件平台都有一个优秀的打包系统,比如 Debian.Ubuntu 的 apt,Redhat.Centos 的 yum.而 Hel ...
- Helm 架构 - 每天5分钟玩转 Docker 容器技术(161)
在实践之前,我们先来看看 Helm 的架构. Helm 有两个重要的概念:chart 和 release. chart 是创建一个应用的信息集合,包括各种 Kubernetes 对象的配置模板.参数定 ...
- 部署 Helm - 每天5分钟玩转 Docker 容器技术(162)
本节我们将安装和部署 Helm 客户端和 Tiller 服务器. Helm 客户端 通常,我们将 Helm 客户端安装在能够执行 kubectl 命令的节点上,只需要下面一条命令: curl http ...
- 使用 Helm - 每天5分钟玩转 Docker 容器技术(163)
Helm 安装成功后,可执行 helm search 查看当前可安装的 chart. 这个列表很长,这里只截取了一部分.大家不禁会问,这些 chart 都是从哪里来的? 前面说过,Helm 可以像 a ...
- Helm学习笔记
Helm学习笔记 Helm 是 Kubernetes 生态系统中的一个软件包管理工具.本文将介绍 Helm 中的相关概念和基本工作原理,并通过一个具体的示例学习如何使用 Helm 打包.分发.安装.升 ...
- k8s使用helm打包chart并上传到腾讯云TencentHub
本文只涉及Helm的Chart操作,不会对其他知识进行过多描述.至于安装这块,麻烦自行百度吧,一大堆呢. 在容器化的时代,我们很多应用都可以部署在docker,很方便,而再进一步,我们还有工具可以对d ...
- 如何使用vs将asp.net core项目添加容器支持并发布docker镜像到私有dockerhub和添加k8s/helm管理
这篇文章介绍一下,如何使用VS2017给asp.net core添加容器支持,并发布镜像到私有docker hub,然后用chart管理容器镜像的操作流程. 话不多说,just do it. 新建项目 ...
- helm 持久化部署ingres
Ingress 是一种 Kubernetes 资源,也是将 Kubernetes 集群内服务暴露到外部的一种方式.本文将讲一讲如何用 Helm 在 Kubernetes 集群中部署 Ingress,并 ...
- Helm包管理工具(简介、安装、方法)
认识Helm 每次我们要部署一个应用都需要写一个配置清单(维护一套yaml文件),但是每个环境又不一样.部署一套新的环境成本是真的很高.如果我们能够使用类似于yum的工具来安装我们的应用的话那就太好了 ...
- kubernetes包管理工具Helm安装
helm官方建议使用tls,首先生成证书. openssl genrsa -out ca.key.pem openssl req -key ca.key.pem -new -x509 -days -s ...
随机推荐
- php phpStudy session存放位置
如果你仅仅是想知道session保存的文件在哪里,你可以在你的PHP文件当中运行函数:session_save_path之后查看运行结果即可知道session文件的存放目录. 或者: 在php-ini ...
- 2019-2020-1 20199329《Linux内核原理与分析》第五周作业
<Linux内核原理与分析>第五周作业 一.上周问题总结: 虚拟机将c文件汇编成汇编文件时忘记添加include<stdio.h> gdb跟踪汇编过程不熟练 二.本周学习内容: ...
- Qt 正则表达式检查 IP 格式
KillerSmath 2018年6月29日 下午10:41 @Pranit-Patil Hi there. Like @jonB says above, you should to replace\ ...
- Openstack object list 一次最多有一万个 object
When you request a list of containers or objects, Object Storage returns a maximum of 10,000 names f ...
- 限流 - Guava RateLimiter
2019独角兽企业重金招聘Python工程师标准>>> 限流 限流的目的是通过对并发访问/请求进行限速或者一个时间窗口内的的请求进行限速来保护系统,一旦并发访问/请求达到限制速率或者 ...
- 如何在 Amazon AWS 上设置一台 Linux 服务器
摘要: AWS(Amazon Web Services)是全球领先的云服务器提供商之一.你可以使用 AWS 平台在一分钟内设置完服务器.在 AWS 上,你可以微调服务器的许多技术细节,如 CPU 数量 ...
- Condition的await()和signal()流程
介绍 Condition是j.u.c包下提供的一个接口. 可以翻译成 条件对象,其作用是线程先等待,当外部满足某一条件时,在通过条件对象唤醒等待的线程.ArrayBlockingQueue就是通过Co ...
- Redis(四):独立功能的实现
发布与订阅 Redis 的发布与订阅功能有PUBLISH命令,SUBSCRIBE命令,PSUBSCRIBE命令,PUBSUB命令等组成. 客户端可以通过SUBSCRIBE命令订阅一个或多个频道,当其它 ...
- Java中的集合Queue
2019独角兽企业重金招聘Python工程师标准>>> package com.zhaogang.test; import org.junit.Test; import java.u ...
- 杭电的题,输出格式卡的很严。HDU 1716 排列2
题很简单,一开始写代码,是用整数的格式写的,怎么跑都不对,就以为算法错了,去看大佬们的算法STL全排列:next_permutation(); 又双叒叕写了好几遍,PE了将近次,直到跑了大佬代码发现, ...