| ±à¼ÍƼö: |
| ±¾ÎÄÀ´×ÔÓÚµç×ÓС°Ù¿Æ,±¾ÎÄÒÔKubernetesΪ»ù´¡£¬Îª»ùÓÚjavaÓïÑÔÑз¢ÍŶÓÌṩһÌ×ÍêÕûµÄdevops½â¾ö·½°¸£¬Ï£Íû¶ÔÄúµÄѧϰÓÐËù°ïÖú¡£ |
|
1¡¢»ùÓÚkubernetes devopsµÄÕûÌå·½°¸
ÔÚ´Ë·½°¸ÖУ¬¿ª·¢ÈËÔ±»ùÓÚeclipse¼¯³É¿ª·¢»·¾³½øÐдúÂ룻¿ª·¢ÈËÔ±Ëù¿ª·¢µÄ´úÂë½»ÓÉÓÉgitlab½øÐÐÍйܡ¢°æ±¾¹ÜÀíºÍ·ÖÖ§¹ÜÀí£»´úÂëµÄÒÀÀµ¸üк͹¹½¨¹¤×÷ÓÉMaven½øÐд¦Àí£»ÎªÁËÌáÉý¹¤×÷ЧÂʺʹúÂëÖÊÁ¿£¬ÔÚdevopsÖÐÒýÈëSonarQube½øÐдúÂë¼ì²é£»¶ÔÓÚ´ò°ü¹¹½¨ºó´úÂ룬½»ÓÉdocker½øÐоµÏñ¹¹½¨£¬²¢ÔÚ˽ÓоµÏñ²Ö¿âÖжԾµÏñ½øÐйÜÀí£»×îºó£¬devops»á½«×Ô¶¯´Ó˽ÓоµÏñ²Ö¿â´ÓÀÈ¡¾µÏñ£¬²¢ÔÚRancherÖнøÐв¿Êð¡£

