/coffeelog

Sample multi-tier cloud-native application hosted on Google Kubernetes Engine (GKE)

Primary LanguageGoApache License 2.0Apache-2.0

coffeelog

Coffeelog is a multi-tier web application composed of microservices, where coffee enthusiasts can log in with their Google accounts and share their coffee experiences with other people.

This is intended to be a sample cloud-native application to showcase the best practices in application deployment, products of Google Cloud Platform and test new features/products.

Coffeelog is written in Go, uses gRPC for communication between microservices. It runs on Google Cloud and uses Cloud Datastore, Cloud Storage, Google Kubernetes Engine, Cloud Container Builder, Stackdriver Logging and Stackdriver Trace.

Setup

The following steps will walk you through on how to prepare requirements, deploy and run this application.

Note: If you see any issues with the steps below, please open an issue.

  1. Requirements
  2. Set up service credentials
  3. Set up storage
  4. Set up a Kubernetes cluster on Google Kubernetes Engine
  5. Set up continuous image build on Container Builder
  6. Set up continuous deployment on Container Builder

Advanced topics:

  1. Set up Network Policy to restrict communication between services
  2. Set up a domain name
  3. πŸ”œ Set up TLS with Let’s Encrypt
  4. πŸ”œ Limit access to secrets with Kubernetes RBAC and Service accounts
  5. πŸ”œ Set up TLS communication between microservices with linkerd

Monitoring:

  1. πŸ”œ Set up distributed tracing with Stackdriver Trace
  2. πŸ”œ Browse application logs with Stackdriver Logging
  3. πŸ”œ Set up alerting with Stackdriver Monitoring

Local development (if you are interested in developing this app further)

  1. Running services directly outside containers
  2. Running locally on Minikube
  3. Running locally on Minikube with Skaffold (RECOMMENDED)

Disclaimer: This is not an official Google product.