blob: 9285cd78e7fbdf67c372e204e6d123b643c27cdf [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 Moon8da17882020-10-14 21:28:44 -050054 {{- if .Values.images.credentials }}
55 imagePullSecrets:
56 - name: {{ .Release.Name }}.registry
57 {{- end }}
Hyunsun Moon918f26b2020-06-11 13:16:39 -070058 initContainers:
59 - name: bess-init
60 image: {{ .Values.images.tags.bess | quote }}
61 imagePullPolicy: {{ .Values.images.pullPolicy | quote }}
62 command: ["sh", "-xec"]
63 args:
Hyunsun Moon33d85312020-08-20 00:55:31 -070064 - ip route replace {{ .Values.config.upf.enb.subnet }} via {{ .Values.config.upf.access.gateway }};
65 ip route replace default via {{ .Values.config.upf.core.gateway }} metric 110;
Hyunsun Moon617dc052020-06-21 20:13:22 -050066 iptables -I OUTPUT -p icmp --icmp-type port-unreachable -j DROP;
Hyunsun Moon918f26b2020-06-11 13:16:39 -070067 securityContext:
68 capabilities:
69 add:
70 - NET_ADMIN
Jeremy Ronquillo223db002020-06-05 10:28:22 -070071 {{- if .Values.config.coreDump.enabled }}
Hyunsun Moon7f03a772020-09-27 23:23:50 -050072{{ tuple "upf" . | include "omec-user-plane.coredump_init" | indent 6 }}
Jeremy Ronquillo223db002020-06-05 10:28:22 -070073 {{- end }}
74 containers:
Jeremy Ronquillo223db002020-06-05 10:28:22 -070075 - name: bessd
76 image: {{ .Values.images.tags.bess | quote }}
77 imagePullPolicy: {{ .Values.images.pullPolicy | quote }}
78 securityContext:
Hyunsun Moon785d81b2020-11-06 05:56:21 +000079 {{- if .Values.config.upf.privileged }}
80 privileged: true
81 {{- end }}
Jeremy Ronquillo223db002020-06-05 10:28:22 -070082 capabilities:
83 add:
84 - IPC_LOCK
Jeremy Ronquillo223db002020-06-05 10:28:22 -070085 stdin: true
86 tty: true
Hyunsun Moon617dc052020-06-21 20:13:22 -050087 command: ["/bin/bash", "-xc"]
88 args:
Hyunsun Moon33d85312020-08-20 00:55:31 -070089 {{- if .Values.config.upf.hugepage.enabled }}
Hyunsun Moon617dc052020-06-21 20:13:22 -050090 - bessd -f -grpc-url=0.0.0.0:10514
91 {{- else }}
92 - bessd -m 0 -f -grpc-url=0.0.0.0:10514
93 {{- end }}
Jeremy Ronquillo223db002020-06-05 10:28:22 -070094 lifecycle:
95 postStart:
96 exec:
97 command: ["/etc/bess/conf/bessd-poststart.sh"]
98 livenessProbe:
99 tcpSocket:
100 port: 10514
101 initialDelaySeconds: 15
102 periodSeconds: 20
103 resources:
104 requests:
105 {{- if .Values.resources.enabled }}
106{{ toYaml .Values.resources.bess.requests | indent 12 }}
107 {{- end }}
Hyunsun Moon33d85312020-08-20 00:55:31 -0700108 {{- if .Values.config.upf.hugepage.enabled }}
Hyunsun Moon617dc052020-06-21 20:13:22 -0500109 hugepages-1Gi: 2Gi
110 {{- end }}
Hyunsun Moon33d85312020-08-20 00:55:31 -0700111 {{- if .Values.config.upf.sriov.enabled }}
112 intel.com/sriov_vfio_access_net: 1
113 intel.com/sriov_vfio_core_net: 1
Jeremy Ronquillo223db002020-06-05 10:28:22 -0700114 {{- end }}
115 limits:
116 {{- if .Values.resources.enabled }}
117{{ toYaml .Values.resources.bess.limits | indent 12 }}
118 {{- end }}
Hyunsun Moon33d85312020-08-20 00:55:31 -0700119 {{- if .Values.config.upf.hugepage.enabled }}
Hyunsun Moon617dc052020-06-21 20:13:22 -0500120 hugepages-1Gi: 2Gi
121 {{- end }}
Hyunsun Moon33d85312020-08-20 00:55:31 -0700122 {{- if .Values.config.upf.sriov.enabled }}
123 intel.com/sriov_vfio_access_net: 1
124 intel.com/sriov_vfio_core_net: 1
Jeremy Ronquillo223db002020-06-05 10:28:22 -0700125 {{- end }}
126 env:
127 - name: CONF_FILE
Hyunsun Moond60fcaf2020-07-14 16:09:13 -0700128 value: /etc/bess/conf/upf.json
Jeremy Ronquillo223db002020-06-05 10:28:22 -0700129 volumeMounts:
Hyunsun Moon33d85312020-08-20 00:55:31 -0700130 {{- if .Values.config.upf.hugepage.enabled }}
Jeremy Ronquillo223db002020-06-05 10:28:22 -0700131 - name: hugepages
132 mountPath: /dev/hugepages
Hyunsun Moon617dc052020-06-21 20:13:22 -0500133 {{- end }}
Jeremy Ronquillo223db002020-06-05 10:28:22 -0700134 - name: configs
135 mountPath: /etc/bess/conf
136 {{- if .Values.config.coreDump.enabled }}
137 - name: coredump
138 mountPath: /tmp/coredump
139 {{- end }}
Hyunsun Moon918f26b2020-06-11 13:16:39 -0700140 - name: routectl
141 image: {{ .Values.images.tags.bess | quote }}
142 imagePullPolicy: {{ .Values.images.pullPolicy | quote }}
143 env:
144 - name: PYTHONUNBUFFERED
145 value: "1"
146 command: ["/opt/bess/bessctl/conf/route_control.py"]
147 args:
148 - -i
Hyunsun Moon33d85312020-08-20 00:55:31 -0700149 - {{ index $accessConfig "ifname" }}
150 - {{ index $coreConfig "ifname" }}
Hyunsun Moon918f26b2020-06-11 13:16:39 -0700151 {{- if .Values.resources.enabled }}
152 resources:
153{{ toYaml .Values.resources.routectl | indent 10 }}
154 {{- end }}
Jeremy Ronquillo223db002020-06-05 10:28:22 -0700155 - name: web
156 image: {{ .Values.images.tags.bess | quote }}
157 imagePullPolicy: {{ .Values.images.pullPolicy | quote }}
158 command: ["/bin/bash", "-xc", "bessctl http 0.0.0.0 8000"]
159 {{- if .Values.resources.enabled }}
160 resources:
161{{ toYaml .Values.resources.web | indent 10 }}
162 {{- end }}
163 - name: cpiface
Hyunsun Moon33d85312020-08-20 00:55:31 -0700164 {{- if eq .Values.config.upf.cpiface.mode "zmq" }}
Hyunsun Moond60fcaf2020-07-14 16:09:13 -0700165 image: {{ .Values.images.tags.zmqiface | quote }}
Jeremy Ronquillo223db002020-06-05 10:28:22 -0700166 imagePullPolicy: {{ .Values.images.pullPolicy | quote }}
167 env:
Jeremy Ronquillo223db002020-06-05 10:28:22 -0700168 - name: GLOG_v
169 value: "1"
170 command: ["zmq-cpiface"]
171 args:
Hyunsun Moond60fcaf2020-07-14 16:09:13 -0700172 - --json_config
173 - /tmp/conf/upf.json
174 {{- else }}
175 image: {{ .Values.images.tags.pfcpiface | quote }}
176 imagePullPolicy: {{ .Values.images.pullPolicy | quote }}
177 command: ["pfcpiface"]
178 args:
179 - -config
180 - /tmp/conf/upf.json
181 {{- end }}
Jeremy Ronquillo223db002020-06-05 10:28:22 -0700182 {{- if .Values.resources.enabled }}
183 resources:
184{{ toYaml .Values.resources.cpiface | indent 10 }}
185 {{- end }}
Hyunsun Moond60fcaf2020-07-14 16:09:13 -0700186 volumeMounts:
187 - name: configs
188 mountPath: /tmp/conf
Jeremy Ronquillo223db002020-06-05 10:28:22 -0700189 volumes:
190 - name: configs
191 configMap:
Hyunsun Moon33d85312020-08-20 00:55:31 -0700192 name: upf
Jeremy Ronquillo223db002020-06-05 10:28:22 -0700193 defaultMode: 493
Hyunsun Moon33d85312020-08-20 00:55:31 -0700194 {{- if .Values.config.upf.hugepage.enabled }}
Jeremy Ronquillo223db002020-06-05 10:28:22 -0700195 - name: hugepages
196 emptyDir:
197 medium: HugePages
Hyunsun Moon617dc052020-06-21 20:13:22 -0500198 {{- end }}
Jeremy Ronquillo223db002020-06-05 10:28:22 -0700199 {{- if .Values.config.coreDump.enabled }}
200 - name: host-rootfs
201 hostPath:
202 path: /
203 - name: coredump
204 hostPath:
205 path: {{ .Values.config.coreDump.path }}
206 {{- end }}