αž‘αž·αžŠαŸ’αž‹αž—αžΆαž–αž‘αžΌαž‘αŸ… αž“αž·αž„αž€αžΆαžšαž”αŸ’αžšαŸ€αž”αž’αŸ€αž”αž§αž”αž€αžšαžŽαŸαž”αž‰αŸ’αž‡αžΆ Ingress αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ Kubernetes

αž‘αž·αžŠαŸ’αž‹αž—αžΆαž–αž‘αžΌαž‘αŸ… αž“αž·αž„αž€αžΆαžšαž”αŸ’αžšαŸ€αž”αž’αŸ€αž”αž§αž”αž€αžšαžŽαŸαž”αž‰αŸ’αž‡αžΆ Ingress αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ Kubernetes

αž“αŸ…αž–αŸαž›αž”αžΎαž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αŸ’αžšαž»αž˜ Kubernetes αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹αž˜αž½αž™ αž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαž™αž›αŸ‹αž–αžΈαž’αŸ’αžœαžΈαžŠαŸ‚αž›αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαŸ’αž›αž½αž“αžœαžΆ αž’αžΆαž‡αžΈαžœαž€αž˜αŸ’αž˜ αž“αž·αž„αž’αŸ’αž“αž€αž’αž—αž·αžœαžŒαŸ’αžαž“αŸαž”αž„αŸ’αž€αžΎαžαž’αž“αž’αžΆαž“αž“αŸαŸ‡αŸ” αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž–αŸαžαŸŒαž˜αžΆαž“αž“αŸαŸ‡ αž’αŸ’αž“αž€αž’αžΆαž…αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž’αŸ’αžœαžΎαž€αžΆαžšαžŸαž˜αŸ’αžšαŸαž…αž…αž·αžαŸ’αžαž•αŸ’αž“αŸ‚αž€αžŸαŸ’αžαžΆαž”αžαŸ’αž™αž€αž˜αŸ’αž˜ αž αžΎαž™αž‡αžΆαž–αž·αžŸαŸαžŸαž€αžΆαžšαž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸαž§αž”αž€αžšαžŽαŸαž”αž‰αŸ’αž‡αžΆ Ingress αž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹ αžŠαŸ‚αž›αž€αŸ’αž“αž»αž„αž“αŸ„αŸ‡αž˜αžΆαž“αž˜αž½αž™αž…αŸ†αž“αž½αž“αž’αŸ†αžšαž½αž…αž‘αŸ…αž αžΎαž™αž“αžΆαž–αŸαž›αž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αž“αŸαŸ‡αŸ” αžŠαžΎαž˜αŸ’αž”αžΈαž‘αž‘αž½αž›αž”αžΆαž“αž‚αŸ†αž“αž·αžαž‡αžΆαž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž“αŸƒαž‡αž˜αŸ’αžšαžΎαžŸαžŠαŸ‚αž›αž˜αžΆαž“αžŠαŸ„αž™αž˜αž·αž“αž…αžΆαŸ†αž”αžΆαž…αŸ‹αž†αŸ’αž›αž„αž€αžΆαžαŸ‹αž’αžαŸ’αžαž”αž‘/αž―αž€αžŸαžΆαžšαž…αŸ’αžšαžΎαž“ αŸ”αž›αŸ” αž™αžΎαž„αž”αžΆαž“αžšαŸ€αž”αž…αŸ†αž‘αž·αžŠαŸ’αž‹αž—αžΆαž–αž‘αžΌαž‘αŸ…αž“αŸαŸ‡ αžšαž½αž˜αž‘αžΆαŸ†αž„αž§αž”αž€αžšαžŽαŸαž”αž‰αŸ’αž‡αžΆαžŸαŸ†αžαžΆαž“αŸ‹ (αž•αž›αž·αžαžšαž½αž…αžšαžΆαž›αŸ‹)αŸ”

αž™αžΎαž„αžŸαž„αŸ’αžƒαžΉαž˜αžαžΆαžœαžΆαž“αžΉαž„αž‡αž½αž™αžŸαž αžŸαŸαžœαž·αž€αž€αŸ’αž“αž»αž„αž€αžΆαžšαž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸαžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŸαŸ’αžαžΆαž”αžαŸ’αž™αž€αž˜αŸ’αž˜ - αž™αŸ‰αžΆαž„αž αŸ„αž…αžŽαžΆαžŸαŸ‹αžœαžΆαž“αžΉαž„αž€αŸ’αž›αžΆαž™αž‡αžΆαž…αŸ†αžŽαž»αž…αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž˜αž½αž™αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž‘αž‘αž½αž›αž”αžΆαž“αž–αŸαžαŸŒαž˜αžΆαž“αž›αž˜αŸ’αž’αž·αžαž”αž“αŸ’αžαŸ‚αž˜ αž“αž·αž„αž€αžΆαžšαž–αž·αžŸαŸ„αž’αž“αŸαž‡αžΆαž€αŸ‹αžŸαŸ’αžαŸ‚αž„αŸ” αž–αžΈαž˜αž»αž“ αž™αžΎαž„αž”αžΆαž“αžŸαž·αž€αŸ’αžŸαžΆαžŸαž˜αŸ’αž—αžΆαžšαŸˆαžŸαŸ’αžšαžŠαŸ€αž„αž‚αŸ’αž“αžΆαž•αŸ’αžŸαŸαž„αž‘αŸ€αžαž“αŸ…αž›αžΎαž”αžŽαŸ’αžαžΆαž‰ αž αžΎαž™αž’αŸ’αžœαžΈαžŠαŸ‚αž›αž…αž˜αŸ’αž›αŸ‚αž€αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαžΆαž“αŸ‹ αžšαž€αž˜αž·αž“αžƒαžΎαž‰αž–αŸαž‰αž›αŸαž‰ αž¬αžαž·αž…αž‡αžΆαž„αž“αŸαŸ‡αž‘αŸ αž αžΎαž™αžŸαŸ†αžαžΆαž“αŸ‹αž”αŸ†αž•αž»αž - αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’ - αž–αž·αž“αž·αžαŸ’αž™αž‘αžΎαž„αžœαž·αž‰αŸ” αžŠαžΌαž…αŸ’αž“αŸαŸ‡αžŸαžΌαž˜αž”αŸ†αž–αŸαž‰αž…αž“αŸ’αž›αŸ„αŸ‡αž“αŸαŸ‡!

αž›αž€αŸ’αžαžŽαŸˆαžœαž·αž“αž·αž…αŸ’αž†αŸαž™

αž‡αžΆαž‚αŸ„αž›αž€αžΆαžšαžŽαŸ αžŠαžΎαž˜αŸ’αž”αžΈαž’αŸ’αžœαžΎαž€αžΆαžšαž”αŸ’αžšαŸ€αž”αž’αŸ€αž” αž“αž·αž„αž‘αž‘αž½αž›αž”αžΆαž“αž›αž‘αŸ’αž’αž•αž›αžŠαŸ‚αž›αž˜αžΆαž“αž”αŸ’αžšαž™αŸ„αž‡αž“αŸ αž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαž™αž›αŸ‹αž˜αž·αž“αžαŸ’αžšαžΉαž˜αžαŸ‚αž”αŸ’αžšαž’αžΆαž“αž”αž‘αž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αž‘αŸ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž€αŸαž˜αžΆαž“αž”αž‰αŸ’αž‡αžΈαž›αž€αŸ’αžαžŽαŸˆαžœαž·αž“αž·αž…αŸ’αž†αŸαž™αž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹αžŠαŸ‚αž›αž“αžΉαž„αž€αŸ†αžŽαžαŸ‹αžœαŸ‰αž·αž…αž‘αŸαžšαžŸαŸ’αžšαžΆαžœαž‡αŸ’αžšαžΆαžœαž•αž„αžŠαŸ‚αžšαŸ” αžŠαŸ„αž™αž˜αž·αž“αž’αŸ’αžœαžΎαž–αž»αžαž‡αžΆαžœαž·αž—αžΆαž‚αž€αžšαžŽαžΈαžŠαŸ‚αž›αž’αžΆαž…αž€αžΎαžαž˜αžΆαž“αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž“αŸƒαž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹ Ingress / Kubernetes αž™αžΎαž„αž”αžΆαž“αž–αŸ’αž™αžΆαž™αžΆαž˜αž‚αžΌαžŸαž”αž‰αŸ’αž‡αžΆαž€αŸ‹αžαž˜αŸ’αžšαžΌαžœαž€αžΆαžšαž‘αžΌαž‘αŸ…αž”αŸ†αž•αž»αžαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž§αž”αž€αžšαžŽαŸαž”αž‰αŸ’αž‡αžΆ - αžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαŸ€αž”αž…αŸ†αžαžΆαž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαžŽαžΆαž€αŸαžŠαŸ„αž™αž’αŸ’αž“αž€αž“αžΉαž„αžαŸ’αžšαžΌαžœαžŸαž·αž€αŸ’αžŸαžΆαž–αžΈαž›αž€αŸ’αžαžŽαŸˆαž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹ αž“αž·αž„αž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αžŠαŸ„αž™αž‘αŸ‚αž€αž–αžΈαž‚αŸ’αž“αžΆαŸ”

αž”αŸ‰αž»αž“αŸ’αžαŸ‚β€‹αžαŸ’αž‰αž»αŸ†β€‹αž“αžΉαž„β€‹αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜β€‹αž‡αžΆαž˜αž½αž™αž“αžΉαž„β€‹αž›αž€αŸ’αžαžŽαŸˆβ€‹αžŠαŸ‚αž›β€‹αž’αŸ’αž›αžΆαž”αŸ‹β€‹αžŸαŸ’αž‚αžΆαž›αŸ‹β€‹αž αžΎαž™β€‹αžŠαŸ‚αž›β€‹αž–αž½αž€αž‚αŸβ€‹αžαŸ’αžšαžΌαžœβ€‹αž”αžΆαž“β€‹αž’αž“αž»αžœαžαŸ’αžβ€‹αž€αŸ’αž“αž»αž„β€‹αžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™β€‹αž‘αžΆαŸ†αž„αž’αžŸαŸ‹ αž αžΎαž™β€‹αž˜αž·αž“β€‹αžαŸ’αžšαžΌαžœβ€‹αž”αžΆαž“β€‹αž‚αŸβ€‹αž–αž·αž…αžΆαžšαžŽαžΆβ€‹αž‘αžΎαž™β€‹αŸ–

  • αž€αžΆαžšαžšαž€αžƒαžΎαž‰αžαžΆαž˜αžœαž“αŸ’αžαž“αŸƒαžŸαŸαžœαžΆαž€αž˜αŸ’αž˜ (αž€αžΆαžšαžšαž€αžƒαžΎαž‰αžŸαŸαžœαžΆαž€αž˜αŸ’αž˜);
  • αž€αžΆαžšαž”αž‰αŸ’αž…αž”αŸ‹ SSL;
  • αž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαž˜αž½αž™ websockets αŸ”

