This page walks through the sequence of Helm operations needed to bring up OMEC. It assumes the platform has already been installed.
OMEC is composed of two charts, omec-control-plane and omec-data-plane. You can deploy both charts together in a single cluster or separately in a central and edge cluster, respectively. Before installing the charts, refer to this page to create override-values.yaml
file that contains values overriding each chart's default settings for your environment. This file will be passed to Helm install command.
{% include "../../../partials/helm/add-cord-repo.md" %}
Then, proceed with the OMEC charts installation. Please note that you must install omec-data-plane first, then the omec-control-plane:
$ helm install cord/omec-data-plane \ --namespace omec \ --name omec-data-plane \ --values override-values.yaml $ helm install cord/omec-control-plane \ --namespace omec \ --name omec-control-plane \ --values override-values.yaml
In case you're deploying control plane and data plane to different clusters, edge and central, just point the correct K8S context with --kube-context
option when running helm install command. See this page for configuring access to multiple K8S clusters.
$ helm install cord/omec-data-plane \ --kube-context edge \ --namespace omec \ --name omec-data-plane \ --values override-values.yaml $ helm install cord/omec-control-plane \ --kube-context central \ --namespace omec \ --name omec-control-plane \ --values override-values.yaml
You may need to deploy some OMEC components to specific nodes to properly allocate resources. For example, let's assume that you have 3 node single cluster and want to deploy control plane components to node1 and node2, and data plane components to node3 for some reason. In that case, you can use node selector by overriding nodeSelectors.enabled=true
. You'll also need to add a label to the nodes.
$ kubectl label nodes node1 omec-cp=enabled $ kubectl label nodes node2 omec-cp=enabled $ kubectl label nodes node3 omec-dp=enabled $ kubectl get nodes --show-labels NAME STATUS ROLES AGE VERSION LABELS node1 Ready master 2d v1.15.3 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=node1,kubernetes.io/os=linux,node-role.kubernetes.io/master=,omec-cp=enabled node2 Ready master 2d v1.15.3 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=node2,kubernetes.io/os=linux,node-role.kubernetes.io/master=,omec-cp=enabled node3 Ready master 2d v1.15.3 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=node3,kubernetes.io/os=linux,node-role.kubernetes.io/master=,omec-dp=enabled
You can also override node labels used as nodeSelector for each OMEC component.
Once the installation completes, monitor your setup using kubectl get pods -n omec
. Wait until all pods are in Running state and "job-hss-bootstrap" and "job-hss-db-sync" pods are in Complete state.
$ kubectl get pods -n omec NAME READY STATUS RESTARTS AGE cassandra-0 1/1 Running 0 103s hss-0 1/1 Running 0 103s job-hss-bootstrap-vm645 0/1 Completed 0 103s job-hss-db-sync-5hj9v 0/1 Completed 0 103s mme-0 4/4 Running 0 103s spgwc-0 1/1 Running 0 103s spgwu-0 1/1 Running 0 2m17s sriov-device-plugin-6wsg7 1/1 Running 0 2m17s sriov-device-plugin-bmhzz 1/1 Running 0 2m17s sriov-device-plugin-kbc8m 1/1 Running 0 2m17s
If control plane and data plane are deployed in different clusters, edge and central, the pod status of each cluster is as follows.
$ kubectl config use-context edge $ kubectl get pods -n omec NAME READY STATUS RESTARTS AGE spgwu-0 1/1 Running 0 2m17s sriov-device-plugin-6wsg7 1/1 Running 0 2m17s sriov-device-plugin-bmhzz 1/1 Running 0 2m17s sriov-device-plugin-kbc8m 1/1 Running 0 2m17s $ kubectl config use-context central $ kubectl get pods -n omec NAME READY STATUS RESTARTS AGE cassandra-0 1/1 Running 0 103s hss-0 1/1 Running 0 103s job-hss-bootstrap-vm645 0/1 Completed 0 103s job-hss-db-sync-5hj9v 0/1 Completed 0 103s mme-0 4/4 Running 0 103s spgwc-0 1/1 Running 0 103s