This GitHub project contains the examples from Kubernetes Patterns - Reusable Elements for Designing Cloud-Native Applications book by Bilgin Ibryam and Roland Huß
Installation instructions for the example prerequisites are summarised in INSTALL. By default, you need access to a vanilla Kubernetes installation, like Minikube. However, if add-ons are required, the example description explains this additional requirement.
For feedback, issues, or questions in general, please use the issue tracker to open cases. Also, we love contributions like spelling fixes, bug fixes, and improvements;… Please open pull requests; we are happy to review them!
All examples are categorised according to the Book’s patterns category. Each example is contained in a different directory per pattern and is self-contained. [1]
- Predictable Demands
-
Our sample random generator deals with hard requirements on ConfigMap and PersistentVolumeClaims and resource limits.
- Declarative Deployment
-
Rolling and fixed update of the random generator Deployment from version 1.0 to 2.0.
- Health Probe
-
Liveness and Readiness probes for the random generator.
- Managed Lifecycle
-
postStart
andpreStop
hooks are demonstrated with the random generator application. - Automated Placement
-
These examples demonstrate a node selector, pod and node affinity, taint, and tolerations.
- Batch Job
-
Generate thousands of random numbers into a file with a batch job
- Periodic Job
-
Reuses the link: behavioral/BatchJob/README.adoc[Batch Job] example, but runs it periodically at a configured schedule
- Daemon Service
-
Sample maintenance script for maintenance jobs on every node of a cluster
- Singleton Service
-
Example of a PodDisruptionBudget for controlling voluntary disruptions
- Stateless Service
-
Example for a stateless service deployed with a ReplicaSet
- Stateful Service
-
StatefulSet example for our random-generator
- Service Discovery
-
Various ways how to access our random-generator REST service
- Self Awareness
-
Using the Downward API for setting environment variables and mounting resource fields as files with the random-generator service.
- Init Container
-
Initialize an HTTP server’s HTML source from a remote git repository
- Sidecar
-
Git polling example for a sidecar
- Adapter
-
Adapter for exporting timing information from the sample random-generator application in a Prometheus format
- Ambassador
-
Ambassador for moving on the log of the random-generator
- EnvVar Configuration
-
A simple example of how to use environment variables literally and from ConfigMaps and Secrets for our random-generator service.
- Configuration Resource
-
Example of how to configure the random-generator Spring Boot application with a ConfigMap
- Immutable Configuration
-
Several examples show how to use immutable configuration containers for application configuration. This directory includes examples of the simple Docker case and Kubernetes.
- Configuration Template
-
This example shows how to use a template configuration
standalone.xml
, which is processed with a template processed and filled with data from ConfigMap before a Wildfly server is started.
- Process Containment
-
Example of how you can restrict the privileges of containers when running in Kubernetes.
- Network Segmentation
-
This example shows you how you can restrict network access to Pods via Network Policies and how to control HTTP traffic with Istio’s Authentication Policies.
- Secure Configuration
-
Examples show various techniques for storing configuration data securely in a Kubernetes Cluster.
- Access Control
-
Example for Kubernetes' RBAC access control subsystem for controlling the access to the Kubernetes API server.
- Controller
-
A simple, pure shell-based controller watches ConfigMap resources for changes and restarts Pods using a label selector provided as an annotation. An additional example controller exposes an Ingress route when it detects an
exposeService
label attached to the service. - Operator
-
Operator based on the ConfigMap watch controller and introduces a CRD ConfigWatcher, which connects a ConfigMap with a set of Pods to restart in case of a config change.
- Elastic Scale
-
Horizontal and vertical scaling examples with the random-generator service [*]
- Image Builder
-
These examples demonstrate the setup of a chained build on OpenShift and use Knative build for doing builds within the cluster.
This work is licensed under a Creative Commons Attribution 4.0 International License