Skip to content

Commit ba28ccd

Browse files
committed
adds network policy for operator
1 parent f03287e commit ba28ccd

File tree

8 files changed

+204
-1
lines changed

8 files changed

+204
-1
lines changed
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
apiVersion: networking.k8s.io/v1
2+
kind: NetworkPolicy
3+
metadata:
4+
name: operator-allow-egress-to-api-server
5+
spec:
6+
podSelector:
7+
matchLabels:
8+
name: cert-manager-operator
9+
policyTypes:
10+
- Egress
11+
egress:
12+
- ports:
13+
- protocol: TCP
14+
port: 6443
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
apiVersion: networking.k8s.io/v1
2+
kind: NetworkPolicy
3+
metadata:
4+
name: operator-allow-ingress-to-metrics
5+
spec:
6+
podSelector:
7+
matchLabels:
8+
name: cert-manager-operator
9+
policyTypes:
10+
- Ingress
11+
ingress:
12+
- ports:
13+
- protocol: TCP
14+
port: 8443
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
apiVersion: networking.k8s.io/v1
2+
kind: NetworkPolicy
3+
metadata:
4+
name: operator-deny-all-traffic
5+
spec:
6+
podSelector:
7+
matchLabels:
8+
name: cert-manager-operator
9+
policyTypes:
10+
- Ingress
11+
- Egress

pkg/controller/deployment/cert_manager_controller_set.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ type CertManagerControllerSet struct {
2121
certManagerWebhookDeploymentController factory.Controller
2222
certManagerCAInjectorStaticResourcesController factory.Controller
2323
certManagerCAInjectorDeploymentController factory.Controller
24+
certManagerOperatorStaticResourcesController factory.Controller
2425
}
2526

2627
func NewCertManagerControllerSet(
@@ -44,6 +45,7 @@ func NewCertManagerControllerSet(
4445
certManagerWebhookDeploymentController: NewCertManagerWebhookDeploymentController(operatorClient, certManagerOperatorInformers, infraInformers, kubeClient, kubeInformersForTargetNamespace, eventRecorder, targetVersion, versionRecorder, trustedCAConfigmapName, cloudCredentialsSecretName),
4546
certManagerCAInjectorStaticResourcesController: NewCertManagerCAInjectorStaticResourcesController(operatorClient, kubeClientContainer, kubeInformersForNamespaces, eventRecorder),
4647
certManagerCAInjectorDeploymentController: NewCertManagerCAInjectorDeploymentController(operatorClient, certManagerOperatorInformers, infraInformers, kubeClient, kubeInformersForTargetNamespace, eventRecorder, targetVersion, versionRecorder, trustedCAConfigmapName, cloudCredentialsSecretName),
48+
certManagerOperatorStaticResourcesController: NewCertManagerOperatorStaticResourcesController(operatorClient, kubeClientContainer, kubeInformersForNamespaces, eventRecorder),
4749
}
4850
}
4951

@@ -55,5 +57,6 @@ func (c *CertManagerControllerSet) ToArray() []factory.Controller {
5557
c.certManagerWebhookDeploymentController,
5658
c.certManagerCAInjectorStaticResourcesController,
5759
c.certManagerCAInjectorDeploymentController,
60+
c.certManagerOperatorStaticResourcesController,
5861
}
5962
}
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
package deployment
2+
3+
import (
4+
"github.com/openshift/cert-manager-operator/pkg/operator/operatorclient"
5+
"github.com/openshift/library-go/pkg/controller/factory"
6+
"github.com/openshift/library-go/pkg/operator/events"
7+
"github.com/openshift/library-go/pkg/operator/resource/resourceapply"
8+
"github.com/openshift/library-go/pkg/operator/staticresourcecontroller"
9+
"github.com/openshift/library-go/pkg/operator/v1helpers"
10+
11+
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
12+
"sigs.k8s.io/yaml"
13+
14+
"github.com/openshift/cert-manager-operator/pkg/operator/assets"
15+
)
16+
17+
const (
18+
certManagerOperatorStaticResourcesControllerName = operatorName + "-operator-static-resources-"
19+
)
20+
21+
var (
22+
certManagerOperatorAssetFiles = []string{
23+
"cert-manager-deployment/network-policy/operator-allow-egress-to-api-server.yaml",
24+
"cert-manager-deployment/network-policy/operator-allow-ingress-to-metrics.yaml",
25+
"cert-manager-deployment/network-policy/operator-deny-all-pod-selector.yaml",
26+
}
27+
)
28+
29+
func NewCertManagerOperatorStaticResourcesController(operatorClient v1helpers.OperatorClient,
30+
kubeClientContainer *resourceapply.ClientHolder,
31+
kubeInformersForNamespaces v1helpers.KubeInformersForNamespaces,
32+
eventsRecorder events.Recorder,
33+
) factory.Controller {
34+
return staticresourcecontroller.NewStaticResourceController(
35+
certManagerOperatorStaticResourcesControllerName,
36+
injectNamespace(operatorclient.OperatorNamespace),
37+
certManagerOperatorAssetFiles,
38+
kubeClientContainer,
39+
operatorClient,
40+
eventsRecorder,
41+
).AddKubeInformers(kubeInformersForNamespaces)
42+
}
43+
44+
func injectNamespace(namespace string) resourceapply.AssetFunc {
45+
return func(name string) ([]byte, error) {
46+
content := assets.MustAsset(name)
47+
var obj unstructured.Unstructured
48+
err := yaml.Unmarshal(content, &obj)
49+
if err != nil {
50+
return nil, err
51+
}
52+
obj.SetNamespace(namespace)
53+
return yaml.Marshal(&obj)
54+
}
55+
}

pkg/operator/assets/bindata.go

Lines changed: 100 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
package operatorclient
22

33
const (
4-
TargetNamespace = "cert-manager"
4+
TargetNamespace = "cert-manager"
5+
)
6+
7+
var (
58
OperatorNamespace = "cert-manager-operator"
69
)

pkg/operator/starter.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,10 +71,13 @@ func RunOperator(ctx context.Context, cc *controllercmd.ControllerContext) error
7171
versionRecorder := status.NewVersionGetter()
7272
versionRecorder.SetVersion("operator", status.VersionForOperatorFromEnv())
7373

74+
operatorclient.OperatorNamespace = cc.OperatorNamespace
75+
7476
kubeInformersForNamespaces := v1helpers.NewKubeInformersForNamespaces(kubeClient,
7577
"",
7678
"kube-system",
7779
operatorclient.TargetNamespace,
80+
operatorclient.OperatorNamespace,
7881
)
7982

8083
configClient, err := configv1client.NewForConfig(cc.KubeConfig)

0 commit comments

Comments
 (0)