"рдХреБрдмрд░рдиреЗрдЯрд▓реЗ 10 рдЧреБрдгрд╛рд▓реЗ рд╡рд┐рд▓рдореНрдмрддрд╛ рдмрдвреНрдпреЛ": рдпрд╕рдХреЛ рд▓рд╛рдЧрд┐ рдХреЛ рджреЛрд╖реА рдЫ?

рдиреЛрдЯред рдЕрдиреБрд╡рд╛рджред: рдпреЛ рд▓реЗрдЦ, рдпреБрд░реЛрдкреЗрд▓реА рдХрдореНрдкрдиреА Adevinta рдорд╛ рдкреНрд░рд┐рдиреНрд╕рд┐рдкрд▓ рд╕рдлреНрдЯрд╡реЗрдпрд░ рдЗрдиреНрдЬрд┐рдирд┐рдпрд░ рдХреЛ рдкрдж рдзрд╛рд░рдг рдЧрд░реЗрдХрд╛ Galo Navarro рджреНрд╡рд╛рд░рд╛ рд▓реЗрдЦрд┐рдПрдХреЛ, рдкреВрд░реНрд╡рд╛рдзрд╛рд░ рд╕рдВрдЪрд╛рд▓рди рдХреЛ рдХреНрд╖реЗрддреНрд░ рдорд╛ рдПрдХ рдЖрдХрд░реНрд╖рдХ рд░ рдирд┐рд░реНрджреЗрд╢рд╛рддреНрдордХ "рдЕрдиреБрд╕рдиреНрдзрд╛рди" рд╣реЛред рдпрд╕рдХреЛ рдореВрд▓ рд╢реАрд░реНрд╖рдХ рдЕрдиреБрд╡рд╛рджрдорд╛ рдереЛрд░реИ рд╡рд┐рд╕реНрддрд╛рд░ рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛ рдХрд┐рдирднрдиреЗ рд▓реЗрдЦрдХрд▓реЗ рд╕реБрд░реБрдорд╛ рдиреИ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдЧрд░реЗрдХрд╛ рдЫрдиреНред

"рдХреБрдмрд░рдиреЗрдЯрд▓реЗ 10 рдЧреБрдгрд╛рд▓реЗ рд╡рд┐рд▓рдореНрдмрддрд╛ рдмрдвреНрдпреЛ": рдпрд╕рдХреЛ рд▓рд╛рдЧрд┐ рдХреЛ рджреЛрд╖реА рдЫ?

рд▓реЗрдЦрдХрдмрд╛рдЯ рдиреЛрдЯ: рдпреЛ рдкреЛрд╕реНрдЯ рдЬрд╕реНрддреЛ рджреЗрдЦрд┐рдиреНрдЫ рдЖрдХрд░реНрд╖рд┐рдд рдЕрдкреЗрдХреНрд╖рд┐рдд рднрдиреНрджрд╛ рдзреЗрд░реИ рдзреНрдпрд╛рдиред рд▓реЗрдЦрдХреЛ рд╢реАрд░реНрд╖рдХ рднреНрд░рд╛рдордХ рдЫ рд░ рдХреЗрд╣реА рдкрд╛рдардХрд╣рд░реВ рджреБрдЦреА рдЫрдиреН рднрдиреЗрд░ рдорд▓рд╛рдИ рдЕрдЭреИ рд░рд┐рд╕ рдЙрдареНрдЫред рдо рдХреЗ рднрдЗрд░рд╣реЗрдХреЛ рдЫ рдХреЛ рдХрд╛рд░рдгрд╣рд░реБ рдмреБрдЭреНрдЫреБ, рддреНрдпрд╕реИрд▓реЗ, рд╕рдореНрдкреВрд░реНрдг рд╖рдбреНрдпрдиреНрддреНрд░ рдмрд░реНрдмрд╛рдж рдЧрд░реНрдиреЗ рдЬреЛрдЦрд┐рдордХреЛ рдмрд╛рд╡рдЬреБрдж, рдо рдпреЛ рд▓реЗрдЦ рдХреЗ рдмрд╛рд░реЗ рдорд╛ рддреБрд░реБрдиреНрддреИ рдмрддрд╛рдЙрди рдЪрд╛рд╣рдиреНрдЫреБред рдЯреЛрд▓реАрд╣рд░реВ Kubernetes рдорд╛ рд╕реНрдерд╛рдирд╛рдиреНрддрд░рдг рдЧрд░реНрджрд╛ рдореИрд▓реЗ рджреЗрдЦреЗрдХреЛ рдПрдЙрдЯрд╛ рдЬрд┐рдЬреНрдЮрд╛рд╕реБ рдХреБрд░рд╛ рдпреЛ рд╣реЛ рдХрд┐ рдЬрдм рдХреБрдиреИ рд╕рдорд╕реНрдпрд╛ рдЙрддреНрдкрдиреНрди рд╣реБрдиреНрдЫ (рдЬрд╕реНрддреИ рдорд╛рдЗрдЧреНрд░реЗрд╕рди рдкрдЫрд┐ рдмрдвреЗрдХреЛ рд╡рд┐рд▓рдореНрдмрддрд╛), рд╕рдмреИрднрдиреНрджрд╛ рдкрд╣рд┐рд▓реЗ рджреЛрд╖ рд▓рдЧрд╛рдЗрдиреЗ рдХреБрд░рд╛ Kubernetes рд╣реЛ, рддрд░ рддреНрдпрд╕рдкрдЫрд┐ рдпреЛ рдерд╛рд╣рд╛ рд╣реБрдиреНрдЫ рдХрд┐ рдЕрд░реНрдХреЗрд╕реНрдЯреНрд░реЗрдЯрд░ рд╡рд╛рд╕реНрддрд╡рдорд╛ рд╣реЛрдЗрдиред рджреЛрд╖ред рдпрд╕ рд▓реЗрдЦрд▓реЗ рдпрд╕реНрддреИ рдПрдЙрдЯрд╛ рдШрдЯрдирд╛рдХреЛ рдмрд╛рд░реЗрдорд╛ рдмрддрд╛рдЙрдБрдЫред рдпрд╕рдХреЛ рдирд╛рдорд▓реЗ рд╣рд╛рдореНрд░реЛ рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рд╣рд░реВ рдордзреНрдпреЗ рдПрдХрдХреЛ рдЙрджреНрдЧрд╛рд░ рджреЛрд╣реЛрд░реНрдпрд╛рдЙрдБрдЫ (рдкрдЫрд┐ рддрдкрд╛рдИрдВрд▓реЗ рдХреБрдмрд░реНрдиреЗрдЯреНрд╕рд╕рдБрдЧ рдпрд╕рдХреЛ рдХреБрдиреИ рд╕рд░реЛрдХрд╛рд░ рдЫреИрди рднрдиреЗрд░ рджреЗрдЦреНрдиреБрд╣реБрдиреЗрдЫ)ред рддрдкрд╛рдИрдВрд▓реЗ рдпрд╣рд╛рдБ Kubernetes рдХреЛ рдмрд╛рд░реЗрдорд╛ рдХреБрдиреИ рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рдЦреБрд▓рд╛рд╕рд╛рд╣рд░реВ рдлреЗрд▓рд╛ рдкрд╛рд░реНрдиреБрд╣реБрдиреЗ рдЫреИрди, рддрд░ рддрдкрд╛рдИрдВ рдЬрдЯрд┐рд▓ рдкреНрд░рдгрд╛рд▓реАрд╣рд░реВрдХреЛ рдмрд╛рд░реЗрдорд╛ рдХреЗрд╣реА рд░рд╛рдореНрд░реЛ рдкрд╛рдард╣рд░реВрдХреЛ рдЖрд╢рд╛ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред

