Prerequisites for Hosted Control Plane clusters

The prerequisites before you create virtualized or Bare Metal Hosted Control Plane clusters.

Before you begin

  • To configure LVM before the installation of the IBM Fusion Fusion Data Foundation service, create the custom configMap. For more information about how to create, see step 11.
  • To configure LVM after Fusion Data Foundation storage set up: Add drives with different capacities (compared to those used for Fusion Data Foundation storage) to any three storage nodes in the same disk slots. Ensure that the new drives are not of the same capacity as those used for the existing Fusion Data Foundation storage. Then, create a custom ConfigMap similar to the example provided in the step 11.
  • Install and configure Fusion Data Foundation provider mode storage type on the hub cluster.
  • If you plan to install Backup & Restore service, ensure that 12 GiB memory is available post the installation.
  • The Multi-cluster IBM Fusion using Hosted Control Plane on storage is available only on platforms that support the installation of in provider mode. For more information about the support details, see Supported platforms.
  • Ensure that the following ports are open on the hub cluster to deploy Hosted Control Plane clusters and support management and data traffic:
    Table 1. Ports required for Fusion Data Foundation server and client
    Type Protocol Ports Description
    Custom TCP TCP 6789 Ceph Monitor
    3300 Ceph Monitor
    6800-7300 Ceph OSD, MGR, MDS
    9283 Ceph MGR Prometheus Exporter
    31659 API Server

