jenkins结合k8s部署
jenkins配置部署,从git或者svn等拉取代码,编制打包,在博客的jenkins那块有具体的讲解将打好的包war/java包拷贝到k8s-Master,或者在jenkins上也行,我这里测试为了方便直接在k8s上面执行在k8s-node和k8s-master上配置好私有仓库镜像拉取vim /usr/lib/systemd/system/docker.service#Exe...
-
jenkins配置部署,从git或者svn等拉取代码,编制打包,在博客的jenkins那块有具体的讲解
-
将打好的包war/java包拷贝到k8s-Master,或者在jenkins上也行,我这里测试为了方便直接在k8s上面执行
-
在k8s-node和k8s-master上配置好私有仓库镜像拉取
vim /usr/lib/systemd/system/docker.service
#ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
ExecStart=/usr/bin/dockerd --insecure-registry 192.168.0.105
systemctl daemon-reload && systemctl restart docker -
在k8s-master编写Dockerfile,jenkins执行的脚本及yaml文件
mkdir /root/tomcat
vim Dockerfile
FROM tomcat #基础镜像MAINTAINER Mlxg #作者
RUN mkdir /usr/local/tomcat/webapps/test #创建容器test目录
ADD test.txt /usr/local/tomcat/webapps/test #test.txt放到test目录
#jar/war包直接ADD到webapps下启动tomcat即可
ADD server.xml /usr/local/tomcat/conf #替换容器server.xmlEXPOSE 18080 #容器tomcat端口
ENTRYPOINT ["/usr/local/tomcat/bin/catalina.sh",“run”] #启动tomcat
jenkins脚本
#!/bin/bash
docker build -t tomcat:v1.0 . #生成镜像
docker tag tomcat:v1.0 192.168.0.105/test/tomcat:v1.0 #打tag
docker login --username=admin --password=‘admin’ 192.168.0.105 #登录私有仓库
docker push 192.168.0.105/test/tomcat:v1.0 #上传镜像 -
配置无需手动登录docker私有仓库
docker login 192.168.0.105输入用户及密码
登录之后在~/.docker/config.json文件
再对上面的config.json进行base64加密,命令如下:
cat ~/.docker/config.json |base64 -w 0
创建secret.yaml文件,文件内容如下:
apiVersion: v1
kind: Secret
metadata:
name: mysecret
data:
.dockerconfigjson: ewoJImF1dGhzIjogewoJCSJodWIueXh0Yy5jb206ODA4MSI6IHsKCQkJImF1dGgiOiAiWTNJM09saDFNVEl6TkRVMk1qVT0iCgkJfQoJfQp9Cg== #base64加密密码
type: kubernetes.io/dockerconfigjson创建secret,命令如下:
kubectl create -f secret.yaml,生成secret
我试了一下无法拉取,还没未找到问题,可能是我之前搞错了之后,生成了一个错误的
手动创建一个secret,使用 secret 来指定 pull 权限
kubectl create secret docker-registry registry-harbor
–namespace=default --docker-server=192.168.0.105
–docker-username=admin --docker-password=‘admin’
kubectl get secrets -
编写yaml文件及svc文件
test-rc.yaml
apiVersion: v1
kind: ReplicationController
metadata:
name: test
spec:
replicas: 2
selector:
app: test
template:
metadata:
labels:
app: test
spec:
containers:- name: test
image: 192.168.0.105/test/tomcat:v1.0 #私有仓库镜像
ports:- containerPort: 18080
imagePullSecrets:
- containerPort: 18080
- name: registry-harbor #创建secret定义的仓库名称
- name: test
test-svc.yaml
apiVersion: v1
kind: Service
metadata:
name: test
spec:
type: NodePort
ports:
- port: 18080 #容器暴露端口
nodePort: 31002 #映射node服务器提供外部访问端口
selector:
app: test
8. 执行部署web及services
kubectl create -f test-rc.yaml
kubectl get pods #可查看pod进度
kubectl describe pod test-s5c48 #查看pod信息及报错
kubectl delete -f test-rc.yaml #删除pods
kubectl create -f test-svc.yaml
kubectl get svc
kubectl delete -f test-svc.yaml<br> docker ps | grep tomcat #在node上查看容器是否正常运行
9. jenkins配置
配置源码及执行的shell
10. k8s上编写Docfile,build,yanl文件
在jenkins上ADD zip/jar包是报错没有这个文件,暂未找到什么问题
此处scp到k8s-master上执行打包镜像上传私有仓库
vim Dockerfile
FROM docker.io/centos
MAINTAINER Mlxg
RUN yum install -y unzip
RUN mkdir /opt/server
ADD letouactivity-provider-1.0.0-SNAPSHOT-bin.zip /opt/server
RUN unzip /opt/server/letouactivity-provider-1.0.0-SNAPSHOT-bin.zip -d /opt/server
EXPOSE 28080
ENTRYPOINT ["/opt/server/bin/start.sh",“run”]
vim letou.sh #tag可通过变量获取,为了测试方便
#!/bin/bash
docker build -t letou:v1.0 .
docker tag letou:v1.0 192.168.0.105/test/letou:v1.0
docker login --username=Mlxg --password=‘Mlxg2234’ 192.168.0.105
docker push 192.168.0.105/test/letou:v1.0
vim letou-rc.yaml
apiVersion: v1
kind: ReplicationController
metadata:
name: letou
spec:
replicas: 2
selector:
app: letou
template:
metadata:
labels:
app: letou
spec:
containers:
- name: letou
image: 192.168.0.105/test/letou:v1.0
ports:
- containerPort: 28080
imagePullSecrets:
- name: registry-harbor
vim letou-svc.yaml
apiVersion: v1
kind: Service
metadata:
name: letou
spec:
type: NodePort
ports:
- port: 28080
nodePort: 30332
selector:
app: letou
11. 在k8s-master执行查看是否部署成功
因为我们的代码需要连接duboo,zk,apollo(可部署在宿主机),此时node上的容器其实访问不了
只要能成功查看letou pod就发布成功了
更多推荐
所有评论(0)