安裝 KubeSphere DevOps 系統
- 2020 年 6 月 13 日
- 筆記
- Kubernetes
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.sh和install.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/