blob: 31431e9882b47dc103c15f71e5defbbf2a9ef5a9 [file] [log] [blame]
{{/*
Copyright 2019-present Open Networking Foundation
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.
*/}}
{{ tuple "accelleran-cu" . | include "accelleran-cu.service_account" }}
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: accelleran-cu
labels:
{{ tuple "accelleran-cu" . | include "accelleran-cu.metadata_labels" | indent 4 }}
spec:
replicas: {{ .Values.config.vran.replicas }}
selector:
matchLabels:
{{ tuple "accelleran-cu" . | include "accelleran-cu.metadata_labels" | indent 6 }}
serviceName: "accelleran-cu"
template:
metadata:
labels:
{{ tuple "accelleran-cu" . | include "accelleran-cu.metadata_labels" | indent 8 }}
spec:
terminationGracePeriodSeconds: 1
{{- if .Values.nodeSelectors.enabled }}
nodeSelector:
{{ .Values.nodeSelectors.accelleranCU.label }}: {{ .Values.nodeSelectors.accelleranCU.value }}
{{- end }}
serviceAccountName: accelleran-cu
initContainers:
- name: cu-init
image: {{ .Values.images.tags.initCU }}
imagePullPolicy: {{ .Values.images.pullPolicy }}
securityContext:
privileged: true
runAsUser: 0
command: [ "sh", "-c"]
args:
- >
iptables -I OUTPUT -p icmp --icmp-type destination-unreachable -j DROP;
if chroot /mnt/host-rootfs modinfo nf_conntrack_proto_sctp > /dev/null 2>&1; then \
chroot /mnt/host-rootfs modprobe nf_conntrack_proto_sctp; \
fi; \
volumeMounts:
- name: host-rootfs
mountPath: /mnt/host-rootfs
containers:
- name: nats
image: {{ .Values.images.tags.nats }}
imagePullPolicy: {{ .Values.images.pullPolicy }}
securityContext:
capabilities:
add:
- NET_ADMIN
- IPC_LOCK
stdin: true
tty: true
env:
- name: NATS_SERVICE_NAME
value: {{ .Values.config.nats.serviceName }}
command: [ "sh", "-c"]
args:
- gnatsd -DV -c /etc/gnatsd.conf;
{{- if .Values.resources.enabled }}
resources:
{{ toYaml .Values.resources.accelleranCU | indent 10 }}
{{- end }}
- name: redis
image: {{ .Values.images.tags.redis }}
imagePullPolicy: {{ .Values.images.pullPolicy }}
securityContext:
capabilities:
add:
- NET_ADMIN
- IPC_LOCK
stdin: true
tty: true
command: ["sh", "-c"]
args:
# FIXME: Redis can't support with dns resolution, can't set hostname at here.
- (sleep 5; redis-cli -h localhost -p {{ .Values.config.vran.ports.redis.port }} set NATS_SERVICE_URL "nat://{{ .Values.config.nats.ip }}:{{ .Values.config.vran.ports.nats.port }}";) &
/usr/local/bin/redis-server
{{- if .Values.resources.enabled }}
resources:
{{ toYaml .Values.resources.accelleranCU | indent 10 }}
{{- end }}
- name: vran-l3
image: {{ .Values.images.tags.vranL3 }}
imagePullPolicy: {{ .Values.images.pullPolicy }}
securityContext:
capabilities:
add:
- NET_ADMIN
- IPC_LOCK
- SYS_NICE
stdin: true
tty: true
env:
- name: MME_IP
value: {{ .Values.config.mme.ip }}
command: ["sh", "-c"]
args:
- sqlite3 /mnt/app/datastore.db "update cellS1apConfig set enbSctpPort={{ .Values.config.vran.ports.s1ap.port }};";
sqlite3 /mnt/app/datastoreRemRw.db "update FapServiceFapControlLteGateway set S1SigLinkPort={{ .Values.config.mme.s1apPort }};";
sqlite3 /mnt/app/datastoreRemRw.db "update FapServiceCellConfigLteEpcPlmnList set PLMNID={{ .Values.config.epc.plmnId }};";
sqlite3 /mnt/app/datastore.db "insert into enbSctpSocketInterface ('interfaceName') values ('{{ .Values.config.vran.socketInterface }}');";
sqlite3 /mnt/app/datastore.db "update logging set severity=7 where id=25;";
{{- if .Values.config.progran.enabled }}
sqlite3 /mnt/app/datastore.db "update featureActivation set mmeSlicingEnabled=1;";
sqlite3 /mnt/app/datastore.db "update featureActivation set ranSlicingEnabled=1;";
sqlite3 /mnt/app/datastore.db "insert into pranServerAddress (pranServerIpAddress,pranServerPort) values ('{{ .Values.config.progran.ip }}', {{ .Values.config.progran.port }});";
{{- end}}
sleep 10;
/l3/l3start;
volumeMounts:
- name: bbu-config
mountPath: /mnt/app/bootstrap.txt
subPath: bootstrap.txt
{{- if .Values.resources.enabled }}
resources:
{{ toYaml .Values.resources.accelleranCU | indent 10 }}
{{- end }}
volumes:
- name: bbu-config
configMap:
name: accelleran-cu-config
items:
- key: bootstrap.txt
path: bootstrap.txt
- name: host-rootfs
hostPath:
path: /