éçºã«Dockerã䜿çšããŠããå Žåã¯ããã§ã«ã¯ã©ãŠããã€ãã£ããœãããŠã§ã¢ã®äœæã«åããŠé 調ã«é²ãã§ããŸãã ã³ã³ããåã¯ãã·ã¹ãã ã®äŸåé¢ä¿ãèšèªèŠä»¶ãã¢ããªã±ãŒã·ã§ã³æ§æãªã©ãã³ãŒããå®è¡ããããã«äžå¯æ¬ ãªãã¹ãŠã®èŠçŽ ãåŠçããŸãã ããããKubernetesã®ããŒã«ã«éçºã®ãããªãããè€éãªãŠãŒã¹ã±ãŒã¹ãåŠçã§ããã®ã§ãããã?
ããè€éãªã·ã¹ãã ã§ã¯ãã³ãŒããè€æ°ã®è£å©ãµãŒãã¹ (ããŒã¿ããŒã¹ãã¹ãã¬ãŒãžããªã¥ãŒã ãAPIããã£ãã·ã¥ã¬ã€ã€ãŒãã¡ãã»ãŒãžãããŒã«ãŒãªã©) ã«æ¥ç¶ããå¿ èŠãããå ŽåããããŸãã ææ°ã®Kubernetesã·ã¹ãã ã§ã¯ããµãŒãã¹ã¡ãã·ã¥ãšã¯ã©ãŠããã€ãã£ããªãããã€ãã¿ãŒã³(ãããŒããæ§æãæ§é ãã¿ãŒã³ãåäœãã¿ãŒã³ãªã©)ã管çããå¿ èŠããããŸãã
Kubernetes ã¯ãã¹ã±ãŒã©ãã«ã§å埩åã®ãããµãŒãã¹ããŒã¹ã®ã¢ããªã±ãŒã·ã§ã³ããªãŒã±ã¹ãã¬ãŒã·ã§ã³ããããã®çµ±äžãããã€ã³ã¿ãŒãã§ã€ã¹ãæäŸããŸãã ãã ãããã®è€éãã¯ãç¹ã«ããŒã«ã«ã®Kubernetesã¯ã©ã¹ã¿ã®ã»ããã¢ããã®çµéšãè±å¯ã§ãªãéçºè ã«ãšã£ãŠã¯ãå§åãããå¯èœæ§ããããŸãã Gefyraã¯ãéçºè ãããŒã«ã«ã®Kuberneteséçºç°å¢ã§äœæ¥ããå®å šã§ä¿¡é Œæ§ãé«ããã¹ã±ãŒã©ãã«ãªãœãããŠã§ã¢ãããç°¡åã«äœæããã®ã«åœ¹ç«ã¡ãŸãã