рдХреЗрд╣реА рд╣рдкреНрддрд╛ рдЕрдШрд┐, рдореЗрд░реЛ рдЯреЛрд▓реАрд▓реЗ рдПрдХрд▓ рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрднрд┐рд╕рд▓рд╛рдИ рдХреЛрд░ рдкреНрд▓реЗрдЯрдлрд░реНрдордорд╛ рдорд╛рдЗрдЧреНрд░реЗрдЯ рдЧрд░рд┐рд░рд╣реЗрдХреЛ рдерд┐рдпреЛ рдЬрд╕рдорд╛ CI/CD, Kubernetes-рдЖрдзрд╛рд░рд┐рдд рд░рдирдЯрд╛рдЗрдо, рдореЗрдЯреНрд░рд┐рдХреНрд╕, рд░ рдЕрдиреНрдп рдЧреБрдбреАрд╣рд░реВ рд╕рдорд╛рд╡реЗрд╢ рдерд┐рдПред рдпреЛ рдХрджрдо рдкрд░реАрдХреНрд╖рдг рдкреНрд░рдХреГрддрд┐рдХреЛ рдерд┐рдпреЛ: рд╣рд╛рдореАрд▓реЗ рдпрд╕рд▓рд╛рдИ рдЖрдзрд╛рд░рдХреЛ рд░реВрдкрдорд╛ рд▓рд┐рдиреЗ рд░ рдЖрдЧрд╛рдореА рдорд╣рд┐рдирд╛рд╣рд░реВрдорд╛ рд▓рдЧрднрдЧ 150 рдердк рд╕реЗрд╡рд╛рд╣рд░реВ рд╕реНрдерд╛рдирд╛рдиреНрддрд░рдг рдЧрд░реНрдиреЗ рдпреЛрдЬрдирд╛ рдмрдирд╛рдпреМрдВред рддреА рд╕рдмреИ рд╕реНрдкреЗрдирдХрд╛ рдХреЗрд╣реА рдареВрд▓рд╛ рдЕрдирд▓рд╛рдЗрди рдкреНрд▓реЗрдЯрдлрд░реНрдорд╣рд░реВ (Infojobs, Fotocasa, рдЖрджрд┐) рдХреЛ рд╕рдЮреНрдЪрд╛рд▓рдирдХрд╛ рд▓рд╛рдЧрд┐ рдЬрд┐рдореНрдореЗрд╡рд╛рд░ рдЫрдиреНред

рд╣рд╛рдореАрд▓реЗ Kubernetes рдорд╛ рдПрдкреНрд▓рд┐рдХреЗрд╕рди рдбрд┐рдкреНрд▓реЛрдп рдЧрд░реЗрдкрдЫрд┐ рд░ рдпрд╕рдорд╛ рдХреЗрд╣реА рдЯреНрд░рд╛рдлрд┐рдХ рд░рд┐рдбрд┐рд░реЗрдХреНрдЯ рдЧрд░реЗрдкрдЫрд┐, рдПрдЙрдЯрд╛ рдбрд░рд▓рд╛рдЧреНрджреЛ рдЖрд╢реНрдЪрд░реНрдпрд▓реЗ рд╣рд╛рдореАрд▓рд╛рдИ рдкрд░реНрдЦрд┐рд░рд╣реЗрдХреЛ рдерд┐рдпреЛред рдврд┐рд▓рд╛ (рд╡рд┐рд▓рдореНрдмрддрд╛) Kubernetes рдорд╛ рдЕрдиреБрд░реЛрдзрд╣рд░реВ EC10 рдХреЛ рддреБрд▓рдирд╛рдорд╛ 2 рдЧреБрдгрд╛ рдмрдвреА рдерд┐рдПред рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛, рдпреЛ рдпрд╛ рдд рдпреЛ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╕рдорд╛рдзрд╛рди рдЦреЛрдЬреНрди рдЖрд╡рд╢реНрдпрдХ рдерд┐рдпреЛ, рд╡рд╛ microservice рдХреЛ рдорд╛рдЗрдЧреНрд░реЗрд╕рди рддреНрдпрд╛рдЧреНрдиреБ (рд░, рд╕рдореНрднрд╡рддрдГ, рд╕рдореНрдкреВрд░реНрдг рдкрд░рд┐рдпреЛрдЬрдирд╛)ред

EC2 рдорд╛ рднрдиреНрджрд╛ Kubernetes рдорд╛ рд╡рд┐рд▓рдореНрдмрддрд╛ рдХрд┐рди рдпрддрд┐ рдзреЗрд░реИ рдЫ?

рдмрд╛рдзрд╛ рдкрддреНрддрд╛ рд▓рдЧрд╛рдЙрди, рд╣рд╛рдореАрд▓реЗ рд╕рдореНрдкреВрд░реНрдг рдЕрдиреБрд░реЛрдз рдорд╛рд░реНрдЧрдорд╛ рдореЗрдЯреНрд░рд┐рдХреНрд╕ рд╕рдЩреНрдХрд▓рди рдЧрд░реНрдпреМрдВред рд╣рд╛рдореНрд░реЛ рд╕рдВрд░рдЪрдирд╛ рд╕рд░рд▓ рдЫ: рдПрдкреАрдЖрдИ рдЧреЗрдЯрд╡реЗ (рдЬреБрдЙрд▓) рдкреНрд░реЛрдХреНрд╕реАрд╣рд░реВрд▓реЗ EC2 рд╡рд╛ Kubernetes рдорд╛ рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрднрд┐рд╕ рдЙрджрд╛рд╣рд░рдгрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдЕрдиреБрд░реЛрдз рдЧрд░реНрджрдЫред Kubernetes рдорд╛ рд╣рд╛рдореА NGINX Ingress рдирд┐рдпрдиреНрддреНрд░рдХ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдЫреМрдВ, рд░ рдмреНрдпрд╛рдХрдПрдиреНрдбрд╣рд░реВ рд╕рд╛рдорд╛рдиреНрдп рд╡рд╕реНрддреБрд╣рд░реВ рд╣реБрдиреНред рддреИрдирд╛рде рд╡рд╕рдиреНрдд рдкреНрд▓реЗрдЯрдлрд░реНрдордорд╛ JVM рдЕрдиреБрдкреНрд░рдпреЛрдЧрдХреЛ рд╕рд╛рдеред

                                  EC2
                            +---------------+
                            |  +---------+  |
                            |  |         |  |
                       +-------> BACKEND |  |
                       |    |  |         |  |
                       |    |  +---------+  |                   
                       |    +---------------+
             +------+  |
Public       |      |  |
      -------> ZUUL +--+
traffic      |      |  |              Kubernetes
             +------+  |    +-----------------------------+
                       |    |  +-------+      +---------+ |
                       |    |  |       |  xx  |         | |
                       +-------> NGINX +------> BACKEND | |
                            |  |       |  xx  |         | |
                            |  +-------+      +---------+ |
                            +-----------------------------+

рд╕рдорд╕реНрдпрд╛ рдмреНрдпрд╛рдХрдЗрдиреНрдбрдорд╛ рдкреНрд░рд╛рд░рдореНрднрд┐рдХ рд╡рд┐рд▓рдореНрдмрддрд╛рд╕рдБрдЧ рд╕рдореНрдмрдиреНрдзрд┐рдд рдЬрд╕реНрддреЛ рджреЗрдЦрд┐рдиреНрдереНрдпреЛ (рдореИрд▓реЗ рдЧреНрд░рд╛рдлрдорд╛ рд╕рдорд╕реНрдпрд╛ рдХреНрд╖реЗрддреНрд░рд▓рд╛рдИ "xx" рдХреЛ рд░реВрдкрдорд╛ рдЪрд┐рдиреНрд╣ рд▓рдЧрд╛рдПрдБ)ред EC2 рдорд╛, рдЖрд╡реЗрджрди рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд▓реЗ рд▓рдЧрднрдЧ 20ms рд▓рд┐рдпреЛред Kubernetes рдорд╛, рд╡рд┐рд▓рдореНрдмрддрд╛ 100-200 ms рдорд╛ рдмрдвреНрдпреЛред

