blob: 1379d8fdfdc648e840e9016798bdef5c58c58504 [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 Moond60fcaf2020-07-14 16:09:13 -07007{{- $upfConfig := index .Values.config.spgwu.cfgFiles "upf.json" }}
8{{- $s1uConfig := index $upfConfig "s1u" }}
9{{- $sgiConfig := index $upfConfig "sgi" }}
Jeremy Ronquillo223db002020-06-05 10:28:22 -070010---
11apiVersion: apps/v1
12kind: StatefulSet
13metadata:
14 name: spgwu
Jeremy Ronquillo223db002020-06-05 10:28:22 -070015 labels:
16{{ tuple "spgwu" . | include "omec-user-plane.metadata_labels" | indent 4 }}
17spec:
18 replicas: 1
Hyunsun Moond60fcaf2020-07-14 16:09:13 -070019 serviceName: spgwu-headless
Jeremy Ronquillo223db002020-06-05 10:28:22 -070020 selector:
21 matchLabels:
22{{ tuple "spgwu" . | include "omec-user-plane.metadata_labels" | indent 6 }}
23 template:
24 metadata:
25 labels:
26{{ tuple "spgwu" . | include "omec-user-plane.metadata_labels" | indent 8 }}
27 annotations:
28 k8s.v1.cni.cncf.io/networks: '[
29 {
30 "name": "s1u-net",
Hyunsun Moond60fcaf2020-07-14 16:09:13 -070031 "interface": {{ index $s1uConfig "ifname" | quote }},
Jeremy Ronquillo223db002020-06-05 10:28:22 -070032 "ips": {{ .Values.config.spgwu.s1u.ip | quote }}
33 },
34 {
35 "name": "sgi-net",
Hyunsun Moond60fcaf2020-07-14 16:09:13 -070036 "interface": {{ index $sgiConfig "ifname" | quote }},
Jeremy Ronquillo223db002020-06-05 10:28:22 -070037 "ips": {{ .Values.config.spgwu.sgi.ip | quote }}
38 }
39 ]'
40 spec:
41 shareProcessNamespace: true
42 {{- if .Values.nodeSelectors.enabled }}
43 nodeSelector:
44 {{ .Values.nodeSelectors.spgwu.label }}: {{ .Values.nodeSelectors.spgwu.value }}
45 {{- end }}
Hyunsun Moon918f26b2020-06-11 13:16:39 -070046 initContainers:
47 - name: bess-init
48 image: {{ .Values.images.tags.bess | quote }}
49 imagePullPolicy: {{ .Values.images.pullPolicy | quote }}
50 command: ["sh", "-xec"]
51 args:
Hyunsun Moon617dc052020-06-21 20:13:22 -050052 - ip route replace {{ .Values.config.spgwu.enb.subnet }} via {{ .Values.config.spgwu.s1u.gateway }};
53 ip route replace default via {{ .Values.config.spgwu.sgi.gateway }} metric 110;
54 iptables -I OUTPUT -p icmp --icmp-type port-unreachable -j DROP;
Hyunsun Moon918f26b2020-06-11 13:16:39 -070055 securityContext:
56 capabilities:
57 add:
58 - NET_ADMIN
Jeremy Ronquillo223db002020-06-05 10:28:22 -070059 {{- if .Values.config.coreDump.enabled }}
60{{ tuple "spgwu" . | include "omec-user-plane.coredump_init" | indent 8 }}
61 {{- end }}
62 containers:
Jeremy Ronquillo223db002020-06-05 10:28:22 -070063 - name: bessd
64 image: {{ .Values.images.tags.bess | quote }}
65 imagePullPolicy: {{ .Values.images.pullPolicy | quote }}
66 securityContext:
Jeremy Ronquillo223db002020-06-05 10:28:22 -070067 capabilities:
68 add:
69 - IPC_LOCK
Jeremy Ronquillo223db002020-06-05 10:28:22 -070070 stdin: true
71 tty: true
Hyunsun Moon617dc052020-06-21 20:13:22 -050072 command: ["/bin/bash", "-xc"]
73 args:
74 {{- if .Values.config.spgwu.hugepage.enabled }}
75 - bessd -f -grpc-url=0.0.0.0:10514
76 {{- else }}
77 - bessd -m 0 -f -grpc-url=0.0.0.0:10514
78 {{- end }}
Jeremy Ronquillo223db002020-06-05 10:28:22 -070079 lifecycle:
80 postStart:
81 exec:
82 command: ["/etc/bess/conf/bessd-poststart.sh"]
83 livenessProbe:
84 tcpSocket:
85 port: 10514
86 initialDelaySeconds: 15
87 periodSeconds: 20
88 resources:
89 requests:
90 {{- if .Values.resources.enabled }}
91{{ toYaml .Values.resources.bess.requests | indent 12 }}
92 {{- end }}
Hyunsun Moon617dc052020-06-21 20:13:22 -050093 {{- if .Values.config.spgwu.hugepage.enabled }}
94 hugepages-1Gi: 2Gi
95 {{- end }}
96 {{- if .Values.config.spgwu.sriov.enabled }}
Jeremy Ronquillo223db002020-06-05 10:28:22 -070097 intel.com/sriov_vfio_s1u_net: 1
98 intel.com/sriov_vfio_sgi_net: 1
99 {{- end }}
100 limits:
101 {{- if .Values.resources.enabled }}
102{{ toYaml .Values.resources.bess.limits | indent 12 }}
103 {{- end }}
Hyunsun Moon617dc052020-06-21 20:13:22 -0500104 {{- if .Values.config.spgwu.hugepage.enabled }}
105 hugepages-1Gi: 2Gi
106 {{- end }}
107 {{- if .Values.config.spgwu.sriov.enabled }}
Jeremy Ronquillo223db002020-06-05 10:28:22 -0700108 intel.com/sriov_vfio_s1u_net: 1
109 intel.com/sriov_vfio_sgi_net: 1
110 {{- end }}
111 env:
112 - name: CONF_FILE
Hyunsun Moond60fcaf2020-07-14 16:09:13 -0700113 value: /etc/bess/conf/upf.json
Jeremy Ronquillo223db002020-06-05 10:28:22 -0700114 volumeMounts:
Hyunsun Moon617dc052020-06-21 20:13:22 -0500115 {{- if .Values.config.spgwu.hugepage.enabled }}
Jeremy Ronquillo223db002020-06-05 10:28:22 -0700116 - name: hugepages
117 mountPath: /dev/hugepages
Hyunsun Moon617dc052020-06-21 20:13:22 -0500118 {{- end }}
Jeremy Ronquillo223db002020-06-05 10:28:22 -0700119 - name: configs
120 mountPath: /etc/bess/conf
121 {{- if .Values.config.coreDump.enabled }}
122 - name: coredump
123 mountPath: /tmp/coredump
124 {{- end }}
Hyunsun Moon918f26b2020-06-11 13:16:39 -0700125 - name: routectl
126 image: {{ .Values.images.tags.bess | quote }}
127 imagePullPolicy: {{ .Values.images.pullPolicy | quote }}
128 env:
129 - name: PYTHONUNBUFFERED
130 value: "1"
131 command: ["/opt/bess/bessctl/conf/route_control.py"]
132 args:
133 - -i
Hyunsun Moond60fcaf2020-07-14 16:09:13 -0700134 - {{ index $s1uConfig "ifname" }}
135 - {{ index $sgiConfig "ifname" }}
Hyunsun Moon918f26b2020-06-11 13:16:39 -0700136 {{- if .Values.resources.enabled }}
137 resources:
138{{ toYaml .Values.resources.routectl | indent 10 }}
139 {{- end }}
Jeremy Ronquillo223db002020-06-05 10:28:22 -0700140 - name: web
141 image: {{ .Values.images.tags.bess | quote }}
142 imagePullPolicy: {{ .Values.images.pullPolicy | quote }}
143 command: ["/bin/bash", "-xc", "bessctl http 0.0.0.0 8000"]
144 {{- if .Values.resources.enabled }}
145 resources:
146{{ toYaml .Values.resources.web | indent 10 }}
147 {{- end }}
148 - name: cpiface
Hyunsun Moond60fcaf2020-07-14 16:09:13 -0700149 {{- if eq .Values.config.spgwu.cpiface.mode "zmq" }}
150 image: {{ .Values.images.tags.zmqiface | quote }}
Jeremy Ronquillo223db002020-06-05 10:28:22 -0700151 imagePullPolicy: {{ .Values.images.pullPolicy | quote }}
152 env:
Jeremy Ronquillo223db002020-06-05 10:28:22 -0700153 - name: GLOG_v
154 value: "1"
155 command: ["zmq-cpiface"]
156 args:
Hyunsun Moond60fcaf2020-07-14 16:09:13 -0700157 - --json_config
158 - /tmp/conf/upf.json
159 {{- else }}
160 image: {{ .Values.images.tags.pfcpiface | quote }}
161 imagePullPolicy: {{ .Values.images.pullPolicy | quote }}
162 command: ["pfcpiface"]
163 args:
164 - -config
165 - /tmp/conf/upf.json
166 {{- end }}
Jeremy Ronquillo223db002020-06-05 10:28:22 -0700167 {{- if .Values.resources.enabled }}
168 resources:
169{{ toYaml .Values.resources.cpiface | indent 10 }}
170 {{- end }}
Hyunsun Moond60fcaf2020-07-14 16:09:13 -0700171 volumeMounts:
172 - name: configs
173 mountPath: /tmp/conf
Jeremy Ronquillo223db002020-06-05 10:28:22 -0700174 volumes:
175 - name: configs
176 configMap:
177 name: spgwu
178 defaultMode: 493
Hyunsun Moon617dc052020-06-21 20:13:22 -0500179 {{- if .Values.config.spgwu.hugepage.enabled }}
Jeremy Ronquillo223db002020-06-05 10:28:22 -0700180 - name: hugepages
181 emptyDir:
182 medium: HugePages
Hyunsun Moon617dc052020-06-21 20:13:22 -0500183 {{- end }}
Jeremy Ronquillo223db002020-06-05 10:28:22 -0700184 {{- if .Values.config.coreDump.enabled }}
185 - name: host-rootfs
186 hostPath:
187 path: /
188 - name: coredump
189 hostPath:
190 path: {{ .Values.config.coreDump.path }}
191 {{- end }}