Blog: Introducing ClusterClass and Managed Topologies in Cluster API

Blog: Introducing ClusterClass and Managed Topologies in Cluster API

Author: Fabrizio Pandini (VMware)

The Cluster API community is happy to announce the implementation of ClusterClass and Managed Topologies, a new feature that will greatly simplify how you can provision, upgrade, and operate multiple Kubernetes clusters in a declarative way.

A little bit of context…

Before getting into the details, let’s take a step back and look at the history of Cluster API.

The Cluster API project started three years ago, and the first releases focused on extensibility and implementing a declarative API that allows a seamless experience across infrastructure providers. This was a success with many cloud providers: AWS, Azure, Digital Ocean, GCP, Metal3, vSphere and still counting.

With extensibility addressed, the focus shifted to features, like automatic control plane and etcd management, health-based machine remediation, machine rollout strategies and more.

Fast forwarding to 2021, with lots of companies using Cluster API to manage fleets of Kubernetes clusters running workloads in production, the community focused its effort on stabilization of both code, APIs, documentation, and on extensive test signals which inform Kubernetes releases.

With solid foundations in place, and a vibrant and welcoming community that still continues to grow, it was time to plan another iteration on our UX for both new and advanced users.

Enter ClusterClass and Managed Topologies, tada!

ClusterClass

As the name suggests, ClusterClass and managed topologies are built in two parts.

The idea behind ClusterClass is simple: define the shape of your cluster once, and reuse it many times, abstracting the complexities and the internals of a Kubernetes cluster away.

Defining a ClusterClass

ClusterClass, at its heart, is a collection of Cluster and Machine templates. You can use it as a “stamp” that can be leveraged to create many clusters of a similar shape.

---
apiVersion: cluster.x-k8s.io/v1beta1
kind: ClusterClass
metadata:
  name: my-amazing-cluster-class
spec:
  controlPlane:
    ref:
      apiVersion: controlplane.cluster.x-k8s.io/v1beta1
      kind: KubeadmControlPlaneTemplate
      name: high-availability-control-plane
    machineInfrastructure:
      ref:
        apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
        kind: DockerMachineTemplate
        name: control-plane-machine
  workers:
    machineDeployments:
      - class: type1-workers
        template:
          bootstrap:
            ref:
              apiVersion: bootstrap.cluster.x-k8s.io/v1beta1
              kind: KubeadmConfigTemplate
              name: type1-bootstrap
          infrastructure:
            ref:
              apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
              kind: DockerMachineTemplate
              name: type1-machine
      - class: type2-workers
        template:
          bootstrap:
            ref:
              apiVersion: bootstrap.cluster.x-k8s.io/v1beta1
              kind: KubeadmConfigTemplate
              name: type2-bootstrap
          infrastructure:
            ref:
              kind: DockerMachineTemplate
              apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
              name: type2-machine
  infrastructure:
    ref:
      apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
      kind: DockerClusterTemplate
      name: cluster-infrastructure

The possibilities are endless; you can get a default ClusterClass from the community, “off-the-shelf” classes from your vendor of choice, “certified” classes from the platform admin in your company, or even create custom ones for advanced scenarios.

Managed Topologies

Managed Topologies let you put the power of ClusterClass into action.

Given a ClusterClass, you can create many Clusters of a similar shape by providing a single resource, the Cluster.

Create a Cluster with ClusterClass

Here is an example:

---
apiVersion: cluster.x-k8s.io/v1beta1
 kind: Cluster
 metadata:
   name: my-amazing-cluster
   namespace: bar
 spec:
   topology: # define a managed topology
     class: my-amazing-cluster-class # use the ClusterClass mentioned earlier
     version: v1.21.2
     controlPlane:
       replicas: 3
     workers:
       machineDeployments:
       - class: type1-workers
         name: big-pool-of-machines
         replicas: 5
       - class: type2-workers
         name: small-pool-of-machines
         replicas: 1

But there is more than simplified cluster creation. Now the Cluster acts as a single control point for your entire topology.

All the power of Cluster API, extensibility, lifecycle automation, stability, all the features required for managing an enterprise grade Kubernetes cluster on the infrastructure provider of your choice are now at your fingertips: you can create your Cluster, add new machines, upgrade to the next Kubernetes version, and all from a single place.

It is just as simple as it looks!

What’s next

