Jenkinsトリガによるtomcatミラーの自動構築とkubernetesクラスタへのパブリッシュ
一、Dockerfileファイルの作成
1.172.19.2.51導入
2.dockerfileが正常に動作するかどうかをテストする
二、登録habor倉庫の配置(倉庫は172.19.2.139)
1.192.168.13.45上に倉庫秘密鍵を配置する
2.登録倉庫
3.ミラーテストのアップロード
haborにgcgj倉庫を作成してからpush
三、kubernetsファイル構成
kubernetesプライマリノード172.19.2.50上の構成
四、jenkins配置
1.Generalにおけるパラメトリック構築プロセスの構成
2.ソース管理Git設定
3.Gitlabの設定変更による自動トリガ構築
gitlabプロジェクトに変化があるかどうかを1分で検出
4.Execute shell設定
2つのバージョンを制御する方法で、自動トリガコンストラクションまたはバージョン番号が空の場合はタイムスタンプをバージョンとして使用し、バージョン番号を入力する場合は入力したバージョン番号を使用します.
5.ansible-playbook構成
ansibleホスト192.168.13.45上の配置
1.172.19.2.51導入
mkdir -pv /opt/git
git clone http://172.19.2.140:18080/lvqingshan/gcgj.git
cd /opt/git/gcgj
scp [email protected]:/home/app/portal-tomcat/webapps/portal.war ./
scp [email protected]:/home/app/portal-tomcat/conf/server.xml ./
vim Dockerfile
FROM tomcat:7.0.77-jre8 #
ADD server.xml /usr/local/tomcat/conf #server.xml Dockerfile ,
RUN rm -rf /usr/local/tomcat/webapps/*
COPY portal.war /usr/local/tomcat/webapps/ROOT.war #portal.war Dockerfile ,
EXPOSE 8080 #
CMD ["/usr/local/tomcat/bin/catalina.sh","run"] #
2.dockerfileが正常に動作するかどうかをテストする
docker build -t gcgj/portal .
docker run -p 38080:8080 -idt gcgj/portal:latest
git add -A
git commit
git push -u origin master
gitlab lvqingshan
abcd1234
二、登録habor倉庫の配置(倉庫は172.19.2.139)
1.192.168.13.45上に倉庫秘密鍵を配置する
mkdir -pv /etc/docker/certs.d/172.19.2.139/
vim /etc/docker/certs.d/172.19.2.139/ca.crt
-----BEGIN CERTIFICATE-----
MIIDvjCCAqagAwIBAgIUQzFZBuFh7EZLOzWUYZ10QokL+BUwDQYJKoZIhvcNAQEL
BQAwZTELMAkGA1UEBhMCQ04xEDAOBgNVBAgTB0JlaUppbmcxEDAOBgNVBAcTB0Jl
aUppbmcxDDAKBgNVBAoTA2s4czEPMA0GA1UECxMGU3lzdGVtMRMwEQYDVQQDEwpr
dWJlcm5ldGVzMB4XDTE3MDcwNDA4NTMwMFoXDTIyMDcwMzA4NTMwMFowZTELMAkG
A1UEBhMCQ04xEDAOBgNVBAgTB0JlaUppbmcxEDAOBgNVBAcTB0JlaUppbmcxDDAK
BgNVBAoTA2s4czEPMA0GA1UECxMGU3lzdGVtMRMwEQYDVQQDEwprdWJlcm5ldGVz
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAyWgHFV6Cnbgxcs7X7ujj
APnnMmotzNnnTRhygJLCMpCZUaWYrdBkFE4T/HGpbYi1R5AykSPA7FCffFHpJIf8
Gs5DAZHmpY/uRsLSrqeP7/D8sYlyCpggVUeQJviV/a8L7PkCyGq9DSiU/MUBg4CV
Dw07OT46vFJH0lzTaZJNSz7E5QsekLyzRb61tZiBN0CJvSOxXy7wvdqK0610OEFM
T6AN8WfafTH4qmKWulFBJN1LjHTSYfTZzCL6kfTSG1M3kqG0W4B2o2+TkNLVmC9n
gEKdeh/yQmQWfraRkuWiCorJZGxte27xpjgu7u62sRyCm92xQRNgp5RiGHxP913+
HQIDAQABo2YwZDAOBgNVHQ8BAf8EBAMCAQYwEgYDVR0TAQH/BAgwBgEB/wIBAjAd
BgNVHQ4EFgQUDFiYOhMMWkuq93iNBoC1Udr9wLIwHwYDVR0jBBgwFoAUDFiYOhMM
Wkuq93iNBoC1Udr9wLIwDQYJKoZIhvcNAQELBQADggEBADTAW0FPhfrJQ6oT/WBe
iWTv6kCaFoSuWrIHiB9fzlOTUsicrYn6iBf+XzcuReZ6qBILghYGPWPpOmnap1dt
8UVl0Shdj+hyMbHzxR0XzX12Ya78Lxe1GFg+63XbxNwOURssd9DalJixKcyj2BW6
F6JG1aBQhdgGSBhsCDvG1zawqgZX/h4VWG55Kv752PYBrQOtUH8CS93NfeB5Q7bE
FOuyvGVd1iO40JQLoFIkZuyxNh0okGjfmT66dia7g+bC0v1SCMiE/UJ9uvHvfPYe
qLkSRjIHH7FH1lQ/AKqjl9qrpZe7lHplskQ/jynEWHcb60QRcAWPyd94OPrpLrTU
64g=
-----END CERTIFICATE-----
2.登録倉庫
docker login 172.19.2.139
Username: admin
Password: Cmcc@1ot
3.ミラーテストのアップロード
haborにgcgj倉庫を作成してからpush
docker tag gcgj/portal:latest 172.19.2.139/gcgj/portal
docker login -p admin -u Cmcc@1ot -e 172.19.2.139
docker push 172.19.2.139/gcgj/portal
三、kubernetsファイル構成
kubernetesプライマリノード172.19.2.50上の構成
vim /opt/kube-portal/portal-rc1.yaml
apiVersion: v1
kind: ReplicationController
metadata:
name: gcgj-portal
spec:
replicas: 2
selector:
app: portal
template:
metadata:
labels:
app: portal #
spec:
containers:
- image: 172.19.2.139/gcgj/portal:latest #
name: portal
resources:
limits:
cpu: "2" #pod cpu
memory: 2Gi #pod
ports:
- containerPort: 8080 #pod
volumeMounts:
- mountPath: /usr/local/tomcat/logs #
name: portal-logs
volumes:
- name: portal-logs
hostPath:
path: /opt/logs/portal #
vim /opt/kube-portal/portal-svc1.yaml
apiVersion: v1
kind: Service
metadata:
name: gcgj-portal
spec:
ports:
- name: portal-svc
port: 8080
targetPort: 8080
nodePort: 30088 #proxy
selector:
app: portal
type: NodePort #
四、jenkins配置
1.Generalにおけるパラメトリック構築プロセスの構成
String Parameter
:VERSION
:[ ]
:
2.ソース管理Git設定
Repository URL http://172.19.2.140:18080/lvqingshan/gcgj.git
3.Gitlabの設定変更による自動トリガ構築
gitlabプロジェクトに変化があるかどうかを1分で検出
*/1 * * * *
4.Execute shell設定
2つのバージョンを制御する方法で、自動トリガコンストラクションまたはバージョン番号が空の場合はタイムスタンプをバージョンとして使用し、バージョン番号を入力する場合は入力したバージョン番号を使用します.
imagesid=`docker images | grep -i gcgj | awk '{print $3}'| head -1`
project=/var/lib/jenkins/jobs/build-docker-router-portal/workspace
if [ -z "$VERSION" ];then
VERSION=`date +%Y%m%d%H%M`
fi
echo $VERSION
if docker ps -a|grep -i gcgj;then
docker rm -f gcgj
fi
if [ -z "$imagesid" ];then
echo $imagesid "is null"
else
docker rmi -f $imagesid
fi
docker build -t gcgj/portal:$VERSION $project
docker tag gcgj/portal:$VERSION 172.19.2.139/gcgj/portal:$VERSION
docker tag gcgj/portal:$VERSION 172.19.2.139/gcgj/portal:latest
docker login -u admin -p Cmcc@1ot 172.19.2.139
docker push 172.19.2.139/gcgj/portal:$VERSION
docker push 172.19.2.139/gcgj/portal:latest
5.ansible-playbook構成
ansibleホスト192.168.13.45上の配置
vim /home/app/ansible/playbooks/opstest/portal.yaml
- hosts: 172.19.2.50
remote_user: app
sudo: yes
tasks:
- name: pod
shell: kubectl delete -f /opt/kube-portal
ignore_errors: yes
- name: pod
shell: kubectl create -f /opt/kube-portal