From 54ddc4a730bf0cf9494485ce1192ff9459129794 Mon Sep 17 00:00:00 2001 From: Juan Manuel Parrilla Madrid Date: Fri, 8 Nov 2024 17:06:30 +0100 Subject: [PATCH] Update the Hypershift validated This PR includes the format change from adoc to markdown, and added some demos and documentation to the current ewxisting hypershift pattern. Signed-off-by: Juan Manuel Parrilla Madrid --- content/patterns/hypershift/_index.adoc | 75 ------------------- content/patterns/hypershift/_index.md | 69 +++++++++++++++++ .../patterns/hypershift/getting-started.md | 31 ++++++++ .../hypershift/management-cluster-sizing.md | 40 ++++++++++ 4 files changed, 140 insertions(+), 75 deletions(-) delete mode 100644 content/patterns/hypershift/_index.adoc create mode 100644 content/patterns/hypershift/_index.md create mode 100644 content/patterns/hypershift/getting-started.md create mode 100644 content/patterns/hypershift/management-cluster-sizing.md diff --git a/content/patterns/hypershift/_index.adoc b/content/patterns/hypershift/_index.adoc deleted file mode 100644 index 10cb87868..000000000 --- a/content/patterns/hypershift/_index.adoc +++ /dev/null @@ -1,75 +0,0 @@ ---- -title: HyperShift -date: 2023-11-15 -tier: sandbox -summary: This pattern is for deploying the Hosted Control Plane (HyperShift) service. -rh_products: -- Red Hat OpenShift Container Platform -- Red Hat MultiCluster Engine -other_products: -- AWS Controller for Kubernetes -industries: -- Infrastructure -aliases: /hypershift/ -pattern_logo: medical-diagnosis.png -links: - - help: https://groups.google.com/g/validatedpatterns - bugs: https://github.com/validatedpatterns-sandbox/hypershift/issues -ci: hypershift ---- - -:toc: -:imagesdir: /images -:_content-type: ASSEMBLY -include::modules/comm-attributes.adoc[] - -//Module to be included -//:_content-type: CONCEPT -//:imagesdir: ../../images -[id="about-hcp-pattern"] -= About the {hcp-pattern} ({hcp}) - -Background:: - -This pattern simplifies the deployment of an {hcp} or hosted control plane cluster. Use this pattern to create hosted control plane clusters. - -Workflow:: - -* Install multicluster engine for Kubernetes Operator -* Create an instance of the `MultiClusterEngine` to enable `hypershift`, which is a link:https://access.redhat.com/support/offerings/techpreview[technology preview feature]. -* Install the AWS Controllers for Kubernetes - Amazon S3 Operator -* Create an S3 bucket that hosted control plane will use for OpenID Connect (OIDC) -* Create a buildconfig and imagestream that provide the HyperShift cli (`hypershift`) as an imagestream to be used in further automation if desired. - -//This pipeline is showcased link:https://www.youtube.com/watch?v=zja83FVsm14[in this video]. - -image::hypershift/hypershift-high-level-architecture.png[link="/images/hypershift/hypershift-high-level-architecture.png",title="source: https://hypershift-docs.netlify.app/", align="center"] - -[NOTE] -==== -If you have any questions or concerns contact mailto:jrickard@redhat.com[Jonny Rickard]. -==== - -[id="about-solution-hcp"] -== About the solution elements - -The solution enables the rapid provisioning of {hcp}. - -The {hcp-pattern} uses the following products and technologies: - -* {rh-ocp} for container orchestration -* {rh-gitops}, a GitOps continuous delivery (CD) solution -* The {rh-mce} Operator, the multicluster-engine provider -* {ack-s3-op}, an S3 storage controller - -// All commented out by jrickard -//== Recorded demo - -//link:/videos/xray-deployment.svg[image:/videos/xray-deployment.svg[Demo\]] - -//[id="next-steps_med-diag-index"] -//== Next steps - -//* Getting started link:getting-started[Deploy the Pattern] -//We have relevant links on the patterns page diff --git a/content/patterns/hypershift/_index.md b/content/patterns/hypershift/_index.md new file mode 100644 index 000000000..827af32c2 --- /dev/null +++ b/content/patterns/hypershift/_index.md @@ -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. + diff --git a/content/patterns/hypershift/getting-started.md b/content/patterns/hypershift/getting-started.md new file mode 100644 index 000000000..9a2303fee --- /dev/null +++ b/content/patterns/hypershift/getting-started.md @@ -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. \ No newline at end of file diff --git a/content/patterns/hypershift/management-cluster-sizing.md b/content/patterns/hypershift/management-cluster-sizing.md new file mode 100644 index 000000000..a9800a6a8 --- /dev/null +++ b/content/patterns/hypershift/management-cluster-sizing.md @@ -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.
**Memory**: Ranges from 8GB to 32GB of RAM. | +| **Mid-Range Servers** | **CPU**: Generally have between 12 to 24 cores.
**Memory**: Equipped with 64GB to 256GB of RAM. | +| **High-End Servers** | **CPU**: Could have 32 cores or more, potentially with multiple CPUs.
**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.