使用过Ubuntu下的ap-get或者CentOS下的yum, 这两者都是Linux系统下的包管理工具。采用apt-get/yum,应用开发者可以管理应用包之间的依赖关系,发布应用;用户则可以以简单的方式查找、安装、升级、卸载应用程序。Kubernetes 安装deployment和pod,service,都需要查看api了解其中的yaml的语法结构,这样太复杂了,为了简化这个流程。
https://helm.sh/
Helm Chart 是用来封装 Kubernetes 原生应用程序的一系列 YAML 文件。可以在你部署应用的时候自定义应用程序的一些 Metadata,以便于应用程序的分发。Helm 本身的处理逻辑很简单,其自身价值并不大,而有价值的是 Helm 的生态圈和 Helm 官方所提供的众多包含有最佳实践的 chart 包。 Helm 本身的处理逻辑很简单,其自身价值并不大,而有价值的是 Helm 的生态圈和 Helm 官方所提供的众多包含有最佳实践的 chart 包。
chart
一系列用于描述 k8s 资源相关文件的集合,是 Helm 用于打包 k8s 资源的方式。
release
一个 chart 被 Helm 运行后将会生成对应的一个 release。
TillerServer
Helm 的服务端,部署在 k8s 集群内,主要管理 release 相关的存储和与 k8s 的交互。
helm
Helm 的客服端,通过 gRPC 协议与 TillerServer 进行交互,主要提供了增删查改 chart、release 和 repository 相关的功能。
config
包含了应用发布配置信息
只要不报错一直等待就可以了,根据网速来的 可能比较慢,但是终究可以下载完毕
curl https://raw.githubusercontent.com/helm/helm/master/scripts/get > get_helm.sh
chmod 700 get_helm.sh
./get_helm.sh
sudo yum install -y socat
Helm 默认会去 storage.googleapis.com 拉取镜像,如果你当前执行的机器不能访问该域名的话可以使用。
docker search tiller
# 一会要用这个jessestuart/tiller
因为helm部署的存在跨命名空间的,所以直接给他赋ClusterRole这个权限。
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: tiller
namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
name: tiller
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: tiller
namespace: kube-system
运行权限赋予
kubectl create -f helm-rbac.yaml
再次验证
helm version
发现pod下载失败,查看原因:gcr.io/kubernetes-helm/tiller:v2.14.3 无法拉取, 可能读者当你看到的时候tiller版本可能不是在v2.14.3,这个版本其实不用考虑。
kubectl get pod --all-namespaces
kubectl describe pod tiller-deploy-75f6c87b87-vdw2c -n kube-system
修改kubectl edit deploy tiller-deploy -n kube-system
kubectl edit deploy tiller-deploy -n kube-system
# image: gcr.io/kubernetes-helm/tiller:v2.14.3 修改成图片上的jessestuart/tiller,上边docker search 的时候提到过。
kubectl get pod -n kube-system
创建了tiller的 ServceAccount 后还没完, Tiller 之前已经就部署成功了,而且是没有指定 ServiceAccount 的,所以我们需要给 Tiller 打上一个 ServiceAccount 的补丁
kubectl patch deploy --namespace kube-system tiller-deploy -p '{"spec":{"template":{"spec":{"serviceAccount":"tiller"}}}}'
查看deploy的用户信息
kubectl describe deploy --namespace kube-system tiller-deploy
mkdir helm
helm create hello-helm
tree
https://docs.helm.sh/developing_charts/#charts
将默认的 stable 更改为 1.7.9, Service 的类型也改成 NodePort
vi ./hello-helm/values.yaml
helm install ./hello-helm
查看helm的文件
kubectl get pods -o wide
kubectl get svc -o wide
修改成了NodePort可以直接访问 svc 查看到的端口 直接访问就可以访问nginx
create 2次导致的。
helm list
helm package hello-helm
list中的都删除了。
helm delete intentional-ocelot
helm delete washed-panda
查看pod,已经没有了
kubectl get pods
PS:安装helm,使用了很多种方式了,感觉这种是最稳的,分享给大家,这里就简单的介绍了helm的几个命令:创建,删除,查看,打包,更多的命令还是查看helm的官方文档吧,下次继续说说helm的基本使用。