ã²ãã£ã©ãšã¯äœã§ãã?Â
ã²ãã£ã©ã®ãªã·ã£ èªã§ãããªããžããæå³ããèšèã«ã¡ãªãã§åä»ãããããKubernetesã䜿çšããDockerããŒã¹ã®éçºã容æã«ããå æ¬çãªããŒã«ãããã§ãã Kubernetesãæ¬çªãã©ãããã©ãŒã ãšããŠäœ¿çšããå Žåã¯ãéçºäžã«åãç°å¢ã§äœæ¥ããããšãäžå¯æ¬ ã§ãã ãã®æ¹æ³ã«ãããéçºãšéçšã®ãã©ã³ã¹ãåããç§»è¡äžã®åé¡ãæå°éã«æããããŸãã
Gefyraã¯ãã¹ããã€ããæäŸãã docker run ãªãŒãã³ãœãŒã¹ãããžã§ã¯ãã§ãã ããã䜿çšããŠãããŒã«ã«ã®Dockerãä»»æã®Kubernetesã¯ã©ã¹ã¿ãŒã«æ¥ç¶ã§ããŸãã ããã«ãããã¯ã©ã¹ã¿ãŒã§å®è¡ãããŠãããã®ããã«åäœããã³ã³ãããŒãããŒã«ã«ã§å®è¡ã§ããŸãã ãæ°ã«å
¥ãã®ããŒã«ã䜿çšããŠããæ°ã«å
¥ãã®ã³ãŒã ãšãã£ã¿ãŒã§ããŒã«ã«ã«ã³ãŒããèšè¿°ã§ããŸãã
ãŸããGefyra ã§ã¯ãã³ãŒãã倿Žãããšãã«è€æ°ã®ã¿ã¹ã¯ãå®è¡ããå¿ èŠã¯ãããŸããã 代ããã«ãGefyra ã䜿çšãããšãDockerfile ã«å€æŽãå ããããšãªããã³ãŒããã¯ã©ã¹ã¿ãŒã«æ¥ç¶ã§ããŸãã Dockerã€ã¡ãŒãžãäœæããããã¬ãžã¹ããªã«éä¿¡ããããã¯ã©ã¹ã¿ãŒãåèµ·åãããããå¿ èŠã¯ãããŸããã
ãã®ã¡ãœããã¯ãæ°ããã³ãŒãããã³ã³ãããŒã«æ¥ç¶ããããããã¬ãŒã䜿çšããŠæ¢åã®ã³ãŒããæ€æ»ããå Žåã«åœ¹ç«ã¡ãŸãã ããã«ãããGefyraã¯KubernetesããŒã¹ã®éçºäœæ¥ã«ãããçç£æ§ã®ã¹ãŒããŒã¹ã¿ãŒãšãªã£ãŠããŸãã
ã²ãã£ã©ã¯ã©ã®ããã«æ©èœããŸãã?
Gefyraã¯ãããŒã«ã«éçºãã·ã³ãšéçºã¯ã©ã¹ã¿ãŒãå¶åŸ¡ã§ããããã«ããããã€ãã®ã¯ã©ã¹ã¿ãŒåŽã³ã³ããŒãã³ããã€ã³ã¹ããŒã«ããŸããÂ
ãããã®ã³ã³ããŒãã³ãã«ã¯ãããŒã«ã«éçºãã·ã³ãš Kubernetes ã¯ã©ã¹ã¿ãŒéã®ãã³ãã«ãã¯ã©ã¹ã¿ãŒ DNS ã®ããã«åäœããããŒã«ã« DNS ãªãŸã«ããŒãããã³é«åºŠãª IP ã«ãŒãã£ã³ã° ã¡ã«ããºã ãå«ãŸããŸãã ãããã®ã³ã³ããŒãã³ããæ§ç¯ããããã«ãGefyraã¯DockerãWireGuardãCoreDNSãNginxãRsyncãªã©ã®äžè¬çãªãªãŒãã³ãœãŒã¹ãã¯ãããžãŒã䜿çšããŠããŸãã
ããŒã«ã«éçºãã»ããã¢ããããã«ã¯ãéçºè ã¯ãã·ã³äžã®ã³ã³ãããŒã§ã¢ããªã±ãŒã·ã§ã³ãå®è¡ããå¿ èŠããããŸãã ã³ã³ãããŒã«ã¯ãCargo ãšããååã®ãµã€ãã«ãŒ ã³ã³ãããŒãå¿ èŠã§ãã ãµã€ãã«ãŒã³ã³ããã¯ãããã¯ãŒã¯ã²ãŒããŠã§ã€ãšããŠæ©èœããCoreDNSãµãŒãã䜿çšããŠãã¹ãŠã®ãªã¯ãšã¹ããã¯ã©ã¹ã¿ã«è»¢éããŸã(å³1)ã
Cargoã¯ãã¢ãããã¯æ¥ç¶ã·ãŒã¯ã¬ããã䜿çšããŠãWireGuardã§ééãããã¹ãŠã®ãã©ãã£ãã¯ãæå·åããŸãã éçºè ã¯ããæ°ã«å ¥ãã®ã³ãŒã ãšãã£ã¿ãŒããããã¬ãŒãªã©ã®æ¢åã®ããŒã«ã䜿çšããŠãã¢ããªã±ãŒã·ã§ã³ãéçºã§ããŸãã

Gefyraã¯ãWireGuardæ¥ç¶ã®äž¡ç«¯ã管çããéçºè ãšã¯ã©ã¹ã¿ãŒã®éã«VPNãã³ãã«ãèªåçã«ç¢ºç«ããŸãã ããã«ãããKubernetes APIãµãŒããŒã«è² è·ããããããšãªããå ç¢ã§é«éãªæ¥ç¶ãå®çŸããŸã(å³2)ã Gefyraã®ã¯ã©ã€ã¢ã³ãåŽã¯ãVPNãšã³ããã€ã³ãã䜿çšããŠããŒã«ã«Dockerãããã¯ãŒã¯ã管çããŸãã ããã«ãããã³ã³ãããŒã¯ããã¹ãŠã®ãã©ãã£ãã¯ãã¯ã©ã¹ã¿ãŒã«è»¢éãã VPN ã«åå ã§ããŸãã

