ç¹å®ã®ã¢ããªã±ãŒã·ã§ã³ã«å¯ŸããŠKubernetesã¯ã©ã¹ã¿ãŒãèµ·åããå Žåãã¢ããªã±ãŒã·ã§ã³èªäœãããžãã¹ãããã³éçºè ããã®ãªãœãŒã¹ã«å¯ŸããŠã©ã®ãããªèŠä»¶ãæ瀺ããããç解ããå¿ èŠããããŸãã ãã®æ å ±ãããã°ãã¢ãŒããã¯ãã£äžã®æ±ºå®ãäžãããšãã§ããŸããç¹ã«ãç¹å®ã®ã€ã³ã°ã¬ã¹ã³ã³ãããŒã©ãŒãéžæããããšãã§ããŸããã€ã³ã°ã¬ã¹ã³ã³ãããŒã©ãŒã®å€ãã¯ä»æ¥ãã§ã«ååšããŠããŸãã å€ãã®èšäº/ããã¥ã¡ã³ããªã©ãå匷ããããšãªãå©çšå¯èœãªãªãã·ã§ã³ã®åºæ¬çãªã¢ã€ãã¢ãåŸãããã«ãã¡ã€ã³ïŒçç£æºåå®äºïŒIngressã³ã³ãããŒã©ãŒãå«ããããšã§ãã®ã¬ãã¥ãŒãæºåããŸããã
å°ãªããšãããã詳现ãªæ å ±ãšå®éã®å®éšã®åºçºç¹ã«ãªãããšãååãã¢ãŒããã¯ãã£ãœãªã¥ãŒã·ã§ã³ãéžæããã®ã«åœ¹ç«ã€ããšãé¡ã£ãŠããŸãã 以åã¯ããããã¯ãŒã¯äžã®ä»ã®åæ§ã®è³æã調æ»ããŸããããå¥åŠãªããšã«ãå®å šãªããããŠæãéèŠãª-æ§é åããã-åäžã®ã¬ãã¥ãŒã¯èŠã€ãããŸããã§ããã ã ããããã®ã®ã£ãããåããŠãã ããïŒ
åºæº
ååãšããŠãæ¯èŒãè¡ããæçšãªçµæãåŸãããã«ã¯ã察象åéã ãã§ãªããç 究ãã¯ãã«ã決å®ããåºæºã®ç¹å®ã®ãªã¹ããç解ããå¿ èŠããããŸãã Ingress / Kubernetesã䜿çšããå¯èœæ§ã®ãããã¹ãŠã®ã±ãŒã¹ãåæãããµããããã«ãã³ã³ãããŒã©ãŒã®æãäžè¬çãªèŠä»¶ã匷調ããããšããŸãã-ãããã®å Žåã§ãããã¹ãŠã®è©³çŽ°ããã³è©³çŽ°ãåå¥ã«èª¿æ»ããå¿ èŠãããããšã«æ³šæããŠãã ããã
ãããããã¹ãŠã®ãœãªã¥ãŒã·ã§ã³ã§å®è£ ãããŠãããèæ ®ãããŠããªãã»ã©éŠŽæã¿ã®ããç¹åŸŽããå§ããŸãã
- ãµãŒãã¹ã®åççºèŠïŒãµãŒãã¹çºèŠïŒ;
- SSLçµäº;
- Websocketã§åäœããŸãã
次ã«æ¯èŒãã€ã³ãã«ã€ããŠïŒ
ãµããŒããããŠãããããã³ã«
éžæã®åºæ¬çãªåºæºã®1ã€ã ãœãããŠã§ã¢ãæšæºã®HTTPã§åäœããªãå ŽåããäžåºŠã«å€ãã®ãããã³ã«ã§åäœããå¿ èŠãããå ŽåããããŸãã ã±ãŒã¹ãéæšæºã®å ŽåãåŸã§ã¯ã©ã¹ã¿ãŒãåæ§æããå¿ èŠããªãããã«ããã®èŠçŽ ãèæ ®ã«å ¥ããŠãã ããã ãã¹ãŠã®ã³ã³ãããŒã©ãŒã«ã€ããŠããµããŒãããããããã³ã«ã®ãªã¹ãã¯ç°ãªããŸãã
ãœãããŠã§ã¢ããŒã¹
ã³ã³ãããŒã©ãŒã®ããŒã¹ãšãªãããã€ãã®ã¢ããªã±ãŒã·ã§ã³ãªãã·ã§ã³ããããŸãã 人æ°ã®ãããã®ã¯nginxãtraefikãhaproxyãenvoyã§ãã äžè¬çãªã±ãŒã¹ã§ã¯ããã©ãã£ãã¯ã®éåä¿¡æ¹æ³ã«ã¯åœ±é¿ããŸãããããå éšãã®æœåšçãªãã¥ã¢ã³ã¹ãšç¹åŸŽãç¥ãããšã¯åžžã«åœ¹ç«ã¡ãŸãã
ãã©ãã£ãã¯ã«ãŒãã£ã³ã°
ç¹å®ã®ãµãŒãã¹ãžã®ãã©ãã£ãã¯ã®æ¹åã«ã€ããŠãäœã«åºã¥ããŠå€æã§ããŸããïŒ ããã¯éåžžããã¹ããšãã¹ã§ãããè¿œå ã®æ©èœããããŸãã
ã¯ã©ã¹ã¿ãŒåå空é
ããŒã ã¹ããŒã¹ïŒããŒã ã¹ããŒã¹ïŒ-Kubernetesã§ãªãœãŒã¹ãè«ççã«åå²ããæ©èœïŒã¹ããŒãžããããã¯ã·ã§ã³ãªã©ïŒã åããŒã ã¹ããŒã¹ã«åå¥ã«èšå®ããå¿ èŠãããIngressã³ã³ãããŒã©ãŒããããŸãïŒãããŠããã®ã¹ããŒã¹ã®ãããã«ã®ã¿ãã©ãã£ãã¯ãèªå°ã§ããŸãïŒã ãŸããã¯ã©ã¹ã¿ãŒå šäœã§ã°ããŒãã«ã«æ©èœããäžéšïŒããã³ãã®å§åçå€æ°ïŒããããŸãããããã®ãã©ãã£ãã¯ã¯ãåå空éã«é¢ä¿ãªããã¯ã©ã¹ã¿ãŒã®ä»»æã®ãããã«åããããŸãã
ã¢ããã¹ããªãŒã ã®ãµã³ãã«
ãã©ãã£ãã¯ã¯ã¢ããªã±ãŒã·ã§ã³ããµãŒãã¹ã®æ£åžžãªã€ã³ã¹ã¿ã³ã¹ã«ã©ã®ããã«éãããŸããïŒ ã¢ã¯ãã£ãããã³ããã·ããã§ãã¯ãåè©Šè¡ããµãŒããããã¬ãŒã«ãŒïŒè©³çŽ°ã«ã€ããŠã¯ãããšãã°Istioã«é¢ããèšäºãåç § ïŒ ãã«ã¹ã¿ã ãã«ã¹ãã§ãã¯ã®å®è£ ãªã©ã®ãªãã·ã§ã³ããããŸãã ã¢ã¯ã»ã·ããªãã£ãšãã©ã³ã¹ãã倱æãããµãŒãã¹ãã¿ã€ã ãªãŒã«æ€åããããã®é«ãèŠä»¶ãããå Žåãéåžžã«éèŠãªãã©ã¡ãŒã¿ãŒã
ãã©ã³ã·ã³ã°ã¢ã«ãŽãªãºã
å€ãã®ãªãã·ã§ã³ããããŸãïŒåŸæ¥ã®ã©ãŠã³ãããã³ããrdp-cookiesã®ãããªãšããŸããã¯ãªãã®ã ãã㊠ã¹ãã£ãããŒã»ãã·ã§ã³ã®ãããªããã€ãã®æ©èœã§ãã
èªèšŒ
ã³ã³ãããŒã©ã¯ã©ã®èªå¯ã¹ããŒã ããµããŒãããŠããŸããïŒ Basicãdigestãoauthãexternal-auth-ãããã®ãªãã·ã§ã³ã¯ããªãã¿ã®ã¯ãã ãšæããŸãã ããã¯ãIngressãä»ããŠã¢ã¯ã»ã¹ããéçºè ïŒããã³/ãŸãã¯åã«éãããã®ïŒã«å€ãã®åè·¯ã䜿çšããå Žåã®éèŠãªåºæºã§ãã
ãã©ãã£ãã¯ååž
ã³ã³ãããŒã©ãŒã¯ãã«ããªã¢ã®ããŒã«ã¢ãŠããA / Bãã¹ãããã©ãã£ãã¯ã®ãã©ãŒãªã³ã°ïŒãã©ãŒãªã³ã°/ã·ã£ããŒã€ã³ã°ïŒãªã©ã®ãã©ãã£ãã¯åæ£ã«ãã䜿çšãããã¡ã«ããºã ããµããŒãããŠããŸããïŒ ããã¯ãçç£çãªãã¹ããæŠéäžã§ã¯ãªãïŒãŸãã¯æå°éã®æ倱ã§ïŒè£œåãšã©ãŒã®ãããã°ããã©ãã£ãã¯åæãªã©ã®ããã«æ£ç¢ºã§æ£ç¢ºãªãã©ãã£ãã¯å¶åŸ¡ãå¿ èŠãšããã¢ããªã±ãŒã·ã§ã³ã«ãšã£ãŠã¯æ¬åœã«çãããŒãã§ãã
ææãµãã¹ã¯ãªãã·ã§ã³
é«åºŠãªæ©èœãæè¡ãµããŒããåããã³ã³ãããŒã©ãŒã®ææãªãã·ã§ã³ã¯ãããŸããïŒ
ã°ã©ãã£ã«ã«ãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹ïŒWeb UIïŒ
ã³ã³ãããŒã©ãŒã®æ§æãå¶åŸ¡ããããã®ã°ã©ãã£ã«ã«ã€ã³ã¿ãŒãã§ã€ã¹ã¯ãããŸããïŒ åºæ¬çã«ãã䟿å©ãããã³/ãŸãã¯Ingressã®èšå®ãå€æŽããå¿ èŠããã人ã«ãšã£ãŠã¯ããçã®ããã³ãã¬ãŒãã§ã®äœæ¥ã¯äžäŸ¿ã§ãã éçºè ããã©ãã£ãã¯ã䜿çšããå®éšããªã³ã¶ãã©ã€ã§å®è¡ããå Žåã«åœ¹ç«ã¡ãŸãã
JWTæ€èšŒ
æçµã¢ããªã±ãŒã·ã§ã³ã«å¯ŸãããŠãŒã¶ãŒã®æ¿èªãšæ€èšŒã®ããã®WebããŒã¯ã³ã®çµã¿èŸŒã¿JSONæ€èšŒã®ååšã
æ§æã®ã«ã¹ã¿ãã€ãºã®æ©èœ
æšæºã®æ§æãã³ãã¬ãŒãã«ç¬èªã®ãã£ã¬ã¯ãã£ãããã©ã°ãªã©ãè¿œå ããã¡ã«ããºã ãæã€ãšããæå³ã§ã®ãã³ãã¬ãŒãã®æ¡åŒµæ§
åºæ¬çãªDDOSä¿è·ã¡ã«ããºã
åçŽãªã¬ãŒãå¶éã¢ã«ãŽãªãºã ããŸãã¯ã¢ãã¬ã¹ããã¯ã€ããªã¹ããåœãªã©ã«åºã¥ããŠãã©ãã£ãã¯ããã£ã«ã¿ãªã³ã°ããããã®ããè€éãªãªãã·ã§ã³
èŠæ±ãã¬ãŒã¹
ã€ã³ã°ã¬ã¹ããç¹å®ã®ãµãŒãã¹/ããããžã®ããããŠçæ³çã«ã¯ãµãŒãã¹/ãããéã®ãªã¯ãšã¹ããç£èŠã远跡ããããã°ããæ©äŒã
WAF
ã¢ããªã±ãŒã·ã§ã³ãã¡ã€ã¢ãŠã©ãŒã«ã®ãµããŒãã
å ¥åã³ã³ãããŒã©ãŒ
ã³ã³ãããŒã©ã®ãªã¹ãã¯ã Kubernetesã®å ¬åŒããã¥ã¡ã³ããšãã®è¡šã«åºã¥ããŠããŸã ã ãããã®ç¹ç°æ§ãŸãã¯äœãæç çïŒéçºã®åæ段éïŒã®ããã«ããããã®ããã€ããã¬ãã¥ãŒããé€å€ããŸããã æ®ãã®ãã®ã«ã€ããŠã¯ä»¥äžã§èª¬æããŸãã ãœãªã¥ãŒã·ã§ã³ã®äžè¬çãªèª¬æããå§ããŠãããããããŒãã«ã«é²ã¿ãŸãã
Kubernetesã«ããã€ã³ã°ã¬ã¹
ãŠã§ããµã€ãïŒ github.com/kubernetes/ingress-nginx
ã©ã€ã»ã³ã¹ïŒApache 2.0
ããã¯ãã³ãã¥ããã£ã«ãã£ãŠéçºãããŠããKubernetesã®å ¬åŒã³ã³ãããŒã©ãŒã§ãã ååããæãããªããã«ãnginxã«åºã¥ããŠãããè¿œå ã®æ©èœãå®è£ ããããã«äœ¿çšãããLuaãã©ã°ã€ã³ã®ç°ãªãã»ããã§è£å®ãããŠããŸãã nginxèªäœã®äººæ°ãšãã³ã³ãããŒã©ãŒãšããŠäœ¿çšããå Žåã®æå°éã®å€æŽã«ããããã®ãªãã·ã§ã³ã¯ïŒWebã®çµéšãããïŒæãåçŽã§æãç解ããããæ§æå¹³åãšã³ãžãã¢ãããããŸããã
NGINX Incã«ããã€ã³ã°ã¬ã¹
ãŠã§ããµã€ãïŒ github.com/nginxinc/kubernetes-ingress
ã©ã€ã»ã³ã¹ïŒApache 2.0
nginxéçºè ã®å ¬åŒè£œåã NGINX Plusã«åºã¥ããææçããããŸãã äž»ãªã¢ã€ãã¢ã¯ãé«ã¬ãã«ã®å®å®æ§ãäžå®ã®åŸæ¹äºææ§ãç¡é¢ä¿ãªã¢ãžã¥ãŒã«ã®æ¬ åŠãããã³Luaã®æåŠã«ããéæãããïŒå ¬åŒã³ã³ãããŒã©ãŒãšæ¯èŒããïŒå®£èšãããé床ã®åäžã§ãã
ç¡æçã¯ãå ¬åŒã®ã³ã³ãããŒã©ãŒãšæ¯èŒããå Žåãå«ããŠãå€§å¹ ã«åæžãããŸãïŒåãLuaã¢ãžã¥ãŒã«ãäžè¶³ããŠããããïŒã åæã«æ¯æãããæ©èœã«ã¯ããªã¢ã«ã¿ã€ã ã¡ããªãã¯ãJWTæ€èšŒãã¢ã¯ãã£ããã«ã¹ãã§ãã¯ãªã©ãããªãå¹ åºãè¿œå æ©èœããããŸãã NGINX Ingressã«å¯ŸããéèŠãªå©ç¹ã¯ãTCP / UDPãã©ãã£ãã¯ãå®å šã«ãµããŒãããŠããããšã§ãïŒã³ãã¥ããã£ããŒãžã§ã³ã§ãïŒïŒã æ¬ ç¹ã¯ããã©ãã£ãã¯åæ£ã®æ©èœããªãããšã§ãããã ããããã¯ãéçºè ã«ãšã£ãŠæåªå äºé ãã§ãããå®è£ ã«ã¯æéãããããŸãã
Kong Ingress
ãŠã§ããµã€ãïŒ github.com/Kong/kubernetes-ingress-controller
ã©ã€ã»ã³ã¹ïŒApache 2.0
Kong Inc.ãéçºãã補å åçšçãšç¡æçã®2ã€ã®ããŒãžã§ã³ããããŸãã ããã¯nginxã«åºã¥ããŠããããã®æ©èœã¯Luaäžã®å€æ°ã®ã¢ãžã¥ãŒã«ã«ãã£ãŠæ¡åŒµãããŠããŸãã
åœåã¯ãAPIãªã¯ãšã¹ãã®åŠçãšã«ãŒãã£ã³ã°ãã€ãŸã API Gatewayã«äŒŒãŠããŸãããçŸæç¹ã§ã¯æ¬æ ŒçãªIngressã³ã³ãããŒã©ãŒã«ãªã£ãŠããŸãã äž»ãªå©ç¹ïŒã€ã³ã¹ããŒã«ãšæ§æãç°¡åã§ãããŸããŸãªè¿œå æ©èœãå®è£ ãããŠããå€ãã®è¿œå ã¢ãžã¥ãŒã«ïŒãµãŒãããŒãã£ã®éçºè ãå«ãïŒã ãã ããçµã¿èŸŒã¿æ©èœã¯ãã§ã«å€ãã®æ©èœãæäŸããŠããŸãã äœæ¥æ§æã¯ãCRDãªãœãŒã¹ã䜿çšããŠè¡ãããŸãã
補åã®éèŠãªæ©èœ-ã¯ãã¹ããŒã ã¹ããŒã¹ã®ä»£ããã«åãåè·¯å ã§åäœããããšã¯è°è«ã®äœå°ã®ãããããã¯ã§ããäžéšã®äººã«ãšã£ãŠã¯æ¬ ç¹ïŒååè·¯ã®ãšã³ãã£ãã£ãäœæããå¿ èŠãããïŒãšæãããŸãã 1ã€ã®ã³ã³ãããŒã©ãŒãæ éããå Žåãåé¡ã¯1ã€ã®åè·¯ã®ã¿ã«éå®ãããŸãã
ãã¬ãã£ã¯
ãŠã§ããµã€ãïŒ github.com/containous/traefik
ã©ã€ã»ã³ã¹ïŒMIT
ãã€ã¯ããµãŒãã¹ãšãã®åçç°å¢ã«å¯ŸããèŠæ±ã®ã«ãŒãã£ã³ã°ãåŠçããããã«æåã«äœæããããããã·ã ãããã£ãŠãå€ãã®äŸ¿å©ãªæ©èœïŒåèµ·åããã«æ§æãå®å šã«æŽæ°ããå€æ°ã®ãã©ã³ã·ã³ã°ã¡ãœãããWebã€ã³ã¿ãŒãã§ã€ã¹ã転éã¡ããªãã¯ããµããŒãããããŸããŸãªãããã³ã«ãREST APIãã«ããªã¢ãªãªãŒã¹ãªã©ããµããŒãããŸãã ãŸããããã«äœ¿çšã§ãã蚌ææžã®æå·åããµããŒããããŠããŸãã æ¬ ç¹ã¯ãé«å¯çšæ§ïŒHAïŒã®çµç¹ã§ã¯ãã³ã³ãããŒã©ãŒãç¬èªã®KVã¹ãã¬ãŒãžãã€ã³ã¹ããŒã«ããŠæ¥ç¶ããå¿ èŠãããããšã§ãã
HAProxy
ãŠã§ããµã€ãïŒ github.com/jcmoraisjr/haproxy-ingress
ã©ã€ã»ã³ã¹ïŒApache 2.0
HAProxyã¯ããããã·ããã³ãã©ãã£ãã¯ãã©ã³ãµãŒãšããŠé·ãéç¥ãããŠããŸãã Kubernetesã¯ã©ã¹ã¿ãŒå ã§ã¯ãããœãããæ§ææŽæ°ïŒãã©ãã£ãã¯ã®æ倱ãªãïŒãDNSããŒã¹ã®ãµãŒãã¹æ€åºãAPIã䜿çšããåçæ§æãæäŸãããŸãã CM'aã眮ãæããããšã«ããæ§æãã³ãã¬ãŒãã®å®å šãªã«ã¹ã¿ãã€ãºãããã³ãã®äžã®Sprigã©ã€ãã©ãªãŒã®æ©èœã䜿çšããå¯èœæ§ãé åçã«ãªããŸãã äžè¬çã«ããœãªã¥ãŒã·ã§ã³ã®äž»ãªéç¹ã¯ãé«éåãæé©åãããã³æ¶è²»ãªãœãŒã¹ã®å¹çåã§ãã ã³ã³ãããŒã©ãŒã®å©ç¹ã¯ãèšé²çãªæ°ã®ç°ãªããã©ã³ã¹æ¹æ³ã®ãµããŒãã§ãã
ãã€ãžã£ãŒ
ãŠã§ããµã€ãïŒ github.com/appscode/voyager
ã©ã€ã»ã³ã¹ïŒApache 2.0
HAproxyããŒã¹ã®ã³ã³ãããŒã©ãŒãããã¯ãå€æ°ã®ãããã€ããŒã§å¹ åºãæ©èœããµããŒããããŠãããŒãµã«ãœãªã¥ãŒã·ã§ã³ãšããŠäœçœ®ä»ããããŠããŸãã L7ãšL4ã§ãã©ãã£ãã¯ã®ãã©ã³ã¹ãåãæ©äŒãææ¡ãããŠãããTCP L4ãã©ãã£ãã¯å šäœã®ãã©ã³ã¹ãåãããšã¯ããœãªã¥ãŒã·ã§ã³ã®éèŠãªæ©èœã®1ã€ãšèšããŸãã
茪é
ãŠã§ããµã€ãïŒ github.com/heptio/contour
ã©ã€ã»ã³ã¹ïŒApache 2.0
Envoyã¯ãã®ãœãªã¥ãŒã·ã§ã³ã®åºç€ãç¯ããã ãã§ãªãããã®äººæ°ã®ãããããã·ã®äœæè ãšå ±åã§éçºãããŸããã éèŠãªæ©èœã¯ãIngressRoute CRDãªãœãŒã¹ã䜿çšããŠIngressãªãœãŒã¹ç®¡çãåå²ããæ©èœã§ãã åäžã®ã¯ã©ã¹ã¿ãŒã䜿çšããå€ãã®éçºããŒã ãæã€çµç¹ã®å Žåãããã«ãããè¿é£ã®åè·¯ã®ãã©ãã£ãã¯ã®å®å šæ§ãæ倧åããã€ã³ã°ã¬ã¹ãªãœãŒã¹ãå€æŽããéã®ãšã©ãŒããä¿è·ããããšãã§ããŸãã
ãŸããæ¡åŒµããããã©ã³ã¹æ¹æ³ã®ã»ããïŒãªã¯ãšã¹ãã®ãã©ãŒãªã³ã°ãèªååè©Šè¡ããªã¯ãšã¹ãã®ã¬ãŒãå¶éãªã©ïŒããã©ãã£ãã¯ãããŒãšé害ã®è©³çŽ°ãªç£èŠãæäŸããŸãã ããããäžéšã®äººã«ãšã£ãŠã¯ãã¹ãã£ãããŒã»ãã·ã§ã³ã®ãµããŒãããªããšããé倧ãªæ¬ ç¹ãããã§ãããïŒãã ããäœæ¥ã¯ãã§ã«é²è¡äžã§ã ïŒã
ã€ã¹ãã£ãªã€ã³ã°ã¬ã¹
ãŠã§ããµã€ãïŒ istio.io/docs/tasks/traffic-management/ingress
ã©ã€ã»ã³ã¹ïŒApache 2.0
å æ¬çãªãµãŒãã¹ã¡ãã·ã¥ãœãªã¥ãŒã·ã§ã³ãå€éšããã®çä¿¡ãã©ãã£ãã¯ãå¶åŸ¡ããã ãã§ãªããã¯ã©ã¹ã¿ãŒå ã®ãã¹ãŠã®ãã©ãã£ãã¯ãå¶åŸ¡ããå ¥åã³ã³ãããŒã©ãŒã§ãã å éšã§ã¯ãEnvoyã¯åãµãŒãã¹ã®ãµã€ãã«ãŒãããã·ãšããŠäœ¿çšãããŸãã æ¬è³ªçã«ãããã¯ãäœã§ãã§ããã倧èŠæš¡ãªçµã¿åããã§ããããã®äž»ãªã¢ã€ãã¢ã¯ãæ倧éã®ç®¡çæ§ãæ¡åŒµæ§ãã»ãã¥ãªãã£ãããã³éææ§ã§ãã ããã«ããããã©ãã£ãã¯ã®ã«ãŒãã£ã³ã°ããµãŒãã¹éã®ã¢ã¯ã»ã¹ã®èš±å¯ããã©ã³ã¹ãç£èŠãã«ããªã¢ãªãªãŒã¹ãªã©ã埮調æŽã§ããŸãã Istioã·ãªãŒãºã®èšäºã«æ»ããã€ã¯ããµãŒãã¹ã«æ»ã㧠Istioã®è©³çŽ°ãèªãã§ãã ããã
倧䜿
ãŠã§ããµã€ãïŒ github.com/datawire/ambassador
ã©ã€ã»ã³ã¹ïŒApache 2.0
Envoyã«åºã¥ãå¥ã®ãœãªã¥ãŒã·ã§ã³ã ç¡æã®åçšããŒãžã§ã³ããããŸãã ãKubernetesã«å®å šã«ãã€ãã£ãããšããŠäœçœ®ä»ãããã察å¿ããå©ç¹ïŒã¡ãœãããšK8sã¯ã©ã¹ã¿ãŒã®ãšã³ãã£ãã£ãšã®ç·å¯ãªçµ±åïŒããããããŸãã
æ¯èŒè¡š
ãããã£ãŠãèšäºã®ã¯ã©ã€ããã¯ã¹ã¯ãã®å·šå€§ãªè¡šã§ãã
ãã詳现ã«è¡šç€ºããã«ã¯ã¯ãªãã¯ããŠãã ããããŸãã Googleã¹ãã¬ããã·ãŒã圢åŒã§ãå©çšã§ããŸãã
ãŸãšãããš
ãã®èšäºã®ç®çã¯ãç¹å®ã®ã±ãŒã¹ã§ã©ã®ãããªéžæãè¡ããã«ã€ããŠãããå®å šãªç解ãæäŸããããšã§ãïŒãã ããå®å šã«ç¶²çŸ ããŠããããã§ã¯ãããŸããïŒïŒã ãã€ãã®ããã«ãåã³ã³ãããŒã©ãŒã«ã¯é·æãšçæããããŸã...
å€å žçãªKubernetes Ingressã¯ããã®ã¢ã¯ã»ã·ããªãã£ãšå®çžŸã«åªããŠãããæ©èœãéåžžã«è±å¯ã§ããäžè¬ã«ããç®ãåŒããå¿ èŠããããŸãã ãã ããå®å®æ§ãæ©èœã¬ãã«ãããã³éçºã®èŠä»¶ãå¢å ããŠããå Žåã¯ãNGINX Plusãšææãµãã¹ã¯ãªãã·ã§ã³ã䜿çšããIngressã«æ³šæãã䟡å€ããããŸãã Kongã«ã¯è±å¯ãªãã©ã°ã€ã³ã»ããïŒããã³ãããã«å¿ããŠæäŸããæ©èœïŒããããææçã«ã¯ããã«å€ãã®ãã©ã°ã€ã³ããããŸãã API GatewayãCRDãªãœãŒã¹ã«åºã¥ãåçæ§æãããã³åºæ¬çãªKubernetesãµãŒãã¹ãšããŠæ©èœããæ©äŒãè±å¯ã«ãããŸãã
ãã©ã³ã·ã³ã°ããã³èªèšŒæ¹æ³ã®èŠä»¶ãå¢ããŠãããããTraefikãšHAProxyãã芧ãã ããã ãããã¯ãé·å¹Žã«ããã£ãŠå®èšŒããããªãŒãã³ãœãŒã¹ãããžã§ã¯ãã§ãããéåžžã«å®å®ããŠãããç©æ¥µçã«éçºãããŠããŸãã Contourã¯æ°å¹Žåãã䜿çšãããŠããŸããããŸã è¥ãããŠãEnvoyã®äžã«è¿œå ãããåºæ¬çãªæ©èœãããããŸããã ã¢ããªã±ãŒã·ã§ã³ã®åã«WAFã®ååš/åã蟌ã¿ã®èŠä»¶ãããå Žåã¯ãKubernetesãŸãã¯HAProxyããã®åãIngressã«æ³šæããå¿ èŠããããŸãã
ãããŠãæãè±å¯ãªæ©èœã¯ãEnvoyãç¹ã«Istioã«åºã¥ããŠæ§ç¯ããã補åã§ãã ãäœã§ãã§ãããè€éãªãœãªã¥ãŒã·ã§ã³ã®ããã§ãããããã¯ä»ã®ãœãªã¥ãŒã·ã§ã³ãããæ§æ/èµ·å/管çãå ¥åããããã®ãããå€ãèããé«ãããšãæå³ããŸãã
æšæºã³ã³ãããŒã©ãŒãšããŠãããŒãºã®80ã90ïŒ ãã«ããŒããKubernetes IngressãéžæããŠäœ¿çšããŠããŸãã ããã¯éåžžã«ä¿¡é Œæ§ãé«ããèšå®ãæ¡åŒµãç°¡åã§ãã äžè¬çãªå Žåãç¹å®ã®èŠä»¶ããªãå Žåãã»ãšãã©ã®ã¯ã©ã¹ã¿ãŒ/ã¢ããªã±ãŒã·ã§ã³ã«é©ããŠããã¯ãã§ãã åãæ±çšæ§ããããæ¯èŒçåçŽãªè£œåã®ãã¡ãTraefikãšHAProxyãæšå¥šã§ããŸãã
PS
ããã°ãã芧ãã ããã
- ãIstioã§ãã€ã¯ããµãŒãã¹ã«æ»ããïŒ ããŒã1ïŒäž»ãªæ©èœã«ç²ŸéïŒ ã ããŒã2ïŒã«ãŒãã£ã³ã°ããã©ãã£ãã¯ç®¡çïŒ ã ããŒã3ïŒèªèšŒãšæ¿èªïŒ ã
- Kubernetesã®ãã³ããšã³ãïŒNGINX Ingressã®ããŒãœãã©ã€ãºããããšã©ãŒããŒãž ã
- Kubernetesã®ãã³ããšã³ãïŒéçºãµã€ããžã®ã¢ã¯ã»ã¹ ã