[{"data":1,"prerenderedAt":704},["ShallowReactive",2],{"navigation_docs_en":3,"-en-local-environments-docker-desktop-osx":175,"-en-local-environments-docker-desktop-osx-surround":699},[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":692,"extension":693,"links":694,"meta":695,"navigation":696,"path":50,"seo":697,"stem":51,"__hash__":698},"docs_en/en/2.local-environments/3.docker-desktop-osx.md","Getting started with Gefyra and Docker Desktop Kubernetes on MacOS",{"type":179,"value":180,"toc":680},"minimark",[181,194,200,203,208,223,230,236,265,271,289,299,342,348,364,372,378,383,396,401,416,420,425,430,467,473,502,511,543,546,550,583,589,597,612,620,637,643,647,650,662,676],[182,183,184],"p",{},[185,186,187,188,193],"strong",{},"Try out our ",[189,190,26],"a",{"href":191,"target":192},"en/quick-start/docker-desktop-extension","_blank","!",[182,195,196,199],{},[185,197,198],{},"Note:"," Gefyra works the same for different Kubernetes distributions. Docker Desktop doesn't come with an ingress installed which must be added to the cluster to get things working.",[182,201,202],{},"You can easily try Gefyra yourself following this small example.",[204,205,207],"h2",{"id":206},"prerequisites","Prerequisites",[209,210,211,220],"ol",{},[212,213,214,215,219],"li",{},"Follow the ",[189,216,218],{"href":217},"/en/quick-start/installation/","installation"," for MacOS.",[212,221,222],{},"Start the Kubernetes cluster that comes with Docker Desktop. This may take moment.",[182,224,225],{},[226,227],"img",{"alt":228,"src":229},"docker desktop kubernetes settings","/img/getting_started_docker_desktop_kubernetes.png",[209,231,233],{"start":232},3,[212,234,235],{},"Tell kubectl to use your docker-desktop cluster:",[237,238,243],"pre",{"className":239,"code":240,"language":241,"meta":242,"style":242},"language-sh shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","kubectl config use-context docker-desktop\n","sh","",[244,245,246],"code",{"__ignoreMap":242},[247,248,251,255,259,262],"span",{"class":249,"line":250},"line",1,[247,252,254],{"class":253},"sBMFI","kubectl",[247,256,258],{"class":257},"sfazB"," config",[247,260,261],{"class":257}," use-context",[247,263,264],{"class":257}," docker-desktop\n",[209,266,268],{"start":267},4,[212,269,270],{},"Install an ingress to enable routing for the cluster. For this guide we use the nginx\ningress controller like this:",[237,272,274],{"className":239,"code":273,"language":241,"meta":242,"style":242},"kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.2.1/deploy/static/provider/cloud/deploy.yaml\n",[244,275,276],{"__ignoreMap":242},[247,277,278,280,283,286],{"class":249,"line":250},[247,279,254],{"class":253},[247,281,282],{"class":257}," apply",[247,284,285],{"class":257}," -f",[247,287,288],{"class":257}," https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.2.1/deploy/static/provider/cloud/deploy.yaml\n",[209,290,292],{"start":291},5,[212,293,294,295,298],{},"Now patch the nginx ingress controller service to make port ",[244,296,297],{},"8080"," available:",[237,300,302],{"className":239,"code":301,"language":241,"meta":242,"style":242},"kubectl patch svc -n ingress-nginx ingress-nginx-controller -p '{\"spec\": {\"ports\": [{\"appProtocol\": \"http\", \"name\": \"http\", \"port\": 8080, \"protocol\": \"TCP\", \"targetPort\": \"http\"}]}}' --type merge\n",[244,303,304],{"__ignoreMap":242},[247,305,306,308,311,314,317,320,323,326,330,333,336,339],{"class":249,"line":250},[247,307,254],{"class":253},[247,309,310],{"class":257}," patch",[247,312,313],{"class":257}," svc",[247,315,316],{"class":257}," -n",[247,318,319],{"class":257}," ingress-nginx",[247,321,322],{"class":257}," ingress-nginx-controller",[247,324,325],{"class":257}," -p",[247,327,329],{"class":328},"sMK4o"," '",[247,331,332],{"class":257},"{\"spec\": {\"ports\": [{\"appProtocol\": \"http\", \"name\": \"http\", \"port\": 8080, \"protocol\": \"TCP\", \"targetPort\": \"http\"}]}}",[247,334,335],{"class":328},"'",[247,337,338],{"class":257}," --type",[247,340,341],{"class":257}," merge\n",[209,343,345],{"start":344},6,[212,346,347],{},"Apply some workload, for example from the testing directory of this repo:",[237,349,351],{"className":239,"code":350,"language":241,"meta":242,"style":242},"kubectl apply -f https://raw.githubusercontent.com/gefyrahq/gefyra/main/testing/workloads/hello_dd.yaml\n",[244,352,353],{"__ignoreMap":242},[247,354,355,357,359,361],{"class":249,"line":250},[247,356,254],{"class":253},[247,358,282],{"class":257},[247,360,285],{"class":257},[247,362,363],{"class":257}," https://raw.githubusercontent.com/gefyrahq/gefyra/main/testing/workloads/hello_dd.yaml\n",[182,365,366,367],{},"Check out this workload running under: ",[189,368,369],{"href":369,"target":192,"rel":370},"http://hello.127.0.0.1.nip.io:8080/",[371],"nofollow",[209,373,375],{"start":374},7,[212,376,377],{},"Set up Gefyra with the following command:",[182,379,380],{},[185,381,382],{},"For Docker Desktop \u003C4.16.x:",[237,384,386],{"className":239,"code":385,"language":241,"meta":242,"style":242},"gefyra up\n",[244,387,388],{"__ignoreMap":242},[247,389,390,393],{"class":249,"line":250},[247,391,392],{"class":253},"gefyra",[247,394,395],{"class":257}," up\n",[182,397,398],{},[185,399,400],{},"For Docker Desktop >=4.16.x:",[237,402,404],{"className":239,"code":403,"language":241,"meta":242,"style":242},"gefyra up --host=kubernetes.docker.internal\n",[244,405,406],{"__ignoreMap":242},[247,407,408,410,413],{"class":249,"line":250},[247,409,392],{"class":253},[247,411,412],{"class":257}," up",[247,414,415],{"class":257}," --host=kubernetes.docker.internal\n",[204,417,419],{"id":418},"running-gefyra","Running Gefyra",[421,422,424],"h3",{"id":423},"_1-run-a-local-docker-image-with-gefyra-in-order-to-make-it-part-of-the-cluster","1. Run a local Docker image with Gefyra in order to make it part of the cluster.",[209,426,427],{},[212,428,429],{},"Build your Docker image with a local tag, for example from the testing directory:",[237,431,433],{"className":239,"code":432,"language":241,"meta":242,"style":242},"cd testing/images/ && docker build -f Dockerfile.local . -t pyserver\n",[244,434,435],{"__ignoreMap":242},[247,436,437,441,444,447,450,453,455,458,461,464],{"class":249,"line":250},[247,438,440],{"class":439},"s2Zo4","cd",[247,442,443],{"class":257}," testing/images/",[247,445,446],{"class":328}," &&",[247,448,449],{"class":253}," docker",[247,451,452],{"class":257}," build",[247,454,285],{"class":257},[247,456,457],{"class":257}," Dockerfile.local",[247,459,460],{"class":257}," .",[247,462,463],{"class":257}," -t",[247,465,466],{"class":257}," pyserver\n",[209,468,470],{"start":469},2,[212,471,472],{},"Execute Gefyra's run command:",[237,474,476],{"className":239,"code":475,"language":241,"meta":242,"style":242},"gefyra run -i pyserver -N mypyserver -n default\n",[244,477,478],{"__ignoreMap":242},[247,479,480,482,485,488,491,494,497,499],{"class":249,"line":250},[247,481,392],{"class":253},[247,483,484],{"class":257}," run",[247,486,487],{"class":257}," -i",[247,489,490],{"class":257}," pyserver",[247,492,493],{"class":257}," -N",[247,495,496],{"class":257}," mypyserver",[247,498,316],{"class":257},[247,500,501],{"class":257}," default\n",[209,503,504],{"start":232},[212,505,506,510],{},[507,508,509],"em",{},"exec"," into the running container and look around. You will find the container to run within your Kubernetes cluster.",[237,512,514],{"className":239,"code":513,"language":241,"meta":242,"style":242},"docker exec -it mypyserver bash\nwget -O- hello-nginx\n",[244,515,516,532],{"__ignoreMap":242},[247,517,518,521,524,527,529],{"class":249,"line":250},[247,519,520],{"class":253},"docker",[247,522,523],{"class":257}," exec",[247,525,526],{"class":257}," -it",[247,528,496],{"class":257},[247,530,531],{"class":257}," bash\n",[247,533,534,537,540],{"class":249,"line":469},[247,535,536],{"class":253},"wget",[247,538,539],{"class":257}," -O-",[247,541,542],{"class":257}," hello-nginx\n",[182,544,545],{},"will print out the website of the cluster service hello-nginx from within the cluster.",[421,547,549],{"id":548},"_2-create-a-bridge-in-order-to-intercept-the-traffic-to-the-cluster-application-with-the-one-running-locally","2. Create a bridge in order to intercept the traffic to the cluster application with the one running locally",[237,551,553],{"className":239,"code":552,"language":241,"meta":242,"style":242},"gefyra bridge -N mypyserver -n default --port 8000:80 --target deploy/hello-nginxdemo/hello-nginx\n\n",[244,554,555],{"__ignoreMap":242},[247,556,557,559,562,564,566,568,571,574,577,580],{"class":249,"line":250},[247,558,392],{"class":253},[247,560,561],{"class":257}," bridge",[247,563,493],{"class":257},[247,565,496],{"class":257},[247,567,316],{"class":257},[247,569,570],{"class":257}," default",[247,572,573],{"class":257}," --port",[247,575,576],{"class":257}," 8000:80",[247,578,579],{"class":257}," --target",[247,581,582],{"class":257}," deploy/hello-nginxdemo/hello-nginx\n",[182,584,585,586],{},"Check out the locally running server comes up under: ",[189,587,369],{"href":369,"target":192,"rel":588},[371],[421,590,592,593,596],{"id":591},"_3-list-all-running-bridges","3. List all running ",[507,594,595],{},"bridges",":",[237,598,600],{"className":239,"code":599,"language":241,"meta":242,"style":242},"gefyra list --bridges\n",[244,601,602],{"__ignoreMap":242},[247,603,604,606,609],{"class":249,"line":250},[247,605,392],{"class":253},[247,607,608],{"class":257}," list",[247,610,611],{"class":257}," --bridges\n",[421,613,615,616,619],{"id":614},"_4-unbridge-the-local-container-and-reset-the-cluster-to-its-original-state","4. ",[507,617,618],{},"Unbridge"," the local container and reset the cluster to its original state:",[237,621,623],{"className":239,"code":622,"language":241,"meta":242,"style":242},"gefyra unbridge -N mypybridge\n",[244,624,625],{"__ignoreMap":242},[247,626,627,629,632,634],{"class":249,"line":250},[247,628,392],{"class":253},[247,630,631],{"class":257}," unbridge",[247,633,493],{"class":257},[247,635,636],{"class":257}," mypybridge\n",[182,638,639,640],{},"Check out the initial response from: ",[189,641,369],{"href":369,"target":192,"rel":642},[371],[204,644,646],{"id":645},"cleaning-up","Cleaning up",[182,648,649],{},"Remove Gefyra's components from the cluster with",[237,651,653],{"className":239,"code":652,"language":241,"meta":242,"style":242},"gefyra down\n",[244,654,655],{"__ignoreMap":242},[247,656,657,659],{"class":249,"line":250},[247,658,392],{"class":253},[247,660,661],{"class":257}," down\n",[663,664,665,669,670,675],"card",{},[666,667,668],"template",{"v-slot:title":242},"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 ",[189,671,674],{"href":672,"target":192,"rel":673},"https://forms.gle/AWT9NparpTVk8E978",[371],"feedback form",".",[677,678,679],"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 .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}",{"title":242,"searchDepth":469,"depth":469,"links":681},[682,683,691],{"id":206,"depth":469,"text":207},{"id":418,"depth":469,"text":419,"children":684},[685,686,687,689],{"id":423,"depth":232,"text":424},{"id":548,"depth":232,"text":549},{"id":591,"depth":232,"text":688},"3. List all running bridges:",{"id":614,"depth":232,"text":690},"4. Unbridge the local container and reset the cluster to its original state:",{"id":645,"depth":469,"text":646},"This example is really similar to the k3d getting started guide. However, Docker Desktop's Kubernetes comes with some specialities which must be taken care of to make this guide work.","md",null,{},{"title":49,"icon":29},{"title":177,"description":692},"jVqjQ3oKUddIvDNDNcKgi2V0TJq6roI1NkuTDTBo14c",[700,702],{"title":44,"path":45,"stem":46,"description":701,"icon":47,"children":-1},"This guide will show you how to use Gefyra for the local development of a Kubernetes application running in Colima Kubernetes.",{"title":53,"path":54,"stem":55,"description":703,"children":-1},"This guide will show you how to use Gefyra for the local development of a Kubernetes application running in k3d.",1775752109073]