-
Kubernetes:一個開源的,用於管理雲平臺中多個主機上的容器化的應用,Kubernetes的標的是讓部署容器化的應用簡單並且高效,Kubernetes提供了應用部署,規劃,更新,維護的一種機制。
-
Nginx:一款輕量級的Web 伺服器/反向代理伺服器及電子郵件(IMAP/POP3)代理伺服器。
-
Harbor:Harbor是一個用於儲存和分發Docker映象的企業級Registry伺服器,透過新增一些企業必需的功能特性,例如安全、標識和管理等,擴充套件了開源Docker Distribution。
-
Jenkins:一個開源軟體專案,是基於Java開發的一種持續整合工具,用於監控持續重覆的工作,旨在提供一個開放易用的軟體平臺,使軟體的持續整合變成可能。
-
Filebeats:是一個日誌檔案託運工具,在你的伺服器上安裝客戶端後,Filebeat會監控日誌目錄或者指定的日誌檔案,追蹤讀取這些檔案(追蹤檔案的變化,不停的讀),並且轉發這些資訊到Elasticsearch或者Logstarsh中存放。
-
Elasticsearch:是一個基於Lucene構建的開源、分散式、RESTful介面的全文搜尋引擎。
-
Kibana是一個開源的分析和視覺化平臺,設計用於和Elasticsearch一起工作來搜尋,檢視,並和儲存在Elasticsearch索引中的資料進行互動。
-
GitLab自託管的Git專案倉庫,可透過Web介面進行訪問公開的或者私人專案(這裡的GitLab並不涉及到開發的CI方案,主要為運維的CD方案)。
-
Weave Scope Docker和Kubernetes視覺化監控工具。Scope提供了至上而下的叢集基礎設施和應用的完整檢視,使用者可以輕鬆對分散式的容器化應用進行實時監控和問題診斷。
-
Jenkins構建時,需要傳入程式版本號,構建型別(釋出還是刪除),程式型別(測試還是正式)。
-
CD的全過程由位於Jenkins上的指令碼執行
-
開發部將對應版本的ROOT.war傳入Jenkins指定目錄
-
下拉配置(包含config,hosts,dockerfile,k8syaml等等)
-
由Dockerfile生成Docker容器,並將root.war,hosts與配置檔案內建入容器中
-
將Docker容器打包並推送入Registry
-
透過kubectl透過k8syaml更新/生成新的服務
-
/data
└── k8s-cd-config
└── test.gyyx.cn
├── develop
│ └── v1.2.0-92-3fdd00f.yaml
├─develop.yaml -> /data/k8s-cd-config/test.gyyx.cn/develop/v1.2.0-92-3fdd00f.yaml
├── master
│ └── v1.2.0-91-746284e.yaml
└──master.yaml->/data/k8s-cd-config/test.gyyx.cn/master/v1.2.0-91-746284e.yaml
/data
├── filebeat
├── dockerlibs
└── nodelogs
├── develop
│ ├── accesslogs
│ │ └── test.gyyx.cn
│ │ └── test-gyyx-cn-76d9d8d5b5-hdnql
│ │ └── localhost_access_log.2018-12-24.txt
│ ├── devlogs
│ │ └── test.gyyx.cn
│ │ └── test-gyyx-cn-76d9d8d5b5-hdnql
│ │ └── interface.datareport.wyx.cn
│ │ ├── error.log
│ │ ├── info.log
│ │ └── trace.log
│ └── tomcatlogs
│ └── test.gyyx.cn
│ └── test-gyyx-cn-76d9d8d5b5-hdnql
│ ├── catalina.2018-12-24.log
│ ├── host-manager.2018-12-24.log
│ ├── localhost.2018-12-24.log
│ └── manager.2018-12-24.log
└── master
├── accesslogs
│ └── test.gyyx.cn
│ └── test-gyyx-cn-895cc5994-sx7gk
│ └── localhost_access_log.2018-12-24.txt
├── devlogs
│ └── test.gyyx.cn
│ └── test-gyyx-cn-895cc5994-sx7gk
└── tomcatlogs
└── test.gyyx.cn
└── test-gyyx-cn-895cc5994-sx7gk
├── catalina.2018-12-24.log
├── host-manager.2018-12-24.log
├── localhost.2018-12-24.log
└── manager.2018-12-24.log
.
├── dockerlibs
├── thinbackups
└── gitlab-files
│ └── gyyx.cn
│ └── test.gyyx.cn
└── jks-cd-config
└── test.gyyx.cn
└── v1.2.0
├── develop
│ └── 101_138a37a
│ ├── …
│ └── v1.2.0-101-138a37a.yaml
├── master
│ └── 102_4f228a7
│ ├── …
│ └── v1.2.0-102-4f228a7.yaml
└── ROOT.war
curl -X POST http://jenkinsapi.com/job/域名/build \
–user admin:11b80a61d260aa41eb4a43ef0115bcbb26 \
–data-urlencode json=’{“parameter”: [{“name”:”VERSION”, “value”:”v1.2.0”}, {“name”:”TYPE”, “value”:”apply”}, {“name”:”BRANCH”, “value”:”develop”}]}’
├── catalina.sh #tomcat配置檔案
├── config #程式配置檔案,此檔案夾會替換掉容器內的/data/conf
│ └── hello.conf
├── deployment.yaml #k8s deploymen配置
├── dockerfile #docker映象生成檔案
├── hosts #docker映象的hosts,此檔案將合併到deployment.yaml
├── service.yaml #k8s service配置
└── tomcat #tomcat配置檔案
├── Catalina
│ └── localhost
├── catalina.policy
├── catalina.properties
├── context.xml
├── logging.properties
├── server.xml
├── tomcat-users.xml
└── web.xml
-
/data/nodelogs//accesslogs///
-
/data/nodelogs//devlogs///
-
/data/nodelogs//tomcatlogs///
processors:
- dissect:
tokenizer: "%{?key1}/%{?key2}/%{?key3}/%{wtype}/%{ltype}/%{domain}/%{?key7}/%{?key8}"
field: "source"
target_prefix: "gy"