# go-cli **Repository Path**: kxu913/go-cli ## Basic Information - **Project Name**: go-cli - **Description**: base on echo to create a go web application - **Primary Language**: Unknown - **License**: AGPL-3.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-04-02 - **Last Updated**: 2023-06-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: Go语言, Cli ## README # Go-cli **Go-cli是一个基于golang+echo的一个快速创建微服务的工具,如果你拥有Docker和Kubernetes+Istio的环境,也可以通过serverless-generator中包含的Api快速的生成基于Istio的Api.** ## 演示 ## 快速开始 - 推荐通过docker-compose启动
在script目录下运行 `docker-compose up -d` - 克隆此项目到本地
分别启动`basic-generator`、`db-api-generator`、`graphql-generator`、`microservice-generator`,`serverless-generator` ## 模块介绍 ### microservice-generator 生成一个完整的微服务API,返回一个代码zip包。子模块参数参考下面: - Basic:参数介绍参考`basic-generator`。 - DB:参数介绍参考`db-api-generator`。 - Graphql: 可选,不填就不会生成Graphql相应代码,参数介绍参考`graphql-generator` - 示例 ``` curl --location 'http://localhost:1325/it/v1/create' \ --header 'Content-Type: application/json' \ --data '{ "Basic": { "Prefix": "/api/v1", "ProjectName": "it", "Port": 8778, "Modules": [ "DB" ] }, "DB": { "Host": "172.22.192.1", "DBName": "workflow", "DBPort": 5432, "User": "postgres", "Pwd": "postgres", "Table": "task" }, "Graphql": { "QueryName": "workflow", "QueryDescription": "Get Workflow", "SQL": "SELECT workflow.id AS workflow_id, workflow.status AS workflow_status FROM workflow" } }' ``` ### basic-generator 用来创建一个最基础的项目框架,可以生成cli在本地运行。包含参数: - ProjectName:生成项目名称。 - Prefix:生成API前缀 - Port: 启动端口 - Modules:包含生成模块,可选参数 'JWT', 'DB', 'BASIC','ALL' - 示例 ``` curl --location 'http://localhost:1323/cli/v1/init' \ --header 'Content-Type: application/json' \ --data '{ "ProjectName": "it", "Prefix": "/api/v1", "Port": 8777, "Modules": [ "DB" ] }' ``` ### db-api-generator 基于basic-generator创建的项目,生成数据库代码,需要提供可连接的数据库参数。包含参数: - ProjectName:项目名称,同上。 - Prefix:API前缀,同上。 - Host: 数据库服务器。 - DBname:数据库名称。 - DBPort:数据库端口。 - User: 用户名。 - Pwd: 密码。 - 示例 ``` curl --location 'http://localhost:1324/cli/v1/db/workflow' \ --header 'Content-Type: application/json' \ --data '{ "ProjectName": "it", "Prefix": "/api/v1", "Host": "172.22.192.1", "DBname": "workflow", "DBPort": 5432, "User": "postgres", "Pwd":"postgres" }' ``` ### graphql-generator 基于basic-generator创建的项目,生成Graphql代码,需要提供执行的数据库SQL。包含参数: - ProjectName:项目名称,同上。 - QueryName:Graphql的查询名称。 - QueryDescription: Graphql的查询描述。 - SQL:查询数据需要的SQL。 - 示例 ``` curl --location 'http://localhost:9004/graphql/v1/sql' \ --header 'Content-Type: application/json' \ --data '{ "ProjectName": "it", "QueryName": "task", "QueryDescription": "Get Task", "SQL":"SELECT task.id AS task_id, workflow.id AS workflow_id, task.status AS task_status, task.started_time AS task_start_time, workflow.status AS workflow_status FROM task INNER JOIN workflow ON task.workflow_id=workflow.id" }' ``` ### serverless-generator 通过API部署docker image到Kubernetes,以及部署API到Istio: #### 部署服务到Kubernetes以及注入api到Istio。 - `http://localhost:9003/cli/deploy` - MetaData: - Name: Kubernetes服务名称。 - Version: Kubernetes服务版本。 - CloudProvider: 公有云的ECR地址,需要在代码里面配置你的账号,目前支持 `tx` 和 `ali` - Prefix: Api前缀。 - Container: - Image:部署镜像。// 会通过project来获取镜像,你也可以指定镜像 - Port:容器端口。// 会通过Dockerfile来获取端口,你也可以指定端口。 - ForceUpdate:强制更新,如果为`true`,每次部署都会重新拉取镜像。 - RunAsRoot:是否以`root`启动容器。 - Replicas:实例个数。 - Environments:容器环境变量。 - 示例 ``` curl --location 'http://localhost:9003/cli/deploy' \ --header 'Content-Type: application/json' \ --data '{ "MetaData": { "Name": "it", "Version": "v1", "CloudProvider": "tx", "Prefix":"/api/v1" }, "Container": { "ForceUpdate": true, "RunAsRoot": false, "Environments": [ { "name": "db_host", "value": "172.22.192.1" } ] }, "Replicas": 1 }' ``` ## 作者 [Kevin Xu](http://kevin913.com.cn/about)