安裝 KubeSphere DevOps 系統

1.  安裝KubeSphere

安裝了一夜,終於看到了期待已久的畫面

第一步、硬體配置(PS:VirtualBox虛擬機):

作業系統:Ubuntu 18.04 

CPU:4核

記憶體:8G

磁碟:60G 

第二步、下載安裝包

curl -L https://kubesphere.io/download/stable/v2.1.1 > installer.tar.gz \
&& tar -zxf installer.tar.gz && cd kubesphere-all-v2.1.1/scripts

第三步、修改conf/common.yaml

主要是配置鏡像加速,以及啟用一些插件

docker_registry_mirrors:
  - https://xxx.mirror.aliyuncs.com
  - https://docker.mirrors.ustc.edu.cn
  - https://registry.docker-cn.com
  - https://mirror.aliyuncs.com

我的改動如下:

最後,配置防火牆需要開放的埠

我這裡直接把防火牆關了

~/kubesphere-all-v2.1.1/scripts/install.sh

順利的話,幾個小時就成功了,嘿嘿~

如果不順利的話,請把文檔反覆仔細閱讀三遍

//kubesphere.io/docs/zh-CN/installation/intro/

//kubesphere.io/docs/zh-CN/installation/port-firewall/

//kubesphere.io/docs/zh-CN/installation/pluggable-components/

//kubesphere.io/docs/zh-CN/installation/install-devops/

//kubesphere.io/docs/zh-CN/installation/all-in-one/

//kubesphere.io/docs/zh-CN/installation/verify-components/

//kubesphere.io/docs/zh-CN/installation/install-grafana/

。。。。。。

當我背著電腦到公司以後,我突然意識到一個問題,那就是ip變了

於是我嘗試重啟了一些機器,然後重新執行./install.sh

總是失敗,報什麼「etcd cluster is unavailable or misconfigured; error #1: dial tcp 127.0.0.1:4001: getsockopt: connection refused」

Error:  client: etcd cluster is unavailable or misconfigured; error #0: dial tcp 10.0.28.43:2379: getsockopt: connection refused

error #0: dial tcp 10.0.28.43:2379: getsockopt: connection refused

網上各種查,沒找到解決方法

後來,無意中,我發現先uninstall.sh一下,再install.sh一下就好了

~/kubesphere-all-v2.1.1/scripts/uninstall.sh
~/kubesphere-all-v2.1.1/scripts/install.sh

我想,如果再不行的話,就刪除虛擬機,重裝系統,然後重新安裝KubeSphere

啊哈,終於又安裝成功了

訪問Grafana

//kubesphere.io/docs/zh-CN/installation/install-grafana/ 

默認帳號密碼是admin/admin,登錄後密碼改為admin123 

2.  從入門到放棄

2.1.  多租戶管理

目前,平台的資源一共有三個層級,包括 集群 (Cluster)企業空間 (Workspace)項目 (Project)DevOps Project (DevOps 工程),層級關係如下圖所示,即一個集群中可以創建多個企業空間,而每個企業空間,可以創建多個項目和 DevOps工程,而集群、企業空間、項目和 DevOps工程中,默認有多個不同的內置角色。

內置了三個角色:

集群管理員

操作步驟:

(1)創建users-manager角色,用於管理賬戶和角色;

(2)創建user-manager帳號,角色選擇users-manager;

(3)用user-manager登錄,創建ws-manager、ws-admin、project-admin、project-regular四個帳號;

企業空間管理員

企業空間 (workspace) 是 KubeSphere 實現多租戶模式的基礎,是用戶管理項目、DevOps 工程和企業成員的基本單位。 

操作步驟:

(1)用ws-manager帳號登錄,創建名為demo-workspace的企業空間,並指定ws-admin用戶為管理員;

(2)用ws-admin帳號登錄,邀請project-admin和project-regular進入企業空間,且分別授予workspace-regular和workspace-viewer的角色;

項目和 DevOps 工程管理員 

創建工作負載、服務和 CI/CD 流水線等資源之前,需要預先創建項目和 DevOps 工程。 

操作步驟:

(1)用project-admin帳號登錄 KubeSphere,默認進入 demo-workspace 企業空間下,創建資源型項目demo-project;

(2)邀請project-regular用戶進入該企業空間下的項目demo-project,角色選擇operator;

設置外網訪問