»ùÓÚ´Ëdevops½â¾ö·½°¸µÄÕûÌ幤×÷¹ý³ÌÈçÏÂËùʾ£º
1£©¿ª·¢ÈËÔ±»ùÓÚeclipse¼¯³É¿ª·¢»·¾³¾µÏñ´úÂ뿪·¢µÄ£¬½«´úÂëµ½gitlabÖнøÐÐÍйܣ»
2£©jenkins´ÓgitlabÀÈ¡´úÂ룻
3£©jenkinsµ÷ÓÃMaven¶Ô´úÂë½øÐдò°ü¹¹½¨£»
4£©jenkinsµ÷ÓÃdocker¹¹½¨¾µÏñ£»
5£©jenkins½«¹¹½¨ºÃµÄ¾µÏñÉÏ´«ÖÁ»ùÓÚNexusµÄ˽ÓоµÏñ²Ö¿â£»
6£©jenkinsÀÈ¡¾µÏñ£¬²¢²¿Êð¾µÏñÖÁRancherÖС£
2¡¢×é¼þ°²×°²¿Êð
´Ë²¿·ÖÃèÊöÐèҪΪdevops²¿ÊðµÄ×é¼þ£¬¸ù¾ÝÕûÌå·½°¸£¬devopsÐèҪʹÓÃgitlab¡¢jenkins¡¢nexus¡¢maven¡¢dockerºÍkubernetesÕâЩ×é¼þºÍϵͳ¡£ÆäÖУ¬gitlab¡¢jenkins¡¢nexus¶¼ÔÚkubernetesÖа²×°²¿Êð£¬ÔÚjenkinsÖаüº¬ÁËmaven£»dockerÖ±½ÓÔÚÎïÀí»úÌṩ£¬¶ÔÓÚdockerµÄ²¿Êð²»Ôڴ˲¿·Ö½øÐвûÊö¡£
2.1 ´úÂëÍйܹ¤¾ß-Gitlab
ÔÚ±¾Îĵķ½°¸ÖУ¬´úÂëµÄÍйܻùÓÚGitlab¡£ÏÂÃæÊÇÔÚKubernetesÖв¿ÊðgitlabµÄYAMLÅäÖÃÎļþ£¬ÔÚ´ËÎļþÖж¨ÒåÁËgitlab²¿ÊðºÍ·þÎñ¡£gitlab²¿ÊðʹÓõľµÏñΪgitlab/gitlab-ce:latest£¬²¢±©Â¶ÁË443¡¢80ºÍ22ÕâÈý¸ö¶Ë¿Ú£¬²¢Í¨¹ýNFS¶ÔÅäÖÃÎļþ¡¢ÈÕÖ¾ºÍÊý¾Ý½øÐг־û¯¡£ÔÚ·þÎñÖУ¬¶Ë¿ÚµÄÀàÐÍΪNodePort£¬¼´ÔÊÐí¼¯ÈºÍâµÄÓû§¿ÉÒÔͨ¹ýÓ³ÉäÔÚÖ÷»ú½ÚµãÉϵĶ˿ڶÔgitlab½øÐзÃÎÊ¡£
apiVersion: v1
kind: Service
metadata:
name: gitlab
spec:
type: NodePort
ports:
# PortÉϵÄÓ³Éä¶Ë¿Ú
- port: 443
targetPort: 443
name: gitlab443
- port: 80
targetPort: 80
name: gitlab80
- port: 22
targetPort: 22
name: gitlab22
selector:
app: gitlab
---
# ------------------------¶¨ÒåGitlabµÄ²¿Êð -----------------------
apiVersion: apps/v1 # for versions before 1.9.0
use apps/v1beta2
kind: Deployment
metadata:
name: gitlab
spec:
selector:
matchLabels:
app: gitlab
revisionHistoryLimit: 2
template:
metadata:
labels:
app: gitlab
spec:
containers:
# Ó¦ÓõľµÏñ
- image: gitlab/gitlab-ce
name: gitlab
imagePullPolicy: IfNotPresent
# Ó¦ÓõÄÄÚ²¿¶Ë¿Ú
ports:
- containerPort: 443
name: gitlab443
- containerPort: 80
name: gitlab80
- containerPort: 22
name: gitlab22
volumeMounts:
# gitlab³Ö¾Ã»¯
- name: gitlab-persistent-config
mountPath: /etc/gitlab
- name: gitlab-persistent-logs
mountPath: /var/log/gitlab
- name: gitlab-persistent-data
mountPath: /var/opt/gitlab
imagePullSecrets:
- name: devops-repo
volumes:
# ʹÓÃnfs»¥ÁªÍø´æ´¢
- name: gitlab-persistent-config
nfs:
server: 192.168.8.150
path: /k8s-nfs/gitlab/config
- name: gitlab-persistent-logs
nfs:
server: 192.168.8.150
path: /k8s-nfs/gitlab/logs
- name: gitlab-persistent-data
nfs:
server: 192.168.8.150
path: /k8s-nfs/gitlab/data |
ͨ¹ýkubectlÃüÁ¾ß£¬Ö´ÐÐÈçϵÄÃüÁÔÚkubernetes¼¯ÈºÖв¿Êðgitlab£º
| $ kubectl create
-f {path}/gitlab.yaml |
2.2 ¾µÏñ²Ö¿â-Nexus
ÔÚ±¾ÎĵÄdevops·½°¸ÖУ¬²ÉÓÃNexus×÷Ϊdocker˽ÓоµÏñ²Ö¿âºÍmavenµÄÔ¶³Ì²Ö¿â¡£ÏÂÃæÊÇÔÚKubernetesÖв¿ÊðNexusµÄYAMLÅäÖÃÎļþ£¬ÔÚ´ËÎļþÖж¨ÒåÁËNexus²¿ÊðºÍ·þÎñ¡£Nexus²¿ÊðʹÓõľµÏñΪsonatype/nexus3:latest£¬²¢±©Â¶ÁË8081¡¢5001ÕâÁ½¸ö¶Ë¿Ú£¬²¢Í¨¹ýNFS¶ÔÅäÖÃÎļþ¡¢ÈÕÖ¾ºÍÊý¾Ý½øÐг־û¯¡£ÔÚ·þÎñÖУ¬¶Ë¿ÚµÄÀàÐÍΪNodePort£¬¼´ÔÊÐí¼¯ÈºÍâµÄÓû§¿ÉÒÔͨ¹ýÓ³ÉäÔÚÖ÷»ú½ÚµãÉϵĶ˿ڶÔnexus½øÐзÃÎÊ¡£ÆäÖУ¬5001×÷Ϊdocker˽ÓоµÏñ²Ö¿âµÄ¶Ë¿Ú¡£
#------------------------¶¨ÒåNexus´úÀí·þÎñ-------------------------
apiVersion: v1
kind: Service
metadata:
name: nexus3
spec:
type: NodePort
ports:
# PortÉϵÄÓ³Éä¶Ë¿Ú
- port: 8081
targetPort: 8081
name: nexus8081
- port: 5001
targetPort: 5001
name: nexus5001
selector:
app: nexus3
---
#-----------------------¶¨ÒåNexus²¿Êð-------------------------
apiVersion: apps/v1beta2
kind: Deployment
metadata:
name: nexus3
labels:
app: nexus3
spec:
replicas: 1 #¸±±¾ÊýΪ3
selector: #Ñ¡ÔñÆ÷
matchLabels:
app: nexus3 #²¿Êðͨ¹ýapp£ºnginx±êǩѡÔñÏà¹Ø×ÊÔ´
template: #PodµÄÄ£°å¹æ·¶
metadata:
labels:
app: nexus3 #PodµÄ±êÇ©
spec:
imagePullSecrets:
- name: devops-repo
containers: #ÈÝÆ÷
- name: nexus3
image: sonatype/nexus3
imagePullPolicy: IfNotPresent
ports: #¶Ë¿Ú
- containerPort: 8081
name: nexus8081
- containerPort: 5001
name: nexus5001
volumeMounts:
- name: nexus-persistent-storage
mountPath: /nexus-data
volumes:
# ËÞÖ÷»úÉϵÄĿ¼
- name: nexus-persistent-storage
nfs:
server: 192.168.8.150
path: /k8s-nfs/nexus |
ͨ¹ýkubectlÃüÁ¾ß£¬Ö´ÐÐÈçϵÄÃüÁÔÚkubernetes¼¯ÈºÖв¿Êðnexus£º
| $ kubectl create
-f {path}/nexus.yaml |
2.3 Á÷Ë®Ïß¹¤¾ß-Jenkins
2.3.1 jenkins°²×°²¿Êð
ÔÚ±¾ÎĵÄdevops·½°¸ÖУ¬²ÉÓÃjenkins×÷ΪÁ÷Ë®Ïß¹¤¾ß¡£ÏÂÃæÊÇÔÚKubernetesÖв¿ÊðjenkinsµÄYAMLÅäÖÃÎļþ£¬ÔÚ´ËÎļþÖж¨ÒåÁËjenkins²¿ÊðºÍ·þÎñ¡£jenkins²¿ÊðʹÓõľµÏñΪlw96/java8-jenkins-maven-git-vim:latest£¬²¢±©Â¶ÁË8080Õâ¸ö¶Ë¿Ú£¬²¢Í¨¹ýNFS¶ÔÅäÖÃÎļþºÍÊý¾Ý½øÐг־û¯¡£ÔÚ·þÎñÖУ¬¶Ë¿ÚµÄÀàÐÍΪNodePort£¬¼´ÔÊÐí¼¯ÈºÍâµÄÓû§¿ÉÒÔͨ¹ýÓ³ÉäÔÚÖ÷»ú½ÚµãÉϵĶ˿ڶÔjenkins½øÐзÃÎÊ¡£ÁíÍ⣬Ôڴ˾µÏñÖÐÒ²ÌṩmavenºÍjava¡£
apiVersion: v1
kind: Service
metadata:
name: jenkins-devops
spec:
type: NodePort
ports:
# PortÉϵÄÓ³Éä¶Ë¿Ú
- port: 8080
targetPort: 8080
name: pipeline8080
selector:
app: jenkins-devops
---
# ------------------------¶¨ÒåmysqlµÄ²¿Êð -----------------------
apiVersion: apps/v1 # for versions before 1.9.0
use apps/v1beta2
kind: Deployment
metadata:
name: jenkins-devops
spec:
selector:
matchLabels:
app: jenkins-devops
revisionHistoryLimit: 2
template:
metadata:
labels:
app: jenkins-devops
spec:
containers:
# Ó¦ÓõľµÏñ
- image: 10.0.32.148:1008/lw96/java8-jenkins-maven-git-vim
name: jenkins-devops
imagePullPolicy: IfNotPresent
# Ó¦ÓõÄÄÚ²¿¶Ë¿Ú
ports:
- containerPort: 8080
name: pipeline8080
volumeMounts:
# jenkins-devops³Ö¾Ã»¯
- name: pipeline-persistent
mountPath: /etc/localtime
# jenkins-devops³Ö¾Ã»¯
- name: pipeline-persistent
mountPath: /jenkins
# jenkins-devops³Ö¾Ã»¯
- name: pipeline-persistent-repo
mountPath: /root/.m2/repository
- name: pipeline-persistent-mnt
mountPath: /mnt
volumes:
# ʹÓÃnfs»¥ÁªÍø´æ´¢
- name: pipeline-persistent
nfs:
server: 192.168.8.150
path: /k8s-nfs/jenkins-devops
- name: pipeline-persistent-mnt
nfs:
server: 192.168.8.150
path: /k8s-nfs/jenkins-devops/mnt
- name: pipeline-persistent-repo
nfs:
server: 192.168.8.150
path: /k8s-nfs/jenkins-devops/repo
|
ͨ¹ýkubectlÃüÁ¾ß£¬Ö´ÐÐÈçϵÄÃüÁÔÚkubernetes¼¯ÈºÖв¿Êðjenkins£º
| $ kubectl create
-f {path}/jenkins-devops.yaml |
×¢Ò⣬ºóÐø½«Ö´ÐÐÏÂÃæµÄ²Ù×÷£º
½«Kubernetes¼¯ÈºµÄkubeconfigÎļþ¿½±´µ½192.168.8.150Ö÷»úµÄ/k8s-nfs/jenkins-devops/mntĿ¼Ï£»
½«mavenµÄsettings.xmlÎļþ¿½±´ÖÁµ½192.168.8.150Ö÷»úµÄ/k8s-nfs/jenkins-devops/repoĿ¼Ï£»
½«mavenµÄÒÀÀµ²å¼þ°ü¿½±´ÖÁµ½192.168.8.150Ö÷»úµÄ/k8s-nfs/jenkins-devops/repoĿ¼Ï¡£
3¡¢ devopsƽ̨´î½¨
3.1 nexusÉèÖÃ
nexusÔÚdevopsÖге£Á½¸ö¹¦ÄÜ£¬×÷ΪmavenµÄÔ¶³Ì²Ö¿âºÍ×÷ΪdockerµÄ˽ÓоµÏñ²Ö¿â¡£
ÔÚ±¾ÎÄÖУ¬Ê¹ÓÃnexusĬÈϰ²×°µÄmaven-snapshots¡¢maven-releasesºÍmaven-publicÕâÈý¸ö²Ö¿â¡£