рд╣рд╛рдореАрд▓реЗ рд░рдирдЯрд╛рдЗрдо рдкрд░рд┐рд╡рд░реНрддрдирд╕рдБрдЧ рд╕рдореНрдмрдиреНрдзрд┐рдд рд╕рдореНрднрд╛рд╡рд┐рдд рд╕рдВрджрд┐рдЧреНрдзрд╣рд░реВрд▓рд╛рдИ рддреБрд░реБрдиреНрддреИ рдЦрд╛рд░реЗрдЬ рдЧрд░реНрдпреМрдВред JVM рд╕рдВрд╕реНрдХрд░рдг рдЙрд╕реНрддреИ рд░рд╣рдиреНрдЫред рдХрдиреНрдЯреЗрдирд░рд╛рдЗрдЬреЗрд╕рди рд╕рдорд╕реНрдпрд╛рд╣рд░реВ рдкрдирд┐ рдпрд╕рд╕рдБрдЧ рдХреБрдиреИ рд╕рд░реЛрдХрд╛рд░ рдерд┐рдПрди: рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдкрд╣рд┐рд▓реЗ рдиреИ EC2 рдорд╛ рдХрдиреНрдЯреЗрдирд░рд╣рд░реВрдорд╛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдЪрд▓рд┐рд░рд╣реЗрдХреЛ рдерд┐рдпреЛред рд▓реЛрдб рд╣реБрдБрджреИрдЫ? рддрд░ рд╣рд╛рдореАрд▓реЗ рдкреНрд░рддрд┐ рд╕реЗрдХреЗрдиреНрдб рез рдЕрдиреБрд░реЛрдзрдорд╛ рдкрдирд┐ рдЙрдЪреНрдЪ рд╡рд┐рд▓рдореНрдмрддрд╛рд╣рд░реВ рдЕрд╡рд▓реЛрдХрди рдЧрд░реНрдпреМрдВред рдлреЛрд╣реЛрд░ рд╕рдЩреНрдХрд▓рдирдХрд╛ рд▓рд╛рдЧрд┐ рд░реЛрдХрд╣рд░реВ рдкрдирд┐ рдмреЗрд╡рд╛рд╕реНрддрд╛ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред

рд╣рд╛рдореНрд░рд╛ рдПрдХ Kubernetes рдкреНрд░рд╢рд╛рд╕рдХрд▓реЗ рд╕реЛ рдПрдкрдорд╛ рдмрд╛рд╣реНрдп рдирд┐рд░реНрднрд░рддрд╛ рдЫ рдХрд┐ рдЫреИрди рднрдиреЗрд░ рд╕реЛрдЪреЗрдХрд╛ рдЫрдиреН рдХрд┐рдирднрдиреЗ DNS рдХреНрд╡реЗрд░реАрд╣рд░реВрд▓реЗ рд╡рд┐рдЧрддрдорд╛ рдпрд╕реНрддреИ рд╕рдорд╕реНрдпрд╛рд╣рд░реВ рдирд┐рдореНрддреНрдпрд╛рдПрдХрд╛ рдерд┐рдПред

рдкрд░рд┐рдХрд▓реНрдкрдирд╛ 1: DNS рдирд╛рдо рд╕рдВрдХрд▓реНрдк

рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрд░реЛрдзрдХреЛ рд▓рд╛рдЧрд┐, рд╣рд╛рдореНрд░реЛ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд▓реЗ рдбреЛрдореЗрдирдорд╛ AWS Elasticsearch рдЙрджрд╛рд╣рд░рдг рдПрдХ рджреЗрдЦрд┐ рддреАрди рдкрдЯрдХ рдкрд╣реБрдБрдЪ рдЧрд░реНрджрдЫред elastic.spain.adevinta.comред рд╣рд╛рдореНрд░реЛ рдХрдиреНрдЯреЗрдирд░ рднрд┐рддреНрд░ рддреНрдпрд╣рд╛рдБ рдПрдХ рдЦреЛрд▓ рдЫ, рддреНрдпрд╕реИрд▓реЗ рд╣рд╛рдореА рдЬрд╛рдБрдЪ рдЧрд░реНрди рд╕рдХреНрдЫреМрдВ рдХрд┐ рдбреЛрдореЗрди рдЦреЛрдЬреНрди рд╡рд╛рд╕реНрддрд╡рдорд╛ рдзреЗрд░реИ рд╕рдордп рд▓рд╛рдЧреНрдЫред

рдХрдиреНрдЯреЗрдирд░рдмрд╛рдЯ DNS рдкреНрд░рд╢реНрдирд╣рд░реВ:

[root@be-851c76f696-alf8z /]# while true; do dig "elastic.spain.adevinta.com" | grep time; sleep 2; done
;; Query time: 22 msec
;; Query time: 22 msec
;; Query time: 29 msec
;; Query time: 21 msec
;; Query time: 28 msec
;; Query time: 43 msec
;; Query time: 39 msec

рдПрдкреНрд▓рд┐рдХреЗрд╕рди рдЪрд▓рд┐рд░рд╣реЗрдХреЛ EC2 рдЙрджрд╛рд╣рд░рдгрд╣рд░реВ рдордзреНрдпреЗ рдПрдХрдмрд╛рдЯ рд╕рдорд╛рди рдЕрдиреБрд░реЛрдзрд╣рд░реВ:

bash-4.4# while true; do dig "elastic.spain.adevinta.com" | grep time; sleep 2; done
;; Query time: 77 msec
;; Query time: 0 msec
;; Query time: 0 msec
;; Query time: 0 msec
;; Query time: 0 msec

рд▓реБрдХрдЕрдкрд▓реЗ рд▓рдЧрднрдЧ 30ms рд▓рд┐рдпреЛ рднрдиреНрдиреЗ рдХреБрд░рд╛рд▓рд╛рдИ рдзреНрдпрд╛рдирдорд╛ рд░рд╛рдЦреНрджреИ, рдпреЛ рд╕реНрдкрд╖реНрдЯ рднрдпреЛ рдХрд┐ Elasticsearch рдкрд╣реБрдБрдЪ рдЧрд░реНрджрд╛ DNS рд░рд┐рдЬреЛрд▓реНрдпреБрд╕рдирд▓реЗ рд╡рд╛рд╕реНрддрд╡рдорд╛ рд╡рд┐рд▓рдореНрдмрддрд╛рдорд╛ рд╡реГрджреНрдзрд┐ рдЧрд░реНрди рдпреЛрдЧрджрд╛рди рдЧрд░рд┐рд░рд╣реЗрдХреЛ рдерд┐рдпреЛред

рдпрджреНрдпрдкрд┐, рдпреЛ рджреБрдИ рдХрд╛рд░рдгрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдЕрдиреМрдареЛ рдерд┐рдпреЛ:

  1. рд╣рд╛рдореАрд╕рдБрдЧ рдкрд╣рд┐рд▓реЗ рдиреИ рдПрдХ рдЯрди Kubernetes рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВ рдЫрдиреН рдЬреБрди рдЙрдЪреНрдЪ рд╡рд┐рд▓рдореНрдмрддрд╛рдмрд╛рдЯ рдкреАрдбрд┐рдд рдмрд┐рдирд╛ AWS рд╕реНрд░реЛрддрд╣рд░реВрд╕рдБрдЧ рдЕрдиреНрддрд░реНрдХреНрд░рд┐рдпрд╛ рдЧрд░реНрджрдЫред рдХрд╛рд░рдг рдЬреЗ рд╣реЛрд╕реН, рдпреЛ рд╡рд┐рд╢реЗрд╖ рдЧрд░реА рдпрд╕ рдорд╛рдорд▓рд╛рд╕рдБрдЧ рд╕рдореНрдмрдиреНрдзрд┐рдд рдЫред
  2. рд╣рд╛рдореАрд▓рд╛рдИ рдерд╛рд╣рд╛ рдЫ рдХрд┐ JVM рд▓реЗ рдЗрди-рдореЗрдореЛрд░реА DNS рдХреНрдпрд╛рд╕рд┐рдЩ рдЧрд░реНрдЫред рд╣рд╛рдореНрд░реЛ рдЫрд╡рд┐рд╣рд░реВрдорд╛, TTL рдорд╛рди рд▓реЗрдЦрд┐рдПрдХреЛ рдЫ $JAVA_HOME/jre/lib/security/java.security рд░ 10 рд╕реЗрдХреЗрдиреНрдбрдорд╛ рд╕реЗрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реН: networkaddress.cache.ttl = 10ред рдЕрд░реНрдХреЛ рд╢рдмреНрджрдорд╛, JVM рд▓реЗ 10 рд╕реЗрдХреЗрдиреНрдбрдХрд╛ рд▓рд╛рдЧрд┐ рд╕рдмреИ DNS рдХреНрд╡реЗрд░реАрд╣рд░реВ рдХреНрдпрд╛рд╕ рдЧрд░реНрдиреБрдкрд░реНрдЫред

