Choerodon豬齒魚開源全價值鏈多雲敏捷協作平臺,是基於開源技術Kubernetes,Istio,knative,Gitlab,Spring Cloud來實現本地和雲端環境的集成,實現企業多雲/混合雲應用環境的一致性。目前對於通過 Choerodon 開發部署的應用系統有多種部署方式——kubernetes集羣部署,主機 JAR 包和 Docker 部署,所以請根具部署方式的不同請靈活選擇系統架構。
安裝方式
Choerodon提供兩種安裝方式,即一鍵部署Choerodon和分步部署Choerodon。下面將介紹一鍵部署最小化安裝Choerodon。
環境準備
硬件最低要求
- 服務器總內存:32G及以上
- 服務總CPU數:8核心及以上
- 單節點硬盤:100Gb及以上(如使用NFS存儲,那麼NFS服務節點建議存儲不小於512G)
軟件要求
- 系統版本:CentOS7.4及以上
- Kubernetes:1.10及以上
- Helm:v3.2.4及以上
網絡要求
- 各個服務器之間內網互通內網帶寬建議1Gbps以上
- 各個服務器能夠訪問外網
下面將以一臺8核心32G內存的服務器爲例,演示如何安裝豬齒魚。
安裝步驟
安裝 Choerodon 首先完成 kubernetes 集羣的部署和 helm 安裝;然後部署 NFS 服務器端,如果你選擇其他類型的存儲,可以忽略NFS相關的搭建信息;接着使用豬齒魚命令行工具一鍵式安裝 Choerodon;最後部署 Gitlab Runner,其用於代碼提交後自動進行代碼測試、構建服務的鏡像及生成helm chart並將結果發回給Choerodon。
Kubernetes 集羣安裝
準備安裝腳本
# 安裝 git 命令行
sudo yum install git -y
# 克隆本項目代碼
git clone https://gitee.com/open-hand/kubeadm-ha.git
# 進入項目目錄
cd kubeadm-ha
# 安裝 ansible 環境
sudo ./ansible/install.sh
配置 ansible inventory 文件
項目 example 文件夾下提供了 6 個 ansible inventory 示例文件,請按需求進行選擇並修改。
拷貝項目下的 example/hosts.allinone.hostname.ini 文件至項目根目錄下,命名爲 inventory.ini,修改kubernetes部署版本爲 1.16.15、各服務器的 IP 地址、用戶名、密碼,並維護好各服務器與角色的關係。
; 將所有節點的信息在這裏填寫
; 第一個字段 爲 kubernetes 節點 nodeName,注意必須由小寫字母、數字,“-”或“.”組成,並且必須以小寫字母或數字開頭和結尾
; 第二個字段 ansible_host 爲節點內網IP
; 第三個字段 ansible_port 爲節點 sshd 監聽端口
; 第四個字段 ansible_user 爲節點遠程登錄用戶名
; 第五個字段 ansible_ssh_pass 爲節點遠程登錄用戶密碼
[all]
node1 ansible_host=192.168.56.11 ansible_port=22 ansible_user="vagrant" ansible_ssh_pass="vagrant"
; 單節點lb節點組留空。
[lb]
; 注意etcd集羣必須是1,3,5,7...奇數個節點
[etcd]
node1
[kube-master]
node1
[kube-worker]
node1
; 預留組,後續添加master節點使用
[new-master]
; 預留組,後續添加worker節點使用
[new-worker]
; 預留組,後續添加etcd節點使用
[new-etcd]
; 預留組,後續刪除worker角色使用
[del-worker]
; 預留組,後續刪除master角色使用
[del-master]
; 預留組,後續刪除etcd角色使用
[del-etcd]
; 預留組,後續刪除節點使用
[del-node]
;-------------------------------------- 以下爲基礎信息配置 ------------------------------------;
[all:vars]
; 是否跳過節點物理資源校驗,Master節點要求2c2g以上,Worker節點要求2c4g以上
skip_verify_node=false
; kubernetes版本
kube_version="1.20.2"
; 容器運行時類型,可選項:containerd,docker;默認 containerd
container_manager="containerd"
; 負載均衡器
; 有 nginx、openresty、haproxy、envoy 和 slb 可選,默認使用 nginx
; 爲什麼單節點 apiserver 也使用了負載均衡請參與此討論: https://github.com/TimeBye/kubeadm-ha/issues/8
lb_mode="nginx"
; 使用負載均衡後集羣 apiserver port
lb_kube_apiserver_port="8443"
; 網段選擇:pod 和 service 的網段不能與服務器網段重疊,
; 若有重疊請配置 `kube_pod_subnet` 和 `kube_service_subnet` 變量設置 pod 和 service 的網段,示例參考:
; 如果服務器網段爲:10.0.0.1/8
; pod 網段可設置爲:192.168.0.0/18
; service 網段可設置爲 192.168.64.0/18
; 如果服務器網段爲:172.16.0.1/12
; pod 網段可設置爲:10.244.0.0/18
; service 網段可設置爲 10.244.64.0/18
; 如果服務器網段爲:192.168.0.1/16
; pod 網段可設置爲:10.244.0.0/18
; service 網段可設置爲 10.244.64.0/18
; 集羣pod ip段,默認掩碼位 18 即 16384 個ip
kube_pod_subnet="10.244.0.0/18"
; 集羣service ip段
kube_service_subnet="10.244.64.0/18"
; 分配給節點的 pod 子網掩碼位,默認爲 24 即 256 個ip,故使用這些默認值可以納管 16384/256=64 個節點。
kube_network_node_prefix="24"
; node節點最大 pod 數。數量與分配給節點的 pod 子網有關,ip 數應大於 pod 數。
; https://cloud.google.com/kubernetes-engine/docs/how-to/flexible-pod-cidr
kube_max_pods="110"
; 集羣網絡插件,目前支持flannel,calico
network_plugin="calico"
; 若服務器磁盤分爲系統盤與數據盤,請修改以下路徑至數據盤自定義的目錄。
; Kubelet 根目錄
kubelet_root_dir="/var/lib/kubelet"
; docker容器存儲目錄
docker_storage_dir="/var/lib/docker"
; containerd容器存儲目錄
containerd_storage_dir="/var/lib/containerd"
; Etcd 數據根目錄
etcd_data_dir="/var/lib/etcd"%
集羣部署
部署集羣:
# 在項目根目錄下執行
ansible-playbook -i inventory.ini 90-init-cluster.yml
查看等待 pod 的狀態爲 runnning:
# 任意master節點下執行
kubectl get po --all-namespaces -w
如果部署失敗,想要重置集羣,執行:
# 在項目根目錄下執行
ansible-playbook -i inventory.ini 99-reset-cluster.yml
其他集羣運維操作請查閱項目使用指南
Helm部署
部署客戶端
在任意一個master節點執行以下命令
- 根據系統下載所需版本
curl -L -o helm-v3.2.4-linux-amd64.tar.gz https://file.choerodon.com.cn/kubernetes-helm/v3.2.4/helm-v3.2.4-linux-amd64.tar.gz
- 解壓壓縮包(以linux-amd64爲例)
tar -zxvf helm-v3.2.4-linux-amd64.tar.gz
- 將文件移動到PATH目錄中(以linux-amd64爲例)
sudo mv linux-amd64/helm /usr/bin/helm
驗證部署
執行命令,出現以下信息即部署成功。
$ helm version
version.BuildInfo{Version:"v3.2.4", GitCommit:"0ad800ef43d3b826f31a5ad8dfbb4fe05d143688", GitTreeState:"clean", GoVersion:"go1.13.12"}
NFS動態存儲卷
創建 NFS 服務器
在集羣每一個節點安裝nfs-utils
sudo yum install -y nfs-utils
配置nfs-server
- 創建共享目錄
mkdir -p /u01/prod
- 編輯/etc/exports文件添加需要共享目錄,每個目錄的設置獨佔一行,編寫格式如下:
NFS共享目錄路徑 客戶機IP段(參數1,參數2,...,參數n)
# 例子
/u01 192.168.1.1/16(rw,sync,insecure,no_subtree_check,no_root_squash)
啓動NFS服務
配置完成後,您可以在終端提示符後運行以下命令來啓動 NFS 服務器:
sudo systemctl enable nfs-server
sudo systemctl start nfs-server
檢查NFS服務提供是否正常
到客戶機上執行showmount命令進行檢查
$ showmount -e <NFS服務器IP地址>
Exports list on <NFS服務器IP地址>:
/u01
安裝 nfs-client-provisioner
添加choerodon chart倉庫
helm repo add c7n https://openchart.choerodon.com.cn/choerodon/c7n/
helm repo update
在任意一個master節點執行下面helm命令,安裝nfs-client-provisioner
helm upgrade --install nfs-client-provisioner c7n/nfs-client-provisioner \
--set rbac.create=true \
--set persistence.enabled=true \
--set storageClass.name=nfs-provisioner \
--set persistence.nfsServer=127.0.0.1 \
--set persistence.nfsPath=/u01/prod \
--version 0.1.1 \
--namespace kube-system
域名解析
如果有域名,解析到服務器IP即可。沒有域名則可以通過 coredns 的 hosts 插件配置。
編輯 coredns 的 ConfigMap,將域名替換成你自己的域名:
apiVersion: v1
kind: ConfigMap
data:
Corefile: |
.:53 {
hosts {
192.168.56.11 charts.example.choerodon.io
192.168.56.11 minio.example.choerodon.io
192.168.56.11 gitlab.example.choerodon.io
192.168.56.11 registry.example.choerodon.io
192.168.56.11 sonarqube.example.choerodon.io
192.168.56.11 nexus.example.choerodon.io
192.168.56.11 api.example.choerodon.io
192.168.56.11 notify.example.choerodon.io
192.168.56.11 devops.example.choerodon.io
192.168.56.11 hzero.example.choerodon.io
192.168.56.11 app.example.choerodon.io
fallthrough
}
}
一鍵部署豬齒魚
下載安裝工具
在集羣 master 執行下面的命令,先安裝命令行工具 c7nctl:
curl -fsSL -o get_c7nctl.sh https://gitee.com/open-hand/c7nctl/raw/0.24/scripts/get-c7nctl.sh
chmod 700 get_c7nctl.sh
./get_c7nctl.sh
配置文件
創建並編輯配置文件,修改域名爲你自己的域名:
# vim config.yml
--------------------
version: 0.24
metadata:
name: resource-choerodon
namespace: c7n-system # 指定命名空間安裝choerodon
spec:
persistence:
storageClassName: nfs-provisioner
resources:
gitlab:
domain: gitlab.example.choerodon.io
minio:
domain: minio.example.choerodon.io
harbor:
domain: harbor.example.choerodon.io
chartmuseum:
domain: chart.example.choerodon.io
sonatype-nexus:
domain: nexus.example.choerodon.io
sonarqube:
domain: sonarqube.example.choerodon.io
choerodon-gateway:
domain: api.example.choerodon.io
choerodon-message:
domain: notify.example.choerodon.io
devops-service:
domain: devops.example.choerodon.io
choerodon-front-hzero:
domain: hzero.example.choerodon.io
choerodon-front:
domain: app.example.choerodon.io
執行安裝
在安裝過程中,會提示設置某些組件用戶名及密碼,注意保存;執行部署命令,安裝過程中如果遇到問題,請先查看本文最後一節關於常見問題的介紹,如果未能解決你的問題,可以到論壇中提問。
./c7nctl install c7n -c config.yml --version=0.24 --thin-mode
- 安裝完成後您可以訪問您配置的choerodon-front域名,默認用戶名和密碼爲admin/Admin@123!
- 登錄一次Gitlab,第一次登錄會提示設置root用戶密碼,隨後會跳轉到Choerodon認證,使用admin/Admin@123!登錄即可,如果使用root/admin用戶拉取代碼用戶名爲root,密碼爲界面設置的密碼,其他用戶創建後會通過站內信通知Gitlab密碼。
安裝 Gitlab runner
如你使用一鍵部署安裝的豬齒魚,在同一集羣中可以使用下面命令一鍵部署Gitlab-Runner。
./c7nctl install runner -c config.yml --version 0.24 --thin-mode
手動安裝 runner 請參考官網文檔。
關於豬齒魚
Choerodon豬齒魚開源全價值鏈多雲敏捷協作平臺,是基於開源技術Kubernetes,Istio,knative,Gitlab,Spring Cloud來實現本地和雲端環境的集成,實現企業多雲/混合雲應用環境的一致性。平臺通過提供精益敏捷、持續交付、容器環境、微服務、DevOps等能力來幫助組織團隊來完成軟件的生命週期管理,從而更快、更頻繁地交付更穩定的軟件。
更多內容
大家可以通過以下社區途徑瞭解Choerodon豬齒魚文檔,最新動態,產品特性:
【Choerodon官網】
【漢得開放平臺】
【漢得開放論壇】
https://openforum.hand-china.com/
也可以加入Choerodon豬齒魚官方社區用戶交流羣,交流豬齒魚使用心得,Docker,微服務,K8S,敏捷管理等相關理論實踐心得,羣同步更新版本更新等信息,大家可以加羣討論交流。
①-Choerodon豬齒魚官方交流(已滿);
②-Choerodon豬齒魚官方交流(可加);【微信號發至客服郵箱[email protected],運營小夥伴拉您入官方交流羣】
歡迎加入Choerodon豬齒魚社區,共同爲企業數字化服務打造一個開放的生態平臺。