²¢Îªdocker´´½¨Ò»¸öÃûΪregistryµÄ˽ÓоµÏñ²Ö¿â£¬Æä¶Ë¿ÚΪ5001£º

3.2 mavenÉèÖÃ
maven¸ºÔð¹ÜÀí´úÂëµÄÒÀÀµ¹ØÏµºÍ¹¹½¨¡£mavenͨ¹ýsettings.xmlÎļþÉèÖÃÔËÐл·¾³£¬°üÀ¨ÓëÔ¶³Ì²Ö¿âµÄÁ¬½Ó¡£±¾ÎÄÖеÄsettings.xmlÈçÏÂËùʾ£¬http://nexus3:8081
ÖеÄnexus3ÊÇÔÚkubernetesÖеķþÎñÃû³Æ¡£½« settings.xml ¿½±´ÖÁ 192.168.8.150»úÆ÷µÄ
/k8s-nfs/jenkins-devops/repo Ŀ¼Ï¡£
<?xml version="1.0"
encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS
/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS
/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
<pluginGroups>
</pluginGroups>
<proxies>
</proxies>
<servers>
<server>
<id>maven-release</id>
<username>admin</username>
<password>admin123</password>
</server>
<server>
<id>maven-snapshots</id>
<username>admin</username>
<password>admin123</password>
</server>
</servers>
<mirrors>
<mirror>
<id>nexus</id>
<url>http://nexus3:8081/repository/maven-public/
</url>
<mirrorOf>*</mirrorOf>
</mirror>
</mirrors>
<profiles>
<profile>
<id>maven-release</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<repositories>
<repository>
<id>maven-release</id>
<name>Repository for Release</name>
<url>http://nexus3:8081/repository/maven-releases/</url>
<releases>
<enabled>false</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
</profile>
<profile>
<id>maven-snapshots</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<repositories>
<repository>
<id>maven-release</id>
<name>Repository for Release</name>
<url>http://nexus3:8081/repository/maven-snapshots/</url>
<releases>
<enabled>false</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
</profile>
</profiles>
</settings> |
3.3 dockerÉèÖÃ
ΪÁËÄܹ»Ö§³Ö½«Ô¶³ÌÌá½»µÄ´úÂë¹¹½¨³É¾µÏñ£¬ÒÔ¼°½«¹¹½¨ºÃµÄ¾µÏñÉÏ´«ÖÁ¾µÏñ²Ö¿âÐèÒªÔÚ/etc/docker/daemon.jsonµÄÎļþÖÐÌí¼ÓÏÂÃæµÄÄÚÈÝ¡£ÆäÖУ¬10.0.32.163:32476Ϊ¾µÏñ²Ö¿âµÄµØÖ·ºÍ¶Ë¿Ú£¬tcp://0.0.0.0:4243Ϊ¶ÔÍⱩ¶µÄµØÖ·ºÍ¶Ë¿Ú¡£
{
"hosts":["tcp://0.0.0.0:4243","unix:///var/run/docker.sock"],
"insecure-registries":["10.0.32.163:32476"]
} |
²¢Í¨¹ýÖ´ÐÐÏÂÃæµÄÃüÁîÖØÆôdocker·þÎñ£º
$ systemctl daemon-reload
$ systemctl restart docker |
3.4 jenkinsÉèÖÃ
3.4.1 °²×°²å¼þ
jenkins×÷Ϊdevopsƽ̨µÄÁ÷³ÌÏß¹¤¾ß£¬ÐèÒª´ÓgitlabÖлñÈ¡´úÂ룬²¢Ìá½»¸ømaven½øÐй¹½¨£»ÔÚ´úÂë¹¹½¨³É¹¦ºó£¬µ÷ÓÃdocker¹¹½¨¾µÏñ£¬²¢½«ÉÏ´«ÖÁ»ùÓÚNexusµÄ˽ÓоµÏñ²Ö¿â£»×îÖÕ£¬ÔÚKubernetesÖв¿ÊðºÍÔËÐоµÏñ¡£ÎªÁËʵÏÖÉÏÊöÄÜÁ¦£¬ÐèÒªÔÚjenkinsÖа²×°Èçϲå¼þ£º
git plugin£ºÓëgitlab¼¯³ÉµÄ²å¼þ£¬ÓÃÓÚ»ñÈ¡´úÂ룻
maven plugin£ºÓëmaven¼¯³ÉµÄ²å¼þ£¬ÓÃÓÚ¹¹½¨´úÂ룻
CloudBees Docker Build and Publish plugin£ºÓëdocker¼¯³ÉµÄ²å¼þ£¬ÓÃÓÚ¹¹½¨docker¾µÏñ£¬²¢ÉÏ´«ÖÁ¾µÏñ²Ö¿â£»
Kubernetes Continuous Deploy Plugin£ºÓëkubernetes¼¯³ÉµÄ²å¼þ£¬ÓÃÓÚ½«¾µÏñ²¿Êðµ½kubernetes»·¾³¡£
3.4.2 mavenÉèÖÃ
ÔÚjenkinsÖеġ°È«¾Ö¹¤¾ßÅäÖá±Ò³Ã棬ÉèÖÃmavenµÄ°²×°ÐÅÏ¢£¬name¿ÉÒÔ°´ÕÕ×Ô¼ºµÄϲºÃÌîд£¬MAVEN_HOMEΪmavenµÄ°²×°µØÖ·£¬´Ë´¦Îª/opt/maven¡£

