diff --git a/docs/installation/control-plane-installation.md b/docs/installation/control-plane-installation.md index fff277c6..a6d11b6e 100644 --- a/docs/installation/control-plane-installation.md +++ b/docs/installation/control-plane-installation.md @@ -4,29 +4,30 @@ This guide will show you how to install and configure the Multi-Cluster Gateway ## Prerequisites -- A **hub cluster** running the OCM control plane (v0.11.0 or greater) -- Addons enabled `clusteradm install hub-addon --names application-manager` +- A **hub cluster** running the OCM control plane (>= v0.11.0 ) +- Open cluster management addons enabled + - `clusteradm install hub-addon --names application-manager` - Any number of additional **spoke clusters** that have been configured as OCM [ManagedClusters](https://open-cluster-management.io/concepts/managedcluster/) - [Kubectl](https://kubernetes.io/docs/tasks/tools/#kubectl) (>= v1.14.0) -- Either a pre-existing [cert-manager](https://cert-manager.io/)(>=v1.12.2) installation or the [Kustomize](https://kubectl.docs.kubernetes.io/installation/kustomize/) and [Helm](https://helm.sh/docs/intro/quickstart/#install-helm) CLIs +- Either a pre-existing [cert-manager](https://cert-manager.io/)(>=v1.12.2) installation _or_ the [Kustomize](https://kubectl.docs.kubernetes.io/installation/kustomize/) and [Helm](https://helm.sh/docs/intro/quickstart/#install-helm) CLIs installed - Amazon Web services (AWS) and or Google cloud provider (GCP) credentials. See the [DNS Provider](../dnspolicy/dns-provider.md) guide for obtaining these credentials. ## Configure OCM with RawFeedbackJsonString Feature Gate -All OCM spoke clusters must be configured with the `RawFeedbackJsonString` feature gate enabled: +All OCM spoke clusters must be configured with the `RawFeedbackJsonString` feature gate enabled. -1. By patching each spoke cluster's `klusterlet` in an existing OCM install: +Patch each spoke cluster's `klusterlet` in an existing OCM install: - ```bash + ```bash kubectl patch klusterlet klusterlet --type merge --patch '{"spec": {"workConfiguration": {"featureGates": [{"feature": "RawFeedbackJsonString", "mode": "Enable"}]}}}' --context - ``` + ``` ## Setup for hub commands Many of the commands in this document should be run in the context of your hub cluster. By configure HUB_CLUSTER which will be used in the commands: ```bash -export HUB_CLUSTER= +export HUB_CLUSTER= ``` ## Install Cert-Manager @@ -34,13 +35,13 @@ export HUB_CLUSTER= ## Installing MGC -First, run the following command in the context of your hub cluster to install the Gateway API CRDs: +First, run the following command in the context of your *hub* cluster to install the Gateway API CRDs: ```bash kubectl apply -f https://github.com/kubernetes-sigs/gateway-api/releases/download/v1.0.0/standard-install.yaml --context $HUB_CLUSTER ``` -We can then add a `wait` to verify the CRDs have been established: +Verify the CRDs have been established: ```bash kubectl wait --timeout=5m crd/gatewayclasses.gateway.networking.k8s.io crd/gateways.gateway.networking.k8s.io crd/httproutes.gateway.networking.k8s.io --for=condition=Established --context $HUB_CLUSTER @@ -60,7 +61,7 @@ kubectl apply -k "github.com/kuadrant/multicluster-gateway-controller.git/config In addition to the MGC, this will also install the Kuadrant add-on manager and a `GatewayClass` from which MGC-managed `Gateways` can be instantiated. -After the configuration has been applied, you can verify that the MGC and add-on manager have been installed and are running: +Verify that the MGC and add-on manager have been installed and are running: ```bash kubectl wait --timeout=5m -n multicluster-gateway-controller-system deployment/mgc-controller-manager deployment/mgc-add-on-manager deployment/mgc-policy-controller --for=condition=Available --context $HUB_CLUSTER @@ -71,7 +72,7 @@ deployment.apps/mgc-add-on-manager condition met deployment/mgc-policy-controller condition met ``` -We can also verify that the `GatewayClass` has been accepted by the MGC: +Verify that the `GatewayClass` has been accepted by the MGC: ```bash kubectl wait --timeout=5m gatewayclass/kuadrant-multi-cluster-gateway-instance-per-cluster --for=condition=Accepted --context $HUB_CLUSTER @@ -128,7 +129,7 @@ stringData: EOF ``` -A `ManagedZone` can now be created: +Create a `ManagedZone` using the commands below: #### AWS: @@ -165,7 +166,7 @@ spec: EOF ``` -You can now verify that the `ManagedZone` has been created and is in a ready state: +Verify that the `ManagedZone` has been created and is in a ready state: ```bash kubectl get managedzone -n multi-cluster-gateways --context $HUB_CLUSTER @@ -177,7 +178,7 @@ mgc-dev-mz ef.hcpapps.net /hostedzone/Z06419551EM30QQYMZN7F 2 ## Creating a Cert Issuer -We will now create a `ClusterIssuer` to be used with `cert-manager`. For simplicity, we will create a self-signed cert issuer here, but [other issuers can also be configured](https://cert-manager.io/docs/configuration/). +Create a `ClusterIssuer` to be used with `cert-manager`. For simplicity, we will create a self-signed cert issuer here, but [other issuers can also be configured](https://cert-manager.io/docs/configuration/). ```bash cat <= v0.11.0) Managed Cluster, which has already been bootstrapped and registered with a hub cluster - * We have [a guide](./control-plane-installation.md) which covers this in detail - * Also see: - * [https://open-cluster-management.io/getting-started/quick-start/] - * [https://open-cluster-management.io/concepts/managedcluster/] +- Access to an Open Cluster Management(OCM) (>= v0.11.0) Managed Cluster, which has already been bootstrapped and registered with a hub cluster + - We have [a guide](./control-plane-installation.md) which covers this in detail + - For more information on OCM also see: + - [OCM quick start](https://open-cluster-management.io/getting-started/quick-start) + - [Managed cluster](https://open-cluster-management.io/concepts/managedcluster/) - [Kubectl](https://kubernetes.io/docs/tasks/tools/#kubectl) (>= v1.14.0) -* OLM will need to be installed into the ManagedCluster where you want to run the Kuadrant Service Protection components - * See: - * https://sdk.operatorframework.io/docs/installation/ - * https://olm.operatorframework.io/docs/getting-started/ -* Kuadrant uses Istio as a Gateway API provider - this will need to be installed into the data plane clusters - * We recommend installing Istio 1.20.0, including Gateway API v1 - * ``` +- OLM installed on the ManagedCluster where you want to run the Kuadrant Service Protection components + - For installation guides please see: + - [Operator-sdk](https://sdk.operatorframework.io/docs/installation/) + - [OLM](https://olm.operatorframework.io/docs/getting-started/) +- Istio operator v1.20.0 installed on the spoke clusters + - Please see install guide [here](https://preliminary.istio.io/latest/docs/setup/install/operator/) +- Gateway API v1 + - To install please use: + ``` kubectl apply -f "https://github.com/kubernetes-sigs/gateway-api/releases/download/v1.0.0/standard-install.yaml" ``` - * See also: [https://preliminary.istio.io/latest/docs/tasks/traffic-management/ingress/gateway-api/] + * For more information please see: [GatewayAPI DOCs](https://preliminary.istio.io/latest/docs/tasks/traffic-management/ingress/gateway-api/) ## Install the Kuadrant OCM Add-On -To install the Kuadrant Service Protection components into a spoke `ManagedCluster`, target your OCM Hub cluster with `kubectl` and run: +To install the Kuadrant Service Protection components into a *spoke* `ManagedCluster`, target your OCM Hub cluster with `kubectl` and run: ``` kubectl apply -k "github.com/kuadrant/multicluster-gateway-controller.git/config/service-protection-install-guide?ref=release-0.3" -n namespace-of-your-managed-spoke-cluster-on-the-hub @@ -32,11 +34,11 @@ The above command will install the `ManagedClusterAddOn` resource needed to inst The Kuadrant addon will install: -* the Kuadrant Operator +* Kuadrant Operator * Limitador (and its associated operator) * Authorino (and its associated operator) -For more details, see the Kuadrant components installed by the (kuadrant-operator)[https://github.com/Kuadrant/kuadrant-operator#kuadrant-components] +For more details, see the Kuadrant components installed by the [kuadrant-operator](https://github.com/Kuadrant/kuadrant-operator#kuadrant-components) ### OLM and OpenShift CatalogSource