如何免費部署一套開源雲原生DevOps&敏捷協作平臺

image

Choerodon豬齒魚開源全價值鏈多雲敏捷協作平臺,是基於開源技術Kubernetes,Istio,knative,Gitlab,Spring Cloud來實現本地和雲端環境的集成,實現企業多雲/混合雲應用環境的一致性。目前對於通過 Choerodon 開發部署的應用系統有多種部署方式——kubernetes集羣部署,主機 JAR 包和 Docker 部署,所以請根具部署方式的不同請靈活選擇系統架構。

image

安裝方式

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://choerodon.io/zh/

【漢得開放平臺】

https://open.hand-china.com/

【漢得開放論壇】

https://openforum.hand-china.com/

也可以加入Choerodon豬齒魚官方社區用戶交流羣,交流豬齒魚使用心得,Docker,微服務,K8S,敏捷管理等相關理論實踐心得,羣同步更新版本更新等信息,大家可以加羣討論交流。

①-Choerodon豬齒魚官方交流(已滿);

②-Choerodon豬齒魚官方交流(可加);【微信號發至客服郵箱[email protected],運營小夥伴拉您入官方交流羣】

歡迎加入Choerodon豬齒魚社區,共同爲企業數字化服務打造一個開放的生態平臺。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章