Repository files navigation

Kubernetes Patterns

Kubernetes Patterns - Examples

Creative Commons LicenseLink Check

This GitHub project contains the examples from Kubernetes Patterns - Reusable Elements for Designing Cloud Native Applications, Second Editionbook by Bilgin Ibryam and Roland Huß

Important
Most of the examples have been updated for this second edition of the book and examples have been added for the new chapters. However, we are not fully finished yet with updating everything. You can follow the status on the example roadmap. We expect to be finished at the end of May 2023. Every pattern that has not yet been updated is listed below with an [*]. Thanks for your patience, and we hope you enjoy the book!
Note
All the examples that we have updated have been checked on minikube or kind with Kubernetes 1.26. If you run in any issues, please open a issue on this repository, we will take as soon as possible.

Installation instructions for the example prerequisites are summarized 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.

All of these examples have been tested on Minikube on a macOS with ARM architecture (M1), but they should work on any Kubernetes installation. Be sure to explore the provided example resources, as they contain a wealth of comments and clarifications about the concepts explained in each pattern.

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!

Patterns

All examples are categorized according to the Book’s patterns category. Each example is contained in a different directory per pattern and is self-contained. [1]

Foundational Patterns

Predictable Demands

Explore our sample random generator with strict requirements on ConfigMap and PersistentVolumeClaims as well as resource limits.

Declarative Deployment

Learn about rolling and fixed updates for the random generator Deployment from version 1.0 to 2.0.

Health Probe

Discover Liveness, Readiness, and Startup probes for the random generator, along with an example of using readiness gates.

Managed Lifecycle

Examine the implementation of postStart and preStop hooks for the random generator application.

Automated Placement

Dive into examples demonstrating node selector, pod and node affinity, taints, and tolerations.

Behavioral Patterns

Batch Job

Create thousands of random numbers in a file using a batch job.

Periodic Job

Employ the Batch Job example to run periodic jobs according to a predefined schedule.

Daemon Service

Investigate a sample maintenance script for executing maintenance tasks on every node in a cluster.

Singleton Service

Delve into a PodDisruptionBudget example for managing voluntary disruptions.

Stateless Service

Examine a stateless service deployed with a ReplicaSet.

Stateful Service

Explore a StatefulSet example featuring our random-generator.

Service Discovery

Uncover various ways to access our random-generator REST service.

Self Awareness

Utilize the Downward API to set environment variables and mount resource fields as files within the random-generator service.

Structural Patterns

Init Container

Initialize an HTTP server’s HTML source by fetching it from a remote git repository.

Sidecar

Inspect a git polling example implemented as a sidecar.

Adapter

Examine an adapter that exports timing information from the sample random-generator application in a Prometheus-compatible format.

Ambassador

Investigate an ambassador for processing the log of the random-generator.

Configuration Patterns

EnvVar Configuration

Learn how to use environment variables, both literal and sourced from ConfigMaps and Secrets, for our random-generator service.

Configuration Resource

Discover how to configure the random-generator Spring Boot application using a ConfigMap.

Immutable Configuration

Review examples that demonstrate using immutable configuration containers for application configuration in Docker and Kubernetes.

Configuration Template

See how a template configuration standalone.xml is processed using a template processor and filled with data from ConfigMap before starting a Wildfly server.

Security Patterns

Process Containment

Explore how to restrict container privileges when running in Kubernetes.

Network Segmentation

Learn how to limit network access to Pods using Network Policies and control HTTP traffic with Istio’s Authentication Policies.

Secure Configuration[*]

Examine various techniques for securely storing configuration data in a Kubernetes Cluster.

Access Control[*]

Discover Kubernetes' RBAC access control subsystem for managing access to the Kubernetes API server.

Advanced Patterns

Controller

A simple 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

Explore an operator based on the ConfigMap watch controller, introducing a CRD ConfigWatcher that connects a ConfigMap with a set of Pods to restart in case of a config change.

Elastic Scale[*]

Investigate horizontal and vertical scaling examples with the random-generator service.

Image Builder[*]

Examine examples demonstrating the setup of a chained build on OpenShift and using Knative build for performing builds within the cluster.


1. Examples marked with an "*" are still in progress to be updated.

About

Examples for "Kubernetes Patterns - Reusable Elements for Designing Cloud Native Applications", Second Edition

Resources

Stars

1.1k stars

Watchers