рдкрд╣рд┐рд▓реЛ рдкрд░рд┐рдХрд▓реНрдкрдирд╛ рдкреБрд╖реНрдЯрд┐ рдЧрд░реНрди, рд╣рд╛рдореАрд▓реЗ рдХреЗрд╣рд┐ рд╕рдордпрдХреЛ рд▓рд╛рдЧрд┐ DNS рдХрд▓ рдЧрд░реНрди рд░реЛрдХреНрди рд░ рд╕рдорд╕реНрдпрд╛ рд╣рдЯреНрдпреЛ рдХрд┐ рднрдиреЗрд░ рд╣реЗрд░реНрдиреЗ рдирд┐рд░реНрдгрдп рдЧрд░реНрдпреМрдВред рдкрд╣рд┐рд▓реЗ, рд╣рд╛рдореАрд▓реЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд▓рд╛рдИ рдкреБрди: рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрдиреЗ рдирд┐рд░реНрдгрдп рдЧрд░реНрдпреМрдВ рддрд╛рдХрд┐ рдпрд╕рд▓реЗ рдбреЛрдореЗрди рдирд╛рдо рдорд╛рд░реНрдлрдд рдирднрдИ IP рдареЗрдЧрд╛рдирд╛рджреНрд╡рд╛рд░рд╛ Elasticsearch рд╕рдБрдЧ рд╕реАрдзреИ рд╕рдЮреНрдЪрд╛рд░ рдЧрд░реНтАНрдпреЛред рдпрд╕рдХрд╛ рд▓рд╛рдЧрд┐ рдХреЛрдб рдкрд░рд┐рд╡рд░реНрддрди рд░ рдирдпрд╛рдБ рдбрд┐рдкреНрд▓реЛрдЗрдореЗрдиреНрдЯ рдЖрд╡рд╢реНрдпрдХ рдкрд░реНрдиреЗрдЫ, рддреНрдпрд╕реИрд▓реЗ рд╣рд╛рдореАрд▓реЗ рдбреЛрдореЗрдирд▓рд╛рдИ рдпрд╕рдХреЛ IP рдареЗрдЧрд╛рдирд╛рдорд╛ рдореНрдпрд╛рдк рдЧрд░реНрдпреМрдВ /etc/hosts:

34.55.5.111 elastic.spain.adevinta.com

рдЕрдм рдХрдиреНрдЯреЗрдирд░рд▓реЗ рд▓рдЧрднрдЧ рддреБрд░реБрдиреНрддреИ рдЖрдИрдкреА рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрдпреЛред рдпрд╕рд▓реЗ рдХреЗрд╣реА рд╕реБрдзрд╛рд░ рд▓реНрдпрд╛рдпреЛ, рддрд░ рд╣рд╛рдореА рдЕрдкреЗрдХреНрд╖рд┐рдд рд╡рд┐рд▓рдореНрдмрддрд╛ рд╕реНрддрд░рдХреЛ рдЕрд▓рд┐рдХрддрд┐ рдирдЬрд┐рдХ рдерд┐рдпреМрдВред рдпрджреНрдпрдкрд┐ DNS рд░рд┐рдЬреЛрд▓реНрдпреБрд╕рдирд▓реЗ рд▓рд╛рдореЛ рд╕рдордп рд▓рд┐рдпреЛ, рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХрд╛рд░рдг рдЕрдЭреИ рдкрдирд┐ рд╣рд╛рдореАрд▓рд╛рдИ рдЯрд╛рдврд╛ рд░рд╛рдЦреНрдпреЛред

рдиреЗрдЯрд╡рд░реНрдХ рдорд╛рд░реНрдлрдд рдирд┐рджрд╛рди

рд╣рд╛рдореАрд▓реЗ рдХрдиреНрдЯреЗрдирд░ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдЯреНрд░рд╛рдлрд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдЧрд░реНрдиреЗ рдирд┐рд░реНрдгрдп рдЧрд░реНрдпреМрдВ tcpdumpрдиреЗрдЯрд╡рд░реНрдХрдорд╛ рдХреЗ рднрдЗрд░рд╣реЗрдХреЛ рдЫ рд╣реЗрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐:

[root@be-851c76f696-alf8z /]# tcpdump -leni any -w capture.pcap

рд╣рд╛рдореАрд▓реЗ рддреНрдпрд╕рдкрдЫрд┐ рдзреЗрд░реИ рдЕрдиреБрд░реЛрдзрд╣рд░реВ рдкрдард╛рдпреМрдВ рд░ рддрд┐рдиреАрд╣рд░реВрдХреЛ рдХрдмреНрдЬрд╛ рдбрд╛рдЙрдирд▓реЛрдб рдЧрд░реНтАНрдпреМрдВ (kubectl cp my-service:/capture.pcap capture.pcap) рдорд╛ рдердк рд╡рд┐рд╢реНрд▓реЗрд╖рдгрдХреЛ рд▓рд╛рдЧрд┐ Wireshark.

рддреНрдпрд╣рд╛рдБ DNS рдкреНрд░рд╢реНрдирд╣рд░реВрдХреЛ рдмрд╛рд░реЗрдорд╛ рдХреЗрд╣реА рд╢рдВрдХрд╛рд╕реНрдкрдж рдерд┐рдПрди (рдПрдХ рд╕рд╛рдиреЛ рдХреБрд░рд╛ рдмрд╛рд╣реЗрдХ рдЬреБрди рдо рдкрдЫрд┐ рдХреБрд░рд╛ рдЧрд░реНрдиреЗрдЫреБ)ред рддрд░ рд╣рд╛рдореНрд░реЛ рд╕реЗрд╡рд╛рд▓реЗ рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрд░реЛрдзрд▓рд╛рдИ рд╣реНрдпрд╛рдиреНрдбрд▓ рдЧрд░реНрдиреЗ рддрд░рд┐рдХрд╛рдорд╛ рдХреЗрд╣реА рд╡рд┐рдЪрд┐рддреНрд░рддрд╛рд╣рд░реВ рдерд┐рдПред рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕реБрд░реБ рд╣реБрдиреБ рдЕрдШрд┐ рдЕрдиреБрд░реЛрдз рд╕реНрд╡реАрдХрд╛рд░ рдЧрд░рд┐рдПрдХреЛ рджреЗрдЦрд╛рдЙрдБрджреИ рдХреНрдпрд╛рдкреНрдЪрд░рдХреЛ рд╕реНрдХреНрд░рд┐рдирд╕рдЯ рддрд▓ рдЫ:

"рдХреБрдмрд░рдиреЗрдЯрд▓реЗ 10 рдЧреБрдгрд╛рд▓реЗ рд╡рд┐рд▓рдореНрдмрддрд╛ рдмрдвреНрдпреЛ": рдпрд╕рдХреЛ рд▓рд╛рдЧрд┐ рдХреЛ рджреЛрд╖реА рдЫ?

рдкреНрдпрд╛рдХреЗрдЬ рдирдореНрдмрд░рд╣рд░реВ рдкрд╣рд┐рд▓реЛ рд╕реНрддрдореНрднрдорд╛ рджреЗрдЦрд╛рдЗрдПрдХрд╛ рдЫрдиреНред рд╕реНрдкрд╖реНрдЯрддрд╛рдХреЛ рд▓рд╛рдЧрд┐, рдореИрд▓реЗ рд╡рд┐рднрд┐рдиреНрди TCP рд╕реНрдЯреНрд░рд┐рдорд╣рд░реВрд▓рд╛рдИ рд░рдВрдЧ-рдХреЛрдб рдЧрд░реЗрдХреЛ рдЫреБред

