背景
此前我们在kubernetes上部署应用都是通过自己编写yaml文件来实现的。那么能否通过类似DockerHub拉取镜像的操作,来快捷地部署常规的应用呢?
答案是肯定的。
kubernetes为我们提供了Helm的操作方式来快捷地部署应用,它也拥有自己的应用中心。它类似于npm、pip、DockerHub,可以理解为一个软件库,我们可以方便快速地为我们的集群安装一些第三方软件。
实现
安装Helm
方式一:自动下载安装
安装命令:
curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
注:
- 此方式由于网络原因可能会一直卡在加载界面无法完成。此时我们提供了第二种方式进行手动下载安装。
方式二:手动下载安装
# 解压Helm包
tar -zxvf helm-v3.9.0-linux-amd64.tar.gz
# 在解压目中找到helm程序,移动到需要的目录中
mv linux-amd64/helm /usr/local/bin/helm
Helm安装应用
安装软件源
helm repo add bitnami https://charts.bitnami.com/bitnami
安装MongoDB示例
简单安装
此案例未设置MongoDB的设置项。
helm install my-mongo bitnami/mongodb
设置参数安装:设置密码和架构
此案例设置了MongoDB的密码,以及集群架构。这种方式帮我们创建了副本集群以及数据持久盘(默认值可在官网找到)。
helm install my-mongo bitnami/mongodb --set architecture="replicaset",auth.rootPassword="mongopass"
查看密码:
kubectl get secret my-mongo-mongodb -o json
连接MongoDB数据库
临时运行一个包含 mongo client 的 debian 系统:
kubectl run mongodb-client --rm --tty -i --restart='Never' --image docker.io/bitnami/mongodb:4.4.10-debian-10-r20 --command -- bash
进入MongoDB:
# 进去 mongodb
mongo --host "my-mongo-mongodb" -u root -p mongopass
端口转发
端口转发可实现通过访问宿主机进而访问到MongoDB。
# 也可以转发集群里的端口到宿主机访问 mongodb
kubectl port-forward svc/my-mongo-mongodb 27017:27018
命名空间
如果一个集群中部署了多个应用,所有应用都在一起,就不太好管理,也可能导致名字冲突等。
我们可以使用namespace把应用划分到不同的命名空间,跟yaml文件里的namespace是一个概念,只是为了划分空间。
# 创建命名空间
kubectl create namespace testapp
# 部署应用到指定的命名空间
kubectl apply -f app.yml --namespace testapp
# 查询
kubectl get pod --namespace kube-system
可以用kubens快速切换namespace:
# 切换命名空间
kubens kube-system
# 回到上个命名空间
kubens -
# 切换集群
kubectx minikube
注:
kubens
需要自行安装后才可以使用。
总结
本文介绍了通过Helm来快速地部署应用,Helm做好了一些需要设置的内容,我们只需要专注于使用即可。