44 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

Kubernetes Patterns

Kubernetes Patterns - Examples

Creative Commons LicenseLink Check

This GitHub project contains the examples from Kubernetes Patterns - Reusable Elements for Designing Cloud Native Applications, Second Editionbook by Bilgin Ibryam and Roland Huß

Important
Most of the examples have been updated for this second edition of the book and examples have been added for the new chapters. However, we are not fully finished yet with updating everything. You can follow the status on the example roadmap. We expect to be finished at the end of May 2023. Every pattern that has not yet been updated is listed below with an [*]. Thanks for your patience, and we hope you enjoy the book!
Note
All the examples that we have updated have been checked on minikube or kind with Kubernetes 1.26. If you run in any issues, please open a issue on this repository, we will take as soon as possible.

Installation instructions for the example prerequisites are summarized 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.

All of these examples have been tested on Minikube on a macOS with ARM architecture (M1), but they should work on any Kubernetes installation. Be sure to explore the provided example resources, as they contain a wealth of comments and clarifications about the concepts explained in each pattern.

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!

Patterns

All examples are categorized according to the Book’s patterns category. Each example is contained in a different directory per pattern and is self-contained. [1]

Foundational Patterns

Predictable Demands

Explore our sample random generator with strict requirements on ConfigMap and PersistentVolumeClaims as well as resource limits.

Declarative Deployment

Learn about rolling and fixed updates for the random generator Deployment from version 1.0 to 2.0.

Health Probe

Discover Liveness, Readiness, and Startup probes for the random generator, along with an example of using readiness gates.

Managed Lifecycle

Examine the implementation of postStart and preStop hooks for the random generator application.

Automated Placement

Dive into examples demonstrating node selector, pod and node affinity, taints, and tolerations.

Behavioral Patterns

Batch Job

Create thousands of random numbers in a file using a batch job.

Periodic Job

Employ the Batch Job example to run periodic jobs according to a predefined schedule.

Daemon Service

Investigate a sample maintenance script for executing maintenance tasks on every node in a cluster.

Singleton Service

Delve into a PodDisruptionBudget example for managing voluntary disruptions.

Stateless Service

Examine a stateless service deployed with a ReplicaSet.

Stateful Service

Explore a StatefulSet example featuring our random-generator.

Service Discovery

Uncover various ways to access our random-generator REST service.

Self Awareness

Utilize the Downward API to set environment variables and mount resource fields as files within the random-generator service.

Structural Patterns

Init Container

Initialize an HTTP server’s HTML source by fetching it from a remote git repository.

Sidecar

Inspect a git polling example implemented as a sidecar.

Adapter

Examine an adapter that exports timing information from the sample random-generator application in a Prometheus-compatible format.

Ambassador

Investigate an ambassador for processing the log of the random-generator.

Configuration Patterns

EnvVar Configuration

Learn how to use environment variables, both literal and sourced from ConfigMaps and Secrets, for our random-generator service.

Configuration Resource

Discover how to configure the random-generator Spring Boot application using a ConfigMap.

Immutable Configuration

Review examples that demonstrate using immutable configuration containers for application configuration in Docker and Kubernetes.

Configuration Template

See how a template configuration standalone.xml is processed using a template processor and filled with data from ConfigMap before starting a Wildfly server.

Security Patterns

Process Containment

Explore how to restrict container privileges when running in Kubernetes.

Network Segmentation

Learn how to limit network access to Pods using Network Policies and control HTTP traffic with Istio’s Authentication Policies.

Secure Configuration[*]

Examine various techniques for securely storing configuration data in a Kubernetes Cluster.

Access Control[*]

Discover Kubernetes' RBAC access control subsystem for managing access to the Kubernetes API server.

Advanced Patterns

Controller

A simple 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

Explore an operator based on the ConfigMap watch controller, introducing a CRD ConfigWatcher that connects a ConfigMap with a set of Pods to restart in case of a config change.

Elastic Scale[*]

Investigate horizontal and vertical scaling examples with the random-generator service.

Image Builder[*]

Examine examples demonstrating the setup of a chained build on OpenShift and using Knative build for performing builds within the cluster.


1. Examples marked with an "*" are still in progress to be updated.

About

Examples for "Kubernetes Patterns - Reusable Elements for Designing Cloud Native Applications", Second Edition

Resources

Stars

1.1k stars

Watchers