αž₯αž‘αžΌαžœαž“αŸαŸ‡αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž…αŸ†αžŽαž»αž…αž“αŸƒαž€αžΆαžšαž”αŸ’αžšαŸ€αž”αž’αŸ€αž”:

αž–αž·αž’αžΈαž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžš

αž›αž€αŸ’αžαžŽαŸˆαžœαž·αž“αž·αž…αŸ’αž†αŸαž™αž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸαž‡αžΆαž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž˜αž½αž™αŸ” αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž”αŸ’αžšαž αŸ‚αž›αž‡αžΆαž˜αž·αž“αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž›αžΎ HTTP αžŸαŸ’αžαž„αŸ‹αžŠαžΆαžšαž‘αŸ αž¬αžœαžΆαž’αžΆαž…αžαŸ’αžšαžΌαžœαž€αžΆαžšαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž›αžΎαž–αž·αž’αžΈαž€αžΆαžšαž…αŸ’αžšαžΎαž“αž€αŸ’αž“αž»αž„αž–αŸαž›αžαŸ‚αž˜αž½αž™αŸ” αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž€αžšαžŽαžΈαžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž˜αž·αž“αž˜αžΆαž“αž›αž€αŸ’αžαžŽαŸˆαžŸαŸ’αžαž„αŸ‹αžŠαžΆαžš αžαŸ’αžšαžΌαžœαž”αŸ’αžšαžΆαž€αžŠαžαžΆαž™αž€αž€αžαŸ’αžαžΆαž“αŸαŸ‡αž‘αŸ…αž€αŸ’αž“αž»αž„αž‚αžŽαž“αžΈ αžŠαžΎαž˜αŸ’αž”αžΈαž€αž»αŸ†αž±αŸ’αž™αž’αŸ’αž“αž€αž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž…αž„αŸ’αž€αŸ„αž˜αž‘αžΎαž„αžœαž·αž‰αž“αŸ…αž–αŸαž›αž€αŸ’αžšαŸ„αž™αŸ” αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž§αž”αž€αžšαžŽαŸαž”αž‰αŸ’αž‡αžΆαž‘αžΆαŸ†αž„αž’αžŸαŸ‹ αž”αž‰αŸ’αž‡αžΈαž“αŸƒαž–αž·αž’αžΈαž€αžΆαžšαžŠαŸ‚αž›αž”αžΆαž“αž‚αžΆαŸ†αž‘αŸ’αžšαž”αŸ’αžšαŸ‚αž”αŸ’αžšαž½αž›αŸ”

αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž“αŸ…αžŸαŸ’αž“αžΌαž›

αž˜αžΆαž“αž€αžΆαžšαž”αŸ’αžšαŸ‚αž”αŸ’αžšαž½αž›αž‡αžΆαž…αŸ’αžšαžΎαž“αž“αŸƒαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžŠαŸ‚αž›αž§αž”αž€αžšαžŽαŸαž”αž‰αŸ’αž‡αžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž•αŸ’αž’αŸ‚αž€αž›αžΎαŸ” αž’αŸ’αž“αž€αžŠαŸ‚αž›αž–αŸαž‰αž“αž·αž™αž˜αž‚αžΊ nginx, traefik, haproxy, αž”αŸαžŸαž€αž‡αž“αŸ” αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαž‘αžΌαž‘αŸ… αžœαžΆαž”αŸ’αžšαž αŸ‚αž›αž‡αžΆαž˜αž·αž“αž˜αžΆαž“αž₯αž‘αŸ’αž’αž·αž–αž›αž…αŸ’αžšαžΎαž“αž›αžΎαžšαž”αŸ€αž”αžŠαŸ‚αž›αž…αžšαžΆαž…αžšαžŽαŸαžαŸ’αžšαžΌαžœαž”αžΆαž“αž‘αž‘αž½αž› αž“αž·αž„αž”αž‰αŸ’αž‡αžΌαž“αž“αŸ„αŸ‡αž‘αŸ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžœαžΆαžαŸ‚αž„αžαŸ‚αž˜αžΆαž“αž”αŸ’αžšαž™αŸ„αž‡αž“αŸαž€αŸ’αž“αž»αž„αž€αžΆαžšαžŠαžΉαž„αž–αžΈαž—αžΆαž–αžαž»αžŸαž”αŸ’αž›αŸ‚αž€ αž“αž·αž„αž›αž€αŸ’αžαžŽαŸˆαž–αž·αžŸαŸαžŸαžŠαŸ‚αž›αž˜αžΆαž“αžŸαž€αŸ’αžαžΆαž“αž»αž–αž›αž“αŸƒαž’αŸ’αžœαžΈαžŠαŸ‚αž› "αž“αŸ…αž€αŸ’αžšαŸ„αž˜αž€αŸ’αžšαžŽαžΆαžαŸ‹"αŸ”

αž•αŸ’αž›αžΌαžœαž…αžšαžΆαž…αžšαžŽαŸ

αž“αŸ…αž›αžΎαž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž“αŸƒαž’αŸ’αžœαžΈαžŠαŸ‚αž›αžœαžΆαž’αžΆαž…αž’αŸ’αžœαžΎαž‘αŸ…αž”αžΆαž“αžŠαžΎαž˜αŸ’αž”αžΈαž’αŸ’αžœαžΎαž€αžΆαžšαžŸαž˜αŸ’αžšαŸαž…αž…αž·αžαŸ’αžαž’αŸ†αž–αžΈαž‘αž·αžŸαžŠαŸ…αž“αŸƒαž…αžšαžΆαž…αžšαžŽαŸαž‘αŸ…αž€αžΆαž“αŸ‹αžŸαŸαžœαžΆαž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹αž˜αž½αž™? αž‡αžΆαž’αž˜αŸ’αž˜αžαžΆαž‘αžΆαŸ†αž„αž“αŸαŸ‡αž‚αžΊαž‡αžΆαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“ αž“αž·αž„αž•αŸ’αž›αžΌαžœ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž˜αžΆαž“αž›αž‘αŸ’αž’αž—αžΆαž–αž”αž“αŸ’αžαŸ‚αž˜αŸ”

Namespace αž“αŸ…αž€αŸ’αž“αž»αž„αž…αž„αŸ’αž€αŸ„αž˜αž˜αž½αž™αŸ”

Namespace (namespace) - αžŸαž˜αžαŸ’αžαž—αžΆαž–αž€αŸ’αž“αž»αž„αž€αžΆαžšαž”αŸ†αž”αŸ‚αž€αž’αž“αž’αžΆαž“αžŠαŸ„αž™αž‘αžΌαž‡αžΈαžαž›αž“αŸ…αž€αŸ’αž“αž»αž„ Kubernetes (αž§αž‘αžΆαž αžšαžŽαŸαž“αŸ…αž›αžΎαž†αžΆαž€ αž€αžΆαžšαž•αž›αž·αžαŸ”αž›αŸ”) αž˜αžΆαž“αž§αž”αž€αžšαžŽαŸαž”αž‰αŸ’αž‡αžΆ Ingress αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαžαŸ‚αžŠαŸ†αž‘αžΎαž„αžŠαŸ„αž™αž‘αŸ‚αž€αž–αžΈαž‚αŸ’αž“αžΆαž“αŸ…αž€αŸ’αž“αž»αž„ namespace αž“αžΈαž˜αž½αž™αŸ— (αž αžΎαž™αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αžœαžΆαž’αžΆαž…αžŠαžΉαž€αž“αžΆαŸ†αž…αžšαžΆαž…αžšαž”αžΆαž“αŸ” αžαŸ‚ αž‘αŸ…αž•αžαžαž›αž“αŸƒαž›αŸ†αž αž“αŸαŸ‡)αŸ” αž αžΎαž™αž˜αžΆαž“αž‘αžΆαŸ†αž„αž“αŸ„αŸ‡ (αž“αž·αž„αž—αžΆαž‚αž…αŸ’αžšαžΎαž“αž…αŸ’αž”αžΆαžŸαŸ‹αž›αžΆαžŸαŸ‹αžšαž”αžŸαŸ‹αž–αž½αž€αž‚αŸ) αžŠαŸ‚αž›αž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαžŸαž€αž›αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž…αž„αŸ’αž€αŸ„αž˜αž‘αžΆαŸ†αž„αž˜αžΌαž› - αž“αŸ…αž€αŸ’αž“αž»αž„αž–αž½αž€αž‚αŸ αž…αžšαžΆαž…αžšαžŽαŸαžαŸ’αžšαžΌαžœαž”αžΆαž“αžŠαžΉαž€αž“αžΆαŸ†αž‘αŸ…αž€αžΆαž“αŸ‹αž•αŸ’αž“αŸ‚αž€αžŽαžΆαž˜αž½αž™αž“αŸƒαž…αž„αŸ’αž€αŸ„αž˜ αžŠαŸ„αž™αž˜αž·αž“αž‚αž·αžαž–αžΈαž‘αŸ†αž αŸ†αžˆαŸ’αž˜αŸ„αŸ‡αŸ”

αž‚αŸ†αžšαžΌαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž‘αžΉαž€αž‘αž“αŸ’αž›αŸ

αžαžΎβ€‹αž…αžšαžΆαž…αžšαžŽαŸβ€‹αžαŸ’αžšαžΌαžœβ€‹αž”αžΆαž“β€‹αžŠαžΉαž€αž“αžΆαŸ†β€‹αž‘αŸ…β€‹αž€αžΆαž“αŸ‹β€‹αž€αžšαžŽαžΈβ€‹αžŠαŸ‚αž›β€‹αž˜αžΆαž“β€‹αžŸαž»αžαž—αžΆαž–β€‹αž›αŸ’αž’β€‹αž“αŸƒβ€‹αž€αž˜αŸ’αž˜αžœαž·αž’αžΈ αž“αž·αž„β€‹αžŸαŸαžœαžΆαž€αž˜αŸ’αž˜β€‹αž™αŸ‰αžΆαž„β€‹αžŠαžΌαž…αž˜αŸ’αžŠαŸαž…? αž˜αžΆαž“αž‡αž˜αŸ’αžšαžΎαžŸαž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΆαžšαžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™αžŸαž€αž˜αŸ’αž˜ αž“αž·αž„αž’αž€αž˜αŸ’αž˜ αž€αžΆαžšαž–αŸ’αž™αžΆαž™αžΆαž˜αž˜αŸ’αžαž„αž‘αŸ€αž αž§αž”αž€αžšαžŽαŸαž”αŸ†αž”αŸ‚αž€αžŸαŸ€αž‚αŸ’αžœαžΈ (αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž–αŸαžαŸŒαž˜αžΆαž“αž›αž˜αŸ’αž’αž·αž αžŸαžΌαž˜αž˜αžΎαž›αž§αž‘αžΆαž αžšαžŽαŸ αž’αžαŸ’αžαž”αž‘αž’αŸ†αž–αžΈ Istio)αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž€αžΆαžšαžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™αžŸαž»αžαž—αžΆαž–αž•αŸ’αž‘αžΆαž›αŸ‹αžαŸ’αž›αž½αž“ (αž€αžΆαžšαžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™αžŸαž»αžαž—αžΆαž–αž•αŸ’αž‘αžΆαž›αŸ‹αžαŸ’αž›αž½αž“) αŸ”αž›αŸ” αž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžšαžŸαŸ†αžαžΆαž“αŸ‹αžŽαžΆαžŸαŸ‹ αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž˜αžΆαž“αžαž˜αŸ’αžšαžΌαžœαž€αžΆαžšαžαŸ’αž–αžŸαŸ‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž—αžΆαž–αž’αžΆαž…αžšαž€αž”αžΆαž“ αž“αž·αž„αž€αžΆαžšαžŠαž€αž…αŸαž‰αž‘αžΆαž“αŸ‹αž–αŸαž›αžœαŸαž›αžΆαž“αŸƒαžŸαŸαžœαžΆαž€αž˜αŸ’αž˜αžŠαŸ‚αž›αž”αžšαžΆαž‡αŸαž™αž–αžΈαžαž»αž›αŸ’αž™αž—αžΆαž–αŸ”

