[{"data":1,"prerenderedAt":314},["ShallowReactive",2],{"navigation_docs_en":3,"-en-technical-details-what-is-gefyra":175,"-en-technical-details-what-is-gefyra-surround":309},[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":146,"body":177,"description":302,"extension":303,"links":304,"meta":305,"navigation":306,"path":147,"seo":307,"stem":148,"__hash__":308},"docs_en/en/6.technical-details/2.what-is-gefyra.md",{"type":178,"value":179,"toc":295},"minimark",[180,190,198,201,226,229,232,237,244,248,288,292],[181,182,183],"p",{},[184,185],"img",{"alt":186,"className":187,"src":189},"Gefyra controls docker and kubeapi",[188],"mx-auto","/img/gefyra-intro.png",[181,191,192,193,197],{},"(",[194,195,196],"em",{},"Kubectl"," is not really required but kinda makes sense to be in this picture)",[181,199,200],{},"In order for this to work, a few requirements have to be satisfied:",[202,203,204,217,220,223],"ul",{},[205,206,207,208,216],"li",{},"a Docker host must be available for the user on the development machine (it is convenient if ",[209,210,215],"a",{"href":211,"rel":212,"target":214},"https://docs.docker.com/engine/install/linux-postinstall/#manage-docker-as-a-non-root-user",[213],"nofollow","_blank","docker can be run without sudo-privileges",")",[205,218,219],{},"Overlay networking must be supported by the Docker host",[205,221,222],{},"there are a few container capabilities required on both sides, within the Kubernetes cluster and on the local computer",[205,224,225],{},"a node port must be opened on the development cluster for the duration of the development work",[181,227,228],{},"Gefyra makes sure your development container runs as part of the cluster while you still have full access to it. In addition,\nGefyra is able to intercept the target application running within the cluster, i.e. a container in a Pod, and tunnels all traffic hitting said container to the one running\nlocally.",[181,230,231],{},"Now, developers can add new code or fix bugs and run it right away in the Kubernetes cluster, or simply introspect the traffic.\nGefyra provides the entire infrastructure to do so and provides a high level of developer convenience.",[233,234,236],"h2",{"id":235},"did-i-hear-developer-convenience","Did I hear developer convenience?",[181,238,239,240,243],{},"The idea is to relieve developers from the hassle to go back and forth to the integration system with containers. Instead, take\nthe integration system closer to the developer and make the development cycles as short as possible. No more waiting for the CI to complete\njust to see the service failing on the first request. Cloud-native (or Kubernetes-native) technologies have completely changed the\ndeveloper experience: infrastructure is increasingly becoming part of developer's business with all the barriers and obstacles, but also chances\nto turn the software for the better.",[241,242],"br",{},"\nGefyra is here to provide a development workflow with the highest convenience possible. It brings low setup times, rapid development,\nhigh release cadence and super-satisfied managers.",[233,245,247],{"id":246},"gotchas-current-limitations","Gotchas & Current Limitations",[202,249,250,263,274,285],{},[205,251,252,253,257,258,262],{},"Gefyra's VPN needs a reachable ",[254,255,256],"code",{},"NodePort",". In most non-local Kubernetes scenarios this requires to set a firewall rule\nin order to ",[259,260,261],"strong",{},"allow port 31820 for UDP traffic",". It's simple for most Cloud-providers (\"Hyperscaler\") and\ndoable for custom installations, too.",[205,264,265,266,269,270,273],{},"Kubernetes-probes can be faked by Gefyra's Pod component (\"Carrier\") in order to keep Kubernetes from removing ",[194,267,268],{},"bridged"," Pods.\nHowever, this is currently only supported for ",[254,271,272],{},"httpGet"," probes. Otherwise, you need to turn off probes during development.",[205,275,276,277,280,281,284],{},"You will experience issues if you want to ",[194,278,279],{},"bridge"," containers in Pods which specify a specific ",[254,282,283],{},"command"," (other than common shells).",[205,286,287],{},"This project is in a quite early stage. I assume there are still a few bugs around.",[233,289,291],{"id":290},"why-gefyra","Why \"Gefyra\"?",[181,293,294],{},"\"Gefyra\" is the Greek word for \"Bridge\" and fits nicely with Kubernetes' nautical theme.",{"title":296,"searchDepth":297,"depth":297,"links":298},"",2,[299,300,301],{"id":235,"depth":297,"text":236},{"id":246,"depth":297,"text":247},{"id":290,"depth":297,"text":291},"Gefyra is a toolkit written in Python to organize a local development infrastructure in order to produce software for and with Kubernetes while having fun. It is installed on any development computer and starts its work when it is asked. Gefyra runs as a user-space application and controls the local Docker host and Kubernetes via Kubernetes Python Client.","md",null,{},{"icon":149},{"title":146,"description":302},"vXw04i-6yk0pVJu4oD5WxZMUYGeJhlRwTAXCf_AhLjU",[310,312],{"title":141,"path":142,"stem":143,"description":311,"icon":144,"children":-1},"In order to write software for and with Kubernetes, obviously a Kubernetes cluster is required. There are already a number of Kubernetes distributions available to run everything locally. A cloud-based Kubernetes cluster can be connected as well in order to spare the development computer from blasting off. A working KUBECONFIG connection is required with appropriate permissions which should always be the case for local clusters. Gefyra installs the required cluster-side components by itself once a development setup is about to be established.",{"title":156,"path":157,"stem":158,"description":313,"icon":159,"children":-1},"Gefyra support two modes of operation: run and bridge. Let's dive into the differences.",1775752112350]