blob: fd6369656e9055fabac0ef2953d629bbf93779bb [file] [log] [blame]
Jeremy Ronquillo223db002020-06-05 10:28:22 -07001{{/*
Jeremy Ronquilloec2d3e42020-06-05 11:33:39 -07002# Copyright 2020-present Open Networking Foundation
Jeremy Ronquillo223db002020-06-05 10:28:22 -07003
Jeremy Ronquillo6046ce32020-06-18 11:06:29 -07004# SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
Jeremy Ronquillo223db002020-06-05 10:28:22 -07005*/}}
6
Hyunsun Moon33d85312020-08-20 00:55:31 -07007{{- $upfConfig := index .Values.config.upf.cfgFiles "upf.json" }}
8{{- $accessConfig := index $upfConfig "access" }}
9{{- $coreConfig := index $upfConfig "core" }}
Jeremy Ronquillo223db002020-06-05 10:28:22 -070010---
11apiVersion: apps/v1
12kind: StatefulSet
13metadata:
Hyunsun Moon33d85312020-08-20 00:55:31 -070014 name: upf
Jeremy Ronquillo223db002020-06-05 10:28:22 -070015 labels:
Hyunsun Moon33d85312020-08-20 00:55:31 -070016{{ tuple "upf" . | include "omec-user-plane.metadata_labels" | indent 4 }}
Jeremy Ronquillo223db002020-06-05 10:28:22 -070017spec:
18 replicas: 1
Hyunsun Moon33d85312020-08-20 00:55:31 -070019 serviceName: upf-headless
Jeremy Ronquillo223db002020-06-05 10:28:22 -070020 selector:
21 matchLabels:
Hyunsun Moon33d85312020-08-20 00:55:31 -070022{{ tuple "upf" . | include "omec-user-plane.metadata_labels" | indent 6 }}
Jeremy Ronquillo223db002020-06-05 10:28:22 -070023 template:
24 metadata:
25 labels:
Hyunsun Moon33d85312020-08-20 00:55:31 -070026{{ tuple "upf" . | include "omec-user-plane.metadata_labels" | indent 8 }}
Jeremy Ronquillo223db002020-06-05 10:28:22 -070027 annotations:
28 k8s.v1.cni.cncf.io/networks: '[
29 {
Hyunsun Moon33d85312020-08-20 00:55:31 -070030 "name": "access-net",
31 "interface": {{ index $accessConfig "ifname" | quote }},
Hyunsun Moond457d182020-09-10 15:52:09 -070032{{- if semverCompare ">=1.16-0" .Capabilities.KubeVersion.GitVersion }}
33 "ips": [{{ .Values.config.upf.access.ip | quote }}]
34{{- else }}
Hyunsun Moon33d85312020-08-20 00:55:31 -070035 "ips": {{ .Values.config.upf.access.ip | quote }}
Hyunsun Moond457d182020-09-10 15:52:09 -070036{{- end }}
Jeremy Ronquillo223db002020-06-05 10:28:22 -070037 },
38 {
Hyunsun Moon33d85312020-08-20 00:55:31 -070039 "name": "core-net",
40 "interface": {{ index $coreConfig "ifname" | quote }},
Hyunsun Moond457d182020-09-10 15:52:09 -070041{{- if semverCompare ">=1.16-0" .Capabilities.KubeVersion.GitVersion }}
42 "ips": [{{ .Values.config.upf.core.ip | quote }}]
43{{- else }}
Hyunsun Moon33d85312020-08-20 00:55:31 -070044 "ips": {{ .Values.config.upf.core.ip | quote }}
Hyunsun Moond457d182020-09-10 15:52:09 -070045{{- end }}
Jeremy Ronquillo223db002020-06-05 10:28:22 -070046 }
47 ]'
48 spec:
49 shareProcessNamespace: true
50 {{- if .Values.nodeSelectors.enabled }}
51 nodeSelector:
Hyunsun Moon33d85312020-08-20 00:55:31 -070052 {{ .Values.nodeSelectors.upf.label }}: {{ .Values.nodeSelectors.upf.value }}
Jeremy Ronquillo223db002020-06-05 10:28:22 -070053 {{- end }}
Hyunsun Moon918f26b2020-06-11 13:16:39 -070054 initContainers:
55 - name: bess-init
56 image: {{ .Values.images.tags.bess | quote }}
57 imagePullPolicy: {{ .Values.images.pullPolicy | quote }}
58 command: ["sh", "-xec"]
59 args:
Hyunsun Moon33d85312020-08-20 00:55:31 -070060 - ip route replace {{ .Values.config.upf.enb.subnet }} via {{ .Values.config.upf.access.gateway }};
61 ip route replace default via {{ .Values.config.upf.core.gateway }} metric 110;
Hyunsun Moon617dc052020-06-21 20:13:22 -050062 iptables -I OUTPUT -p icmp --icmp-type port-unreachable -j DROP;
Hyunsun Moon918f26b2020-06-11 13:16:39 -070063 securityContext:
64 capabilities:
65 add:
66 - NET_ADMIN
Jeremy Ronquillo223db002020-06-05 10:28:22 -070067 {{- if .Values.config.coreDump.enabled }}
Hyunsun Moon7f03a772020-09-27 23:23:50 -050068{{ tuple "upf" . | include "omec-user-plane.coredump_init" | indent 6 }}
Jeremy Ronquillo223db002020-06-05 10:28:22 -070069 {{- end }}
70 containers:
Jeremy Ronquillo223db002020-06-05 10:28:22 -070071 - name: bessd
72 image: {{ .Values.images.tags.bess | quote }}
73 imagePullPolicy: {{ .Values.images.pullPolicy | quote }}
74 securityContext:
Jeremy Ronquillo223db002020-06-05 10:28:22 -070075 capabilities:
76 add:
77 - IPC_LOCK
Jeremy Ronquillo223db002020-06-05 10:28:22 -070078 stdin: true
79 tty: true
Hyunsun Moon617dc052020-06-21 20:13:22 -050080 command: ["/bin/bash", "-xc"]
81 args:
Hyunsun Moon33d85312020-08-20 00:55:31 -070082 {{- if .Values.config.upf.hugepage.enabled }}
Hyunsun Moon617dc052020-06-21 20:13:22 -050083 - bessd -f -grpc-url=0.0.0.0:10514
84 {{- else }}
85 - bessd -m 0 -f -grpc-url=0.0.0.0:10514
86 {{- end }}
Jeremy Ronquillo223db002020-06-05 10:28:22 -070087 lifecycle:
88 postStart:
89 exec:
90 command: ["/etc/bess/conf/bessd-poststart.sh"]
91 livenessProbe:
92 tcpSocket:
93 port: 10514
94 initialDelaySeconds: 15
95 periodSeconds: 20
96 resources:
97 requests:
98 {{- if .Values.resources.enabled }}
99{{ toYaml .Values.resources.bess.requests | indent 12 }}
100 {{- end }}
Hyunsun Moon33d85312020-08-20 00:55:31 -0700101 {{- if .Values.config.upf.hugepage.enabled }}
Hyunsun Moon617dc052020-06-21 20:13:22 -0500102 hugepages-1Gi: 2Gi
103 {{- end }}
Hyunsun Moon33d85312020-08-20 00:55:31 -0700104 {{- if .Values.config.upf.sriov.enabled }}
105 intel.com/sriov_vfio_access_net: 1
106 intel.com/sriov_vfio_core_net: 1
Jeremy Ronquillo223db002020-06-05 10:28:22 -0700107 {{- end }}
108 limits:
109 {{- if .Values.resources.enabled }}
110{{ toYaml .Values.resources.bess.limits | indent 12 }}
111 {{- end }}
Hyunsun Moon33d85312020-08-20 00:55:31 -0700112 {{- if .Values.config.upf.hugepage.enabled }}
Hyunsun Moon617dc052020-06-21 20:13:22 -0500113 hugepages-1Gi: 2Gi
114 {{- end }}
Hyunsun Moon33d85312020-08-20 00:55:31 -0700115 {{- if .Values.config.upf.sriov.enabled }}
116 intel.com/sriov_vfio_access_net: 1
117 intel.com/sriov_vfio_core_net: 1
Jeremy Ronquillo223db002020-06-05 10:28:22 -0700118 {{- end }}
119 env:
120 - name: CONF_FILE
Hyunsun Moond60fcaf2020-07-14 16:09:13 -0700121 value: /etc/bess/conf/upf.json
Jeremy Ronquillo223db002020-06-05 10:28:22 -0700122 volumeMounts:
Hyunsun Moon33d85312020-08-20 00:55:31 -0700123 {{- if .Values.config.upf.hugepage.enabled }}
Jeremy Ronquillo223db002020-06-05 10:28:22 -0700124 - name: hugepages
125 mountPath: /dev/hugepages
Hyunsun Moon617dc052020-06-21 20:13:22 -0500126 {{- end }}
Jeremy Ronquillo223db002020-06-05 10:28:22 -0700127 - name: configs
128 mountPath: /etc/bess/conf
129 {{- if .Values.config.coreDump.enabled }}
130 - name: coredump
131 mountPath: /tmp/coredump
132 {{- end }}
Hyunsun Moon918f26b2020-06-11 13:16:39 -0700133 - name: routectl
134 image: {{ .Values.images.tags.bess | quote }}
135 imagePullPolicy: {{ .Values.images.pullPolicy | quote }}
136 env:
137 - name: PYTHONUNBUFFERED
138 value: "1"
139 command: ["/opt/bess/bessctl/conf/route_control.py"]
140 args:
141 - -i
Hyunsun Moon33d85312020-08-20 00:55:31 -0700142 - {{ index $accessConfig "ifname" }}
143 - {{ index $coreConfig "ifname" }}
Hyunsun Moon918f26b2020-06-11 13:16:39 -0700144 {{- if .Values.resources.enabled }}
145 resources:
146{{ toYaml .Values.resources.routectl | indent 10 }}
147 {{- end }}
Jeremy Ronquillo223db002020-06-05 10:28:22 -0700148 - name: web
149 image: {{ .Values.images.tags.bess | quote }}
150 imagePullPolicy: {{ .Values.images.pullPolicy | quote }}
151 command: ["/bin/bash", "-xc", "bessctl http 0.0.0.0 8000"]
152 {{- if .Values.resources.enabled }}
153 resources:
154{{ toYaml .Values.resources.web | indent 10 }}
155 {{- end }}
156 - name: cpiface
Hyunsun Moon33d85312020-08-20 00:55:31 -0700157 {{- if eq .Values.config.upf.cpiface.mode "zmq" }}
Hyunsun Moond60fcaf2020-07-14 16:09:13 -0700158 image: {{ .Values.images.tags.zmqiface | quote }}
Jeremy Ronquillo223db002020-06-05 10:28:22 -0700159 imagePullPolicy: {{ .Values.images.pullPolicy | quote }}
160 env:
Jeremy Ronquillo223db002020-06-05 10:28:22 -0700161 - name: GLOG_v
162 value: "1"
163 command: ["zmq-cpiface"]
164 args:
Hyunsun Moond60fcaf2020-07-14 16:09:13 -0700165 - --json_config
166 - /tmp/conf/upf.json
167 {{- else }}
168 image: {{ .Values.images.tags.pfcpiface | quote }}
169 imagePullPolicy: {{ .Values.images.pullPolicy | quote }}
170 command: ["pfcpiface"]
171 args:
172 - -config
173 - /tmp/conf/upf.json
174 {{- end }}
Jeremy Ronquillo223db002020-06-05 10:28:22 -0700175 {{- if .Values.resources.enabled }}
176 resources:
177{{ toYaml .Values.resources.cpiface | indent 10 }}
178 {{- end }}
Hyunsun Moond60fcaf2020-07-14 16:09:13 -0700179 volumeMounts:
180 - name: configs
181 mountPath: /tmp/conf
Jeremy Ronquillo223db002020-06-05 10:28:22 -0700182 volumes:
183 - name: configs
184 configMap:
Hyunsun Moon33d85312020-08-20 00:55:31 -0700185 name: upf
Jeremy Ronquillo223db002020-06-05 10:28:22 -0700186 defaultMode: 493
Hyunsun Moon33d85312020-08-20 00:55:31 -0700187 {{- if .Values.config.upf.hugepage.enabled }}
Jeremy Ronquillo223db002020-06-05 10:28:22 -0700188 - name: hugepages
189 emptyDir:
190 medium: HugePages
Hyunsun Moon617dc052020-06-21 20:13:22 -0500191 {{- end }}
Jeremy Ronquillo223db002020-06-05 10:28:22 -0700192 {{- if .Values.config.coreDump.enabled }}
193 - name: host-rootfs
194 hostPath:
195 path: /
196 - name: coredump
197 hostPath:
198 path: {{ .Values.config.coreDump.path }}
199 {{- end }}