Kubernetes Deployment for Simple Golang API
- Index Documentation, go to this link
- Build, Tag & Push container image to DockerHub, go to this link
- Build, Tag & Push container image to Amazon ECR (Elastic Container Registry), go to this link
- Workflow CI/CD Pipeline, go to this link
- GitOps & GitOps DevSecOps Flow (Azure DevOps Pipeline), go to this link
- Deployments:
- ArgoCD, detail here link
- AWS CloudFormation, detail here link
- AWS Developer Tools (AWS CodeCommit, AWS CodeBuild & AWS CodePipeline), detail here link
- Amazon CodeCatalyst Pipeline, 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
-
Folder Structure
. ├── .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
-
Environment Variables (Default)
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
-
Multi Driver Connection
DB_CONNECTION=sqlite --- Available for: - sqlite - mysql - postgres - dynamo
-
DynamoDB Connection
DB_CONNECTION=dynamo --- DB_DATABASE --> Dynamo Table DB_REGION --> Dynamo Region
- RESTful API Testing, go to this link
-
Docker version
docker version Client: Cloud integration: v1.0.22 Version: 20.10.17-rd API version: 1.41 Go version: go1.17.11 Git commit: c2e4e01 Built: Fri Jul 22 18:31:17 2022 OS/Arch: darwin/amd64 Context: default Experimental: true
-
Docker-Compose version
docker-compose -v --- Docker Compose version v2.11.1
-
AWS Cli
aws --version --- aws-cli/2.8.7 Python/3.9.11 Darwin/21.6.0 exe/x86_64 prompt/off
-
Terraform Cli
terraform version --- Terraform v1.3.5 on darwin_amd64 - provider registry.terraform.io/hashicorp/aws v3.74.3 - provider registry.terraform.io/hashicorp/local v2.1.0 - provider registry.terraform.io/hashicorp/null v3.1.0 - provider registry.terraform.io/hashicorp/random v3.1.0 - provider registry.terraform.io/hashicorp/time v0.7.2
-
Terraform Environment Cli
tfenv -v --- tfenv 2.2.2
-
Golang Version Manager (GVM)
gvm version --- Go Version Manager v1.0.22 installed at /Users/devopscorner/.gvm
-
Golang Version
go version --- go version go1.19.6 darwin/arm64
Make sure that you didn't push sensitive information in this repository
- AWS Credentials (AWS_ACCESS_KEY, AWS_SECRET_KEY)
- AWS Account ID
- AWS Resources ARN
- Username & Password
- Private (id_rsa) & Public Key (id_rsa.pub)
- DNS Zone ID
- APP & API Key
- Author: Dwi Fahni Denni (@zeroc0d3)
- Vendor: DevOps Corner Indonesia (devopscorner.id)
- License: Apache v2