αž€αŸ’αž”αž½αž“αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžαž»αž›αŸ’αž™αž—αžΆαž–

αž˜αžΆαž“αž‡αž˜αŸ’αžšαžΎαžŸαž‡αžΆαž…αŸ’αžšαžΎαž“: αž–αžΈαž”αŸ’αžšαž–αŸƒαžŽαžΈ αžšαŸ‰αžΌαž”αžΌαžαž˜αžΌαž› αž‘αŸ…αž€αž˜αŸ’αžšαž“αž·αž„αž’αžŸαž€αž˜αŸ’αž˜ rdp-αžαžΌαž‚αžΈαž€αŸαžŠαžΌαž…αž‡αžΆαž›αž€αŸ’αžαžŽαŸˆαž”αž»αž‚αŸ’αž‚αž›αžŠαžΌαž…αž‡αžΆ αžœαž‚αŸ’αž‚αžŸαŸ’αž’αž·αž.

αž€αžΆαžšαž•αŸ’αž‘αŸ€αž„αž•αŸ’αž‘αžΆαžαŸ‹αž—αžΆαž–αžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœ

αžαžΎαž‚αž˜αŸ’αžšαŸ„αž„αž€αžΆαžšαž’αž“αž»αž‰αŸ’αž‰αžΆαžαž’αŸ’αžœαžΈαžαŸ’αž›αŸ‡αžŠαŸ‚αž›αž§αž”αž€αžšαžŽαŸαž”αž‰αŸ’αž‡αžΆαž‚αžΆαŸ†αž‘αŸ’αžš? Basic, digest, oauth, external-auth - αžαŸ’αž‰αž»αŸ†αž‚αž·αžαžαžΆαž‡αž˜αŸ’αžšαžΎαžŸαž‘αžΆαŸ†αž„αž“αŸαŸ‡αž‚αž½αžšαžαŸ‚αžŸαŸŠαžΆαŸ†αŸ” αž“αŸαŸ‡αž‚αžΊαž‡αžΆαž›αž€αŸ’αžαžŽαŸˆαžœαž·αž“αž·αž…αŸ’αž†αŸαž™αžŠαŸαžŸαŸ†αžαžΆαž“αŸ‹αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž˜αžΆαž“αžšαž„αŸ’αžœαž·αž›αž‡αž»αŸ†αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž’αž—αž·αžœαžŒαŸ’αžαž“αŸαž‡αžΆαž…αŸ’αžšαžΎαž“ (αž“αž·αž„/αž¬αž‚αŸ’αžšαžΆαž“αŸ‹αžαŸ‚αž‡αžΆαž―αž€αž‡αž“) αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž…αžΌαž›αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžαžΆαž˜αžšαž™αŸˆ Ingress αŸ”

αž€αžΆαžšαž…αŸ‚αž€αž…αžΆαž™αž…αžšαžΆαž…αžšαžŽαŸ

αžαžΎβ€‹αž§αž”αž€αžšαžŽαŸβ€‹αž”αž‰αŸ’αž‡αžΆβ€‹αž‚αžΆαŸ†αž‘αŸ’αžšβ€‹αž™αž“αŸ’αžαž€αžΆαžšβ€‹αž…αŸ‚αž€αž…αžΆαž™β€‹αž…αžšαžΆαž…αžšαžŽαŸβ€‹αžŠαŸ‚αž›β€‹αž”αŸ’αžšαžΎβ€‹αž‡αžΆβ€‹αž‘αžΌαž‘αŸ…β€‹αžŠαžΌαž…β€‹αž‡αžΆβ€‹αž€αžΆαžšβ€‹αžŠαžΆαž€αŸ‹β€‹αž–αž„αŸ’αžšαžΆαž™ Canary (canary), αž€αžΆαžšαž’αŸ’αžœαžΎαžαŸαžŸαŸ’αž A/B, αž€αžΆαžšβ€‹αž†αŸ’αž›αž»αŸ‡β€‹αž…αžšαžΆαž…αžšαžŽαŸ (αž†αŸ’αž›αž»αŸ‡/αžŸαŸ’αžšαž˜αŸ„αž›) αžŠαŸ‚αžšβ€‹αž¬β€‹αž‘αŸ? αž“αŸαŸ‡αž‚αžΊαž‡αžΆαž”αŸ’αžšαž’αžΆαž“αž”αž‘αžŠαŸαžˆαžΊαž…αžΆαž”αŸ‹αž˜αž½αž™αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž€αžΆαžšαž€αžΆαžšαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž…αžšαžΆαž…αžšαžŽαŸαžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœ αž“αž·αž„αž…αŸ’αž”αžΆαžŸαŸ‹αž›αžΆαžŸαŸ‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž’αŸ’αžœαžΎαžαŸαžŸαŸ’αžαž”αŸ’αžšαž€αž”αžŠαŸ„αž™αž•αž›αž·αžαž—αžΆαž– αž€αžΆαžšαž”αŸ†αž”αžΆαžαŸ‹αž€αŸ†αž αž»αžŸαž•αž›αž·αžαž•αž›αž€αŸ’αžšαŸ…αž”αžŽαŸ’αžαžΆαž‰ (αž¬αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΆαžšαž”αžΆαžαŸ‹αž”αž„αŸ‹αžαž·αž…αžαž½αž…) αž€αžΆαžšαžœαž·αž—αžΆαž‚αž…αžšαžΆαž…αžšαžŽαŸαž‡αžΆαžŠαžΎαž˜αŸ”

αž€αžΆαžšαž‡αžΆαžœαžŠαŸ‚αž›αž”αžΆαž“αž”αž„αŸ‹

αžαžΎαž˜αžΆαž“αž‡αž˜αŸ’αžšαžΎαžŸαž”αž„αŸ‹αž”αŸ’αžšαžΆαž€αŸ‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž§αž”αž€αžšαžŽαŸαž”αž‰αŸ’αž‡αžΆαžŠαŸ‚αž›αž˜αžΆαž“αž˜αž»αžαž„αžΆαžšαž€αž˜αŸ’αžšαž·αžαžαŸ’αž–αžŸαŸ‹ αž“αž·αž„/αž¬αž‡αŸ†αž“αž½αž™αž”αž…αŸ’αž…αŸαž€αž‘αŸαžŸαžŠαŸ‚αžšαž¬αž‘αŸ?

αž…αŸ†αžŽαž»αž…αž”αŸ’αžšαž‘αžΆαž€αŸ‹αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž€αŸ’αžšαžΆαž αŸ’αžœαž·αž€ (Web UI)

αžαžΎαž˜αžΆαž“ GUI αžŠαžΎαž˜αŸ’αž”αžΈαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž§αž”αž€αžšαžŽαŸαž”αž‰αŸ’αž‡αžΆαž‘αŸ? αž‡αžΆαž…αž˜αŸ’αž”αž„αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ "αž—αžΆαž–αž„αžΆαž™αžŸαŸ’αžšαž½αž›" αž“αž·αž„ / αž¬αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αŸ’αž“αž€αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž€αžΆαžšαž’αŸ’αžœαžΎαž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž˜αž½αž™αž…αŸ†αž“αž½αž“αž…αŸ†αž–αŸ„αŸ‡αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’ Ingress'a αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž€αžΆαžšαž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαž˜αž½αž™αž‚αŸ†αžšαžΌ "αž†αŸ…" αž‚αžΊαž˜αžΆαž“αž€αžΆαžšαžšαž’αžΆαž€αŸ‹αžšαž’αž½αž›αŸ” αžœαžΆαž’αžΆαž…αž˜αžΆαž“αž”αŸ’αžšαž™αŸ„αž‡αž“αŸαž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž’αž—αž·αžœαžŒαŸ’αžαž“αŸαž…αž„αŸ‹αž’αŸ’αžœαžΎαž€αžΆαžšαž–αž·αžŸαŸ„αž’αž“αŸαž˜αž½αž™αž…αŸ†αž“αž½αž“αž‡αžΆαž˜αž½αž™αž…αžšαžΆαž…αžšαžŽαŸαž—αŸ’αž›αžΆαž˜αŸ—αŸ”

αž€αžΆαžšαž•αŸ’αž‘αŸ€αž„αž•αŸ’αž‘αžΆαžαŸ‹ JWT

αžœαžαŸ’αžαž˜αžΆαž“αž“αŸƒαž€αžΆαžšαž—αŸ’αž‡αžΆαž”αŸ‹αž˜αž€αž‡αžΆαž˜αž½αž™αž“αžΌαžœαžŸαž»αž–αž›αž—αžΆαž–αž“αŸƒαž“αž·αž˜αž·αžαŸ’αžαžŸαž‰αŸ’αž‰αžΆαž‚αŸαž αž‘αŸ†αž–αŸαžš JSON αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž’αž“αž»αž‰αŸ’αž‰αžΆαž αž“αž·αž„αžŸαž»αž–αž›αž—αžΆαž–αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž‘αŸ…αž€αžΆαž“αŸ‹αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž…αž»αž„αž€αŸ’αžšαŸ„αž™αŸ”

αž›αž‘αŸ’αž’αž—αžΆαž–αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αžαžΆαž˜αž”αŸ†αžŽαž„

αž€αžΆαžšαž–αž„αŸ’αžšαžΈαž€αž‚αŸ†αžšαžΌαž€αŸ’αž“αž»αž„αž“αŸαž™αžαžΆαž˜αžΆαž“αž™αž“αŸ’αžαž€αžΆαžšαžŠαŸ‚αž›αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž’αŸ’αž“αž€αž”αž“αŸ’αžαŸ‚αž˜αž€αžΆαžšαžŽαŸ‚αž“αžΆαŸ† αž‘αž„αŸ‹αž‡αžΆαžαž· αž‡αžΆαžŠαžΎαž˜αŸ” αž‘αŸ…αž€αžΆαž“αŸ‹αž‚αŸ†αžšαžΌαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αžŸαŸ’αžαž„αŸ‹αžŠαžΆαžšαŸ”

