Try EDA Installation process#
The unattended "Try EDA" install procedure powered by the make try-eda
step does a lot of steps in the background, 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.
- The outlined steps are not meant to be executed in the way they presented. This page just explains some core installation steps, without maintaining a close relationship between them.
The key installation step that the "Try EDA"1 installation performs are:
Setting up a development Kubernetes cluster if one does not exist.
Downloading and installing the external and EDA core packages using kpt
2.
Installing an initial set of EDA applications provided by Nokia.
Exposing UI/API endpoint to a user.
The make try-eda
command sets up the whole thing for you; Let us explain some steps it carries out in more details.
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 as well as external tools like cert-manager. The installer downloads EDA kpt packages by cloning the nokia-eda/kpt.
These packages install EDA core and some external components onto the k8s cluster in the later steps.
But EDA kpt packages only install the core EDA components, such as its config engine, digital sandbox and so on. The EDA applications, though, are distributed via application catalogs, which are just git repositories with application manifests. The app catalog that "Try EDA" downloads contains Nokia apps such as Fabrics, Interfaces, AAA and other basic apps you get installed with EDA.
To clone both EDA kpt packages and the app catalog, the makefile packs the following target:
KinD cluster#
EDA is a set of containerized applications that are meant to run in a Kubernetes cluster. Try EDA setup uses Kubernetes-in-Docker project, a.k.a kind
, to setup a local k8s cluster3.
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 is a short guide how to do that.
The make try-eda
step will setup the KinD cluster automatically for you and you should be able to verify that a one-node cluster is running with:
kubectl
is also installed during themake download-tools
step; you will find the binary in the./tools
directory.
External packages#
EDA relies on some open source projects like fluentd
for logging, certmanager
for certificate management and gogs
for Git. 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.
The external packages that EDA uses are defined in the nokia-eda/kpt/eda-external-packages
directory and is installed as part of the try-eda
step via this target:
Deployment configuration#
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 three parts:
- External packages: 3rd party, open source components EDA relies on. Like
fluentd
for logging orcert-manager
for certificate management.
As we already discussed the external packages installation, the focus now is on the EDA core and apps. - Core: this is a set of applications that bring the core functionality of EDA. It includes applications like the Config Engine, EDA 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 nokia-eda/kpt/eda-kpt-base
directory and is installed as part of the try-eda
step with:
- Feel free to look at the
Makefile
to understand what happens during the install.
The EDA deployments, daemonsets and services will be created by this target, and after ~2-5 minutes you should be able to see the EDA core components 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.
A basic set of Nokia-provided applications delivered via the default App Catalog is installed with:
- Curious which apps are going to be installed? Check the
Makefile
and theeda-install-apps
target.
Bootstrap EDA#
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 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.
What's next?#
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!
-
Try EDA is an installation mode for labs and demos. For production installation consult with the Software Installation document. ↩
-
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 are using macOS you might be using another, non-KinD, k8s provider. ↩