Skip to content

Latest commit

 

History

History
390 lines (335 loc) · 18 KB

CHANGELOG.md

File metadata and controls

390 lines (335 loc) · 18 KB

Golang Deployment

Kubernetes Deployment for Simple Golang API

goreport all contributors tags docker pulls download all download latest view clone issues pull requests forks stars license

Available Tags

Alpine

Image name Size
devopscorner/bookstore:latest docker image size default-latest latest
devopscorner/bookstore:alpine docker image size latest
devopscorner/bookstore:alpine-latest docker image size
devopscorner/bookstore:alpine-3.16 docker image size
devopscorner/bookstore:go1.19-alpine3.16 docker image size
devopscorner/bookstore:go1.19.5-alpine3.16 docker image size
devopscorner/bookstore:alpine-3.17 docker image size
devopscorner/bookstore:go1.19-alpine3.17 docker image size
devopscorner/bookstore:go1.19.5-alpine3.17 docker image size

Previous Version - Alpine (Depreciated)

Image name Size
devopscorner/bookstore:alpine-3.15 docker image size
devopscorner/bookstore:go1.19-alpine3.15 docker image size
devopscorner/bookstore:go1.19.3-alpine3.15 docker image size
devopscorner/bookstore:go1.18-alpine3.15 docker image size
devopscorner/bookstore:go1.18-alpine3.16 docker image size

version 4.1

  • All features in version 4.0
  • Refactoring routes for endpoint login into LoginController (validate JSON Token & rendering result token)
  • Refactoring folder Repository Pattern with View for rendering JSON parse response and Const for error response
        .
        ├── .env
        ├── .env.example
        ├── config
        │   ├── config.go
        │   ├── config_test.go
        │   └── const.go
        ├── controller
        │   ├── book_controller.go
        │   ├── book_controller_test.go
        │   ├── login_controller.go
        │   └── login_controller_test.go
        ├── driver
        │   ├── db.go
        │   ├── dynamo.go
        │   ├── mysql.go
        │   ├── psql.go
        │   └── sqlite.go
        ├── go-bookstore.db
        ├── go.mod
        ├── go.sum
        ├── main.go
        ├── main_test.go
        ├── middleware
        │   ├── auth_middleware.go
        │   └── auth_middleware_test.go
        ├── migrate_book.go.example
        ├── migrate_book_dynamo.go.example
        ├── model
        │   └── book.go
        ├── repository
        │   └── book_repository.go
        ├── routes
        │   └── book_routes.go
        └── view
            ├── book_view.go
            ├── error_view.go
            └── login_view.go
    
        9 directories, 29 files
    
  • Added Const definition config/const.go
    ERR_INVALID_BOOK_ID         = "Invalid book ID"
    ERR_INVALID_REQUEST_PAYLOAD = "Invalid request payload"
    ERR_INVALID_CREDENTIALS     = "Invalid credentials"
    ERR_BOOK_NOT_FOUND          = "Book not found!"
    ERR_UPDATE_BOOK             = "Failed to update book"
    ERR_DELETE_BOOK             = "Failed to delete book"
    
  • Added Amazon CodeCatalyst workflow CI/CD in .codecatalyst folder
  • Refactoring middleware routes
  • Added unit test Postman collection

version 4.0

  • All features in version 3.5

  • Refactoring folder Repository Pattern with multiple driver ORM

        .
        ├── config
        │   ├── config.go
        │   └── config_test.go
        ├── controller
        │   ├── book_controller.go
        │   ├── book_controller_test.go
        │   ├── login_controller.go
        │   └── login_controller_test.go
        ├── driver
        │   ├── db.go
        │   ├── dynamo.go
        │   ├── mysql.go
        │   ├── psql.go
        │   └── sqlite.go
        ├── go-bookstore.db
        ├── go.mod
        ├── go.sum
        ├── main.go
        ├── main_test.go
        ├── middleware
        │   ├── auth_middleware.go
        │   └── auth_middleware_test.go
        ├── migrate_book.go.example
        ├── migrate_book_dynamo.go.example
        ├── model
        │   └── book.go
        ├── repository
        │   └── book_repository.go
        └── routes
            └── book_routes.go
    
        8 directories, 23 files
    
  • Refactoring default environment variable

    GIN_MODE=release
    APP_URL=http://localhost
    APP_PORT=8080
    DB_CONNECTION=sqlite
    DB_REGION=ap-southeast-1
    DB_HOST=localhost
    DB_PORT=
    DB_DATABASE=go-bookstore.db
    DB_USERNAME=root
    DB_PASSWORD=
    JWT_AUTH_USERNAME=devopscorner
    JWT_AUTH_PASSWORD=DevOpsCorner@2023
    JWT_SECRET=s3cr3t
    
  • Added multi driver database connection via ORM

    DB_CONNECTION=sqlite
    ---
    Available for:
    - sqlite
    - mysql
    - postgres
    - dynamo
    
  • DynamoDB Connection

    DB_CONNECTION=dynamo
    ---
    DB_DATABASE --> Dynamo Table
    DB_REGION   --> Dynamo Region
    