αž™αž“αŸ’αžαž€αžΆαžšαž€αžΆαžšαž–αžΆαžš DDOS αž‡αžΆαž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“

αž€αŸ’αž”αž½αž“αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž€αž˜αŸ’αžšαž·αžαž’αžαŸ’αžšαžΆαžŸαžΆαž˜αž‰αŸ’αž‰ αž¬αž‡αž˜αŸ’αžšαžΎαžŸαžαž˜αŸ’αžšαž„αž…αžšαžΆαž…αžšαžŽαŸαžŠαŸαžŸαŸ’αž˜αž»αž‚αžŸαŸ’αž˜αžΆαž‰ αžŠαŸ„αž™αž•αŸ’αž’αŸ‚αž€αž›αžΎαž’αžΆαžŸαž™αžŠαŸ’αž‹αžΆαž“ αž”αž‰αŸ’αž‡αžΈαžŸ αž”αŸ’αžšαž‘αŸαžŸαŸ”αž›αŸ”

αžŸαŸ’αž“αžΎαžŸαž»αŸ†αžŠαžΆαž“

αžŸαž˜αžαŸ’αžαž—αžΆαž–αž€αŸ’αž“αž»αž„αž€αžΆαžšαžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™ αžαžΆαž˜αžŠαžΆαž“ αž“αž·αž„αž”αŸ†αž”αžΆαžαŸ‹αž€αŸ†αž αž»αžŸαžŸαŸ†αžŽαžΎαž–αžΈ Ingresses αž‘αŸ…αž€αžΆαž“αŸ‹αžŸαŸαžœαžΆαž€αž˜αŸ’αž˜αž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹ / pods αž“αž·αž„αžαžΆαž˜αž§αžαŸ’αžŠαž˜αž‚αžαž·αžšαžœαžΆαž„αžŸαŸαžœαžΆαž€αž˜αŸ’αž˜ / pods αž•αž„αžŠαŸ‚αžšαŸ”

αžœαŸ‰αžΆαž αŸ’αžœ

αž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžš αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‡αž‰αŸ’αž‡αžΆαŸ†αž„αž—αŸ’αž›αžΎαž„.

αž§αž”αž€αžšαžŽαŸαž”αž‰αŸ’αž‡αžΆ

αž”αž‰αŸ’αž‡αžΈαž§αž”αž€αžšαžŽαŸαž”αž‰αŸ’αž‡αžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαž‘αžΎαž„αžŠαŸ„αž™αž•αŸ’αž’αŸ‚αž€αž›αžΎ αž―αž€αžŸαžΆαžš Kubernetes αž•αŸ’αž›αžΌαžœαž€αžΆαžš ΠΈ αžαžΆαžšαžΆαž„αž“αŸαŸ‡αŸ”. αž™αžΎαž„αž”αžΆαž“αžŠαž€αž…αŸαž‰αž–αž½αž€αž‚αŸαž˜αž½αž™αž…αŸ†αž“αž½αž“αž–αžΈαž€αžΆαžšαž–αž·αž“αž·αžαŸ’αž™αž‘αžΎαž„αžœαž·αž‰ αžŠαŸ„αž™αžŸαžΆαžšαž—αžΆαž–αž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹ αž¬αž’αžαŸ’αžšαžΆαž”αŸ’αžšαŸαžœαŸ‰αžΆαž‘αž„αŸ‹αž‘αžΆαž” (αžŠαŸ†αžŽαžΆαž€αŸ‹αž€αžΆαž›αžŠαŸ†αž”αžΌαž„αž“αŸƒαž€αžΆαžšαž’αž—αž·αžœαžŒαŸ’αžαž“αŸ)αŸ” αž“αŸ…αžŸαž›αŸ‹αžαŸ’αžšαžΌαžœαž”αžΆαž“αž–αž·αž—αžΆαž€αŸ’αžŸαžΆαžŠαžΌαž…αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αŸ” αž…αžΌαžšαž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΆαžšαž–αž·αž–αžŽαŸŒαž“αžΆαž‘αžΌαž‘αŸ…αž“αŸƒαžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™ αž αžΎαž™αž”αž“αŸ’αžαž‡αžΆαž˜αž½αž™αžαžΆαžšαžΆαž„αžŸαž„αŸ’αžαŸαž”αŸ”

αž…αžΌαž›αž–αžΈ Kubernetes

αžœαŸαž”αžŸαžΆαž™: github.com/kubernetes/ingress-nginx
αž’αžΆαž‡αŸ’αž‰αžΆαž”αŸαžŽαŸ’αžŽαŸ– Apache 2.0

αž“αŸαŸ‡αž‚αžΊαž‡αžΆαž§αž”αž€αžšαžŽαŸαž”αž‰αŸ’αž‡αžΆαž•αŸ’αž›αžΌαžœαž€αžΆαžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹ Kubernetes αž αžΎαž™αž€αŸ†αž–αž»αž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαž‘αžΎαž„αžŠαŸ„αž™αžŸαž αž‚αž˜αž“αŸαŸ” αž‡αžΆαž€αŸ‹αžŸαŸ’αžαŸ‚αž„αž–αžΈαžˆαŸ’αž˜αŸ„αŸ‡ αžœαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž•αŸ’αž’αŸ‚αž€αž›αžΎ nginx αž“αž·αž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ†αž–αŸαž‰αž”αž“αŸ’αžαŸ‚αž˜αžŠαŸ„αž™αžŸαŸ†αžŽαž»αŸ†αž•αŸ’αžŸαŸαž„αž‚αŸ’αž“αžΆαž“αŸƒαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‡αŸ†αž“αž½αž™ Lua αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαžŠαžΎαž˜αŸ’αž”αžΈαž’αž“αž»αžœαžαŸ’αžαž˜αž»αžαž„αžΆαžšαž”αž“αŸ’αžαŸ‚αž˜αŸ” αžŠαŸ„αž™αžŸαžΆαžšαžαŸ‚αž—αžΆαž–αž–αŸαž‰αž“αž·αž™αž˜αž“αŸƒ nginx αžαŸ’αž›αž½αž“αžœαžΆ αž“αž·αž„αž€αžΆαžšαž€αŸ‚αž”αŸ’αžšαŸ‚αžαž·αž…αžαž½αž…αž”αŸ†αž•αž»αžαž…αŸ†αž–αŸ„αŸ‡αžœαžΆαž“αŸ…αž–αŸαž›αž”αŸ’αžšαžΎαž‡αžΆαž§αž”αž€αžšαžŽαŸαž”αž‰αŸ’αž‡αžΆ αž‡αž˜αŸ’αžšαžΎαžŸαž“αŸαŸ‡αž’αžΆαž…αž‡αžΆαž€αžΆαžšαž„αžΆαž™αžŸαŸ’αžšαž½αž›αž”αŸ†αž•αž»αž αž“αž·αž„αž„αžΆαž™αžŸαŸ’αžšαž½αž›αž”αŸ†αž•αž»αžαž€αŸ’αž“αž»αž„αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžœαž·αžŸαŸ’αžœαž€αžšαž˜αž’αŸ’αž™αž˜ (αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž”αž‘αž–αž·αžŸαŸ„αž’αž“αŸαž‚αŸαž αž‘αŸ†αž–αŸαžš)αŸ”

Ingress αžŠαŸ„αž™ NGINX Inc.

αžœαŸαž”αžŸαžΆαž™: github.com/nginxinc/kubernetes-ingress
αž’αžΆαž‡αŸ’αž‰αžΆαž”αŸαžŽαŸ’αžŽαŸ– Apache 2.0

αž•αž›αž·αžαž•αž›αž•αŸ’αž›αžΌαžœαž€αžΆαžšαžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž’αž—αž·αžœαžŒαŸ’αžαž“αŸ nginx αŸ” αž˜αžΆαž“αž€αŸ†αžŽαŸ‚αž”αž„αŸ‹αž”αŸ’αžšαžΆαž€αŸ‹αžŠαŸ„αž™αž•αŸ’αž’αŸ‚αž€αž›αžΎ NGINX αž”αžΌαž€. αž‚αŸ†αž“αž·αžαž…αž˜αŸ’αž”αž„αž‚αžΊαž€αž˜αŸ’αžšαž·αžαžαŸ’αž–αžŸαŸ‹αž“αŸƒαžŸαŸ’αžαŸαžšαž—αžΆαž– αž—αžΆαž–αž†αž”αž‚αŸ’αž“αžΆαžαž™αž€αŸ’αžšαŸ„αž™αžαŸαžš αž’αžœαžαŸ’αžαž˜αžΆαž“αž“αŸƒαž˜αŸ‰αžΌαžŒαž»αž›αž”αž“αŸ’αžαŸ‚αž˜αžŽαžΆαž˜αž½αž™ αž“αž·αž„αž›αŸ’αž”αžΏαž“αž€αžΎαž“αž‘αžΎαž„αžŠαŸ‚αž›αž”αžΆαž“αž”αŸ’αžšαž€αžΆαžŸ (αž”αžΎαž”αŸ’αžšαŸ€αž”αž’αŸ€αž”αž‘αŸ…αž“αžΉαž„αž§αž”αž€αžšαžŽαŸαž”αž‰αŸ’αž‡αžΆαž•αŸ’αž›αžΌαžœαž€αžΆαžš) αžŠαŸ‚αž›αžŸαž˜αŸ’αžšαŸαž…αž”αžΆαž“αžŠαŸ„αž™αžŸαžΆαžšαžαŸ‚αž€αžΆαžšαž”αžŠαž·αžŸαŸαž’αžšαž”αžŸαŸ‹ Lua αŸ”

