Hi Team,
We are using the Hosted control plane clusters
We deployed the addons using the addon-framework on the HCP cluster
Initially all the addons are healthy and working fine. We upgrade the framework from -0.11.0 -> 1.0.0
One of the addon on the spoke/HCP cluster is not able to list the configmap on the Hub which is working fine initially
W0114 11:01:36.558461 1 reflector.go:569] pkg/mod/k8s.io/client-go@v0.32.2/tools/cache/reflector.go:251: failed to list *v1.ConfigMap: Unauthorized
E0114 11:01:36.558504 1 reflector.go:166] "Unhandled Error" err="pkg/mod/k8s.io/client-go@v0.32.2/tools/cache/reflector.go:251: Failed to watch *v1.ConfigMap: failed to list *v1.ConfigMap: Unauthorized"
below are the code snippet which are used to deploy the addon
func newAgentController(
spokeKubeClient kubernetes.Interface,
addonClient addonv1alpha1client.Interface,
configmapInformers corev1informers.ConfigMapInformer,
clusterName string,
addonName string,
addonNamespace string,
) factory.Controller {
c := &agentController{
spokeKubeClient: spokeKubeClient,
addonClient: addonClient,
clusterName: clusterName,
addonName: addonName,
addonNamespace: addonNamespace,
hubConfigMapLister: configmapInformers.Lister(),
testInstall: test.NewTestInstall(),
}
return factory.New().WithInformersQueueKeysFunc(
func(obj runtime.Object) []string {
key, _ := cache.MetaNamespaceKeyFunc(obj)
return []string{key}
}, configmapInformers.Informer()).
WithSync(c.sync).ToController("agent-controller")
}
hubKubeInformerFactory := informers.NewSharedInformerFactoryWithOptions(hubKubeClient, 10*time.Minute, informers.WithNamespace(o.SpokeClusterName))
// create an agent controller
agent := newAgentController(
spokeKubeClient,
addonClient,
hubKubeInformerFactory.Core().V1().ConfigMaps(),
o.SpokeClusterName,
o.AddonName,
o.AddonNamespace,
)
All the addons are deployed in open-cluster-management-agent-addon
[1:12 PM]kk ~/tmp $ kubectl get secret -n open-cluster-management-agent-addon
NAME TYPE DATA AGE
builder-dockercfg-2prp6 kubernetes.io/dockercfg 1 6d16h
cluster-proxy-ca Opaque 1 6d16h
cluster-proxy-dockercfg-h7h4x kubernetes.io/dockercfg 1 6d16h
cluster-proxy-hub-kubeconfig Opaque 4 6d16h
cluster-proxy-open-cluster-management.io-proxy-agent-signer-client-cert Opaque 3 6d16h
cluster-proxy-service-proxy-server-certificates Opaque 2 6d16h
default-dockercfg-k5x7z kubernetes.io/dockercfg 1 6d16h
deployer-dockercfg-x7nsj kubernetes.io/dockercfg 1 6d16h
agent-sa-dockercfg-2bgjb kubernetes.io/dockercfg 1 2d21h
backup-hub-kubeconfig Opaque 4 2d20h
backupagent-sa-dockercfg-h7q6l kubernetes.io/dockercfg 1 6d16h
base-hub-kubeconfig Opaque 4 2d20h
klusterlet-addon-workmgr-dockercfg-6vz72 kubernetes.io/dockercfg 1 6d16h
klusterlet-addon-workmgr-log-dockercfg-29rzl kubernetes.io/dockercfg 1 6d16h
managed-serviceaccount-dockercfg-wcxzh kubernetes.io/dockercfg 1 6d16h
managed-serviceaccount-hub-kubeconfig Opaque 4 6d16h
open-cluster-management-image-pull-credentials kubernetes.io/dockerconfigjson 1 6d16h
work-manager-hub-kubeconfig
The hub config is in place
base-hub-kubeconfig Opaque 4 2d20h
Agent spec deployed
kind: Pod
apiVersion: v1
metadata:
generateName: agent-7656bddd86-
annotations:
k8s.ovn.org/pod-networks: '{"default":{"ip_addresses":["10.132.1.166/23"],"mac_address":"0a:58:0a:84:01:a6","gateway_ips":["10.132.0.1"],"routes":[{"dest":"10.132.0.0/14","nextHop":"10.132.0.1"},{"dest":"172.31.0.0/16","nextHop":"10.132.0.1"},{"dest":"169.254.0.5/32","nextHop":"10.132.0.1"},{"dest":"100.65.0.0/16","nextHop":"10.132.0.1"}],"ip_address":"10.132.1.166/23","gateway_ip":"10.132.0.1","role":"primary"}}'
k8s.v1.cni.cncf.io/network-status: |-
[{
"name": "ovn-kubernetes",
"interface": "eth0",
"ips": [
"10.132.1.166"
],
"mac": "0a:58:0a:84:01:a6",
"default": true,
"dns": {}
}]
openshift.io/scc: nonroot-v2
seccomp.security.alpha.kubernetes.io/pod: runtime/default
resourceVersion: '2901397'
name: agent-7656bddd86-swhht
uid: 6e1fd1af-b4a9-4191-92c4-1f399a51fbdf
creationTimestamp: '2026-01-16T09:49:12Z'
managedFields:
- manager: kube-controller-manager
operation: Update
apiVersion: v1
time: '2026-01-16T09:49:12Z'
fieldsType: FieldsV1
fieldsV1:
'f:metadata':
'f:generateName': {}
'f:labels':
.: {}
'f:app': {}
'f:pod-template-hash': {}
'f:ownerReferences':
.: {}
'k:{"uid":"433feeba-ca88-4dbd-9922-d197c0e903cf"}': {}
'f:spec':
'f:volumes':
.: {}
'k:{"name":"hub-config"}':
.: {}
'f:name': {}
'f:secret':
.: {}
'f:defaultMode': {}
'f:secretName': {}
'f:containers':
'k:{"name":"agent"}':
'f:image': {}
'f:volumeMounts':
.: {}
'k:{"mountPath":"/var/run/hub"}':
.: {}
'f:mountPath': {}
'f:name': {}
'f:terminationMessagePolicy': {}
.: {}
'f:resources':
.: {}
'f:limits':
.: {}
'f:cpu': {}
'f:ephemeral-storage': {}
'f:memory': {}
'f:requests':
.: {}
'f:cpu': {}
'f:ephemeral-storage': {}
'f:memory': {}
'f:args': {}
'f:securityContext':
.: {}
'f:allowPrivilegeEscalation': {}
'f:capabilities':
.: {}
'f:drop': {}
'f:privileged': {}
'f:readOnlyRootFilesystem': {}
'f:runAsNonRoot': {}
'f:runAsUser': {}
'f:seccompProfile':
.: {}
'f:type': {}
'f:terminationMessagePath': {}
'f:imagePullPolicy': {}
'f:name': {}
'f:dnsPolicy': {}
'f:serviceAccount': {}
'f:restartPolicy': {}
'f:schedulerName': {}
'f:terminationGracePeriodSeconds': {}
'f:serviceAccountName': {}
'f:enableServiceLinks': {}
'f:securityContext':
.: {}
'f:runAsNonRoot': {}
- manager: np-1-g8l4b-jvs65
operation: Update
apiVersion: v1
time: '2026-01-16T09:49:12Z'
fieldsType: FieldsV1
fieldsV1:
'f:metadata':
'f:annotations':
'f:k8s.ovn.org/pod-networks': {}
subresource: status
- manager: multus-daemon
operation: Update
apiVersion: v1
time: '2026-01-16T09:49:13Z'
fieldsType: FieldsV1
fieldsV1:
'f:metadata':
'f:annotations':
'f:k8s.v1.cni.cncf.io/network-status': {}
subresource: status
- manager: kubelet
operation: Update
apiVersion: v1
time: '2026-01-16T09:49:18Z'
fieldsType: FieldsV1
fieldsV1:
'f:status':
'f:conditions':
'k:{"type":"ContainersReady"}':
.: {}
'f:lastProbeTime': {}
'f:lastTransitionTime': {}
'f:status': {}
'f:type': {}
'k:{"type":"Initialized"}':
.: {}
'f:lastProbeTime': {}
'f:lastTransitionTime': {}
'f:status': {}
'f:type': {}
'k:{"type":"PodReadyToStartContainers"}':
.: {}
'f:lastProbeTime': {}
'f:lastTransitionTime': {}
'f:status': {}
'f:type': {}
'k:{"type":"Ready"}':
.: {}
'f:lastProbeTime': {}
'f:lastTransitionTime': {}
'f:status': {}
'f:type': {}
'f:containerStatuses': {}
'f:hostIP': {}
'f:hostIPs': {}
'f:phase': {}
'f:podIP': {}
'f:podIPs':
.: {}
'k:{"ip":"10.132.1.166"}':
.: {}
'f:ip': {}
'f:startTime': {}
subresource: status
namespace: open-cluster-management-agent-addon
ownerReferences:
- apiVersion: apps/v1
kind: ReplicaSet
name: agent-7656bddd86
uid: 433feeba-ca88-4dbd-9922-d197c0e903cf
controller: true
blockOwnerDeletion: true
labels:
app: agent
pod-template-hash: 7656bddd86
spec:
restartPolicy: Always
serviceAccountName: agent-sa
priority: 0
schedulerName: default-scheduler
enableServiceLinks: true
terminationGracePeriodSeconds: 30
preemptionPolicy: PreemptLowerPriority
nodeName: np-1-g8l4b-jvs65
securityContext:
seLinuxOptions:
level: 's0:c6,c5'
runAsNonRoot: true
seccompProfile:
type: RuntimeDefault
containers:
- resources:
limits:
cpu: '1'
ephemeral-storage: 500Mi
memory: 500Mi
requests:
cpu: 200m
ephemeral-storage: 200Mi
memory: 128Mi
terminationMessagePath: /dev/termination-log
name: agent
securityContext:
capabilities:
drop:
- ALL
privileged: false
runAsUser: 1000
runAsNonRoot: true
readOnlyRootFilesystem: false
allowPrivilegeEscalation: false
seccompProfile:
type: RuntimeDefault
imagePullPolicy: Always
volumeMounts:
- name: hub-config
mountPath: /var/run/hub
- name: kube-api-access-cshrw
readOnly: true
mountPath: /var/run/secrets/kubernetes.io/serviceaccount
terminationMessagePolicy: File
image: 'hcp-manager:0.0.1'
args:
- base
serviceAccount: agent-sa
volumes:
- name: hub-config
secret:
secretName: base-hub-kubeconfig
defaultMode: 420
- name: kube-api-access-cshrw
projected:
sources:
- serviceAccountToken:
expirationSeconds: 3607
path: token
- configMap:
name: kube-root-ca.crt
items:
- key: ca.crt
path: ca.crt
- downwardAPI:
items:
- path: namespace
fieldRef:
apiVersion: v1
fieldPath: metadata.namespace
- configMap:
name: openshift-service-ca.crt
items:
- key: service-ca.crt
path: service-ca.crt
defaultMode: 420
dnsPolicy: ClusterFirst
tolerations:
- key: node.kubernetes.io/not-ready
operator: Exists
effect: NoExecute
tolerationSeconds: 300
- key: node.kubernetes.io/unreachable
operator: Exists
effect: NoExecute
tolerationSeconds: 300
- key: node.kubernetes.io/memory-pressure
operator: Exists
effect: NoSchedule
status:
containerStatuses:
- restartCount: 0
started: true
ready: true
name: agent
state:
running:
startedAt: '2026-01-16T09:49:19Z'
volumeMounts:
- name: hub-config
mountPath: /var/run/hub
- name: kube-api-access-cshrw
mountPath: /var/run/secrets/kubernetes.io/serviceaccount
readOnly: true
recursiveReadOnly: Disabled
imageID: 'hcp-manager@sha256:adcff828d2a866ce209d6f003e361ce3441164f76e9982c32f21ff57471c77f6'
image: 'hcp-manager:0.0.1'
lastState: {}
containerID: 'cri-o://465d3049e3014ac32b3c1f400d3b4fd9b1c5fa1c4e9bbdf013f1a83cc4091f1b'
qosClass: Burstable
hostIPs:
- ip: 10.129.2.40
podIPs:
- ip: 10.132.1.166
podIP: 10.132.1.166
hostIP: 10.129.2.40
startTime: '2026-01-16T09:49:13Z'
conditions:
- type: PodReadyToStartContainers
status: 'True'
lastProbeTime: null
lastTransitionTime: '2026-01-16T09:49:20Z'
- type: Initialized
status: 'True'
lastProbeTime: null
lastTransitionTime: '2026-01-16T09:49:13Z'
- type: Ready
status: 'True'
lastProbeTime: null
lastTransitionTime: '2026-01-16T09:49:20Z'
- type: ContainersReady
status: 'True'
lastProbeTime: null
lastTransitionTime: '2026-01-16T09:49:20Z'
- type: PodScheduled
status: 'True'
lastProbeTime: null
lastTransitionTime: '2026-01-16T09:49:12Z'
phase: Running
Hi Team,
We are using the Hosted control plane clusters
We deployed the addons using the addon-framework on the HCP cluster
Initially all the addons are healthy and working fine. We upgrade the framework from -0.11.0 -> 1.0.0
One of the addon on the spoke/HCP cluster is not able to list the configmap on the Hub which is working fine initially
below are the code snippet which are used to deploy the addon
All the addons are deployed in open-cluster-management-agent-addon
The hub config is in place
Agent spec deployed