Skip to content

Commit 9ccc6d1

Browse files
authored
Merge pull request #422 from Fedosin/configmap_namespace
🐛 Restrict configmap lookup to the provider namespace
2 parents e23d296 + 82d7655 commit 9ccc6d1

File tree

7 files changed

+31
-29
lines changed

7 files changed

+31
-29
lines changed

internal/controller/manifests_downloader.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,7 @@ func (p *phaseReconciler) checkConfigMapExists(ctx context.Context, labelSelecto
127127
labelSet := labels.Set(labelSelector.MatchLabels)
128128
listOpts := []client.ListOption{
129129
client.MatchingLabelsSelector{Selector: labels.SelectorFromSet(labelSet)},
130+
client.InNamespace(p.provider.GetNamespace()),
130131
}
131132

132133
var configMapList corev1.ConfigMapList

internal/controller/phases.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -176,7 +176,7 @@ func (p *phaseReconciler) load(ctx context.Context) (reconcile.Result, error) {
176176
return reconcile.Result{}, wrapPhaseError(err, "failed to load additional manifests", operatorv1.ProviderInstalledCondition)
177177
}
178178

179-
p.repo, err = p.configmapRepository(ctx, labelSelector, additionalManifests)
179+
p.repo, err = p.configmapRepository(ctx, labelSelector, p.provider.GetNamespace(), additionalManifests)
180180
if err != nil {
181181
return reconcile.Result{}, wrapPhaseError(err, "failed to load the repository", operatorv1.ProviderInstalledCondition)
182182
}
@@ -269,7 +269,7 @@ func (p *phaseReconciler) secretReader(ctx context.Context, providers ...configc
269269

270270
// configmapRepository use clusterctl NewMemoryRepository structure to store the manifests
271271
// and metadata from a given configmap.
272-
func (p *phaseReconciler) configmapRepository(ctx context.Context, labelSelector *metav1.LabelSelector, additionalManifests string) (repository.Repository, error) {
272+
func (p *phaseReconciler) configmapRepository(ctx context.Context, labelSelector *metav1.LabelSelector, namespace, additionalManifests string) (repository.Repository, error) {
273273
mr := repository.NewMemoryRepository()
274274
mr.WithPaths("", "components.yaml")
275275

@@ -280,7 +280,7 @@ func (p *phaseReconciler) configmapRepository(ctx context.Context, labelSelector
280280
return nil, err
281281
}
282282

283-
if err = p.ctrlClient.List(ctx, cml, &client.ListOptions{LabelSelector: selector}); err != nil {
283+
if err = p.ctrlClient.List(ctx, cml, &client.ListOptions{LabelSelector: selector, Namespace: namespace}); err != nil {
284284
return nil, err
285285
}
286286

internal/controller/phases_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -388,7 +388,7 @@ metadata:
388388
g.Expect(fakeclient.Create(ctx, &tt.configMaps[i])).To(Succeed())
389389
}
390390

391-
got, err := p.configmapRepository(context.TODO(), p.provider.GetSpec().FetchConfig.Selector, tt.additionalManifests)
391+
got, err := p.configmapRepository(context.TODO(), p.provider.GetSpec().FetchConfig.Selector, "ns1", tt.additionalManifests)
392392
if len(tt.wantErr) > 0 {
393393
g.Expect(err).Should(MatchError(tt.wantErr))
394394
return

test/e2e/air_gapped_test.go

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,14 @@ var _ = Describe("Install Core Provider in an air-gapped environment", func() {
5454
configMaps = append(configMaps, configMap)
5555
}
5656

57+
By("Creating capi-system namespace")
58+
namespace := &corev1.Namespace{
59+
ObjectMeta: metav1.ObjectMeta{
60+
Name: capiSystemNamespace,
61+
},
62+
}
63+
Expect(bootstrapCluster.Create(ctx, namespace)).To(Succeed())
64+
5765
By("Applying core provider manifests to the cluster")
5866
for _, cm := range configMaps {
5967
Expect(bootstrapCluster.Create(ctx, &cm)).To(Succeed())
@@ -65,7 +73,7 @@ var _ = Describe("Install Core Provider in an air-gapped environment", func() {
6573
coreProvider := &operatorv1.CoreProvider{
6674
ObjectMeta: metav1.ObjectMeta{
6775
Name: coreProviderName,
68-
Namespace: operatorNamespace,
76+
Namespace: capiSystemNamespace,
6977
},
7078
Spec: operatorv1.CoreProviderSpec{
7179
ProviderSpec: operatorv1.ProviderSpec{
@@ -87,7 +95,7 @@ var _ = Describe("Install Core Provider in an air-gapped environment", func() {
8795
By("Waiting for the core provider deployment to be ready")
8896
framework.WaitForDeploymentsAvailable(ctx, framework.WaitForDeploymentsAvailableInput{
8997
Getter: bootstrapClusterProxy.GetClient(),
90-
Deployment: &appsv1.Deployment{ObjectMeta: metav1.ObjectMeta{Name: coreProviderDeploymentName, Namespace: operatorNamespace}},
98+
Deployment: &appsv1.Deployment{ObjectMeta: metav1.ObjectMeta{Name: coreProviderDeploymentName, Namespace: capiSystemNamespace}},
9199
}, e2eConfig.GetIntervals(bootstrapClusterProxy.GetName(), "wait-controllers")...)
92100

93101
By("Waiting for core provider to be ready")
@@ -104,7 +112,7 @@ var _ = Describe("Install Core Provider in an air-gapped environment", func() {
104112
It("should successfully upgrade a CoreProvider (v1.5.4 -> latest)", func() {
105113
bootstrapCluster := bootstrapClusterProxy.GetClient()
106114
coreProvider := &operatorv1.CoreProvider{}
107-
key := client.ObjectKey{Namespace: operatorNamespace, Name: coreProviderName}
115+
key := client.ObjectKey{Namespace: capiSystemNamespace, Name: coreProviderName}
108116
Expect(bootstrapCluster.Get(ctx, key, coreProvider)).To(Succeed())
109117

110118
coreProvider.Spec.Version = ""
@@ -114,7 +122,7 @@ var _ = Describe("Install Core Provider in an air-gapped environment", func() {
114122
By("Waiting for the core provider deployment to be ready")
115123
framework.WaitForDeploymentsAvailable(ctx, framework.WaitForDeploymentsAvailableInput{
116124
Getter: bootstrapClusterProxy.GetClient(),
117-
Deployment: &appsv1.Deployment{ObjectMeta: metav1.ObjectMeta{Name: coreProviderDeploymentName, Namespace: operatorNamespace}},
125+
Deployment: &appsv1.Deployment{ObjectMeta: metav1.ObjectMeta{Name: coreProviderDeploymentName, Namespace: capiSystemNamespace}},
118126
}, e2eConfig.GetIntervals(bootstrapClusterProxy.GetName(), "wait-controllers")...)
119127

120128
By("Waiting for core provider to be ready")
@@ -132,15 +140,15 @@ var _ = Describe("Install Core Provider in an air-gapped environment", func() {
132140
bootstrapCluster := bootstrapClusterProxy.GetClient()
133141
coreProvider := &operatorv1.CoreProvider{ObjectMeta: metav1.ObjectMeta{
134142
Name: coreProviderName,
135-
Namespace: operatorNamespace,
143+
Namespace: capiSystemNamespace,
136144
}}
137145

138146
Expect(bootstrapCluster.Delete(ctx, coreProvider)).To(Succeed())
139147

140148
By("Waiting for the core provider deployment to be deleted")
141149
WaitForDelete(ctx, For(&appsv1.Deployment{ObjectMeta: metav1.ObjectMeta{
142150
Name: coreProviderDeploymentName,
143-
Namespace: operatorNamespace,
151+
Namespace: capiSystemNamespace,
144152
}}).In(bootstrapCluster), e2eConfig.GetIntervals(bootstrapClusterProxy.GetName(), "wait-controllers")...)
145153

146154
By("Waiting for the core provider object to be deleted")
@@ -168,5 +176,13 @@ var _ = Describe("Install Core Provider in an air-gapped environment", func() {
168176
for _, cm := range configMaps {
169177
Expect(bootstrapCluster.Delete(ctx, &cm)).To(Succeed())
170178
}
179+
180+
By("Deleting capi-system namespace")
181+
namespace := &corev1.Namespace{
182+
ObjectMeta: metav1.ObjectMeta{
183+
Name: capiSystemNamespace,
184+
},
185+
}
186+
Expect(bootstrapCluster.Delete(ctx, namespace)).To(Succeed())
171187
})
172188
})

test/e2e/helpers_test.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,8 @@ var (
2828
)
2929

3030
const (
31-
operatorNamespace = "capi-operator-system"
31+
operatorNamespace = "capi-operator-system"
32+
capiSystemNamespace = "capi-system"
3233

3334
previousCAPIVersion = "v1.5.4"
3435

test/e2e/resources/core-cluster-api-v1.5.4.yaml

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,6 @@
11
apiVersion: v1
22
data:
33
components: |
4-
apiVersion: v1
5-
kind: Namespace
6-
metadata:
7-
labels:
8-
cluster.x-k8s.io/provider: cluster-api
9-
control-plane: controller-manager
10-
name: capi-system
11-
---
124
apiVersion: apiextensions.k8s.io/v1
135
kind: CustomResourceDefinition
146
metadata:
@@ -11797,4 +11789,4 @@ metadata:
1179711789
provider.cluster.x-k8s.io/type: core
1179811790
provider.cluster.x-k8s.io/version: v1.5.4
1179911791
name: core-cluster-api-v1.5.4
11800-
namespace: capi-operator-system
11792+
namespace: capi-system

test/e2e/resources/core-cluster-api-v1.6.0.yaml

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,6 @@
11
apiVersion: v1
22
data:
33
components: |
4-
apiVersion: v1
5-
kind: Namespace
6-
metadata:
7-
labels:
8-
cluster.x-k8s.io/provider: cluster-api
9-
control-plane: controller-manager
10-
name: capi-system
11-
---
124
apiVersion: apiextensions.k8s.io/v1
135
kind: CustomResourceDefinition
146
metadata:
@@ -9860,4 +9852,4 @@ metadata:
98609852
provider.cluster.x-k8s.io/type: core
98619853
provider.cluster.x-k8s.io/version: v1.6.0
98629854
name: core-cluster-api-v1.6.0
9863-
namespace: capi-operator-system
9855+
namespace: capi-system

0 commit comments

Comments
 (0)