Procedure

  1. From the Red Hat® Operator Catalog, install MetalLB 4.16 or higher.
    Add the MetalLB Operator to your cluster so that when a service of type LoadBalancer is added to the cluster, MetalLB can add a fault-tolerant external IP address for the service. For the procedure to install and validate MetalLB, see https://docs.openshift.com/. Go to your specific version of OpenShift® Container Platform and check MetalLB details.
    Note: When you set up the load balancer, other applications can also get the advertised addresses. You must have enough addresses for any workloads on this cluster and created OpenShift Container Platform clusters.
  2. Create MetalLB CR based on the following example:
    apiVersion: metallb.io/v1beta1
    kind: MetalLB
    metadata:
      name: metallb
      namespace: metallb-system
  3. Create an IPaddress pool.
    Note:
    • Reserve a set of unused IPs on the same CIDR as the Bare Metal network for MetalLB. The MetalLB serves these IPs to any load-balancer service that is installed on the cluster and not just the Hosted Control Plane.
    • When planning IP addresses, consider the number of Hosted Control Plane to be created and allocate additional IPs for load balancer services. Reserve three IP addresses for Fusion Data Foundation storage load balancer services. If other workloads utilizes load balancers, factor those requirements into your IP address planning to ensure sufficient addresses are available.

    Example:

    apiVersion: metallb.io/v1beta1
    kind: IPAddressPool
    metadata:
      name: metallb
      namespace: metallb-system
    spec:
      addresses:
      - 9.9.0.51-9.9.0.70
    Note: When you set up the load balancer, other applications can also get the advertised addresses. You must have enough addresses for any workloads on this cluster and created OpenShift Container Platform clusters.
  4. Create L2advertisement based on the following example:
    apiVersion: metallb.io/v1beta1
    kind: L2Advertisement
    metadata:
      name: l2advertisement
      namespace: metallb-system
    spec:
      ipAddressPools:
       - metallb
  5. Run the following command to patch ingress:
    Note: This requirement is only for virtualized Hosted Control Plane clusters.
    oc patch ingresscontroller -n openshift-ingress-operator default --type=json -p '[{ "op": "add", "path": "/spec/routeAdmission", "value": {wildcardPolicy: "WildcardsAllowed"}}]'
  6. Install Multi Cluster Engine for Kubernetes operator.
  7. Create a Multi Cluster Engine CR instance based on the following example:
    apiVersion: multicluster.openshift.io/v1
    kind: MultiClusterEngine
    metadata:
      name: multiclusterengine
    spec:
      targetNamespace: multicluster-engine
    Change the parameter values according to your environment.
  8. Wait until the Multi Cluster Hub instance is created, available, and in Running state.
    The Multi Cluster Engine instance must be available.
    Run the following command to check whether the Multi Cluster Engine instance is available.
    $ oc get multiclusterengine
    Example output:
    $ oc get multiclusterengine
    NAME STATUS AGE
    multiclusterengine Available 170m
  9. Download hosted control plane CLI from OpenShift Container Platform console:
    1. Go to the Command Line Tools page.
    2. From the Hosted Control Plane - Hosted Control Plane Command Line Interface (CLI) section, download the CLI tar and extract from archive based on your platform.
      Note: In MCE, you can use the user interface instead of CLI. However, the CLI gives more options than the user interface.
  10. To optimize etcd performance for hosted clusters on the hub cluster, configure LVM to use local drives on worker nodes as follows:
    1. Provision three dedicated drives on three separate worker nodes.
    2. Configure LVM on the worker nodes to manage the dedicated drives for etcd pods.
  11. Follow the steps to configure the LVM:
    1. Create a configmap similar to the following example. This configmap is used by IBM Fusion to create a LVM cluster.

      Example configmap:
      kind: ConfigMap
      apiVersion: v1
      metadata:
        name: lvm-config
        namespace: ibm-spectrum-fusion-ns  
      data:
        drives: |
          - '/dev/disk/by-path/pci-0000:61:00.0-nvme-1'
        computeNodes: |
          - compute-1-ru5.rackm01.rtp.mydomain.com
          - compute-1-ru6.rackm01.rtp.mydomain.com
          - compute-1-ru7.rackm01.rtp.mydomain.com
        nodeType: compute

      The LVM cluster uses the NVMe drive /dev/disk/by-path/pci-0000:61:00.0-nvme-1 on the three compute nodes to provide PVCs for the etcd pods of the hosted clusters.

    2. To configure LVM clusters, specify the drives and nodes to be used. The drives field specifies the drives to be used for the LVM cluster. Use one or two drives per node. To specify two drives in a node, use the following format:
      drives: |
        - '/dev/disk/by-path/pci-0000:61:00.0-nvme-1'
        - '/dev/disk/by-path/pci-0000:63:00.0-nvme-1'

      The computeNodes field lists the worker nodes that provide disks for the LVM cluster. Ensure that the selected nodes are not GPU nodes.

      The nodeType field specifies the type of nodes to use for LVM clusters. Supported types are:
      1. Compute: uses disks from worker nodes.
      2. Control: uses disks from all master nodes to configure the LVM cluster.
  12. Increase the maximum number of pods per node from the default value of 250 to 500. For the procedure to update the value, see Managing the maximum number of pods per node .
  13. For Hosted Control Plane deployments, ensure the following on the hub cluster:
    • A valid pull secret must exist in the namespace where the Hosted Control Plane cluster is defined (the namespace containing the HostedCluster resource).
    • The HostedCluster CR must include a reference to this pull secret through the pullSecret field.
      For example:
      Note: Credentials in pull-secret must include username, password and auth.
      pullSecret:
          name: <hosted_cluster_name>-pull-secret
  14. Create a load balancer service in the openshift-storage namespace as follows:
    1. Define a load balancer service YAML.
      For example:
      kind: Service
      apiVersion: v1
      metadata:
        name: ocs-provider-server-load-balancer
        namespace: openshift-storage
        annotations:
          metallb.universe.tf/ip-allocated-from-pool: <address-pool-name-from-metallb>
      spec:
        ports:
          - name: provider
            protocol: TCP
            port: 50051
            targetPort: ocs-provider
            nodePort: 30756
        type: LoadBalancer
        selector:
          app: ocsProviderApiServer
    2. Apply the YAML.
      Command example:
      oc apply -f ocs-provider-server-load-balancer.yaml

What to do next

  1. Install an IBM Fusion hosted cluster and install Fusion Data Foundation on it. For the procedure to install the hosted cluster, see Installing the IBM Fusion base. For procedure to install Fusion Data Foundation on the hosted cluster, see Installing Fusion Data Foundation on a Hosted Control Plane cluster.