Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update the Hypershift Validated Pattern #494

Draft
wants to merge 1 commit into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
75 changes: 0 additions & 75 deletions content/patterns/hypershift/_index.adoc

This file was deleted.

69 changes: 69 additions & 0 deletions content/patterns/hypershift/_index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
---
title: HyperShift
date: 2024-11-08
tier: maintained
summary: This pattern is for deploying the Hosted Control Planes (HyperShift) clusters using different providers.
rh_products:
- Red Hat OpenShift Container Platform
- Red Hat MultiCluster Engine
- Red Hat OpenShift Virtualization
other_products:
- MetalLB
industries:
- Infrastructure
aliases: /hypershift/
pattern_logo: medical-diagnosis.png
links:
install: getting-started
help: https://groups.google.com/g/validatedpatterns
bugs: https://github.com/validatedpatterns-sandbox/hypershift/issues
ci: hypershift
---

# Hosted Control Planes

## Background

HyperShift is middleware for hosting OpenShift control planes at scale that solves for cost and time to provision, as well as portability cross cloud with strong separation of concerns between management and workloads. Clusters are fully compliant OpenShift Container Platform (OCP) clusters and are compatible with standard OCP and Kubernetes toolchains.

![Hypershift High-Level Architecture](/images/hypershift/hypershift-high-level-architecture.png "source: https://hypershift-docs.netlify.app/")

> **Note**
> If you have any questions or concerns, contact [Jonny Rickard](mailto:jrickard@redhat.com) or [Juan Manuel Parrilla](mailto:jparrill@redhat.com).

## Benefits

The solution enables:

- A rapid provisioning of Hosted Clusters.
- A big save on the money side for resource consumption in the Cloud or on-premise.
- To make a better use of the BareMetal servers in the data center.

...and [some more reasons](https://hypershift-docs.netlify.app/reference/goals-and-design-invariants/) that could help different customers with different scenarios.

The hosted control plane pattern uses the following products and technologies:

- Red Hat OpenShift Container Platform (OCP) for container orchestration.
- Red Hat GitOps, a GitOps continuous delivery (CD) solution.
- The Red Hat MultiCluster Engine (MCE) Operator.
- Red Hat Openshift Virtualization


## Demos

- How to deploy a HostedControlPlane using Agent provider in DualStack/Connected using the CLI

[![alt text](https://img.youtube.com/vi/fgiu_Rz_lvc/0.jpg)](https://www.youtube.com/watch?v=fgiu_Rz_lvc)

- How to deploy a HostedControlPlane using Agent provider in DualStack/Disconnected using the CLI

[![alt text](https://img.youtube.com/vi/xdcl_Q3LTtw/0.jpg)](https://www.youtube.com/watch?v=xdcl_Q3LTtw)

- How to deploy a HostedControlPlane using Kubevirt provider in IPv4/Connected using the WebUI

[![alt text](https://img.youtube.com/vi/ABpeVd093LI/0.jpg)](https://www.youtube.com/watch?v=ABpeVd093LI)

## Next Steps

- [Getting started](getting-started) with HCP.

31 changes: 31 additions & 0 deletions content/patterns/hypershift/getting-started.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
---
title: Getting Started
weight: 20
aliases: /hypershift/getting-started/
---

# Deploying a Hosted Control Plane

## Prerequisites and workflow

- Install the multicluster engine for Kubernetes Operator (MCE) in a Openshift standalone cluster.
- Create an instance of `MultiClusterEngine` to enable `hypershift`.
- Create an S3 bucket that hosted control plane will use for OpenID Connect (OIDC).

From here we will need to know which provider we will use mainly. If we will focus in self-manage on-premise we will need to make sure that Assisted Installer (Agent) and/or Openshift Virtualization are installed and configured properly.

For Assisted Installer (Agent), we need to follow [this guide](https://hypershift-docs.netlify.app/how-to/agent/create-agent-cluster/#configure-agent-service), where basically you configures the `AgentServiceConfig` resource. This will allow the infrastructure operator to deploy Assisted Installer pods in the same `multicluster-engine` namespace.
For Openshift Virtualization (Kubevirt), we need to install a separated operator called `kubevirt-hyperconverged` which will make sure all the components are ready to use Openshift Virtualization.

If your focus is the cloud, you don't need to install additional resources in your Management clusters, you only will need to configure the IAM in AWS.

## How to deploy a Hosted Cluster

- How to deploy a HostedCluster in AWS: https://hypershift-docs.netlify.app/getting-started/#create-a-hosted-cluster
- How to deploy a HostedCluster in Azure: https://hypershift-docs.netlify.app/how-to/azure/create-azure-cluster-with-options
- How to deploy a HostedCluster in Kubevirt: https://hypershift-docs.netlify.app/how-to/kubevirt/create-kubevirt-cluster/#create-a-hostedcluster
- How to deploy a HostedCluster in Agent: https://hypershift-docs.netlify.app/how-to/agent/create-agent-cluster/#create-a-hosted-cluster
- How to deploy a HostedCluster in Openstack: https://hypershift-docs.netlify.app/how-to/openstack/create-openstack-cluster/#create-a-hostedcluster

> **Note**
> Please make sure you know the development status of the provider you will use, because this is a fast changing software and we constantly keep changing the status of every provider with different and more features.
40 changes: 40 additions & 0 deletions content/patterns/hypershift/management-cluster-sizing.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
---
title: Management Cluster Sizing
weight: 10
aliases: /hypershift/management-cluster-sizing/
---

# Management Cluster Sizing

The Management Cluster is the key piece which will host the Control Planes of the Hosted Clusters so we need to do the sizing properly. For that matter we have a calculator, let's dive a bit in that.

## Calculator

This tool is called **hcp-sizer** and it will help you to do this sizing following 2 ways:

- Interactive: Once you execute the CLI in a shell environment, it will prompt some questions and with that it will show you how big the worker nodes should be in order to host a concrete number of Hosted Control Planes
- Discovery: This will require a running Management cluster, the CLI will connect to it and do some calculations and giving you the proper output

This is a demo of how the tool execution looks like in the Interactive mode:

[![alt text](https://img.youtube.com/vi/Da95m8sZgEo/0.jpg)](https://www.youtube.com/watch?v=Da95m8sZgEo)

## Server Categories & QPS Reference

| **Category** | **Description** |
|-------------------------|-------------------------------------------------------------------------------------------------------------------------------|
| **Entry-Level Servers** | **CPU**: Typically 4 to 8 cores.<br/>**Memory**: Ranges from 8GB to 32GB of RAM. |
| **Mid-Range Servers** | **CPU**: Generally have between 12 to 24 cores.<br/>**Memory**: Equipped with 64GB to 256GB of RAM. |
| **High-End Servers** | **CPU**: Could have 32 cores or more, potentially with multiple CPUs.<br/>**Memory**: From 256GB to several terabytes of RAM. |

| Category | Description |
|-----------|-----------------|
| Low | 0-500 QPS |
| Medium | 500-1000 QPS |
| High | 1000-5000 QPS |


# Management cluster deployment recomendations

- Don't use ODF based Storage class for the PVCs of the etcd deployments, make sure you use local storage for that, LVMS operator it's a good fit for that matter.
- If you use a BareMetal (Agent) provider, make sure InfraEnv resource is an separated namespace of the HostedControlPlane namespace.