部署helm服务

helm在ocp中相当于catalog中的template

k8s中使用helm之前遇到的问题

1、很难管理、编辑和维护如此多的服务。每个服务都有若干配置,缺乏一个更高层次的工具将这些配置组织起来。

2、不容易将这些服务作为一个整体统一发布。部署人员需要首先理解应用都包含哪些服务,然后按照逻辑顺序依次执行 kubectl apply。即缺少一种工具来定义应用与服务,以及服务与服务之间的依赖关系。

3、不能高效地共享和重用服务。比如两个应用都要用到 MySQL 服务,但配置的参数不一样,这两个应用只能分别拷贝一套标准的 MySQL 配置文件,修改后通过 kubectl apply 部署。也就是说不支持参数化配置和多环境部署。

4、不支持应用级别的版本管理。虽然可以通过 kubectl rollout undo 进行回滚,但这只能针对单个 Deployment,不支持整个应用的回滚。

5、不支持对部署的应用状态进行验证。比如是否能通过预定义的账号访问 MySQL。虽然 Kubernetes 有健康检查,但那是针对单个容器,我们需要应用(服务)级别的健康检查。

helm由客户端和服务端组成,简单的讲:Helm 客户端负责管理 chart;Tiller 服务器负责管理 release。

安装 helm client version:Helm v2.14.2

#下载已编译好的二进制包
wget https://get.helm.sh/helm-v2.14.2-linux-arm64.tar.gz
#解压
tar -zxf helm-v2.14.2-linux-arm64.tar.gz
#设置PATH环境变量
cd linux-amd64
export PATH=$PATH:$(pwd)

配置k8s rbac

cat <<EOF > /tmp/helm-sa.yaml

apiVersion: v1
kind: ServiceAccount
metadata:
  labels:
    k8s-app: helm
  name: tiller
  namespace: kube-system

kubectl create -f /tmp/helm-sa.yaml
EOF

cat <<EOF > /tmp/helm-crb.yaml
apiVersion: rbac.authorization.k8s.io
/v1 kind: ClusterRoleBinding metadata: name: helm-crb roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cluster-admin subjects: - kind: ServiceAccount name: tiller namespace: kube-system
EOF
kubectl create -f /tmp/helm-sa.yaml
kubectl create -f /tmp/helm-crb.yaml
 

生成helm server: tiller

helm init --upgrade -i registry.cn-hangzhou.aliyuncs.com/google_containers/tiller:v2.9.0 --service-account=tiller --stable-repo-url https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts

 

查看pod是否正常running

[root@node2 linux-amd64]# kubectl get pod | grep tiller
tiller-deploy-6dd798686b-h9c9l              1/1       Running    0          25m

参考文档:https://mp.weixin.qq.com/s?__biz=MzIwMTM5MjUwMg==&mid=2653588673&idx=1&sn=4a8c32fb41de3aabc56dae3a77f359b8&chksm=8d3084d8ba470dceb1622941deb69ee2d24c3cebb5f6f40c68ce3372883cea4aa22f004230dc&scene=21#wechat_redirect

原文地址:https://www.cnblogs.com/orchidzjl/p/11237950.html