| {{/* |
| 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: / |