Skip to main content Link Menu Expand (external link) Document Search Copy Copied
Star

Getting started with Gefyra and SysEleven MetaKube

This guide will show you how to use Gefyra for the remote development of a Kubernetes application running on MetaKube.

Prerequisites

  1. You have a MetaKube account and privileges to create a new cluster
  2. Follow the installation of Gefyra for your preferred platform

Setup a cluster

You may follow this guide to create a cluster using the MetaKube management console.

This guide assumes you are running an OpenStack-based Kubernetes cluster on SysEleven.

syseleven cluster settings

Important: Before Gefyra can connect from outside the cluster, you must set the security group of the nodes to allow UDP traffic on port 31820.

syseleven security group settings

Please set the direction to Ingress and the protocol to UDP. The port range should be set to 31820 and the source CIDR to 0.0.0.0/0. That way, Gefyra can connect to any data plane node of the cluster using a Floating-IP.

After all of the MetaKube components are ready, you can download the kubeconfig to access the cluster using kubectl. Just click on the “Download Config” button in the MetaKube management console and save the file to your local machine.

Running Gefyra

  1. You may apply some workload, for example from Gefyra’s testing directory:
    kubectl apply -f https://raw.githubusercontent.com/gefyrahq/gefyra/main/testing/workloads/hello_dd.yaml
    
  2. At first, we need a host IP of one of our nodes. You can get it by running:
    kubectl get nodes -o wide |  awk {'print $1" " $2 " " $7'} | column -t
    

    Pick one of them from the EXTERNAL-IP column.

  3. Now you can run gefyra up --host <IP> using the IP you just picked. This will create the Gefyra components in your cluster and local host.
  4. Run a local Docker image with Gefyra to make it part of the cluster.
    1. Build your Docker image with a local tag, for example from Gefyra’s testing directory (in the repo): cd testing/images/ && docker build -f Dockerfile.local . -t pyserver
    2. Execute Gefyra’s run command:
      gefyra run -i pyserver -N mypyserver -n default
    3. Exec into the running container and look around. You will find the container to run within your Kubernetes cluster.
      docker exec -it mypyserver bash wget -O- hello-nginx will print out the website of the cluster service hello-nginx from within the cluster.
  5. Create a bridge to intercept the traffic to the cluster application with the one running locally:
    gefyra bridge -N mypyserver -n default --port 80:8000 --target deploy/hello-nginxdemo/hello-nginx
  6. List all running bridges:
    gefyra list --bridges
  7. Unbridge the local container and reset the cluster to its original state: gefyra unbridge -N mypybridge

Cleaning up

Remove Gefyra’s components from the cluster with gefyra down