Skip to content
No description, website, or topics provided.
Branch: master
Clone or download
Pull request Compare This branch is 1 commit behind red010b37:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
cmd
pb
pkg
request-calls
scripts/deploy/prod
.gitignore
.travis.yml
Gopkg.lock
Gopkg.toml
README.md
config.sample.yaml

README.md

Go kit skeleton Micro Service

This GoKit Microservice skeleton designed to be copied and used as a starting point Google AppEngine based MicroServices. However it is setup to be easily be adapted to run anywhere by modifying only skelconfig/config.go

Architecture was taken and adapted from Anton Klimenko's Medium Article Microservices in Go: https://medium.com/seek-blog/microservices-in-go-2fc1570f6800

Please feel free to use and remix.

Skeleton implementation details

  • http transport layer
  • grpc transport layer
  • separation of concerns
  • easy config pattern
  • HealthCheck implementation example
  • Login implementation example
  • travis, test and deploy support
  • deploy scripts
  • App Engine app.yaml with evn vars on deploy

Running with Google AppEngine - Flexible env

Perquisites

  • gcloud cli installed
  • service account - json file
  • kms key ring

Local Dev

Running the app in its current form a google service-account an encrypted config.yml file.

You will need to set the evn var - this will be used to decrypt the config.yml at runtime and expose it to the app GOOGLE_APPLICATION_CREDENTIALS=gcloud-service-account.json

How to Encrypting config.yml

gcloud kms encrypt --location=global --keyring=[key-ring-name] --key=l[key-name] --plaintext-file=config.yaml --ciphertext-file=local-config.yaml.enc

Running with AWS or other platforms

The skeleton implementation is agnostics apart from the skelconfig.config.go file. Changing this or deleting most of its content will remove the platform deps.

Or conversely implement your own config that allows you to easily access your platforms specific features.

You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.