GithubHelp home page GithubHelp logo

wanghaoxi3000 / advproject Goto Github PK

View Code? Open in Web Editor NEW
7.0 1.0 8.0 45 KB

一个基于Gin框架,以DevOps开发模式搭建的项目模板

Dockerfile 11.33% Go 88.67%
devops gin jenkinsfile kubernetes dockerfile

advproject's Introduction

advproject

一个基于Gin框架,以DevOps开发模式搭建的项目模板。

项目组成

DevOps 集文化理念、实践和工具于一身,可以提高组织高速交付应用程序和服务的能力,与使用传统软件开发和基础设施管理流程相比,能够帮助组织更快地发展和改进产品。这种速度使组织能够更好地服务其客户,并在市场上更高效地参与竞争。

  • 持续集成:一种软件开发实践经验,开发人员会定期将他们的代码变更合并到一个**存储库中,之后系统会自动运行构建和测试操作
    • GitHub
    • webhook 推送 Jenkins
  • 持续交付付:自动构建和测试代码更改,并为将其发布到生产环境做好准备,实现对持续集成的扩展
    • Jenkins Pipeline 测试,生成镜像,部署
  • 基础设施即代码:使用基于代码的工具来连接基础设施,并且能够以处理应用程序代码的方式来处理基础设施。基础设施和服务器由代码进行定义。
  • 监控和日志记录:组织对各项指标和日志进行监控,以了解应用程序和基础设施性能如何影响其产品的最终用户体验
    • zap 结构化日志输出,可配合k8s ELK插件使用
    • k8s livenessProbe 容器健康检查

配置说明

接口文档

安装swag cli

$ go get -u github.com/swaggo/swag/cmd/swag

生成API文档,每次接口说明有更新都需要更新

$ swag init

接口文档地址: http://localhost:3000/swagger/index.html

系统配置

默认配置硬编码在config模块中,可通过环境变量覆盖,开发时在项目目录下新建.env文件来快速修改环境变量。

变量名 说明 默认值 可选值
RUN_MODE 测试/生产环境 develop develop, prod

日志输出

使用Uber开源的高性能日志框架zap来作为日志输出,直接使用了zap默认的格式配置,在develop开发环境下以易读的行模式输出,prod生产下以结构化模式输出。

状态接口

  • 状态输出,用于定时请求进行健康检查 /api/v1/status
  • hostname输出,在多节点部署时测试是哪个节点 /api/v1/hostname

Jenkinsfile

Jenkinsfile 中镜像存储使用了腾讯云容器服务的私有镜像仓库和 Server酱 来推送通知,可根据实际修改。同时通过变量名来使用了一些私有密钥,需要提前在Jenkins的凭证管理中提前配置:

  • tcloud-docker-reg 镜像仓库访问密钥
  • kubctl-config kubectl密钥文件
  • PUSH_KEY Server酱通知推送的密钥

k8s deployment

deployment-template.yaml中定义Kubernetes部署模板,通过image指定了拉取镜像的地址,可根据需要修改。imagePullSecrets中使用了拉取私有镜像的config name,需要提前在k8s中配置。

advproject's People

Contributors

wanghaoxi3000 avatar dependabot[bot] avatar

Stargazers

  avatar Chaos avatar  avatar Jun Gu avatar  avatar frank avatar 张越 avatar

Watchers

 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.