Giter Club home page Giter Club logo

emco's Introduction

SPDX-License-Identifier: Apache-2.0
Copyright (c) 2019-2020 Intel Corporation

EMCO

Overview

The Edge Multi-Cluster Orchestrator (EMCO) is a software framework for intent-based deployment of cloud-native applications to a set of Kubernetes clusters, spanning enterprise data centers, multiple cloud service providers and numerous edge locations. It is architected to be flexible, modular and highly scalable. It is aimed at various verticals, including telecommunication service providers.

Refer to EMCO whitepaper for details on EMCO architecture: https://www.openness.org/docs/doc/building-blocks/emco/openness-emco

Build and Deploy EMCO

Set up the environment

Set up the following environment variables. Note that the value for the container registry URL must end with a /.

export EMCODOCKERREPO=${container_registry_url}/
export HTTP_PROXY=${http_proxy}
export HTTPS_PROXY=${https_proxy}

Update the base container images, if needed

The external dependencies for EMCO are captured partly in the environment variables above and partly in a configuration file config/config.txt.

The configuration file specifies two important parameters:

  • BUILD_BASE_IMAGE: The name and version of the base image used for building EMCO components themselves.
  • SERVICE_BASE_IMAGE: The name and version of the base image used to deploy the microservices that constitute EMCO.

By default, config.txt has the following content:

BUILD_BASE_IMAGE_NAME=emco-service-build-base
BUILD_BASE_IMAGE_VERSION=:1.1
SERVICE_BASE_IMAGE_NAME=alpine
SERVICE_BASE_IMAGE_VERSION=:3.12

By default, emco-service-build-base is built from golang:1.14.1-alpine, with the make utility added.

You may want to review and possibly update the base image names and versions.

Note: The build base image should be based on a Linux distribution that uses apt for package management, such as Alpine, Debian or Ubuntu. It should also provide Go language version 1.14.

Populate the EMCODOCKERREPO registry

Populate the EMCODOCKERREPO registry with base images listed in config/config.txt, along with mongodb and etcd images.

The base images and versions that have been validated are as below:

  1. Alpine:3.12 (for deploying EMCO components)
  2. golang:1.14.1-alpine (for building EMCO components)
  3. mongo:4.4.1
  4. etcd:3

Create the build base image in the EMCODOCKERREPO registry

EMCO does not assume that the base build image, such as golang:1.14.1-alpine, has the necessary utilities such as make.

Run the following to create the final build container image and populate that in the EMCODOCKERREPO registry.

make build-base

Deploy EMCO locally

You can build and deploy the EMCO components in your local environment (and use them to deploy your workload in a set of remote Kubernetes clusters).

This is done in two stages:

  • Build the EMCO components: make all This spawns a build container that generates the needed EMCO binaries and container images.
  • Deploy EMCO components locally: docker-compose up using deployments/docker/docker-compose.yml. This spawns a set of containers, each running one EMCO component.

See this tutorial for further details.

Deploy EMCO in a Kubernetes cluster

Alternatively, you can build EMCO locally and deploy EMCO components in a Kubernetes cluster using Helm charts (and use them to deploy your workload in another set of Kubernetes clusters).

This requires the locally built container images to be pushed to the container registry EMCODOCKERREPO with the appropriate tag, so that the Kubernetes cluster can pull images from that container registry. The tag can be set based on whether it is a developer/test build or a release build.

Do the following steps:

  • Set up the environment:

    • For development/testing: export BUILD_CAUSE=DEV_TEST This sets the image tags to the form ${USER}-latest.

    • For release:

         export BUILD_CAUSE=RELEASE
         export EMCOSRV_RELEASE_TAG=openness-${release_number}tag
      

      This sets the image tags to the specified tag. Note that if you set BUILD_CAUSE=RELEASE but do not set EMCOSRV_RELEASE_TAG, the image tags will be set to any tag defined on the git HEAD of the current git branch. If no git tag is defined on the HEAD, the build will fail.

  • Set up the Helm charts: Be sure to reference those image names and tags in your Helm charts.

  • Build and deploy EMCO: make deploy

Deploy sample test cases with EMCO

See this Readme on how to setup environment and running few test cases with EMCO.

See this tutorial for further details.

emco's People

Contributors

igordcard avatar jwagantall avatar mrangana avatar electrocucaracha avatar sunhui2980 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.