kubernetes(30):k8s包管理工具-helm(4)-harbor管理helm-charts
harbor管理 helm-charts
当我们定义完chart后需要有个地方存储,就像docker的imag,存储到registry。Harbor作为一个企业级的docker仓库,也能存储chart
harbor安装
docker(22):dockers企业级私有仓库harbor
harbor 安装的时候 默认没有helm charts的仓库
docker-compose stop ./install.sh --with-chartmuseum
安装完成之后登录页面上就会有了 helm charts 了,页面上也可以直接上传charts
在Harbor在创建一个charts项目,用于存储charts如下:
安装helm-push
helm plugin install https://github.com/chartmuseum/helm-push
在
Helm Charts
标签页下,可以上传我们的
chart
,注意它需要是使用
tar
压缩的压缩文件,我试过
rar
是不可以的。
添加到仓库列表
使用如下命令将我们的
harbor
仓库
chart
添加到
helm
repo:
helm repo add myrepo https://xx.xx.xx.xx/chartrepo/charts
现在就可以安装了。
[root@k8s-master harbor]# helm repo add myrepo http://10.6.76.25/chartrepo/chart --username admin --password 123456 #harbor用户密码 "myrepo" has been added to your repositories [root@k8s-master harbor]# helm repo list NAME URL stable https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts local http://127.0.0.1:8879/charts myrepo http://10.6.76.25/chartrepo/chart [root@k8s-master harbor]#
上传
[root@k8s-master ~]# cd helm/ [root@k8s-master helm]# ls custom.yaml hello-helm hello-helm-0.1.0.tgz mychart mychart-0.1.0.tgz mychart-0.3.0.tgz mychart-0.4.0.tgz mychart-0.5.0.tgz [root@k8s-master helm]# helm push hello-helm myrepo Pushing hello-helm-0.1.0.tgz to myrepo... Done. [root@k8s-master helm]# helm push mychart myrepo Pushing mychart-0.5.0.tgz to myrepo... Done. [root@k8s-master helm]#
更新仓库
[root@k8s-master helm]# helm search hello-helm NAME CHART VERSION APP VERSION DESCRIPTION local/hello-helm 0.1.0 1.0 A Helm chart for Kubernetes [root@k8s-master helm]# helm repo update Hang tight while we grab the latest from your chart repositories... ...Skip local chart repository ...Successfully got an update from the "myrepo" chart repository ...Successfully got an update from the "stable" chart repository Update Complete. ⎈ Happy Helming!⎈ [root@k8s-master helm]# helm search hello-helm NAME CHART VERSION APP VERSION DESCRIPTION local/hello-helm 0.1.0 1.0 A Helm chart for Kubernetes myrepo/hello-helm 0.1.0 1.0 A Helm chart for Kubernetes [root@k8s-master helm]#
安装测试
[root@k8s-master helm]# helm list NAME REVISION UPDATED STATUS CHART APP VERSION NAMESPACE wx-test 1 Wed Sep 25 14:26:08 2019 DEPLOYED mychart-0.5.0 1.0 default wx-test2 1 Wed Sep 25 14:29:36 2019 DEPLOYED mychart-0.5.0 1.0 kube-system [root@k8s-master helm]# helm install myrepo/hello-helm --name haha NAME: haha LAST DEPLOYED: Wed Sep 25 17:27:04 2019 NAMESPACE: default STATUS: DEPLOYED RESOURCES: ==> v1/Deployment NAME READY UP-TO-DATE AVAILABLE AGE haha-hello-helm 0/1 1 0 0s ==> v1/Pod(related) NAME READY STATUS RESTARTS AGE haha-hello-helm-b7c945776-w7tfb 0/1 ContainerCreating 0 0s ==> v1/Service NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE haha-hello-helm NodePort 10.102.153.183 <none> 80:31566/TCP 0s NOTES: 1. Get the application URL by running these commands: export NODE_PORT=$(kubectl get --namespace default -o jsonpath="{.spec.ports[0].nodePort}" services haha-hello-helm) export NODE_IP=$(kubectl get nodes --namespace default -o jsonpath="{.items[0].status.addresses[0].address}") echo http://$NODE_IP:$NODE_PORT [root@k8s-master helm]# helm list NAME REVISION UPDATED STATUS CHART APP VERSION NAMESPACE haha 1 Wed Sep 25 17:27:04 2019 DEPLOYED hello-helm-0.1.0 1.0 default wx-test 1 Wed Sep 25 14:26:08 2019 DEPLOYED mychart-0.5.0 1.0 default wx-test2 1 Wed Sep 25 14:29:36 2019 DEPLOYED mychart-0.5.0 1.0 kube-system [root@k8s-master helm]# [root@k8s-master helm]# kubectl get pod,svc| grep haha pod/haha-hello-helm-b7c945776-w7tfb 1/1 Running 0 40s service/haha-hello-helm NodePort 10.102.153.183 <none> 80:31566/TCP 40s [root@k8s-master helm]#