关于CLoudlaC的测试手册

CloudIaC 使用手册

CloudlaC官网传送门

CloudlaC使用手册传送门

本次测试使用的是Centos7.4的版本【两核CPU、4G内存、50G硬盘空间】进行部署与使用

如有问题可以在评论区评论,会尽快回复

功能架构

img

系统架构

img

CloudIaC 的功能

  • 环境即服务:通过Terraform和Ansible的结合,以代码交付基础设施和应用,使用VCS来管理并控制代码的版本,一份代码对应一套或多套环境;
  • 安全合规:融合OPA(Open Policy Agent)引擎,以策略即代码的方式对即将创建的基础设施进行合规检查,在安全风险和错误配置发生之前尽量降低它们;
  • 漂移检测:及时发现配置漂移的发生,接收漂移发生的通知并通过资源拓扑直观呈现漂移数据;
  • 成本监测:公有云环境月度费用统计,掌握云端环境资源整体费用及占比情况,同时可在资源创建及删除时给出费用预估。

除了在公有云环境下帮助管理IaC环境,CloudIaC还为私有云、混合云环境下使用Terraform提供了解决方案,除了使用公有云平台提供的Provider之外,针对私有云、专有云、VMware、PaaS等服务,CloudIaC也针对相应场景提供Provider支持;为了让企业内部私有化部署且因为安全因素不能访问外网的场景,CloudIaC还提供了私有的Provider Registry,通过在企业内部部署Provider Registry,让私有化部署场景下也可以顺畅的使用IaC管理我们的环境。

img

容器部署

1、docker环境准备

curl -fsSL https://get.docker.com | bash -s docker && \
systemctl enable docker && \
systemctl start docker

安装时间较长,请耐心等待。

image-20221202153707076

出现这个界面证明安装成功

systemctl status docker    #检查docker状态确认无误可以继续下面的操作

2、安装 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

image-20221202154032826

3、创建docker-compose.yml

部署目录必须为 /usr/yunji/cloudiac,部署到其他目录将无法执行环境部署任务。

mkdir -p /usr/yunji/cloudiac/var/{consul,mysql} && cd /usr/yunji/cloudiac/   

创建 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

4、创建 .env 文件

vim /usr/yunji/cloudiac/.env

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

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

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

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

# 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"

以下是我的个人配置

[root@cloudlac cloudiac]# egrep -v "^$|#" .env 
IAC_ADMIN_EMAIL="admin@haha.com"
IAC_ADMIN_PASSWORD="a123456*"
SECRET_KEY="123456"
PORTAL_ADDRESS="http://cloudiac.haha.com"
CONSUL_ADDRESS="192.168.91.143:8500"        #这里别CV了
REGISTRY_ADDRESS=""
HTTP_CLIENT_INSECURE=false
MYSQL_HOST=mysql
MYSQL_PORT=3306
MYSQL_DATABASE=cloudiac
MYSQL_USER=cloudiac
MYSQL_PASSWORD="123456"
SERVICE_IP=iac-portal
SERVICE_ID=iac-portal-01
SERVICE_TAGS="iac-portal;portal-01"
DOCKER_REGISTRY=""
LOG_DEVEL="info"
SMTP_ADDRESS=""
SMTP_USERNAME=""
SMTP_PASSWORD=""
SMTP_FROM=""
SMTP_FROM_NAME=IaC
KAFKA_TOPIC="IAC_TASK_REPLY"
KAFKA_GROUP_ID=""
KAFKA_PARTITION=0
KAFKA_BROKERS=[]
KAFKA_SASL_USERNAME=""
KAFKA_SASL_PASSWORD=""
RUNNER_SERVICE_IP=ct-runner
RUNNER_SERVICE_ID=ct-runner-01
RUNNER_SERVICE_TAGS="ct-runner;runner-01"
RUNNER_OFFLINE_MODE="false"

5、地址映射

既然做了服务地址那我们就稳妥的做个地址映射吧。

