diff --git a/install/installer/pkg/components/usage/networkpolicy.go b/install/installer/pkg/components/usage/networkpolicy.go new file mode 100644 index 00000000000000..9a19719f24ed1a --- /dev/null +++ b/install/installer/pkg/components/usage/networkpolicy.go @@ -0,0 +1,51 @@ +// Copyright (c) 2022 Gitpod GmbH. All rights reserved. +// Licensed under the MIT License. See License-MIT.txt in the project root for license information. + +package usage + +import ( + "github.com/gitpod-io/gitpod/installer/pkg/common" + + networkingv1 "k8s.io/api/networking/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/util/intstr" +) + +func networkpolicy(ctx *common.RenderContext) ([]runtime.Object, error) { + labels := common.DefaultLabels(Component) + + return []runtime.Object{ + &networkingv1.NetworkPolicy{ + TypeMeta: common.TypeMetaNetworkPolicy, + ObjectMeta: metav1.ObjectMeta{ + Name: Component, + Namespace: ctx.Namespace, + Labels: labels, + }, + Spec: networkingv1.NetworkPolicySpec{ + PodSelector: metav1.LabelSelector{MatchLabels: labels}, + PolicyTypes: []networkingv1.PolicyType{"Ingress"}, + Ingress: []networkingv1.NetworkPolicyIngressRule{ + { + Ports: []networkingv1.NetworkPolicyPort{ + { + Protocol: common.TCPProtocol, + Port: &intstr.IntOrString{IntVal: gRPCContainerPort}, + }, + }, + From: []networkingv1.NetworkPolicyPeer{ + { + PodSelector: &metav1.LabelSelector{ + MatchLabels: map[string]string{ + "component": common.ServerComponent, + }, + }, + }, + }, + }, + }, + }, + }, + }, nil +} diff --git a/install/installer/pkg/components/usage/objects.go b/install/installer/pkg/components/usage/objects.go index ac1544d2aa118c..bc3712cd29ec58 100644 --- a/install/installer/pkg/components/usage/objects.go +++ b/install/installer/pkg/components/usage/objects.go @@ -23,6 +23,7 @@ func Objects(ctx *common.RenderContext) ([]runtime.Object, error) { configmap, common.DefaultServiceAccount(Component), service, + networkpolicy, )(ctx) } diff --git a/install/installer/pkg/components/usage/objects_test.go b/install/installer/pkg/components/usage/objects_test.go index d0516ee2612b30..cf83b54049ea06 100644 --- a/install/installer/pkg/components/usage/objects_test.go +++ b/install/installer/pkg/components/usage/objects_test.go @@ -27,7 +27,7 @@ func TestObjects_RenderedWhenExperimentalConfigSet(t *testing.T) { objects, err := Objects(ctx) require.NoError(t, err) require.NotEmpty(t, objects, "must render objects because experimental config is specified") - require.Len(t, objects, 6, "should render expected k8s objects") + require.Len(t, objects, 7, "should render expected k8s objects") } func renderContextWithUsageConfig(t *testing.T, usage *experimental.UsageConfig) *common.RenderContext {