αž€αŸ†αžŽαŸ‚αž₯αžαž‚αž·αžαžαŸ’αž›αŸƒαžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αžΆαžαŸ‹αž”αž“αŸ’αžαž™αž™αŸ‰αžΆαž„αžαŸ’αž›αžΆαŸ†αž„ αžšαž½αž˜αž‘αžΆαŸ†αž„αž”αžΎαž”αŸ’αžšαŸ€αž”αž’αŸ€αž”αž‡αžΆαž˜αž½αž™αž§αž”αž€αžšαžŽαŸαž”αž‰αŸ’αž‡αžΆαž•αŸ’αž›αžΌαžœαž€αžΆαžš (αžŠαŸ„αž™αžŸαžΆαžšαžαŸ‚αžαŸ’αžœαŸ‡αž˜αŸ‰αžΌαžŒαž»αž› Lua αžŠαžΌαž…αž‚αŸ’αž“αžΆ)αŸ” αž€αŸ’αž“αž»αž„αž–αŸαž›αž‡αžΆαž˜αž½αž™αž‚αŸ’αž“αžΆαž“αŸαŸ‡ αž”αŸ’αžšαžΆαž€αŸ‹αžŠαŸ‚αž›αž”αžΆαž“αž”αž„αŸ‹αž˜αžΆαž“αž˜αž»αžαž„αžΆαžšαž”αž“αŸ’αžαŸ‚αž˜αžŠαŸαž’αŸ†αž‘αžΌαž›αžΆαž™αžŠαŸ„αž™αžŸαŸ’αž˜αžΎαž—αžΆαž–αŸ– αžšαž„αŸ’αžœαžΆαžŸαŸ‹αž–αŸαž›αžœαŸαž›αžΆαž‡αžΆαž€αŸ‹αžŸαŸ’αžαŸ‚αž„ αžŸαž»αž–αž›αž—αžΆαž– JWT αž€αžΆαžšαžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™αžŸαž»αžαž—αžΆαž–αžŸαž€αž˜αŸ’αž˜ αž“αž·αž„αž…αŸ’αžšαžΎαž“αž‘αŸ€αžαŸ” αž’αžαŸ’αžαž”αŸ’αžšαž™αŸ„αž‡αž“αŸαžŠαŸαžŸαŸ†αžαžΆαž“αŸ‹αž˜αž½αž™αž“αŸ…αž›αžΎ NGINX Ingress αž‚αžΊαž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžšαž–αŸαž‰αž›αŸαž‰αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž…αžšαžΆαž…αžšαžŽαŸ TCP / UDP (αž“αž·αž„αž“αŸ…αž€αŸ’αž“αž»αž„αž€αŸ†αžŽαŸ‚αžŸαž αž‚αž˜αž“αŸαž•αž„αžŠαŸ‚αžš!) αžŠαž€ - αž€αžΆαžšαžαŸ’αžœαŸ‡αžαžΆαž αž˜αž»αžαž„αžΆαžšαž…αŸ‚αž€αž…αžΆαž™αž…αžšαžΆαž…αžšαžŽαŸ αžŠαŸ‚αž›αž‘αŸ„αŸ‡αž‡αžΆαž™αŸ‰αžΆαž„αžŽαžΆ "αž˜αžΆαž“αž’αžΆαž‘αž·αž—αžΆαž–αžαŸ’αž–αžŸαŸ‹αž”αŸ†αž•αž»αžαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αŸ’αž“αž€αž’αž—αž·αžœαžŒαŸ’αžαž“αŸ" αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžαŸ’αžšαžΌαžœαž€αžΆαžšαž–αŸαž›αžœαŸαž›αžΆαžŠαžΎαž˜αŸ’αž”αžΈαž’αž“αž»αžœαžαŸ’αžαŸ”

αž‚αž„αŸ‹ αž’αŸŠαžΈαž„

αžœαŸαž”αžŸαžΆαž™: github.com/Kong/kubernetes-ingress-controller
αž’αžΆαž‡αŸ’αž‰αžΆαž”αŸαžŽαŸ’αžŽαŸ– Apache 2.0

αž•αž›αž·αžαž•αž›αžŠαŸ‚αž›αž”αž„αŸ’αž€αžΎαžαž‘αžΎαž„αžŠαŸ„αž™ Kong Inc. αž“αŸ…αž€αŸ’αž“αž»αž„αž€αŸ†αžŽαŸ‚αž–αžΈαžš: αž–αžΆαžŽαž·αž‡αŸ’αž‡αž€αž˜αŸ’αž˜αž“αž·αž„αž₯αžαž‚αž·αžαžαŸ’αž›αŸƒαŸ” αž•αŸ’αž’αŸ‚αž€αž›αžΎ nginx αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž–αž„αŸ’αžšαžΈαž€αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž˜αŸ‰αžΌαžŒαž»αž› Lua αž˜αž½αž™αž…αŸ†αž“αž½αž“αž’αŸ†αŸ”

αžŠαŸ†αž”αžΌαž„αž‘αžΎαž™ αžœαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž•αŸ’αžαŸ„αžαž›αžΎαžŠαŸ†αžŽαžΎαžšαž€αžΆαžš αž“αž·αž„αž”αž‰αŸ’αž‡αžΌαž“αžŸαŸ†αžŽαžΎ API αž–αŸ„αž›αž‚αžΊαž§αŸ” αž‡αžΆ API Gateway αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž“αŸ…αž–αŸαž›αž“αŸαŸ‡αžœαžΆαž”αžΆαž“αž€αŸ’αž›αžΆαž™αž‡αžΆαž§αž”αž€αžšαžŽαŸαž”αž‰αŸ’αž‡αžΆ Ingress αž–αŸαž‰αž›αŸαž‰αŸ” αž‚αž»αžŽαžŸαž˜αŸ’αž”αžαŸ’αžαž·αž…αž˜αŸ’αž”αž„αŸ– αž˜αŸ‰αžΌαžŒαž»αž›αž”αž“αŸ’αžαŸ‚αž˜αž‡αžΆαž…αŸ’αžšαžΎαž“ (αžšαž½αž˜αž‘αžΆαŸ†αž„αž’αŸ’αž“αž€αž’αž—αž·αžœαžŒαŸ’αžαž“αŸαž—αžΆαž‚αžΈαž‘αžΈαž”αžΈ) αžŠαŸ‚αž›αž„αžΆαž™αžŸαŸ’αžšαž½αž›αž€αŸ’αž“αž»αž„αž€αžΆαžšαžŠαŸ†αž‘αžΎαž„ αž“αž·αž„αž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’ αž αžΎαž™αžŠαŸ„αž™αž˜αžΆαž“αž‡αŸ†αž“αž½αž™αž–αžΈαž˜αž»αžαž„αžΆαžšαž”αž“αŸ’αžαŸ‚αž˜αž‡αžΆαž…αŸ’αžšαžΎαž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αž“αž»αžœαžαŸ’αžαŸ” αž‘αŸ„αŸ‡αž‡αžΆαž™αŸ‰αžΆαž„αžŽαžΆαž€αŸαžŠαŸ„αž™ αž˜αž»αžαž„αžΆαžšαžŠαŸ‚αž›αž—αŸ’αž‡αžΆαž”αŸ‹αž˜αž€αž‡αžΆαž˜αž½αž™αž”αžΆαž“αž•αŸ’αžαž›αŸ‹αž“αžΌαžœαž›αž‘αŸ’αž’αž—αžΆαž–αž‡αžΆαž…αŸ’αžšαžΎαž“αžšαž½αž…αž‘αŸ…αž αžΎαž™αŸ” αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž€αžΆαžšαž„αžΆαžšαžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αŸ’αžœαžΎαžŠαŸ„αž™αž”αŸ’αžšαžΎαž’αž“αž’αžΆαž“ CRD αŸ”

αž›αž€αŸ’αžαžŽαŸˆαžŸαŸ†αžαžΆαž“αŸ‹αž“αŸƒαž•αž›αž·αžαž•αž› - αž’αŸ’αžœαžΎαž€αžΆαžšαž“αŸ…αž€αŸ’αž“αž»αž„αžœαžŽαŸ’αžŒαžœαž„αŸ’αž€αžŠαžΌαž…αž‚αŸ’αž“αžΆ (αž‡αŸ†αž“αž½αžŸαž±αŸ’αž™αž€αžΆαžšαž€αžΆαžαŸ‹αžˆαŸ’αž˜αŸ„αŸ‡) αž‚αžΊαž‡αžΆαž”αŸ’αžšαž’αžΆαž“αž”αž‘αžŠαŸαž…αž˜αŸ’αžšαžΌαž„αž…αž˜αŸ’αžšαžΆαžŸαž˜αž½αž™αŸ– αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αŸ’αž“αž€αžαŸ’αž›αŸ‡αžœαžΆαž“αžΉαž„αž αžΆαž€αŸ‹αž”αžΈαžŠαžΌαž…αž‡αžΆαž‚αž»αžŽαžœαž·αž”αžαŸ’αžαž· (αž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαž”αž„αŸ’αž€αžΎαžαž’αžΆαžαž»αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžœαžŽαŸ’αžŒαžœαž„αŸ’αž€αž“αžΈαž˜αž½αž™αŸ—) αž αžΎαž™αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž“αžšαžŽαžΆαž˜αŸ’αž“αžΆαž€αŸ‹αžœαžΆαž‡αžΆαž›αž€αŸ’αžαžŽαŸˆαž–αž·αžŸαŸαžŸαž˜αž½αž™ ( αžΠΎαž€αž˜αŸ’αžšαž·αžαž“αŸƒαž—αžΆαž–αž―αž€αŸ„αž€αžΆαž“αŸ‹αžαŸ‚αžαŸ’αž›αžΆαŸ†αž„, αžŠαžΌαž…αž‡αžΆ αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž§αž”αž€αžšαžŽαŸαž”αž‰αŸ’αž‡αžΆαž˜αž½αž™αžαŸ’αžšαžΌαžœαž”αžΆαž“αžαžΌαž…αž“αŸ„αŸ‡αž”αž‰αŸ’αž αžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αŸ†αžŽαžαŸ‹αž…αŸ†αž–αŸ„αŸ‡αžŸαŸ€αž‚αŸ’αžœαžΈαžαŸ‚αž˜αž½αž™) αŸ”

αžαŸ’αžšαžΆαž αŸ’αžœαž·αž€

αžœαŸαž”αžŸαžΆαž™: github.com/containous/traefik
αž’αžΆαž‡αŸ’αž‰αžΆαž”αŸαžŽαŸ’αžŽαŸ– MIT

