Skip to content

Beer App lightweight SPA UI and backend microservices with K8s, Istio, and Apigee integration

License

Notifications You must be signed in to change notification settings

phriscage/beer-app

Repository files navigation

Beer App

This application provides information about beer data in a simple interface. The application is comprised of a lightweight, responsive browser interface, a Beer Data API, and corresponding Beer microservices. The Beer API is exposed either through an API Management proxy endpoint or Istio ingress point with Apigee Edge enforcing AuthN/AuthZ, Security, Quota, Rate limting, etc. The Beer API is constructed from various Beer microservices (Details, Reviews, Likes, etc.) that run in a Kubernetes (K8s) cluster. Istio is installed in the K8s cluster to provide service mesh management by leveraging Envoy as a sidecar proxy. Istio provides traffic management, observability, policy enforcement, and security (mTLS) for the cluster services. The Apigee Istio Mixer plugin provides additional security and governance with api key/token validation, quota enforcement, and analytics.

These are the API Management deployment patterns:

  • Edge Proxy environment: The Beer API and services reside in a K8s environment (private or public cloud) and are proxied directly from the API Management Edge proxy. This is the default example.

alt text

  • Mesh Proxy environment: The Beer API and services reside in a K8s environment (private or public cloud) and are proxied directly from the Istio/Envoy sidecar proxies. This is the Apigee Istio Mixer example.

alt text

  • Facade Proxy environment: The Beer API services reside in separate K8s environment(s) (private and public cloud) or namespaces and the Beer API is orchestrated and proxied from the API Management platform.

alt text

The Beer App API and coresponding backend services are polyglot in nature to showcase how various technologies can be utilized for modern application development. The backend service's datastores are traditional relational and non-relational databases to highlight how they can be easliy swapped for a cloud-based managed dataservice.

The Beer App services and source respositories are below:

Service Language Description
beer-app-frontend VueJS A lightweight, responsive browser interface to showcase the application.
beer-api Python The Beer API orchestrates the coresponding backend microservice calls and retrieves data for the consuming clients.
details-api Python This service provides details about a single or collection of beers.
details-db MySQL This is the backend relational datastore for the beer details.
reviews-api Go This service provides reviews about a single or collection of beers.
reviews-db Elasticsearch This is the backend non-relational, document datastore for the beer reviews.
likes-api Go This service provides likes about a single or collection of beers.

The architecture diagram below outlines the different types of consumers and services in the cluster. The communication path for the client requests will be determined by Istio virtual service request routing via headers or access token claims.

alt text

There are a few prerequisites that need to be validated and/or installed before continuing to the setup. The Setup contains all the commands required to setup the environment to run the demo and labs.

  • Frontend has not been containerized and ported to K8s yet. Manual installation required for now... updated
  • Add Cloud DNS A/CNAME record creation in app

About

Beer App lightweight SPA UI and backend microservices with K8s, Istio, and Apigee integration

Resources

License

Stars

Watchers

Forks

Packages