4¡¢devops³ÖÐø¼¯³ÉʾÀý
1£©°²×°git¿Í»§¶ËºÍ´´½¨ÃÜÔ¿
ÔÚ¹¤×÷¼ÆËãÉϰ²×°git¿Í»§¶Ë£¬²¢Í¨¹ýÏÂÃæµÄÃüÁî´´½¨sshÃÜÔ¿£º
Ö´ÐÐÉÏÊöÃüÁîºó£¬»áÔÚ±¾µØµÄ¡«/.sshĿ¼´´½¨id_rsa.pub(¹«Ô¿)ºÍid_rsa(˽Կ)¡£
2£©ÔÚgitlab´´½¨omsÏîÄ¿
½øÈëgitlab£¬²¢´´½¨Ò»¸öÃû³ÆÎªomsµÄÏîÄ¿¡£

ÔÚgitlabÖÐÌí¼ÓËù´´½¨µÄ¹«Ô¿£º

3£©ÔÚeclipseÖнøÐдúÂ뿪·¢
ÔÚeclipseÖд´½¨ÀàÐÍΪmavenµÄomsÏîÄ¿£¬²¢½øÐдúÂ뿪·¢¡£ÔÚÍê³É´úÂ뿪·¢ºó£¬½«´úÂëÉÏ´«ÖÁgitlabÖнøÐдúÂëÍйܡ£

