iac_modules/Solutions/devops
2025-03-24 20:53:24 +08:00
..
.github/workflows merged: observability, aigc_app_engine, containerd_platform, micro_service, sso_identity_provider, devops 2025-03-24 20:53:24 +08:00
.gitmodules merged: observability, aigc_app_engine, containerd_platform, micro_service, sso_identity_provider, devops 2025-03-24 20:53:24 +08:00
LICENSE merged: observability, aigc_app_engine, containerd_platform, micro_service, sso_identity_provider, devops 2025-03-24 20:53:24 +08:00
README.md merged: observability, aigc_app_engine, containerd_platform, micro_service, sso_identity_provider, devops 2025-03-24 20:53:24 +08:00

DevOPSPlatform

该解决方案使用 Gitlab, Harbor,ChartMuseum 等开源软件构建的DevOPS平台解决方案通过 GitHub Actions 自动交付创建服务。

  • IacOPS
  • MLOPS
  • DevSecOPS
  • ChosOPS

架构图

请在此添加图片描述

该解决方案使用以下开源软件:

  • Gitlab
  • Harbor/

CICD

流水线配置文件 配置文件位于 .github/workflows/pipeline.yaml 由四个阶段组成:

  • 构建测试:此阶段从源代码构建 APP, 并运行测试套件以确保APP 正常工作。
  • Docker 镜像:此阶段构建一个包含 APP 的 Docker 镜像。
  • 设置 K3s此阶段在远程服务器上设置 K3s 集群。
  • 部署应用:此阶段将 APP 部署到 K3s 集群。

Playook 角色说明

DevOPSPlatform 配置库由以下角色组成:

  • app 应用程序服务角色,提供应用程序运行所需的服务,如 Nginx、Docker、MySQL、Redis 等。
  • chartmuseum 图表仓库角色,用于存储和管理 Kubernetes 图表。
  • gitlab 代码仓库角色,用于存储和管理代码。
  • k3s Kubernetes 集群角色,用于管理 Kubernetes 集群。
  • k3s-reset Kubernetes 集群重置角色,用于重置 Kubernetes 集群。
  • postgresql PostgreSQL 数据库角色,用于提供 PostgreSQL 数据库服务。
  • secret-manger 密钥管理角色,用于管理密钥。
  • cert-manager 证书管理角色,用于管理证书。
  • common 通用角色,包含一些常用的功能,如日志记录、监控等。
  • harbor 容器镜像仓库角色,用于存储和管理容器镜像。
  • k3s-addon Kubernetes 集群插件角色,用于安装 Kubernetes 集群插件。
  • mysql MySQL 数据库角色,用于提供 MySQL 数据库服务。
  • redis Redis 数据库角色,用于提供 Redis 数据库服务。

触发器

管道由以下事件触发:

  • 当打开或更新拉取请求时。
  • 当代码推送到主分支时。
  • 当工作流程手动调度时。

环境变量

在YAML文件或CI/CD流水线配置中定义的ENV变量

  • TZ: Asia/Shanghai设置时区为Asia/Shanghai。
  • REPO: "artifact.onwalk.net"指定一个存储库的URL或标识符。
  • IMAGE: base/${{ github.repository }}基于GitHub存储库构建一个容器镜像名称。
  • TAG: ${{ github.sha }}将镜像标签设置为GitHub存储库的提交SHA。
  • DNS_AK: ${{ secrets.DNS_AK }}使用GitHub的密钥设置阿里云DNS访问密钥。
  • DNS_SK: ${{ secrets.DNS_SK }}使用GitHub的密钥设置阿里云DNS密钥。
  • DEBIAN_FRONTEND: noninteractive将Debian前端设置为非交互模式这在自动化脚本中很有用可防止交互提示。
  • HELM_EXPERIMENTAL_OCI: 1启用Helm中的实验性OCIOpen Container Initiative支持允许Helm与OCI镜像一起使用。

如需在自己的账号运行这个Demo只需要将 https://github.com/open-source-solution-design/ObservabilityPlatform.git 这个仓库Fork 到你自己的Github账号下同时在

Settings -> Actions secrets and variables: 添加流水线需要定义的 secrets 变量

Server 相关 secrets 变量

  • HELM_REPO_USER Artifact 仓库认证用户名
  • HELM_REPO_REGISTRY Artifact 仓库认证地址
  • HELM_REPO_PASSWORD Artifact 仓库认证密码
  • HOST_USER 部署K3S的主机OS登陆用户名
  • HOST_IP 部署K3S的主机IP地址
  • HOST_DOMAIN 部署K3S的主机域名
  • SSH_PRIVATE_KEY 访问K3S的主机的SSH 私钥
  • DNS_AK 阿里云DNS 服务 AK (用于自动签发SSL证书和更新解析记录发布ingress )
  • DNS_SK 阿里云DNS 服务 SK (用于自动签发SSL证书和更新解析记录发布ingress )

Ingress Endpoint

name URI

Repo Init

git submodule add https://github.com/svc-design/iac_modules.git iac_modules git submodule add https://github.com/svc-design/playbook.git playbook git submodule init git submodule update git submodule update --init --recursive