| {{- /* |
| Copyright VMware, Inc. |
| SPDX-License-Identifier: APACHE-2.0 |
| */}} |
| |
| {{- if .Values.networkPolicy.enabled }} |
| kind: NetworkPolicy |
| apiVersion: {{ include "common.capabilities.networkPolicy.apiVersion" . }} |
| metadata: |
| name: {{ include "mongodb.fullname" . }} |
| namespace: {{ include "common.names.namespace" . | quote }} |
| {{- $labels := include "common.tplvalues.merge" ( dict "values" ( list .Values.labels .Values.commonLabels ) "context" . ) }} |
| labels: {{- include "common.labels.standard" ( dict "customLabels" $labels "context" $ ) | nindent 4 }} |
| app.kubernetes.io/component: mongodb |
| {{- if or .Values.annotations .Values.commonAnnotation }} |
| {{- $annotations := include "common.tplvalues.merge" ( dict "values" ( list .Values.annotations .Values.commonAnnotations ) "context" . ) }} |
| annotations: {{- include "common.tplvalues.render" ( dict "value" $annotations "context" $ ) | nindent 4 }} |
| {{- end }} |
| spec: |
| {{- $podLabels := include "common.tplvalues.merge" ( dict "values" ( list .Values.podLabels .Values.commonLabels ) "context" . ) }} |
| podSelector: |
| matchLabels: {{- include "common.labels.matchLabels" ( dict "customLabels" $podLabels "context" $ ) | nindent 6 }} |
| app.kubernetes.io/component: mongodb |
| policyTypes: |
| - Ingress |
| - Egress |
| {{- if .Values.networkPolicy.allowExternalEgress }} |
| egress: |
| - {} |
| {{- else }} |
| egress: |
| # Allow dns resolution |
| - ports: |
| - port: 53 |
| protocol: UDP |
| - port: 53 |
| protocol: TCP |
| # Allow connection to other cluster pods |
| - ports: |
| - port: {{ .Values.containerPorts.mongodb }} |
| to: |
| - podSelector: |
| matchLabels: {{- include "common.labels.matchLabels" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 14 }} |
| {{- if .Values.networkPolicy.extraEgress }} |
| {{- include "common.tplvalues.render" ( dict "value" .Values.rts.networkPolicy.extraEgress "context" $ ) | nindent 4 }} |
| {{- end }} |
| {{- end }} |
| ingress: |
| - ports: |
| - port: {{ .Values.containerPorts.mongodb }} |
| {{- if .Values.metrics.enabled }} |
| - port: {{ .Values.metrics.containerPort }} |
| {{- end }} |
| {{- if not .Values.networkPolicy.allowExternal }} |
| from: |
| - podSelector: |
| matchLabels: |
| {{ template "common.names.fullname" . }}-client: "true" |
| - podSelector: |
| matchLabels: {{- include "common.labels.matchLabels" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 14 }} |
| app.kubernetes.io/component: mongodb |
| {{- $ingressNSMatchLabels := coalesce .Values.networkPolicy.ingressNSMatchLabels .Values.networkPolicy.namespaceSelector }} |
| {{- if $ingressNSMatchLabels }} |
| - namespaceSelector: |
| matchLabels: |
| {{- range $key, $value := $ingressNSMatchLabels }} |
| {{ $key | quote }}: {{ $value | quote }} |
| {{- end }} |
| {{- $ingressNSPodMatchLabels := coalesce .Values.networkPolicy.ingressNSPodMatchLabels .Values.networkPolicy.podSelector }} |
| {{- if $ingressNSPodMatchLabels }} |
| podSelector: |
| matchLabels: |
| {{- range $key, $value := $ingressNSPodMatchLabels }} |
| {{ $key | quote }}: {{ $value | quote }} |
| {{- end }} |
| {{- end }} |
| {{- end }} |
| {{- end }} |
| {{- $extraIngress := coalesce .Values.networkPolicy.extraIngress .Values.networkPolicy.customRules }} |
| {{- if $extraIngress }} |
| {{- include "common.tplvalues.render" ( dict "value" $extraIngress "context" $ ) | nindent 4 }} |
| {{- end }} |
| {{- end }} |