容器部署CloudIac


一、CloudIac概述

CloudIac是一套基于基础设施即代码理念打造的云环境自动化管理平台,主要提供的是云资源的全生命周期管理,包括资源的创建、应用部署、扩容、销毁等。

二、容器部署CloudIac

2.1 基础环境

  • 华为云centos7.9,2核4g
  • 配置华为云内网yum仓库
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.myhuaweicloud.com/repo/CentOS-Base-7.repo

2.2 安装docker并启动

curl -fsSL https://get.docker.com | bash -s docker
systemctl enable docker --now
docker images # 验证

2.3 安装docker-compose

curl -L https://get.daocloud.io/docker/compose/releases/download/1.29.2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
命令行验证是否有了这个命令

2.4 创建部署目录

  • 注意:仅支持 /usr/yunji/cloudiac 这个目录,环境部署需要这个目录
mkdir -p /usr/yunji/cloudiac/var/{consul,mysql} 
cd /usr/yunji/cloudiac/

2.5 创建 docker-compose.yml 文件

vim /usr/yunji/cloudiac/docker-compose.yml
# 文件内容如下:
# auto-replace-from: docker/docker-compose.yml
version: "3.2"
services:
  iac-portal:
    container_name: iac-portal
    image: "${DOCKER_REGISTRY}cloudiac/iac-portal:v0.9.1"
    volumes:
      - type: bind
        source: /usr/yunji/cloudiac/var
        target: /usr/yunji/cloudiac/var
      - type: bind
        source: /usr/yunji/cloudiac/.env
        target: /usr/yunji/cloudiac/.env
    ports:
      - "9030:9030"
    depends_on:
      - mysql
      - consul
    restart: always

  ct-runner:
    container_name: ct-runner
    image: "${DOCKER_REGISTRY}cloudiac/ct-runner:v0.9.1"
    volumes:
      - type: bind
        source: /usr/yunji/cloudiac/var
        target: /usr/yunji/cloudiac/var
      - type: bind
        source: /usr/yunji/cloudiac/.env
        target: /usr/yunji/cloudiac/.env
      - type: bind
        source: /var/run/docker.sock
        target: /var/run/docker.sock
    ports:
      - "19030:19030"
    depends_on:
      - consul
    restart: always

  iac-web:
    container_name: iac-web
    image: "${DOCKER_REGISTRY}cloudiac/iac-web:v0.9.1"
    ports:
      - 80:80
    restart: always
    depends_on:
      - iac-portal

  mysql:
    container_name: mysql
    image: "mysql:8.0"
    command: [
        "--character-set-server=utf8mb4",
        "--collation-server=utf8mb4_unicode_ci",
        "--sql_mode=STRICT_TRANS_TABLES,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION"
    ]
    volumes:
      - type: bind
        source: /usr/yunji/cloudiac/var/mysql
        target: /var/lib/mysql
    environment:
      - MYSQL_RANDOM_ROOT_PASSWORD=yes
      - MYSQL_USER
      - MYSQL_PASSWORD
      - MYSQL_DATABASE
    restart: always

  consul:
    container_name: consul
    image: "consul:latest"
    volumes:
      - type: bind
        source: /usr/yunji/cloudiac/var/consul
        target: /consul/data   
    ports:
      - "8500:8500"
    command: >
      consul agent -server -bootstrap-expect=1 -ui -bind=0.0.0.0
      -client=0.0.0.0 -enable-script-checks=true -data-dir=/consul/data 
    restart: always

注意:离线部署需要将上述所有的docker镜像以及 "cloudiac/ct-worker:vx.y.z"这个镜像提前下载到本地

2.6 创建 .env 文件

vim /usr/yunji/cloudiac/.env

# 内容如下:
# auto-replace-from: configs/dotenv.sample
# 平台管理员账号密码(均为必填)
# 该账号密码只在系统初始化时使用,后续修改不影响己创建的账号
IAC_ADMIN_EMAIL="admin@example.com"
# 密码要求长度大于 8 且包含字母、数字、特殊字符
IAC_ADMIN_PASSWORD="1487271018@qq.com"

# 加密密钥配置(必填)
# 敏感数据使用该密钥进行加密
SECRET_KEY="yunjikeji"

# IaC 对外提供服务的地址(必填), 示例: http://cloudiac.example.com
# 该地址需要带协议(http/https),结尾不可以加 "/"
PORTAL_ADDRESS="122.9.97.22"

