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使用的更多相关文章

  1. Why Helm? - 每天5分钟玩转 Docker 容器技术(160)

    本章我们将学习 Helm,Kubernetes 的包管理器. 每个成功的软件平台都有一个优秀的打包系统,比如 Debian.Ubuntu 的 apt,Redhat.Centos 的 yum.而 Hel ...

  2. Helm 架构 - 每天5分钟玩转 Docker 容器技术(161)

    在实践之前,我们先来看看 Helm 的架构. Helm 有两个重要的概念:chart 和 release. chart 是创建一个应用的信息集合,包括各种 Kubernetes 对象的配置模板.参数定 ...

  3. 部署 Helm - 每天5分钟玩转 Docker 容器技术(162)

    本节我们将安装和部署 Helm 客户端和 Tiller 服务器. Helm 客户端 通常,我们将 Helm 客户端安装在能够执行 kubectl 命令的节点上,只需要下面一条命令: curl http ...

  4. 使用 Helm - 每天5分钟玩转 Docker 容器技术(163)

    Helm 安装成功后,可执行 helm search 查看当前可安装的 chart. 这个列表很长,这里只截取了一部分.大家不禁会问,这些 chart 都是从哪里来的? 前面说过,Helm 可以像 a ...

  5. Helm学习笔记

    Helm学习笔记 Helm 是 Kubernetes 生态系统中的一个软件包管理工具.本文将介绍 Helm 中的相关概念和基本工作原理,并通过一个具体的示例学习如何使用 Helm 打包.分发.安装.升 ...

  6. k8s使用helm打包chart并上传到腾讯云TencentHub

    本文只涉及Helm的Chart操作,不会对其他知识进行过多描述.至于安装这块,麻烦自行百度吧,一大堆呢. 在容器化的时代,我们很多应用都可以部署在docker,很方便,而再进一步,我们还有工具可以对d ...

  7. 如何使用vs将asp.net core项目添加容器支持并发布docker镜像到私有dockerhub和添加k8s/helm管理

    这篇文章介绍一下,如何使用VS2017给asp.net core添加容器支持,并发布镜像到私有docker hub,然后用chart管理容器镜像的操作流程. 话不多说,just do it. 新建项目 ...

  8. helm 持久化部署ingres

    Ingress 是一种 Kubernetes 资源,也是将 Kubernetes 集群内服务暴露到外部的一种方式.本文将讲一讲如何用 Helm 在 Kubernetes 集群中部署 Ingress,并 ...

  9. Helm包管理工具(简介、安装、方法)

    认识Helm 每次我们要部署一个应用都需要写一个配置清单(维护一套yaml文件),但是每个环境又不一样.部署一套新的环境成本是真的很高.如果我们能够使用类似于yum的工具来安装我们的应用的话那就太好了 ...

  10. kubernetes包管理工具Helm安装

    helm官方建议使用tls,首先生成证书. openssl genrsa -out ca.key.pem openssl req -key ca.key.pem -new -x509 -days -s ...

随机推荐

  1. Linux 文件常用权限

    -rw------- (600) 只有所有者才有读和写的权限 -rw-r--r-- (644) 只有所有者才有读和写的权限,组群和其他人只有读的权限 -rwx------ (700) 只有所有者才有读 ...

  2. React Native 在 Airbnb 的起起落落

    写在前面 Airbnb 早在 2016 年就上了 React Native 大船,是很具代表性的先驱布道者: In 2016, we took a big bet on React Native. T ...

  3. 腾讯视频怎么转成mp4模式 软件 工具 方法 最新【已解决】

    1.搜索: 小白兔视频格式在线转换 2.转换好后视频已经是MP4格式了. 转载于:https://blog.51cto.com/14204019/2396896

  4. Git 常见问题汇总

    git reabse 合并多个commit git rebase -i HEAD~{NUM} git rebase -i start end 会进入一个指定区间的commit列表 根据提示进行文本编辑 ...

  5. 关于SpringBoot集成myBatis时,mapper接口注入失败的问题

    问题描述: 在Spring Boot集成myBatis时,发现启动时,mapper接口一直注入失败. 现象如下: VehicleDAO就是需要的mapper对象,一个简单的接口. 已经在applica ...

  6. MYSQl 全表扫描以及查询性能

    MYSQl 全表扫描以及查询性能 -- 本文章仅用于学习,记录 一. Mysql在一些情况下全表检索比索引查询更快: 1.表格数据很少,使用全表检索会比使用索引检索更快.一般当表格总数据小于10行并且 ...

  7. 小老板,我300M的网,网速很慢怎么办?

    首先考虑是不是DNS的问题: 我们先测试一下! 一.Google的DNS: 8.8.8.8 丢包严重 PASS但是扶墙的时候是必备的,如果有扶墙的需求的话可以备用. 二.百度DNS 180.76.76 ...

  8. Codeforce-Ozon Tech Challenge 2020-A. Kuroni and the Gifts

    the i-th necklace has a brightness ai, where all the ai are pairwise distinct (i.e. all ai are diffe ...

  9. 刷新DNS解析缓存+追踪+域名解析命令

    刷新DNS解析缓存 命令:ipconfig /flushdns 用于改完host之后. 追踪IP: 命令:tracert www.baidu.com 域名解析: 命令:nslookup www.bai ...

  10. P1465 序言页码 Preface Numbering (手推)

    题目描述 一类书的序言是以罗马数字标页码的.传统罗马数字用单个字母表示特定的数值,以下是标准数字表: I 1 V 5 X 10 L 50 C 100 D 500 M 1000 最多3个同样的可以表示为 ...