前面我们完成了持续集成,利用jenkins将构建好的镜像上传到了harbor仓库中,接下来我们需要利用argocd实现持续部署,本文只写了argocd的简单用法,至于它是什么,原理是什么,怎么玩的更6,这些都得你自己去别的文章或视频里了解。通俗易懂地来说,我们就是先将deploy、service、ingress等kubernetes资源配置文件上传到gitlab中,然后在argocd中创建应用时,填上存放这些yaml文件的gitlab地址,argocd就会自动根据这些kubernetes资源配置文件在kubernetes集群中创建对应的资源了
一、上传yaml文件
在192.168.100.100这台机器上,上一章我们在/root/cicd目录中从gitlab拉取了nginx项目的代码
cd /root/cicd/nginx
vim nginx-deployment.yaml
添加以下内容:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx
spec:
replicas: 1
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- image: 192.168.100.100:888/cicd/nginx:v1
name: nginx
ports:
- containerPort: 80
vim nginx-service.yaml
添加以下内容:
apiVersion: v1
kind: Service
metadata:
name: nginx
spec:
ports:
- port: 80
targetPort: 80
nodePort: 30001
type: NodePort
selector:
app: nginx
git add nginx-deployment.yaml
git add nginx-service.yaml
git commit -m "nginx"
git push origin master
然后我们就可以在gitlab中看到刚刚上传的两个yaml文件了
二、 argocd安装部署
cd ~
wget https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
kubectl apply -n argocd -f install.yaml
kubectl create namespace argocd
由于镜像的问题,部署argocd的过程还是需要等待挺久的,我第一次部署等了差不多30分钟,后面几次部署时快时慢,下图就是部署好的了情况
将argocd的服务改成nodeport类型
kubectl patch svc argocd-server -n argocd -p '{"spec": {"type": "NodePort"}}'
获取初始密码
kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d
查看argocd的web界面的端口
kubectl get service -n argocd
在浏览器中输入部署argocd服务器的IP+argocd端口访问argocdweb界面,这里输入192.168.100.100:32613
初始账号为admin,初始密码就是刚刚获取的初始密码
三、在argocd的web界面上创建应用
在kubernetes集群中创建新的命名空间demo
kubectl create ns demo
浏览器输入kubernetes集群的IP地址+端口号30001,即可访问到我们的nginx应用了,这里输入192.168.100.100:30001,至于为什么端口号是30001,那是因为之前在nginx-service.yaml文件中设置好的
以下就是应用web界面显示内容:
当需要更换版本的时候,修改yaml文件的镜像配置,重新上传到gitlab上,然后在argocd上点击更新一下就ok了。由于能力受限,我觉得这个流程还不是完全的自动,相信结合更好的配置信息和别的工具会让这个流程更加自动化的。