рдкреНрдпрд╛рдХреЗрдЯ 328 рдмрд╛рдЯ рд╕реБрд░реБ рд╣реБрдиреЗ рд╣рд░рд┐рдпреЛ рд╕реНрдЯреНрд░рд┐рдорд▓реЗ рдЧреНрд░рд╛рд╣рдХ (172.17.22.150) рд▓реЗ рдХрдиреНрдЯреЗрдирд░ (172.17.36.147) рдорд╛ TCP рдЬрдбрд╛рди рдХрд╕рд░реА рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрдпреЛ рднрдиреЗрд░ рджреЗрдЦрд╛рдЙрдБрдЫред рдкреНрд░рд╛рд░рдореНрднрд┐рдХ рд╣реНрдпрд╛рдиреНрдбрд╢реЗрдХ рдкрдЫрд┐ (328-330), рдкреНрдпрд╛рдХреЗрдЬ 331 рд▓реНрдпрд╛рдЗрдпреЛ HTTP GET /v1/.. - рд╣рд╛рдореНрд░реЛ рд╕реЗрд╡рд╛рдХреЛ рд▓рд╛рдЧрд┐ рдЖрдЧрдорди рдЕрдиреБрд░реЛрдзред рд╕рдореНрдкреВрд░реНрдг рдкреНрд░рдХреНрд░рд┐рдпрд╛рд▓реЗ 1 рдПрдордПрд╕ рд▓рд┐рдпреЛред

рдЧреНрд░реЗ рд╕реНрдЯреНрд░рд┐рдо (рдкреНрдпрд╛рдХреЗрдЯ 339 рдмрд╛рдЯ) рд▓реЗ рджреЗрдЦрд╛рдЙрдБрдЫ рдХрд┐ рд╣рд╛рдореНрд░реЛ рд╕реЗрд╡рд╛рд▓реЗ Elasticsearch рдЙрджрд╛рд╣рд░рдгрдорд╛ HTTP рдЕрдиреБрд░реЛрдз рдкрдард╛рдПрдХреЛ рдЫ (рддреНрдпрд╣рд╛рдБ рдХреБрдиреИ TCP рд╣реНрдпрд╛рдиреНрдбрд╢реЗрдХ рдЫреИрди рдХрд┐рдирднрдиреЗ рдпрд╕рд▓реЗ рдЕрд╡рд╕реНрдерд┐рдд рдЬрдбрд╛рди рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рд░рд╣реЗрдХреЛ рдЫ)ред рдпрд╕рд▓реЗ 18ms рд▓рд┐рдпреЛред

рдЕрд╣рд┐рд▓реЗ рд╕рдореНрдо рд╕рдмреИ рдареАрдХ рдЫ, рд░ рд╕рдордп рд▓рдЧрднрдЧ рдЕрдкреЗрдХреНрд╖рд┐рдд рдврд┐рд▓рд╛рдЗ рд╕рдВрдЧ рдореЗрд▓ рдЦрд╛рдиреНрдЫ (рдЧреНрд░рд╛рд╣рдХрдмрд╛рдЯ рдорд╛рдкрди рдЧрд░реНрджрд╛ 20-30 ms)ред

рдпрджреНрдпрдкрд┐, рдиреАрд▓реЛ рдЦрдгреНрдбрд▓реЗ 86ms рд▓рд┐рдиреНрдЫред рдпрд╕рдорд╛ рдХреЗ рднрдЗрд░рд╣реЗрдХреЛ рдЫ ? рдкреНрдпрд╛рдХреЗрдЯ 333 рдХреЛ рд╕рд╛рде, рд╣рд╛рдореНрд░реЛ рд╕реЗрд╡рд╛рд▓реЗ HTTP GET рдЕрдиреБрд░реЛрдз рдкрдард╛рдпреЛ /latest/meta-data/iam/security-credentials, рд░ рдпрд╕рдХреЛ рддреБрд░реБрдиреНрддреИ рдкрдЫрд┐, рдЙрд╣реА TCP рдЬрдбрд╛рдирдорд╛, рдЕрд░реНрдХреЛ GET рдЕрдиреБрд░реЛрдз /latest/meta-data/iam/security-credentials/arn:...

рд╣рд╛рдореАрд▓реЗ рдкрддреНрддрд╛ рд▓рдЧрд╛рдпреМрдВ рдХрд┐ рдпреЛ рдЯреНрд░реЗрд╕ рднрд░рд┐ рд╣рд░реЗрдХ рдЕрдиреБрд░реЛрдз рд╕рдВрдЧ рджреЛрд╣реЛрд░реНрдпрд╛рдЗрдПрдХреЛ рдЫред DNS рд░рд┐рдЬреЛрд▓реНрдпреБрд╕рди рд╕рд╛рдБрдЪреНрдЪреИ рд╣рд╛рдореНрд░реЛ рдХрдиреНрдЯреЗрдирд░рд╣рд░реВрдорд╛ рдЕрд▓рд┐ рдврд┐рд▓реЛ рдЫ (рдпрд╕ рдШрдЯрдирд╛рдХреЛ рд▓рд╛рдЧрд┐ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдПрдХрджрдо рд░реЛрдЪрдХ рдЫ, рддрд░ рдо рдпрд╕рд▓рд╛рдИ рдЫреБрдЯреНрдЯреИ рд▓реЗрдЦрдХреЛ рд▓рд╛рдЧрд┐ рдмрдЪрдд рдЧрд░реНрдиреЗрдЫреБ)ред рдпреЛ рд▓рд╛рдореЛ рдврд┐рд▓рд╛рдЗрдХреЛ рдХрд╛рд░рдг рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрд░реЛрдзрдорд╛ AWS рдЗрдиреНрд╕реНрдЯреНрдпрд╛рдиреНрд╕ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рд╕реЗрд╡рд╛рдорд╛ рдХрд▓рд╣рд░реВ рдерд┐рдпреЛ рднрдиреЗрд░ рдмрд╛рд╣рд┐рд░рд┐рдпреЛред

рд╣рд╛рдЗрдкреЛрдереЗрд╕рд┐рд╕ реи: AWS рд▓рд╛рдИ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдХрд▓рд╣рд░реВ

рджреБрдмреИ рдЕрдиреНрддрд┐рдо рдмрд┐рдиреНрджреБрд╣рд░реВ рд╕рдореНрдмрдиреНрдзрд┐рдд рдЫрдиреН AWS Instance Metadata APIред рд╣рд╛рдореНрд░реЛ рдорд╛рдЗрдХреНрд░реЛрд╕реЗрд╡рд╛рд▓реЗ Elasticsearch рдЪрд▓рд╛рдЙрдБрджрд╛ рдпреЛ рд╕реЗрд╡рд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрдЫред рджреБрдмреИ рдХрд▓рд╣рд░реВ рдЖрдзрд╛рд░рднреВрдд рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛рдХреЛ рдЕрдВрд╢ рд╣реБрдиреНред рдкрд╣рд┐рд▓реЛ рдЕрдиреБрд░реЛрдзрдорд╛ рдкрд╣реБрдБрдЪ рдЧрд░рд┐рдПрдХреЛ рдЕрдиреНрддрд┐рдо рдмрд┐рдиреНрджреБрд▓реЗ рдЙрджрд╛рд╣рд░рдгрд╕рдБрдЧ рд╕рдореНрдмрдиреНрдзрд┐рдд IAM рднреВрдорд┐рдХрд╛рд▓рд╛рдИ рд╕рдорд╕реНрдпрд╛ рдЧрд░реНрдЫред

/ # curl http://169.254.169.254/latest/meta-data/iam/security-credentials/
arn:aws:iam::<account_id>:role/some_role

