Path: blob/main/install/installer/pkg/components/workspace/networkpolicy.go
2501 views
// Copyright (c) 2021 Gitpod GmbH. All rights reserved.1// Licensed under the GNU Affero General Public License (AGPL).2// See License.AGPL.txt in the project root for license information.34package workspace56import (7"fmt"89"github.com/gitpod-io/gitpod/installer/pkg/common"10agentsmith "github.com/gitpod-io/gitpod/installer/pkg/components/agent-smith"11"github.com/gitpod-io/gitpod/installer/pkg/components/proxy"12wsdaemon "github.com/gitpod-io/gitpod/installer/pkg/components/ws-daemon"13networkingv1 "k8s.io/api/networking/v1"14metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"15"k8s.io/apimachinery/pkg/runtime"16"k8s.io/apimachinery/pkg/util/intstr"17)1819func networkpolicy(ctx *common.RenderContext) ([]runtime.Object, error) {20labels := common.DefaultLabels(Component)2122podSelectorLabels := map[string]string{23"app": "gitpod",24"component": Component,25"gitpod.io/networkpolicy": "default",26}2728return []runtime.Object{&networkingv1.NetworkPolicy{29TypeMeta: common.TypeMetaNetworkPolicy,30ObjectMeta: metav1.ObjectMeta{31Name: fmt.Sprintf("%s-default", Component),32Namespace: ctx.Namespace,33Labels: labels,34},35Spec: networkingv1.NetworkPolicySpec{36PodSelector: metav1.LabelSelector{MatchLabels: podSelectorLabels},37PolicyTypes: []networkingv1.PolicyType{"Ingress", "Egress"},38Ingress: []networkingv1.NetworkPolicyIngressRule{39{40From: []networkingv1.NetworkPolicyPeer{41{42PodSelector: &metav1.LabelSelector{MatchLabels: common.DefaultLabels(proxy.Component)},43},44},45},46{47From: []networkingv1.NetworkPolicyPeer{48{49PodSelector: &metav1.LabelSelector{MatchLabels: common.DefaultLabels(common.WSProxyComponent)},50},51},52},53{54From: []networkingv1.NetworkPolicyPeer{55{56PodSelector: &metav1.LabelSelector{MatchLabels: common.DefaultLabels(agentsmith.Component)},57},58},59},60{61From: []networkingv1.NetworkPolicyPeer{62{63PodSelector: &metav1.LabelSelector{MatchLabels: common.DefaultLabels(wsdaemon.Component)},64},65},66},67{68Ports: []networkingv1.NetworkPolicyPort{69{70Protocol: common.TCPProtocol,71Port: &intstr.IntOrString{IntVal: 23000},72},73},74From: []networkingv1.NetworkPolicyPeer{75{76NamespaceSelector: &metav1.LabelSelector{MatchLabels: map[string]string{77"chart": common.MonitoringChart,78}},79PodSelector: &metav1.LabelSelector{MatchLabels: common.DefaultLabels(common.ServerComponent)},80},81},82},83},84Egress: []networkingv1.NetworkPolicyEgressRule{85{86To: []networkingv1.NetworkPolicyPeer{87{88IPBlock: &networkingv1.IPBlock{89CIDR: "0.0.0.0/0",90// Google Compute engine special, reserved VM metadata IP91Except: []string{"169.254.169.254/32"},92},93},94},95},96{97To: []networkingv1.NetworkPolicyPeer{98{99PodSelector: &metav1.LabelSelector{MatchLabels: common.DefaultLabels(proxy.Component)},100},101},102},103common.AllowKubeDnsEgressRule(),104},105},106}}, nil107}108109110