4£©ÔÚjenkinsÖд´½¨omsÏîÄ¿
½øÈëjenkins£¬´´½¨Ò»¸öÃû³ÆÎªomsµÄmavenÏîÄ¿¡£

5£©ÔÚjenkinsÖÐÉèÖûñÈ¡´úÂëÐÅÏ¢
ÔÚjenkinsÖУ¬½øÈëomsµÄÅäÖÃÒ³Ãæ£¬ÔÚÔ´´úÂë¹ÜÀí´¦ÉèÖûñȡԴ´úÂëµÄÏà¹ØÐÅÏ¢¡£
Repository URL£ºÏîÄ¿ÔÚgitlabÖеĵØÖ·£»
Credentials£º·ÃÎÊgitlabµÄÈÏÖ¤·½Ê½£»
Branch Specifier£º´úÂëµÄ·ÖÖ§¡£

´Ë´¦·ÃÎÊgitlabµÄÈÏÖ¤·½Ê½Îª¡°SSH Username with private key¡±£¬Private
KeyµÄÖµÀ´×ÔÓÚ¡«/.sshĿ¼ÏÂid_rsa(˽Կ)µÄÄÚÈÝ¡£

6£©ÔÚjenkinsÖÐÉèÖù¹½¨ºÍÉÏ´«¾µÏñÐÅÏ¢
ÔÚomsÏîÄ¿µÄÅäÖõġ°Docker Build and Publish¡±²¿·Ö£¬ÌîдÈçϵÄÐÅÏ¢£»
Repository Name£º¾µÏñµÄÃû³Æ£»
Tag£º¾µÏñµÄ°æ±¾£»
Docker Host URI£ºdocker·þÎñµÄµØÖ·ºÍ¶Ë¿Ú£»
Docker registry URL£ºdocker¾µÏñ²Ö¿âµÄµØÖ·£»
Registry credentials£º¾µÏñ²Ö¿âµÄÈÏÖ¤·½Ê½¡£

