Installation process#
The unattended install procedure powered by the make try-eda
step hides a lot of machinery from a user, making the installation process quick and easy. However, going over most important steps of the playground installation process will give you a better understanding of the underlying operations and can assist you in troubleshooting issues.
Note
- If you want just to install EDA the easy way, you can skip this chapter and use the Try EDA procedure.
- This chapter explains the generic installation steps based on the Makefile operations and is not a reference for a production installation.
A generic EDA installation procedure is as simple as:
Making sure you have a Kubernetes cluster1, and a valid kubeconfig
set up to talk to it.
Pulling down the EDA kpt
2 package.
Installing the EDA core components via kpt
.
Installing an initial set of EDA applications via kubectl
.
The make try-eda
command sets up the whole thing for you; Let's unwrap it step by step.
Tools#
Who likes to manually install a bunch of tools that are needed for the installation process manually? Not us! That's why we automated the tools procurement our installation process relies on:
-
This will download
kind
,kubectl
,kpt
, andyq
into atools
folder relative to the current working directory.Subsequent steps use these versions of the binaries - you may use your own binaries for your own interactions. If you don't have
kubectl
in your$PATH
, then consider copying thekubectl
binary from thetools
directory to a location in your$PATH
to make use of it in the following steps.
You will have to install the container runtime (e.g. docker
) manually.
EDA packages#
EDA is packaged using kpt
, and uses this package manager tool to install core EDA components. The installer downloads two kpt packages by pulling the relevant git repositories.
This pulls two git repositories to the respective directories:
- the EDA kpt package in
eda-kpt
directory - the EDA built-in app catalog in
catalog
directory.
KinD cluster#
EDA is a set of containerized applications that are meant to run in a Kubernetes cluster. EDA Playground uses Kubernetes-in-Docker project, a.k.a kind
, to setup a local k8s cluster.
Already have a cluster?
Using the kind
cluster for the quickstart is the easiest way to get started, but you are welcome to try EDA on a cluster of your own and even use the same Makefile
to install EDA on it.
Here are some things to consider when trying EDA on a non-kind
cluster:
-
if you run a cluster with a Pod Security Policy in place, make sure to allow a privileged policy for the
default
namespace. Thecert-manager-csi-driver
daemonset will say thank you.
KinD has the following requirements:
To create a kind cluster, run:
If cluster installation succeeds without errors you should be able to verify that a one-node cluster is running with:
kubectl
is also installed during themake download-tools
step.
External packages#
Because the playground setup assumes a virgin k8s cluster, we will also install some common applications like fluentd
for logging, certmanager
for TLS and a git
server. You may provide these components as part of your own cluster installation, or the EDA install can add them for you. It is highly recommended if EDA is the only workload in the cluster to allow EDA to manage the installation of these dependencies.
External packages are defined in the kpt/eda-external-packages
directory.
Configure your deployment#
To provide configuration flexibility for EDA installation, kpt
packages have a lot of fields marked with the # kpt-set:
annotation. These fields can be set with the kpt
CLI to change their default values.
Parameters like TLS configuration, proxies, default credentials and more are configurable via kpt
setters.
Installation Customization section provides a deep dive on all customization options.
For example, it is common for EDA to be behind a load balancer, with clients terminating on the load balancer address and having their traffic forwarded from there. As EDA performs redirects it needs to know the name/IP clients will use to reach it. This can be accomplished via the setters in kpt
, but for persistency and convenience, the most common settings can be set via the prefs.mk
file that is part of the playground repository.
# EXT_DOMAIN_NAME = "<Domain name or IP address>"
# EXT_HTTP_PORT = "<Port for http access>"
# EXT_HTTPS_PORT = "<Port for https access>"
# EXT_IPV4_ADDR = "<LB IP or external route>"
# EXT_IPV6_ADDR = "<Same thing but in ipv6>"
Check out Trying EDA Like a Pro post for tips and tricks on how to configure EDA.
HTTP Proxies#
If your cluster requires an HTTP proxy to access the resources outside of it, you will need to set the HTTPS_PROXY
, HTTP_PROXY
, NO_PROXY
, and their lowercase counterparts.
The logic inside the eda-configure-core
target will set these values automatically to the values in your environment. But if you're installing on a machine that has different proxy settings, you will need to set them manually in the prefs.mk
file before running the eda-configure-core
target.
Once the desired values are set in the prefs.mk
file, the eda-configure-core
target can be run to set the values in the eda-kpt
package:
The end result of this command is that the manifests contained in the eda-kpt
directory will have the corresponding values set to the values you provided.
Installing EDA#
An EDA deployment is composed of two parts:
- Core: this is a set of applications that bring the core functionality of EDA. It includes applications like the Config Engine, App Store, State Controller, and others.
- Applications: these are applications that extend EDA's core functionality. They are pluggable by nature and decoupled from the Core. Users can install and uninstall Nokia-provided applications as needed, as well as develop their own or consume third-party applications.
Core#
EDA Core is a kpt
package located at kpt/eda-kpt-base
that is installed with:
- Feel free to look at the
Makefile
to understand what happens during the install.
In a minute, you should have the EDA core services deployed in your cluster and the make target should complete successfully. The services and controllers will be starting up after being installed, and after ~2-5 minutes you should be able to see the EDA core services running.
Check deployment status
Check the deployment status with the following command, you want to see all the deployments ready:
You can also check the EngineConfig
to verify the ConfigEngine has started correctly, checking the .status.run-status
field:
Started
is good, anything else is bad!
You can quickly verify the deployment with yet another target!
If everything checks out, you're ready to install the apps!
Apps#
EDA is an automation framework that is powered by Applications - the little nuggets of automation goodness that you're probably interested in using. Almost everything in EDA is considered an app - from the abstracted building blocks of the network services to the composite workflows enabling the automation of complex tasks.
So far we've only installed the EDA core components, let's fix that by installing a basic set of applications through the EDA AppStore4 and its default Catalog provided by Nokia.
- Curious which apps are going to be installed? Check the
Makefile
and theeda-install-apps
target.
Apps installation takes ~5 minutes.
Bootstrap EDA#
When we installed the apps in the previous step, we made EDA load the applications, including, but not limited to the following ones:
IPAllocationPool
: to manage IP address pools that may be used to allocate IP addresses to devices.IndexAllocationPool
: to manage index pools like AS numbers, subinterface indexes, etc.
By installing the applications we made EDA aware of them, but we haven't created any concrete instances of these apps yet. In the bootstrap step we will create some example instances of these application types as well as some initial configuration.
The bootstrap step uses the eda-kpt-playground
kpt package that contains the instances of the installed applications. For example, the concrete allocation pools or bootstrap configs for the networking nodes.
You now have a ready-to-use EDA installation, with core services and some apps installed. What we miss is some network to automate. Let's have one!
-
Don't have a cluster? No problem! As part of the quickstart we install a
kind
cluster for you. ↩ -
kpt - pronounced "kept" - is a Kubernetes Packaging Tool. EDA uses
kpt
to package up all the resources needed to deploy EDA.
See https://kpt.dev for more information. ↩ -
If you ran
make download-tools
, thenkind
is already installed in the./tools
directory. ↩ -
The AppStore is a service that hosts a catalog of applications that can be installed on the EDA platform. It is a core service that is installed as part of the EDA core services. ↩