diff --git a/charts/oai-enb/Chart.yaml b/charts/oai-enb/Chart.yaml new file mode 100644 index 000000000..2abcf2d72 --- /dev/null +++ b/charts/oai-enb/Chart.yaml @@ -0,0 +1,16 @@ +apiVersion: v1 +appVersion: "1.2.2" +description: > + OpenAirInterface enodeb +home: https://github.com/Gradiant/charts +sources: + - https://gitlab.eurecom.fr/oai/openairinterface5g/ +icon: https://openairinterface.org/wp-content/uploads/2015/06/cropped-oai_final_logo.png +maintainers: +- email: cgiraldo@gradiant.org + name: cgiraldo +name: oai-enb +version: 0.1.0 +keywords: + - lte + - enodeb diff --git a/charts/oai-enb/Makefile b/charts/oai-enb/Makefile new file mode 100644 index 000000000..14622f4ec --- /dev/null +++ b/charts/oai-enb/Makefile @@ -0,0 +1,13 @@ +CHARTREPO = "https://core.harbor.gradiant.loc/chartrepo/openverso" +HELM_USER = robot\$$write +HELM_PASSWORD = eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJpYXQiOjE1OTQ2NDE3NjEsImlzcyI6ImhhcmJvci10b2tlbi1kZWZhdWx0SXNzdWVyIiwiaWQiOjQsInBpZCI6MiwiYWNjZXNzIjpbeyJSZXNvdXJjZSI6Ii9wcm9qZWN0LzIvcmVwb3NpdG9yeSIsIkFjdGlvbiI6InB1c2giLCJFZmZlY3QiOiIifSx7IlJlc291cmNlIjoiL3Byb2plY3QvMi9oZWxtLWNoYXJ0IiwiQWN0aW9uIjoicmVhZCIsIkVmZmVjdCI6IiJ9LHsiUmVzb3VyY2UiOiIvcHJvamVjdC8yL2hlbG0tY2hhcnQtdmVyc2lvbiIsIkFjdGlvbiI6ImNyZWF0ZSIsIkVmZmVjdCI6IiJ9XX0.Kp6iMPkn7n_Uqv_CUJDjKDcpcSR3Ll8h_WEMctdHBFpfnBhTMbWLerOT9faJg8XaK3JcMAr08e7gm6JFfnaxGCF8d6CO2t81endAJNreZXnsyV08sfJ17DDU5LwHF6jtpJa42FdQfiLbVJ7bKlrIX48g7KV0Q9S_I4hnSSKo74Vej-yFsSQb9m8dDyPspaxTm1TJm1TBSXBOfFhismUua_Lcm4U8aEMmkQLnrxuUANMTR25mPnwwr8-4duh0s3POor2sZDqzGx_STKF4-o3-1orxBnZg82HR6L2vXleLXJW_UGxLVOhT1xLpu-43n1FM618ocOYvee-efTsjbKAuEyhp_4f_ilwN1cQgI53w7xNKpNzX6-CFvTk6laUcPNaczBmq8Afze96qRtJPlB0toDfte0boA2BSORlf5L_Oxskjl9Gdo2fEYqb0klBAeapepbCXmx3u3NcSTsO4QoE_W3ay5O3BopyVe0R_Xr0wbbkDNpz2JGW6FVpPD_JKcuJOCYHb5xyjjUseqpLCLel9ErpyR0iyeGKnx6pm0SZ_gojBMygheuFNIdhlj_BlwbWmAP-gJQOS051MC5PqeOcIQ5cUB5idwuQsRKpsW8psvN9_zIF5BsMosR5iHcSXiwBnqhUxpUY6F1ocLHE96LOesLGKfFURwD0Hjb0vHAtgBlE + + +.PHONY: all push + +all: push + +push: + wget --no-check-certificate https://core.harbor.gradiant.loc/api/v2.0/systeminfo/getcert -O harbor-ca.crt + helm push --ca-file=harbor-ca.crt --username=${HELM_USER} --password=${HELM_PASSWORD} . ${CHARTREPO} + rm harbor-ca.crt diff --git a/charts/oai-enb/README.md b/charts/oai-enb/README.md new file mode 100644 index 000000000..613258b7f --- /dev/null +++ b/charts/oai-enb/README.md @@ -0,0 +1,34 @@ +# oai-enb + +![Version: 0.1.0](https://img.shields.io/badge/Version-0.1.0-informational?style=flat-square) ![AppVersion: 1.2.2](https://img.shields.io/badge/AppVersion-1.2.2-informational?style=flat-square) + +OpenAirInterface enodeb + +**Homepage:** + +## Maintainers + +| Name | Email | Url | +| ---- | ------ | --- | +| cgiraldo | cgiraldo@gradiant.org | | + +## Source Code + +* + +## Values + +| Key | Type | Default | Description | +|-----|------|---------|-------------| +| enb.mcc | string | `"001"` | | +| enb.mme | string | `"mme"` | | +| enb.mnc | string | `"01"` | | +| enb.tac | string | `"0001"` | | +| image.pullPolicy | string | `"IfNotPresent"` | | +| image.registry | string | `"docker.io"` | | +| image.repository | string | `"openverso/oai-enb"` | | +| image.tag | string | `"1.2.2"` | | +| resources.limits."ettus.com/usrp" | int | `1` | | + +---------------------------------------------- +Autogenerated from chart metadata using [helm-docs v1.5.0](https://github.com/norwoodj/helm-docs/releases/v1.5.0) diff --git a/charts/oai-enb/resources/enb.conf b/charts/oai-enb/resources/enb.conf new file mode 100644 index 000000000..d459a3ebd --- /dev/null +++ b/charts/oai-enb/resources/enb.conf @@ -0,0 +1,274 @@ +Active_eNBs = ( "eNB-Eurecom-LTEBox"); +# Asn1_verbosity, choice in: none, info, annoying +Asn1_verbosity = "none"; + +eNBs = +( + { + ////////// Identification parameters: + eNB_ID = 0xe00; + + cell_type = "CELL_MACRO_ENB"; + + eNB_name = "eNB-Eurecom-LTEBox"; + + // Tracking area code, 0x0000 and 0xfffe are reserved values + tracking_area_code = 0x{{ .Values.enb.tac }}; + plmn_list = ( { mcc = {{ .Values.enb.mcc }}; mnc = {{ .Values.enb.mnc }}; mnc_length = 2; } ); + + tr_s_preference = "local_mac" + + // In seconds + rrc_inactivity_threshold = 30; + + ////////// Physical parameters: + + component_carriers = ( + { + node_function = "3GPP_eNODEB"; + node_timing = "synch_to_ext_device"; + node_synch_ref = 0; + frame_type = "FDD"; + tdd_config = 3; + tdd_config_s = 0; + prefix_type = "NORMAL"; + eutra_band = 7; + downlink_frequency = 2685000000L; + uplink_frequency_offset = -120000000; + Nid_cell = 0; + N_RB_DL = 25; + Nid_cell_mbsfn = 0; + nb_antenna_ports = 1; + nb_antennas_tx = 1; + nb_antennas_rx = 1; + tx_gain = 90; + rx_gain = 125; + pbch_repetition = "FALSE"; + prach_root = 0; + prach_config_index = 0; + prach_high_speed = "DISABLE"; + prach_zero_correlation = 1; + prach_freq_offset = 2; + pucch_delta_shift = 1; + pucch_nRB_CQI = 0; + pucch_nCS_AN = 0; + pucch_n1_AN = 0; + pdsch_referenceSignalPower = -27; + pdsch_p_b = 0; + pusch_n_SB = 1; + pusch_enable64QAM = "DISABLE"; + pusch_hoppingMode = "interSubFrame"; + pusch_hoppingOffset = 0; + pusch_groupHoppingEnabled = "ENABLE"; + pusch_groupAssignment = 0; + pusch_sequenceHoppingEnabled = "DISABLE"; + pusch_nDMRS1 = 1; + phich_duration = "NORMAL"; + phich_resource = "ONESIXTH"; + srs_enable = "DISABLE"; + /* srs_BandwidthConfig =; + srs_SubframeConfig =; + srs_ackNackST =; + srs_MaxUpPts =;*/ + + pusch_p0_Nominal = -96; + pusch_alpha = "AL1"; + pucch_p0_Nominal = -104; + msg3_delta_Preamble = 6; + pucch_deltaF_Format1 = "deltaF2"; + pucch_deltaF_Format1b = "deltaF3"; + pucch_deltaF_Format2 = "deltaF0"; + pucch_deltaF_Format2a = "deltaF0"; + pucch_deltaF_Format2b = "deltaF0"; + + rach_numberOfRA_Preambles = 64; + rach_preamblesGroupAConfig = "DISABLE"; + /* + rach_sizeOfRA_PreamblesGroupA = ; + rach_messageSizeGroupA = ; + rach_messagePowerOffsetGroupB = ; + */ + rach_powerRampingStep = 4; + rach_preambleInitialReceivedTargetPower = -108; + rach_preambleTransMax = 10; + rach_raResponseWindowSize = 10; + rach_macContentionResolutionTimer = 48; + rach_maxHARQ_Msg3Tx = 4; + + pcch_default_PagingCycle = 128; + pcch_nB = "oneT"; + bcch_modificationPeriodCoeff = 2; + ue_TimersAndConstants_t300 = 1000; + ue_TimersAndConstants_t301 = 1000; + ue_TimersAndConstants_t310 = 1000; + ue_TimersAndConstants_t311 = 10000; + ue_TimersAndConstants_n310 = 20; + ue_TimersAndConstants_n311 = 1; + ue_TransmissionMode = 1; + + //Parameters for SIB18 + rxPool_sc_CP_Len = "normal"; + rxPool_sc_Period = "sf40"; + rxPool_data_CP_Len = "normal"; + rxPool_ResourceConfig_prb_Num = 20; + rxPool_ResourceConfig_prb_Start = 5; + rxPool_ResourceConfig_prb_End = 44; + rxPool_ResourceConfig_offsetIndicator_present = "prSmall"; + rxPool_ResourceConfig_offsetIndicator_choice = 0; + rxPool_ResourceConfig_subframeBitmap_present = "prBs40"; + rxPool_ResourceConfig_subframeBitmap_choice_bs_buf = "00000000000000000000"; + rxPool_ResourceConfig_subframeBitmap_choice_bs_size = 5; + rxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused = 0; +/* rxPool_dataHoppingConfig_hoppingParameter = 0; + rxPool_dataHoppingConfig_numSubbands = "ns1"; + rxPool_dataHoppingConfig_rbOffset = 0; + rxPool_commTxResourceUC-ReqAllowed = "TRUE"; +*/ + // Parameters for SIB19 + discRxPool_cp_Len = "normal" + discRxPool_discPeriod = "rf32" + discRxPool_numRetx = 1; + discRxPool_numRepetition = 2; + discRxPool_ResourceConfig_prb_Num = 5; + discRxPool_ResourceConfig_prb_Start = 3; + discRxPool_ResourceConfig_prb_End = 21; + discRxPool_ResourceConfig_offsetIndicator_present = "prSmall"; + discRxPool_ResourceConfig_offsetIndicator_choice = 0; + discRxPool_ResourceConfig_subframeBitmap_present = "prBs40"; + discRxPool_ResourceConfig_subframeBitmap_choice_bs_buf = "f0ffffffff"; + discRxPool_ResourceConfig_subframeBitmap_choice_bs_size = 5; + discRxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused = 0; + + } + ); + + + srb1_parameters : + { + # timer_poll_retransmit = (ms) [5, 10, 15, 20,... 250, 300, 350, ... 500] + timer_poll_retransmit = 80; + + # timer_reordering = (ms) [0,5, ... 100, 110, 120, ... ,200] + timer_reordering = 35; + + # timer_reordering = (ms) [0,5, ... 250, 300, 350, ... ,500] + timer_status_prohibit = 0; + + # poll_pdu = [4, 8, 16, 32 , 64, 128, 256, infinity(>10000)] + poll_pdu = 4; + + # poll_byte = (kB) [25,50,75,100,125,250,375,500,750,1000,1250,1500,2000,3000,infinity(>10000)] + poll_byte = 99999; + + # max_retx_threshold = [1, 2, 3, 4 , 6, 8, 16, 32] + max_retx_threshold = 4; + } + + # ------- SCTP definitions + SCTP : + { + # Number of streams to use in input/output + SCTP_INSTREAMS = 2; + SCTP_OUTSTREAMS = 2; + }; + + + ////////// MME parameters: + mme_ip_address = ( { ipv4 = "${MME_ADDR}"; + ipv6 = "192:168:30::17"; + active = "yes"; + preference = "ipv4"; + } + ); + + enable_measurement_reports = "no"; + + ///X2 + enable_x2 = "no"; + t_reloc_prep = 1000; /* unit: millisecond */ + tx2_reloc_overall = 2000; /* unit: millisecond */ + + NETWORK_INTERFACES : + { + ENB_INTERFACE_NAME_FOR_S1_MME = "${ENB_BIND_INTERFACE}"; + ENB_IPV4_ADDRESS_FOR_S1_MME = "${ENB_BIND_ADDR}"; + ENB_INTERFACE_NAME_FOR_S1U = "${ENB_BIND_INTERFACE}"; + ENB_IPV4_ADDRESS_FOR_S1U = "${ENB_BIND_ADDR}"; + ENB_PORT_FOR_S1U = 2152; # Spec 2152 + ENB_IPV4_ADDRESS_FOR_X2C = "${ENB_BIND_ADDR}"; + ENB_PORT_FOR_X2C = 36422; # Spec 36422 + }; + } +); + +MACRLCs = ( + { + num_cc = 1; + tr_s_preference = "local_L1"; + tr_n_preference = "local_RRC"; + phy_test_mode = 0; + #puSch10xSnr = 160; + #puCch10xSnr = 160; + } +); + +L1s = ( + { + num_cc = 1; + tr_n_preference = "local_mac"; + } +); + +RUs = ( + { + local_rf = "yes" + nb_tx = 1 + nb_rx = 1 + att_tx = 0 + att_rx = 0; + bands = [7]; + max_pdschReferenceSignalPower = -27; + max_rxgain = 125; + eNB_instances = [0]; + + } +); + +THREAD_STRUCT = ( + { + #three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT" + parallel_config = "PARALLEL_SINGLE_THREAD"; + #parallel_config = "PARALLEL_RU_L1_TRX_SPLIT"; + #two option for worker "WORKER_DISABLE" or "WORKER_ENABLE" + worker_config = "WORKER_ENABLE"; + } +); + +NETWORK_CONTROLLER : +{ + FLEXRAN_ENABLED = "no"; + FLEXRAN_INTERFACE_NAME = "eth0"; + FLEXRAN_IPV4_ADDRESS = "CI_MME_IP_ADDR"; + FLEXRAN_PORT = 2210; + FLEXRAN_CACHE = "/mnt/oai_agent_cache"; + FLEXRAN_AWAIT_RECONF = "no"; +}; + + log_config : + { + global_log_level ="info"; + global_log_verbosity ="medium"; + hw_log_level ="info"; + hw_log_verbosity ="medium"; + phy_log_level ="info"; + phy_log_verbosity ="medium"; + mac_log_level ="info"; + mac_log_verbosity ="high"; + rlc_log_level ="info"; + rlc_log_verbosity ="medium"; + pdcp_log_level ="info"; + pdcp_log_verbosity ="medium"; + rrc_log_level ="info"; + rrc_log_verbosity ="medium"; + }; + diff --git a/charts/oai-enb/templates/NOTES.txt b/charts/oai-enb/templates/NOTES.txt new file mode 100644 index 000000000..e69de29bb diff --git a/charts/oai-enb/templates/_helpers.tpl b/charts/oai-enb/templates/_helpers.tpl new file mode 100644 index 000000000..c9c0d8202 --- /dev/null +++ b/charts/oai-enb/templates/_helpers.tpl @@ -0,0 +1,139 @@ +{{- /* +name defines a template for the name of the oai-enb chart. + +The prevailing wisdom is that names should only contain a-z, 0-9 plus dot (.) and dash (-), and should +not exceed 63 characters. + +Parameters: +- .Values.nameOverride: Replaces the computed name with this given name +- .Values.namePrefix: Prefix +- .Values.global.namePrefix: Global prefix +- .Values.nameSuffix: Suffix +- .Values.global.nameSuffix: Global suffix + +The applied order is: "global prefix + prefix + name + suffix + global suffix" + +Usage: 'name: "{{- template "oai-enb.name" . -}}"' +*/ -}} +{{- define "oai-enb.name"}} +{{- $global := default (dict) .Values.global -}} +{{- $base := default .Chart.Name .Values.nameOverride -}} +{{- $gpre := default "" $global.namePrefix -}} +{{- $pre := default "" .Values.namePrefix -}} +{{- $suf := default "" .Values.nameSuffix -}} +{{- $gsuf := default "" $global.nameSuffix -}} +{{- $name := print $gpre $pre $base $suf $gsuf -}} +{{- $name | lower | trunc 54 | trimSuffix "-" -}} +{{- end -}} + +{{- /* +fullname defines a suitably unique name for a resource by combining +the release name and the oai-enb chart name. + +The prevailing wisdom is that names should only contain a-z, 0-9 plus dot (.) and dash (-), and should +not exceed 63 characters. + +Parameters: + +- .Values.fullnameOverride: Replaces the computed name with this given name +- .Values.fullnamePrefix: Prefix +- .Values.global.fullnamePrefix: Global prefix +- .Values.fullnameSuffix: Suffix +- .Values.global.fullnameSuffix: Global suffix + +The applied order is: "global prefix + prefix + name + suffix + global suffix" + +Usage: 'name: "{{- template "oai-enb.fullname" . -}}"' +*/ -}} +{{- define "oai-enb.fullname"}} +{{- $global := default (dict) .Values.global -}} +{{- $base := default (printf "%s-%s" .Release.Name .Chart.Name) .Values.fullnameOverride -}} +{{- $gpre := default "" $global.fullnamePrefix -}} +{{- $pre := default "" .Values.fullnamePrefix -}} +{{- $suf := default "" .Values.fullnameSuffix -}} +{{- $gsuf := default "" $global.fullnameSuffix -}} +{{- $name := print $gpre $pre $base $suf $gsuf -}} +{{- $name | lower | trunc 54 | trimSuffix "-" -}} +{{- end -}} + + +{{- /* +oai-enb.labels.standard prints the standard oai-enb Helm labels. +The standard labels are frequently used in metadata. +*/ -}} +{{- define "oai-enb.labels.standard" -}} +app.kubernetes.io/name: {{ template "oai-enb.name" . }} +helm.sh/chart: {{ template "oai-enb.chartref" . }} +app.kubernetes.io/managed-by: {{ .Release.Service | quote }} +app.kubernetes.io/instance: {{ .Release.Name | quote }} +app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} +{{- end -}} + +{{- /* +oai-enb.chartref prints a chart name and version. +It does minimal escaping for use in Kubernetes labels. +Example output: +oai-enb-0.4.5 +*/ -}} +{{- define "oai-enb.chartref" -}} +{{- replace "+" "_" .Chart.Version | printf "%s-%s" .Chart.Name -}} +{{- end -}} + +{{/* +Return the proper image name +*/}} +{{- define "oai-enb.image" -}} +{{- $registryName := .Values.image.registry -}} +{{- $repositoryName := .Values.image.repository -}} +{{- $tag := .Values.image.tag | toString -}} +{{/* +Helm 2.11 supports the assignment of a value to a variable defined in a different scope, +but Helm 2.9 and 2.10 doesn't support it, so we need to implement this if-else logic. +Also, we can't use a single if because lazy evaluation is not an option +*/}} +{{- if .Values.global }} + {{- if .Values.global.imageRegistry }} + {{- printf "%s/%s:%s" .Values.global.imageRegistry $repositoryName $tag -}} + {{- else -}} + {{- printf "%s/%s:%s" $registryName $repositoryName $tag -}} + {{- end -}} +{{- else -}} + {{- printf "%s/%s:%s" $registryName $repositoryName $tag -}} +{{- end -}} +{{- end -}} + +{{/* +Return the secret based on imageCredentials +*/}} +{{- define "oai-enb.dockerconfig" }} +{{- printf "{\"auths\": {\"%s\": {\"auth\": \"%s\"}}}" .Values.imageCredentials.registry (printf "%s:%s" .Values.imageCredentials.username .Values.imageCredentials.password | b64enc) | b64enc }} +{{- end }} + +{{/* +Return the proper Docker Image Registry Secret Names +*/}} +{{- define "oai-enb.imagePullSecrets" -}} +{{/* +Helm 2.11 supports the assignment of a value to a variable defined in a different scope, +but Helm 2.9 and 2.10 does not support it, so we need to implement this if-else logic. +Also, we can not use a single if because lazy evaluation is not an option +*/}} +{{- if .Values.global }} +{{- if .Values.global.imagePullSecrets }} +imagePullSecrets: +{{- range .Values.global.imagePullSecrets }} + - name: {{ . }}.Val +{{- end }} +{{- else if .Values.image.pullSecrets }} +imagePullSecrets: +{{- range .Values.image.pullSecrets }} + - name: {{ . }} +{{- end }} +{{- end -}} +{{- else if .Values.image.pullSecrets }} +imagePullSecrets: +{{- range .Values.image.pullSecrets }} + - name: {{ . }} +{{- end }} +{{- end -}} +{{- end -}} diff --git a/charts/oai-enb/templates/configmap.yaml b/charts/oai-enb/templates/configmap.yaml new file mode 100644 index 000000000..56cedbb2e --- /dev/null +++ b/charts/oai-enb/templates/configmap.yaml @@ -0,0 +1,9 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "oai-enb.fullname" . }} + labels: +{{ include "oai-enb.labels.standard" . | nindent 4 }} +data: + enb.conf: | +{{ tpl (.Files.Get "resources/enb.conf") . | indent 4 }} diff --git a/charts/oai-enb/templates/registry-secret.yaml b/charts/oai-enb/templates/registry-secret.yaml new file mode 100644 index 000000000..5823addd0 --- /dev/null +++ b/charts/oai-enb/templates/registry-secret.yaml @@ -0,0 +1,14 @@ +{{- if .Values.imageCredentials }} +{{- if .Values.imageCredentials.registry }} +apiVersion: v1 +kind: Secret + +metadata: + name: {{ include "oai-enb.fullname" . }}-registry + labels: +{{ include "oai-enb.labels.standard" . | indent 4 }} +type: kubernetes.io/dockerconfigjson +data: + .dockerconfigjson: {{ template "oai-enb.dockerconfig" . }} +{{- end }} +{{- end }} \ No newline at end of file diff --git a/charts/oai-enb/templates/statefulset.yaml b/charts/oai-enb/templates/statefulset.yaml new file mode 100644 index 000000000..0c10b561e --- /dev/null +++ b/charts/oai-enb/templates/statefulset.yaml @@ -0,0 +1,43 @@ +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: {{ include "oai-enb.fullname" . }} + labels: +{{ include "oai-enb.labels.standard" . | nindent 4 }} +spec: + replicas: 1 + serviceName: {{ include "oai-enb.fullname" . }} + selector: + matchLabels: + app.kubernetes.io/name: {{ include "oai-enb.name" . }} + app.kubernetes.io/instance: {{ .Release.Name | quote }} + template: + metadata: + labels: + app.kubernetes.io/name: {{ include "oai-enb.name" . }} + app.kubernetes.io/instance: {{ .Release.Name | quote }} + spec: +{{ include "oai-enb.imagePullSecrets" . | indent 6 }} + containers: + - name: enb + image: {{ template "oai-enb.image" . }} + imagePullPolicy: {{ .Values.image.pullPolicy | quote }} + args: + - "enb" + env: + - name: ENB_BIND_INTERFACE + value: eth0 + - name: MME_HOSTNAME + value: {{ .Values.enb.mme | quote }} + securityContext: + privileged: true + resources: +{{ toYaml .Values.resources | indent 10 }} + volumeMounts: + - name: oai-enb-config + mountPath: /opt/oai/etc/enb.conf + subPath: "enb.conf" + volumes: + - name: oai-enb-config + configMap: + name: {{ include "oai-enb.fullname" . }} \ No newline at end of file diff --git a/charts/oai-enb/values.yaml b/charts/oai-enb/values.yaml new file mode 100644 index 000000000..678afce93 --- /dev/null +++ b/charts/oai-enb/values.yaml @@ -0,0 +1,24 @@ +image: + registry: docker.io + repository: openverso/oai-enb + tag: "1.2.2" + ## Specify a imagePullPolicy + ## Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent' + ## ref: http://kubernetes.io/docs/user-guide/images/#pre-pulling-images + ## + pullPolicy: IfNotPresent + ## Optionally specify an array of imagePullSecrets. + ## Secrets must be manually created in the namespace. + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/ + ## + # pullSecrets: + # - regcred + +enb: + mcc: '001' + mnc: '01' + tac: '0001' + mme: mme +resources: + limits: + ettus.com/usrp: 1