本文從啓動、配置、擴容、伸縮、存儲等方面介紹如何使用開普勒雲平臺。前端
kplcloud是一個基於Kubernetes的輕量級PaaS平臺,經過可視化的界面對應用進行管理,下降應用容器化的對度,從而減小應用容器化的時間成本。java
Kplcloud已在宜信服務於宜人財富等多個團隊,穩定運行了近兩年,目前平臺已在生產環境跑着上百個應用,近千個容器。git
登錄能夠分爲三種,分別是LDAP登錄、郵箱密碼登錄、三方受權登錄,我們沒有註冊功能。下面對這三種登錄方式進行講解。github
LDAP與郵箱登錄大同小異,只須要簡單的配置便可。web
在app.cfg文件找到[server]的login_type參數,設置爲 ldap而且找到[ldap]塊docker
[ldap] ldap_host = 127.0.0.1 ldap_port = 389 ldap_base = DC=yourdomain,DC=corp ldap_sseSSL = false ldap_bindDN = ldap_bind_password = ldap_user_filter = (userPrincipalName=%s) ldap_group_filter = (&(objectCategory=Group)) ldap_attr = name;mail [server] ;auth_login login_type = ldap
輸入你家LDAP的相關信息便可。後端
不要設置auth_login
,應該把它註釋掉。tomcat
在app.cfg文件找到[server]的login_type參數,設置爲 email服務器
[server] ;auth_login login_type = ldap
不要設置auth_login
,應該把它註釋掉。網絡
經過Github受權登錄須要的app.cfg將[server]下的 auth_login參數設置爲github
[server]
塊下的client_id和client_secret
上面設置好以後, 就可使用github受權登錄的方式進入平臺了,默認分配的空間及權限能夠在app.cfg文件下的[server]
塊下的default_namespace和default_role_id
配置。
[server] client_id = balabalabalbabiubiubiu client_secret = balabalabalbabiubiubiu auth_login = github default_namespace = default-app default_role_id = 4C
工做臺是咱們進入以後看到的第一個頁面,主要列出如下一些信息
監控只是簡易的集羣網絡,內存、CPU及語言,詳情的監控能夠從grafana查看。
本模塊主要是對一些應用發佈的狀況進行一些統計,如應用失敗的應用的次數中斷及回滾的次數,點擊應用名稱能夠看應用詳情。
在建立應用以前,首先咱們要作的是在你的git項目上將Dockerfile文件提交上去,而且生成一個Tag或releases版本。
Dockerfile 參考
FROM openjdk:latest COPY xxxx.jar /opt/app WORKDIR /opt/app CMD ["java", "xxx.jar"]
進入建立應用頁面,填寫基本信息
^[a-z0-9]([-a-z0-9])?([a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
填寫詳細信息
kplcloud/hello
填寫完後會自動獲取項目的tags列表提交成功以後會顯示以下頁面,管理就能夠在審覈頁面進行部署。
(建立Golang/Python/NodeJs/靜態應用的步驟請參看開源文檔。)
應用服務啓動能夠在多個地方進行調整,如下介紹兩種方案,Dockerfile 和 平臺詳情頁調整
Dockerfile CMD啓動方式
看一下簡單的例子:
FROM hub.kpaas.nsini.com/app/hello:v0.0.3 CMD ["/go/bin/hello"]
啓動命令寫在CMD這個後面,若是後面有多個參數能夠以逗號隔開例如: CMD ["static-web", "-path", "app", "-port", ":8080"]
平臺詳情頁調整
打開應用詳情頁:
在詳情這一選卡上找到「命令,參數」,點右邊的編輯icon,彈出對話框進行填寫:
填定啓動的命令和參數,參數用逗號隔開。點提交服務會自動重啓動。
注意:在平臺詳情頁修改的命令會覆蓋掉Dockerfile 下的CMD命令。
日誌採集配置
在應用詳情頁中間有一個叫做「日誌採集」的模塊
點擊右邊的「添加」按鈕,在彈出的對話框中選擇日誌的路徑及正則規則
提交後服務會自動重啓動。
日誌採集
若是配置了上面採集器,那麼它會向服務所在的Pod注入一個Filebeat採集器對應用服務的業務日誌進行採集。把採集到的日誌入到kafka集羣,而後logstash進行消息處理及格式化。
處理完後入到ES集羣,最終咱們就能夠經過kibana查詢到咱們的業務日誌了。
固然kafka、logstash、es得您本身去搭建。
若您可把這幾個服務跑在Kubernetes能夠參考我給您生成的yaml 直接apply 進去就能跑。
模版配置
生成filebeat會用到兩個模版,一個是容器的模版FilebeatContainer,另外一個是ConfigMap的模版FilebeatConfigMap,您可根據本身的需求調整相應的模版文件。
構建應用的流程是經過建立應用提交一些信息進行處理
以上是構建應用的後端流程,而前端就變得比較簡單了。只須要在應用詳情頁點擊"Build"按鈕,在彈出的對話框中選擇相應用的tags版本並提交就好了,以下圖:
查詢構建日誌
點擊詳情頁的build日誌選項卡,會顯示最近的構建記錄,點擊左側相應的版本能夠查看該版本的構建狀況,也能夠對正在鬆建的應用進行中斷,以下圖:
服務模式切換比較麻煩,須要您的Kubernetes支持,目前咱們使用的是istio的方案,也就是說您須要在你的kubernetes上安裝istio的相關服務,而且在咱們的模版管理將istio所須要的幾個模版配置上。才能開啓此功能。
若是您沒有安裝Istio,可跳過此章。
依賴
在"模版管理"菜單找到Gateway、VritualService、InitContainer、IstioProxy這幾個模版,根據本身環境的狀況進行調整。
使用過Istio的同窗應該都知道,要實現Istio所提供的相關功能須要在Pods裏注入兩個容器,一個是proxy_init,另外一個是proxyv2
流程
下圖是咱們架構流量進入到咱們容器所圖:
一鍵切換
以下圖,在應用詳情頁面選擇「模式」按鈕,在彈出的對話框中選擇"Service Mesh"選項目,後點擊提交後Pods會自動重起。
你須要在app.cfg文件開起ServiceMesh功能
[server] service_mesh = true
擴容是對Pods的使用資源進行擴容,例如最大使用的CPU及內存資源。
在應用的詳情頁面,在右上角找到「擴容」按鈕,並點開。
在彈出的對話框中拖動CPU和內存,可對其設置一個基礎值及一個最大值,以下圖:
選擇好相應的值後點擊「保存」按鈕後,會重起該應用的全部POD。重啓後的POD可以使用的最大CPU及內存資源就是您剛剛設置的值。
所對應用以deployment的yaml參數:
requests: limits: cpu: 1 memory: 128Mi requests: cpu: 500m memory: 64Mi
伸縮是對該應用所啓動的pods數量進行一個控制。
一樣進入應用的詳情頁頁,在右上角找到「伸縮」按鈕並點開。
在彈出來的對話框中選擇啓動的POD數量,以下圖:
提交以後若數量大於以前的數量,則會啓動缺乏的POD數量,若小於以前的值,將會逐步減小應用的POD。
目前給的最大值是8個pod,資源可以使用的內存是16G,若您的應用超過咱們所設定的最大值。想辦法優化吧,64核128G內存都不夠用,這種級別的應用不適合用Docker。
這種級別的應用最好是拆了吧。
本平臺是經過storageclass來動態建立PV。也就是說我們依賴於storageclass,若是您的Kubernetes不支持相應的存儲試,將沒法很是方便的進行掛載。
目前暫不支持掛載多個PVC,或許之後會更新吧。
這裏演示的是用的NFS進行演示,實際使用時可根據本身的需求配置相應的provisioner,其餘配置是同樣的不須要調整,只須要在「模版管理」 調整StorageClass和PersistentVolumeClaim模版。
建立持久化存儲卷聲明
在菜單找到「配置與存儲」->"持久化存儲卷聲明"。
選擇應用的空間,並點擊「建立」按鈕
在彈出的對話框中會有幾個選項目:
^[a-z0-9]([-a-z0-9])?([a-z0-9]([-a-z0-9]*[a-z0-9])?)*$)
掛載到應用目錄
當存儲卷建立好以後就能夠在應用進行掛載了。
一樣的進入應用詳情頁面,找到「持久化存儲」選項卡,如圖:
點擊「添加」按鈕,在彈出來的對話框加輸入相關信息:
填寫好路徑及選擇好存儲卷後點擊提交,改應用的全部POD的逐步重啓動。
掛載完成以後能夠看到所掛載的相關信息:
最終生成的yaml結果:
volumes: - name: soup-hello-pvc persistentVolumeClaim: claimName: test-data containers: - volumeMounts: - name: "soup-hello-pvc" mountPath: "/soupzhang"
若是配置了郵箱,用戶提交審覈以後會給管理員發送郵件,郵件裏帶有審覈地址。
或者您也能夠在應用列表裏找到未審覈的應用進入。
提交的基礎信息
生成的kubernetes yaml
代碼庫中的Dockerfile文件
駁回
若是管理員以爲提交的有問題,能夠進行駁回,駁回填定理由會發送至提交者的郵箱。
若沒有啥問題,能夠點擊「開始部署」按鈕。
開始部署以後應用會自動在jenkins上建立一個job,並自動進行build。
在咱們項目維護過程當中,可能會遇到須要修改服務器時間,平臺的工具集功能就能夠知足您的需求了~
在這須要注意,此功能依賴faketime,請在宿主機編譯faketime擴展。路徑在 /usr/local/lib/libfaketime.so.1
調整服務時間(菜單欄:工具集->調整時間)
在項目列表中篩選您要修改的項目,點擊 修改時間,確認以後會重啓服務生效。
做者:宜人金科-財富技術部-創新團隊
來源:宜信技術學院