While the amazing Cluster API community is working hard to deliver the first version of ClusterClass and managed topologies later this year, we are already looking forward to what comes next for the project and its ecosystem.

There are a lot of great ideas and opportunities ahead!

We want to make managed topologies even more powerful and flexible, allowing users to dynamically change bits of a ClusterClass according to the specific needs of a Cluster; this will ensure the same simple and intuitive UX for solving complex problems like e.g. selecting machine image for a specific Kubernetes version and for a specific region of your infrastructure provider, or injecting proxy configurations in the entire Cluster, and so on.

Stay tuned for what comes next, and if you have any questions, comments or suggestions:


Source: Kubernetes Blog

HashiCorp’s Early Career Program: A Year in Review

HashiCorp’s Early Career Program: A Year in Review

HashiCorp’s first cohort of 29 student interns recently completed their 12-week virtual internships — and many have already accepted full-time positions at the company. In fact, the first iteration of HashiCorp’s Early Career program was so successful that we’re planning to significantly expand it for 2022.

The interns joined us in May 2021 from all over the US and Canada to support organizations across the company, from software engineering and customer success to design and marketing. Under the guidance of expert project leaders and peer mentors, the diverse group of interns took on public-facing projects and many had the opportunity to participate in product-certification programs to add to their portfolios.

HashiCorp

HashiCorp 2021 interns Emily Wong, Carlos Esteban, Milena Zlaticanin, and Rajas Nathak.

“From the start, I had the opportunity to work on real problems and implement features that our customers use daily.” — Milena Zlaticanin, Software Engineering Intern, from Northern Illinois University

“Given the flexibility of the role, I was able to explore the company’s various functions. From learning the marketing strategies to sitting in on sales calls and learning more about our sales workflow. I found it interesting to see how all the business components came together to drive the company forward.” — Rajas Nathak, Solutions Engineering Intern, from Texas Christian University

»Interns Helped Solve Real-World Issues

In tandem with helping to solve real-life infrastructure and security challenges, work on finance projects, address compensation issues, and participate in sales-development activities, the interns also had the chance to develop soft skills and learn more about business communications and professionalism, diversity and inclusion initiatives, and job-interviewing techniques. We provided weekly opportunities to keep the cohort connected even in a virtual environment.

“There were many fun events such as 1:1 coffee chats, Q&A sessions with our co-founders, intern game nights, and many more. Although HashiCorp is a remote company, I felt connected with my colleagues.” — Yongqi Kuang, Design Intern, from UC Davis

“Working at HashiCorp was such a memorable experience! The Early Career Program connected all the interns virtually through fun events, and I learned so much from my team!” — Emily Wong, Compensation Intern, from UC Santa Barbara

“I gained a deep appreciation for the sense of community at HashiCorp. Despite my teammates living hundreds of miles away, I always felt connected to them. I truly appreciated the culture of transparency and kindness I found around every corner.” — Joshua Lin, Customer Success Support Engineer Intern, from Bowdoin College

»From Intern to Full-Time Employee

We are so pleased with the results of our first cohort of interns, and are proud to report that approximately two-thirds of our initial intern cohort have accepted offers to join us full time after graduation.

“I’ll forever be grateful for HashiCorp seeing something in me and giving me the opportunity to learn!” — Carlos Esteban, Solutions Engineering Intern, from Southwestern University

“Although I was part of the company’s first internship team, the internship experience was truly one of a kind. I’m incredibly excited to be officially joining the team next year, and I’m looking forward to growing with the company.” — Yaseen Abdel-Rahman, Solutions Engineering Intern, from University of Texas, Dallas

»Join Us Next Year

As Summer 2021 fades in the rearview mirror, we’re already turning our attention to the next HashiCorp Early Career cohort,slated for Summer 2022. We plan to double the size of the program, with the goal of hiring more than 60 interns. The program will run for 12 weeks from May – September 2022 (dates are flexible with your school schedule). If you are a current junior expecting to graduate between December – June 2023, please read on to learn more about how to apply.

»Tips for Applying to the HashiCorp Early Career Program

You may be a good fit for our team if you are currently pursuing a Bachelor’s degree or equivalent training in the United States and plan to return to school following the completion of the Early Career program. In addition to role-specific requirements, we look for candidates with a problem-solver mentality with a focus on customer service and the ability to work collaboratively to understand priorities and business needs. We look forward to receiving your application.


Source: HashiCorp Blog