Skip to content

Advanced Cluster Management

Red Hat ACM Documentation

Red Hat Advanced Cluster Management (ACM) provides multicluster lifecycle management, governance, and observability. Installing ACM also automatically installs the multicluster engine operator.

Note

Only one ACM hub cluster can exist per OpenShift cluster.

Prerequisites

  • Hub cluster is installed and storage is configured
  • Cluster administrator privileges

Install the Operator via WebUI

  1. Go to Ecosystem -> Software Catalog -> filter for "Advanced Cluster Management" -> click the tile
  2. Click Install
  3. Leave all the defaults and click Install
  4. Wait for the Operator to install
  5. Go to Ecosystem -> Installed Operators -> click "Advanced Cluster Management for Kubernetes"
  6. Click on the "MultiClusterHub" tab and then click "Create MultiClusterHub"
  7. Leave all the defaults and click Create

Note

It can take up to 10 minutes for the hub to finish deploying all components.

  1. Wait for the status to show Running

Install the Operator via YAML

apiVersion: v1
kind: Namespace
metadata:
  name: open-cluster-management
---
apiVersion: operators.coreos.com/v1
kind: OperatorGroup
metadata:
  name: open-cluster-management
  namespace: open-cluster-management
spec:
  targetNamespaces:
    - open-cluster-management
---
apiVersion: operators.coreos.com/v1alpha1
kind: Subscription
metadata:
  name: acm-operator-subscription
  namespace: open-cluster-management
spec:
  sourceNamespace: openshift-marketplace
  source: redhat-operators
  channel: release-2.17
  installPlanApproval: Automatic
  name: advanced-cluster-management

Note

The ACM channel must match your OCP version. Verify the default channel: oc get packagemanifest advanced-cluster-management -o jsonpath='{.status.defaultChannel}'

oc apply -f acm-operator.yaml

Wait for the operator to install:

oc get csv -n open-cluster-management -w

The PHASE should show Succeeded.

Create the MultiClusterHub

apiVersion: operator.open-cluster-management.io/v1
kind: MultiClusterHub
metadata:
  name: multiclusterhub
  namespace: open-cluster-management
spec: {}
oc apply -f multiclusterhub.yaml

Monitor the status:

oc get mch -n open-cluster-management -w

The status should show Running.

Verify the Installation

oc get pods -n open-cluster-management
oc get route multicloud-console -n open-cluster-management -o jsonpath='{.spec.host}'

Enable Bare Metal Provisioning

Enable bare metal provisioning for spoke cluster deployment:

apiVersion: metal3.io/v1alpha1
kind: Provisioning
metadata:
  name: provisioning-configuration
spec:
  provisioningNetwork: "Disabled"
  watchAllNamespaces: true
oc apply -f provisioning.yaml

Import an Existing Cluster

To import an existing cluster (one not provisioned by ACM) into the hub:

  1. Create the ManagedCluster resource on the hub:

    apiVersion: cluster.open-cluster-management.io/v1
    kind: ManagedCluster
    metadata:
      name: {{ managed_cluster_name }}
    spec:
      hubAcceptsClient: true
    
    oc apply -f managed-cluster.yaml
    
  2. Wait for ACM to generate the import resources:

    oc get secret -n {{ managed_cluster_name }} | grep import
    
  3. Extract the import YAML and apply it on the target cluster:

    oc get secret {{ managed_cluster_name }}-import -n {{ managed_cluster_name }} \
      -o jsonpath='{.data.import\.yaml}' | base64 -d > import.yaml
    
    oc apply -f import.yaml --kubeconfig={{ managed_cluster_kubeconfig }}
    
  4. Verify the managed cluster is connected:

    oc get managedcluster {{ managed_cluster_name }}
    

    The HubAcceptedManagedCluster condition should be True and the cluster should show as Available.