7£©ÔÚjenkinsÖÐÉèÖò¿ÊðÈÝÆ÷ÐÅÏ¢
ÔÚomsÏîÄ¿µÄÅäÖõġ°Deploy to Kubernetes¡±²¿·Ö£¬ÌîдÈçϵÄÐÅÏ¢£»
Kubernetes Cluster Credentials£ºKubernetes¼¯ÈºµÄÈÏÖ¤·½Ê½£»
Path£ºkubeconfigÎļþµÄËùÔÚµØÖ·£»
Config Files£º¹¹½¨YAMLÅäÖÃÎļþ¡£

8£©ÔÚjenkinsÖÐÖ´ÐÐoms¹¹½¨
ÔÚomsÏîÄ¿´´½¨ºÍÉèÖÃÍê³Éºó£¬¿ÉÒÔ¶ÔÏîÄ¿½øÐй¹½¨²Ù×÷¡£Í¨¹ýÒ»¼ü²Ù×÷£¬jenkins½«»áÍê³É´Ó¹¹½¨¡¢´ò°ü³É¾µÏñºÍ²¿ÊðµÄËùÓй¤×÷ÄÚÈÝ£º
´ÓgitlabÖлñÈ¡omsµÄ´úÂ룻
Ìá½»¸ømaven½øÐй¹½¨£»
µ÷ÓÃdocker¹¹½¨¾µÏñ£»
ÉÏ´«¾µÏñÖÁNexusµÄ˽ÓоµÏñ²Ö¿â£»
²¿Êð¾µÏñµ½kubernetes¼¯Èº¡£

9£©ÔÚkubernetesÖв鿴²¿ÊðÇé¿ö
½øÈëkubernetes(±¾ÎÄʹÓõÄΪRancherϵͳ)½çÃæ£¬ÔÚdefaultÃüÃû¿Õ¼äÏ£¬¿ÉÒÔ¿´µ½ÒѲ¿ÊðµÄoms¡£

|