GithubHelp home page GithubHelp logo

gitops-terraform's Introduction

使用方式

  1. 环境配置

    • 配置Secrets: TENCENTCLOUD_SECRET_KEYTENCENTCLOUD_SECRET_ID(腾讯云AKSK) secrets信息
    • 将dev和prod中prodvider.tf中的配置按需修改,至少需要更新backend信息
  2. 部署方式

    • 通过pull_request流水线线上触发,提交PR触发流水线或者手动触发流水线
    • 手动本地触发
      • 选择环境: 进入dev或prod目录
      • 初始化环境: terraform init
      • 查看执行计划: terraform plan
      • 部署资源: terraform apply
      • 销毁资源: terraform destroy

目录结构

本示例包含服务的实际配置的 modules 目录和包含每个环境的根配置的 environments 目录。

  • modules目录中为抽象出来的可复用模块
  • 本示例中modules目中定义了network、security_group和tke三个module供用户参考

module复用

  1. Module 是 Terraform 为了管理单元化资源而设计的,是子节点,子资源,子架构模板的整合和抽象
  2. Module通过对资源的定义,参数,语法等细节问题进行封装。让户只需关注module的input参数,无需关心细节信息,从而将更多的时间和精力投入到架构设计和资源关系整合上
  • environments目录用于隔离不同环境,用户可以在不同环境中使用不同的云厂商或配置不同的账号以实现多云管理
    • dev分支通过创建vpc和subnet演示单一资源的创建(通过目录进行隔离)
    • prod分支通过创建tke集群演示多个资源相互依赖的资源创建
      • prod通过目录进行隔离
      • prod中的子目录通过workspace进行隔离(prod/main.tf中的module查看)

环境隔离

  1. 隔离方式
  • 使用分支进行隔离,不同环境使用不同分支,直接在root module下通过terraform init初始化使用
  • 使用terraform workspace进行隔离,与分支方式类似
  • 使用目录进行环境隔离,不同环境使用不同目录进行初始化

流水线信息

  1. pull_request流水线(terraform_pr_check.yml)

任何的PR都会触发(依次执行terraform fmtterraform initterraform validateterraform plan

  1. apply流水线(terraform_merge_apply.yml)

PR merge后触发(依次执行terraform initterraform apply

actioin

PLAN信息展示

项目中的action会将terraform fmtterraform initterraform validateterraform plan执行结果和PLAN详细信息通过comment在pull-reuqest中展示 COMMENT信息

TKE结果展示(prod环境)

COS信息 tke集群信息

gitops-terraform's People

Contributors

tongyiming avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.