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://choerodon.io/zh/
【汉得开放平台】
https://open.hand-china.com/
【汉得凋谢论坛】
https://openforum.hand-china.com/
也能够退出 Choerodon 猪齿鱼官网社区用户交换群,交换猪齿鱼应用心得,Docker,微服务,K8S,麻利治理等相干实践实际心得,群同步更新版本更新等信息,大家能够加群探讨交换。
①-Choerodon 猪齿鱼官网交换(已满);
②-Choerodon 猪齿鱼官网交换(可加);【微信号发至客服邮箱 choerodon@vip.hand-china.com,经营小伙伴拉您入官网交换群】
欢送退出 Choerodon 猪齿鱼社区,独特为企业数字化服务打造一个凋谢的生态平台。