44 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Kubernetes Patterns

Kubernetes Patterns - Examples

Creative Commons LicenseLink Check

This GitHub project contains the examples from Kubernetes Patterns - Reusable Elements for Designing Cloud Native Applications, Second Editionbook by Bilgin Ibryam and Roland Huß

Important
Most of the examples have been updated for this second edition of the book and examples have been added for the new chapters. However, we are not fully finished yet with updating everything. You can follow the status on the example roadmap. We expect to be finished at the end of May 2023. Every pattern that has not yet been updated is listed below with an [*]. Thanks for your patience, and we hope you enjoy the book!
Note
All the examples that we have updated have been checked on minikube or kind with Kubernetes 1.26. If you run in any issues, please open a issue on this repository, we will take as soon as possible.

Installation instructions for the example prerequisites are summarized 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.

All of these examples have been tested on Minikube on a macOS with ARM architecture (M1), but they should work on any Kubernetes installation. Be sure to explore the provided example resources, as they contain a wealth of comments and clarifications about the concepts explained in each pattern.

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!

Patterns

All examples are categorized according to the Book’s patterns category. Each example is contained in a different directory per pattern and is self-contained. [1]

Foundational Patterns

Predictable Demands

Explore our sample random generator with strict requirements on ConfigMap and PersistentVolumeClaims as well as resource limits.

Declarative Deployment

Learn about rolling and fixed updates for the random generator Deployment from version 1.0 to 2.0.

Health Probe

Discover Liveness, Readiness, and Startup probes for the random generator, along with an example of using readiness gates.

Managed Lifecycle

Examine the implementation of postStart and preStop hooks for the random generator application.

Automated Placement

Dive into examples demonstrating node selector, pod and node affinity, taints, and tolerations.

Behavioral Patterns

Batch Job

Create thousands of random numbers in a file using a batch job.

Periodic Job

Employ the Batch Job example to run periodic jobs according to a predefined schedule.

Daemon Service

Investigate a sample maintenance script for executing maintenance tasks on every node in a cluster.

Singleton Service

Delve into a PodDisruptionBudget example for managing voluntary disruptions.

Stateless Service

Examine a stateless service deployed with a ReplicaSet.

Stateful Service

Explore a StatefulSet example featuring our random-generator.

Service Discovery

Uncover various ways to access our random-generator REST service.

Self Awareness

Utilize the Downward API to set environment variables and mount resource fields as files within the random-generator service.

Structural Patterns

Init Container

Initialize an HTTP server’s HTML source by fetching it from a remote git repository.

Sidecar

Inspect a git polling example implemented as a sidecar.

Adapter

Examine an adapter that exports timing information from the sample random-generator application in a Prometheus-compatible format.

Ambassador

Investigate an ambassador for processing the log of the random-generator.

Configuration Patterns

EnvVar Configuration

Learn how to use environment variables, both literal and sourced from ConfigMaps and Secrets, for our random-generator service.

Configuration Resource

Discover how to configure the random-generator Spring Boot application using a ConfigMap.

Immutable Configuration

Review examples that demonstrate using immutable configuration containers for application configuration in Docker and Kubernetes.

Configuration Template

See how a template configuration standalone.xml is processed using a template processor and filled with data from ConfigMap before starting a Wildfly server.

Security Patterns

Process Containment

Explore how to restrict container privileges when running in Kubernetes.

Network Segmentation

Learn how to limit network access to Pods using Network Policies and control HTTP traffic with Istio’s Authentication Policies.

Secure Configuration[*]

Examine various techniques for securely storing configuration data in a Kubernetes Cluster.

Access Control[*]

Discover Kubernetes' RBAC access control subsystem for managing access to the Kubernetes API server.

Advanced Patterns

Controller

A simple 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

Explore an operator based on the ConfigMap watch controller, introducing a CRD ConfigWatcher that connects a ConfigMap with a set of Pods to restart in case of a config change.

Elastic Scale[*]

Investigate horizontal and vertical scaling examples with the random-generator service.

Image Builder[*]

Examine examples demonstrating the setup of a chained build on OpenShift and using Knative build for performing builds within the cluster.


1. Examples marked with an "*" are still in progress to be updated.

About

Examples for "Kubernetes Patterns - Reusable Elements for Designing Cloud Native Applications", Second Edition

Resources

Stars

1.1k stars

Watchers

44 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Kubernetes Patterns