αž”αŸ’αžšαžΌαž€αžŸαŸŠαžΈβ€‹αžŠαŸ‚αž›β€‹αžαŸ’αžšαžΌαžœβ€‹αž”αžΆαž“β€‹αž”αž„αŸ’αž€αžΎαžβ€‹αž‘αžΎαž„β€‹αžŠαŸ†αž”αžΌαž„β€‹αžŠαžΎαž˜αŸ’αž”αžΈβ€‹αž’αŸ’αžœαžΎβ€‹αž€αžΆαžšβ€‹αž‡αžΆαž˜αž½αž™β€‹αž“αžΉαž„β€‹αž€αžΆαžšβ€‹αž€αŸ†αžŽαžαŸ‹β€‹αž•αŸ’αž›αžΌαžœβ€‹αžŸαŸ†αžŽαžΎβ€‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹β€‹αžŸαŸαžœαžΆβ€‹αž˜αžΈαž€αŸ’αžšαžΌβ€‹ αž“αž·αž„β€‹αž”αžšαž·αžŸαŸ’αžαžΆαž“β€‹αžαžΆαž˜αžœαž“αŸ’αžβ€‹αžšαž”αžŸαŸ‹β€‹αž–αž½αž€αž‚αŸαŸ” αžŠαžΌαž…αŸ’αž“αŸαŸ‡ αž˜αž»αžαž„αžΆαžšαž˜αžΆαž“αž”αŸ’αžšαž™αŸ„αž‡αž“αŸαž‡αžΆαž…αŸ’αžšαžΎαž“αŸ– αž€αžΆαžšαž’αŸ’αžœαžΎαž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αž—αžΆαž–αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžŠαŸ„αž™αž˜αž·αž“αž…αžΆαŸ†αž”αžΆαž…αŸ‹αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž‘αžΎαž„αžœαž·αž‰αž‘αžΆαž›αŸ‹αžαŸ‚αžŸαŸ„αŸ‡ αž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαžαž»αž›αŸ’αž™αž—αžΆαž–αž˜αž½αž™αž…αŸ†αž“αž½αž“αž’αŸ† αž…αŸ†αžŽαž»αž…αž”αŸ’αžšαž‘αžΆαž€αŸ‹αž‚αŸαž αž‘αŸ†αž–αŸαžš αž€αžΆαžšαž”αž‰αŸ’αž‡αžΌαž“αž”αž“αŸ’αžαž˜αŸ‰αŸ‚αžαŸ’αžš αž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž–αž·αž’αžΈαž€αžΆαžšαž•αŸ’αžŸαŸαž„αŸ— REST API αž€αžΆαžšαž…αŸαž‰αž•αŸ’αžŸαžΆαž™ Canary αž“αž·αž„αž…αŸ’αžšαžΎαž“αž‘αŸ€αžαŸ” αž˜αž»αžαž„αžΆαžšαž›αŸ’αž’αž˜αž½αž™αž‘αŸ€αžαž‚αžΊαž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹ Let's Encrypt certificates αž…αŸαž‰αž–αžΈαž”αŸ’αžšαž’αž”αŸ‹αŸ” αž‚αž»αžŽαžœαž·αž”αžαŸ’αžαž·αž‚αžΊαžαžΆαžŠαžΎαž˜αŸ’αž”αžΈαžšαŸ€αž”αž…αŸ†αž—αžΆαž–αž’αžΆαž…αžšαž€αž”αžΆαž“αžαŸ’αž–αžŸαŸ‹ (HA) αž§αž”αž€αžšαžŽαŸαž”αž‰αŸ’αž‡αžΆαž“αžΉαž„αžαŸ’αžšαžΌαžœαž€αžΆαžšαžŠαŸ†αž‘αžΎαž„αž“αž·αž„αž—αŸ’αž‡αžΆαž”αŸ‹αž§αž”αž€αžšαžŽαŸαž•αŸ’αž‘αž»αž€ KV αžšαž”αžŸαŸ‹αžœαžΆαŸ”

HAProxy

αžœαŸαž”αžŸαžΆαž™: github.com/jcmoraisjr/haproxy-ingress
αž’αžΆαž‡αŸ’αž‰αžΆαž”αŸαžŽαŸ’αžŽαŸ– Apache 2.0

HAProxy αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‚αŸαžŸαŸ’αž‚αžΆαž›αŸ‹αž‡αžΆαž™αžΌαžšαž˜αž€αž αžΎαž™αžαžΆαž‡αžΆαž”αŸ’αžšαžΌαž€αžŸαŸŠαžΈ αž“αž·αž„αžαž»αž›αŸ’αž™αž—αžΆαž–αž…αžšαžΆαž…αžšαžŽαŸαŸ” αž‡αžΆαž•αŸ’αž“αŸ‚αž€αž“αŸƒαž…αž„αŸ’αž€αŸ„αž˜ Kubernetes αžœαžΆαž•αŸ’αžαž›αŸ‹αž“αžΌαžœαž€αžΆαžšαž’αŸ’αžœαžΎαž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αž—αžΆαž–αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’ "αž‘αž“αŸ‹" (αžŠαŸ„αž™αž˜αž·αž“αž”αžΆαžαŸ‹αž”αž„αŸ‹αž…αžšαžΆαž…αžšαžŽαŸ) αž€αžΆαžšαžšαž€αžƒαžΎαž‰αžŸαŸαžœαžΆαž€αž˜αŸ’αž˜αžŠαŸ„αž™αž•αŸ’αž’αŸ‚αž€αž›αžΎ DNS αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αžαžΆαž˜αžœαž“αŸ’αžαžŠαŸ„αž™αž”αŸ’αžšαžΎ API αŸ” αžœαžΆαž’αžΆαž…αž˜αžΆαž“αž—αžΆαž–αž‘αžΆαž€αŸ‹αž‘αžΆαž‰αž€αŸ’αž“αž»αž„αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αž‚αŸ†αžšαžΌαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αžαžΆαž˜αž”αŸ†αžŽαž„αž‘αžΆαŸ†αž„αžŸαŸ’αžšαž»αž„αžŠαŸ„αž™αž‡αŸ†αž“αž½αžŸ CM αž€αŸαžŠαžΌαž…αž‡αžΆαž›αž‘αŸ’αž’αž—αžΆαž–αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž˜αž»αžαž„αžΆαžšαž”αžŽαŸ’αžŽαžΆαž›αŸαž™ Sprig αž“αŸ…αž€αŸ’αž“αž»αž„αžœαžΆαŸ” αž‡αžΆαž‘αžΌαž‘αŸ… αž€αžΆαžšαžŸαž„αŸ’αž€αžαŸ‹αž’αŸ’αž„αž“αŸ‹αž…αž˜αŸ’αž”αž„αž“αŸƒαžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž‚αžΊαž“αŸ…αž›αžΎαž›αŸ’αž”αžΏαž“αž›αžΏαž“ αž€αžΆαžšαž”αž„αŸ’αž€αžΎαž“αž”αŸ’αžšαžŸαž·αž‘αŸ’αž’αž—αžΆαž– αž“αž·αž„αž”αŸ’αžšαžŸαž·αž‘αŸ’αž’αž—αžΆαž–αžšαž”αžŸαŸ‹αžœαžΆαž“αŸ…αž€αŸ’αž“αž»αž„αž’αž“αž’αžΆαž“αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αŸ” αž’αžαŸ’αžαž”αŸ’αžšαž™αŸ„αž‡αž“αŸαž“αŸƒαž§αž”αž€αžšαžŽαŸαž”αž‰αŸ’αž‡αžΆαž‚αžΊαž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžšαž“αŸƒαž…αŸ†αž“αž½αž“αž€αŸ†αžŽαžαŸ‹αžαŸ’αžšαžΆαž“αŸƒαžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαžαž»αž›αŸ’αž™αž—αžΆαž–αž•αŸ’αžŸαŸαž„αž‚αŸ’αž“αžΆαŸ”

αž’αŸ’αž“αž€αž’αŸ’αžœαžΎαžŠαŸ†αžŽαžΎαžš

αžœαŸαž”αžŸαžΆαž™: github.com/appscode/voyager
αž’αžΆαž‡αŸ’αž‰αžΆαž”αŸαžŽαŸ’αžŽαŸ– Apache 2.0

αž•αŸ’αž’αŸ‚αž€αž›αžΎαž§αž”αž€αžšαžŽαŸαž”αž‰αŸ’αž‡αžΆ HAproxy αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŠαžΆαž€αŸ‹αž‡αžΆαžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž‡αžΆαžŸαž€αž›αžŠαŸ‚αž›αž‚αžΆαŸ†αž‘αŸ’αžšαž˜αž»αžαž„αžΆαžšαž‡αžΆαž…αŸ’αžšαžΎαž“αž›αžΎαž’αŸ’αž“αž€αž•αŸ’αžαž›αŸ‹αžŸαŸαžœαžΆαž˜αž½αž™αž…αŸ†αž“αž½αž“αž’αŸ†αŸ” αž±αž€αžΆαžŸαž˜αž½αž™αžαŸ’αžšαžΌαžœαž”αžΆαž“αž•αŸ’αžαž›αŸ‹αž‡αžΌαž“αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž’αŸ’αžœαžΎαž±αŸ’αž™αž˜αžΆαž“αžαž»αž›αŸ’αž™αž—αžΆαž–αž…αžšαžΆαž…αžšαžŽαŸαž“αŸ…αž›αžΎ L7 αž“αž·αž„ L4 αž αžΎαž™αž€αžΆαžšαž’αŸ’αžœαžΎαž±αŸ’αž™αž˜αžΆαž“αžαž»αž›αŸ’αž™αž—αžΆαž–αž…αžšαžΆαž…αžšαžŽαŸ TCP L4 αž‘αžΆαŸ†αž„αž˜αžΌαž›αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‚αŸαž αŸ…αžαžΆαž‡αžΆαž›αž€αŸ’αžαžŽαŸˆαžŸαŸ†αžαžΆαž“αŸ‹αž˜αž½αž™αž“αŸƒαžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αŸ”

αžœαžŽαŸ’αžŒαžœαž„αŸ’αž€αŸ”

αžœαŸαž”αžŸαžΆαž™: github.com/heptio/contour
αž’αžΆαž‡αŸ’αž‰αžΆαž”αŸαžŽαŸ’αžŽαŸ– Apache 2.0

αžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž“αŸαŸ‡αž‚αžΊαž˜αž·αž“αžαŸ’αžšαžΉαž˜αžαŸ‚αž•αŸ’αž’αŸ‚αž€αž›αžΎ Envoy αž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αž‘αŸαŸ– αžœαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαž‘αžΎαž„αžŠαŸ„αž™ αžšαž½αž˜αž‚αŸ’αž“αžΆ αž‡αžΆαž˜αž½αž™αž’αŸ’αž“αž€αž“αž·αž–αž“αŸ’αž’αž“αŸƒαž”αŸ’αžšαžΌαž€αžŸαŸŠαžΈαžŠαŸαž–αŸαž‰αž“αž·αž™αž˜αž“αŸαŸ‡αŸ” αž˜αž»αžαž„αžΆαžšαžŸαŸ†αžαžΆαž“αŸ‹αž˜αž½αž™αž‚αžΊαžŸαž˜αžαŸ’αžαž—αžΆαž–αž€αŸ’αž“αž»αž„αž€αžΆαžšαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αžŠαŸ„αž™αž‘αŸ‚αž€αž–αžΈαž‚αŸ’αž“αžΆαž“αŸƒαž’αž“αž’αžΆαž“ Ingress αžŠαŸ„αž™αž”αŸ’αžšαžΎαž’αž“αž’αžΆαž“ IngressRoute CRD αŸ” αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αž„αŸ’αž‚αž€αžΆαžšαžŠαŸ‚αž›αž˜αžΆαž“αž€αŸ’αžšαž»αž˜αž’αž—αž·αžœαžŒαŸ’αžαž“αŸαž‡αžΆαž…αŸ’αžšαžΎαž“αžŠαŸ‚αž›αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž…αž„αŸ’αž€αŸ„αž˜αžŠαžΌαž…αž‚αŸ’αž“αžΆ αž“αŸαŸ‡αž‡αž½αž™αž”αž„αŸ’αž€αžΎαž“αžŸαž»αžœαžαŸ’αžαž·αž—αžΆαž–αž“αŸƒαž€αžΆαžšαž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαž˜αž½αž™αž…αžšαžΆαž…αžšαžŽαŸαž“αŸ…αž€αŸ’αž“αž»αž„αžšαž„αŸ’αžœαž„αŸ‹αž‡αž·αžαžαžΆαž„ αž“αž·αž„αž€αžΆαžšαž–αžΆαžšαž–αž½αž€αž‚αŸαž–αžΈαž€αŸ†αž αž»αžŸαž“αŸ…αž–αŸαž›αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž’αž“αž’αžΆαž“ Ingress αŸ”

