Kubernetes Deployment for Simple Golang API (Bookstore) --- Mirror Repository from GitHub, GitLab, BitBucket, Azure DevOps to AWS CodeCommit --- GO Repository Pattern
Golang Deployment
Kubernetes Deployment for Simple Golang API
Available Tags
Alpine
| Image name | Size | |------------|------| | devopscorner/bookstore:latest |
| |
devopscorner/bookstore:alpine |
| |
devopscorner/bookstore:alpine-latest | | |
devopscorner/bookstore:alpine-3.16 | | |
devopscorner/bookstore:go1.19-alpine3.16 | | |
devopscorner/bookstore:go1.19.5-alpine3.16 | | |
devopscorner/bookstore:alpine-3.17 | | |
devopscorner/bookstore:go1.19-alpine3.17 | | |
devopscorner/bookstore:go1.19.5-alpine3.17 | |
Previous Version - Alpine (Depreciated)
| Image name | Size | |------------|------| |devopscorner/bookstore:alpine-3.15 | devopscorner/bookstore:go1.19-alpine3.15 | devopscorner/bookstore:go1.19.3-alpine3.15 | devopscorner/bookstore:go1.18-alpine3.15 | devopscorner/bookstore:go1.18-alpine3.16 | Documentation
- 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:
GO Repository Pattern
- Folder Structure
.
โโโ .env
โโโ .env.example
โโโ config
โย ย โโโ config.go
โย ย โโโ config_test.go
โย ย โโโ const.go
โโโ controller
โย ย โโโ book_controller.go
โย ย โโโ bookcontrollertest.go
โย ย โโโ login_controller.go
โย ย โโโ logincontrollertest.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
โย ย โโโ authmiddlewaretest.go
โโโ migrate_book.go.example
โโโ migratebookdynamo.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=
JWTAUTHUSERNAME=devopscorner
JWTAUTHPASSWORD=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
Reproduce Testing
- RESTful API Testing, go to this link
Tested Environment
Versioning
- 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
Security Check
Make sure that you didn't push sensitive information in this repository
- [ ] AWS Credentials (AWSACCESSKEY, AWSSECRETKEY)
- [ ] AWS Account ID
- [ ] AWS Resources ARN
- [ ] Username & Password
- [ ] Private (idrsa) & Public Key (idrsa.pub)
- [ ] DNS Zone ID
- [ ] APP & API Key
Copyright
- Author: Dwi Fahni Denni (@zeroc0d3)
- Vendor: DevOps Corner Indonesia (devopscorner.id)
- License: Apache v2