Kubernetes Patterns - Examples

Creative Commons LicenseLink Check

This GitHub project contains the examples from Kubernetes Patterns - Reusable Elements for Designing Cloud Native Applications, Second Editionbook by Bilgin Ibryam and Roland Huß

Important
Most of the examples have been updated for this second edition of the book and examples have been added for the new chapters. However, we are not fully finished yet with updating everything. You can follow the status on the example roadmap. We expect to be finished at the end of May 2023. Every pattern that has not yet been updated is listed below with an [*]. Thanks for your patience, and we hope you enjoy the book!
Note
All the examples that we have updated have been checked on minikube or kind with Kubernetes 1.26. If you run in any issues, please open a issue on this repository, we will take as soon as possible.

Installation instructions for the example prerequisites are summarized 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.

All of these examples have been tested on Minikube on a macOS with ARM architecture (M1), but they should work on any Kubernetes installation. Be sure to explore the provided example resources, as they contain a wealth of comments and clarifications about the concepts explained in each pattern.

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!

Patterns

All examples are categorized according to the Book’s patterns category. Each example is contained in a different directory per pattern and is self-contained. [1]

Foundational Patterns

Predictable Demands

Explore our sample random generator with strict requirements on ConfigMap and PersistentVolumeClaims as well as resource limits.

Declarative Deployment

Learn about rolling and fixed updates for the random generator Deployment from version 1.0 to 2.0.

Health Probe

Discover Liveness, Readiness, and Startup probes for the random generator, along with an example of using readiness gates.

Managed Lifecycle

Examine the implementation of postStart and preStop hooks for the random generator application.

Automated Placement

Dive into examples demonstrating node selector, pod and node affinity, taints, and tolerations.

Behavioral Patterns

Batch Job

Create thousands of random numbers in a file using a batch job.

Periodic Job

Employ the Batch Job example to run periodic jobs according to a predefined schedule.

Daemon Service

Investigate a sample maintenance script for executing maintenance tasks on every node in a cluster.

Singleton Service

Delve into a PodDisruptionBudget example for managing voluntary disruptions.

Stateless Service

Examine a stateless service deployed with a ReplicaSet.

Stateful Service

Explore a StatefulSet example featuring our random-generator.

Service Discovery

Uncover various ways to access our random-generator REST service.

Self Awareness

Utilize the Downward API to set environment variables and mount resource fields as files within the random-generator service.

Structural Patterns

Init Container

Initialize an HTTP server’s HTML source by fetching it from a remote git repository.

Sidecar

Inspect a git polling example implemented as a sidecar.

Adapter

Examine an adapter that exports timing information from the sample random-generator application in a Prometheus-compatible format.

Ambassador

Investigate an ambassador for processing the log of the random-generator.

Configuration Patterns

EnvVar Configuration

Learn how to use environment variables, both literal and sourced from ConfigMaps and Secrets, for our random-generator service.

Configuration Resource

Discover how to configure the random-generator Spring Boot application using a ConfigMap.

Immutable Configuration

Review examples that demonstrate using immutable configuration containers for application configuration in Docker and Kubernetes.

Configuration Template

See how a template configuration standalone.xml is processed using a template processor and filled with data from ConfigMap before starting a Wildfly server.

Security Patterns

Process Containment

Explore how to restrict container privileges when running in Kubernetes.

Network Segmentation

Learn how to limit network access to Pods using Network Policies and control HTTP traffic with Istio’s Authentication Policies.

Secure Configuration[*]

Examine various techniques for securely storing configuration data in a Kubernetes Cluster.

Access Control[*]

Discover Kubernetes' RBAC access control subsystem for managing access to the Kubernetes API server.

Advanced Patterns

Controller

A simple 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

Explore an operator based on the ConfigMap watch controller, introducing a CRD ConfigWatcher that connects a ConfigMap with a set of Pods to restart in case of a config change.

Elastic Scale[*]

Investigate horizontal and vertical scaling examples with the random-generator service.

Image Builder[*]

Examine examples demonstrating the setup of a chained build on OpenShift and using Knative build for performing builds within the cluster.


1. Examples marked with an "*" are still in progress to be updated.

About

Examples for "Kubernetes Patterns - Reusable Elements for Designing Cloud Native Applications", Second Edition

Resources

Stars

1.1k stars

Watchers

44 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

Kubernetes Patterns

