Skip to content

Commit 2cd4292

Browse files
authored
Merge pull request #1086 from snyk/fix/fix-openshift-namespace-watch-permission
fix: give openshift namespace watch the correct permission
2 parents 9e56852 + eb79582 commit 2cd4292

File tree

3 files changed

+21
-4
lines changed

3 files changed

+21
-4
lines changed

snyk-monitor/templates/role.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@ rules:
2222
resources:
2323
- namespaces
2424
verbs:
25+
- get
26+
- list
2527
- watch
2628
- apiGroups:
2729
- ""

src/supervisor/types.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import {
66
CoreV1Api,
77
CustomObjectsApi,
88
KubeConfig,
9+
V1Namespace,
910
V1ObjectMeta,
1011
V1OwnerReference,
1112
V1PodSpec,
@@ -64,3 +65,8 @@ export class K8sClients implements IK8sClients {
6465
this.customObjectsClient = config.makeApiClient(CustomObjectsApi);
6566
}
6667
}
68+
69+
export interface NamespaceResponse {
70+
response: IncomingMessage;
71+
body: V1Namespace;
72+
}

src/supervisor/watchers/index.ts

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { V1Namespace } from '@kubernetes/client-node';
22

33
import { logger } from '../../common/logger';
44
import { config } from '../../common/config';
5-
import { WorkloadKind } from '../types';
5+
import { NamespaceResponse, WorkloadKind } from '../types';
66
import { setupNamespacedInformer, setupClusterInformer } from './handlers';
77
import { k8sApi } from '../cluster';
88
import { extractNamespaceName } from './internal-namespaces';
@@ -60,9 +60,18 @@ export async function beginWatchingWorkloads(): Promise<void> {
6060
{ namespace: config.WATCH_NAMESPACE },
6161
'kubernetes-monitor restricted to specific namespace',
6262
);
63-
const namespaceResponse = await k8sApi.coreClient.readNamespace(
64-
config.WATCH_NAMESPACE,
65-
);
63+
let namespaceResponse: NamespaceResponse | undefined;
64+
try {
65+
namespaceResponse = await k8sApi.coreClient.readNamespace(
66+
config.WATCH_NAMESPACE,
67+
);
68+
} catch (err) {
69+
logger.error(
70+
{ watchedNamespace: config.WATCH_NAMESPACE, err },
71+
'failed to read the namespace',
72+
);
73+
return;
74+
}
6675
const namespace = namespaceResponse.body;
6776
await setupWatchesForNamespace(namespace);
6877
return;

0 commit comments

Comments
 (0)