NOTE:
- This is still very much a work-in-progress
- Some features in the list are not completed.
- I will be resetting
master
and the repo history regularly
This application serves an example of a full-stack application built for Kubernetes.
See demo for instructions on deploying this application.
The application is running at http://polykube.io.
- Finish the frontend. (Angular2)
-
Docker: Minimal production containers including only the application (no source code, no build tools, etc)
-
Kubernetes: Fast, reliable and repeatable deployments using Kubernetes Deployments, Services, DaemonSets and Secrets.
-
.NET Core: Example AspNetCore API web application.
-
Angular2: Example
angular2-material
frontend Typescript application
-
Provide an example of how to use Docker for local development. This repo shows how you can use docker to have a full development environment that only relies on
make
anddocker
being available. -
Provide an example of how to build Docker containers meant for production.
-
Provide an example of using Kubernetes for production container management,
-
Encourage Docker adoption, even for software that doesn't need to be run with Docker. The fact that anyone can install
git
,make
,docker
, and clone my repository and instantly have a working development environment is a big deal. I can't imagine the number of projects that I've fiddled with for hours before abandoning because I couldn't get the right version ofnode
/npn
/dependencies and the application code to get along together. These issues largely disappear if there is aDockerfile
that defines the development environment for the project. -
Encourage better Docker practices. Your production service doesn't need a compiler. Your production service doesn't need a copy of your application source code. So why ship them and their bloat to your production environment? This repo includes an example of how one can have separate
build
andruntime
containers so that you can ship only your final binary bits (and their dependencies) to production. -
Encourage Kubernetes adoption. I continue to see people who think they don't need the "complexity" of Kubernetes, and then wind up re-inventing the so-called complexity via bash scripts that are subject to less design and review than the Kubernetes project. Hopefully this repo can demonstrate the few yaml files needed to make a project deployable into Kubernetes.
-
Basics
Uses Deployments and Services to abstract and manage your actual application.
-
Secrets
Uses Secrets to provide database and redis passwords at runtime. This eliminates the need for application secrets to ever live in the application source code repository.
-
Service Discovery
Uses the Cluster DNS addon to resolve services at runtime in cluster. (The dotnet api simply connects to postgres via
tcp://db:5432
, redis viatcp://redis:6379
, etc.)