[{"data":1,"prerenderedAt":1339},["ShallowReactive",2],{"navigation_docs_en":3,"-en-local-environments-k3d":175,"-en-local-environments-k3d-surround":1334},[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":1327,"extension":1328,"links":1329,"meta":1330,"navigation":1331,"path":54,"seo":1332,"stem":55,"__hash__":1333},"docs_en/en/2.local-environments/4.k3d.md","Getting started with Gefyra and k3d",{"type":179,"value":180,"toc":1307},"minimark",[181,186,209,222,226,234,239,284,291,295,313,320,324,328,341,345,350,401,1039,1047,1051,1084,1098,1107,1128,1144,1151,1155,1188,1195,1203,1206,1221,1224,1232,1247,1250,1254,1257,1269,1273,1290,1303],[182,183,185],"h2",{"id":184},"prerequisites","Prerequisites",[187,188,189,202],"ol",{},[190,191,192,193,201],"li",{},"K3d is ",[194,195,200],"a",{"href":196,"rel":197,"target":199},"https://k3d.io/#installation",[198],"nofollow","_blank","installed"," (at least in version v5.4.9)",[190,203,204,205,208],{},"Gefyra is ",[194,206,207],{"href":17},"available"," (at least in version 2.0.0)",[210,211,212,216,217,221],"p",{},[213,214,215],"strong",{},"Hint"," there is a bug in Docker Desktop v4.17-v4.18 which causes ",[218,219,220],"code",{},"gefyra up"," to fail with k3d clusters that run on that DD version.",[182,223,225],{"id":224},"creating-a-local-kubernetes-cluster","Creating a local Kubernetes cluster",[210,227,228],{},[229,230],"img",{"alt":61,"className":231,"src":233},[232],"w-full","https://gefyra.dev/img/minikube2.gif",[235,236,238],"h3",{"id":237},"_1-create-a-local-kubernetes-cluster-with-k3d-by-running","1. Create a local Kubernetes cluster with k3d by running:",[240,241,246],"pre",{"className":242,"code":243,"language":244,"meta":245,"style":245},"language-sh shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","k3d cluster create mycluster --agents 1 -p 8080:80@agent:0 -p 31820:31820/UDP@agent:0\n","sh","",[218,247,248],{"__ignoreMap":245},[249,250,253,256,260,263,266,269,273,276,279,281],"span",{"class":251,"line":252},"line",1,[249,254,53],{"class":255},"sBMFI",[249,257,259],{"class":258},"sfazB"," cluster",[249,261,262],{"class":258}," create",[249,264,265],{"class":258}," mycluster",[249,267,268],{"class":258}," --agents",[249,270,272],{"class":271},"sbssI"," 1",[249,274,275],{"class":258}," -p",[249,277,278],{"class":258}," 8080:80@agent:0",[249,280,275],{"class":258},[249,282,283],{"class":258}," 31820:31820/UDP@agent:0\n",[210,285,286,287,290],{},"This creates a Kubernetes cluster that binds port 8080 and 31820 to localhost. The ",[218,288,289],{},"kubectl"," context is immediately set to this cluster.",[235,292,294],{"id":293},"_2-apply-some-workload-for-example-from-the-testing-directory-of-this-repo","2. Apply some workload, for example from the testing directory of this repo:",[240,296,298],{"className":242,"code":297,"language":244,"meta":245,"style":245},"kubectl apply -f https://raw.githubusercontent.com/gefyrahq/gefyra/main/testing/workloads/hello.yaml\n",[218,299,300],{"__ignoreMap":245},[249,301,302,304,307,310],{"class":251,"line":252},[249,303,289],{"class":255},[249,305,306],{"class":258}," apply",[249,308,309],{"class":258}," -f",[249,311,312],{"class":258}," https://raw.githubusercontent.com/gefyrahq/gefyra/main/testing/workloads/hello.yaml\n",[210,314,315,316],{},"Check out this workload running under: ",[194,317,318],{"href":318,"rel":319,"target":199},"http://hello.127.0.0.1.nip.io:8080/",[198],[182,321,323],{"id":322},"running-gefyra","Running Gefyra",[235,325,327],{"id":326},"_1-set-up-gefyra-with-your-k3d-cluster","1. Set up Gefyra with your k3d cluster:",[240,329,331],{"className":242,"code":330,"language":244,"meta":245,"style":245},"gefyra up\n",[218,332,333],{"__ignoreMap":245},[249,334,335,338],{"class":251,"line":252},[249,336,337],{"class":255},"gefyra",[249,339,340],{"class":258}," up\n",[235,342,344],{"id":343},"_2-run-a-local-docker-container-with-gefyra-in-order-to-connect-it-with-the-cluster","2. Run a local Docker container with Gefyra in order to connect it with the cluster.",[346,347,349],"h4",{"id":348},"_21-build-a-simple-docker-image-with-a-local-tag-save-the-following-two-files-in-a-directory-on-your-disk","2.1 Build a simple Docker image with a local tag. Save the following two files in a directory on your disk.",[240,351,356],{"className":352,"code":353,"filename":354,"language":355,"meta":245,"style":245},"language-dockerfile shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","FROM ubuntu\n# run a server on port 8000\nRUN apt update && apt install -y iproute2 iputils-ping python3 traceroute wget curl\nCOPY local.py local.py\nCMD python3 local.py\n","Dockerfile","dockerfile",[218,357,358,367,374,383,392],{"__ignoreMap":245},[249,359,360,363],{"class":251,"line":252},[249,361,362],{"class":271},"FROM",[249,364,366],{"class":365},"sTEyZ"," ubuntu\n",[249,368,370],{"class":251,"line":369},2,[249,371,373],{"class":372},"sHwdD","# run a server on port 8000\n",[249,375,377,380],{"class":251,"line":376},3,[249,378,379],{"class":271},"RUN",[249,381,382],{"class":365}," apt update && apt install -y iproute2 iputils-ping python3 traceroute wget curl\n",[249,384,386,389],{"class":251,"line":385},4,[249,387,388],{"class":271},"COPY",[249,390,391],{"class":365}," local.py local.py\n",[249,393,395,398],{"class":251,"line":394},5,[249,396,397],{"class":271},"CMD",[249,399,400],{"class":365}," python3 local.py\n",[402,403,404],"code-collapse",{},[240,405,410],{"className":406,"code":407,"filename":408,"language":409,"meta":245,"style":245},"language-py shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import http.server\nimport signal\nimport socket\nimport socketserver\nimport sys\nfrom datetime import datetime\n\nif sys.argv[1:]:\n   port = int(sys.argv[1])\nelse:\n   port = 8000\n\nclass MyHttpRequestHandler(http.server.SimpleHTTPRequestHandler):\n   def do_GET(self):\n      self.send_response(200)\n      self.send_header(\"Content-type\", \"text/html\")\n      self.end_headers()\n      hostname = socket.gethostname()\n      now = datetime.utcnow()\n      self.wfile.write(\n            bytes(\n               f\"\u003Chtml>\u003Cbody>\u003Ch1>Hello from Gefyra. It is {now} on\"\n               f\" {hostname}.\u003C/h1>\u003C/body>\u003C/html>\".encode(\"utf-8\")\n            )\n      )\n\nmy_handler = MyHttpRequestHandler\nserver = socketserver.ThreadingTCPServer((\"\", port), my_handler)\n\ndef signal_handler(signal, frame):\n   try:\n      if server:\n            server.server_close()\n   finally:\n      sys.exit(0)\n\nsignal.signal(signal.SIGINT, signal_handler)\ntry:\n   while True:\n      sys.stdout.flush()\n      server.serve_forever()\nexcept KeyboardInterrupt:\n   pass\n\nserver.server_close()\n","local.py","py",[218,411,412,429,436,443,450,457,471,478,501,531,540,550,555,583,600,619,652,665,683,701,719,727,748,782,788,794,799,810,845,850,872,880,891,904,912,930,935,959,967,976,993,1006,1017,1023,1028],{"__ignoreMap":245},[249,413,414,418,421,425],{"class":251,"line":252},[249,415,417],{"class":416},"s7zQu","import",[249,419,420],{"class":365}," http",[249,422,424],{"class":423},"sMK4o",".",[249,426,428],{"class":427},"swJcz","server\n",[249,430,431,433],{"class":251,"line":369},[249,432,417],{"class":416},[249,434,435],{"class":365}," signal\n",[249,437,438,440],{"class":251,"line":376},[249,439,417],{"class":416},[249,441,442],{"class":365}," socket\n",[249,444,445,447],{"class":251,"line":385},[249,446,417],{"class":416},[249,448,449],{"class":365}," socketserver\n",[249,451,452,454],{"class":251,"line":394},[249,453,417],{"class":416},[249,455,456],{"class":365}," sys\n",[249,458,460,463,466,468],{"class":251,"line":459},6,[249,461,462],{"class":416},"from",[249,464,465],{"class":365}," datetime ",[249,467,417],{"class":416},[249,469,470],{"class":365}," datetime\n",[249,472,474],{"class":251,"line":473},7,[249,475,477],{"emptyLinePlaceholder":476},true,"\n",[249,479,481,484,487,489,492,495,498],{"class":251,"line":480},8,[249,482,483],{"class":416},"if",[249,485,486],{"class":365}," sys",[249,488,424],{"class":423},[249,490,491],{"class":427},"argv",[249,493,494],{"class":423},"[",[249,496,497],{"class":271},"1",[249,499,500],{"class":423},":]:\n",[249,502,504,507,510,513,516,520,522,524,526,528],{"class":251,"line":503},9,[249,505,506],{"class":365},"   port ",[249,508,509],{"class":423},"=",[249,511,512],{"class":255}," int",[249,514,515],{"class":423},"(",[249,517,519],{"class":518},"s2Zo4","sys",[249,521,424],{"class":423},[249,523,491],{"class":427},[249,525,494],{"class":423},[249,527,497],{"class":271},[249,529,530],{"class":423},"])\n",[249,532,534,537],{"class":251,"line":533},10,[249,535,536],{"class":416},"else",[249,538,539],{"class":423},":\n",[249,541,543,545,547],{"class":251,"line":542},11,[249,544,506],{"class":365},[249,546,509],{"class":423},[249,548,549],{"class":271}," 8000\n",[249,551,553],{"class":251,"line":552},12,[249,554,477],{"emptyLinePlaceholder":476},[249,556,558,562,565,567,570,572,575,577,580],{"class":251,"line":557},13,[249,559,561],{"class":560},"spNyl","class",[249,563,564],{"class":255}," MyHttpRequestHandler",[249,566,515],{"class":423},[249,568,569],{"class":255},"http",[249,571,424],{"class":423},[249,573,574],{"class":255},"server",[249,576,424],{"class":423},[249,578,579],{"class":255},"SimpleHTTPRequestHandler",[249,581,582],{"class":423},"):\n",[249,584,586,589,592,594,598],{"class":251,"line":585},14,[249,587,588],{"class":560},"   def",[249,590,591],{"class":518}," do_GET",[249,593,515],{"class":423},[249,595,597],{"class":596},"s5tWE","self",[249,599,582],{"class":423},[249,601,603,606,608,611,613,616],{"class":251,"line":602},15,[249,604,605],{"class":365},"      self",[249,607,424],{"class":423},[249,609,610],{"class":518},"send_response",[249,612,515],{"class":423},[249,614,615],{"class":271},"200",[249,617,618],{"class":423},")\n",[249,620,622,624,626,629,631,634,637,639,642,645,648,650],{"class":251,"line":621},16,[249,623,605],{"class":365},[249,625,424],{"class":423},[249,627,628],{"class":518},"send_header",[249,630,515],{"class":423},[249,632,633],{"class":423},"\"",[249,635,636],{"class":258},"Content-type",[249,638,633],{"class":423},[249,640,641],{"class":423},",",[249,643,644],{"class":423}," \"",[249,646,647],{"class":258},"text/html",[249,649,633],{"class":423},[249,651,618],{"class":423},[249,653,655,657,659,662],{"class":251,"line":654},17,[249,656,605],{"class":365},[249,658,424],{"class":423},[249,660,661],{"class":518},"end_headers",[249,663,664],{"class":423},"()\n",[249,666,668,671,673,676,678,681],{"class":251,"line":667},18,[249,669,670],{"class":365},"      hostname ",[249,672,509],{"class":423},[249,674,675],{"class":365}," socket",[249,677,424],{"class":423},[249,679,680],{"class":518},"gethostname",[249,682,664],{"class":423},[249,684,686,689,691,694,696,699],{"class":251,"line":685},19,[249,687,688],{"class":365},"      now ",[249,690,509],{"class":423},[249,692,693],{"class":365}," datetime",[249,695,424],{"class":423},[249,697,698],{"class":518},"utcnow",[249,700,664],{"class":423},[249,702,704,706,708,711,713,716],{"class":251,"line":703},20,[249,705,605],{"class":365},[249,707,424],{"class":423},[249,709,710],{"class":427},"wfile",[249,712,424],{"class":423},[249,714,715],{"class":518},"write",[249,717,718],{"class":423},"(\n",[249,720,722,725],{"class":251,"line":721},21,[249,723,724],{"class":255},"            bytes",[249,726,718],{"class":423},[249,728,730,733,736,739,742,745],{"class":251,"line":729},22,[249,731,732],{"class":560},"               f",[249,734,735],{"class":258},"\"\u003Chtml>\u003Cbody>\u003Ch1>Hello from Gefyra. It is ",[249,737,738],{"class":271},"{",[249,740,741],{"class":518},"now",[249,743,744],{"class":271},"}",[249,746,747],{"class":258}," on\"\n",[249,749,751,753,756,758,761,763,766,768,771,773,775,778,780],{"class":251,"line":750},23,[249,752,732],{"class":560},[249,754,755],{"class":258},"\" ",[249,757,738],{"class":271},[249,759,760],{"class":518},"hostname",[249,762,744],{"class":271},[249,764,765],{"class":258},".\u003C/h1>\u003C/body>\u003C/html>\"",[249,767,424],{"class":423},[249,769,770],{"class":518},"encode",[249,772,515],{"class":423},[249,774,633],{"class":423},[249,776,777],{"class":258},"utf-8",[249,779,633],{"class":423},[249,781,618],{"class":423},[249,783,785],{"class":251,"line":784},24,[249,786,787],{"class":423},"            )\n",[249,789,791],{"class":251,"line":790},25,[249,792,793],{"class":423},"      )\n",[249,795,797],{"class":251,"line":796},26,[249,798,477],{"emptyLinePlaceholder":476},[249,800,802,805,807],{"class":251,"line":801},27,[249,803,804],{"class":365},"my_handler ",[249,806,509],{"class":423},[249,808,809],{"class":365}," MyHttpRequestHandler\n",[249,811,813,816,818,821,823,826,829,832,834,837,840,843],{"class":251,"line":812},28,[249,814,815],{"class":365},"server ",[249,817,509],{"class":423},[249,819,820],{"class":365}," socketserver",[249,822,424],{"class":423},[249,824,825],{"class":518},"ThreadingTCPServer",[249,827,828],{"class":423},"((",[249,830,831],{"class":423},"\"\"",[249,833,641],{"class":423},[249,835,836],{"class":518}," port",[249,838,839],{"class":423},"),",[249,841,842],{"class":518}," my_handler",[249,844,618],{"class":423},[249,846,848],{"class":251,"line":847},29,[249,849,477],{"emptyLinePlaceholder":476},[249,851,853,856,859,861,865,867,870],{"class":251,"line":852},30,[249,854,855],{"class":560},"def",[249,857,858],{"class":518}," signal_handler",[249,860,515],{"class":423},[249,862,864],{"class":863},"sHdIc","signal",[249,866,641],{"class":423},[249,868,869],{"class":863}," frame",[249,871,582],{"class":423},[249,873,875,878],{"class":251,"line":874},31,[249,876,877],{"class":416},"   try",[249,879,539],{"class":423},[249,881,883,886,889],{"class":251,"line":882},32,[249,884,885],{"class":416},"      if",[249,887,888],{"class":365}," server",[249,890,539],{"class":423},[249,892,894,897,899,902],{"class":251,"line":893},33,[249,895,896],{"class":365},"            server",[249,898,424],{"class":423},[249,900,901],{"class":518},"server_close",[249,903,664],{"class":423},[249,905,907,910],{"class":251,"line":906},34,[249,908,909],{"class":416},"   finally",[249,911,539],{"class":423},[249,913,915,918,920,923,925,928],{"class":251,"line":914},35,[249,916,917],{"class":365},"      sys",[249,919,424],{"class":423},[249,921,922],{"class":518},"exit",[249,924,515],{"class":423},[249,926,927],{"class":271},"0",[249,929,618],{"class":423},[249,931,933],{"class":251,"line":932},36,[249,934,477],{"emptyLinePlaceholder":476},[249,936,938,940,942,944,946,948,950,953,955,957],{"class":251,"line":937},37,[249,939,864],{"class":365},[249,941,424],{"class":423},[249,943,864],{"class":518},[249,945,515],{"class":423},[249,947,864],{"class":518},[249,949,424],{"class":423},[249,951,952],{"class":427},"SIGINT",[249,954,641],{"class":423},[249,956,858],{"class":518},[249,958,618],{"class":423},[249,960,962,965],{"class":251,"line":961},38,[249,963,964],{"class":416},"try",[249,966,539],{"class":423},[249,968,970,973],{"class":251,"line":969},39,[249,971,972],{"class":416},"   while",[249,974,975],{"class":423}," True:\n",[249,977,979,981,983,986,988,991],{"class":251,"line":978},40,[249,980,917],{"class":365},[249,982,424],{"class":423},[249,984,985],{"class":427},"stdout",[249,987,424],{"class":423},[249,989,990],{"class":518},"flush",[249,992,664],{"class":423},[249,994,996,999,1001,1004],{"class":251,"line":995},41,[249,997,998],{"class":365},"      server",[249,1000,424],{"class":423},[249,1002,1003],{"class":518},"serve_forever",[249,1005,664],{"class":423},[249,1007,1009,1012,1015],{"class":251,"line":1008},42,[249,1010,1011],{"class":416},"except",[249,1013,1014],{"class":255}," KeyboardInterrupt",[249,1016,539],{"class":423},[249,1018,1020],{"class":251,"line":1019},43,[249,1021,1022],{"class":416},"   pass\n",[249,1024,1026],{"class":251,"line":1025},44,[249,1027,477],{"emptyLinePlaceholder":476},[249,1029,1031,1033,1035,1037],{"class":251,"line":1030},45,[249,1032,574],{"class":365},[249,1034,424],{"class":423},[249,1036,901],{"class":518},[249,1038,664],{"class":423},[346,1040,1042,1043,1046],{"id":1041},"_22-build-it-by-running-docker-build-f-dockerfile-t-pyserver-in-your-directory","2.2 Build it by running ",[218,1044,1045],{},"docker build -f Dockerfile . -t pyserver"," in your directory.",[346,1048,1050],{"id":1049},"_23-execute-gefyras-run-command","2.3 Execute Gefyra's run command:",[240,1052,1054],{"className":242,"code":1053,"language":244,"meta":245,"style":245},"gefyra run -d -i pyserver -N mypyserver -n default\n",[218,1055,1056],{"__ignoreMap":245},[249,1057,1058,1060,1063,1066,1069,1072,1075,1078,1081],{"class":251,"line":252},[249,1059,337],{"class":255},[249,1061,1062],{"class":258}," run",[249,1064,1065],{"class":258}," -d",[249,1067,1068],{"class":258}," -i",[249,1070,1071],{"class":258}," pyserver",[249,1073,1074],{"class":258}," -N",[249,1076,1077],{"class":258}," mypyserver",[249,1079,1080],{"class":258}," -n",[249,1082,1083],{"class":258}," default\n",[210,1085,1086,1089,1090,1093,1094],{},[213,1087,1088],{},"Important",": ",[218,1091,1092],{},"gefyra run"," is just a wrapper for docker run (with additional flags), yet it also applies Gefyra's networking configuration to connect the container with Kubernetes. Check out ",[194,1095,1097],{"href":1096},"/en/quick-start/cli#run","the docs for gefyra run",[235,1099,1101,1102,1106],{"id":1100},"_3-exec-into-the-running-container-and-look-around-you-will-find-the-container-to-run-within-your-kubernetes-cluster","3. ",[1103,1104,1105],"em",{},"Exec"," into the running container and look around. You will find the container to run within your Kubernetes cluster.",[240,1108,1110],{"className":242,"code":1109,"language":244,"meta":245,"style":245},"docker exec -it mypyserver bash\n",[218,1111,1112],{"__ignoreMap":245},[249,1113,1114,1117,1120,1123,1125],{"class":251,"line":252},[249,1115,1116],{"class":255},"docker",[249,1118,1119],{"class":258}," exec",[249,1121,1122],{"class":258}," -it",[249,1124,1077],{"class":258},[249,1126,1127],{"class":258}," bash\n",[240,1129,1131],{"className":242,"code":1130,"language":244,"meta":245,"style":245},"wget -O- hello-nginx\n",[218,1132,1133],{"__ignoreMap":245},[249,1134,1135,1138,1141],{"class":251,"line":252},[249,1136,1137],{"class":255},"wget",[249,1139,1140],{"class":258}," -O-",[249,1142,1143],{"class":258}," hello-nginx\n",[210,1145,1146,1147,1150],{},"will print out the website of the cluster service ",[1103,1148,1149],{},"hello-nginx"," from within the cluster. 🚀",[235,1152,1154],{"id":1153},"_4-create-a-bridge-to-redirect-the-traffic-from-the-cluster-application-to-the-one-running-locally","4. Create a bridge to redirect the traffic from the cluster application to the one running locally:",[240,1156,1158],{"className":242,"code":1157,"language":244,"meta":245,"style":245},"gefyra bridge -N mypyserver -n default --ports 80:8000 --target deploy/hello-nginxdemo/hello-nginx\n",[218,1159,1160],{"__ignoreMap":245},[249,1161,1162,1164,1167,1169,1171,1173,1176,1179,1182,1185],{"class":251,"line":252},[249,1163,337],{"class":255},[249,1165,1166],{"class":258}," bridge",[249,1168,1074],{"class":258},[249,1170,1077],{"class":258},[249,1172,1080],{"class":258},[249,1174,1175],{"class":258}," default",[249,1177,1178],{"class":258}," --ports",[249,1180,1181],{"class":258}," 80:8000",[249,1183,1184],{"class":258}," --target",[249,1186,1187],{"class":258}," deploy/hello-nginxdemo/hello-nginx\n",[210,1189,1190,1191,1194],{},"Check out the locally running server serving the cluster by refreshing the address from the service in Kubernetes.\nIt shows you a different message: ",[218,1192,1193],{},"Hello from Gefyra. It is ...",". Yes, that is really coming from your local container! 😎",[235,1196,1198,1199,1202],{"id":1197},"_5-list-all-running-bridges","5. List all running ",[1103,1200,1201],{},"bridges",":",[210,1204,1205],{},"You can list all currently active bridges with:",[240,1207,1209],{"className":242,"code":1208,"language":244,"meta":245,"style":245},"gefyra list --bridges\n",[218,1210,1211],{"__ignoreMap":245},[249,1212,1213,1215,1218],{"class":251,"line":252},[249,1214,337],{"class":255},[249,1216,1217],{"class":258}," list",[249,1219,1220],{"class":258}," --bridges\n",[210,1222,1223],{},"You will find all local containers that are currently linked into the cluster serving requests.",[235,1225,1227,1228,1231],{"id":1226},"_6-unbridge-the-local-container-and-reset-the-cluster-to-its-original-state","6. ",[1103,1229,1230],{},"Unbridge"," the local container and reset the cluster to its original state:",[240,1233,1235],{"className":242,"code":1234,"language":244,"meta":245,"style":245},"gefyra unbridge --all\n",[218,1236,1237],{"__ignoreMap":245},[249,1238,1239,1241,1244],{"class":251,"line":252},[249,1240,337],{"class":255},[249,1242,1243],{"class":258}," unbridge",[249,1245,1246],{"class":258}," --all\n",[210,1248,1249],{},"Check out the original response from the service. The cluster is now reset to its inital state again.",[182,1251,1253],{"id":1252},"cleaning-up","Cleaning up",[210,1255,1256],{},"Remove Gefyra's components from the cluster and your local Docker host with:",[240,1258,1260],{"className":242,"code":1259,"language":244,"meta":245,"style":245},"gefyra down\n",[218,1261,1262],{"__ignoreMap":245},[249,1263,1264,1266],{"class":251,"line":252},[249,1265,337],{"class":255},[249,1267,1268],{"class":258}," down\n",[182,1270,1272],{"id":1271},"deleting-the-locally-running-k3d-kubernetes-cluster-with","Deleting the locally running k3d Kubernetes cluster with",[240,1274,1276],{"className":242,"code":1275,"language":244,"meta":245,"style":245},"k3d cluster delete mycluster\n",[218,1277,1278],{"__ignoreMap":245},[249,1279,1280,1282,1284,1287],{"class":251,"line":252},[249,1281,53],{"class":255},[249,1283,259],{"class":258},[249,1285,1286],{"class":258}," delete",[249,1288,1289],{"class":258}," mycluster\n",[1291,1292,1293,1297,1298,424],"card",{},[1294,1295,1296],"template",{"v-slot:title":245},"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,1299,1302],{"href":1300,"rel":1301,"target":199},"https://forms.gle/AWT9NparpTVk8E978",[198],"feedback form",[1304,1305,1306],"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 pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}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 .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .s5tWE, html code.shiki .s5tWE{--shiki-light:#E53935;--shiki-light-font-style:italic;--shiki-default:#F07178;--shiki-default-font-style:italic;--shiki-dark:#F07178;--shiki-dark-font-style:italic}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}",{"title":245,"searchDepth":369,"depth":369,"links":1308},[1309,1310,1314,1325,1326],{"id":184,"depth":369,"text":185},{"id":224,"depth":369,"text":225,"children":1311},[1312,1313],{"id":237,"depth":376,"text":238},{"id":293,"depth":376,"text":294},{"id":322,"depth":369,"text":323,"children":1315},[1316,1317,1318,1320,1321,1323],{"id":326,"depth":376,"text":327},{"id":343,"depth":376,"text":344},{"id":1100,"depth":376,"text":1319},"3. Exec into the running container and look around. You will find the container to run within your Kubernetes cluster.",{"id":1153,"depth":376,"text":1154},{"id":1197,"depth":376,"text":1322},"5. List all running bridges:",{"id":1226,"depth":376,"text":1324},"6. Unbridge the local container and reset the cluster to its original state:",{"id":1252,"depth":369,"text":1253},{"id":1271,"depth":369,"text":1272},"This guide will show you how to use Gefyra for the local development of a Kubernetes application running in k3d.","md",null,{},{"title":53},{"title":177,"description":1327},"qFAXgg1ZOGPL7CcnUqAyMY2PNos8mp88_NkzpUXZXtw",[1335,1337],{"title":49,"path":50,"stem":51,"description":1336,"icon":29,"children":-1},"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.",{"title":57,"path":58,"stem":59,"description":1338,"children":-1},"This guide will show you how to use Gefyra for the local development of a Kubernetes application running in kind.",1775752109073]