blob: 57fc31207f55083dc0dd80d64e5536dffb976ddf [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
7---
8apiVersion: apps/v1
9kind: StatefulSet
10metadata:
11 name: spgwu
12 serviceName: spgwu-headless
13 labels:
14{{ tuple "spgwu" . | include "omec-user-plane.metadata_labels" | indent 4 }}
15spec:
16 replicas: 1
17 selector:
18 matchLabels:
19{{ tuple "spgwu" . | include "omec-user-plane.metadata_labels" | indent 6 }}
20 template:
21 metadata:
22 labels:
23{{ tuple "spgwu" . | include "omec-user-plane.metadata_labels" | indent 8 }}
24 annotations:
25 k8s.v1.cni.cncf.io/networks: '[
26 {
27 "name": "s1u-net",
28 "interface": {{ .Values.config.spgwu.s1u.device | quote }},
29 "ips": {{ .Values.config.spgwu.s1u.ip | quote }}
30 },
31 {
32 "name": "sgi-net",
33 "interface": {{ .Values.config.spgwu.sgi.device | quote }},
34 "ips": {{ .Values.config.spgwu.sgi.ip | quote }}
35 }
36 ]'
37 spec:
38 shareProcessNamespace: true
39 {{- if .Values.nodeSelectors.enabled }}
40 nodeSelector:
41 {{ .Values.nodeSelectors.spgwu.label }}: {{ .Values.nodeSelectors.spgwu.value }}
42 {{- end }}
Hyunsun Moon918f26b2020-06-11 13:16:39 -070043 initContainers:
44 - name: bess-init
45 image: {{ .Values.images.tags.bess | quote }}
46 imagePullPolicy: {{ .Values.images.pullPolicy | quote }}
47 command: ["sh", "-xec"]
48 args:
49 - ip route add {{ .Values.networks.enb.subnet }} via {{ .Values.networks.s1u.gateway }};
50 ip route add default via {{ .Values.networks.sgi.gateway }} metric 110;
51 securityContext:
52 capabilities:
53 add:
54 - NET_ADMIN
Jeremy Ronquillo223db002020-06-05 10:28:22 -070055 {{- if .Values.config.coreDump.enabled }}
56{{ tuple "spgwu" . | include "omec-user-plane.coredump_init" | indent 8 }}
57 {{- end }}
58 containers:
Jeremy Ronquillo223db002020-06-05 10:28:22 -070059 - name: bessd
60 image: {{ .Values.images.tags.bess | quote }}
61 imagePullPolicy: {{ .Values.images.pullPolicy | quote }}
62 securityContext:
Jeremy Ronquillo223db002020-06-05 10:28:22 -070063 capabilities:
64 add:
65 - IPC_LOCK
66 - NET_ADMIN
67 stdin: true
68 tty: true
69 command: ["/bin/bash", "-xc", "bessd -f -grpc-url=0.0.0.0:10514;"]
70 lifecycle:
71 postStart:
72 exec:
73 command: ["/etc/bess/conf/bessd-poststart.sh"]
74 livenessProbe:
75 tcpSocket:
76 port: 10514
77 initialDelaySeconds: 15
78 periodSeconds: 20
79 resources:
80 requests:
81 {{- if .Values.resources.enabled }}
82{{ toYaml .Values.resources.bess.requests | indent 12 }}
83 {{- end }}
84 {{- if .Values.networks.sriov.enabled }}
85 intel.com/sriov_vfio_s1u_net: 1
86 intel.com/sriov_vfio_sgi_net: 1
87 {{- end }}
88 limits:
89 {{- if .Values.resources.enabled }}
90{{ toYaml .Values.resources.bess.limits | indent 12 }}
91 {{- end }}
92 {{- if .Values.networks.sriov.enabled }}
93 intel.com/sriov_vfio_s1u_net: 1
94 intel.com/sriov_vfio_sgi_net: 1
95 {{- end }}
96 env:
97 - name: CONF_FILE
98 value: /etc/bess/conf/spgwu.json
99 volumeMounts:
100 - name: hugepages
101 mountPath: /dev/hugepages
102 - name: configs
103 mountPath: /etc/bess/conf
104 {{- if .Values.config.coreDump.enabled }}
105 - name: coredump
106 mountPath: /tmp/coredump
107 {{- end }}
Hyunsun Moon918f26b2020-06-11 13:16:39 -0700108 - name: routectl
109 image: {{ .Values.images.tags.bess | quote }}
110 imagePullPolicy: {{ .Values.images.pullPolicy | quote }}
111 env:
112 - name: PYTHONUNBUFFERED
113 value: "1"
114 command: ["/opt/bess/bessctl/conf/route_control.py"]
115 args:
116 - -i
117 - {{ .Values.config.spgwu.s1u.device }}
118 - {{ .Values.config.spgwu.sgi.device }}
119 {{- if .Values.resources.enabled }}
120 resources:
121{{ toYaml .Values.resources.routectl | indent 10 }}
122 {{- end }}
Jeremy Ronquillo223db002020-06-05 10:28:22 -0700123 - name: web
124 image: {{ .Values.images.tags.bess | quote }}
125 imagePullPolicy: {{ .Values.images.pullPolicy | quote }}
126 command: ["/bin/bash", "-xc", "bessctl http 0.0.0.0 8000"]
127 {{- if .Values.resources.enabled }}
128 resources:
129{{ toYaml .Values.resources.web | indent 10 }}
130 {{- end }}
131 - name: cpiface
132 image: {{ .Values.images.tags.cpiface | quote }}
133 imagePullPolicy: {{ .Values.images.pullPolicy | quote }}
134 env:
135 - name: ZMQD_IP
136 valueFrom:
137 fieldRef:
138 fieldPath: status.podIP
139 - name: GLOG_v
140 value: "1"
141 command: ["zmq-cpiface"]
142 args:
143 - --hostname
144 - {{ .Values.config.spgwu.name | quote }}
145 - --zmqd_nb_ip
146 - {{ .Values.config.spgwu.zmq.spgwc.addr | quote }}
147 - --zmqd_nb_port
148 - {{ .Values.config.spgwu.zmq.spgwc.port | quote }}
149 - --zmqd_recv_port
150 - {{ .Values.config.spgwu.zmq.recvPort | quote }}
151 - --zmqd_ip
152 - $(ZMQD_IP)
153 - --s1u_sgw_ip
154 - {{ (split "/" .Values.config.spgwu.s1u.ip)._0 | quote }}
155 {{- if .Values.resources.enabled }}
156 resources:
157{{ toYaml .Values.resources.cpiface | indent 10 }}
158 {{- end }}
159 volumes:
160 - name: configs
161 configMap:
162 name: spgwu
163 defaultMode: 493
164 - name: hugepages
165 emptyDir:
166 medium: HugePages
167 {{- if .Values.config.coreDump.enabled }}
168 - name: host-rootfs
169 hostPath:
170 path: /
171 - name: coredump
172 hostPath:
173 path: {{ .Values.config.coreDump.path }}
174 {{- end }}