Configuring multi-cluster policy

If you have installed BEL’s multi-cluster extension, it includes a policy configuration that prevents unauthorized access to pods running in the linkerd-multicluster namespace. This policy configuration only grants access to the core Linkerd control plane by default. To see multi-cluster metrics in the dashboard, you’ll need to add the following configuration to the linkerd-multicluster namespace:

kubectl apply -f - <<EOF
apiVersion: policy.linkerd.io/v1alpha1
kind: MeshTLSAuthentication
metadata:
  name: service-mirror-dashboard-authn
  namespace: linkerd-multicluster
spec:
  identityRefs:
    - name: linkerd-dashboard
      namespace: monitoring
      kind: ServiceAccount
---
apiVersion: policy.linkerd.io/v1alpha1
kind: AuthorizationPolicy
metadata:
  namespace: linkerd-multicluster
  name: linkerd-admin-linkerd-dashboard
  labels:
    app.kubernetes.io/part-of: linkerd-buoyant
spec:
  targetRef:
    group: policy.linkerd.io
    kind: Server
    name: linkerd-admin
  requiredAuthenticationRefs:
    - group: policy.linkerd.io
      kind: MeshTLSAuthentication
      name: service-mirror-dashboard-authn
---
apiVersion: policy.linkerd.io/v1alpha1
kind: AuthorizationPolicy
metadata:
  namespace: linkerd-multicluster
  name: service-local-mirror-linkerd-dashboard
  labels:
    app.kubernetes.io/part-of: linkerd-buoyant
spec:
  targetRef:
    group: policy.linkerd.io
    kind: Server
    name: local-service-mirror
  requiredAuthenticationRefs:
    - group: policy.linkerd.io
      kind: MeshTLSAuthentication
      name: service-mirror-dashboard-authn
---
apiVersion: policy.linkerd.io/v1alpha1
kind: AuthorizationPolicy
metadata:
  namespace: linkerd-multicluster
  name: controller-linkerd-dashboard
  labels:
    app.kubernetes.io/part-of: linkerd-buoyant
spec:
  targetRef:
    group: policy.linkerd.io
    kind: Server
    name: controller
  requiredAuthenticationRefs:
    - group: policy.linkerd.io
      kind: MeshTLSAuthentication
      name: service-mirror-dashboard-authn
EOF

Upgrading from an older BEL installation

If you are upgrading from an older multi-cluster installation (pre-2.19), you’ll also need to apply the following configuration:

kubectl apply -f - <<EOF
apiVersion: policy.linkerd.io/v1alpha1
kind: AuthorizationPolicy
metadata:
  namespace: linkerd-multicluster
  name: service-mirror-linkerd-dashboard
  labels:
    app.kubernetes.io/part-of: linkerd-buoyant
spec:
  targetRef:
    group: policy.linkerd.io
    kind: Server
    name: service-mirror
  requiredAuthenticationRefs:
    - group: policy.linkerd.io
      kind: MeshTLSAuthentication
      name: service-mirror-dashboard-authn
EOF