version 3.5

  • All features in version 3.4
  • Refactoring all folders for MVC Repository Pattern
      .
      ├── config
      │   ├── config.go
      │   └── config_test.go
      ├── controller
      │   ├── book_controller.go
      │   ├── book_controller_test.go
      │   ├── login_controller.go
      │   └── login_controller_test.go
      ├── driver
      │   └── sqlite.go
      ├── go-bookstore.db
      ├── go.mod
      ├── go.sum
      ├── main.go
      ├── main_test.go
      ├── middleware
      │   ├── auth_middleware.go
      │   └── auth_middleware_test.go
      ├── migrate_book.go
      ├── model
      │   └── book.go
      ├── repository
      │   └── book_repository.go
      └── routes
          └── book_routes.go
    
      7 directories, 18 files
    
  • Added JWT Token for security authentification as Middleware
  • Added Unit Test for Contoller, Repository & Main
  • Added Default Environment Variables:
    PORT=8080
    DBNAME=go-bookstore.db
    GIN_MODE=release
    AUTH_USERNAME=devopscorner
    AUTH_PASSWORD=DevOpsCorner@2023
    JWT_SECRET=s3cr3t
    
  • Update Postman Collection for Automation Testing
  • Setup .env to default entrypoint
  • Added environment variable for docker-compose.yml

version 3.4

  • All features in version 3.3
  • Added Terraform script:
    • GitHub, AWS CodeBuild, AWS CodePipeline & Amazon SNS
    • AWS CodeCommit, AWS CodeBuild, AWS CodePipeline & Amazon SNS
  • Added CloudFormation script:
    • GitHub, AWS CodeBuild, AWS CodePipeline & Amazon SNS
    • AWS CodeCommit, AWS CodeBuild, AWS CodePipeline & Amazon SNS

version 3.3

  • All features in version 3.2
  • Deployment for CI/CD Pipeline:
    • ArgoCD, detail here link
    • AWS Developer Tools (AWS CodeCommit, AWS CodeBuild & AWS CodePipeline), detail here link
    • Azure DevOps Pipeline, detail here link
    • Bitbucket Pipeline, detail here link
    • CircleCI Pipeline, detail here link
    • DroneCI Pipeline, detail here link
    • GitHub Action, detail here link
    • GitLab CI/CD, detail here link
    • Jenkins CI & Spinnaker CD, detail here link
    • Jenkins CI/CD, detail here link
    • OpenShift CI/CD, detail here link
    • SemaphoreCI, detail here link
    • Spinnaker CD, detail here link
    • Terraform AWS CodeBuild, AWS CodePipeline & Amazon SNS, detail here link
    • TravisCI, detail here link

version 3.3

  • All features in version 3.2
  • Deployment for CI/CD Pipeline:
    • ArgoCD, detail here link
    • AWS Developer Tools (AWS CodeCommit, AWS CodeBuild & AWS CodePipeline), detail here link
    • Azure DevOps Pipeline, detail here link
    • Bitbucket Pipeline, detail here link
    • CircleCI Pipeline, detail here link
    • DroneCI Pipeline, detail here link
    • GitHub Action, detail here link
    • GitLab CI/CD, detail here link
    • Jenkins CI & Spinnaker CD, detail here link
    • Jenkins CI/CD, detail here link
    • OpenShift CI/CD, detail here link
    • SemaphoreCI, detail here link
    • Spinnaker CD, detail here link
    • Terraform AWS CodeBuild, AWS CodePipeline & Amazon SNS, detail here link
    • TravisCI, detail here link

