Platform Engineering at Microsoft

For a while, I have been hearing chatter around “What is Microsoft doing in the Platform Engineering space?” and “What is Microsoft’s stance on Platform Engineering?”. Well, today is the first day of Microsoft Ignite 2024 and I am happy to say Microsoft has officially released a Platform engineering guide. It can be found here: https://aka.ms/plat-eng-learn

It is broken down into the following sections: Overview, Concept, How-To Guide, and Architecture!

Working through this guide will help you discover how platform engineering teams can leverage technologies from Microsoft and other vendors/providers to craft highly personalized, optimized, and secure developer experiences.

This guide essentially gives you the scoop on Microsoft’s perspective when it comes to Platform Engineering. It can be used to help you along your Platform Engineering journey!

Shout out to the core team that built this! DevDiv: Mark Weitzel, Chuck Lantz, Russell Conard and AKS Engineering: Daniel Sol.

I was honored and happy to be one of the reviewers of this guide! Also, it was a nice surprise to find a reference to one of my past Azure Architecture center articles “CI/CD for AKS apps with GitHub Actions and GitFlow (GitOps)” in the Platform Engineering guide here: https://learn.microsoft.com/en-us/platform-engineering/engineering-systems#enable-automatic-application-infrastructure-provisioning-during-continuous-delivery.

Released today also is a blog post from Amanda Silver Corporate Vice President of Microsoft’s Developer Division on Building Paved Paths in Platform Engineering. In this blog post, she talks about the new PE guide, what PE is, Microsoft’s learnings in PE, developer happiness, and Microsoft’s overall perspective on Platform Engineering. Check it out here: https://devblogs.microsoft.com/engineering-at-microsoft/building-paved-paths-the-journey-to-platform-engineering/

Another nice surprise today upon checking out Amanda’s Twitter profile is I discovered she is following me!

In addition to this new guide, there are a number of sessions at Ignite around Platform Engineering.

I will list them here with their links so you can watch them:

-Keynote by Amanda Silver: Productive and secure end-to-end developer experiences powered by AI

-Session by Mark Weitzel Principal Architect, DevDiv, and Dan Sol AKS Program Manager Breakout: Master Platform Engineering: Architecting Scalable & Resilient Systems

Discussion: Platform engineering Q&A with the Microsoft platform engineering team

Another cool thing launched today is Microsoft’s Platform Engineering Interest Group.

At Microsoft, we want to hear about your challenges with Platform Engineering and provide opportunities to connect with other teams, at Microsoft and at other companies, who are working together to build solutions in the Platform Engineering space. Joining this group will let you get exclusive early access to new tools and services from Microsoft. Sign up here:

https://aka.ms/plat-eng-signup

The last thing I want to mention in this post is a new open-source product from Microsoft named Radius. Radius is a single tool to describe, deploy, and manage your entire application. Radius is dedicated to addressing the platform engineering challenges associated with facilitating application deployments across on-premises infrastructure and major cloud providers such as Microsoft Azure and Amazon Web Services.

Radius is not an IDP. It’s an optional part of an IDP focused on the applications that provides infrastructure Recipes, simplifying the platform configurations like permissions, connection strings, and more to manage the application and its resources.

Radius empowers developers to comprehend their applications, recognizing that an application extends beyond Kubernetes alone. Radius assists developers in visualizing all the components that form their application. More about Radius here: radapp.io

Read more

New Platform Engineering Course and Blog

Many organizations have embraced DevOps and adopted technologies like Kubernetes, cloud computing, and Infrastructure as Code (IaC) tools like Terraform or Pulumi. Despite these efforts, they often face challenges in delivering on the promises of DevOps and cloud-native. Platform engineering has emerged as the next step in the evolution, breaking down barriers and empowering developers to bring software to the market faster and more efficiently.

Recently I have been working on content to help educate and share my knowledge in this space. I am happy to announce two new pieces of content on Platform Engineering including a new course and a new blog.

Course: Platform Engineering: The Big Picture

Last week my 22nd course was published on Pluralsight! I am really excited about this course because it covers something that has been really hot in tech lately. It is about Platform Engineering. Platform Engineering has emerged as the next step in the evolution, breaking down barriers and empowering teams. Being someone that works with Kubernetes and cloud native this course was right up my alley because I work directly in this space.

The course is titled “Platform Engineering: The Big Picture“. This course will help you explore platform engineering and discover how it can elevate cloud-native development, making developers’ lives easier while achieving new heights in software delivery. Platform Engineering unifies and centralizes toolchains & workflows for self-service making developers’ lives easier while achieving new heights in software delivery.

In this course, you will gain an understanding about Platform Engineering, its benefits, architecture, tooling, workflow and how to adopt it.

Some of the major topics covered in the course include:

  1. A Platform Engineering overview and why it’s needed, how Platforms enhance DevOps and streamline cloud native.
  2. A comparison of DevOps, SRE, and Platform Engineering.
  3. You will learn about Platform Engineering Architecture, its tooling landscape, and Internal Developer Platforms.

Check out the “Platform Engineering: The Big Picture“ course here:

https://www.pluralsight.com/courses/platform-engineering-big-picture

I hope you find value in this new Platform Engineering course. Be sure to follow my profile on Pluralsight so you will be notified as I release new courses

Here is the link to my Pluralsight profile to follow me:

https://www.pluralsight.com/authors/steve-buchanan

Blog: 8 tools every platform engineer should know about

I am also excited to announce my second Platform Engineering-related blog post on Pluralsight. This one is titled: “8 tools every platform engineer should know about”. In Platform Engineering there are a lot of tools that can make up a platform. It can be confusing and hard to know what tools to focus on in the Platform Engineering space. In this blog post, I list 8 tools that are a must-know when you are in the Platform Engineering space.

👉 Read the blog post here:

https://www.pluralsight.com/resources/blog/it-ops/top-platform-engineering-tools

Read more

Guest on Kubernetes Unpacked Podcast EP014 – “Using GitOps and AKS to Build and Deploy Apps

I recently was a guest on Michael Levan‘s Kubernetes Unpacked Podcast on the Packet Pushers network.

This is Kubernetes Unpacked episode #014 it is titled: “Using GitOps And AKS To Build And Deploy Applications

Michael and I talked about using GitOps and Azure Kubernetes Service (AKS) to automate the building and deployment of applications. We also chat about an entire architecture incorporating AKS, GitHub Actions, Azure Container Registry, GitHub, and ArgoCD along with how it all comes together to make a useful stack. Check out the podcast below.

Link to the podcast:

https://packetpushers.net/podcast/kubernetes-unpacked-014-using-gitops-and-aks-to-build-and-deploy-applications/

Listen here:

Read more

How To Set the Application Reconciliation Timeout in Argo CD

Argo CD has something called the Application reconciliation timeout. This is how often your applications will sync from Argo CD to the Git repository. It looks for changes and when it sees changes it will then apply the desired state from the repo to the Kubernetes (K8s) cluster. By default the timeout period is set to 3 minutes. This is set in the General Argo CD configuration.

The General Argo CD configuration is set in the argocd-cm ConfigMap. And the argocd-cm ConfigMap is deployed in the argocd namespace.

You can view what is currently set by running the following kubectl command on your K8s cluster that is running your Argo CD instance:

kubectl describe configmaps argocd-cm -n argocd

The output will look like the following:

You can also see that the argocd-cm Data is empty by running kubectl get configmaps -n argocd or if you are using AKS navigate to ConfigMaps in the Azure portal like in the following screenshot.

Most Argo CD instances are running the default settings for its configurations. The argocd-server component reads and writes to the argocd-cm ConfigMap and other Argo configuration ConfigMaps based on admin user interactions with the Argo CD web UI or the Argo CD CLI. It is normal for it to be empty with Data at 0 if you have not changed any defaults or set anything directly in the ConfigMap yet.

To change the Application reconciliation timeout you need to do the following:

  1. Get a copy of the argocd-cm ConfigMap here: https://github.com/argoproj/argo-cd/blob/master/docs/operator-manual/argocd-cm.yaml
  2. The Application reconciliation timeout can be found on line 283 “timeout.reconciliation: 180s”.
  3. Change “180s” to whatever number you want to change it to i.e. change to “60s” to reduce the sync internal to 1 minute.
  4. Remove all of the other settings in the file except for the Application reconciliation timeout. The file should look like this:
apiVersion: v1
kind: ConfigMap
metadata:
  name: argocd-cm
  namespace: argocd
  labels:
    app.kubernetes.io/name: argocd-cm
    app.kubernetes.io/part-of: argocd
data:
  # Application reconciliation timeout is the max amount of time required to discover if a new manifests version got
  # published to the repository. Reconciliation by timeout is disabled if timeout is set to 0. Three minutes by default.
  # > Note: argocd-repo-server deployment must be manually restarted after changing the setting.
  timeout.reconciliation: 60s

5. Save the file.

6. Connect to the Kubernetes cluster that is running Argo CD and apply the argocd-cm ConfigMap file you just updated by running the following:

kubectl apply -f argocd-cm.yaml -n argocd

7. Run the following to verify the update was applied:

kubectl describe configmaps argocd-cm -n argocd

You should also notice at least 1 is listed under Data for the ConfigMap now.

8. It is a good practice to redeploy the argocd-repo-server after updating the argocd-cm ConfgigMap. You can redeploy the argocd-repo-server by running the following:

kubectl -n argocd rollout restart deploy argocd-repo-server

That’s it! Now your app in Argo CD will sync on the new Application Reconciliation Timeout that you set. Check back soon for more Azure, Cloud, Kubernetes, GitOps, Argo CD content and more.

BTW: For more in-depth information on GitOps and Argo CD check out my GitOps and Argo CD courses on Pluralsight here:

GitOps: The Big Picture“:

https://app.pluralsight.com/library/courses/gitops-the-big-picture

Getting Started with Argo CD“:

https://app.pluralsight.com/library/courses/argo-cd-getting-started

And here is the link to my Pluralsight profile to follow mehttps://app.pluralsight.com/profile/author/steve-buchanan

Read more