How to start contributing to mayactl.

What is mayactl?

  • mayactl is the command line tool used for interacting with OpenEBS volumes. mayactl is not required while provisioning or managing the OpenEBS volumes, but it is currently used during debugging and troubleshooting.
  • mayactl is the client, like kubectl, that submits requests to the maya-apiserver to obtain specific information, whereas kubectl submits requests to the Kubernetes apiserver to get specific information.
  • mayactl helps retrieve storage-related information for debugging/troubleshooting storage-related issues. It provides various commands to create volume, view volume details, and create, list, and revert snapshots and much more.

How to start contributing to mayactl

To learn more about mayactl, visit:

mayactl ·

      Edit description
      docs.openebs.io


OpenEBS Architecture

OpenEBS Architecture
OpenEBS Architecture


To learn more about OpenEBS visit: https://docs.openebs.io/docs/next/introduction.html

These items must be installed in your system (with Ubuntu host) to run mayactl:

  1. Docker. To install docker, run the commands shown below. You can also visit the official docker website to complete the installation.
sudo apt-get update
sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
sudo apt-get update
sudo apt-get install docker.io

2. open-iscsi package.

  • To install the open-iscsi package, run these commands:
sudo apt-get update
sudo apt-get install open-iscsi
sudo service open-iscsi restart

3. Golang.

4. Minikube.

  • To install minikube, run these commands:
# minikube requires virtualbox to be installed as a dependency
sudo apt-get install virtualbox virtualbox-ext-pack
sudo apt-get update
# minikube version 0.24.0
curl -Lo minikube https://storage.googleapis.com/minikube/releases/v0.24.0/minikube-linux-amd64 && chmod +x minikube && sudo mv minikube /usr/local/bin/

5. Kubectl.

  • Run these commands to install Kubectl:
curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.8.0/bin/linux/amd64/kubectl
chmod +x ./kubectl
sudo mv ./kubectl /usr/local/bin/kubectl

How do I run mayactl in a local machine for development purposes?

  1. Open the openebs repo ( https://github.com/openebs/openebs) and star the openebs repo.. 😄 (Not Mandatory)
  2. Fork the openebs/openebs and openebs/maya repositories into your GitHub account.
# if directories not present create the directories in same hierarchy
cd $GOPATH/src/github.com/openebs
git clone https://github.com/<your-github-username>/openebs.git
git clone https://github.com/<your-github-username>/maya.git

4. Run the single node cluster using the minikube command.

minikube start --vm-driver=none
# To check whether minikube is configured and running
minikube status

5. Install OpenEBS by executing these commands:

cd $GOPATH/src/github.com/openebs/openebs/k8s/
kubectl apply -f openebs-operator.yaml
kubectl apply -f openebs-storageclasses.yaml

 

code

6. Now we have the openebs-provisioner and maya-apiserver running as a pod in the Kubernetes (minikube) cluster.

  • To get the pods, run this command:
kubectl get pods
NAME READY STATUS RESTARTS AGE
maya-apiserver-7b8d5496cc-kgmnn 1/1 Running 0 3m
openebs-provisioner-6797d44769-phnnc 1/1 Running 2 3m

7. To run/access mayactl, you will need to login/execute into the maya-apiserver pod on Kubernetes.

  • Find out the name of the maya api-server pod by running the following commands:
kubectl get pods
# It will access the bash shell inside the pod
kubectl exec -it <maya-apiserver-podname> /bin/bash

8. Now you can run all mayactl commands as you are inside the maya-apiserver pod.

  • Try running these commands after exececute/login into the pod.
mayactl -help

Go through the issues (https://github.com/openebs/maya/issues) and start modifying the mayactl code, located in $GOPATH/src/github.com/openebs/maya/cmd/mayactl, and start contributing to OpenEBS. Also, you can start contributing by writing a small unit test code in mayactl. For every PR you raise, you will also receive goodies from the OpenEBS team. 😃

How do I test the changes made in mayactl?

  1. After modifying the mayactl code, go into the maya directory, i.e $GOPATH/src/github.com/openebs/maya, and run these commands:
# run this if not currently in maya directory
cd $GOPATH/src/github.com/openebs/maya
# this will create the mayactl binary into the bin folder inside maya directory
make mayactl

2. After the build has been completed, copy the mayactl binary from the bin folder to the maya-apiserver pod using the command:

kubectl cp $GOPATH/src/github.com/openebs/maya/bin/maya/mayactl <maya-apiserver-podname>:/tmp/

3. Login/execute into the maya-apiserver pod to run the mayactl binary.

kubectl exec -it <maya-apiserver-podname> /bin/bash
cd /tmp/

4. Here the mayactl binary you copied is shown.

  • To run that binary, use the following command:
./mayactl -help

Now you can easily see the changes you made in the mayactl command line tool. You are also now ready to raise the PR’s. 😃

Reference:

 

This article was first published on Aug 15, 2018 on OpenEBS's Medium Account

Utkarsh Mani Tripathi
Utkarsh is a maintainer of jiva project and has contributed in building both control and data plane of OpenEBS. He loves to learn about file-system, distributed systems and networking. Currently, he is mainly focusing on enhancing jiva and maya-exporter In his free time, he loves to write poems and make lip smacking dishes
Chuck Piercey
Chuck Piercey is a Silicon Valley product manager with experience shipping more than 15 products in several different market segments representing a total of $2.5Bn revenue under both commercial and open source business models. Most recently he has been working for MayaData, Inc. focused on software-defined storage, network, and compute for Kubernetes environments. Chuck occasionally writes articles about the technology industry.
Sagar Kumar
Sagar is a software engineer at Mayadata who loves coding and solving real-world problems. He has been playing with Kubernetes for the last couple of years. Currently, he is focused on building OpenEBS Director as the go-to solution for OpenEBS users. In his free time, he loves playing cricket and traveling.