vim /etc/hosts

image-20221203224501821

再做个Windows的映射

C:\Windows\System32\drivers\etc\hosts

image-20221203224756239

6、启动docker-compose

docker-compose up

默认前台运行,可以使用docker-compose up -d放到后台运行

image-20221203142917918

我们先访问主页面

管理界面:http://192.168.91.143/

consul页面:http://192.168.91.143:8500

账号密码使用配置文件中设置好的

IAC_ADMIN_EMAIL="admin@haha.com"
IAC_ADMIN_PASSWORD="a123456*"

image-20221203143622097

至此部署完成

快速入门

1、创建组织

管理员首次登录CloudIaC,首先需要创建一个组织:

image-20221203143856748

在【系统设置】->【组织设置】中点击【创建组织】

image-20221203144004308

点击进入

image-20221203144132984

【组织设置】->【项目】->【创建项目】

image-20221203144358479

切换到该项目

image-20221203144551848

2、新建云模板

项目创建后我们需要创建模板并关联到项目

image-20221203145448991

发现跟官网有点出入哈,没有docker-nginx给我们拿来演示,那我们选择一个example试试看

image-20221203150249849

image-20221203150331547

image-20221203150421497

下一步-下一步-关联项目选择完成!

3、部署环境

添加Stack并关联到项目后,我们就可以基于Stack部署环境了。

image-20221203150730627

进入部署页面

image-20221203151202664

哦豁,报错了!

image-20221203153235760

发现找不到文件。后续又尝试了demo模板

image-20221203154140974

image-20221204115240342

image-20221204115603617

容器暴露的端口也没有冲突。

报错小结

在虚拟机上wget,可以直接获取文件,Windows上也能直接访问到这个地址,找的到文件,但部署时报错Not Found。实在是让我想不出问题,然后我去官网下面找到了B站视频,添加了VCS、资源账号【阿里云】,以及ssh认证,根据视频做了一遍,好家伙还是错了。。【而且密钥这些是做playbook才需要的,执行一个小demo不需要这些】估摸着是配置文件.env设置有点问题了【拉取不了应该跟权限相关吧】,但是不知道应该开启哪一块选项。。希望能得到指点!

杭州云霁科技有限公司的个人空间_哔哩哔哩_bilibili

image-20221203220301244

image-20221203220621169

我陷入了沉思。。。。

使用体验

本次使用是根据官网的指示进行安装部署,部署一切正常,但部署云模板时发送了无法拉取的情况,可能是某些地方的权限不足导致无法直接拉取,以及添加Github的VCS时报错。。

CloudlaC给我的感觉是,它是多种工具大集成的感觉,使用上很像Gitlab+Jenkins+Ansible然后策略组那些又让我感觉很像阿里云的平台的操作。。虽然最后没有成功实现,但是能够感觉到这个产品的便捷程度,比如组织变量跟环境变量的优先级官网手册中也清楚写明】,以及在环境中修改后的细节显示来自】都是很棒的设计,这是我在其他图形化平台上没有体验过的!

image-20221203234124558

image-20221203233850042

个人建议

个人感觉官网的内容需要修改了。

(1)注册功能

首先官网的邮箱注册功能存在问题,使用了163、outlook、qq邮箱,还尝试过换电脑也无法解决注册账号这个问题,手机端的自适应页面更是连注册界面都显示不出来。。这点我认为还是影响体验的。而且网站主页的一些图标也没有实现转跳。。

(2)官网文档的快速入门需要更新

云模板中选用VCS:默认仓库时,并未出现如官网所展示的docker-nginx的仓库。也没有

image-20221203234539632

(3)环境销毁

image-20221204002453569

一堆失败嗷嗷难看,点了销毁还在,翻了一下官网,发现没有说明如果部署了新环境失败之后且存活时间是不限制时,如何销毁【只有定时销毁环境】,也有可能是我环境问题。。

以上就是我的个人使用体验以及建议,期待留言!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值