αžœαžΆαž€αŸαž•αŸ’αžαž›αŸ‹αž“αžΌαžœαžŸαŸ†αžŽαž»αŸ†αž”αž“αŸ’αžαŸ‚αž˜αž“αŸƒαžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžαŸ’αžšαžαž»αž›αŸ’αž™αž—αžΆαž– (αž˜αžΆαž“αžŸαŸ†αžŽαžΎαžŸαž»αŸ†αž†αŸ’αž›αž»αŸ‡ αž€αžΆαžšαž’αŸ’αžœαžΎαž‘αžΎαž„αžœαž·αž‰αžŠαŸ„αž™αžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž· αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αž’αžαŸ’αžšαžΆαžŸαŸ†αžŽαžΎ αž“αž·αž„αž…αŸ’αžšαžΎαž“αž‘αŸ€αž) αž€αžΆαžšαžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™αž›αž˜αŸ’αž’αž·αžαž“αŸƒαž›αŸ†αž αžΌαžšαž…αžšαžΆαž…αžš αž“αž·αž„αž€αžΆαžšαž”αžšαžΆαž‡αŸαž™αŸ” αž”αŸ’αžšαž αŸ‚αž›αž‡αžΆαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž“αžšαžŽαžΆαž˜αŸ’αž“αžΆαž€αŸ‹ αžœαžΆαž“αžΉαž„αž€αŸ’αž›αžΆαž™αž‡αžΆαž‚αž»αžŽαžœαž·αž”αžαŸ’αžαž·αžŠαŸαžŸαŸ†αžαžΆαž“αŸ‹αž˜αž½αž™ αž€αž„αŸ’αžœαŸ‡αž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžœαž‚αŸ’αž‚αžŸαŸ’αž’αž·αž (αž‘αŸ„αŸ‡αž”αžΈαž‡αžΆαž€αžΆαžšαž„αžΆαžšαž€αŸαžŠαŸ„αž™αŸ” αž€αŸ†αž–αž»αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž αžΎαž™αŸ”).

αž’αŸŠαžΈαžŸαŸ’αž‘αžΈαž™αŸ‰αžΌ Ingress

αžœαŸαž”αžŸαžΆαž™: istio.io/docs/tasks/traffic-management/ingress
αž’αžΆαž‡αŸ’αž‰αžΆαž”αŸαžŽαŸ’αžŽαŸ– Apache 2.0

αžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŸαŸ†αžŽαžΆαž‰αŸ‹αžŸαŸαžœαžΆαž€αž˜αŸ’αž˜αžŠαŸαž‘αžΌαž›αŸ†αž‘αžΌαž›αžΆαž™αžŠαŸ‚αž›αž˜αž·αž“αžαŸ’αžšαžΉαž˜αžαŸ‚αž‡αžΆαž§αž”αž€αžšαžŽαŸαž”αž‰αŸ’αž‡αžΆ Ingress αžŠαŸ‚αž›αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž…αžšαžΆαž…αžšαžŽαŸαž…αžΌαž›αž–αžΈαžαžΆαž„αž€αŸ’αžšαŸ…αž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αž‘αŸ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžαŸ‚αž˜αž‘αžΆαŸ†αž„αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž…αžšαžΆαž…αžšαžŽαŸαž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αž…αž„αŸ’αž€αŸ„αž˜αž•αž„αžŠαŸ‚αžšαŸ” αž“αŸ…αž€αŸ’αžšαŸ„αž˜αž€αŸ’αžšαžŽαžΆαžαŸ‹ Envoy αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαž‡αžΆαž”αŸ’αžšαžΌαž€αžŸαŸŠαžΈαžšαžαž™αž“αŸ’αžαž…αŸ†αž αŸ€αž„αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžŸαŸαžœαžΆαž€αž˜αŸ’αž˜αž“αžΈαž˜αž½αž™αŸ—αŸ” αž“αŸ…αž€αŸ’αž“αž»αž„αžαŸ’αž›αžΉαž˜αžŸαžΆαžš αž“αŸαŸ‡αž‚αžΊαž‡αžΆαž€αžΆαžšαžšαž½αž˜αž•αŸ’αžŸαŸ†αžŠαŸαž’αŸ†αž˜αž½αž™αžŠαŸ‚αž› "αž’αžΆαž…αž’αŸ’αžœαžΎαž’αŸ’αžœαžΈαž”αžΆαž“" αž αžΎαž™αž‚αŸ†αž“αž·αžαž…αž˜αŸ’αž”αž„αžšαž”αžŸαŸ‹αžœαžΆαž‚αžΊαžŸαž˜αžαŸ’αžαž—αžΆαž–αž€αŸ’αž“αž»αž„αž€αžΆαžšαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž’αžαž·αž”αžšαž˜αžΆ αž—αžΆαž–αž’αžΆαž…αž–αž„αŸ’αžšαžΈαž€αž”αžΆαž“ αžŸαž»αžœαžαŸ’αžαž·αž—αžΆαž– αž“αž·αž„αžαž˜αŸ’αž›αžΆαž—αžΆαž–αŸ” αž‡αžΆαž˜αž½αž™αžœαžΆ αž’αŸ’αž“αž€αž’αžΆαž…αž€αŸ‚αžŸαž˜αŸ’αžšαž½αž›αž•αŸ’αž›αžΌαžœαž…αžšαžΆαž…αžšαžŽαŸ αž…αžΌαž›αž”αŸ’αžšαžΎαž€αžΆαžšαž’αž“αž»αž‰αŸ’αž‰αžΆαžαžšαžœαžΆαž„αžŸαŸαžœαžΆαž€αž˜αŸ’αž˜ αžαž»αž›αŸ’αž™αž—αžΆαž– αž€αžΆαžšαžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™ αž€αžΆαžšαž…αŸαž‰αž•αŸ’αžŸαžΆαž™ Canary αž“αž·αž„αž…αŸ’αžšαžΎαž“αž‘αŸ€αžαŸ” αžŸαžΌαž˜αž’αžΆαž“αž”αž“αŸ’αžαŸ‚αž˜αž’αŸ†αž–αžΈ Istio αž“αŸ…αž€αŸ’αž“αž»αž„αžŸαŸŠαŸαžšαžΈαž“αŸƒαž’αžαŸ’αžαž”αž‘ "αžαŸ’αžšαž‘αž”αŸ‹αž‘αŸ… αžŸαŸαžœαžΆαž˜αžΈαž€αŸ’αžšαžΌ αž‡αžΆαž˜αž½αž™ Istio"αŸ”

αž―αž€αž’αž‚αŸ’αž‚αžšαžŠαŸ’αž‹αž‘αžΌαž

αžœαŸαž”αžŸαžΆαž™: github.com/datawire/ambassador
αž’αžΆαž‡αŸ’αž‰αžΆαž”αŸαžŽαŸ’αžŽαŸ– Apache 2.0

αžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž˜αž½αž™αž‘αŸ€αžαž•αŸ’αž’αŸ‚αž€αž›αžΎ Envoy αŸ” αžœαžΆαž˜αžΆαž“αž€αŸ†αžŽαŸ‚αž₯αžαž‚αž·αžαžαŸ’αž›αŸƒ αž“αž·αž„αž–αžΆαžŽαž·αž‡αŸ’αž‡αž€αž˜αŸ’αž˜αŸ” αžœαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αžŠαžΆαž€αŸ‹αžαžΆαž‡αžΆ "αžŠαžΎαž˜αž€αŸ†αžŽαžΎαžαž–αŸαž‰αž›αŸαž‰αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ Kubernetes" αžŠαŸ‚αž›αž“αžΆαŸ†αž˜αž€αž“αžΌαžœαž‚αž»αžŽαžŸαž˜αŸ’αž”αžαŸ’αžαž·αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž‚αŸ’αž“αžΆ (αž€αžΆαžšαžšαž½αž˜αž”αž‰αŸ’αž…αžΌαž›αž™αŸ‰αžΆαž„αžαžΉαž„αžšαžΉαž„αž‡αžΆαž˜αž½αž™αž“αžΉαž„αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αž αž“αž·αž„αž’αž„αŸ’αž‚αž—αžΆαž–αž“αŸƒαž€αŸ’αžšαž»αž˜ K8s) αŸ”

αžαžΆαžšαžΆαž„αž”αŸ’αžšαŸ€αž”αž’αŸ€αž”

αžŠαžΌαž…αŸ’αž“αŸαŸ‡ αž…αŸ†αžŽαž»αž…αžŸαŸ†αžαžΆαž“αŸ‹αž“αŸƒαž’αžαŸ’αžαž”αž‘αž‚αžΊαž‡αžΆαžαžΆαžšαžΆαž„αžŠαŸαž’αŸ†αž“αŸαŸ‡αŸ–

αž‘αž·αžŠαŸ’αž‹αž—αžΆαž–αž‘αžΌαž‘αŸ… αž“αž·αž„αž€αžΆαžšαž”αŸ’αžšαŸ€αž”αž’αŸ€αž”αž§αž”αž€αžšαžŽαŸαž”αž‰αŸ’αž‡αžΆ Ingress αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ Kubernetes

αžœαžΆβ€‹αž’αžΆαž…β€‹αž…αž»αž…β€‹αž”αžΆαž“β€‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹β€‹αž‘αž·αžŠαŸ’αž‹αž—αžΆαž–β€‹αž€αžΆαž“αŸ‹αžαŸ‚β€‹αž‡αž·αž αž αžΎαž™β€‹αž€αŸβ€‹αž˜αžΆαž“β€‹αž‡αžΆβ€‹αž‘αž˜αŸ’αžšαž„αŸ‹β€‹αž•αž„αžŠαŸ‚αžšαŸ” Google αžŸαž“αŸ’αž›αžΉαž€.

αžŸαžΌαž˜αžŸαž„αŸ’αžαŸαž”αŸ”

αž‚αŸ„αž›αž”αŸ†αžŽαž„αž“αŸƒαž’αžαŸ’αžαž”αž‘αž“αŸαŸ‡αž‚αžΊαžŠαžΎαž˜αŸ’αž”αžΈαž•αŸ’αžαž›αŸ‹αž“αžΌαžœαž€αžΆαžšαž™αž›αŸ‹αžŠαžΉαž„αž–αŸαž‰αž›αŸαž‰αž”αž“αŸ’αžαŸ‚αž˜αž‘αŸ€αž (αž‘αŸ„αŸ‡αž‡αžΆαž™αŸ‰αžΆαž„αžŽαžΆ αžŠαŸ„αž™αž˜αž·αž“αž’αžŸαŸ‹αž“αŸαž™αž‘αŸ!) αž“αŸƒαž‡αž˜αŸ’αžšαžΎαžŸαž’αŸ’αžœαžΈαžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž’αŸ’αžœαžΎαž“αŸ…αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αŸ” αž‡αžΆαž’αž˜αŸ’αž˜αžαžΆ αž§αž”αž€αžšαžŽαŸαž”αž‰αŸ’αž‡αžΆαž“αžΈαž˜αž½αž™αŸ—αž˜αžΆαž“αž‚αž»αžŽαžŸαž˜αŸ’αž”αžαŸ’αžαž· αž“αž·αž„αž‚αž»αžŽαžœαž·αž”αžαŸ’αžαž·αžšαŸ€αž„αŸ—αžαŸ’αž›αž½αž“β€¦

