

Do you have half an hour and an AWS account? If so, you can install Zenko and use Orbit to manage your data. Below is a step-by-step guide with time estimates to get started.
Most of the complexity of installing Zenko on a cluster involves deploying Kubernetes cluster itself. Scality offers MetalK8s, an open-source Kubernetes engine. But it does require some hands-on knowledge to provision, manage and configure nodes in the cluster.
You may be familiar with Kubernetes but not have in-depth expertise yet like me? Luckily Zenko can be deployed on any Kubernetes cluster.
Amazon EKS is a fully Managed Kubernetes Service that removes a lot of complexity associated with setting up and configuring a Kubernetes cluster manually. Sounds good to me!
Zenko is deployed with helm charts. On our GitHub repository you will find two supported architectures in each release (we provide helm charts for):
- Compact Architecture, a three-node cluster configuration. Three-node clusters can continue to operate without service disruption or data loss if one node fails.
- Standard Architecture, a five-node cluster with three masters/etcds. Five-node clusters can operate without disruption or loss if two nodes fail. Naturally, a 5-node cluster will also provide better performance compared to a 3-node.
Since I have limited resources available and I’m not planning to stress my Zenko instance with huge workloads I decided to go with Compact Architecture. I will be deploying Zenko V1.2 on a 3-node Amazon EKS. The whole process should take us 30 minutes or so. Without further ado let’s dive in.
Prerequisites to install Zenko on EKS
Let’s make sure that we have all the necessary tools to deploy and manage Kubernetes clusters on AWS.
The machine from which you will be conducting EKS cluster deployment (I am using my Macbook Pro) should have these tools installed:
- AWS CLI– Command-line tools for working with AWS services (in our case we will use AWS IAM service to authenticate to kubernetes cluster)
- eksctl – A command-line tool for working with EKS clusters that automates many individual tasks.
- kubectl – A command-line tool for working with Kubernetes clusters.
The next step is to configure your AWS credentials file. The fastest way is to run this command:
aws configure
The command will prompt you to enter four pieces of info needed to connect to AWS:
- Access key ID
- Secret access key
- AWS Region(the region where EKS cluster will be created)
- Output format
After you successfully installed all the tools and configured your AWS credentials file you can proceed to cluster deployment.
Deploy a three-node Kubernetes cluster on Amazon EKS
Run this command to create a 3-node Kubernetes cluster on EKS (you can make up your own name for the cluster):
$ eksctl create cluster --name=zenko-on-eks --nodes=3 --region=us-east-1
NOTE: The recommended architecture for high availability is a 5-node cluster. f you need a 5-node Zenko deployment, specify –nodes=5.
Cluster creation can take about 5 minutes so be patient. This is the last line of the output indicating that everything went well:
[✔] EKS cluster "zenko-on-eks" in "us-east-1" region is ready
You can run this command as a sanity check, you should see the name of your cluster in the output:
$ eksctl get clusters NAME REGION Zenko-on-eks us-east-1
That’s it, we have 3 node Kubernetes clusters ready for Zenko!
Install HELM
At this point, it’s a good idea to create a dedicated installation directory and continue working from there.
$ cd /path/to/installation
Zenko utilizes Helm (Kubernetes package manager) to install and configure Zenko. Therefore we will need to install it on the deployment machine as well.
Head over to Helm repository and download one of the latest 2.X releases (pick the binary for your platform – Mac, Linux, etc).
NOTE: At this time we only support Helm V2.X
Unpack the tarball:
tar -xvzf helm-v{{version-number}}-linux-amd64.tar.gz
Add Helm to your PATH:
$ export PATH="$PATH:/path/to/helm" $ source ~/.bashrc
Next create and enable a role for Tiller (EKS requires role-based access control to be set up). Run the following commands to do that:
$ kubectl -n kube-system create serviceaccount tiller
$ kubectl create clusterrolebinding tiller \ --clusterrole=cluster-admin \ --serviceaccount=kube-system:tiller
Lastly, initialize tiller service with this command:
$ helm init --stable-repo-url=https://charts.helm.sh/stable --service-account tiller
Helm can now install applications on the Kubernetes cluster.
Install Zenko on EKS cluster
Download Zenko V1.2 helm charts for 3-node architecture and upack it inside your /path/to/installation directory.
NOTE: if you are deploying a 5-node architecture use these helm charts.
Create options.yaml file in the same working directory to store deployment parameters. Enter the following parameters in the file:
ingress: enabled: true annotations: nginx.ingress.kubernetes.io/proxy-body-size: 0 hosts: - zenko.local cloudserver: endpoint: "zenko.local"
Finally, install Zenko with helm:
$ helm install --name my-zenko -f options.yaml zenko NAME: my-zenko LAST DEPLOYED: Fri Sep 25 10:36:43 2020 NAMESPACE: default STATUS: DEPLOYED
This might take somewhere between 5-10 minutes. Give it some time. You can check on the pod creation process with this command:
$ kubectl get pods -n default -o wide
Connect your Zenko Instance to Orbit (Zenko management UI)
Get the name of your cloudserver service:
$ kubectl get -n default pods | grep cloudserver-manager my-zenko-cloudserver-manager-7d8cf9kbd9-5f2qr 1/1 Running 5 61m
Grab cloudserver logs with the command:
$ kubectl logs my-zenko-cloudserver-manager-<YOUR-ID> | grep 'Instance ID'
This is the output you should get:
{"name":"S3","time":1601055649308,"req_id":"7dbc87524d4fa7dc4b7d", "Level":"info", "message":"this deployment's Instance ID is f69d3a2a-b575-4aa2-ac8d-e333b2cc8177", "hostname":"my-zenko-cloudserver-manager-7d4cf9cbd9-5f2tr","pid":19}
See that instance ID? Copy it and go to the Orbit page (Zenko UI) in a web browser. You may be prompted to authenticate through Google.
You will see the Register My Instance button in the top left corner. Paste the instance ID that we got from logs into the Instance ID dialog field. Come up with a cool name to fill in the Instance name and click the Submit now button.
You are done! The next step would be to read documentation on how to operate Zenko and start playing with it. Check these Zenko blog posts for ideas of how to use AI to tag objects and use Zenko to search and retrieve them.
If you need to delete your cluster
List all services running in your cluster:
$ kubectl get svc --all-namespaces
Delete any services that have an associated EXTERNAL-IP value.
$ kubectl delete svc <service-name>
Finally delete the cluster:
$ eksctl delete cluster --name <prod>
See full instructions on deleting the cluster here.
If you have any questions or want to show off a faster time than 30 minutes, join us at the Zenko forum.
Photo by chuttersnap on Unsplash