рджреЛрд╕реНрд░реЛ рдЕрдиреБрд░реЛрдзрд▓реЗ рдпрд╕ рдЙрджрд╛рд╣рд░рдгрдХреЛ рд▓рд╛рдЧрд┐ рдЕрд╕реНрдерд╛рдпреА рдЕрдиреБрдорддрд┐рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рджреЛрд╕реНрд░реЛ рдЕрдиреНрддрд┐рдо рдмрд┐рдиреНрджреБ рд╕реЛрдзреНрдЫ:

/ # curl http://169.254.169.254/latest/meta-data/iam/security-credentials/arn:aws:iam::<account_id>:role/some_role`
{
    "Code" : "Success",
    "LastUpdated" : "2012-04-26T16:39:16Z",
    "Type" : "AWS-HMAC",
    "AccessKeyId" : "ASIAIOSFODNN7EXAMPLE",
    "SecretAccessKey" : "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
    "Token" : "token",
    "Expiration" : "2017-05-17T15:09:54Z"
}

рдЧреНрд░рд╛рд╣рдХрд▓реЗ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рдЫреЛрдЯреЛ рдЕрд╡рдзрд┐рдХреЛ рд▓рд╛рдЧрд┐ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрдЫ рд░ рдЖрд╡рдзрд┐рдХ рд░реВрдкрдорд╛ рдирдпрд╛рдБ рдкреНрд░рдорд╛рдгрдкрддреНрд░рд╣рд░реВ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрдиреБрдкрд░реНрдЫ (рддрд┐рдиреАрд╣рд░реВ рд╣реБрдиреБ рдЕрдШрд┐ Expiration)ред рдореЛрдбреЗрд▓ рд╕рд░рд▓ рдЫ: рд╕реБрд░рдХреНрд╖рд╛ рдХрд╛рд░рдгрд╣рд░реВрдХрд╛ рд▓рд╛рдЧрд┐ AWS рд▓реЗ рдЕрд╕реНрдерд╛рдпреА рдХреБрдЮреНрдЬреАрд╣рд░реВ рдмрд╛рд░рдореНрдмрд╛рд░ рдШреБрдорд╛рдЙрдБрдЫ, рддрд░ рдЧреНрд░рд╛рд╣рдХрд╣рд░реВрд▓реЗ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рдирдпрд╛рдБ рдкреНрд░рдорд╛рдгрдкрддреНрд░рд╣рд░реВ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди рд╕рдореНрдмрдиреНрдзрд┐рдд рдХрд╛рд░реНрдпрд╕рдореНрдкрд╛рджрди рджрдгреНрдбрдХреЛ рдХреНрд╖рддрд┐рдкреВрд░реНрддрд┐ рдЧрд░реНрди рдХреЗрд╣реА рдорд┐рдиреЗрдЯрдХреЛ рд▓рд╛рдЧрд┐ рдХреНрдпрд╛рд╕ рдЧрд░реНрди рд╕рдХреНрдЫрдиреНред

AWS Java SDK рд▓реЗ рдпрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛рд▓рд╛рдИ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдЧрд░реНрдиреЗ рдЬрд┐рдореНрдореЗрд╡рд╛рд░реА рд▓рд┐рдиреБрдкрд░реНрдЫ, рддрд░ рдХреЗрд╣реА рдХрд╛рд░рдгрд▓реЗ рдпреЛ рд╣реБрди рд╕рдХреЗрдХреЛ рдЫреИрдиред

GitHub рдорд╛ рд╕рдорд╕реНрдпрд╛рд╣рд░реВ рдЦреЛрдЬреА рдЧрд░реЗрдкрдЫрд┐, рд╣рд╛рдореАрд▓реЗ рдПрдЙрдЯрд╛ рд╕рдорд╕реНрдпрд╛ рднреЗрдЯреНрдЯрд╛рдпреМрдВ #1921ред рдЙрдирд▓реЗ рд╣рд╛рдореАрд▓рд╛рдИ "рдЦрдиреНрдиреЗ" рджрд┐рд╢рд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдЧрд░реНрди рдорджреНрджрдд рдЧрд░рд┐рдиреНред

AWS SDK рд▓реЗ рдкреНрд░рдорд╛рдгрдкрддреНрд░рд╣рд░реВ рдЕрджреНрдпрд╛рд╡рдзрд┐рдХ рдЧрд░реНрджрдЫ рдЬрдм рдирд┐рдореНрди рдЕрд╡рд╕реНрдерд╛рд╣рд░реВ рдордзреНрдпреЗ рдПрдХ рд╣реБрдиреНрдЫ:

  • рдореНрдпрд╛рдж рд╕рдХрд┐рдиреЗ рдорд┐рддрд┐ (Expiration) рдорд╛ рдкрд░реНрдиреБрд╣реЛрд╕реН EXPIRATION_THRESHOLD, резрел рдорд┐рдиреЗрдЯрдорд╛ рд╣рд╛рд░реНрдбрдХреЛрдб рдЧрд░рд┐рдпреЛред
  • рд╕рд░реНрдЯрд┐рдлрд┐рдХреЗрдЯ рдирд╡реАрдХрд░рдг рдЧрд░реНрдиреЗ рдЕрдиреНрддрд┐рдо рдкреНрд░рдпрд╛рд╕ рдкрдЫрд┐ рдзреЗрд░реИ рд╕рдордп рдмрд┐рддрд┐рд╕рдХреЗрдХреЛ рдЫ REFRESH_THRESHOLD, ремреж рдорд┐рдиреЗрдЯрдХреЛ рд▓рд╛рдЧрд┐ рд╣рд╛рд░реНрдбрдХреЛрдб рдЧрд░рд┐рдПрдХреЛред

рд╣рд╛рдореАрд▓реЗ рдкреНрд░рд╛рдкреНрдд рдЧрд░реЗрдХрд╛ рдкреНрд░рдорд╛рдгрдкрддреНрд░рд╣рд░реВрдХреЛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдореНрдпрд╛рдж рд╕рдорд╛рдкреНрддрд┐ рдорд┐рддрд┐ рд╣реЗрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐, рд╣рд╛рдореАрд▓реЗ рдХрдиреНрдЯреЗрдирд░ рд░ EC2 рдЙрджрд╛рд╣рд░рдг рджреБрд╡реИрдмрд╛рдЯ рдорд╛рдерд┐рдХреЛ cURL рдЖрджреЗрд╢рд╣рд░реВ рдЪрд▓рд╛рдпреМрдВред рдХрдиреНрдЯреЗрдирд░рдмрд╛рдЯ рдкреНрд░рд╛рдкреНрдд рдкреНрд░рдорд╛рдгрдкрддреНрд░рдХреЛ рд╡реИрдзрддрд╛ рдЕрд╡рдзрд┐ рдзреЗрд░реИ рдЫреЛрдЯреЛ рднрдпреЛ: рдареАрдХ 15 рдорд┐рдиреЗрдЯред

рдЕрдм рд╕рдмреИ рдХреБрд░рд╛ рд╕реНрдкрд╖реНрдЯ рднрдПрдХреЛ рдЫ: рдкрд╣рд┐рд▓реЛ рдЕрдиреБрд░реЛрдзрдХреЛ рд▓рд╛рдЧрд┐, рд╣рд╛рдореНрд░реЛ рд╕реЗрд╡рд╛рд▓реЗ рдЕрд╕реНрдерд╛рдпреА рдкреНрд░рдорд╛рдгрдкрддреНрд░рд╣рд░реВ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрдпреЛред рддрд┐рдиреАрд╣рд░реВ 15 рдорд┐рдиреЗрдЯ рднрдиреНрджрд╛ рдмрдвреАрдХреЛ рд▓рд╛рдЧрд┐ рдорд╛рдиреНрдп рдирднрдПрдХреЛрд▓реЗ, AWS SDK рд▓реЗ рдкрдЫрд┐рдХреЛ рдЕрдиреБрд░реЛрдзрдорд╛ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рдЕрджреНрдпрд╛рд╡рдзрд┐рдХ рдЧрд░реНрдиреЗ рдирд┐рд░реНрдгрдп рдЧрд░реНрдиреЗрдЫред рд░ рдпреЛ рд╣рд░реЗрдХ рдЕрдиреБрд░реЛрдз рд╕рдВрдЧ рднрдпреЛред