Ingress αž”αž»αžšαžΆαžŽαž–αžΈ Kubernetes αž‚αžΊαž›αŸ’αž’αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž—αžΆαž–αž’αžΆαž…αžšαž€αž”αžΆαž“ αž“αž·αž„αž€αžΆαžšαž”αž„αŸ’αž αžΆαž‰αžšαž”αžŸαŸ‹αžœαžΆ αž›αž€αŸ’αžαžŽαŸˆαž–αž·αžŸαŸαžŸαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαžΆαž“αŸ‹ - αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαž‘αžΌαž‘αŸ… αžœαžΆαž‚αž½αžšαžαŸ‚ "αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαžΆαž“αŸ‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž—αŸ’αž“αŸ‚αž€" αŸ” αž‘αŸ„αŸ‡αž™αŸ‰αžΆαž„αžŽαžΆαž€αŸαžŠαŸ„αž™ αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž˜αžΆαž“αžαž˜αŸ’αžšαžΌαžœαž€αžΆαžšαž€αžΎαž“αž‘αžΎαž„αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžŸαŸ’αžαŸαžšαž—αžΆαž– αž€αž˜αŸ’αžšαž·αžαž“αŸƒαž›αž€αŸ’αžαžŽαŸˆαž–αž·αžŸαŸαžŸ αž“αž·αž„αž€αžΆαžšαž’αž—αž·αžœαžŒαŸ’αžαž“αŸ αž’αŸ’αž“αž€αž‚αž½αžšαžαŸ‚αž™αž€αž…αž·αžαŸ’αžαž‘αž»αž€αžŠαžΆαž€αŸ‹αž…αŸ†αž–αŸ„αŸ‡ Ingress αž‡αžΆαž˜αž½αž™ NGINX Plus αž“αž·αž„αž€αžΆαžšαž‡αžΆαžœαž”αž„αŸ‹αž”αŸ’αžšαžΆαž€αŸ‹αŸ” Kong αž˜αžΆαž“αžŸαŸ†αžŽαž»αŸ†αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‡αŸ†αž“αž½αž™αžŠαŸ‚αž›αž˜αžΆαž“αž‡αžΆαž„αž‚αŸαž”αŸ†αž•αž»αž (αž αžΎαž™αžαžΆαž˜αž“αŸ„αŸ‡ αž±αž€αžΆαžŸαžŠαŸ‚αž›αž–αž½αž€αž‚αŸαž•αŸ’αžαž›αŸ‹) αž αžΎαž™αž“αŸ…αž€αŸ’αž“αž»αž„αž€αŸ†αžŽαŸ‚αžŠαŸ‚αž›αž”αžΆαž“αž”αž„αŸ‹αž˜αžΆαž“αž…αŸ’αžšαžΎαž“αž‡αžΆαž„αž“αŸαŸ‡αž‘αŸ€αžαŸ” αžœαžΆαž˜αžΆαž“αž±αž€αžΆαžŸαž…αŸ’αžšαžΎαž“αž€αŸ’αž“αž»αž„αž€αžΆαžšαž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆ API Gateway αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αžαžΆαž˜αžœαž“αŸ’αžαžŠαŸ„αž™αž•αŸ’αž’αŸ‚αž€αž›αžΎαž’αž“αž’αžΆαž“ CRD αž€αŸαžŠαžΌαž…αž‡αžΆαžŸαŸαžœαžΆαž€αž˜αŸ’αž˜ Kubernetes αž‡αžΆαž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αŸ”

αž‡αžΆαž˜αž½αž™αž“αžΉαž„αžαž˜αŸ’αžšαžΌαžœαž€αžΆαžšαž€αžΎαž“αž‘αžΎαž„αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžαž»αž›αŸ’αž™αž—αžΆαž– αž“αž·αž„αž€αžΆαžšαž’αž“αž»αž‰αŸ’αž‰αžΆαž αžŸαžΌαž˜αž˜αžΎαž› Traefik αž“αž·αž„ HAProxy αŸ” αž‘αžΆαŸ†αž„αž“αŸαŸ‡αž‚αžΊαž‡αžΆαž‚αž˜αŸ’αžšαŸ„αž„αž”αŸ’αžšαž—αž–αž”αžΎαž€αž…αŸ†αž  αžŠαŸ‚αž›αž”αž„αŸ’αž αžΆαž‰αž±αŸ’αž™αžƒαžΎαž‰αž€αŸ’αž“αž»αž„αžšαž™αŸˆαž–αŸαž›αž‡αžΆαž…αŸ’αžšαžΎαž“αž†αŸ’αž“αžΆαŸ† αž˜αžΆαž“αžŸαŸ’αžαŸαžšαž—αžΆαž– αž“αž·αž„αž€αŸ†αž–αž»αž„αž’αž—αž·αžœαžŒαŸ’αžαž™αŸ‰αžΆαž„αžŸαž€αž˜αŸ’αž˜αŸ” Contour αž”αžΆαž“αž…αŸαž‰αž’αžŸαŸ‹αžšαž™αŸˆαž–αŸαž›αž–αžΈαžšαž”αžΈαž†αŸ’αž“αžΆαŸ†αž αžΎαž™ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžœαžΆαž“αŸ…αžαŸ‚αž˜αžΎαž›αž‘αŸ…αž€αŸ’αž˜αŸαž„αž–αŸαž€ αž αžΎαž™αž˜αžΆαž“αž›αž€αŸ’αžαžŽαŸˆαž–αž·αžŸαŸαžŸαž‡αžΆαž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž”αž“αŸ’αžαŸ‚αž˜αž–αžΈαž›αžΎ Envoy αž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αŸ” αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž˜αžΆαž“αžαž˜αŸ’αžšαžΌαžœαž€αžΆαžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžœαžαŸ’αžαž˜αžΆαž“ / αž€αžΆαžšαž”αž„αŸ’αž€αž”αŸ‹ WAF αž“αŸ…αž–αžΈαž˜αž»αžαž€αž˜αŸ’αž˜αžœαž·αž’αžΈ αž’αŸ’αž“αž€αž‚αž½αžšαžαŸ‚αž™αž€αž…αž·αžαŸ’αžαž‘αž»αž€αžŠαžΆαž€αŸ‹αž…αŸ†αž–αŸ„αŸ‡ Ingress αžŠαžΌαž…αž‚αŸ’αž“αžΆαž–αžΈ Kubernetes ឬ HAProxy αŸ”

αž αžΎαž™β€‹αž›αž€αŸ’αžαžŽαŸˆβ€‹αžŸαž˜αŸ’αž”αžαŸ’αžαž·β€‹αžŠαŸ‚αž›β€‹αž˜αžΆαž“β€‹αž”αŸ†αž•αž»αžβ€‹αž‚αžΊβ€‹αž•αž›αž·αžαž•αž›β€‹αžŠαŸ‚αž›β€‹αž”αžΆαž“β€‹αž”αž„αŸ’αž€αžΎαžβ€‹αž‘αžΎαž„β€‹αž“αŸ…β€‹αž›αžΎβ€‹αž€αŸ†αž–αžΌαž›β€‹αžšαž”αžŸαŸ‹ Envoy αž‡αžΆαž–αž·αžŸαŸαžŸ IstioαŸ” αžœαžΆαž αžΆαž€αŸ‹αžŠαžΌαž…αž‡αžΆαžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŠαŸαž‘αžΌαž›αŸ†αž‘αžΌαž›αžΆαž™αž˜αž½αž™αžŠαŸ‚αž› "αž’αžΆαž…αž’αŸ’αžœαžΎαž’αŸ’αžœαžΈαž”αžΆαž“" αžŠαŸ‚αž›αž‘αŸ„αŸ‡αž‡αžΆαž™αŸ‰αžΆαž„αžŽαžΆαž€αŸαž˜αžΆαž“αž“αŸαž™αžαžΆαž€αž˜αŸ’αžšαž·αžαž…αžΌαž›αžαŸ’αž–αžŸαŸ‹αž‚αž½αžšαž±αŸ’αž™αž€αžαŸ‹αžŸαž˜αŸ’αž‚αžΆαž›αŸ‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’ / αž€αžΆαžšαž”αžΎαž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš / αž€αžΆαžšαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž‡αžΆαž„αžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž•αŸ’αžŸαŸαž„αž‘αŸ€αžαŸ”

αž™αžΎαž„αž”αžΆαž“αž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸ αž“αž·αž„αž“αŸ…αžαŸ‚αž”αŸ’αžšαžΎ Ingress αž–αžΈ Kubernetes αž‡αžΆαž§αž”αž€αžšαžŽαŸαž”αž‰αŸ’αž‡αžΆαžŸαŸ’αžαž„αŸ‹αžŠαžΆαžš αžŠαŸ‚αž›αž‚αŸ’αžšαž”αžŠαžŽαŸ’αžαž”αŸ‹ 80-90% αž“αŸƒαžαž˜αŸ’αžšαžΌαžœαž€αžΆαžšαŸ” αžœαžΆαž–αž·αžαž‡αžΆαž’αžΆαž…αž‘αž»αž€αž…αž·αžαŸ’αžαž”αžΆαž“ αž„αžΆαž™αžŸαŸ’αžšαž½αž›αž€αŸ’αž“αž»αž„αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’ αž“αž·αž„αž–αž„αŸ’αžšαžΈαž€αŸ” αž‡αžΆαž‘αžΌαž‘αŸ… αž’αžœαžαŸ’αžŠαž˜αžΆαž“αž“αŸƒαžαž˜αŸ’αžšαžΌαžœαž€αžΆαžšαž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹ αžœαžΆαž‚αž½αžšαžαŸ‚αžŸαž˜αž“αžΉαž„αž€αŸ’αžšαž»αž˜/αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž—αžΆαž‚αž…αŸ’αžšαžΎαž“αŸ” αž€αŸ’αž“αž»αž„αž…αŸ†αžŽαŸ„αž˜αž•αž›αž·αžαž•αž›αžŸαž€αž› αž“αž·αž„αžŸαžΆαž˜αž‰αŸ’αž‰αžŠαžΌαž…αž‚αŸ’αž“αžΆ Traefik αž“αž·αž„ HAProxy αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŽαŸ‚αž“αžΆαŸ†αŸ”

PS

αžŸαžΌαž˜αž’αžΆαž“αž•αž„αžŠαŸ‚αžšαž“αŸ…αž›αžΎαž”αŸ’αž›αž€αŸ‹αžšαž”αžŸαŸ‹αž™αžΎαž„αŸ–

αž”αŸ’αžšαž—αž–: www.habr.com

αž”αž“αŸ’αžαŸ‚αž˜αž˜αžαž·αž™αŸ„αž”αž›αŸ‹