blob: 1c0c038a263b3e3d502a8590201a0f68a298bfb2 [file] [log] [blame]
---
# Copyright 2018-present Open Networking Foundation
# Copyright 2018 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
---
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ .Values.spgwu.name }}
data:
launch.sh: |
#!/bin/bash -xe
RUN_DIR=${RUN_DIR:-"/opt/dp"}
mkdir -p $RUN_DIR/config
cd $RUN_DIR/config
cp /etc/dp/config/{cdr.cfg,dp_config.cfg,interface.cfg} .
sed -i "s/CP_ADDR/$CP_ADDR/g" interface.cfg
sed -i "s/DP_ADDR/$DP_ADDR/g" interface.cfg
. dp_config.cfg
ngic_dataplane $EAL_ARGS -- $APP_ARGS
dp_config.cfg: |
if [ ! -d "/dev/hugepages" ]; then
MEMORY="--no-huge -m $((MEM_LIMIT-1024))"
fi
CORES="-c $(taskset -p $$ | awk '{print $NF}')"
EAL_ARGS="${CORES} ${MEMORY} ${DEVICES}"
SPGW_CFG="--spgw_cfg 03"
S1U_IP=$(ip -4 addr show dev ${S1U_DEVNAME} | grep -oP '(?<=inet\s)\d+(\.\d+){3}')
SGI_IP=$(ip -4 addr show dev ${SGI_DEVNAME} | grep -oP '(?<=inet\s)\d+(\.\d+){3}')
S1U_MAC=$(ip addr show dev ${S1U_DEVNAME} | awk '$1=="link/ether"{print $2}')
SGI_MAC=$(ip addr show dev ${SGI_DEVNAME} | awk '$1=="link/ether"{print $2}')
S1U="--s1u_ip ${S1U_IP} --s1u_mac ${S1U_MAC} --ul_iface ${S1U_DEVNAME}"
SGI="--sgi_ip ${SGI_IP} --sgi_mac ${SGI_MAC} --dl_iface ${SGI_DEVNAME} --sgi_gw_ip ${RTR_SGI_IP} --sgi_mask ${SGI_MASK}"
MISC="--log 1"
APP_ARGS="${S1U} ${SGI} ${MISC} ${SPGW_CFG}"
cdr.cfg: |
CDR_PATH=./cdr
MASTER_CDR=./cdr/master.csv
interface.cfg: |
[0]
dp_comm_ip = DP_ADDR
dp_comm_port = 20
cp_comm_ip = CP_ADDR
cp_comm_port = 21
---
apiVersion: v1
kind: Service
metadata:
name: {{ .Values.spgwu.name }}
spec:
selector:
app: {{ .Values.spgwu.name }}
clusterIP: None
ports:
- name: cpdp
port: 20
protocol: UDP
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: {{ .Values.spgwu.name }}
labels:
app: {{ .Values.spgwu.name }}
spec:
replicas: 1
selector:
matchLabels:
app: {{ .Values.spgwu.name }}
serviceName: {{ .Values.spgwu.name | quote }}
template:
metadata:
labels:
app: {{ .Values.spgwu.name }}
annotations:
k8s.v1.cni.cncf.io/networks: '[
{ "name": "s1u-net", "interface": "s1u-net" },
{ "name": "sgi-net", "interface": "sgi-net" }
]'
spec:
# Required if working with Linux bound devices so that kernel does not
# reply to GTP-U packets
#initContainers:
#- name: init
# image: "ngick8stesting/c3po-init"
# command: [ "sh", "-xec"]
# securityContext:
# capabilities:
# add:
# - NET_ADMIN
# args:
# - iptables -I OUTPUT -p icmp --icmp-type destination-unreachable -j DROP;
containers:
- name: {{ .Values.spgwu.name }}
image: {{ .Values.spgwu.image }}
imagePullPolicy: {{ .Values.global.imagepullpolicy }}
stdin: true
tty: true
env:
- name: MEM_LIMIT
valueFrom:
resourceFieldRef:
containerName: {{ .Values.spgwu.name }}
resource: limits.memory
divisor: 1Mi
- name: S1U_DEVNAME
value: s1u-net
- name: SGI_DEVNAME
value: sgi-net
- name: DEVICES
value: "" # "--no-pci --vdev eth_af_packet0,iface=s1u-net --vdev eth_af_packet1,iface=sgi-net"
- name: CP_ADDR
value: spgwc-0.{{ .Values.spgwc.name }}.{{ .Values.global.namespace }}.{{ .Values.global.fqdn }}
- name: DP_ADDR
valueFrom:
fieldRef:
fieldPath: status.podIP
- name: RTR_SGI_IP
value: "13.1.1.254"
- name: SGI_MASK
value: "255.255.255.0"
command: ["bash", "-xc"]
args:
- ip a;
/opt/dp/scripts/launch.sh;
volumeMounts:
- name: dp-script
mountPath: /opt/dp/scripts/launch.sh
subPath: launch.sh
- name: dp-config
mountPath: /etc/dp/config
#- name: hugepage
# mountPath: /dev/hugepages
resources:
limits:
#hugepages-1Gi: 8Gi
cpu: {{ .Values.spgwu.cpu | quote }}
memory: {{ .Values.spgwu.memory }}
intel.com/sriov: 2
securityContext:
capabilities:
add:
- IPC_LOCK
volumes:
- name: dp-script
configMap:
name: {{ .Values.spgwu.name }}
defaultMode: 493
- name: dp-config
configMap:
name: {{ .Values.spgwu.name }}
defaultMode: 420
#- name: hugepage
# emptyDir:
# medium: HugePages