рдкреНрд░рдорд╛рдгрдкрддреНрд░рдХреЛ рд╡реИрдзрддрд╛ рдЕрд╡рдзрд┐ рдХрд┐рди рдЫреЛрдЯреЛ рднрдпреЛ?

AWS рдЗрдиреНрд╕реНрдЯреНрдпрд╛рдиреНрд╕ рдореЗрдЯрд╛рдбреЗрдЯрд╛ EC2 рджреГрд╖реНрдЯрд╛рдиреНрддрд╣рд░реВрд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрди рдбрд┐рдЬрд╛рдЗрди рдЧрд░рд┐рдПрдХреЛ рд╣реЛ, Kubernetes рд╣реЛрдЗрдиред рдЕрд░реНрдХреЛрддрд░реНрдл, рд╣рд╛рдореА рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЗрдиреНрдЯрд░рдлреЗрд╕ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрди рдЪрд╛рд╣рдБрджреИрдиреМрдВред рдпрд╕рдХрд╛ рд▓рд╛рдЧрд┐ рд╣рд╛рдореАрд▓реЗ рдкреНрд░рдпреЛрдЧ рдЧрд░реНтАНрдпреМрдВ KIAM - рдПрдЙрдЯрд╛ рдЙрдкрдХрд░рдг рдЬрд╕рд▓реЗ рдкреНрд░рддреНрдпреЗрдХ Kubernetes рдиреЛрдбрдорд╛ рдПрдЬреЗрдиреНрдЯрд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░, рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВрд▓рд╛рдИ (рдПрдХ рдХреНрд▓рд╕реНрдЯрд░рдорд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВ рдбрд┐рдкреНрд▓реЛрдп рдЧрд░реНрдиреЗ рдЗрдиреНрдЬрд┐рдирд┐рдпрд░рд╣рд░реВ) рд▓рд╛рдИ рдкреЛрдбрд╣рд░реВрдорд╛ рдХрдиреНрдЯреЗрдирд░рд╣рд░реВрд▓рд╛рдИ EC2 рдЙрджрд╛рд╣рд░рдгрд╣рд░реВ рдЬрд╕реНрддреИ IAM рднреВрдорд┐рдХрд╛рд╣рд░реВ рддреЛрдХреНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫред KIAM рд▓реЗ AWS Instance Metadata рд╕реЗрд╡рд╛рдорд╛ рдХрд▓рд╣рд░реВ рд░реЛрдХреНрдЫ рд░ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рдкрд╣рд┐рд▓реЗ AWS рдмрд╛рдЯ рдкреНрд░рд╛рдкреНрдд рдЧрд░рд┐рд╕рдХреЗрдкрдЫрд┐ рдпрд╕рд▓рд╛рдИ рдпрд╕рдХреЛ рдХреНрдпрд╛рд╕рдмрд╛рдЯ рдкреНрд░рд╢реЛрдзрди рдЧрд░реНрдЫред рдЕрдиреБрдкреНрд░рдпреЛрдЧрдХреЛ рджреГрд╖реНрдЯрд┐рдХреЛрдгрдмрд╛рдЯ, рдХреЗрд╣рд┐ рдкрд░рд┐рд╡рд░реНрддрди рд╣реБрдБрджреИрдиред

KIAM рд▓реЗ рдкреЛрдбрд╣рд░реВрд▓рд╛рдИ рдЫреЛрдЯреЛ рдЕрд╡рдзрд┐рдХреЛ рдкреНрд░рдорд╛рдгрдкрддреНрд░рд╣рд░реВ рдЖрдкреВрд░реНрддрд┐ рдЧрд░реНрджрдЫред рдкреЛрдбрдХреЛ рдФрд╕рдд рдЖрдпреБ EC2 рдЙрджрд╛рд╣рд░рдгрдХреЛ рднрдиреНрджрд╛ рдЫреЛрдЯреЛ рдЫ рднрдиреНрдиреЗ рдХреБрд░рд╛рд▓рд╛рдИ рд╡рд┐рдЪрд╛рд░ рдЧрд░реНрджрд╛ рдпрд╕рд▓реЗ рдЕрд░реНрде рд░рд╛рдЦреНрдЫред рдкреНрд░рдорд╛рдгрдкрддреНрд░рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╡реИрдзрддрд╛ рдЕрд╡рдзрд┐ рд╕рдорд╛рди 15 рдорд┐рдиреЗрдЯ рдмрд░рд╛рдмрд░.

рдирддрд┐рдЬрд╛рдХреЛ рд░реВрдкрдорд╛, рдпрджрд┐ рддрдкрд╛рдЗрдБ рдПрдХрдЕрд░реНрдХрд╛рдХреЛ рд╢реАрд░реНрд╖рдорд╛ рджреБрдмреИ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдорд╛рдирд╣рд░реВ рдУрднрд░рд▓реЗ рдЧрд░реНрдиреБрд╣реБрдиреНрдЫ рднрдиреЗ, рд╕рдорд╕реНрдпрд╛ рдЙрддреНрдкрдиреНрди рд╣реБрдиреНрдЫред рдПрдкреНрд▓рд┐рдХреЗрд╕рдирд▓рд╛рдИ рдкреНрд░рджрд╛рди рдЧрд░рд┐рдПрдХреЛ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рдорд╛рдгрдкрддреНрд░ резрел рдорд┐рдиреЗрдЯ рдкрдЫрд┐ рд╕рдорд╛рдкреНрдд рд╣реБрдиреНрдЫред рдпрджреНрдпрдкрд┐, AWS Java SDK рд▓реЗ рдХреБрдиреИ рдкрдирд┐ рдкреНрд░рдорд╛рдгрдкрддреНрд░рдХреЛ рдирд╡реАрдХрд░рдг рдЧрд░реНрди рдмрд╛рдзреНрдп рдкрд╛рд░реНрдЫ рдЬреБрди рдпрд╕рдХреЛ рдореНрдпрд╛рдж рд╕рдорд╛рдкреНрддрд┐ рдорд┐рддрд┐ рдЕрдШрд┐ 15 рдорд┐рдиреЗрдЯ рднрдиреНрджрд╛ рдХрдо рдмрд╛рдБрдХреА рдЫред

рдирддрд┐рдЬрд╛рдХреЛ рд░реВрдкрдорд╛, рдЕрд╕реНрдерд╛рдпреА рдкреНрд░рдорд╛рдгрдкрддреНрд░рд▓рд╛рдИ рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрд░реЛрдзрдХреЛ рд╕рд╛рде рдирд╡реАрдХрд░рдг рдЧрд░реНрди рдмрд╛рдзреНрдп рдкрд╛рд░рд┐рдПрдХреЛ рдЫ, рдЬрд╕рд▓реЗ AWS API рдорд╛ рдХреЗрд╣реА рдХрд▓рд╣рд░реВ рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрджрдЫ рд░ рд╡рд┐рд▓рдореНрдмрддрд╛рдорд╛ рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рд╡реГрджреНрдзрд┐рдХреЛ рдХрд╛рд░рдг рдмрдирд╛рдЙрдБрдЫред AWS Java SDK рдорд╛ рд╣рд╛рдореАрд▓реЗ рдлреЗрд▓рд╛ рдкрд╛рд░реНрдпреМрдВ рд╕реБрд╡рд┐рдзрд╛ рдЕрдиреБрд░реЛрдз, рдЬрд╕рд▓реЗ рд╕рдорд╛рди рд╕рдорд╕реНрдпрд╛рд▓рд╛рдИ рдЙрд▓реНрд▓реЗрдЦ рдЧрд░реНрджрдЫред