Kubernetes Patterns - Examples

Creative Commons LicenseLink Check

This GitHub project contains the examples from Kubernetes Patterns - Reusable Elements for Designing Cloud Native Applications, Second Editionbook by Bilgin Ibryam and Roland Huß

Important
Most of the examples have been updated for this second edition of the book and examples have been added for the new chapters. However, we are not fully finished yet with updating everything. You can follow the status on the example roadmap. We expect to be finished at the end of May 2023. Every pattern that has not yet been updated is listed below with an [*]. Thanks for your patience, and we hope you enjoy the book!
Note
All the examples that we have updated have been checked on minikube or kind with Kubernetes 1.26. If you run in any issues, please open a issue on this repository, we will take as soon as possible.

Installation instructions for the example prerequisites are summarized 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.

All of these examples have been tested on Minikube on a macOS with ARM architecture (M1), but they should work on any Kubernetes installation. Be sure to explore the provided example resources, as they contain a wealth of comments and clarifications about the concepts explained in each pattern.

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!

Patterns

All examples are categorized according to the Book’s patterns category. Each example is contained in a different directory per pattern and is self-contained. [1]

Foundational Patterns

Predictable Demands

Explore our sample random generator with strict requirements on ConfigMap and PersistentVolumeClaims as well as resource limits.

Declarative Deployment

Learn about rolling and fixed updates for the random generator Deployment from version 1.0 to 2.0.

Health Probe

Discover Liveness, Readiness, and Startup probes for the random generator, along with an example of using readiness gates.

Managed Lifecycle

Examine the implementation of postStart and preStop hooks for the random generator application.

Automated Placement

Dive into examples demonstrating node selector, pod and node affinity, taints, and tolerations.

Behavioral Patterns

Batch Job

Create thousands of random numbers in a file using a batch job.

Periodic Job

Employ the Batch Job example to run periodic jobs according to a predefined schedule.

Daemon Service

Investigate a sample maintenance script for executing maintenance tasks on every node in a cluster.

Singleton Service

Delve into a PodDisruptionBudget example for managing voluntary disruptions.

Stateless Service

Examine a stateless service deployed with a ReplicaSet.

Stateful Service

Explore a StatefulSet example featuring our random-generator.

Service Discovery

Uncover various ways to access our random-generator REST service.

Self Awareness

Utilize the Downward API to set environment variables and mount resource fields as files within the random-generator service.

Structural Patterns

Init Container

Initialize an HTTP server’s HTML source by fetching it from a remote git repository.

Sidecar

Inspect a git polling example implemented as a sidecar.

Adapter

Examine an adapter that exports timing information from the sample random-generator application in a Prometheus-compatible format.

Ambassador

Investigate an ambassador for processing the log of the random-generator.

Configuration Patterns

EnvVar Configuration

Learn how to use environment variables, both literal and sourced from ConfigMaps and Secrets, for our random-generator service.

Configuration Resource

Discover how to configure the random-generator Spring Boot application using a ConfigMap.

Immutable Configuration

Review examples that demonstrate using immutable configuration containers for application configuration in Docker and Kubernetes.

Configuration Template

See how a template configuration standalone.xml is processed using a template processor and filled with data from ConfigMap before starting a Wildfly server.

Security Patterns

Process Containment

Explore how to restrict container privileges when running in Kubernetes.

Network Segmentation

Learn how to limit network access to Pods using Network Policies and control HTTP traffic with Istio’s Authentication Policies.

Secure Configuration[*]

Examine various techniques for securely storing configuration data in a Kubernetes Cluster.

Access Control[*]

Discover Kubernetes' RBAC access control subsystem for managing access to the Kubernetes API server.

Advanced Patterns

Controller

A simple 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

Explore an operator based on the ConfigMap watch controller, introducing a CRD ConfigWatcher that connects a ConfigMap with a set of Pods to restart in case of a config change.

Elastic Scale[*]

Investigate horizontal and vertical scaling examples with the random-generator service.

Image Builder[*]

Examine examples demonstrating the setup of a chained build on OpenShift and using Knative build for performing builds within the cluster.


1. Examples marked with an "*" are still in progress to be updated.

About

Examples for "Kubernetes Patterns - Reusable Elements for Designing Cloud Native Applications", Second Edition

Resources

Stars

1.1k stars

Watchers

44 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Kubernetes Patterns

Kubernetes Patterns - Examples

Creative Commons LicenseLink Check

This GitHub project contains the examples from Kubernetes Patterns - Reusable Elements for Designing Cloud Native Applications, Second Editionbook by Bilgin Ibryam and Roland Huß

Important
Most of the examples have been updated for this second edition of the book and examples have been added for the new chapters. However, we are not fully finished yet with updating everything. You can follow the status on the example roadmap. We expect to be finished at the end of May 2023. Every pattern that has not yet been updated is listed below with an [*]. Thanks for your patience, and we hope you enjoy the book!
Note
All the examples that we have updated have been checked on minikube or kind with Kubernetes 1.26. If you run in any issues, please open a issue on this repository, we will take as soon as possible.

Installation instructions for the example prerequisites are summarized 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.

All of these examples have been tested on Minikube on a macOS with ARM architecture (M1), but they should work on any Kubernetes installation. Be sure to explore the provided example resources, as they contain a wealth of comments and clarifications about the concepts explained in each pattern.

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!

Patterns

All examples are categorized according to the Book’s patterns category. Each example is contained in a different directory per pattern and is self-contained. [1]

Foundational Patterns

Predictable Demands

Explore our sample random generator with strict requirements on ConfigMap and PersistentVolumeClaims as well as resource limits.

Declarative Deployment

Learn about rolling and fixed updates for the random generator Deployment from version 1.0 to 2.0.

Health Probe

Discover Liveness, Readiness, and Startup probes for the random generator, along with an example of using readiness gates.

Managed Lifecycle

Examine the implementation of postStart and preStop hooks for the random generator application.

Automated Placement

Dive into examples demonstrating node selector, pod and node affinity, taints, and tolerations.

Behavioral Patterns

Batch Job

Create thousands of random numbers in a file using a batch job.

Periodic Job

Employ the Batch Job example to run periodic jobs according to a predefined schedule.

Daemon Service

Investigate a sample maintenance script for executing maintenance tasks on every node in a cluster.

Singleton Service

Delve into a PodDisruptionBudget example for managing voluntary disruptions.

Stateless Service

Examine a stateless service deployed with a ReplicaSet.

Stateful Service

Explore a StatefulSet example featuring our random-generator.

Service Discovery

Uncover various ways to access our random-generator REST service.

Self Awareness

Utilize the Downward API to set environment variables and mount resource fields as files within the random-generator service.

Structural Patterns

Init Container

Initialize an HTTP server’s HTML source by fetching it from a remote git repository.

Sidecar

Inspect a git polling example implemented as a sidecar.

Adapter

Examine an adapter that exports timing information from the sample random-generator application in a Prometheus-compatible format.

Ambassador

Investigate an ambassador for processing the log of the random-generator.

Configuration Patterns

EnvVar Configuration

Learn how to use environment variables, both literal and sourced from ConfigMaps and Secrets, for our random-generator service.

Configuration Resource

Discover how to configure the random-generator Spring Boot application using a ConfigMap.

Immutable Configuration

Review examples that demonstrate using immutable configuration containers for application configuration in Docker and Kubernetes.

Configuration Template

See how a template configuration standalone.xml is processed using a template processor and filled with data from ConfigMap before starting a Wildfly server.

Security Patterns

Process Containment

Explore how to restrict container privileges when running in Kubernetes.

Network Segmentation

Learn how to limit network access to Pods using Network Policies and control HTTP traffic with Istio’s Authentication Policies.

Secure Configuration[*]

Examine various techniques for securely storing configuration data in a Kubernetes Cluster.

Access Control[*]

Discover Kubernetes' RBAC access control subsystem for managing access to the Kubernetes API server.

Advanced Patterns

Controller

A simple 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

Explore an operator based on the ConfigMap watch controller, introducing a CRD ConfigWatcher that connects a ConfigMap with a set of Pods to restart in case of a config change.

Elastic Scale[*]

Investigate horizontal and vertical scaling examples with the random-generator service.

Image Builder[*]

Examine examples demonstrating the setup of a chained build on OpenShift and using Knative build for performing builds within the cluster.


1. Examples marked with an "*" are still in progress to be updated.

About

Examples for "Kubernetes Patterns - Reusable Elements for Designing Cloud Native Applications", Second Edition

Resources

Stars

1.1k stars

Watchers

44 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Kubernetes Patterns

Kubernetes Patterns - Examples

Creative Commons LicenseLink Check

This GitHub project contains the examples from Kubernetes Patterns - Reusable Elements for Designing Cloud Native Applications, Second Editionbook by Bilgin Ibryam and Roland Huß

Important
Most of the examples have been updated for this second edition of the book and examples have been added for the new chapters. However, we are not fully finished yet with updating everything. You can follow the status on the example roadmap. We expect to be finished at the end of May 2023. Every pattern that has not yet been updated is listed below with an [*]. Thanks for your patience, and we hope you enjoy the book!
Note
All the examples that we have updated have been checked on minikube or kind with Kubernetes 1.26. If you run in any issues, please open a issue on this repository, we will take as soon as possible.

Installation instructions for the example prerequisites are summarized 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.

All of these examples have been tested on Minikube on a macOS with ARM architecture (M1), but they should work on any Kubernetes installation. Be sure to explore the provided example resources, as they contain a wealth of comments and clarifications about the concepts explained in each pattern.

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!

Patterns

All examples are categorized according to the Book’s patterns category. Each example is contained in a different directory per pattern and is self-contained. [1]

Foundational Patterns

Predictable Demands

Explore our sample random generator with strict requirements on ConfigMap and PersistentVolumeClaims as well as resource limits.

Declarative Deployment

Learn about rolling and fixed updates for the random generator Deployment from version 1.0 to 2.0.

Health Probe

Discover Liveness, Readiness, and Startup probes for the random generator, along with an example of using readiness gates.

Managed Lifecycle

Examine the implementation of postStart and preStop hooks for the random generator application.

Automated Placement

Dive into examples demonstrating node selector, pod and node affinity, taints, and tolerations.

Behavioral Patterns

Batch Job

Create thousands of random numbers in a file using a batch job.

Periodic Job

Employ the Batch Job example to run periodic jobs according to a predefined schedule.

Daemon Service

Investigate a sample maintenance script for executing maintenance tasks on every node in a cluster.

Singleton Service

Delve into a PodDisruptionBudget example for managing voluntary disruptions.

Stateless Service

Examine a stateless service deployed with a ReplicaSet.

Stateful Service

Explore a StatefulSet example featuring our random-generator.

Service Discovery

Uncover various ways to access our random-generator REST service.

Self Awareness

Utilize the Downward API to set environment variables and mount resource fields as files within the random-generator service.

Structural Patterns

Init Container

Initialize an HTTP server’s HTML source by fetching it from a remote git repository.

Sidecar

Inspect a git polling example implemented as a sidecar.

Adapter

Examine an adapter that exports timing information from the sample random-generator application in a Prometheus-compatible format.

Ambassador

Investigate an ambassador for processing the log of the random-generator.

Configuration Patterns

EnvVar Configuration

Learn how to use environment variables, both literal and sourced from ConfigMaps and Secrets, for our random-generator service.

Configuration Resource

Discover how to configure the random-generator Spring Boot application using a ConfigMap.

Immutable Configuration

Review examples that demonstrate using immutable configuration containers for application configuration in Docker and Kubernetes.

Configuration Template

See how a template configuration standalone.xml is processed using a template processor and filled with data from ConfigMap before starting a Wildfly server.

Security Patterns

Process Containment

Explore how to restrict container privileges when running in Kubernetes.

Network Segmentation

Learn how to limit network access to Pods using Network Policies and control HTTP traffic with Istio’s Authentication Policies.

Secure Configuration[*]

Examine various techniques for securely storing configuration data in a Kubernetes Cluster.

Access Control[*]

Discover Kubernetes' RBAC access control subsystem for managing access to the Kubernetes API server.

Advanced Patterns

Controller

A simple 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

Explore an operator based on the ConfigMap watch controller, introducing a CRD ConfigWatcher that connects a ConfigMap with a set of Pods to restart in case of a config change.

Elastic Scale[*]

Investigate horizontal and vertical scaling examples with the random-generator service.

Image Builder[*]

Examine examples demonstrating the setup of a chained build on OpenShift and using Knative build for performing builds within the cluster.


1. Examples marked with an "*" are still in progress to be updated.

About

Examples for "Kubernetes Patterns - Reusable Elements for Designing Cloud Native Applications", Second Edition

Resources

Stars

1.1k stars

Watchers

44 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

Kubernetes Patterns

Kubernetes Patterns - Examples