# consul 地址(必填),示例: private.host.ip:8500
# 需要配置为机器的内网 ip:port,不可使用 127.0.0.1
CONSUL_ADDRESS="192.168.1.60:8500"

# IaC Store 服务地址(选填),示例:http://store.cloudiac.org
REGISTRY_ADDRESS=""

# 使用 https 向外(比如runner)发送请求的时候是否允许使用不安全证书
HTTP_CLIENT_INSECURE=false

# mysql 配置(必填)
MYSQL_HOST=mysql
MYSQL_PORT=3306
MYSQL_DATABASE=cloudiac
MYSQL_USER=cloudiac
MYSQL_PASSWORD="mysqlpass"

# portal 服务注册信息配置 (均为必填)
## portal 服务的 IP 地址, 容器化部署时无需修改, 手动部署时配置为内网 IP
SERVICE_IP=iac-portal
## portal 服务注册的 id(需要保证唯一)
SERVICE_ID=iac-portal-01
## portal 服务注册的 tags
SERVICE_TAGS="iac-portal;portal-01"

# docker reigstry 地址,为空时使用 docker hub
DOCKER_REGISTRY=""

# logger 配置
LOG_DEVEL="info"

# SMTP 配置(该配置只影响邮件通知的发送,不配置不影响其他功能)
## example: smtp.example.com:25
SMTP_ADDRESS=""
## example: user@example.com
SMTP_USERNAME=""
SMTP_PASSWORD=""
## example: support@example.com
SMTP_FROM=""
SMTP_FROM_NAME=IaC

# KAFKA配置,配置后每次执行部署任务都会将环境的最新全量资源详情通过 kafka 消息发送
KAFKA_TOPIC="IAC_TASK_REPLY"
KAFKA_GROUP_ID=""
KAFKA_PARTITION=0
## example: KAFKA_BROKERS: ["kafka.example.com:9092", "..."]
KAFKA_BROKERS=[]
KAFKA_SASL_USERNAME=""
KAFKA_SASL_PASSWORD=""

######### 以下为 runner 配置 #############
# runner 服务注册配置(均为必填)
## runner 服务的 IP 地址, 容器化部署时无需修改, 手动部署时配置为内网 IP
RUNNER_SERVICE_IP=ct-runner
## runner 服务注册的 id(需要保证唯一)
RUNNER_SERVICE_ID=ct-runner-01
RUNNER_SERVICE_TAGS="ct-runner;runner-01"

## 是否开启 offline mode,默认为 false
RUNNER_OFFLINE_MODE="false"

2.7 启动 docker-compose

docker-compose up -d
docker ps -a  # 查看容器是否起来

# 停止
docker-compose stop

在这里插入图片描述五个容器都为up状态代表部署成功。

2.8 访问cloudiac

浏览器输入公网ip即可进行访问。
默认的用户名为 admin@example.com (即 IAC_ADMIN_EMAIL),密码为 .env 中配置的 IAC_ADMIN_PASSWORD
登录界面如下图
在这里插入图片描述

三、使用CloudIac步骤及感受

  • 创建组织—>进入组织—>创建设定里面的内容(角色、vcs、密钥等)—>新建云模板—>环境—>部署环境
    可以利用playbook快速搭建好Nginx静态页面。
    重新部署可以轻松扩容。
  • 使用感受
    运维人员的痛点:将服务器部署到机房,对机器进行软、硬件配置,安装并初始化操作系统,在做好基础配置后提供给业务部门;业务部门拿到机器后进行应用的部署,在这整个手动过程中通常会导致很多问题
    随着云计算的到来,在很大程度上帮我们解决了上述的部分问题,通过云计算,我们甚至无需构建和维护自己的数据中心即可让我们的应用运行起来。但它对解决不一致问题没有任何帮助。而Iac解决了这一问题。
    IaC(Infrastructure as code 基础设施即代码)通过使用配置文件来管理所有的基础设施并自动化基础架构管理。
    使用基础设施即代码,我们的基础设施配置会采用代码文件的形式。由于它只是文本,因此可以轻松编辑、复制和分发它。我们可以使用VCS(版本控制系统)来管理配置文件,就像管理任何其他源代码文件一样。
    优点很多:
    • 易于复制
    • 易于销毁
    • 易于产看
    • 易于分享
    • 界面简洁易懂,操作容易上手,官方文档很详细,能对云环境进行有秩序、高效的管理,还有很多功能需要进一步学习和摸索…

         👆回到顶部👆

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小猿桥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值