рд╕рдорд╛рдзрд╛рди рд╕рд░рд▓ рд╕рд╛рд╡рд┐рдд рднрдпреЛред рд╣рд╛рдореАрд▓реЗ рдХреЗрд╡рд▓ рд▓рд╛рдореЛ рд╡реИрдзрддрд╛ рдЕрд╡рдзрд┐рдХреЛ рд╕рд╛рде рдкреНрд░рдорд╛рдгрдкрддреНрд░рд╣рд░реВ рдЕрдиреБрд░реЛрдз рдЧрд░реНрди KIAM рд▓рд╛рдИ рдкреБрди: рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрдпреМрдВред рдПрдХрдЪреЛрдЯрд┐ рдпреЛ рднрдпреЛ, рдЕрдиреБрд░реЛрдзрд╣рд░реВ AWS рдореЗрдЯрд╛рдбреЗрдЯрд╛ рд╕реЗрд╡рд╛рдХреЛ рд╕рд╣рднрд╛рдЧрд┐рддрд╛ рдмрд┐рдирд╛ рдкреНрд░рд╡рд╛рд╣ рд╣реБрди рдерд╛рд▓реЗ, рд░ рд╡рд┐рд▓рдореНрдмрддрд╛ EC2 рднрдиреНрджрд╛ рдкрдирд┐ рддрд▓реНрд▓реЛ рддрд╣рдорд╛ рдЭрд░реНрдпреЛред

рдирд┐рд╖реНрдХрд░реНрд╖

рдорд╛рдЗрдЧреНрд░реЗрд╕рдирд╕рдБрдЧрдХреЛ рд╣рд╛рдореНрд░реЛ рдЕрдиреБрднрд╡рдХреЛ рдЖрдзрд╛рд░рдорд╛, рд╕рдорд╕реНрдпрд╛рд╣рд░реВрдХреЛ рд╕рдмреИрднрдиреНрджрд╛ рд╕рд╛рдорд╛рдиреНрдп рд╕реНрд░реЛрддрд╣рд░реВ рдордзреНрдпреЗ рдПрдХ рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рд╡рд╛ рдкреНрд▓реЗрдЯрдлрд░реНрдордХрд╛ рдЕрдиреНрдп рддрддреНрд╡рд╣рд░реВрдорд╛ рдмрдЧрд╣рд░реВ рд╣реЛрдЗрдиред рдпрд╕рд▓реЗ рд╣рд╛рдореАрд▓реЗ рдкреЛрд░реНрдЯ рдЧрд░рд┐рд░рд╣реЗрдХрд╛ рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрднрд┐рд╕реЗрд╕рд╣рд░реВрдорд╛ рдХреБрдиреИ рдкрдирд┐ рдЖрдзрд╛рд░рднреВрдд рддреНрд░реБрдЯрд┐рд╣рд░реВрд▓рд╛рдИ рдкрдирд┐ рд╕рдореНрдмреЛрдзрди рдЧрд░реНрджреИрдиред рд╕рдорд╕реНрдпрд╛рд╣рд░реВ рдкреНрд░рд╛рдпрдГ рдЙрддреНрдкрдиреНрди рд╣реБрдиреНрдЫрдиреН рдХрд┐рдирднрдиреЗ рд╣рд╛рдореАрд▓реЗ рд╡рд┐рднрд┐рдиреНрди рддрддреНрд╡рд╣рд░реВ рд╕рдБрдЧреИ рд░рд╛рдЦреНрдЫреМрдВред

рд╣рд╛рдореА рдЬрдЯрд┐рд▓ рдкреНрд░рдгрд╛рд▓реАрд╣рд░реВ рд╕рдБрдЧреИ рдорд┐рд╕рд╛рдЙрдБрдЫреМрдВ рдЬреБрди рдкрд╣рд┐рд▓реЗ рдХрд╣рд┐рд▓реНрдпреИ рдПрдХрдЕрд░реНрдХрд╛рд╕рдБрдЧ рдЕрдиреНрддрд░реНрдХреНрд░рд┐рдпрд╛ рдирдЧрд░реЗрдХреЛ рдерд┐рдпреЛ, рдЖрд╢рд╛ рдЧрд░реНрджреИ рдХрд┐ рддрд┐рдиреАрд╣рд░реВ рд╕рдБрдЧреИ рдПрдХрд▓, рдареВрд▓реЛ рдкреНрд░рдгрд╛рд▓реА рдмрдирд╛рдЙрдБрдЫрдиреНред рдХрд╛рд╢, рдЬрддрд┐ рдзреЗрд░реИ рддрддреНрд╡рд╣рд░реВ, рддреНрд░реБрдЯрд┐рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдзреЗрд░реИ рдард╛рдЙрдБ, рдЙрдЪреНрдЪ рдПрдиреНрдЯреНрд░реЛрдкреАред

рд╣рд╛рдореНрд░реЛ рдорд╛рдорд▓рд╛рдорд╛, рдЙрдЪреНрдЪ рд╡рд┐рд▓рдореНрдмрддрд╛ Kubernetes, KIAM, AWS Java SDK, рд╡рд╛ рд╣рд╛рдореНрд░реЛ microservice рдорд╛ рдмрдЧрд╣рд░реВ рд╡рд╛ рдЦрд░рд╛рдм рдирд┐рд░реНрдгрдпрд╣рд░реВрдХреЛ рдкрд░рд┐рдгрд╛рдо рд╣реЛрдЗрдиред рдпреЛ рджреБрдИ рд╕реНрд╡рддрдиреНрддреНрд░ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╕реЗрдЯрд┐рдЩрд╣рд░реВ рд╕рдВрдпреЛрдЬрдирдХреЛ рдкрд░рд┐рдгрд╛рдо рдерд┐рдпреЛ: рдПрдЙрдЯрд╛ KIAM рдорд╛, рдЕрд░реНрдХреЛ AWS Java SDK рдорд╛ред рдЫреБрдЯреНрдЯрд╛рдЫреБрдЯреНрдЯреИ рд░реВрдкрдорд╛ рд▓рд┐рдЗрдпреЛ рднрдиреЗ, рджреБрдмреИ рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд╣рд░реВрд▓реЗ рдЕрд░реНрде рджрд┐рдиреНрдЫ: AWS Java SDK рдорд╛ рд╕рдХреНрд░рд┐рдп рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдирд╡реАрдХрд░рдг рдиреАрддрд┐, рд░ KAIM рдорд╛ рдкреНрд░рдорд╛рдгрдкрддреНрд░рд╣рд░реВрдХреЛ рдЫреЛрдЯреЛ рд╡реИрдзрддрд╛ рдЕрд╡рдзрд┐ред рддрд░ рдЬрдм рддрдкрд╛рдЗрдБ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рд╕рдБрдЧреИ рд░рд╛рдЦреНрдиреБрд╣реБрдиреНрдЫ, рдкрд░рд┐рдгрд╛рдорд╣рд░реВ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рд╣реБрдиреНрдЫрдиреНред рджреБрдИ рд╕реНрд╡рддрдиреНрддреНрд░ рд░ рддрд╛рд░реНрдХрд┐рдХ рд╕рдорд╛рдзрд╛рдирд╣рд░реВ рд╕рдВрдпреЛрдЬрди рдЧрд░реНрджрд╛ рдЕрд░реНрде рдмрдирд╛рдЙрдиреБ рдкрд░реНрджреИрдиред

рдЕрдиреБрд╡рд╛рджрдХрдмрд╛рдЯ PS

AWS IAM рд▓рд╛рдИ Kubernetes рд╕рдБрдЧ рдПрдХреАрдХреГрдд рдЧрд░реНрди KIAM рдЙрдкрдпреЛрдЧрд┐рддрд╛рдХреЛ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛рдХреЛ рдмрд╛рд░реЗрдорд╛ рдердк рдЬрд╛рдиреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рдпреЛ рд▓реЗрдЦ рдпрд╕рдХреЛ рд╕рд┐рд░реНрдЬрдирд╛рдХрд░реНрддрд╛рд╣рд░реВрдмрд╛рдЯред

рд╣рд╛рдореНрд░реЛ рдмреНрд▓рдЧрдорд╛ рдкрдирд┐ рдкрдвреНрдиреБрд╣реЛрд╕реН:

рд╕реНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди