<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>Kubernetes on Thorsten Hans</title>
		<link>https://thorsten-hans.com/tags/kubernetes/</link>
		<description>Recent content in Kubernetes on Thorsten Hans</description>
		<generator>Hugo</generator>
		<language>en-US</language>
		
		
		
		
			<lastBuildDate>Tue, 06 Dec 2022 20:39:10 +0100</lastBuildDate>
		
			<atom:link href="https://thorsten-hans.com/tags/kubernetes/index.xml" rel="self" type="application/rss+xml" />
			<item>
				<title>Hot-Reload .NET Configuration in Kubernetes with ConfigMaps</title>
				<link>https://thorsten-hans.com/hot-reload-net-configuration-in-kubernetes-with-configmaps/</link>
				<pubDate>Tue, 06 Dec 2022 20:39:10 +0100</pubDate>
				<guid>https://thorsten-hans.com/hot-reload-net-configuration-in-kubernetes-with-configmaps/</guid>
				<description>&lt;p&gt;Leveraging ConfigMaps, we can inject configuration data into applications running in Kubernetes. In this article, we’ll look at how to use a Kubernetes ConfigMap to configure a .NET application from the outside and automatically reload changes applied to the ConfigMap.&lt;/p&gt;&#xA;&lt;p&gt;Automatically reloading configuration data without redeploying the application and without making a code change is super handy - not just for cloud-native applications. Being able to modify certain aspects of the application to hunt and pinpoint bugs is valuable and something you should consider adding to your applications too. For demonstration purposes, we will create a ConfigMap that allows us to modify the logging behavior of a simple HTTP API acting as the sample application.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Patch Kubernetes objects with .NET: The Simple Way</title>
				<link>https://thorsten-hans.com/patch-kubernetes-object-with-dotnet-the-simple-way/</link>
				<pubDate>Thu, 01 Sep 2022 15:54:07 +0000</pubDate>
				<guid>https://thorsten-hans.com/patch-kubernetes-object-with-dotnet-the-simple-way/</guid>
				<description>&lt;p&gt;By leveraging the &lt;a href=&#34;https://thorsten-hans.com/inspect-kubernetes-inventory-with-aspnetcore-kubernetes-client-library/&#34;&gt;official Kubernetes client libraries for C#&lt;/a&gt;&#xA;, we can easily interact with any Kubernetes cluster. We can also update (or patch) existing objects by invoking the corresponding &lt;code&gt;Patch*&lt;/code&gt; methods (like &lt;code&gt;PatchNamespacedPod&lt;/code&gt;, &lt;code&gt;PatchNamespacedConfigMap&lt;/code&gt;, and many more) provided by the client library.&lt;/p&gt;&#xA;&lt;p&gt;Although we can construct patches from different formats (&lt;code&gt;JsonPatch&lt;/code&gt;, &lt;code&gt;ApplyPatch&lt;/code&gt;, &lt;code&gt;MergePatch&lt;/code&gt;, or &lt;code&gt;StrategicMergePatch&lt;/code&gt;), we&amp;rsquo;ll focus on &lt;code&gt;JsonPatch&lt;/code&gt; for the sake of this article, and we will update the following &lt;em&gt;ConfigMap&lt;/em&gt;:&lt;/p&gt;</description>
			</item>
			<item>
				<title>Logging in Kubernetes with Loki and the PLG stack</title>
				<link>https://thorsten-hans.com/logging-in-kubernetes-with-loki-and-plg-stack/</link>
				<pubDate>Tue, 05 Apr 2022 13:30:00 +0000</pubDate>
				<guid>https://thorsten-hans.com/logging-in-kubernetes-with-loki-and-plg-stack/</guid>
				<description>&lt;p&gt;Observability is a huge topic in cloud-native environments. One must collect, understand, and investigate millions of logs from different sources to understand what&amp;rsquo;s happening at an application&amp;rsquo;s runtime. Log stacks - like PLG - address all those concerns and are typically composed of multiple applications with dedicated responsibilities. At the core of every log stack, a log aggregation system is responsible for indexing, storing, and exposing a query interface for log messages.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Custom health probes with Azure Container Apps</title>
				<link>https://thorsten-hans.com/custom-health-probes-with-azure-container-apps/</link>
				<pubDate>Fri, 25 Mar 2022 11:41:56 +0000</pubDate>
				<guid>https://thorsten-hans.com/custom-health-probes-with-azure-container-apps/</guid>
				<description>&lt;p&gt;In Kubernetes, individual probes like &lt;code&gt;liveness&lt;/code&gt;, &lt;code&gt;readiness&lt;/code&gt;, and &lt;code&gt;startup&lt;/code&gt; are mission-critical when deploying applications. Kubernetes uses probes to determine the health of containers in a &lt;em&gt;Pod&lt;/em&gt;. Kubernetes may restart &lt;em&gt;Pods&lt;/em&gt; because of failing probes. On top of that, Kubernetes uses probes to determine if a particular container can deal with incoming requests. Kubernetes &lt;em&gt;Services&lt;/em&gt; will route incoming requests to containers that made it to the &lt;code&gt;Ready&lt;/code&gt; state. If a readiness probe is defined on a container, that container must successfully respond to the probe invocation to become &lt;code&gt;Ready&lt;/code&gt;.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Custom health probes with Application Gateway Ingress Controller</title>
				<link>https://thorsten-hans.com/custom-health-probes-with-application-gateway-ingress-controller/</link>
				<pubDate>Wed, 16 Feb 2022 19:58:50 +0100</pubDate>
				<guid>https://thorsten-hans.com/custom-health-probes-with-application-gateway-ingress-controller/</guid>
				<description>&lt;p&gt;With &lt;a href=&#34;https://github.com/Azure/application-gateway-kubernetes-ingress/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Azure Application Gateway Ingress Controller (AGIC)&lt;/a&gt;&#xA;, we can integrate an existing Azure Application Gateway instance with Kubernetes. In Kubernetes, an ingress controller is responsible for routing inbound requests to applications running inside the cluster. AGIC automatically watches &lt;code&gt;Ingress&lt;/code&gt; resources inside your cluster and automatically updates the linked instance of Azure Application Gateway upon reconciliation.&lt;/p&gt;&#xA;&lt;p&gt;Azure Application Gateway uses &lt;em&gt;health probes&lt;/em&gt; to determine if the desired backend target can serve requests. Azure Application Gateway won&amp;rsquo;t send incoming requests to the backend target if a configured health probe fails. Instead, it will respond to the request with an &lt;code&gt;HTTP 502&lt;/code&gt;. If the health probe is successful, incoming requests will be forwarded to the desired backend target, responsible for handling the requests and generating proper responses.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Add krustlet node pools to Azure Kubernetes Service</title>
				<link>https://thorsten-hans.com/add-krustlet-node-pools-to-azure-kubernetes-service/</link>
				<pubDate>Tue, 26 Oct 2021 14:23:42 +0000</pubDate>
				<guid>https://thorsten-hans.com/add-krustlet-node-pools-to-azure-kubernetes-service/</guid>
				<description>&lt;p&gt;If we had traveled three years back in time, running WebAssembly (Wasm) workloads in Kubernetes would have sounded like fiction. Today, it&amp;rsquo;s real! With &lt;a href=&#34;https://krustlet.dev&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;krustlet&lt;/a&gt;&#xA;, developers can run Wasm workloads directly in Kubernetes. This article will look at what krustlet is and how we can bring it to our Azure Kubernetes Service (AKS) clusters.&lt;/p&gt;&#xA;&lt;h2 id=&#34;what-is-krustlet&#34;&gt;What is Krustlet&lt;/h2&gt;&#xA;&lt;p&gt;Krustlet is a &lt;a href=&#34;https://kubernetes.io/docs/reference/command-line-tools-reference/kubelet/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Kubernetes kubelet&lt;/a&gt;&#xA; written in Rust to run Wasm workloads in Kubernetes. Nodes running &lt;em&gt;krustlet&lt;/em&gt; have special tolerations assigned, which we can use within Kubernetes manifests, to ensure Wasm workloads will be scheduled to &lt;em&gt;krustlet&lt;/em&gt; nodes. Under the covers, &lt;em&gt;krustlet&lt;/em&gt; uses &lt;a href=&#34;https://wasmtime.dev/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;wasmtime&lt;/a&gt;&#xA; as the runtime for our Wasm workloads using the &lt;code&gt;wasm32-wasi&lt;/code&gt; architecture.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Read-only filesystems in Docker and Kubernetes</title>
				<link>https://thorsten-hans.com/read-only-filesystems-in-docker-and-kubernetes/</link>
				<pubDate>Tue, 19 Oct 2021 13:31:43 +0000</pubDate>
				<guid>https://thorsten-hans.com/read-only-filesystems-in-docker-and-kubernetes/</guid>
				<description>&lt;p&gt;You should harden your containerized workloads to minimize the attack surface of your overall application. Paying close attention while building your container images and applying proven patterns will reduce the risk of an attack while running your application in production.&#xA;One of the simple practices to apply is setting the filesystem of your containers to read-only, and that&amp;rsquo;s exactly what we will cover in this article.&lt;/p&gt;&#xA;&lt;h2 id=&#34;read-only-filesystems-in-docker&#34;&gt;Read-only filesystems in Docker&lt;/h2&gt;&#xA;&lt;p&gt;Docker and compliant CLIs offer the &lt;code&gt;read-only&lt;/code&gt; flag, which we can use when mounting the container&amp;rsquo;s filesystem as read-only. Let&amp;rsquo;s try it! Let&amp;rsquo;s start a new container from the official &lt;code&gt;ubuntu&lt;/code&gt; image with an interactive TTY, to verify that the filesystem is read-only.&#xA;The following &lt;code&gt;docker run&lt;/code&gt; command uses &lt;code&gt;-it&lt;/code&gt; (creates an interactive pseudo TTY and ensures STDIN is kept open) and &lt;code&gt;--rm&lt;/code&gt; (removes the container automatically once exited):&lt;/p&gt;</description>
			</item>
			<item>
				<title>External-DNS with Azure Kubernetes Service and Azure DNS</title>
				<link>https://thorsten-hans.com/external-dns-azure-kubernetes-service-azure-dns/</link>
				<pubDate>Thu, 09 Sep 2021 10:52:53 +0000</pubDate>
				<guid>https://thorsten-hans.com/external-dns-azure-kubernetes-service-azure-dns/</guid>
				<description>&lt;p&gt;This article guides you through the process of configuring &lt;a href=&#34;https://github.com/kubernetes-sigs/external-dns&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;External-DNS&lt;/a&gt;&#xA; with Azure Kubernetes Service (AKS) and Azure DNS. By deploying and configuring External-DNS and necessary Azure services correctly, you can ensure proper routing from your custom domain into Kubernetes. Before we dive into actually configuring External-DNS and wiring everything up, let&amp;rsquo;s briefly revisit some core concepts.&lt;/p&gt;&#xA;&lt;h2 id=&#34;cloud-platform-automation-with-managed-kubernetes-clusters&#34;&gt;Cloud platform automation with managed Kubernetes clusters&lt;/h2&gt;&#xA;&lt;p&gt;Managed Kubernetes clusters like Azure Kubernetes Service (AKS) automate the surrounding cloud platform using their custom cloud controller manager implementation as part of their Kubernetes distribution. For example, this makes exposing a service of type &lt;code&gt;LoadBalancer&lt;/code&gt; frictionless. AKS will automatically acquire a public IP address and provision an instance of Azure Load Balancer (LNB) to route ingress traffic into the Kubernetes cluster.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Encrypted Secrets in Helm Charts</title>
				<link>https://thorsten-hans.com/encrypted-secrets-in-helm-charts/</link>
				<pubDate>Wed, 11 Aug 2021 08:00:44 +0000</pubDate>
				<guid>https://thorsten-hans.com/encrypted-secrets-in-helm-charts/</guid>
				<description>&lt;p&gt;In my recent article &amp;ldquo;&lt;a href=&#34;https://thorsten-hans.com/encrypt-your-kubernetes-secrets-with-mozilla-sops/&#34;&gt;How to encrypt Kubernetes secrets with Mozilla SOPS&lt;/a&gt;&#xA;&amp;rdquo;, I demonstrated how to encrypt regular Kubernetes secret manifests (&lt;code&gt;yaml&lt;/code&gt;) using SOPS CLI in conjunction with Azure Key Vault as the backend for the encryption-key.&lt;/p&gt;&#xA;&lt;p&gt;This post will take it one step further; it guides you through the process of creating a custom &lt;a href=&#34;https://helm.sh&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Helm&lt;/a&gt;&#xA; chart that will reference encrypted secrets. In the end, you will be able to add your encrypted secrets to source control without leaking sensitive information.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Encrypt your Kubernetes Secrets with Mozilla SOPS</title>
				<link>https://thorsten-hans.com/encrypt-your-kubernetes-secrets-with-mozilla-sops/</link>
				<pubDate>Tue, 03 Aug 2021 12:59:24 +0200</pubDate>
				<guid>https://thorsten-hans.com/encrypt-your-kubernetes-secrets-with-mozilla-sops/</guid>
				<description>&lt;p&gt;By default, &lt;em&gt;Kubernetes Secrets (secrets)&lt;/em&gt; are stored with base64 encoding in &lt;code&gt;YAML&lt;/code&gt;files. The lack of encryption for secrets often leads to the question of how to store secrets securely. Obviously, you don&amp;rsquo;t want to put your sensitive configuration data into a git repository, because it is just encoded. &lt;code&gt;echo &amp;lt;base64_representation&amp;gt; | base64 -d&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;A typical solution is using services like &lt;a href=&#34;https://azure.microsoft.com/en-us/services/key-vault/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Azure Key Vault&lt;/a&gt;&#xA;, or &lt;a href=&#34;https://www.hashicorp.com/products/vault&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;HashiCorp Vault&lt;/a&gt;&#xA; to persist sensitive data. Those services can be integrated with Kubernetes by using the &lt;em&gt;&lt;a href=&#34;https://github.com/kubernetes-sigs/secrets-store-csi-driver&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Secrets Store CIS driver&lt;/a&gt;&#xA;&lt;/em&gt;. However, relying on an additional service means that you have to manage and maintain that service in addition to Kubernetes. Additionally, depending on the service you use to store your sensitive data, some sensitive configuration must be stored somewhere to configure the CIS driver.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Debugging apps in Kubernetes with Bridge</title>
				<link>https://thorsten-hans.com/debugging-apps-in-kubernetes-with-bridge/</link>
				<pubDate>Wed, 28 Jul 2021 12:40:38 +0200</pubDate>
				<guid>https://thorsten-hans.com/debugging-apps-in-kubernetes-with-bridge/</guid>
				<description>&lt;p&gt;One of the most common questions I get when teaching developers in Kubernetes is&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;&amp;ldquo;How can I debug my application once it is deployed to Kubernetes?&amp;rdquo;&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;Although there are several ways how to achieve that, this post will explain and demonstrate how to debug applications running in Kubernetes using &lt;em&gt;Bridge to Kubernetes (Bridge)&lt;/em&gt;.&lt;/p&gt;&#xA;&lt;h2 id=&#34;what-is-bridge-to-kubernetes&#34;&gt;What is Bridge to Kubernetes&lt;/h2&gt;&#xA;&lt;p&gt;Bridge to Kubernetes (Bridge), the successor of &amp;ldquo;local process&amp;rdquo; is an IDE / editor extension. It allows developers to debug and test application counterparts (or microservices) on their local machine. While debugging locally, downstream and related components are consumed directly from within the Kubernetes cluster. Existing configuration objects - such as Kubernetes &lt;code&gt;ConfigMaps&lt;/code&gt;, or &lt;code&gt;Secrets&lt;/code&gt; -, and volumes mounted to the &lt;em&gt;Pod&lt;/em&gt;  are also applied to the local debugging instance seamlessly.&lt;/p&gt;</description>
			</item>
			<item>
				<title>What is new in Open Service Mesh 0.4.0</title>
				<link>https://thorsten-hans.com/what-is-new-in-open-service-mesh-040/</link>
				<pubDate>Wed, 07 Oct 2020 00:00:00 +0000</pubDate>
				<guid>https://thorsten-hans.com/what-is-new-in-open-service-mesh-040/</guid>
				<description>&lt;p&gt;A couple of days ago, &lt;a href=&#34;https://openservicemesh.io&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Open Service Mesh (OSM)&lt;/a&gt;&#xA; version &lt;code&gt;0.4.0&lt;/code&gt; was released on GitHub. Compared to the previous release, several things have changed. In this post I will walk through the most important changes, which will have an impact on the actual usage of Open Service Mesh.&lt;/p&gt;&#xA;&lt;h2 id=&#34;sidecar-injection-disabled-by-default&#34;&gt;Sidecar Injection disabled by default&lt;/h2&gt;&#xA;&lt;p&gt;Open Service Mesh uses Kubernetes&amp;rsquo; sidecar-container pattern to bring Service Mesh capabilities to your application deployments. With version &lt;code&gt;0.4.0&lt;/code&gt;, OSM will no longer inject sidecar-containers by default. In contrast, you have to enable it explicitly when onboarding a Namespace. This can be achieved by using &lt;code&gt;osm&lt;/code&gt; CLI with the new &lt;code&gt;--enable-sidecar-injection&lt;/code&gt; flag:&lt;/p&gt;</description>
			</item>
			<item>
				<title>Getting Started With Microsoft Open Service Mesh</title>
				<link>https://thorsten-hans.com/getting-started-with-microsoft-open-service-mesh/</link>
				<pubDate>Fri, 28 Aug 2020 00:00:00 +0000</pubDate>
				<guid>https://thorsten-hans.com/getting-started-with-microsoft-open-service-mesh/</guid>
				<description>&lt;p&gt;A couple of weeks ago, Microsoft announced the first public release of &lt;a href=&#34;https://openservicemesh.io&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Open Service Mesh (OSM)&lt;/a&gt;&#xA; an open-source, lightweight, and extensible service mesh implementation, based on the Service Mesh Interface (SMI) specification. This article explains the core concepts of a service mesh, provides an Open Service Mesh introduction, and demonstrates some common service mesh use-cases.&lt;/p&gt;&#xA;&lt;h3 id=&#34;update-2020-10-08&#34;&gt;Update 2020-10-08&lt;/h3&gt;&#xA;&lt;p&gt;In the meantime, Microsoft has released version &lt;code&gt;0.0.4&lt;/code&gt; of Open Service Mesh. The updates reflect the upstream changes.&lt;/p&gt;</description>
			</item>
			<item>
				<title>How To Access Kubernetes Dashboard On RBAC Enabled Azure Kubernetes</title>
				<link>https://thorsten-hans.com/access-kubernetes-dashboard-on-rbac-enabled-azure-kubernetes/</link>
				<pubDate>Tue, 09 Jun 2020 09:00:00 +0000</pubDate>
				<guid>https://thorsten-hans.com/access-kubernetes-dashboard-on-rbac-enabled-azure-kubernetes/</guid>
				<description>&lt;p&gt;The Kubernetes dashboard is quite useful to drill through existing Kubernetes clusters and inspect things without using &lt;code&gt;kubectl&lt;/code&gt;. However, starting with version &lt;code&gt;2.0.40&lt;/code&gt; of Azure CLI, Azure Kubernetes clusters are deployed with Role-Based-Access-Control (RBAC)  enabled by default. Since that point in time, you will be presented with a bunch of errors when trying to access the traditional Kubernetes dashboard using &lt;code&gt;az aks browse&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://thorsten-hans.com/access-kubernetes-dashboard-on-rbac-enabled-azure-kubernetes/images/kubernetes-dashboard-in-rbac-enabled-aks-1.png&#34;&#xA;       alt=&#34;Insufficient permissions for Kubernetes dashboard in RBAC enabled AKS&#34;&#xA;       title=&#34;Broken Kubernetes Dashboard in RBAC enabled AKS&#34;&#xA;       width=&#34;842&#34;&#xA;       height=&#34;602&#34;&#xA;       loading=&#34;lazy&#34;&#xA;       decoding=&#34;async&#34;&gt;&lt;/p&gt;</description>
			</item>
			<item>
				<title>6 Steps To Run .NET Core Apps In Azure Kubernetes</title>
				<link>https://thorsten-hans.com/6-steps-to-run-netcore-apps-in-azure-kubernetes/</link>
				<pubDate>Sun, 07 Jun 2020 08:00:00 +0000</pubDate>
				<guid>https://thorsten-hans.com/6-steps-to-run-netcore-apps-in-azure-kubernetes/</guid>
				<description>&lt;p&gt;Mastering Kubernetes is hard and a time-consuming task. However, getting started with Kubernetes in Azure as a .NET Core Developer is relatively easy. It takes six steps to get your application up and running in Azure Kubernetes Service (AKS), starting with a plain, regular .NET Core Web API.&lt;/p&gt;&#xA;&lt;p&gt;This article will guide you through the entire process and explain all steps in detail, so you can follow and end up with having your application being executed in Kubernetes and being exposed to the internet.&lt;/p&gt;</description>
			</item>
			<item>
				<title>AKS cluster auto-scaler inside out</title>
				<link>https://thorsten-hans.com/aks-cluster-auto-scaler-inside-out/</link>
				<pubDate>Mon, 11 May 2020 16:10:00 +0000</pubDate>
				<guid>https://thorsten-hans.com/aks-cluster-auto-scaler-inside-out/</guid>
				<description>&lt;p&gt;Cluster auto-scaling for &lt;a href=&#34;https://azure.microsoft.com/en-us/services/kubernetes-service/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Azure Kubernetes Service (AKS)&lt;/a&gt;&#xA; is available for quite some time now. I have been using it in several projects so far.This post explains all details about the AKS cluster auto-scaler, shows how to enable it for both - new and existing AKS clusters - and gives you an example of how to use custom auto-scaler profile settings.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;what-is-the-aks-cluster-auto-scaler&#34;&gt;What is the AKS cluster auto-scaler&lt;/h2&gt;&#xA;&lt;p&gt;With cluster auto-scaling, the actual load of your worker-nodes will be monitored actively. By adding and removing worker-nodes from the cluster, it ensures that enough resources are available to keep your application healthy and responsive. In contrast, it removes worker-nodes from the AKS cluster, to optimize resource utilization and be as cost-effective as possible.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Getting Started With Helm 3</title>
				<link>https://thorsten-hans.com/getting-started-with-helm3/</link>
				<pubDate>Wed, 22 Apr 2020 00:00:00 +0000</pubDate>
				<guid>https://thorsten-hans.com/getting-started-with-helm3/</guid>
				<description>&lt;p&gt;&lt;a href=&#34;https://helm.sh&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Helm 3&lt;/a&gt;&#xA; is around for a couple of months now. During that time, I recognized more and more customers willing to use Helm 3 to package, distribute, and construct their cloud-native application bundles. Perhaps you have already heard of Helm, but don&amp;rsquo;t know where to start with Helm exactly? Or you want to learn the differences between Helm 2 and Helm 3. Again others, prefer having all essential information compiled into a single article. Then this is the right one for you! See this post as an introduction to Helm 3; it explains all the major building-blocks and provides - just - enough background information to get started with Helm 3.&lt;/p&gt;</description>
			</item>
			<item>
				<title>3 Ways to integrate ACR with AKS</title>
				<link>https://thorsten-hans.com/3-ways-to-integrate-acr-with-aks/</link>
				<pubDate>Wed, 12 Feb 2020 00:00:00 +0000</pubDate>
				<guid>https://thorsten-hans.com/3-ways-to-integrate-acr-with-aks/</guid>
				<description>&lt;p&gt;To integrate Azure Container Registry (ACR) with Azure Kubernetes Service (AKS), operators and developers currently have three different options. At the end of the article, you can integrate the protected implementation of Docker Registry 2.0 with your Kubernetes cluster using your preferred strategy.&lt;/p&gt;&#xA;&lt;h2 id=&#34;1-kubernetes-secret&#34;&gt;1. Kubernetes Secret&lt;/h2&gt;&#xA;&lt;p&gt;First and perhaps the easiest integration strategy is to create a Kubernetes Secret of type &lt;code&gt;docker-registry&lt;/code&gt;. You can create such a &lt;code&gt;Secret&lt;/code&gt; either using &lt;code&gt;yaml&lt;/code&gt; or using the &lt;code&gt;kubectl create&lt;/code&gt; command:&lt;/p&gt;</description>
			</item>
			<item>
				<title>Extend Kubernetes with Custom Resource Definitions and RBAC for ServiceAccounts</title>
				<link>https://thorsten-hans.com/custom-resource-definitions-with-rbac-for-serviceaccounts/</link>
				<pubDate>Tue, 11 Feb 2020 00:00:00 +0000</pubDate>
				<guid>https://thorsten-hans.com/custom-resource-definitions-with-rbac-for-serviceaccounts/</guid>
				<description>&lt;p&gt;We can extend Kubernetes using Custom Resource Definitions (CRDs). By adding Custom Resource Definitions to Kubernetes, operators can use familiar concepts and tools like &lt;code&gt;kubectl&lt;/code&gt; to deal with custom data. We can bring our schema and have it sitting next to first-class types like &lt;code&gt;Pod&lt;/code&gt;, &lt;code&gt;Service&lt;/code&gt;, and others. Kubernetes API Server takes care of the entire lifecycle of custom objects, which means once &lt;code&gt;CRDs&lt;/code&gt; are deployed, we can create, modify, retrieve, and delete them. On top of that, we can create custom &lt;code&gt;Roles&lt;/code&gt; and &lt;code&gt;ClusterRoles&lt;/code&gt; to protect custom objects using RBAC.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Book review - Kubernetes Up &amp; Running 2nd Edition</title>
				<link>https://thorsten-hans.com/book-review-kubernetes-up-and-running-2nd-edition/</link>
				<pubDate>Sat, 02 Nov 2019 00:00:00 +0000</pubDate>
				<guid>https://thorsten-hans.com/book-review-kubernetes-up-and-running-2nd-edition/</guid>
				<description>&lt;p&gt;A couple of days ago, I stumbled upon a tweet from Brendan Burns mentioning that the 2nd edition of &amp;ldquo;Kubernetes: Up &amp;amp; Running&amp;rdquo; is available. Because I enjoyed the initial release of the book some years ago, I bought a copy and read it. Brendan Burns, Joe Beda, and Kelsey Hightower updated their popular book  &amp;ldquo;Kubernetes: Up &amp;amp; Running&amp;rdquo; to provide a good Kubernetes introduction for developers. On less than 300 pages, you will learn what Kubernetes is and which needs it addresses.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Certified Kubernetes Application Developer - Review and Tips</title>
				<link>https://thorsten-hans.com/certified-kubernetes-application-developer-ckad-review-and-tips/</link>
				<pubDate>Tue, 22 Oct 2019 00:00:00 +0000</pubDate>
				<guid>https://thorsten-hans.com/certified-kubernetes-application-developer-ckad-review-and-tips/</guid>
				<description>&lt;p&gt;During this week, I took the Certified Kubernetes Application Developer (CKAD) exam and passed. However, I did not take the exam because of the certificate; I took the exam because of the challenge.  The challenge to verify my Kubernetes knowledge and experience. The knowledge and experience I got from real-world projects and from falling in love with cloud-native application development in general.&lt;/p&gt;&#xA;&lt;p&gt;Compared to other exams (and I did a bunch of exams back in the .NET Framework v3 and v4 days), CKAD is challenging. There are no multiple-choice questions, CKAD challenges your experience with Kubernetes by presenting you with a set of day-to-day tasks. Tasks that you must solve in 120 minutes or less by using a terminal and an editor. I enjoy challenges like these. They make me identify areas where I can improve because they measure both: Experience and speed.&lt;/p&gt;</description>
			</item>
			<item>
				<title>AKS and ACR Integration - Revisited</title>
				<link>https://thorsten-hans.com/aks-and-acr-integration-revisited/</link>
				<pubDate>Fri, 04 Oct 2019 00:00:00 +0000</pubDate>
				<guid>https://thorsten-hans.com/aks-and-acr-integration-revisited/</guid>
				<description>&lt;p&gt;Back in 2017, I published &lt;a href=&#34;https://thorsten-hans.com/how-to-use-private-azure-container-registry-with-kubernetes/&#34;&gt;this&lt;/a&gt;&#xA; article on integrating Kubernetes with ACR. Since that time, a lot has changed in the world of containers and orchestrators. Especially Microsoft is pushing hard in the Kubernetes area and keeps on shipping features regularly as part of their managed Kubernetes offering. The integration of ACR and AKs became even more comfortable since Azure CLI &lt;code&gt;2.0.73&lt;/code&gt; has been released. That said, let&amp;rsquo;s check out how smooth the integration is.&lt;/p&gt;</description>
			</item>
			<item>
				<title>The state of Helm 3 - Hands-On!</title>
				<link>https://thorsten-hans.com/the-state-of-helm3-hands-on/</link>
				<pubDate>Wed, 02 Oct 2019 00:00:00 +0000</pubDate>
				<guid>https://thorsten-hans.com/the-state-of-helm3-hands-on/</guid>
				<description>&lt;p&gt;Helm, is the package manager for Kubernetes. It allows you to install complex applications and maintain the entire application lifecycle using a lightweight and intuitive CLI.  You can think of it as the &lt;code&gt;npm&lt;/code&gt; or &lt;code&gt;nuget&lt;/code&gt; for Kubernetes.&lt;/p&gt;&#xA;&lt;p&gt;Helm is around for quite some time in the Kubernetes community. The project was started by Deis and Google and is an essential part of CNCF.&lt;/p&gt;&#xA;&lt;p&gt;Since Helm 3 is available as a beta release, it is the right time to look into it. This article summarizes the upcoming changes and illustrates how Helm 3 could be used to build, distribute, and manage applications in Kubernetes.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Custom domains in Azure Kubernetes Service (AKS) with NGINX Ingress and Azure CLI</title>
				<link>https://thorsten-hans.com/custom-domains-in-azure-kubernetes-with-nginx-ingress-azure-cli/</link>
				<pubDate>Mon, 30 Sep 2019 00:00:00 +0000</pubDate>
				<guid>https://thorsten-hans.com/custom-domains-in-azure-kubernetes-with-nginx-ingress-azure-cli/</guid>
				<description>&lt;p&gt;When running applications in Azure Kubernetes Service (AKS), NGINX Ingress does a great job in routing inbound traffic. The flexible routing engine allows a wide variety of scenarios to expose different parts of cloud-native applications using different URLs. Unfortunately, there is no documentation on how to map such a custom domain to a public IP address without using the Azure Portal.&lt;/p&gt;&#xA;&lt;p&gt;This article outlines the process of mapping a custom domain to the public IP address acquired by NGINX Ingress in AKS using Azure CLI. I assume you have already deployed your application and corresponding NGINX Ingress to your AKS.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Azure Key Vault FlexVolume for Kubernetes  —  A journey to integrate Azure Key Vault and AKS</title>
				<link>https://thorsten-hans.com/azure-key-vault-flexvolume-for-kubernetes/</link>
				<pubDate>Mon, 10 Dec 2018 00:00:00 +0000</pubDate>
				<guid>https://thorsten-hans.com/azure-key-vault-flexvolume-for-kubernetes/</guid>
				<description>&lt;p&gt;This is the second part of the mini-series on Integrating &lt;em&gt;Azure Key Vault&lt;/em&gt; and &lt;em&gt;AKS&lt;/em&gt; (Azure Kubernetes Services). If you missed the &lt;a href=&#34;https://thorsten-hans.com/azuread-pod-identity-aks-integrate-azure-keyvault/&#34;&gt;first part&lt;/a&gt;&#xA;, you should definitely read it before digging into this article.&lt;/p&gt;&#xA;&lt;h2 id=&#34;introducing-azure-key-vault-flexvolume-for-kubernetes&#34;&gt;Introducing Azure Key Vault FlexVolume for Kubernetes&lt;/h2&gt;&#xA;&lt;p&gt;&lt;em&gt;Azure Key Vault FlexVolume for Kubernetes&lt;/em&gt; is a driver that allows you to consume typed data from &lt;em&gt;Azure Key Vault&lt;/em&gt; (like secrets, keys or certificates) and attach that data directly to Pods. You can find the project itself &lt;a href=&#34;https://github.com/Azure/kubernetes-keyvault-flexvol&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;directly on GitHub&lt;/a&gt;&#xA;.&lt;/p&gt;</description>
			</item>
			<item>
				<title>AzureAD Pod Identity in AKS: A journey to integrate Azure Key Vault</title>
				<link>https://thorsten-hans.com/azuread-pod-identity-aks-integrate-azure-keyvault/</link>
				<pubDate>Thu, 06 Dec 2018 00:00:00 +0000</pubDate>
				<guid>https://thorsten-hans.com/azuread-pod-identity-aks-integrate-azure-keyvault/</guid>
				<description>&lt;p&gt;Back in May, I wrote an article on how to integrate Azure Key Vault with ACS. Since that, a lot happened in the Azure and Kubernetes space and I thought an updated version would be worth sharing because dealing correctly with sensitive data is &lt;strong&gt;essential&lt;/strong&gt;.&lt;/p&gt;&#xA;&lt;p&gt;This is the first of two separate articles, that will guide you through the complete setup and configuration process to integrate &lt;em&gt;Azure Kubernetes Services&lt;/em&gt; and &lt;em&gt;Azure Key Vault&lt;/em&gt; securely without leaking essential data about your &lt;em&gt;Service Principal&lt;/em&gt;.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Inspect your Kubernetes inventory in no time with ASP.NET Core and Kubernetes Client Library</title>
				<link>https://thorsten-hans.com/inspect-kubernetes-inventory-with-aspnetcore-kubernetes-client-library/</link>
				<pubDate>Tue, 04 Dec 2018 00:00:00 +0000</pubDate>
				<guid>https://thorsten-hans.com/inspect-kubernetes-inventory-with-aspnetcore-kubernetes-client-library/</guid>
				<description>&lt;p&gt;Running and maintaining complex applications on Kubernetes often requires good monitoring capabilities. Sure, there are plenty of products available which can be deployed easily to an existing cluster to get insights about the current cluster inventory. But why not build your own?&lt;/p&gt;&#xA;&lt;p&gt;In this post, I&amp;rsquo;ll guide you through the process of creating a simple ASP.NET Core Web API to expose your cluster&amp;rsquo;s inventory  -  such as Pods for example -  to other applications in order to get exactly those insights that are important for you. I used the following example frequently during public talks to explain the core concepts of &lt;em&gt;Kubernetes&lt;/em&gt; to .NET developers.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Integrating Azure Key Vault with Azure Container Services</title>
				<link>https://thorsten-hans.com/integrating-azure-keyvault-with-azure-container-services/</link>
				<pubDate>Fri, 11 May 2018 00:00:00 +0000</pubDate>
				<guid>https://thorsten-hans.com/integrating-azure-keyvault-with-azure-container-services/</guid>
				<description>&lt;p&gt;With &lt;em&gt;Azure Key Vault&lt;/em&gt;, Microsoft is offering a dedicated and secure service to manage and maintain sensitive data like Connection-Strings, Certificates, or key-value pairs.&lt;/p&gt;&#xA;&lt;p&gt;We&amp;rsquo;re hoping to see a native &lt;em&gt;Azure Key Vault&lt;/em&gt; integration for &lt;em&gt;Azure Container Services&lt;/em&gt; (ACS) in the near future. At least the &lt;a href=&#34;https://docs.microsoft.com/en-us/azure/aks/faq&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;official FAQ&lt;/a&gt;&#xA; mentions the feature on the product&amp;rsquo;s roadmap. Until this features will be shipped and if you&amp;rsquo;re using another &lt;em&gt;Kubernetes&lt;/em&gt; environment - such as &lt;em&gt;GCP&lt;/em&gt; or &lt;em&gt;AWS&lt;/em&gt; offerings -, you&amp;rsquo;ve to integrate &lt;em&gt;Azure Key Vault&lt;/em&gt; manually into your application building blocks to get rid of storing most sensitive data in plain old &lt;em&gt;Kubernetes Secrets&lt;/em&gt;.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Limit resources for containers with LimitRanges in Kubernetes</title>
				<link>https://thorsten-hans.com/limit-resources-for-containers-with-limitranges-in-kubernetes/</link>
				<pubDate>Thu, 22 Mar 2018 00:00:00 +0000</pubDate>
				<guid>https://thorsten-hans.com/limit-resources-for-containers-with-limitranges-in-kubernetes/</guid>
				<description>&lt;p&gt;When deploying applications to &lt;em&gt;Kubernetes&lt;/em&gt; one of the most important things to specify are &lt;em&gt;resource-requests&lt;/em&gt; and &lt;em&gt;-limits&lt;/em&gt;. Having proper limits defined per Container makes it easier to optimize the hardware utilization for all worker nodes in a Kubernetes cluster.&lt;/p&gt;&#xA;&lt;p&gt;When creating deployments, you can set resource-requests and -limits by using the &lt;code&gt;resources&lt;/code&gt; property on each container as part of the &lt;code&gt;podspec&lt;/code&gt;. See the &lt;a href=&#34;https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.9/#container-v1-core&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;official documentation for further information&lt;/a&gt;&#xA;.&lt;/p&gt;&#xA;&lt;p&gt;Unfortunately, those properties are not mandatory, so every developer has to remember providing requests and limits for both &lt;strong&gt;memory&lt;/strong&gt; and &lt;strong&gt;cpu&lt;/strong&gt;.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Upgrading a Kubernetes cluster on AKS using Azure CLI</title>
				<link>https://thorsten-hans.com/upgrading-a-kubernetes-cluster-on-aks-using-azure-cli/</link>
				<pubDate>Thu, 22 Mar 2018 00:00:00 +0000</pubDate>
				<guid>https://thorsten-hans.com/upgrading-a-kubernetes-cluster-on-aks-using-azure-cli/</guid>
				<description>&lt;p&gt;Upgrading an on-premises &lt;em&gt;Kubernetes&lt;/em&gt; cluster can be very cumbersome and time-consuming task. It&amp;rsquo;s not just a single upgrade command that you can execute and everything happens magically behind the scenes. A single command for upgrading an entire Kubernetes cluster would be awesome 💚 and that&amp;rsquo;s exactly what&amp;rsquo;s provided by the AKS team. A single command to upgrade all your masters and nodes.&lt;/p&gt;&#xA;&lt;p&gt;My fellow MVP &lt;a href=&#34;https://zimmergren.net&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Tobias Zimmergren&lt;/a&gt;&#xA; wrote a &lt;a href=&#34;https://zimmergren.net/azure-container-services-aks-upgrade-kubernetes/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;great post on how to upgrade AKS clusters&lt;/a&gt;&#xA; a couple of weeks ago. But technology and tools are &lt;strong&gt;changing quickly&lt;/strong&gt; these days.&lt;/p&gt;</description>
			</item>
			<item>
				<title>CronJobs on AKS using Azure Files and .NET Core</title>
				<link>https://thorsten-hans.com/cronjobs-in-managed-azure-container-services-aks-using-azure-files-and-net-core/</link>
				<pubDate>Wed, 21 Feb 2018 00:00:00 +0000</pubDate>
				<guid>https://thorsten-hans.com/cronjobs-in-managed-azure-container-services-aks-using-azure-files-and-net-core/</guid>
				<description>&lt;p&gt;Tasks need to be executed repeatedly in almost every application. We all know requirements like these. Perhaps you have to clean up some tables in the database or you&amp;rsquo;ve to delete temporary files, no matter which requirement you&amp;rsquo;ve exactly, but &lt;em&gt;CronJobs&lt;/em&gt; in &lt;em&gt;Kubernetes&lt;/em&gt; are exactly designed for scenarios like these.&#xA;&lt;em&gt;Kubernetes&lt;/em&gt; offers &lt;em&gt;CronJobs&lt;/em&gt; as first-class citizen objects. In the scope of &lt;em&gt;Kubernetes&lt;/em&gt;, a &lt;em&gt;CronJob&lt;/em&gt; should be used if you want to execute a piece of software either at a specified point in time or repeatedly at specified points in time.&#xA;Technically it&amp;rsquo;s just a regular Pod with a schedule definition. You&amp;rsquo;ve to provide your schedule using the good old &lt;a href=&#34;https://en.wikipedia.org/wiki/Cron&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;cron format&lt;/a&gt;&#xA;.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Deploy Azure Functions to Kubernetes and scale them automatically</title>
				<link>https://thorsten-hans.com/deploy-azure-functions-to-kubernetes-and-scale-them-automatically/</link>
				<pubDate>Fri, 26 Jan 2018 00:00:00 +0000</pubDate>
				<guid>https://thorsten-hans.com/deploy-azure-functions-to-kubernetes-and-scale-them-automatically/</guid>
				<description>&lt;p&gt;&lt;em&gt;Azure Functions&lt;/em&gt; has become my standard framework to build &lt;em&gt;serverless&lt;/em&gt; backends for &lt;em&gt;Single Page Applications&lt;/em&gt; (SPAs). It&amp;rsquo;s easy to get started with &lt;em&gt;Azure Functions&lt;/em&gt;, although the platform itself is really powerful and highly configurable. I really love the cloud hosting capabilities for &lt;em&gt;Azure Functions&lt;/em&gt;, but from time to time, it&amp;rsquo;s not allowed to use the public cloud as the deployment target.&lt;/p&gt;&#xA;&lt;p&gt;&lt;em&gt;Azure Functions&lt;/em&gt; can easily be hosted in different environments. You can download the entire runtime and execute it on-premises (if you have to) or you can use the existing &lt;em&gt;Docker&lt;/em&gt; image and deploy your serverless backend to &lt;em&gt;Kubernetes&lt;/em&gt;. And that&amp;rsquo;s exactly what this post will describe, you&amp;rsquo;ll create a sample Azure Functions project including a docker container, deploy it to a Kubernetes cluster and let it automatically scale based on CPU utilization.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Hybrid Kubernetes Cluster on Azure Container Services</title>
				<link>https://thorsten-hans.com/hybrid-kubernetes-cluster-on-azure-container-services/</link>
				<pubDate>Sat, 26 Aug 2017 00:00:00 +0000</pubDate>
				<guid>https://thorsten-hans.com/hybrid-kubernetes-cluster-on-azure-container-services/</guid>
				<description>&lt;p&gt;Using Azure Container Services (ACS) you can easily build hybrid kubernetes clusters. In this context, hybrid means that you&amp;rsquo;ll end up having a kubernetes cluster with both, Linux Nodes and Windows Nodes.&lt;/p&gt;&#xA;&lt;p&gt;In this article I&amp;rsquo;ll guide you through the process of creating a new hybrid kubernetes cluster on Azure Container Services.&lt;/p&gt;&#xA;&lt;h2 id=&#34;prerequisites&#34;&gt;Prerequisites&lt;/h2&gt;&#xA;&lt;p&gt;When starting from scratch, you need only a few things:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;a Microsoft Azure Account&lt;/li&gt;&#xA;&lt;li&gt;a Text Editor&lt;/li&gt;&#xA;&lt;li&gt;a local installation of &lt;code&gt;kubectl&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://docs.microsoft.com/en-us/cli/azure/overview&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Azure CLI 2.0&lt;/a&gt;&#xA; installed on your machine&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;configuring-azure-cli&#34;&gt;Configuring Azure CLI&lt;/h2&gt;&#xA;&lt;p&gt;Once you&amp;rsquo;ve all the prerequisites in place, it&amp;rsquo;s time to care a bit about our Azure Subscription.&lt;/p&gt;</description>
			</item>
			<item>
				<title>What to do if Pods stuck in state Pending while deploying to Azure Container Instances</title>
				<link>https://thorsten-hans.com/fix-pods-stuck-in-pending-on-azure-container-instances/</link>
				<pubDate>Thu, 24 Aug 2017 00:00:00 +0000</pubDate>
				<guid>https://thorsten-hans.com/fix-pods-stuck-in-pending-on-azure-container-instances/</guid>
				<description>&lt;p&gt;&lt;em&gt;Azure Container Instances&lt;/em&gt; (&lt;em&gt;ACI&lt;/em&gt;) allows you to spin up containers in the cloud without creating or managing any kind of infrastructure. It&amp;rsquo;s really bringing container as a service to you. That said, &lt;em&gt;ACI&lt;/em&gt; is no replacement for Container Orchestration Systems like &lt;em&gt;Kubernetes&lt;/em&gt;. It&amp;rsquo;s more an underlying infrastructure for hosting/running containers itself.&lt;/p&gt;&#xA;&lt;p&gt;&lt;em&gt;ACI&lt;/em&gt; integrates seamlessly with orchestrators like &lt;em&gt;Kubernetes&lt;/em&gt;. You can use the &lt;em&gt;ACI connector for Kubernetes&lt;/em&gt; to create an &lt;em&gt;ACI&lt;/em&gt; node on your Kubernetes cluster. See &lt;a href=&#34;https://github.com/Azure/aci-connector-k8s&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;this repo for more details&lt;/a&gt;&#xA;.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Autocompletion for kubectl and aliases using oh-my-zsh</title>
				<link>https://thorsten-hans.com/autocompletion-for-kubectl-and-aliases-using-oh-my-zsh/</link>
				<pubDate>Tue, 22 Aug 2017 00:00:00 +0000</pubDate>
				<guid>https://thorsten-hans.com/autocompletion-for-kubectl-and-aliases-using-oh-my-zsh/</guid>
				<description>&lt;p&gt;&lt;em&gt;Kubernetes&lt;/em&gt; is managed and used by utilizing the command line interface &lt;code&gt;kubectl&lt;/code&gt;. I got a ton of questions regarding my terminal configuration for daily k8s tasks. Questions like &lt;em&gt;“Which aliases do you use for regular k8s tasks?”&lt;/em&gt; or &lt;em&gt;“How did you get autocompletion for all the k8s stuff up and running on your mac?”&lt;/em&gt;&#xA;So this post will answer those questions quickly to ensure everyone will become more productive and can spin up even more pods and nodes in less time 🚀&lt;/p&gt;</description>
			</item>
			<item>
				<title>Using Azure Files in Kubernetes Deployments with ASP.NET Core</title>
				<link>https://thorsten-hans.com/using-azure-files-in-kubernetes-deployments-with-asp-net-core/</link>
				<pubDate>Mon, 21 Aug 2017 00:00:00 +0000</pubDate>
				<guid>https://thorsten-hans.com/using-azure-files-in-kubernetes-deployments-with-asp-net-core/</guid>
				<description>&lt;p&gt;&lt;em&gt;Azure Container Services&lt;/em&gt; (&lt;em&gt;ACS&lt;/em&gt;) makes it incredibly easy to spin up and manage &lt;em&gt;Kubernetes&lt;/em&gt; clusters in the cloud. There are plenty of other Azure resources which you can use to build daily scenarios on a native cloud stack.&#xA;Common scenarios are serving files from and writing important information to persisted locations. Azure offers many different storage capabilities. In this post, I&amp;rsquo;ll explain how to use an Azure File Share to serve content by using a .NET Core Web API.&lt;/p&gt;</description>
			</item>
			<item>
				<title>How to use a private Azure Container Registry with Kubernetes</title>
				<link>https://thorsten-hans.com/how-to-use-private-azure-container-registry-with-kubernetes/</link>
				<pubDate>Fri, 18 Aug 2017 00:00:00 +0000</pubDate>
				<guid>https://thorsten-hans.com/how-to-use-private-azure-container-registry-with-kubernetes/</guid>
				<description>&lt;p&gt;Besides using the goodness of Azure Container Services (ACS). Different Azure services like Azure Container Registry (ACR) and Azure Container Instances (ACI) can be used and connected from independent container orchestrators like kubernetes (k8s). This post will explain how to set up a custom ACR and connect it to an existing k8s cluster to ensure images will be pulled from the private container registry instead of the public docker hub.&lt;/p&gt;</description>
			</item>
	</channel>
</rss>