Creative Commons LicenseLink Check

This GitHub project contains the examples from Kubernetes Patterns - Reusable Elements for Designing Cloud Native Applications, Second Editionbook by Bilgin Ibryam and Roland Huß

Important
Most of the examples have been updated for this second edition of the book and examples have been added for the new chapters. However, we are not fully finished yet with updating everything. You can follow the status on the example roadmap. We expect to be finished at the end of May 2023. Every pattern that has not yet been updated is listed below with an [*]. Thanks for your patience, and we hope you enjoy the book!
Note
All the examples that we have updated have been checked on minikube or kind with Kubernetes 1.26. If you run in any issues, please open a issue on this repository, we will take as soon as possible.

Installation instructions for the example prerequisites are summarized 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.

All of these examples have been tested on Minikube on a macOS with ARM architecture (M1), but they should work on any Kubernetes installation. Be sure to explore the provided example resources, as they contain a wealth of comments and clarifications about the concepts explained in each pattern.

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!

Patterns

All examples are categorized according to the Book’s patterns category. Each example is contained in a different directory per pattern and is self-contained. [1]

Foundational Patterns

Predictable Demands

Explore our sample random generator with strict requirements on ConfigMap and PersistentVolumeClaims as well as resource limits.

Declarative Deployment

Learn about rolling and fixed updates for the random generator Deployment from version 1.0 to 2.0.

Health Probe

Discover Liveness, Readiness, and Startup probes for the random generator, along with an example of using readiness gates.

Managed Lifecycle

Examine the implementation of postStart and preStop hooks for the random generator application.

Automated Placement

Dive into examples demonstrating node selector, pod and node affinity, taints, and tolerations.

Behavioral Patterns

Batch Job

Create thousands of random numbers in a file using a batch job.

Periodic Job

Employ the Batch Job example to run periodic jobs according to a predefined schedule.

Daemon Service

Investigate a sample maintenance script for executing maintenance tasks on every node in a cluster.

Singleton Service

Delve into a PodDisruptionBudget example for managing voluntary disruptions.

Stateless Service

Examine a stateless service deployed with a ReplicaSet.

Stateful Service

Explore a StatefulSet example featuring our random-generator.

Service Discovery

Uncover various ways to access our random-generator REST service.

Self Awareness

Utilize the Downward API to set environment variables and mount resource fields as files within the random-generator service.

Structural Patterns

Init Container

Initialize an HTTP server’s HTML source by fetching it from a remote git repository.

Sidecar

Inspect a git polling example implemented as a sidecar.

Adapter

Examine an adapter that exports timing information from the sample random-generator application in a Prometheus-compatible format.

Ambassador

Investigate an ambassador for processing the log of the random-generator.

Configuration Patterns

EnvVar Configuration

Learn how to use environment variables, both literal and sourced from ConfigMaps and Secrets, for our random-generator service.

Configuration Resource

Discover how to configure the random-generator Spring Boot application using a ConfigMap.

Immutable Configuration

Review examples that demonstrate using immutable configuration containers for application configuration in Docker and Kubernetes.

Configuration Template

See how a template configuration standalone.xml is processed using a template processor and filled with data from ConfigMap before starting a Wildfly server.

Security Patterns

Process Containment

Explore how to restrict container privileges when running in Kubernetes.

Network Segmentation

Learn how to limit network access to Pods using Network Policies and control HTTP traffic with Istio’s Authentication Policies.

Secure Configuration[*]

Examine various techniques for securely storing configuration data in a Kubernetes Cluster.

Access Control[*]

Discover Kubernetes' RBAC access control subsystem for managing access to the Kubernetes API server.

Advanced Patterns

Controller

A simple 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

Explore an operator based on the ConfigMap watch controller, introducing a CRD ConfigWatcher that connects a ConfigMap with a set of Pods to restart in case of a config change.

Elastic Scale[*]

Investigate horizontal and vertical scaling examples with the random-generator service.

Image Builder[*]

Examine examples demonstrating the setup of a chained build on OpenShift and using Knative build for performing builds within the cluster.


1. Examples marked with an "*" are still in progress to be updated.

About

Examples for "Kubernetes Patterns - Reusable Elements for Designing Cloud Native Applications", Second Edition

Resources

Stars

1.1k stars

Watchers

44 watching

Forks

Releases

Packages

Used by

Contributors

Languages