在創建應用路由之前,需要先啟用外網訪問入口,即網關。這一步是創建對應的應用路由控制器,負責接收項目外部進入的流量,並將請求轉發到對應的後端服務。

默認 NodePort 即可

2.2.  應用路由

KubeSphere 在項目中為用戶項目內置了一個全局的負載均衡器,即應用路由控制器 (Ingress Controller),為了代理不同後端服務 (Service) 而設置的負載均衡服務,用戶訪問 URL 時,應用路由控制器可以把請求轉發給不同的後端服務。

Kubernetes Ingress 官方提供了這樣一個例子:對於 //cafe.example.com,如果訪問 //cafe.example.com/coffee則返回 「咖啡點餐系統」,如果訪問 //cafe.example.com/tea,則返回 「茶水點餐系統」。這兩個系統分別由後端的 coffee 和 tea 這兩個部署 (Deployment) 來提供服務。

分別創建tea和coffee兩個服務

創建TLS證書秘鑰

創建應用路由

由於沒有DNS伺服器,因此還是選擇自動生成的域名吧,刪除後重新配置一個

2.3.  創建簡單任務

2.4.  配置中心

//kubesphere.io/docs/zh-CN/configuration/secrets/

//kubesphere.io/docs/zh-CN/configuration/image-registry/

密鑰 (Secret) 解決了密碼、token、密鑰等敏感數據的配置問題,配置密鑰後不需要把這些敏感數據暴露到鏡像或者工作負載 (Pod) 的 Spec 中。密鑰可以在創建工作負載時以存儲卷或者環境變數的方式使用。

為了演示,再建一個項目s2i-test

 

2.5.  Source-to-image

Source-to-image (S2I) 是一個允許用戶直接輸入源程式碼然後打包成可運行程式到 Docker 鏡像的工具,在用戶不需要了解 Dockerfile 的情況下方便構建鏡像。它是通過將源程式碼放入一個負責編譯源程式碼的 Builder image 中,自動將編譯後的程式碼打包成 Docker 鏡像。在 KubeSphere 中支援 S2I 構建鏡像,也支援以創建服務的形式,一鍵將源程式碼生成鏡像推送到倉庫,並創建其部署 (Deployment) 和服務 (Service) 最終自動發布到 Kubernetes 中。 

——————————華麗的分割線—————————-

由於電腦又背回家了,所以,又得重新uninstall.shinstall.sh

今天,接著來~~~

訪問GitHub和鏡像倉庫都是需要帳號密碼的,因此,提前先創建好密鑰

鏡像倉庫用的阿里雲

創建示例項目

2.6.  圖形化構建流水線

//kubesphere.io/docs/zh-CN/quick-start/jenkinsfile-out-of-scm/

使用圖形化構建流水線(Jenkinsfile out of SCM),程式碼倉庫中可以沒有 Jenkinsfile,你可以在控制台通過可視化的方式構建流水線或編輯 Jenkinsfile 生成流水線,操作介面更友好。

構建可視化流水線共包含以下 6 個階段 (stage),先通過一個流程圖簡單說明一下整個流水線的工作流:

詳細說明每個階段所執行的任務:

  • 階段一. Checkout SCM: 拉取 GitHub 倉庫程式碼;
  • 階段二. Unit test: 單元測試,如果測試通過了才繼續下面的任務;
  • 階段三. Code Analysis: 配置 SonarQube 進行靜態程式碼品質檢查與分析;
  • 階段四. Build and Push: 構建鏡像,並將 tag 為 SNAPSHOT-$BUILD_NUMBER 推送至 DockerHub (其中 $BUILD_NUMBER 為 pipeline 活動列表的運行序號);
  • 階段五. Artifacts: 製作製品 (jar 包) 並保存;
  • 階段六. Deploy to DEV: 將項目部署到 Dev 環境,此階段需要預先審核,若部署成功後則發送郵件。

創建憑證

創建流水線

最後,由於是從私有倉庫中拉取鏡像,可以將KubernetesDeploy配置到憑證中,就像前面push一樣

3. DevOps工程

//kubesphere.io/docs/zh-CN/devops/intro/ 

//kubesphere.io/docs/zh-CN/quick-start/jenkinsfile-out-of-scm/ 

//kubesphere.io/docs/zh-CN/system-settings/push-img-harbor/