[{"data":1,"prerenderedAt":697},["ShallowReactive",2],{"navigation_docs_en":3,"-en-remote-k8s-sys11":175,"-en-remote-k8s-sys11-surround":692},[4,35,64,86,108,135,150],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":6},"Quick Start",false,"/en/quick-start","en/1.quick-start",[10,15,20,25,30],{"title":11,"path":12,"stem":13,"icon":14},"Introduction","/en/quick-start/introduction","en/1.quick-start/1.introduction","i-lucide-house",{"title":16,"path":17,"stem":18,"icon":19},"Installation","/en/quick-start/installation","en/1.quick-start/2.installation","i-lucide-download",{"title":21,"path":22,"stem":23,"icon":24},"Getting Started","/en/quick-start/getting-started","en/1.quick-start/3.getting-started","i-lucide-rocket",{"title":26,"path":27,"stem":28,"icon":29},"Docker Desktop Extension","/en/quick-start/docker-desktop-extension","en/1.quick-start/4.docker-desktop-extension","i-simple-icons-docker",{"title":31,"path":32,"stem":33,"icon":34},"CLI","/en/quick-start/cli","en/1.quick-start/5.cli","i-lucide-square-terminal",{"title":36,"path":37,"stem":38,"children":39,"page":6},"Local Environments","/en/local-environments","en/2.local-environments",[40,43,48,52,56,60],{"title":21,"path":41,"stem":42,"icon":24},"/en/local-environments/getting-started","en/2.local-environments/1.getting-started",{"title":44,"path":45,"stem":46,"icon":47},"Colima Kubernetes","/en/local-environments/colima","en/2.local-environments/2.colima","i-simple-icons-kubernetes",{"title":49,"path":50,"stem":51,"icon":29},"Docker Desktop Kubernetes (OSX)","/en/local-environments/docker-desktop-osx","en/2.local-environments/3.docker-desktop-osx",{"title":53,"path":54,"stem":55},"k3d","/en/local-environments/k3d","en/2.local-environments/4.k3d",{"title":57,"path":58,"stem":59},"kind","/en/local-environments/kind","en/2.local-environments/5.kind",{"title":61,"path":62,"stem":63},"minikube","/en/local-environments/minikube","en/2.local-environments/5.minikube",{"title":65,"path":66,"stem":67,"children":68,"page":6},"Shared Environments","/en/shared-environments","en/3.shared-environments",[69,72,76,81],{"title":21,"path":70,"stem":71,"icon":24},"/en/shared-environments/getting-started","en/3.shared-environments/1.getting-started",{"title":73,"path":74,"stem":75,"icon":19},"Installing Gefyra in a Cluster","/en/shared-environments/installation","en/3.shared-environments/2.installation",{"title":77,"path":78,"stem":79,"icon":80},"Managing Gefyra Clients","/en/shared-environments/clients","en/3.shared-environments/3.clients","i-lucide-computer",{"title":82,"path":83,"stem":84,"icon":85},"Connecting to Gefyra","/en/shared-environments/connecting","en/3.shared-environments/4.connecting","i-lucide-link",{"title":87,"path":88,"stem":89,"children":90,"page":6},"Remote K8s","/en/remote-k8s","en/4.remote-k8s",[91,94,99,104],{"title":21,"path":92,"stem":93,"icon":24},"/en/remote-k8s/getting-started","en/4.remote-k8s/1.getting-started",{"title":95,"path":96,"stem":97,"icon":98},"Google Cloud Platform (GCP)","/en/remote-k8s/gcp","en/4.remote-k8s/2.gcp","i-material-icon-theme:gcp",{"title":100,"path":101,"stem":102,"icon":103},"Elastic Kubernetes Service (EKS)","/en/remote-k8s/eks","en/4.remote-k8s/3.eks","i-simple-icons-amazoneks",{"title":105,"path":106,"stem":107,"icon":47},"SysEleven MetaKubde Kubernetes","/en/remote-k8s/sys11","en/4.remote-k8s/4.sys11",{"title":109,"path":110,"stem":111,"children":112,"page":6},"Use Cases and Demos","/en/usecases-and-demos","en/5.usecases-and-demos",[113,116,121,126,130],{"title":21,"path":114,"stem":115,"icon":24},"/en/usecases-and-demos/getting-started","en/5.usecases-and-demos/1.getting-started",{"title":117,"path":118,"stem":119,"icon":120},"Developing Go Applications with Gefyra","/en/usecases-and-demos/golang","en/5.usecases-and-demos/2.golang","i-simple-icons-go",{"title":122,"path":123,"stem":124,"icon":125},"OAuth2 Demo with a Sidecar","/en/usecases-and-demos/oauth2-demo","en/5.usecases-and-demos/3.oauth2-demo","i-devicon-plain:oauth",{"title":127,"path":128,"stem":129,"icon":98},"Remote Development on Google Kubernetes Engine","/en/usecases-and-demos/remote-gke","en/5.usecases-and-demos/4.remote-gke",{"title":131,"path":132,"stem":133,"icon":134},"Run an Ubuntu Container instance","/en/usecases-and-demos/ubuntu-in-namespace","en/5.usecases-and-demos/5.ubuntu-in-namespace","i-simple-icons-ubuntu",{"title":136,"path":137,"stem":138,"children":139,"page":6},"Technical Details","/en/technical-details","en/6.technical-details",[140,145],{"title":141,"path":142,"stem":143,"icon":144},"Architecture","/en/technical-details/architecture","en/6.technical-details/1.architecture","i-lucide-square-chevron-right",{"title":146,"path":147,"stem":148,"icon":149},"What is Gefyra?","/en/technical-details/what-is-gefyra","en/6.technical-details/2.what-is-gefyra","i-lucide-circle-question-mark",{"title":151,"path":152,"stem":153,"children":154,"page":6},"Information","/en/information","en/7.information",[155,160,165,170],{"title":156,"path":157,"stem":158,"icon":159},"Run vs. Bridge","/en/information/run-vs-bridge","en/7.information/1.run-vs-bridge","i-lucide-git-compare-arrows",{"title":161,"path":162,"stem":163,"icon":164},"What changed in Gefyra 2?","/en/information/v1-vs-v2","en/7.information/2.v1-vs-v2","i-lucide-history",{"title":166,"path":167,"stem":168,"icon":169},"Media","/en/information/media","en/7.information/3.media","i-lucide-play",{"title":171,"path":172,"stem":173,"icon":174},"About","/en/information/about","en/7.information/4.about","i-lucide-info",{"id":176,"title":177,"body":178,"description":685,"extension":686,"links":687,"meta":688,"navigation":689,"path":106,"seo":690,"stem":107,"__hash__":691},"docs_en/en/4.remote-k8s/4.sys11.md","Getting started with Gefyra and SysEleven MetaKube",{"type":179,"value":180,"toc":679},"minimark",[181,186,209,213,223,231,240,246,253,278,290,294,299,326,332,382,389,395,424,427,652,656,662,675],[182,183,185],"h2",{"id":184},"prerequisites","Prerequisites",[187,188,189,202],"ol",{},[190,191,192,193,201],"li",{},"You have a ",[194,195,200],"a",{"href":196,"rel":197,"target":199},"https://metakube.syseleven.de/",[198],"nofollow","_blank","MetaKube"," account and privileges to create a new cluster",[190,203,204,205,208],{},"Follow the ",[194,206,207],{"href":17},"installation"," of Gefyra for your preferred platform",[182,210,212],{"id":211},"setup-a-cluster","Setup a cluster",[214,215,216,217,222],"p",{},"You may follow ",[194,218,221],{"href":219,"rel":220,"target":199},"https://docs.syseleven.de/metakube/en/tutorials/create-a-cluster",[198],"this guide to create a cluster using the MetaKube management console",".",[214,224,225,226,230],{},"This guide assumes you are running an ",[227,228,229],"strong",{},"OpenStack","-based Kubernetes cluster on SysEleven.",[214,232,233],{},[234,235],"img",{"alt":236,"className":237,"src":239},"syseleven cluster settings",[238],"w-full","/img/sys11_image2.png",[214,241,242,245],{},[227,243,244],{},"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.",[214,247,248],{},[234,249],{"alt":250,"className":251,"src":252},"syseleven security group settings",[238],"/img/sys11_image1.png",[214,254,255,256,260,261,264,265,268,269,272,273,222],{},"Please set the direction to ",[257,258,259],"em",{},"Ingress"," and the protocol to ",[257,262,263],{},"UDP",". The port range should be set to ",[257,266,267],{},"31820"," and the source\nCIDR to ",[257,270,271],{},"0.0.0.0/0",". That way, Gefyra can connect to any data plane node of the cluster using a ",[194,274,277],{"href":275,"rel":276,"target":199},"https://docs.syseleven.de/syseleven-stack/en/reference/network",[198],"Floating-IP",[214,279,280,281,284,285,289],{},"After all of the MetaKube components are ready, you can download the ",[257,282,283],{},"kubeconfig"," to access the cluster using ",[286,287,288],"code",{},"kubectl",". Just click on the \"Download Config\" button in the MetaKube management console and save the file to your local machine.",[182,291,293],{"id":292},"running-gefyra","Running Gefyra",[187,295,296],{},[190,297,298],{},"You may apply some workload, for example from Gefyra's testing directory:",[300,301,306],"pre",{"className":302,"code":303,"language":304,"meta":305,"style":305},"language-sh shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","kubectl apply -f https://raw.githubusercontent.com/gefyrahq/gefyra/main/testing/workloads/hello_dd.yaml\n","sh","",[286,307,308],{"__ignoreMap":305},[309,310,313,316,320,323],"span",{"class":311,"line":312},"line",1,[309,314,288],{"class":315},"sBMFI",[309,317,319],{"class":318},"sfazB"," apply",[309,321,322],{"class":318}," -f",[309,324,325],{"class":318}," https://raw.githubusercontent.com/gefyrahq/gefyra/main/testing/workloads/hello_dd.yaml\n",[187,327,329],{"start":328},2,[190,330,331],{},"At first, we need a host IP of one of our nodes. You can get it by running:",[300,333,335],{"className":302,"code":334,"language":304,"meta":305,"style":305},"kubectl get nodes -o wide |  awk {'print $1\" \" $2 \" \" $7'} | column -t\n",[286,336,337],{"__ignoreMap":305},[309,338,339,341,344,347,350,353,357,360,363,366,369,371,374,376,379],{"class":311,"line":312},[309,340,288],{"class":315},[309,342,343],{"class":318}," get",[309,345,346],{"class":318}," nodes",[309,348,349],{"class":318}," -o",[309,351,352],{"class":318}," wide",[309,354,356],{"class":355},"sMK4o"," |",[309,358,359],{"class":315},"  awk",[309,361,362],{"class":318}," {",[309,364,365],{"class":355},"'",[309,367,368],{"class":318},"print $1\" \" $2 \" \" $7",[309,370,365],{"class":355},[309,372,373],{"class":318},"}",[309,375,356],{"class":355},[309,377,378],{"class":315}," column",[309,380,381],{"class":318}," -t\n",[214,383,384,385,388],{},"Pick one of them from the ",[286,386,387],{},"EXTERNAL-IP"," column.",[187,390,392],{"start":391},3,[190,393,394],{},"Now you can run",[300,396,398],{"className":302,"code":397,"language":304,"meta":305,"style":305},"gefyra up --host \u003CIP>\n",[286,399,400],{"__ignoreMap":305},[309,401,402,405,408,411,414,417,421],{"class":311,"line":312},[309,403,404],{"class":315},"gefyra",[309,406,407],{"class":318}," up",[309,409,410],{"class":318}," --host",[309,412,413],{"class":355}," \u003C",[309,415,416],{"class":318},"I",[309,418,420],{"class":419},"sTEyZ","P",[309,422,423],{"class":355},">\n",[214,425,426],{},"using the IP you just picked. This will create the Gefyra components in your cluster and local host.",[187,428,430],{"start":429},4,[190,431,432,433,438,475,480,510,518,539,548,564,570,603,613,628,637],{},"Run a local Docker image with Gefyra to make it part of the cluster.",[187,434,435],{},[190,436,437],{},"Build your Docker image with a local tag, for example from Gefyra's testing directory (in the repo):",[300,439,441],{"className":302,"code":440,"language":304,"meta":305,"style":305},"cd testing/images/ && docker build -f Dockerfile.local . -t pyserver\n",[286,442,443],{"__ignoreMap":305},[309,444,445,449,452,455,458,461,463,466,469,472],{"class":311,"line":312},[309,446,448],{"class":447},"s2Zo4","cd",[309,450,451],{"class":318}," testing/images/",[309,453,454],{"class":355}," &&",[309,456,457],{"class":315}," docker",[309,459,460],{"class":318}," build",[309,462,322],{"class":318},[309,464,465],{"class":318}," Dockerfile.local",[309,467,468],{"class":318}," .",[309,470,471],{"class":318}," -t",[309,473,474],{"class":318}," pyserver\n",[187,476,477],{"start":328},[190,478,479],{},"Execute Gefyra's run command:",[300,481,483],{"className":302,"code":482,"language":304,"meta":305,"style":305},"gefyra run -i pyserver -N mypyserver -n default\n",[286,484,485],{"__ignoreMap":305},[309,486,487,489,492,495,498,501,504,507],{"class":311,"line":312},[309,488,404],{"class":315},[309,490,491],{"class":318}," run",[309,493,494],{"class":318}," -i",[309,496,497],{"class":318}," pyserver",[309,499,500],{"class":318}," -N",[309,502,503],{"class":318}," mypyserver",[309,505,506],{"class":318}," -n",[309,508,509],{"class":318}," default\n",[187,511,512],{"start":391},[190,513,514,517],{},[257,515,516],{},"Exec"," into the running container and look around. You will find the container to run within your Kubernetes cluster.",[300,519,521],{"className":302,"code":520,"language":304,"meta":305,"style":305},"docker exec -it mypyserver bash\n",[286,522,523],{"__ignoreMap":305},[309,524,525,528,531,534,536],{"class":311,"line":312},[309,526,527],{"class":315},"docker",[309,529,530],{"class":318}," exec",[309,532,533],{"class":318}," -it",[309,535,503],{"class":318},[309,537,538],{"class":318}," bash\n",[187,540,541],{"start":429},[190,542,543,544,547],{},"Print out the website of the cluster service ",[257,545,546],{},"hello-nginx"," from within the cluster.",[300,549,551],{"className":302,"code":550,"language":304,"meta":305,"style":305},"wget -O- hello-nginx\n",[286,552,553],{"__ignoreMap":305},[309,554,555,558,561],{"class":311,"line":312},[309,556,557],{"class":315},"wget",[309,559,560],{"class":318}," -O-",[309,562,563],{"class":318}," hello-nginx\n",[187,565,567],{"start":566},5,[190,568,569],{},"Create a bridge to redirect the traffic from the cluster application to the one running locally:",[300,571,573],{"className":302,"code":572,"language":304,"meta":305,"style":305},"gefyra bridge -N mypyserver -n default --ports 80:8000 --target deploy/hello-nginxdemo/hello-nginx\n",[286,574,575],{"__ignoreMap":305},[309,576,577,579,582,584,586,588,591,594,597,600],{"class":311,"line":312},[309,578,404],{"class":315},[309,580,581],{"class":318}," bridge",[309,583,500],{"class":318},[309,585,503],{"class":318},[309,587,506],{"class":318},[309,589,590],{"class":318}," default",[309,592,593],{"class":318}," --ports",[309,595,596],{"class":318}," 80:8000",[309,598,599],{"class":318}," --target",[309,601,602],{"class":318}," deploy/hello-nginxdemo/hello-nginx\n",[187,604,606],{"start":605},6,[190,607,608,609,612],{},"List all running ",[257,610,611],{},"bridges",":",[300,614,616],{"className":302,"code":615,"language":304,"meta":305,"style":305},"gefyra list --bridges\n",[286,617,618],{"__ignoreMap":305},[309,619,620,622,625],{"class":311,"line":312},[309,621,404],{"class":315},[309,623,624],{"class":318}," list",[309,626,627],{"class":318}," --bridges\n",[187,629,631],{"start":630},7,[190,632,633,636],{},[257,634,635],{},"Unbridge"," the local container and reset the cluster to its original state:",[300,638,640],{"className":302,"code":639,"language":304,"meta":305,"style":305},"gefyra unbridge --all\n",[286,641,642],{"__ignoreMap":305},[309,643,644,646,649],{"class":311,"line":312},[309,645,404],{"class":315},[309,647,648],{"class":318}," unbridge",[309,650,651],{"class":318}," --all\n",[182,653,655],{"id":654},"cleaning-up","Cleaning up",[214,657,658,659],{},"Remove Gefyra's components from the cluster with ",[286,660,661],{},"gefyra down",[663,664,665,669,670,222],"card",{},[666,667,668],"template",{"v-slot:title":305},"Please provide us with your feedback","Did everything work as expected? How was the experience of using Gefyra? We'd appreciate if you could take 2 minutes of your time to fill out our ",[194,671,674],{"href":672,"rel":673,"target":199},"https://forms.gle/AWT9NparpTVk8E978",[198],"feedback form",[676,677,678],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}",{"title":305,"searchDepth":328,"depth":328,"links":680},[681,682,683,684],{"id":184,"depth":328,"text":185},{"id":211,"depth":328,"text":212},{"id":292,"depth":328,"text":293},{"id":654,"depth":328,"text":655},"This guide will show you how to use Gefyra for the remote development of a Kubernetes application running on MetaKube.","md",null,{},{"icon":47,"title":105},{"title":177,"description":685},"18Oqit8nB1H3WjEqHIgAk6Pwpmd4oRIcd-wB2Ubl5C0",[693,695],{"title":100,"path":101,"stem":102,"description":694,"icon":103,"children":-1},"This guide will show you how to use Gefyra for the remote development of a Kubernetes application running on Elastic Kubernetes Service (EKS).",{"title":21,"path":114,"stem":115,"description":696,"icon":24,"children":-1},"This chapter contains example use cases and demos. Feel free to adapt these architectures to your applications.",1775752112194]