From 5869f8e7c811d4d6d13fd62702550e99a444f142 Mon Sep 17 00:00:00 2001 From: shupiaoyang Date: Tue, 25 Feb 2025 11:49:25 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9Eeulermaker=E6=8F=92=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- plugins/eulermaker/config.yaml | 96 +++++++++++++++++++++++++++++++ plugins/eulermaker/doc/README.md | 97 ++++++++++++++++++++++++++++++++ plugins/eulermaker/main.yaml | 34 +++++++++++ 3 files changed, 227 insertions(+) create mode 100644 plugins/eulermaker/config.yaml create mode 100644 plugins/eulermaker/doc/README.md create mode 100644 plugins/eulermaker/main.yaml diff --git a/plugins/eulermaker/config.yaml b/plugins/eulermaker/config.yaml new file mode 100644 index 0000000..ccab75b --- /dev/null +++ b/plugins/eulermaker/config.yaml @@ -0,0 +1,96 @@ +all: + hosts: + ebs-master-1: + ansible_host: HOST_IP1 + ansible_port: 22 + ansible_user: root + ansible_password: "" + architecture: amd64 + oeversion: 22.03-LTS + runtime: docker + ebs-master-2: + ansible_host: HOST_IP2 + ansible_port: 22 + ansible_user: root + ansible_password: "" + architecture: amd64 + oeversion: 22.03-LTS + runtime: docker + x86-testbox-1: + ansible_host: HOST_IP3 + ansible_port: 22 + ansible_user: root + ansible_password: "" + architecture: amd64 + oeversion: 22.03-LTS + runtime: docker + arm-testbox-1: + ansible_host: HOST_IP4 + ansible_port: 22 + ansible_user: root + ansible_password: "" + architecture: arm64 + oeversion: 22.03-LTS + runtime: docker + + children: + kubernetes: + children: + masters: + hosts: + ebs-master-1: + workers: + hosts: + ebs-master-2: + x86-testbox-1: + arm-testbox-1: + new-workers: + hosts: {} + vars: + init_cluster_force: true + remove_master_no_schedule_taints: true + service_cidr: 10.96.0.0/16 + pod_cidr: 10.244.0.0/16 + certs_expired: 3650 + kubernetes_version: 1.31.1 + calico_version: 3.28.2 + containerd_version: 1.7.22 + docker_version: 27.3.1 + pause_image: registry.k8s.io/pause:3.10 + + eulermaker: + children: + kubectl: + hosts: + ebs-master-1: + masters: + hosts: + ebs-master-1: + ebs-master-2: + testboxs: + hosts: + x86-testbox-1: + arm-testbox-1: + new-testboxs: + hosts: {} + vars: + es_nodes: + - ebs-master-1 + - ebs-master-2 + - ebs-master-1 + etcd_nodes: + - ebs-master-1 + - ebs-master-2 + - ebs-master-1 + redis_nodes: + - ebs-master-1 + - ebs-master-2 + - ebs-master-1 + - ebs-master-2 + - ebs-master-1 + - ebs-master-2 + rabbitmq_nodes: + - ebs-master-2 + ebs_master_nodes: + - ebs-master-1 + yum_repo_is_reachable: true diff --git a/plugins/eulermaker/doc/README.md b/plugins/eulermaker/doc/README.md new file mode 100644 index 0000000..f8f7852 --- /dev/null +++ b/plugins/eulermaker/doc/README.md @@ -0,0 +1,97 @@ +# EulerMaker 自动化部署插件 配置说明 + +## 1. 主机清单 + +- **服务节点(ebs control-plane)**:至少1台 + - **架构**:x86_64 或 aarch64(推荐aarch64) + - **CPU**:>= 64U + - **内存**:>= 128GB + - **系统盘**:>= 100G + - **硬盘**:>= 1T (由于需要存放构建结果,建议硬盘越大越好) + - **目录**:`/srv/es` `/srv/redis` `/srv/etcd` 单独挂磁盘 (磁盘类型SSD,最好每个单独挂1T,少量构建的可以共用1块磁盘) + - **开放端口访问**:30108 +- **构建节点(ebs testbox)**:每种架构至少1台(用于创建docker构建容器,负责软件包、镜像构建及上传;建议 >= 4台) + - **架构**:x86_64 >= 1台,aarch64 >= 1台 + - **CPU**:>= 32U(规格越大越好) + - **内存**:>= 128G(规格越大越好) +- **软件要求**: + - **操作系统**:openEuler22.03-LTS及以上 + - **git**:2.33.0(建议) + - **网络**:最好可以访问互联网 + +| 主机名 | IP地址示例 | 架构 | 系统版本 | 运行时 | 角色类型 | 资源需求 | +|---------------|---------------|-------|---------------------|--------|----------|---------| +| ebs-master-1 | 192.168.1.101 | amd64 | openEuler-22.03-LTS | docker | 主节点/管理面 | 64U128G | +| ebs-master-2 | 192.168.1.102 | amd64 | openEuler-22.03-LTS | docker | 工作节点/管理面 | 32U128G | +| x86-testbox-1 | 192.168.1.201 | amd64 | openEuler-22.03-LTS | docker | 工作节点/执行机 | 32U128G | +| arm-testbox-1 | 192.168.1.202 | arm64 | openEuler-22.03-LTS | docker | 工作节点/执行机 | 32U128G | + +> IP地址为示例配置,实际使用需替换为真实环境地址 +> 以上机器需要有 root 权限,需要在同一网段,可以相互 ssh 访问。 +> - 单架构环境:至少准备2台机器,1台服务节点,1台构建节点。 +> - 混合架构环境:至少准备3台机器,1台服务节点,2台构建节点(不同架构)。 + +## 2. 组结构 + +```text +all +├── kubernetes +│ ├── masters (控制平面) +│ │ └── ebs-master-1 +│ ├── workers (工作节点) +│ │ ├── ebs-master-2 +│ │ ├── x86-testbox-1 +│ │ └── arm-testbox-1 +│ └── new-workers (扩展节点) +└── eulermaker + ├── kubectl (K8S集群管理节点) + │ └── ebs-master-1 + ├── masters (EulerMaker管理面) + │ ├── ebs-master-1 + │ └── ebs-master-2 + ├── testboxs (执行机) + │ ├── x86-testbox-1 + │ └── arm-testbox-1 + └── new-testboxs (扩展执行机) +``` + +## 3. 关键变量说明 + +**Kubernetes 集群配置:** + +```yaml +# 网络配置 +service_cidr: 10.96.0.0/16 +pod_cidr: 10.244.0.0/16 + +# 组件版本 +kubernetes_version: 1.31.1 +calico_version: 3.28.2 +containerd_version: 1.7.22 +docker_version: 27.3.1 + +# 集群配置 +init_cluster_force: true +remove_master_no_schedule_taints: true +certs_expired: 3650 +pause_image: registry.k8s.io/pause:3.10 +``` + +**EulerMaker 部署配置:** + +```yaml +# 节点配置 +es_nodes: [ ebs-master-1, ebs-master-2, ebs-master-1 ] +etcd_nodes: [ ebs-master-1, ebs-master-2, ebs-master-1 ] +redis_nodes: [ ebs-master-1, ebs-master-2 ]×3 +rabbitmq_nodes: [ ebs-master-2 ] +ebs_master_nodes: [ ebs-master-1 ] + +# 环境配置 +yum_repo_is_reachable: true +``` + +## 4. 注意事项 + +1. new-workers/new-testboxs 组当前无节点,用于后续扩展 +2. 默认配置中,主机信息 password 留空,表示使用 SSH 密钥连接。可根据实际需要改为密码连接。 \ No newline at end of file diff --git a/plugins/eulermaker/main.yaml b/plugins/eulermaker/main.yaml new file mode 100644 index 0000000..234ed0a --- /dev/null +++ b/plugins/eulermaker/main.yaml @@ -0,0 +1,34 @@ +name: eulermaker +version: +description: auto deploy eulermaker +action: + install: + description: auto deploy eulermaker + tasks: + - name: prepare env-requirements + playbook: 0-env-setup/prepare.yml + vars: 0-env-setup/variables.yml + scope: all + - name: deploy kubernetes + playbook: 1-k8s-install/init-k8s.yml + vars: 1-k8s-install/variables.yml + scope: kubernetes + - name: deploy eulermaker + playbook: 2-ebs-deploy/deploy-ebs.yml + vars: 2-ebs-deploy/variables.yml + scope: eulermaker + add-testbox: + description: add a testbox to existing eulermaker + tasks: + - name: prepare env-requirements + playbook: 0-env-setup/prepare.yml + vars: 0-env-setup/variables.yml + scope: all + - name: add kubernetes node + playbook: 1-k8s-install/add-node.yml + vars: 1-k8s-install/variables.yml + scope: kubernetes + - name: add eulermaker testbox + playbook: 2-ebs-deploy/add-testbox.yml + vars: 2-ebs-deploy/variables.yml + scope: eulermaker -- Gitee