ãŸããGefyraã§ã¯ãã¯ã©ã¹ã¿ããããŒã«ã«ã³ã³ãããžã®æ¢åã®ãã©ãã£ãã¯ã®ããªããžã³ã°ãå¯èœã§ãéçºè ã¯ã¯ã©ã¹ã¿ããã®å®éã®ãªã¯ãšã¹ãã§ã³ãŒãããã¹ãããããŒã å ã®å€æŽã«ã€ããŠå ±åäœæ¥ãè¡ãããšãã§ããŸãã ããŒã«ã«ã³ã³ããã€ã³ã¹ã¿ã³ã¹ã¯ãä»ã®PodãServiceããŸãã¯Ingressãããªã¯ãšã¹ããåä¿¡ããŠããéãã¯ã©ã¹ã¿ãŒå ã®è£å©ãµãŒãã¹ããã³ãªãœãŒã¹ã«æ¥ç¶ããããŸãŸã«ãªããŸãã ãã®ã»ããã¢ããã«ãããCI ãã€ãã©ã€ã³ã§ã³ã³ãã㌠ã€ã¡ãŒãžãäœæããå°ããªå€æŽã®ããã«ã¯ã©ã¹ã¿ãŒãæŽæ°ããå¿ èŠããªããªããŸãã
ãªãGefyraãDockeræ¡åŒµæ©èœãšããŠå®è¡ããã®ã§ãã?
Gefyraã®ã³ã¢æ©èœãå«ãPythonã©ã€ãã©ãªã¯ã ãã®ãªããžããªã§å ¥æã§ããŸãã ãããžã§ã¯ãã«ä»å±ããCLIã«ã¯ãäžéšã®ãŠãŒã¶ãŒã«ãšã£ãŠã¯å§åãããå¯èœæ§ã®ããåŒæ°ã®é·ããªã¹ãããããŸãã éçºè ã«ãšã£ãŠããã¢ã¯ã»ã¹ãããããã®ã«ããããã«ãGefyraã¯Docker Desktopæ¡åŒµæ©èœãéçºããŸããã
Gefyraæ¡åŒµæ©èœã䜿çšãããšãéçºè ã¯Docker Desktopã§ããŸããŸãªKubernetesã¯ã©ã¹ã¿ãŒãæäœã§ããŸãããããã«ã¯ãçµã¿èŸŒã¿ã¯ã©ã¹ã¿ãŒãããŒã«ã«ãããã€ã㌠(MinikubeãK3dãKindãGetdeck Beiboot ãªã©)ãããã³ãªã¢ãŒãã¯ã©ã¹ã¿ãŒãå«ãŸããŸãã ãã£ããå§ããŸãããã
Gefyra Docker Desktop ã®ã€ã³ã¹ããŒã«
åæ æ¡ä»¶ïŒ Docker Desktop 4.8 以éã
ã¹ããã1:åæèšå®
ãŸããDocker Desktop ã§ Docker æ¡åŒµæ©èœ ãæå¹ã«ãªã£ãŠããããšã確èªããŸã (ããã©ã«ãã§æå¹ã«ãªã£ãŠããã¯ãã§ã)ã [ èšå®] |æ¡åŒµæ©èœ [ Docker æ¡åŒµæ©èœãæå¹ã«ãã] ããã¯ã¹ãéžæããŸã (å³ 3)ã
![- f3 Gefyra Docker æ¡åŒµæ©èœãæå¹ã«ãã [Enable Docker Extensions] ãéžæããã Docker Desktop ã€ã³ã¿ãŒãã§ã€ã¹ã瀺ãã¹ã¯ãªãŒã³ã·ã§ããã](https://www.docker.com/ja-jp/app/uploads/2023/06/F3-Gefyra-Enable-Docker-Extensions-1110x628.png)
ãŸãã[èšå®] ã§ Kubernetes ãæå¹ã«ããå¿ èŠããããŸã (å³ 4)ã
![- F4 Gefyra Kubernetesãæå¹ã«ãã [Enable Kubernetes] ãš [Show system containers (advanced)] ãéžæãã Docker Desktop ã®ã¹ã¯ãªãŒã³ã·ã§ããã](https://www.docker.com/ja-jp/app/uploads/2023/06/F4-Gefyra-Enable-Kubernetes-1110x594.png)
Gefyra 㯠Docker Extensions Marketplace ã«åå ããŠããŸãã æ¬¡ã«ãDocker Desktop ã« Gefyra ãã€ã³ã¹ããŒã«ããŸãã
æé 2: Gefyra æ¡åŒµæ©èœã远å ãã
Docker ãã¹ã¯ããããéã ã[æ¡åŒµæ©èœã®è¿œå ] ãéžæããŠãæ¡åŒµæ©èœããŒã±ãããã¬ãŒã¹ã§ Gefyra æ¡åŒµæ©èœãèŠã€ããŸã (å³ 5)ã

Gefyraãã€ã³ã¹ããŒã«ãããšãæ¡åŒµæ©èœãéããŠGefyraã®ã¹ã¿ãŒãç»é¢ãèŠã€ããããšãã§ããŸãã ããã«ã¯ãKubernetesã¯ã©ã¹ã¿ã«æ¥ç¶ãããŠãããã¹ãŠã®ã³ã³ããã®ãªã¹ãããããŸãã ãã¡ããããã®ã»ã¯ã·ã§ã³ã¯æ°èŠã€ã³ã¹ããŒã«ã§ã¯ç©ºã§ãã
Gefyraã䜿çšããŠããŒã«ã«ã³ã³ãããèµ·åããã«ã¯ã[ ã³ã³ããã®å®è¡ ]ãã¿ã³ãã¯ãªãã¯ããå¿ èŠããããŸãã ãã®ãã¿ã³ã¯å³äžã«ãããŸã(å³6)ã

æ¬¡ã®æé ã¯ãããŒã«ã«ãšãªã¢ãŒãã®ã©ã¡ãã® Kubernetes ã¯ã©ã¹ã¿ãŒã䜿çšããŠãããã«ãã£ãŠç°ãªããŸãã ããŒã«ã« ã¯ã©ã¹ã¿ãŒã䜿çšããŠããå Žåã¯ãäžèŽãã kubeconfig ãã¡ã€ã« ãéžæããå¿ èŠã«å¿ããŠã³ã³ããã¹ããèšå®ããŸã (å³ 7)ãÂ
ãªã¢ãŒãã¯ã©ã¹ã¿ã®å Žåã¯ã远å ã®ãã©ã¡ãŒã¿ãæåã§æå®ããå¿ èŠããããŸãã æ¬¡ã®ã»ã¯ã·ã§ã³ã§åŸãããã®è©³çްãªäŸã瀺ããŸãã

Kubernetes ãã¢ã®ã¯ãŒã¯ããŒã
次ã®äŸã¯ãGefyraãDocker Desktopã®Kubernetesæ©èœã䜿çšããŠãåçŽãªã¢ããªã±ãŒã·ã§ã³ã®éçºç°å¢ãäœæããæ¹æ³ã瀺ããŠããŸã(å³8)ã
ããã 2 ã€ã®ãµãŒãã¹ã«ã¯ a ãš a backend frontend ãå«ãŸããPython ããã»ã¹ãšããŠå®è£
ãããŸãã ãŸããããã³ããšã³ã ãµãŒãã¹ã¯ãããã¯ãšã³ãããååŸãã color ããããã£ã䜿çšã㊠HTML ããã¥ã¡ã³ããçæããŸãã 2 ã€ã®ãµãŒãã¹ã¯ HTTP ã䜿çšããŠéä¿¡ããããã¯ãšã³ã ã¢ãã¬ã¹ãç°å¢å€æ°ãšããŠããã³ããšã³ãã«äžããŸãã

GefyraããŒã ã¯ãKubernetesãã¢ã¯ãŒã¯ããŒãçšã®ãªããžããªãäœæããŠããã GitHubã§èŠã€ããããšãã§ããŸããÂ
ãã ãããããªãã¥ãŒããªã¢ã«ãã奜ã¿ã®å Žåã¯ã YouTubeã®ãã®ãããªãã芧ãã ãããÂ
åæ
çŸåšã® Kubernetes ã³ã³ããã¹ãã Docker Desktop ã«åãæ¿ããå¿
èŠããããŸãã ãã®æé ã§ã¯ããŠãŒã¶ãŒã¯ Kubernetes ã¯ã©ã¹ã¿ãŒãæäœãã ã䜿çšã㊠kubectlã¢ããªã±ãŒã·ã§ã³ããããã€ã§ããŸãã
kubectl config current-context
docker-desktop
1. ãªããžããªãã¯ããŒã³ãã
ãŸãããªããžããªãã¯ããŒã³ããå¿ èŠããããŸãã
git clone https://github.com/gefyrahq/gefyra-demos
2. ã¯ãŒã¯ããŒããé©çšãã
次㮠YAML ãã¡ã€ã«ã§ã¯ãããã¯ãšã³ã ãµãŒãã¹ãšããã³ããšã³ã ãµãŒãã¹ã§æ§æãããåçŽãª 2 å±€ã¢ããªãèšå®ããŸãã ã³ã³ãããŒã«frontendæž¡ãããç°å¢å€æ°ã¯SVC_URLã2 ã€ã®ãµãŒãã¹éã®éä¿¡ã確ç«ããŸãã
ããã¯ã ãš ãšããååã® 2 ã€ã®ããããšãbackendãããã ãš frontendfrontendãšããååã® 2 ã€ã®ãµãŒãã¹backendãå®çŸ©ããŸããããã㯠backendã quay.io/gefyra/gefyra-demo-backend ããŒã 5002 ã®ã€ã¡ãŒãžã
ããã㯠frontend ã quay.io/gefyra/gefyra-demo-frontend ããŒã 5003 ã®ã€ã¡ãŒãžã frontendã³ã³ããã«ã¯ã ãšããå€backend.default.svc.cluster.local:5002ã«èšå®ããã ãšããååã®SVC_URLç°å¢å€æ°ããããŸãã
backend ãµãŒãã¹ã¯ãã©ãã«ã䜿çšã㊠app: backend ããããéžæã backend ãããŒã 5002 ãå
¬éããããã«å®çŸ©ãããŠããŸããfrontend ãµãŒãã¹ã¯ãã©ãã«ã䜿çšã㊠app: frontend ããããéžæã frontend ãããŒã 80 ãããŒã ãã©ã³ãµãŒãšããŠå
¬éããã³ã³ãããŒã®ããŒã 5003 ã«ãã©ãã£ãã¯ãã«ãŒãã£ã³ã°ããããã«å®çŸ©ãããŠããŸã frontend ã
/gefyra-demos/kcd-munich> kubectl apply -f manifests/demo.yaml
pod/backend created
pod/frontend created
service/backend created
service/frontend created
ã¯ãŒã¯ããŒãã®æºåãèŠãŠã¿ãŸãããã
kubectl get pods
NAME READY STATUS RESTARTS AGE
backend 1/1 Running 0 2m6s
frontend 1/1 Running 0 2m6s
ããã¯ãšã³ããšããã³ããšã³ãã®ããããåæåããããš (åºåã®åãç¢ºèª READY )ãWeb ãã©ãŠã¶ãŒã§ http://localhost ã¢ããªã±ãŒã·ã§ã³ã«ã¢ã¯ã»ã¹ã§ããŸãã ãã®URLã¯ãDocker Desktopã®Kubernetesç°å¢ããæäŸãããŸãã
ããŒãžãèªã¿èŸŒããšãã¢ããªã±ãŒã·ã§ã³ã®åºåããã©ãŠã¶ã«è¡šç€ºãããŸãã åºåã¯èŠèŠçã«çŸãããªããããããŸããããæ©èœçã§ãããå¿ èŠãªæ©èœãæäŸããå¿ èŠããããŸãã

ããã§ã¯ãããã³ããšã³ãã³ã³ããŒãã³ãã«ãã£ãŠçæãããåºåã®è²ãä¿®æ£ãŸãã¯èª¿æŽããæ¹æ³ã調ã¹ãŠã¿ãŸãããã
3.ããã³ããšã³ãããã»ã¹ã§Gefyraã®ãã³ã³ããã®å®è¡ãã䜿çšãã
ãã®ã»ã¯ã·ã§ã³ã®æåã®éšåã§ã¯ãKubernetes ã¯ã©ã¹ã¿ãŒã«åºã¥ããªãœãŒã¹ (ããã¯ãšã³ã API) ã«é¢é£ä»ããããŠããããã³ããšã³ã ããã»ã¹ãããŒã«ã« ãã·ã³ã§å®è¡ããæ¹æ³ãåŠç¿ããŸãã ããã¯ãããŒã¿ããŒã¹ããã¡ãã»ãŒãžãããŒã«ãŒããŸãã¯ã¢ãŒããã¯ãã£ã§äœ¿çšããããã®ä»ã®ãµãŒãã¹ãŸã§ããããããã®ã«ãªããŸãã
Gefyra ã®ã¹ã¿ãŒãç»é¢ãã [ã³ã³ãããŒã®å®è¡] ã䜿çšããŠããŒã«ã« ã³ã³ãããŒãéå§ããŸã (å³ 9)ã

ãã®ããã»ã¹ã®æåã®ã¹ãããã«å
¥ããšããšã³ã³ããã¹ããèªåçã«èšå®ãããããšãããããŸã kubeconfig ã ããã¯ããã¹ãäžã®ããã©ã«ãã®kubeconfigãã©ãã«ãããããããªãå Žåã®åœã®æ©äººã§ãã
[次ãž]ãã¿ã³ãæŒããŠãã³ã³ããã®èšå®ã«é²ã¿ãŸã(å³10)ã

[ã³ã³ãããŒã®èšå®] ã¹ãããã§ã¯ãããŒã«ã« ã³ã³ãããŒã® Kubernetes é¢é£ã®ãã©ã¡ãŒã¿ãŒãæ§æã§ããŸãããã®äŸã§ã¯ããã¹ãŠãæ¢å®ã® Kubernetes åå空éã§è¡ãããŸãã æåã®ããããããŠã³å ¥åã§éžæããŸã(å³11)ãÂ
[ç»å] ã®äžã®ããããããŠã³å ¥åã§ãããŒã«ã«ã§å®è¡ããç»åãæå®ã§ããŸããããã«ã¯ã(åå空éã»ã¬ã¯ã¿ãã)éžæãã åå空é ã§äœ¿çšãããŠãããã¹ãŠã®ç»åãäžèŠ§è¡šç€ºãããŸãã ããã«ãããã¯ã©ã¹ã¿ãŒã«ã©ã®ãããªç»åãããããæ°ã«ããããèªåã§èŠã€ãããããå¿ èŠããªããªããŸãã
代ããã«ãæå ã®ç»åã§äœæ¥ããããã«ææ¡ãããŸãããããã¯ãã®äŸã§å®è¡ãããããšã§ã (å³ 12) ã ãã·ã³ã§äœæããæ°ããç»åã§ãã£ãŠããå¿ èŠãªç»åãæå®ã§ããŸãã


次ã«ãã¯ã©ã¹ã¿ãŒã§å®è¡ãããŠããããã³ããšã³ã ã³ã³ãããŒã®ç°å¢ãã³ããŒããŸãã ãããè¡ãã«ã¯ã[Copy Environment From] ã»ã¬ã¯ã¿ãŒãã [Pod/frontend] ãéžæããå¿ èŠããããŸã (å³ 13)ããã®ã¹ãããã¯ãç°å¢å€æ°ã䜿çšã㊠ã¯ã©ã¹ã¿ãŒå ã®ãããã«æž¡ ãããããã¯ãšã³ã ãµãŒãã¹ ã¢ãã¬ã¹ãå¿ èŠãªãããéèŠã§ãã
ã³ã³ãããŒèšå®ã®äžéšã§ã¯ã次ã®ã³ã³ãã㌠ã€ã¡ãŒãžã®å®è¡ã³ãã³ããäžæžãããŠãã³ãŒãã®åèªã¿èŸŒã¿ãæå¹ã«ããå¿ èŠããããŸãã
poetry run flask --app app --debug run --port 5002 --host 0.0.0.0

ããŒã 5002 ã§ã³ã³ãã㌠ããã»ã¹ãéå§ãããã®ããŒããããŒã«ã« ã³ã³ãã¥ãŒã¿ãŒã«å
¬éããŸãããã ãŸããã³ãŒããã£ã¬ã¯ã㪠(/gefyra-demos/kcd-munich/frontendãããŠã³ãããŸã )ã䜿çšããŠãã³ãŒãã®å€æŽãããã«è¡šç€ºã§ããããã«ããŸãã æ¬¡ã«ã[ å®è¡ ]ãã¿ã³ãã¯ãªãã¯ããŠããã»ã¹ãéå§ããŸãã

次ã«ãGefyraã®ã¯ã©ã¹ã¿åŽã³ã³ããŒãã³ããç°¡åã«ã€ã³ã¹ããŒã«ããããŒã«ã«ãããã¯ãŒã¯éšåãæºåããã³ã³ããã€ã¡ãŒãžããã«ããŠããŒã«ã«ã§èµ·åããŸã(å³14)ã æºåãã§ãããããã®ã³ã³ãããŒãã Docker Desktop ã®ãã€ãã£ã ã³ã³ãã㌠ãã¥ãŒã«ãªãã€ã¬ã¯ãããŸã (å³ 15) ã

[ ã¿ãŒããã« ] ã¿ãã䜿çšããŠãã³ã³ãããŒå
ãèŠåãããšãã§ããŸã (å³ 16)ã ã·ã§ã«ã«ã³ãã³ããå
¥åãã env ãšãKubernetesã«ä»å±ãããã¹ãŠã®ç°å¢å€æ°ã衚瀺ãããŸãã

ç¹ã«æ³šç®ãã¹ãã¯ãSVC_URLããã³ããšã³ããããã¯ãšã³ãããã»ã¹ãæã倿°ã§ãããã¯ãšã³ãããã»ã¹ã¯ãŸã ã¯ã©ã¹ã¿ãŒå
ã§å®è¡ãããŠããŸããããã§ãURL http://localhost:5002 ãåç
§ãããšããããã«ç°ãªãåºåã衚瀺ãããŸãã

ããã¯ã©ãããŠã§ããã 調æ»ã®ããã«ãããŒã«ã« ã³ã³ãããŒã«æ¢ã«ããŠã³ããããŠããã³ãŒããç¹ã« app.py Flask ãµãŒã㌠ãå®è¡ããã³ãŒããèŠãŠã¿ãŸããã (å³ 17) ã

Gefyra ã®äŸã®ã³ãŒãã®æåŸã®è¡ã«ã¯ãããã¹ã Hello KCD!ã衚瀺ããããã®ã³ãŒãã«å ãããã倿Žã¯ãããŒã«ã« ã³ã³ãããŒã§ããã«æŽæ°ãããŸãã ãã®æ©èœã¯ãéçºè
ãã³ãŒããèªç±ã«å€æŽããã³ã³ãããåæ§ç¯ãŸãã¯åãããã€ããããšãªãããªã¢ã«ã¿ã€ã ã§åæ ããã倿Žã確èªã§ãããããæ³šç®ã«å€ããŸãã
Gefyra ã®äŸã®ã³ãŒãã® 12 è¡ç®ã¯ã倿° SVC ã«æ ŒçŽãããŠãããµãŒãã¹ URL ã«èŠæ±ãéä¿¡ããŸãã SVC ã®å€ã¯ãKubernetes ã¯ã©ã¹ã¿ãŒå
ã®ãããããã³ããŒããã ãšããååã® SVC_URLç°å¢å€æ°ããèªã¿åãããŸãã URL ã¯ã backend.default.svc.cluster.local:5002Kubernetes ãµãŒãã¹ ãªããžã§ã¯ããšããŒããæãå®å
šä¿®é£Ÿãã¡ã€ã³å (FQDN) ã§ãã
ãããã® URL ã¯ãçžäºã«éä¿¡ããããã« Kubernetes ã®ã¢ããªã±ãŒã·ã§ã³ã«ãã£ãŠäžè¬çã«äœ¿çšãããŸãã ããŒã«ã«ã³ã³ããããã»ã¹ã¯ããã€ãã£ãæ¥ç¶ãã©ã¡ãŒã¿ã䜿çšããŠKubernetesã§å®è¡ãããŠãããµãŒãã¹ã«ãªã¯ãšã¹ããéä¿¡ã§ããéçºè ã倿Žãå ããå¿ èŠã¯ãããŸããã
ã»ãšãã©ã®éçºã·ããªãªã§ã¯ãå ã»ã©èª¬æãã Gefyra ã®æ©èœã§ååã§ãã ã€ãŸããGefyra ã䜿çšããŠãKubernetes ã¯ã©ã¹ã¿ãŒå ã®ãªãœãŒã¹ãšéä¿¡ã§ããããŒã«ã« ã³ã³ãããŒãå®è¡ããããŒã«ã« ããŒãã§ã¢ããªã«ã¢ã¯ã»ã¹ã§ããŸãã ãã ããããã³ããšã³ãããŸã Kubernetesã§å®è¡ãããŠããéã«ããã¯ãšã³ãã倿Žããå¿ èŠãããå Žåã¯ã©ããªããŸãã? ããã§ãGefyraã®ãããªããžãæ©èœãç»å Žããæ¬¡ã«èª¬æããŸãã
4. Gefyraãšããã¯ãšã³ãããã»ã¹ãšã®ãæ©æž¡ãã
ããã³ããšã³ãããã»ã¹ãããŒã«ã«ã§å®è¡ããããªããžãä»ããŠKubernetesã§å®è¡ãããŠããããã¯ãšã³ãããã»ã¹ã«æ¥ç¶ããããšãã§ããŸãã ãããããã®ã¢ãããŒãã¯ãããã³ããšã³ãã«é¢å¿ã®ãªãããã¯ãšã³ãéçºè ã«ãšã£ãŠå¿ ãããå¿ èŠãŸãã¯æãŸãããšã¯éããŸããã ãã®å Žåãããã³ããšã³ããã¯ã©ã¹ã¿ãŒã§å®è¡ãããŸãŸã«ããŠãDocker Desktop ã®ã³ã³ãã㌠ãã¥ãŒã§åæ¢ãã¿ã³ãéžæããŠããŒã«ã« ã€ã³ã¹ã¿ã³ã¹ã忢ããæ¹ã䟿å©ãªå ŽåããããŸãã
ãããè¡ãã«ã¯ãããã¯ãšã³ããµãŒãã¹ã®ããŒã«ã«ã€ã³ã¹ã¿ã³ã¹ãå®è¡ããå¿ èŠããããŸãã ããã¯ããã³ããšã³ããšåãã§ãããä»åã¯ããã¯ãšã³ãã®ã³ã³ãã㌠ã€ã¡ãŒãžã䜿çšããŸã (å³ 18) ã

äžèšã®ããã³ããšã³ãã®äŸãšæ¯èŒãããšãããã¯ãšã³ãã³ã³ããã€ã¡ãŒãž()ãå®è¡ã§ããŸããquay.io/gefyra/gefyra-demo-backend:latestããã¯ãããããããŠã³ã»ã¬ã¯ã¿ãŒã«ãã£ãŠææ¡ãããŸãã ä»åã¯ãKubernetes ã§å®è¡ãããŠããããã¯ãšã³ã ãããããç°å¢ãã³ããŒããå¿
èŠããããŸãã ããªã¥ãŒã ããŠã³ããããã¯ãšã³ããµãŒãã¹ã®ã³ãŒãã«èšå®ãããæ©èœããããã«ãªã£ãããšã«æ³šæããŠãã ããã
ã³ã³ãããŒãèµ·åããåŸãããã¯ãšã³ã API å¿çãæäŸãã http://localhost:5002/color ã確èªã§ããŸãã ããã¯ãšã³ã ãµãŒãã¹ãèŠã app.py ãšããã®å¿çã®ãœãŒã¹ãããããŸãã8 è¡ç®ã§ããã®ã¢ããªã¯ color ããããã£ã (å³ 19) ã«èšå®ããã green JSON å¿çãè¿ããŸãã

ãã®æç¹ã§ã¯ãããã¯ãšã³ã ãµãŒãã¹ã®ããŒã«ã« ã€ã³ã¹ã¿ã³ã¹ã®ã¿ãå®è¡ããŠããããšã«æ³šæããŠãã ããã ä»åã¯ããã®ã³ã³ãããŒã¯å€éšäŸåé¢ä¿ãªãã§å®è¡ããããããKubernetes ããŒã¹ã®ãªãœãŒã¹ãžã®æ¥ç¶ã¯å¿ èŠãããŸããã
ã¢ã€ãã¢ã¯ã http://localhost (ãŸã éè²)äžã®Kubernetesã¯ã©ã¹ã¿ããæäŸãããããã³ããšã³ãããã»ã¹ã«ããã¯ãšã³ãæ å ±ãååŸããŠåºåãã¬ã³ããªã³ã°ãããããšã§ãã ããã¯ãGefyra ã®ããªããžæ©èœã䜿çšããŠè¡ãããŸãã æ¬¡ã®ã¹ãããã§ã¯ãã¯ã©ã¹ã¿ãŒã§å®è¡ãããŠããããã¯ãšã³ãããã»ã¹ãããŒã«ã«ã³ã³ããã€ã³ã¹ã¿ã³ã¹ã«ãªãŒããŒã¬ã€ããŠãããŒã«ã«ã³ãŒããã¯ã©ã¹ã¿ãŒã§æå¹ã«ãªãããã«ããŸãã
ã¹ã¿ãŒãç»é¢ã® Gefyra ã³ã³ãããŒã®äžèŠ§ã«æ»ããšãããŒã«ã«ã§å®è¡ãããŠããåã³ã³ãããŒã® [ ããªããž ] åã衚瀺ãããŸã (å³ 20)ã ãã®ãã¿ã³ãã¯ãªãã¯ãããšãããŒã«ã« ã³ã³ãããŒã®ã¯ã©ã¹ã¿ãŒãžã®ããªããžãäœæã§ããŸãã

次ã®ãã€ã¢ãã°ã§ãããªããžæ§æãå ¥åããå¿ èŠããããŸã(å³21)ã

ããªããžã® "Target" ããçŸåšã¯ã©ã¹ã¿ãŒå ã®ããã³ããšã³ã ããã»ã¹ãæäŸããŠããããã¯ãšã³ã ãããã«èšå®ããããªããžã®ã¿ã€ã ã¢ãŠãã 60 ç§ã«èšå®ããŠã¿ãŸãããã ãŸããã¯ã©ã¹ã¿ãŒã§å®è¡ãããŠãããããã·ã®ããŒããããŒã«ã«ã€ã³ã¹ã¿ã³ã¹ã«ãããããå¿ èŠããããŸããÂ
ããŒã«ã« ã³ã³ãããŒãã¯ã©ã¹ã¿ãŒãšã¯ç°ãªãããŒãã§ãªãã¹ã³ããããã«æ§æãããŠããå Žåã¯ãããã§ãããã³ã°ãæå®ã§ããŸã (å³ 22)ã ãã®äŸã§ã¯ããµãŒãã¹ã¯ã¯ã©ã¹ã¿ãŒãšããŒã«ã« ã³ã³ãã¥ãŒã¿ãŒã®äž¡æ¹ã®ããŒã 5003 ã§å®è¡ãããŠããããããã®ããŒãããããããå¿ èŠããããŸãã ããªããž ãã¿ã³ãã¯ãªãã¯ããåŸãGefyraã®ã¹ã¿ãŒããã¥ãŒã®ã³ã³ãããªã¹ãã«æ»ããŸã§ã«æ°ç§ããããŸãã

[ããªããž] ãã¿ã³ã®ã¢ã€ã³ã³ãå€ããã忢èšå·ã衚瀺ãããããã«ãªã£ãããšã確èªããŸã (å³ 23)ãããã¯ãããªããžæ©èœãåäœå¯èœã§ããããã®ãã¿ã³ãããäžåºŠã¯ãªãã¯ããããšã§çµäºã§ããããšãæå³ããŸãã

ãã®æç¹ã§ãããŒã«ã« ã³ãŒãã¯ã倿°ã«æ ŒçŽãã SVC_URL ãŠãã URL ã䜿çšããŠãã¯ã©ã¹ã¿ãŒå
ã®ããã³ããšã³ã ããã»ã¹ããã®èŠæ±ãåŠçã§ããŸãã ããã¯ãããã³ããšã³ãããã»ã¹èªäœã«å€æŽãå ããããšãªãå®è¡ã§ããŸããÂ
ããã確èªããã«ã¯ããã©ãŠã¶ã§ http://localhost ãéã(Docker Desktopã®KubernetesããæäŸãããŸã)ãåºå greenã. ããã¯ãããŒã«ã« ã³ãŒãã color ããããã£ã®å€ green ãè¿ããŠããããã§ãã ãã®å€ã¯IDEã§æå¹ãªå€ã«å€æŽã§ããããã«ã¯ã©ã¹ã¿ã«åæ ãããŸãã ããããã®ããŒã«ã®é©ãã¹ãåã§ãã
ããã¯ãšã³ããžã®å€æŽãå®äºããããã³ã³ããã®ããªããžãè§£æŸããããšãå¿ããªãã§ãã ããã ããã«ãããã¯ã©ã¹ã¿ãŒãå ã®ç¶æ ã«ãªã»ãããããããã³ããšã³ãã«å ã®ãçŸãããéè²ã®H1ãåã³è¡šç€ºãããŸããÂ
ãã®ã¢ãããŒãã«ãããKubernetesã¯ã©ã¹ã¿èªäœã倿ŽããããšãªããããŒã«ã«ã³ãŒãã§Kubernetesã§å®è¡ãããŠããã³ã³ãããã€ã³ã¿ãŒã»ããã§ããŸãã ããã¯ãKubernetes ã¯ã©ã¹ã¿ãŒèªäœã«å€æŽãå ããŠããªãããã§ãã 代ããã«ãKubernetesã§å®è¡ãããŠããã³ã³ãããããŒã«ã«ã³ãŒãã§ã€ã³ã¿ãŒã»ãããããã®ã€ã³ã¿ãŒã»ãããåŸã§ãªãªãŒã¹ããŸããã
çµè«
Gefyra ã¯äœ¿ãããã Docker Desktop æ¡åŒµæ©èœã§ãKubernetes ãšæ¥ç¶ããŠéçºã¯ãŒã¯ãããŒãšããŒã ã³ã©ãã¬ãŒã·ã§ã³ãæ¹åããŸãã ããã«ãããKubernetesã«æ¥ç¶ãããŸãŸéåžžã©ããã³ã³ãããå®è¡ã§ãããããæéãç¯çŽããé«ãéçº/æ¬çªããªãã£ã確ä¿ã§ããŸãã
BlueshoeéçºããŒã 㯠GitHubã®ã¹ã¿ãŒãé«ãè©äŸ¡ããDiscordã³ãã¥ããã£ã«åå ããŠè©³çްã確èªããããšãæè¿ããŸãã
èè ã«ã€ããŠ
Michael Schilonkaã¯ãKubernetesããœãããŠã§ã¢éçºãã©ãããã©ãŒã ã«ããªãåŸããšåŒ·ãä¿¡ããŠããŸãã 圌ã¯ãã¥ã³ãã³ãæ ç¹ãšãããšãŒãžã§ã³ ã·ãŒBlueshoe ã®å ±ååµèšè å ŒãããŒãžã³ã°ãã£ã¬ã¯ã¿ãŒã§ããã Gefyra ãš Getdeckã®ãã¯ãã«ã«ãªãŒãã§ãã 圌ã¯ãKubernetes å šè¬ãšãéçºã« Kubernetes ãã©ã®ããã«äœ¿çšããŠãããã«ã€ããŠè©±ããŸãã LinkedInã§åœŒããã©ã㌠ããŠãæ¥ç¶ãç¶æããŠãã ããã