blob: 59187bee057b3b7a52f6d0c01d65f4f13820ac3f [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:
Jeremy Ronquillo223db002020-06-05 10:28:22 -070079 capabilities:
80 add:
81 - IPC_LOCK
Jeremy Ronquillo223db002020-06-05 10:28:22 -070082 stdin: true
83 tty: true
Hyunsun Moon617dc052020-06-21 20:13:22 -050084 command: ["/bin/bash", "-xc"]
85 args:
Hyunsun Moon33d85312020-08-20 00:55:31 -070086 {{- if .Values.config.upf.hugepage.enabled }}
Hyunsun Moon617dc052020-06-21 20:13:22 -050087 - bessd -f -grpc-url=0.0.0.0:10514
88 {{- else }}
89 - bessd -m 0 -f -grpc-url=0.0.0.0:10514
90 {{- end }}
Jeremy Ronquillo223db002020-06-05 10:28:22 -070091 lifecycle:
92 postStart:
93 exec:
94 command: ["/etc/bess/conf/bessd-poststart.sh"]
95 livenessProbe:
96 tcpSocket:
97 port: 10514
98 initialDelaySeconds: 15
99 periodSeconds: 20
100 resources:
101 requests:
102 {{- if .Values.resources.enabled }}
103{{ toYaml .Values.resources.bess.requests | indent 12 }}
104 {{- end }}
Hyunsun Moon33d85312020-08-20 00:55:31 -0700105 {{- if .Values.config.upf.hugepage.enabled }}
Hyunsun Moon617dc052020-06-21 20:13:22 -0500106 hugepages-1Gi: 2Gi
107 {{- end }}
Hyunsun Moon33d85312020-08-20 00:55:31 -0700108 {{- if .Values.config.upf.sriov.enabled }}
109 intel.com/sriov_vfio_access_net: 1
110 intel.com/sriov_vfio_core_net: 1
Jeremy Ronquillo223db002020-06-05 10:28:22 -0700111 {{- end }}
112 limits:
113 {{- if .Values.resources.enabled }}
114{{ toYaml .Values.resources.bess.limits | indent 12 }}
115 {{- end }}
Hyunsun Moon33d85312020-08-20 00:55:31 -0700116 {{- if .Values.config.upf.hugepage.enabled }}
Hyunsun Moon617dc052020-06-21 20:13:22 -0500117 hugepages-1Gi: 2Gi
118 {{- end }}
Hyunsun Moon33d85312020-08-20 00:55:31 -0700119 {{- if .Values.config.upf.sriov.enabled }}
120 intel.com/sriov_vfio_access_net: 1
121 intel.com/sriov_vfio_core_net: 1
Jeremy Ronquillo223db002020-06-05 10:28:22 -0700122 {{- end }}
123 env:
124 - name: CONF_FILE
Hyunsun Moond60fcaf2020-07-14 16:09:13 -0700125 value: /etc/bess/conf/upf.json
Jeremy Ronquillo223db002020-06-05 10:28:22 -0700126 volumeMounts:
Hyunsun Moon33d85312020-08-20 00:55:31 -0700127 {{- if .Values.config.upf.hugepage.enabled }}
Jeremy Ronquillo223db002020-06-05 10:28:22 -0700128 - name: hugepages
129 mountPath: /dev/hugepages
Hyunsun Moon617dc052020-06-21 20:13:22 -0500130 {{- end }}
Jeremy Ronquillo223db002020-06-05 10:28:22 -0700131 - name: configs
132 mountPath: /etc/bess/conf
133 {{- if .Values.config.coreDump.enabled }}
134 - name: coredump
135 mountPath: /tmp/coredump
136 {{- end }}
Hyunsun Moon918f26b2020-06-11 13:16:39 -0700137 - name: routectl
138 image: {{ .Values.images.tags.bess | quote }}
139 imagePullPolicy: {{ .Values.images.pullPolicy | quote }}
140 env:
141 - name: PYTHONUNBUFFERED
142 value: "1"
143 command: ["/opt/bess/bessctl/conf/route_control.py"]
144 args:
145 - -i
Hyunsun Moon33d85312020-08-20 00:55:31 -0700146 - {{ index $accessConfig "ifname" }}
147 - {{ index $coreConfig "ifname" }}
Hyunsun Moon918f26b2020-06-11 13:16:39 -0700148 {{- if .Values.resources.enabled }}
149 resources:
150{{ toYaml .Values.resources.routectl | indent 10 }}
151 {{- end }}
Jeremy Ronquillo223db002020-06-05 10:28:22 -0700152 - name: web
153 image: {{ .Values.images.tags.bess | quote }}
154 imagePullPolicy: {{ .Values.images.pullPolicy | quote }}
155 command: ["/bin/bash", "-xc", "bessctl http 0.0.0.0 8000"]
156 {{- if .Values.resources.enabled }}
157 resources:
158{{ toYaml .Values.resources.web | indent 10 }}
159 {{- end }}
160 - name: cpiface
Hyunsun Moon33d85312020-08-20 00:55:31 -0700161 {{- if eq .Values.config.upf.cpiface.mode "zmq" }}
Hyunsun Moond60fcaf2020-07-14 16:09:13 -0700162 image: {{ .Values.images.tags.zmqiface | quote }}
Jeremy Ronquillo223db002020-06-05 10:28:22 -0700163 imagePullPolicy: {{ .Values.images.pullPolicy | quote }}
164 env:
Jeremy Ronquillo223db002020-06-05 10:28:22 -0700165 - name: GLOG_v
166 value: "1"
167 command: ["zmq-cpiface"]
168 args:
Hyunsun Moond60fcaf2020-07-14 16:09:13 -0700169 - --json_config
170 - /tmp/conf/upf.json
171 {{- else }}
172 image: {{ .Values.images.tags.pfcpiface | quote }}
173 imagePullPolicy: {{ .Values.images.pullPolicy | quote }}
174 command: ["pfcpiface"]
175 args:
176 - -config
177 - /tmp/conf/upf.json
178 {{- end }}
Jeremy Ronquillo223db002020-06-05 10:28:22 -0700179 {{- if .Values.resources.enabled }}
180 resources:
181{{ toYaml .Values.resources.cpiface | indent 10 }}
182 {{- end }}
Hyunsun Moond60fcaf2020-07-14 16:09:13 -0700183 volumeMounts:
184 - name: configs
185 mountPath: /tmp/conf
Jeremy Ronquillo223db002020-06-05 10:28:22 -0700186 volumes:
187 - name: configs
188 configMap:
Hyunsun Moon33d85312020-08-20 00:55:31 -0700189 name: upf
Jeremy Ronquillo223db002020-06-05 10:28:22 -0700190 defaultMode: 493
Hyunsun Moon33d85312020-08-20 00:55:31 -0700191 {{- if .Values.config.upf.hugepage.enabled }}
Jeremy Ronquillo223db002020-06-05 10:28:22 -0700192 - name: hugepages
193 emptyDir:
194 medium: HugePages
Hyunsun Moon617dc052020-06-21 20:13:22 -0500195 {{- end }}
Jeremy Ronquillo223db002020-06-05 10:28:22 -0700196 {{- if .Values.config.coreDump.enabled }}
197 - name: host-rootfs
198 hostPath:
199 path: /
200 - name: coredump
201 hostPath:
202 path: {{ .Values.config.coreDump.path }}
203 {{- end }}