version 3.2

  • All features in version 3.1
  • Added sample script CI/CD Pipeline with semantic version (semver) docker build images
    • AWS CodePipeline (cicd-aws-codepipeline.yml)
    • Azure DevOps (cicd-azure-devops.yml)
    • Bitbucket (cicd-bitbucket.yml)
    • GitHub Action (cicd-github.yml)
    • GitLab (cicd-gitlab.yml)
    • Jenkins CI/CD (cicd-jenkins.jenkinsfile)

version 3.1

  • All features in version 3.0
  • Upgrade golang version 1.19.5
  • Update Dockerfile.alpine-3.15 for using golang version 1.19.3 for alpine-3.15 (golang:1.19.3-alpine3.15)
  • Update Dockerfile.alpine-3.16 for using golang version 1.19.5 for alpine-3.16 (golang:1.19.5-alpine3.16)
  • Added Dockerfile.alpine-3.17 for using golang version 1.19.5 for alpine-3.17 (golang:1.19.5-alpine3.17)
  • Upgrade dependencies golang go.mod & go.sum
  • Refactoring pattern source code (moving) to path "src"
  • Refactoring CI/CD pipeline with spesific grouping folder
    • AWS CodePipeline (.aws)
    • Azure DevOps (.azure-devops)
    • Bitbucket (.bitbucket)
    • GitHub (.github)
    • GitLab (.gitlab)
    • Jenkins (.jenkins) CI/CD with Spinnaker CD
  • Refactoring build, tag, push & pull script for DockerHub
  • Refactoring build, tag, push & pull script for ECR
  • Refactoring makefile script automation for build, tag, push & pull

version 3.0

  • All features in version 2.3
  • Upgrade golang version 1.19
  • Update Dockerfile for using golang version 1.19 (golang:1.19.2-alpine3.15 & golang:1.19.2-alpine3.16)
  • Added docker-compose configuration & running script docker-compose
  • Upgrade dependencies golang go.mod & go.sum
  • Refactoring source code (moving) dependencies to devopscorner/golang-deployment
  • Update gorm model & sqlite connection driver

version 2.3

  • All features in version 2.2
  • Refactoring path & references docs

version 2.2

  • Add multiple container registry (DockerHub & ECR) deployment
  • Update Golang version 1.18 for Alpine 3.15 & Alpine 3.16 container
  • Refactoring makefile for added multiple container registry
  • Add documentation for build, tag & push container image to DockerHub, go to this link
  • Add documentation for build, tag & push container to Amazon ECR (Elastic Container Registry), go to this link
  • Refactoring workflow documentation, go to this link

version 2.1


version 2.0

  • IAM Role sample for CodeBuild & CodePipeline
  • Buildspec CodePipeline for Build Container Image inside CodeBuild using Spesific CodeCommit
  • Buildspec CodePipeline for Deploy EKS Cluster inside CodeBuild using Spesific CodeCommit
  • Buildspec without CodePipeline for Build Container Image inside CodeBuild using 3rd party repository (GitHub, GitLab, BitBucket, Azure DevOps)
  • Buildspec without CodePipeline for Deploy EKS Cluster inside CodeBuild using 3rd party repository (GitHub, GitLab, BitBucket, Azure DevOps)
  • Setup ~/.ssh/known_hosts for authorization host 3rd party repository
  • Setup ~/.ssh/config for authorization config ssh key 3rd party repository
  • Dynamic Tags with COMMIT_HASH

version 1.0

  • Golang API Rest (bookstore)
  • Postman Collection
  • Container Builder GO
  • Push Container to ECR
  • Deploy Kubernetes with Helm Values
  • Buildspec for AWS CodeBuild & AWS CodePipeline

version 0.1

  • First deployment GO Apps
  • Script build image
  • Script ecr-tag & ecr-push
  • Helm deployment values
  • Upgrade gomod, using GO 1.17
  • Dockerfile using golang:1.17-alpine3.15