Hashicorp Consul рдХреЛ Kubernetes рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЛ рдкрд░рд┐рдЪрдп

Hashicorp Consul рдХреЛ Kubernetes рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЛ рдкрд░рд┐рдЪрдп

рддреНрдпреЛ рд╕рд╣рд┐ рд╣реЛ, рд░рд┐рд▓рд┐рдЬ рдкрдЫрд┐ рд╣рд╛рд╢рд┐рдХреЛрд░реНрдк рдХрдиреНрд╕реБрд▓ рез.рел.реж рдореЗ 2019 рдХреЛ рд╕реБрд░реБрдорд╛, рдХрдиреНрд╕реБрд▓рдорд╛ рддрдкрд╛рдИрдВрд▓реЗ рдХреБрдмреЗрд░рдиреЗрдЯрдорд╛ рд╕реНрдерд╛рдиреАрдп рд░реВрдкрдорд╛ рдЪрд▓рд┐рд░рд╣реЗрдХрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВ рд░ рд╕реЗрд╡рд╛рд╣рд░реВрд▓рд╛рдИ рдЕрдзрд┐рдХреГрдд рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред

рдпрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓рдорд╛ рд╣рд╛рдореА рдЪрд░рдгрдмрджреНрдз рд░реВрдкрдорд╛ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреЗрдЫреМрдВ POC (рдкреНрд░реБрдл рдЕрдл рдХрдиреНрд╕реЗрдкреНрдЯ, PoC) рдпреЛ рдирдпрд╛рдБ рд╕реБрд╡рд┐рдзрд╛рдХреЛ рдкреНрд░рджрд░реНрд╢рди рдЧрд░реНрджреИред рддрдкрд╛рдИрдВрд╕рдБрдЧ Kubernetes рд░ Hashicorp рдХреЛ рдХрдиреНрд╕реБрд▓рдХреЛ рдЖрдзрд╛рд░рднреВрдд рдЬреНрдЮрд╛рди рд╣реБрдиреЗ рдЕрдкреЗрдХреНрд╖рд╛ рдЧрд░рд┐рдПрдХреЛ рдЫред рддрдкрд╛рдИрдВрд▓реЗ рдХреБрдиреИ рдкрдирд┐ рдХреНрд▓рд╛рдЙрдб рдкреНрд▓реЗрдЯрдлрд░реНрдо рд╡рд╛ рдЕрди-рдкреНрд░рд┐рдорд╛рдЗрд╕реЗрд╕ рд╡рд╛рддрд╛рд╡рд░рдг рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ, рдпрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓рдорд╛ рд╣рд╛рдореА Google рдХреЛ рдХреНрд▓рд╛рдЙрдб рдкреНрд▓реЗрдЯрдлрд░реНрдо рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗрдЫреМрдВред

рд╕рд┐рдВрд╣рд╛рд╡рд▓реЛрдХрди

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

Hashicorp Consul рдХреЛ Kubernetes рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЛ рдкрд░рд┐рдЪрдп

рд░реЗрдЦрд╛рдЪрд┐рддреНрд░ рез: рдХрдиреНрд╕реБрд▓ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд╡рд┐рдзрд┐рдХреЛ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╕рд┐рдВрд╣рд╛рд╡рд▓реЛрдХрди

рднрд┐рддреНрд░ рд╣реЗрд░реМрдВ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ Kubernetes рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд╡рд┐рдзрд┐ рдХреЛ рд▓рд╛рдЧреА рджрд╕реНрддрд╛рд╡реЗрдЬ.

рдЕрд╡рд╢реНрдп, рддреНрдпрд╣рд╛рдБ рдЙрдкрдпреЛрдЧреА рдЬрд╛рдирдХрд╛рд░реА рдЫ, рддрд░ рд╡рд╛рд╕реНрддрд╡рдорд╛ рдпреЛ рд╕рдмреИ рдХрд╕рд░реА рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗ рднрдиреНрдиреЗ рдмрд╛рд░реЗ рдХреБрдиреИ рдЧрд╛рдЗрдб рдЫреИрдиред рддреНрдпрд╕реЛрднрдП, рдХреБрдиреИ рдкрдирд┐ рд╕рдордЭрджрд╛рд░ рд╡реНрдпрдХреНрддрд┐рд▓реЗ рдЬрд╕реНрддреИ, рддрдкрд╛рдЗрдБ рдорд╛рд░реНрдЧрджрд░реНрд╢рдирдХреЛ рд▓рд╛рдЧрд┐ рдЗрдиреНрдЯрд░рдиреЗрдЯрдХреЛ рдЦреЛрдЬреА рдЧрд░реНрдиреБрд╣реБрдиреНрдЫред рд░ рддреНрдпрд╕рдкрдЫрд┐ ... рддрдкрд╛рдИрдВ рдЕрд╕рдлрд▓ред рдпрд╕реНрддреЛ рд╣реБрдиреНрдЫред рдпрд╕рд▓рд╛рдИ рдареАрдХ рдЧрд░реМрдВред

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

рд╡рд╛рд╕реНрддреБрдХрд▓рд╛

рдпрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓рдорд╛, рд╣рд╛рдореА рдХрдиреНрд╕реБрд▓рд░ рдХреНрд▓рд╛рдЗрдиреНрдЯ рд╕реНрдерд╛рдкрдирд╛ рднрдПрдХреЛ рдХреБрдмреЗрд░рдиреЗрдЯ рдХреНрд▓рд╕реНрдЯрд░рд╕рдБрдЧ рдХреБрд░рд╛рдХрд╛рдиреА рдЧрд░реНрдиреЗ рдЫреБрдЯреНрдЯреИ рдореЗрд╕рд┐рдирдорд╛ рдХрдиреНрд╕реБрд▓ рд╕рд░реНрднрд░ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреЗрдЫреМрдВред рддреНрдпрд╕рдкрдЫрд┐ рд╣рд╛рдореА рдкреЛрдбрдорд╛ рд╣рд╛рдореНрд░реЛ рдбрдореА рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреЗрдЫреМрдВ рд░ рд╣рд╛рдореНрд░реЛ рдХрдиреНрд╕реБрд▓ рдХреБрдЮреНрдЬреА/рдореВрд▓реНрдп рд╕реНрдЯреЛрд░рдмрд╛рдЯ рдкрдвреНрдирдХреЛ рд▓рд╛рдЧрд┐ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░рд┐рдПрдХреЛ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд╡рд┐рдзрд┐ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗрдЫреМрдВред

рддрд▓рдХреЛ рд░реЗрдЦрд╛рдЪрд┐рддреНрд░рд▓реЗ рд╣рд╛рдореАрд▓реЗ рдпрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓рдорд╛ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреЗ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛рдХреЛ рд╡рд┐рд╡рд░рдг рджрд┐рдиреНрдЫ, рд╕рд╛рдереИ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд╡рд┐рдзрд┐рдХреЛ рдкрдЫрд╛рдбрд┐рдХреЛ рддрд░реНрдХ, рдЬреБрди рдкрдЫрд┐ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдЧрд░рд┐рдиреЗрдЫред

Hashicorp Consul рдХреЛ Kubernetes рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЛ рдкрд░рд┐рдЪрдп

рд░реЗрдЦрд╛рдЪрд┐рддреНрд░ реи: рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд╡рд┐рдзрд┐ рд╕рд┐рдВрд╣рд╛рд╡рд▓реЛрдХрди

рджреНрд░реБрдд рдиреЛрдЯ: рдХрдиреНрд╕реБрд▓ рд╕рд░реНрднрд░рд▓реЗ рдпреЛ рдХрд╛рдо рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ рдХреБрдмреЗрд░рдиреЗрдЯ рдХреНрд▓рд╕реНрдЯрд░ рдмрд╛рд╣рд┐рд░ рдмрд╕реНрдиреБ рдкрд░реНрджреИрдиред рддрд░ рд╣реЛ, рдЙрд╕рд▓реЗ рдпреЛ рддрд░рд┐рдХрд╛ рд░ рддреНрдпреЛ рдЧрд░реНрди рд╕рдХреНрдЫред

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

  1. рдкреНрд░рддреНрдпреЗрдХ рдкреЛрдбрдорд╛ рдПрдХ рд╕реЗрд╡рд╛ рдЦрд╛рддрд╛ рд╕рдВрд▓рдЧреНрди рд╣реБрдиреЗрдЫ рдЬрд╕рдорд╛ рдПрдХ JWT рдЯреЛрдХрди рдЙрддреНрдкрдиреНрди рд╣реБрдиреНрдЫ рд░ Kubernetes рджреНрд╡рд╛рд░рд╛ рдЬреНрдЮрд╛рдд рд╣реБрдиреНрдЫред рдпреЛ рдЯреЛрдХрди рдкрдирд┐ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд░реВрдкрдорд╛ рдкреЛрдбрдорд╛ рд╕рдореНрдорд┐рд▓рд┐рдд рд╣реБрдиреНрдЫред
  2. рд╣рд╛рдореНрд░реЛ рдПрдкреНрд▓рд┐рдХреЗрд╕рди рд╡рд╛ рдкреЛрдб рднрд┐рддреНрд░рдХреЛ рд╕реЗрд╡рд╛рд▓реЗ рд╣рд╛рдореНрд░реЛ рдХрдиреНрд╕реБрд▓ рдХреНрд▓рд╛рдЗрдиреНрдЯрд▓рд╛рдИ рд▓рдЧрдЗрди рдЖрджреЗрд╢ рд╕реБрд░реБ рдЧрд░реНрдЫред рд▓рдЧрдЗрди рдЕрдиреБрд░реЛрдзрдорд╛ рд╣рд╛рдореНрд░реЛ рдЯреЛрдХрди рд░ рдирд╛рдо рдкрдирд┐ рд╕рдорд╛рд╡реЗрд╢ рд╣реБрдиреЗрдЫ рд╡рд┐рд╢реЗрд╖ рд░реВрдкрдорд╛ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░рд┐рдПрдХреЛ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд╡рд┐рдзрд┐ (Kubernetes рдкреНрд░рдХрд╛рд░)ред рдпреЛ рдЪрд░рдг #2 рдХрдиреНрд╕реБрд▓ рд░реЗрдЦрд╛рдЪрд┐рддреНрд░ (рдпреЛрдЬрдирд╛ 1) рдХреЛ рдЪрд░рдг 1 рд╕рдБрдЧ рдореЗрд▓ рдЦрд╛рдиреНрдЫред
  3. рд╣рд╛рдореНрд░реЛ рдХрдиреНрд╕реБрд▓ рдЧреНрд░рд╛рд╣рдХрд▓реЗ рдпрд╕ рдЕрдиреБрд░реЛрдзрд▓рд╛рдИ рд╣рд╛рдореНрд░реЛ рдХрдиреНрд╕реБрд▓ рд╕рд░реНрднрд░рдорд╛ рдлрд░реНрд╡рд╛рд░реНрдб рдЧрд░реНрдиреЗрдЫред
  4. рдЬрд╛рджреВ! рдпреЛ рдЬрд╣рд╛рдБ рдХрдиреНрд╕реБрд▓ рд╕рд░реНрднрд░рд▓реЗ рдЕрдиреБрд░реЛрдзрдХреЛ рдкреНрд░рд╛рдорд╛рдгрд┐рдХрддрд╛ рдкреНрд░рдорд╛рдгрд┐рдд рдЧрд░реНрджрдЫ, рдЕрдиреБрд░реЛрдзрдХреЛ рдкрд╣рд┐рдЪрд╛рдирдХреЛ рдмрд╛рд░реЗрдорд╛ рдЬрд╛рдирдХрд╛рд░реА рд╕рдЩреНрдХрд▓рди рдЧрд░реНрджрдЫ рд░ рдХреБрдиреИ рдкрдирд┐ рд╕рдореНрдмрдиреНрдзрд┐рдд рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдирд┐рдпрдорд╣рд░реВрд╕рдБрдЧ рддреБрд▓рдирд╛ рдЧрд░реНрджрдЫред рдпреЛ рдЪрд┐рддреНрд░рдг рдЧрд░реНрди рддрд▓ рдЕрд░реНрдХреЛ рд░реЗрдЦрд╛рдЪрд┐рддреНрд░ рдЫред рдпреЛ рдЪрд░рдг рдХрдиреНрд╕реБрд▓ рд╕рд┐рдВрд╣рд╛рд╡рд▓реЛрдХрди рд░реЗрдЦрд╛рдЪрд┐рддреНрд░ (рдЪрд┐рддреНрд░ 3) рдХреЛ рдЪрд░рдг 4, 5 рд░ 1 рд╕рдБрдЧ рдореЗрд▓ рдЦрд╛рдиреНрдЫред
  5. рд╣рд╛рдореНрд░реЛ рдХрдиреНрд╕реБрд▓ рд╕рд░реНрднрд░рд▓реЗ рдЕрдиреБрд░реЛрдзрдХрд░реНрддрд╛рдХреЛ рдкрд╣рд┐рдЪрд╛рдирдХреЛ рд╕рдиреНрджрд░реНрднрдорд╛ рд╣рд╛рдореНрд░реЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд╡рд┐рдзрд┐ рдирд┐рдпрдорд╣рд░реВ (рдЬрд╕рд▓рд╛рдИ рд╣рд╛рдореАрд▓реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЧрд░реЗрдХрд╛ рдЫреМрдВ) рдЕрдиреБрд╕рд╛рд░ рдЕрдиреБрдорддрд┐рд╕рд╣рд┐рдд рдХрдиреНрд╕реБрд▓ рдЯреЛрдХрди рдЙрддреНрдкрдиреНрди рдЧрд░реНрджрдЫред рддреНрдпрд╕рдкрдЫрд┐ рддреНрдпреЛ рдЯреЛрдХрди рдлрд┐рд░реНрддрд╛ рдкрдард╛рдЙрдиреЗрдЫред рдпреЛ рдХрдиреНрд╕реБрд▓ рд░реЗрдЦрд╛рдЪрд┐рддреНрд░ (рдЪрд┐рддреНрд░ 6) рдХреЛ рдЪрд░рдг 1 рд╕рдБрдЧ рдореЗрд▓ рдЦрд╛рдиреНрдЫред
  6. рд╣рд╛рдореНрд░реЛ рдХрдиреНрд╕реБрд▓ рдЧреНрд░рд╛рд╣рдХрд▓реЗ рдЕрдиреБрд░реЛрдз рдЧрд░реНрдиреЗ рдЖрд╡реЗрджрди рд╡рд╛ рд╕реЗрд╡рд╛рдорд╛ рдЯреЛрдХрди рдлрд░реНрд╡рд╛рд░реНрдб рдЧрд░реНрдЫред

рд╣рд╛рдореНрд░реЛ рдПрдкреНрд▓рд┐рдХреЗрд╕рди рд╡рд╛ рд╕реЗрд╡рд╛рд▓реЗ рдЕрдм рдпреЛ рдХрдиреНрд╕реБрд▓ рдЯреЛрдХрди рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрдЫ рд╣рд╛рдореНрд░реЛ рдХрдиреНрд╕реБрд▓ рдбрд╛рдЯрд╛рд╕рдБрдЧ рдХреБрд░рд╛рдХрд╛рдиреА рдЧрд░реНрди, рдЯреЛрдХрдирдХреЛ рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░рд▓реЗ рдирд┐рд░реНрдзрд╛рд░рдг рдЧрд░реЗ рдЕрдиреБрд╕рд╛рд░ред

рдЬрд╛рджреВ рдЦреБрд▓реНрдпреЛ!

рддрдкрд╛рдИрдВрд╣рд░реВ рдордзреНрдпреЗ рдЬреЛ рдЯреЛрдкреАрдмрд╛рдЯ рдПрдЙрдЯрд╛ рдЦрд░рд╛рдпреЛ рдорд╛рддреНрд░ рдЦреБрд╕реА рд╣реБрдиреБрд╣реБрдиреНрди рд░ рдпрд╕рд▓реЗ рдХрд╕рд░реА рдХрд╛рдо рдЧрд░реНрдЫ рднрдиреЗрд░ рдЬрд╛рдиреНрди рдЪрд╛рд╣рд╛рдиреБрд╣реБрдиреНрдЫ... рдорд▓рд╛рдИ "рддрдкрд╛рдИрд▓рд╛рдИ рдХрддрд┐ рдЧрд╣рд┐рд░реЛ рджреЗрдЦрд╛рдЙрдиреБрд╣реЛрд╕реН рдЦрд░рд╛рдпреЛ рдкреНрд╡рд╛рд▓"ред

рдкрд╣рд┐рд▓реЗ рдЙрд▓реНрд▓реЗрдЦ рдЧрд░рд┐рдП рдЕрдиреБрд╕рд╛рд░, рд╣рд╛рдореНрд░реЛ "рдЬрд╛рджреВ" рдЪрд░рдг (рдЪрд┐рддреНрд░ 2: рдЪрд░рдг 4) рдЬрд╣рд╛рдБ рдХрдиреНрд╕реБрд▓ рд╕рд░реНрднрд░рд▓реЗ рдЕрдиреБрд░реЛрдзрд▓рд╛рдИ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдЧрд░реНрджрдЫ, рдЕрдиреБрд░реЛрдз рдЬрд╛рдирдХрд╛рд░реА рд╕рдЩреНрдХрд▓рди рдЧрд░реНрджрдЫ, рд░ рдХреБрдиреИ рдкрдирд┐ рд╕рдореНрдмрдиреНрдзрд┐рдд рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдирд┐рдпрдорд╣рд░реВрд╕рдБрдЧ рддреБрд▓рдирд╛ рдЧрд░реНрджрдЫред рдпреЛ рдЪрд░рдг рдХрдиреНрд╕реБрд▓ рд╕рд┐рдВрд╣рд╛рд╡рд▓реЛрдХрди рд░реЗрдЦрд╛рдЪрд┐рддреНрд░ (рдЪрд┐рддреНрд░ 3) рдХреЛ рдЪрд░рдг 4, 5 рд░ 1 рд╕рдБрдЧ рдореЗрд▓ рдЦрд╛рдиреНрдЫред рддрд▓ рдПрдЙрдЯрд╛ рд░реЗрдЦрд╛рдЪрд┐рддреНрд░ (рдЪрд┐рддреНрд░ 3) рдЫ, рдЬрд╕рдХреЛ рдЙрджреНрджреЗрд╢реНрдп рд╡рд╛рд╕реНрддрд╡рдорд╛ рдХреЗ рднрдЗрд░рд╣реЗрдХреЛ рдЫ рднрдиреЗрд░ рд╕реНрдкрд╖реНрдЯ рд░реВрдкрдорд╛ рджреЗрдЦрд╛рдЙрдиреБ рд╣реЛред рд╣реБрдб рдореБрдирд┐ рд╡рд┐рд╢рд┐рд╖реНрдЯ Kubernetes рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд╡рд┐рдзрд┐ред

Hashicorp Consul рдХреЛ Kubernetes рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЛ рдкрд░рд┐рдЪрдп

рд░реЗрдЦрд╛рдЪрд┐рддреНрд░ 3: рдЬрд╛рджреВ рдкреНрд░рдХрдЯ рднрдпреЛ!

  1. рд╕реБрд░реВрд╡рд╛рдд рдмрд┐рдиреНрджреБрдХреЛ рд░реВрдкрдорд╛, рд╣рд╛рдореНрд░реЛ рдХрдиреНрд╕реБрд▓ рдХреНрд▓рд╛рдЗрдиреНрдЯрд▓реЗ рд╣рд╛рдореНрд░реЛ рдХрдиреНрд╕реБрд▓ рд╕рд░реНрднрд░рдорд╛ рд▓рдЧрдЗрди рдЕрдиреБрд░реЛрдзрд▓рд╛рдИ Kubernetes рдЦрд╛рддрд╛ рдЯреЛрдХрди рд░ рдкрд╣рд┐рд▓реЗ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░рд┐рдПрдХреЛ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд╡рд┐рдзрд┐рдХреЛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрджрд╛рд╣рд░рдг рдирд╛рдордХреЛ рд╕рд╛рде рдлрд░реНрд╡рд╛рд░реНрдб рдЧрд░реНрджрдЫред рдпреЛ рдЪрд░рдг рдЕрдШрд┐рд▓реНрд▓реЛ рд╕рд░реНрдХрд┐рдЯ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдорд╛ рдЪрд░рдг 3 рд╕рдВрдЧ рдореЗрд▓ рдЦрд╛рдиреНрдЫред
  2. рдЕрдм рдХрдиреНрд╕реБрд▓ рд╕рд░реНрднрд░ (рд╡рд╛ рдиреЗрддрд╛) рд▓реЗ рдкреНрд░рд╛рдкреНрдд рдЯреЛрдХрдирдХреЛ рдкреНрд░рдорд╛рдгрд┐рдХрддрд╛ рдкреНрд░рдорд╛рдгрд┐рдд рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫред рддреНрдпрд╕рдХрд╛рд░рдг, рдпрд╕рд▓реЗ Kubernetes рдХреНрд▓рд╕реНрдЯрд░рд╕рдБрдЧ рдкрд░рд╛рдорд░реНрд╢ рдЧрд░реНрдиреЗрдЫ (рдХрдиреНрд╕рд▓ рдЧреНрд░рд╛рд╣рдХ рдорд╛рд░реНрдлрдд) рд░ рдЙрдкрдпреБрдХреНрдд рдЕрдиреБрдорддрд┐рд╣рд░реВрдХреЛ рд╕рд╛рдердорд╛, рд╣рд╛рдореА рдЯреЛрдХрди рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╣реЛ рд░ рдпреЛ рдХрд╕рдХреЛ рд╣реЛ рднрдиреЗрд░ рдкрддреНрддрд╛ рд▓рдЧрд╛рдЙрдиреЗрдЫреМрдВред
  3. рдкреБрд╖реНрдЯрд┐ рдЧрд░рд┐рдПрдХреЛ рдЕрдиреБрд░реЛрдз рддреНрдпрд╕рдкрдЫрд┐ рдХрдиреНрд╕реБрд▓ рдиреЗрддрд╛рд▓рд╛рдИ рдлрд┐рд░реНрддрд╛ рдЧрд░рд┐рдиреНрдЫ, рд░ рдХрдиреНрд╕реБрд▓ рд╕рд░реНрднрд░рд▓реЗ рд▓рдЧрдЗрди рдЕрдиреБрд░реЛрдз (рд░ рдХреБрдмреЗрд░рдиреЗрдЯ рдкреНрд░рдХрд╛рд░) рдмрд╛рдЯ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╛рдордХреЛ рд╕рд╛рде рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд╡рд┐рдзрд┐ рдЙрджрд╛рд╣рд░рдг рдЦреЛрдЬреНрдЫред
  4. рдХрдиреНрд╕реБрд▓ рдиреЗрддрд╛рд▓реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд╡рд┐рдзрд┐ рдЙрджрд╛рд╣рд░рдг (рдпрджрд┐ рдлреЗрд▓рд╛ рдкрд░реНрдпреЛ рднрдиреЗ) рдкрд╣рд┐рдЪрд╛рди рдЧрд░реНрджрдЫ рд░ рдпрд╕рдорд╛ рд╕рдВрд▓рдЧреНрди рдмрд╛рдзреНрдпрдХрд╛рд░реА рдирд┐рдпрдорд╣рд░реВрдХреЛ рд╕реЗрдЯ рдкрдвреНрдЫред рддреНрдпрд╕рдкрдЫрд┐ рдпрд╕рд▓реЗ рдпреА рдирд┐рдпрдорд╣рд░реВ рдкрдвреНрдЫ рд░ рдкреНрд░рдорд╛рдгрд┐рдд рдкрд╣рд┐рдЪрд╛рди рд╡рд┐рд╢реЗрд╖рддрд╛рд╣рд░реВрд╕рдБрдЧ рддреБрд▓рдирд╛ рдЧрд░реНрдЫред
  5. TA-dah! рдЕрдШрд┐рд▓реНрд▓реЛ рд╕рд░реНрдХрд┐рдЯ рд╡реНрдпрд╛рдЦреНрдпрд╛рдорд╛ рдЪрд░рдг 5 рдорд╛ рдЬрд╛рдиреБрд╣реЛрд╕реНред

рдирд┐рдпрдорд┐рдд рднрд░реНрдЪреБрдЕрд▓ рдореЗрд╕рд┐рдирдорд╛ рдХрдиреНрд╕рд▓-рд╕рд░реНрднрд░ рдЪрд▓рд╛рдЙрдиреБрд╣реЛрд╕реН

рдЕрдм рджреЗрдЦрд┐, рдо рдкреНрд░рд╛рдп: рдпреЛ POC рдХрд╕рд░реА рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреЗ рднрдиреНрдиреЗ рдмрд╛рд░реЗ рдирд┐рд░реНрджреЗрд╢рдирд╣рд░реВ рджрд┐рдиреЗрдЫреБ, рдкреНрд░рд╛рдпрдГ рдмреБрд▓реЗрдЯ рдкреЛрдЗрдиреНрдЯрд╣рд░реВрдорд╛, рдкреВрд░реНрдг рд╡рд╛рдХреНрдп рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдмрд┐рдирд╛ред рд╕рд╛рдереИ, рдкрд╣рд┐рд▓реЗ рдЙрд▓реНрд▓реЗрдЦ рдЧрд░рд┐рдПрдЭреИрдВ, рдо рд╕рдмреИ рдкреВрд░реНрд╡рд╛рдзрд╛рд░рд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди GCP рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗрдЫреБ, рддрд░ рддрдкрд╛рдИрдВрд▓реЗ рдЙрд╣реА рдкреВрд░реНрд╡рд╛рдзрд╛рд░ рдЕрд░реВ рдХрд╣рд┐рдБ рдкрдирд┐ рдмрдирд╛рдЙрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред

  • рднрд░реНрдЪреБрдЕрд▓ рдореЗрд╕рд┐рди рд╕реБрд░реБ рдЧрд░реНрдиреБрд╣реЛрд╕реН (рдЙрджрд╛рд╣рд░рдг/рд╕рд░реНрднрд░)ред

Hashicorp Consul рдХреЛ Kubernetes рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЛ рдкрд░рд┐рдЪрдп

  • рдлрд╛рдпрд░рд╡рд╛рд▓рдХреЛ рд▓рд╛рдЧрд┐ рдирд┐рдпрдо рдмрдирд╛рдЙрдиреБрд╣реЛрд╕реН (AWS рдорд╛ рд╕реБрд░рдХреНрд╖рд╛ рд╕рдореВрд╣):
  • рдо рдирд┐рдпрдо рд░ рдиреЗрдЯрд╡рд░реНрдХ рдЯреНрдпрд╛рдЧ рджреБрд╡реИрдорд╛ рд╕рдорд╛рди рдореЗрд╕рд┐рдирдХреЛ рдирд╛рдо рддреЛрдХреНрди рдЪрд╛рд╣рдиреНрдЫреБ, рдпрд╕ рдЕрд╡рд╕реНрдерд╛рдорд╛ "skywiz-consul-server-poc"ред
  • рдЖрдлреНрдиреЛ рд╕реНрдерд╛рдиреАрдп рдХрдореНрдкреНрдпреБрдЯрд░рдХреЛ IP рдареЗрдЧрд╛рдирд╛ рдлреЗрд▓рд╛ рдкрд╛рд░реНрдиреБрд╣реЛрд╕реН рд░ рдпрд╕рд▓рд╛рдИ рд╕реНрд░реЛрдд IP рдареЗрдЧрд╛рдирд╛рд╣рд░реВрдХреЛ рд╕реВрдЪреАрдорд╛ рдердкреНрдиреБрд╣реЛрд╕реН рддрд╛рдХрд┐ рд╣рд╛рдореА рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдиреНрдЯрд░рдлреЗрд╕ (UI) рдкрд╣реБрдБрдЪ рдЧрд░реНрди рд╕рдХреНрдЫреМрдВред
  • UI рдХреЛ рд▓рд╛рдЧрд┐ рдкреЛрд░реНрдЯ 8500 рдЦреЛрд▓реНрдиреБрд╣реЛрд╕реНред рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН рдХреНрд▓рд┐рдХ рдЧрд░реНрдиреБрд╣реЛрд╕реНред рд╣рд╛рдореА рдпреЛ рдлрд╛рдпрд░рд╡рд╛рд▓ рдлреЗрд░рд┐ рдЪрд╛рдБрдбреИ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрдиреЗрдЫреМрдВ [рд▓рд┐рдЩреНрдХ].
  • рдЙрджрд╛рд╣рд░рдгрдорд╛ рдлрд╛рдпрд░рд╡рд╛рд▓ рдирд┐рдпрдо рдердкреНрдиреБрд╣реЛрд╕реНред рдХрдиреНрд╕реБрд▓ рд╕рд░реНрднрд░рдХреЛ VM рдбреНрдпрд╛рд╕рдмреЛрд░реНрдбрдорд╛ рдлрд░реНрдХрдиреБрд╣реЛрд╕реН рд░ рдиреЗрдЯрд╡рд░реНрдХ рдЯреНрдпрд╛рдЧ рдлрд┐рд▓реНрдбрдорд╛ "skywiz-consul-server-poc" рдердкреНрдиреБрд╣реЛрд╕реНред рдмрдЪрдд рдХреНрд▓рд┐рдХ рдЧрд░реНрдиреБрд╣реЛрд╕реНред

Hashicorp Consul рдХреЛ Kubernetes рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЛ рдкрд░рд┐рдЪрдп

  • рднрд░реНрдЪреБрдЕрд▓ рдореЗрд╕рд┐рдирдорд╛ рдХрдиреНрд╕реБрд▓ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН, рдпрд╣рд╛рдБ рдЬрд╛рдБрдЪ рдЧрд░реНрдиреБрд╣реЛрд╕реНред рдпрд╛рдж рдЧрд░реНрдиреБрд╣реЛрд╕реН рддрдкрд╛рдИрд▓рд╛рдИ рдХрдиреНрд╕реБрд▓ рд╕рдВрд╕реНрдХрд░рдг тЙе рез.рел рдЪрд╛рд╣рд┐рдиреНрдЫ [рд▓рд┐рдЩреНрдХ]
  • рдПрдХрд▓ рдиреЛрдб рдХрдиреНрд╕реБрд▓ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реМрдВ - рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдЫред

groupadd --system consul
useradd -s /sbin/nologin --system -g consul consul
mkdir -p /var/lib/consul
chown -R consul:consul /var/lib/consul
chmod -R 775 /var/lib/consul
mkdir /etc/consul.d
chown -R consul:consul /etc/consul.d

  • рдХрдиреНрд╕реБрд▓ рд╕реНрдерд╛рдкрдирд╛ рд░ 3 рдиреЛрдбрд╣рд░реВрдХреЛ рдХреНрд▓рд╕реНрдЯрд░ рд╕реЗрдЯрдЕрдк рдЧрд░реНрдиреЗ рдмрд╛рд░реЗ рдердк рд╡рд┐рд╕реНрддреГрдд рдЧрд╛рдЗрдбрдХреЛ рд▓рд╛рдЧрд┐, рд╣реЗрд░реНрдиреБрд╣реЛрд╕реН рдпрд╣рд╛рдБ.
  • рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдлрд╛рдЗрд▓ /etc/consul.d/agent.json рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН [рд▓рд┐рдЩреНрдХ]:

### /etc/consul.d/agent.json
{
 "acl" : {
 "enabled": true,
 "default_policy": "deny",
 "enable_token_persistence": true
 }
}

  • рд╣рд╛рдореНрд░реЛ рдХрдиреНрд╕реБрд▓ рд╕рд░реНрднрд░ рд╕реБрд░реБ рдЧрд░реНрдиреБрд╣реЛрд╕реН:

consul agent 
-server 
-ui 
-client 0.0.0.0 
-data-dir=/var/lib/consul 
-bootstrap-expect=1 
-config-dir=/etc/consul.d

  • рддрдкрд╛рдИрдВрд▓реЗ рдЖрдЙрдЯрдкреБрдЯрдХреЛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рджреЗрдЦреНрдиреБрдкрд░реНрдЫ рд░ "... ACLs рджреНрд╡рд╛рд░рд╛ рдЕрд╡рд░реБрджреНрдз рдЕрдкрдбреЗрдЯ" рдХреЛ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реБрдиреНрдЫред
  • рдХрдиреНрд╕реБрд▓ рд╕рд░реНрднрд░рдХреЛ рдмрд╛рд╣реНрдп рдЖрдИрдкреА рдареЗрдЧрд╛рдирд╛ рдлреЗрд▓рд╛ рдкрд╛рд░реНрдиреБрд╣реЛрд╕реН рд░ рдкреЛрд░реНрдЯ 8500 рдорд╛ рдпреЛ рдЖрдИрдкреА рдареЗрдЧрд╛рдирд╛ рднрдПрдХреЛ рдмреНрд░рд╛рдЙрдЬрд░ рдЦреЛрд▓реНрдиреБрд╣реЛрд╕реНред UI рдЦреБрд▓реНрдЫ рднрдиреЗрд░ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдЧрд░реНрдиреБрд╣реЛрд╕реНред
  • рдХреБрдЮреНрдЬреА/рдорд╛рди рдЬреЛрдбреА рдердкреНрдиреЗ рдкреНрд░рдпрд╛рд╕ рдЧрд░реНрдиреБрд╣реЛрд╕реНред рдЧрд▓реНрддреА рд╣реБрдиреБрдкрд░реНрдЫред рдпреЛ рдХрд┐рдирднрдиреЗ рд╣рд╛рдореАрд▓реЗ рдХрдиреНрд╕реБрд▓рд░ рд╕рд░реНрднрд░рд▓рд╛рдИ ACL рдорд╛рд░реНрдлрдд рд▓реЛрдб рдЧрд░реЗрдХрд╛ рдЫреМрдВ рд░ рд╕рдмреИ рдирд┐рдпрдорд╣рд░реВ рдЕрд╕рдХреНрд╖рдо рдкрд╛рд░реЗрдХрд╛ рдЫреМрдВред
  • рдХрдиреНрд╕реБрд▓ рд╕рд░реНрднрд░рдорд╛ рдЖрдлреНрдиреЛ рд╢реЗрд▓рдорд╛ рдлрд░реНрдХрдиреБрд╣реЛрд╕реН рд░ рдпрд╕рд▓рд╛рдИ рдЪрд▓рд╛рдЙрдирдХреЛ рд▓рд╛рдЧрд┐ рдкреГрд╖реНрдарднреВрдорд┐ рд╡рд╛ рдХреБрдиреИ рдЕрдиреНрдп рддрд░рд┐рдХрд╛рдорд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реБрд░реБ рдЧрд░реНрдиреБрд╣реЛрд╕реН рд░ рдирд┐рдореНрди рдкреНрд░рд╡рд┐рд╖реНрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реН:

consul acl bootstrap

  • "SecretID" рдорд╛рди рдлреЗрд▓рд╛ рдкрд╛рд░реНрдиреБрд╣реЛрд╕реН рд░ UI рдорд╛ рдлрд░реНрдХрдиреБрд╣реЛрд╕реНред ACL рдЯреНрдпрд╛рдмрдорд╛, рддрдкрд╛рдИрдВрд▓реЗ рднрд░реНрдЦрд░реИ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдЧрд░реНрдиреБрднрдПрдХреЛ рдЯреЛрдХрдирдХреЛ рдЧреЛрдкреНрдп ID рдкреНрд░рд╡рд┐рд╖реНрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реНред SecretID рдХреЛ рдХрддреИ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдЧрд░реНрдиреБрд╣реЛрд╕реН, рд╣рд╛рдореАрд▓рд╛рдИ рдкрдЫрд┐ рдЪрд╛рд╣рд┐рдиреНрдЫред
  • рдЕрдм рдПрдЙрдЯрд╛ рдХреБрдЮреНрдЬреА/рдорд╛рди рдЬреЛрдбреА рдердкреНрдиреБрд╣реЛрд╕реНред рдпреЛ POC рдХреЛ рд▓рд╛рдЧрд┐, рдирд┐рдореНрди рдердкреНрдиреБрд╣реЛрд╕реН: рдХреБрдЮреНрдЬреА: "custom-ns/test_key", рдорд╛рди: "рдо custom-ns рдлреЛрд▓реНрдбрд░рдорд╛ рдЫреБ!"

рдбреЗрдореЛрдирд╕реЗрдЯрдХреЛ рд░реВрдкрдорд╛ рдХрдиреНрд╕реБрд▓ рдХреНрд▓рд╛рдЗрдиреНрдЯрд╕рдБрдЧ рд╣рд╛рдореНрд░реЛ рдЖрд╡реЗрджрдирдХреЛ рд▓рд╛рдЧрд┐ Kubernetes рдХреНрд▓рд╕реНрдЯрд░ рд╕реБрд░реБ рдЧрд░реНрджреИ

  • K8s (Kubernetes) рдХреНрд▓рд╕реНрдЯрд░ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реНред рд╣рд╛рдореА рдпрд╕рд▓рд╛рдИ рдЫрд┐рдЯреЛ рдкрд╣реБрдБрдЪрдХреЛ рд▓рд╛рдЧрд┐ рд╕рд░реНрднрд░рдХреЛ рд░реВрдкрдорд╛ рд╕рдорд╛рди рдХреНрд╖реЗрддреНрд░рдорд╛ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреЗрдЫреМрдВ, рд░ рддреНрдпрд╕реИрд▓реЗ рд╣рд╛рдореА рдЖрдиреНрддрд░рд┐рдХ IP рдареЗрдЧрд╛рдирд╛рд╣рд░реВрд╕рдБрдЧ рд╕рдЬрд┐рд▓реИ рдЬрдбрд╛рди рдЧрд░реНрди рд╕рдорд╛рди рд╕рдмрдиреЗрдЯ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрдЫреМрдВред рд╣рд╛рдореА рдпрд╕рд▓рд╛рдИ "skywiz-app-with-consul-client-poc" рднрдиреНрдиреЗрдЫреМрдВред

Hashicorp Consul рдХреЛ Kubernetes рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЛ рдкрд░рд┐рдЪрдп

  • рд╕рд╛рдЗрдб рдиреЛрдЯрдХреЛ рд░реВрдкрдорд╛, рдпрд╣рд╛рдБ рдПрдЙрдЯрд╛ рд░рд╛рдореНрд░реЛ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдЫ рдЬреБрди рдореИрд▓реЗ рдХрдиреНрд╕реБрд▓ рдЬрдбрд╛рдирд╕рдБрдЧ POC рдХрдиреНрд╕реБрд▓ рдХреНрд▓рд╕реНрдЯрд░ рд╕реЗрдЯрдЕрдк рдЧрд░реНрджрд╛ рднреЗрдЯреЗрдХреЛ рдерд┐рдПрдБред
  • рд╣рд╛рдореА рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдорд╛рди рдлрд╛рдЗрд▓рдХреЛ рд╕рд╛рде Hashicorp рд╣реЗрд▓реНрдо рдЪрд╛рд░реНрдЯ рдкрдирд┐ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗрдЫреМрдВред
  • рд╣реЗрд▓рдо рд╕реНрдерд╛рдкрдирд╛ рд░ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрдиреБрд╣реЛрд╕реНред рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдЪрд░рдгрд╣рд░реВ:

kubectl create serviceaccount tiller --namespace kube-system
kubectl create clusterrolebinding tiller-admin-binding 
   --clusterrole=cluster-admin --serviceaccount=kube-system:tiller
./helm init --service-account=tiller
./helm update

  • рд╣реЗрдо рдЪрд╛рд░реНрдЯ: https://www.consul.io/docs/platform/k8s/helm.html
  • рдирд┐рдореНрди рдорд╛рди рдлрд╛рдЗрд▓ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрд╣реЛрд╕реН (рдиреЛрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реН рдХрд┐ рдореИрд▓реЗ рдзреЗрд░реИрд▓рд╛рдИ рдЕрд╕рдХреНрд╖рдо рдкрд╛рд░реЗрдХреЛ рдЫреБ):

### poc-helm-consul-values.yaml
global:
 enabled: false
 image: "consul:latest"
# Expose the Consul UI through this LoadBalancer
ui:
 enabled: false
# Allow Consul to inject the Connect proxy into Kubernetes containers
connectInject:
 enabled: false
# Configure a Consul client on Kubernetes nodes. GRPC listener is required for Connect.
client:
 enabled: true
 join: ["<PRIVATE_IP_CONSUL_SERVER>"]
 extraConfig: |
{
  "acl" : {
 "enabled": true,   
 "default_policy": "deny",   
 "enable_token_persistence": true 
  }
}
# Minimal Consul configuration. Not suitable for production.
server:
 enabled: false
# Sync Kubernetes and Consul services
syncCatalog:
 enabled: false

  • рд╣реЗрд▓рдо рдЪрд╛рд░реНрдЯ рд▓рд╛рдЧреВ рдЧрд░реНрдиреБрд╣реЛрд╕реН:

./helm install -f poc-helm-consul-values.yaml ./consul-helm - name skywiz-app-with-consul-client-poc

  • рдЬрдм рдпреЛ рдЪрд▓реНрдиреЗ рдкреНрд░рдпрд╛рд╕ рдЧрд░реНрдЫ, рдпрд╕рд▓рд╛рдИ рдХрдиреНрд╕реБрд▓ рд╕рд░реНрднрд░рдХреЛ рд▓рд╛рдЧрд┐ рдЕрдиреБрдорддрд┐ рдЪрд╛рд╣рд┐рдиреНрдЫ, рддреНрдпрд╕реИрд▓реЗ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рдердкреМрдВред
  • рдХреНрд▓рд╕реНрдЯрд░ рдбреНрдпрд╛рд╕рдмреЛрд░реНрдбрдорд╛ рд░рд╣реЗрдХреЛ "рдкреЛрдб рдареЗрдЧрд╛рдирд╛ рджрд╛рдпрд░рд╛" рдиреЛрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реН рд░ рд╣рд╛рдореНрд░реЛ "skywiz-consul-server-poc" рдлрд╛рдпрд░рд╡рд╛рд▓ рдирд┐рдпрдордорд╛ рдлрд░реНрдХрдиреБрд╣реЛрд╕реНред
  • рдЖрдИрдкреА тАЛтАЛрдареЗрдЧрд╛рдирд╛рд╣рд░реВрдХреЛ рд╕реВрдЪреАрдорд╛ рдкреЛрдбрдХреЛ рд▓рд╛рдЧрд┐ рдареЗрдЧрд╛рдирд╛ рджрд╛рдпрд░рд╛ рдердкреНрдиреБрд╣реЛрд╕реН рд░ 8301 рд░ 8300 рдкреЛрд░реНрдЯрд╣рд░реВ рдЦреЛрд▓реНрдиреБрд╣реЛрд╕реНред

Hashicorp Consul рдХреЛ Kubernetes рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЛ рдкрд░рд┐рдЪрдп

  • Consul UI рдорд╛ рдЬрд╛рдиреБрд╣реЛрд╕реН рд░ рдХреЗрд╣рд┐ рдорд┐рдиреЗрдЯ рдкрдЫрд┐ рддрдкрд╛рдИрдВрд▓реЗ рдиреЛрдбреНрд╕ рдЯреНрдпрд╛рдмрдорд╛ рд╣рд╛рдореНрд░реЛ рдХреНрд▓рд╕реНрдЯрд░ рджреЗрдЦреНрдиреБрд╣реБрдиреЗрдЫред

Hashicorp Consul рдХреЛ Kubernetes рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЛ рдкрд░рд┐рдЪрдп

Kubernetes рд╕рдВрдЧ рдХрдиреНрд╕реБрд▓ рдПрдХреАрдХрд░рдг рдЧрд░реЗрд░ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд╡рд┐рдзрд┐ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрджреИ

  • рдХрдиреНрд╕реБрд▓ рд╕рд░реНрднрд░ рд╢реЗрд▓рдорд╛ рдлрд░реНрдХрдиреБрд╣реЛрд╕реН рд░ рддрдкрд╛рдИрдВрд▓реЗ рдкрд╣рд┐рд▓реЗ рдмрдЪрдд рдЧрд░реНрдиреБрднрдПрдХреЛ рдЯреЛрдХрди рдирд┐рд░реНрдпрд╛рдд рдЧрд░реНрдиреБрд╣реЛрд╕реН:

export CONSUL_HTTP_TOKEN=<SecretID>

  • рдкреНрд░рдорд╛рдгреАрдХрд░рдг рд╡рд┐рдзрд┐рдХреЛ рдЙрджрд╛рд╣рд░рдг рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рд╣рд╛рдореАрд▓рд╛рдИ рд╣рд╛рдореНрд░реЛ Kubernetes рдХреНрд▓рд╕реНрдЯрд░рдмрд╛рдЯ рдЬрд╛рдирдХрд╛рд░реА рдЪрд╛рд╣рд┐рдиреНрдЫ:
  • kubernetes-рд╣реЛрд╕реНрдЯ

kubectl get endpoints | grep kubernetes

  • kubernetes-рд╕реЗрд╡рд╛-рдЦрд╛рддрд╛-jwt

kubectl get sa <helm_deployment_name>-consul-client -o yaml | grep "- name:"
kubectl get secret <secret_name_from_prev_command> -o yaml | grep token:

  • рдЯреЛрдХрди рдмреЗрд╕64 рдПрдиреНрдХреЛрдб рдЧрд░рд┐рдПрдХреЛ рдЫ, рддреНрдпрд╕реИрд▓реЗ рдпрд╕рд▓рд╛рдИ рддрдкрд╛рдЗрдБрдХреЛ рдордирдкрд░реНрдиреЗ рдЙрдкрдХрд░рдг рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реН [рд▓рд┐рдЩреНрдХ]
  • kubernetes-ca-cert

kubectl get secret <secret_name_from_prev_command> -o yaml | grep ca.crt:

  • "ca.crt" рдкреНрд░рдорд╛рдгрдкрддреНрд░ рд▓рд┐рдиреБрд╣реЛрд╕реН (рдмреЗрд╕64 рдбрд┐рдХреЛрдбрд┐рдЩ рдкрдЫрд┐) рд░ рдпрд╕рд▓рд╛рдИ "ca.crt" рдлрд╛рдЗрд▓рдорд╛ рд▓реЗрдЦреНрдиреБрд╣реЛрд╕реНред
  • рдЕрдм рддрдкрд╛рдИрдВрд▓реЗ рднрд░реНрдЦрд░реИ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрдиреБрднрдПрдХреЛ рдорд╛рдирд╣рд░реВрд╕рдБрдЧ рдкреНрд▓реЗрд╕рд╣реЛрд▓реНрдбрд░рд╣рд░реВ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдЧрд░реНрджреИ, рдкреНрд░рдорд╛рдгреАрдХрд░рдг рд╡рд┐рдзрд┐рд▓рд╛рдИ рдЗрдиреНрд╕реНрдЯреНрдпрд╛рдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реНред

consul acl auth-method create 
-type "kubernetes" 
-name "auth-method-skywiz-consul-poc" 
-description "This is an auth method using kubernetes for the cluster skywiz-app-with-consul-client-poc" 
-kubernetes-host "<k8s_endpoint_retrieved earlier>" 
[email protected] 
-kubernetes-service-account-
jwt="<decoded_token_retrieved_earlier>"

  • рдЕрд░реНрдХреЛ рд╣рд╛рдореАрд▓реЗ рдПрдЙрдЯрд╛ рдирд┐рдпрдо рдмрдирд╛рдЙрдиреБрдкрд░реНрдЫ рд░ рдпрд╕рд▓рд╛рдИ рдирдпрд╛рдБ рднреВрдорд┐рдХрд╛рдорд╛ рдЬреЛрдбреНрдиреБрдкрд░реНрдЫред рдпрд╕ рднрд╛рдЧрдХреЛ рд▓рд╛рдЧрд┐ рддрдкрд╛рдИрд▓реЗ Consul UI рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ, рддрд░ рд╣рд╛рдореА рдХрдорд╛рдгреНрдб рд▓рд╛рдЗрди рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗрдЫреМрдВред
  • рдирд┐рдпрдо рд▓реЗрдЦреНрдиреБрд╣реЛрд╕реН

### kv-custom-ns-policy.hcl
key_prefix "custom-ns/" {
 policy = "write"
}

  • рдирд┐рдпрдо рд▓рд╛рдЧреВ рдЧрд░реНрдиреБрд╣реЛрд╕реН

consul acl policy create 
-name kv-custom-ns-policy 
-description "This is an example policy for kv at custom-ns/" 
-rules @kv-custom-ns-policy.hcl

  • рддрдкрд╛рдИрдВрд▓реЗ рднрд░реНрдЦрд░ рдЖрдЙрдЯрдкреБрдЯрдмрд╛рдЯ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреБрднрдПрдХреЛ рдирд┐рдпрдордХреЛ рдЖрдИрдбреА рдлреЗрд▓рд╛ рдкрд╛рд░реНрдиреБрд╣реЛрд╕реНред
  • рдирдпрд╛рдБ рдирд┐рдпрдордХреЛ рд╕рд╛рде рднреВрдорд┐рдХрд╛ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реНред

consul acl role create 
-name "custom-ns-role" 
-description "This is an example role for custom-ns namespace" 
-policy-id <policy_id>

  • рдЕрдм рд╣рд╛рдореА рд╣рд╛рдореНрд░реЛ рдирдпрд╛рдБ рднреВрдорд┐рдХрд╛рд▓рд╛рдИ рдкреНрд░рдорд╛рдгрд┐рдХрд░рдг рд╡рд┐рдзрд┐ рдЙрджрд╛рд╣рд░рдгрд╕рдБрдЧ рд╕рдореНрдмрджреНрдз рдЧрд░реНрдиреЗрдЫреМрдВред рдзреНрдпрд╛рди рджрд┐рдиреБрд╣реЛрд╕реН рдХрд┐ "рдЪрдпрдирдХрд░реНрддрд╛" рдлреНрд▓реНрдпрд╛рдЧрд▓реЗ рд╣рд╛рдореНрд░реЛ рд▓рдЧрдЗрди рдЕрдиреБрд░реЛрдзрд▓реЗ рдпреЛ рднреВрдорд┐рдХрд╛ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрдиреЗрдЫ рдХрд┐ рднрдиреЗрд░ рдирд┐рд░реНрдзрд╛рд░рдг рдЧрд░реНрджрдЫред рдЕрдиреНрдп рдЪрдпрдирдХрд░реНрддрд╛ рд╡рд┐рдХрд▓реНрдкрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдпрд╣рд╛рдБ рдЬрд╛рдБрдЪ рдЧрд░реНрдиреБрд╣реЛрд╕реН: https://www.consul.io/docs/acl/auth-methods/kubernetes.html#trusted-identity-attributes

consul acl binding-rule create 
-method=auth-method-skywiz-consul-poc 
-bind-type=role 
-bind-name='custom-ns-role' 
-selector='serviceaccount.namespace=="custom-ns"'

рдЕрдиреНрддрдорд╛ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рдирд╣рд░реВ

рдкрд╣реБрдБрдЪ рдЕрдзрд┐рдХрд╛рд░

  • рдкрд╣реБрдБрдЪ рдЕрдзрд┐рдХрд╛рд░рд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реНред рд╣рд╛рдореАрд▓реЗ K8s рд╕реЗрд╡рд╛ рдЦрд╛рддрд╛ рдЯреЛрдХрдирдХреЛ рдкрд╣рд┐рдЪрд╛рди рдкреНрд░рдорд╛рдгрд┐рдд рдЧрд░реНрди рд░ рдкрд╣рд┐рдЪрд╛рди рдЧрд░реНрди рдХрдиреНрд╕реБрд▓рд▓рд╛рдИ рдЕрдиреБрдорддрд┐ рджрд┐рди рдЖрд╡рд╢реНрдпрдХ рдЫред
  • рдлрд╛рдЗрд▓рдорд╛ рдирд┐рдореНрди рд▓реЗрдЦреНрдиреБрд╣реЛрд╕реН [рд▓рд┐рдЩреНрдХ]:

###skywiz-poc-consul-server_rbac.yaml
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
 name: review-tokens
 namespace: default
subjects:
- kind: ServiceAccount
 name: skywiz-app-with-consul-client-poc-consul-client
 namespace: default
roleRef:
 kind: ClusterRole
 name: system:auth-delegator
 apiGroup: rbac.authorization.k8s.io
---
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
 name: service-account-getter
 namespace: default
rules:
- apiGroups: [""]
 resources: ["serviceaccounts"]
 verbs: ["get"]
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
 name: get-service-accounts
 namespace: default
subjects:
- kind: ServiceAccount
 name: skywiz-app-with-consul-client-poc-consul-client
 namespace: default
roleRef:
 kind: ClusterRole
 name: service-account-getter
 apiGroup: rbac.authorization.k8s.io

  • рдкрд╣реБрдБрдЪ рдЕрдзрд┐рдХрд╛рд░ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реМрдВ

kubectl create -f skywiz-poc-consul-server_rbac.yaml

рдХрдиреНрд╕реБрд▓ рдЧреНрд░рд╛рд╣рдХрд╕рдБрдЧ рдЬрдбрд╛рди рдЧрд░реНрджреИ

  • рдЙрд▓реНрд▓реЗрдЦ рдЧрд░реЗ рдЕрдиреБрд╕рд╛рд░ рдпрд╣рд╛рдБрдбреЗрдореЛрдирд╕реЗрдЯрдорд╛ рдЬрдбрд╛рди рдЧрд░реНрдирдХрд╛ рд▓рд╛рдЧрд┐ рдзреЗрд░реИ рд╡рд┐рдХрд▓реНрдкрд╣рд░реВ рдЫрдиреН, рддрд░ рд╣рд╛рдореА рдирд┐рдореНрди рд╕рд░рд▓ рд╕рдорд╛рдзрд╛рдирдорд╛ рдЬрд╛рдиреНрдЫреМрдВ:
  • рдирд┐рдореНрди рдлрд╛рдЗрд▓ рд▓рд╛рдЧреВ рдЧрд░реНрдиреБрд╣реЛрд╕реН [рд▓рд┐рдЩреНрдХ].

### poc-consul-client-ds-svc.yaml
apiVersion: v1
kind: Service
metadata:
 name: consul-ds-client
spec:
 selector:
   app: consul
   chart: consul-helm
   component: client
   hasDNS: "true"
   release: skywiz-app-with-consul-client-poc
 ports:
 - protocol: TCP
   port: 80
   targetPort: 8500

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

cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: ConfigMap
metadata:
 labels:
   addonmanager.kubernetes.io/mode: EnsureExists
 name: kube-dns
 namespace: kube-system
data:
 stubDomains: |
   {"consul": ["$(kubectl get svc consul-ds-client -o jsonpath='{.spec.clusterIP}')"]}
EOF

рдкреНрд░рдорд╛рдгреАрдХрд░рдг рд╡рд┐рдзрд┐ рдкрд░реАрдХреНрд╖рдг рдЧрд░реНрджреИ

рдЕрдм рдХрд╛рд░реНрдп рдорд╛ рдЬрд╛рджреВ рд╣реЗрд░реМрдВ!

  • рдПрдЙрдЯреИ рд╢реАрд░реНрд╖-рд╕реНрддрд░ рдХреБрдЮреНрдЬреАрдХреЛ рд╕рд╛рде рдзреЗрд░реИ рдЕрдзрд┐рдХ рдХреБрдЮреНрдЬреА рдлреЛрд▓реНрдбрд░рд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН (рдЬрд╕реНрддреИ /sample_key) рд░ рддрдкрд╛рдИрдХреЛ рд░реЛрдЬрд╛рдЗрдХреЛ рдорд╛рдиред рдирдпрд╛рдБ рдкреНрд░рдореБрдЦ рдорд╛рд░реНрдЧрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдЙрдкрдпреБрдХреНрдд рдиреАрддрд┐ рд░ рднреВрдорд┐рдХрд╛рд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реНред рд╣рд╛рдореА рдкрдЫрд┐ рдмрд╛рдЗрдиреНрдбрд┐рдЩ рдЧрд░реНрдиреЗрдЫреМрдВред

Hashicorp Consul рдХреЛ Kubernetes рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЛ рдкрд░рд┐рдЪрдп

рдЕрдиреБрдХреВрд▓рди рдиреЗрдорд╕реНрдкреЗрд╕ рдкрд░реАрдХреНрд╖рдг:

  • рд╣рд╛рдореНрд░реЛ рдЖрдлреНрдиреИ рдирд╛рдо рд╕реНрдерд╛рди рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реМрдВ:

kubectl create namespace custom-ns

  • рд╣рд╛рдореНрд░реЛ рдирдпрд╛рдБ рдиреЗрдорд╕реНрдкреЗрд╕рдорд╛ рдкреЛрдб рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реМрдВред рдкреЛрдбрдХреЛ рд▓рд╛рдЧрд┐ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рд▓реЗрдЦреНрдиреБрд╣реЛрд╕реНред

###poc-ubuntu-custom-ns.yaml
apiVersion: v1
kind: Pod
metadata:
 name: poc-ubuntu-custom-ns
 namespace: custom-ns
spec:
 containers:
 - name: poc-ubuntu-custom-ns
   image: ubuntu
   command: ["/bin/bash", "-ec", "sleep infinity"]
 restartPolicy: Never

  • рдЕрдиреНрддрд░реНрдЧрдд рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН:

kubectl create -f poc-ubuntu-custom-ns.yaml

  • рдХрдиреНрдЯреЗрдирд░ рдЪрд▓рд┐рд░рд╣реЗрдХреЛ рдмреЗрд▓рд╛, рддреНрдпрд╣рд╛рдБ рдЬрд╛рдиреБрд╣реЛрд╕реН рд░ рдХрд░реНрд▓ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реНред

kubectl exec poc-ubuntu-custom-ns -n custom-ns -it /bin/bash
apt-get update && apt-get install curl -y

  • рдЕрдм рд╣рд╛рдореАрд▓реЗ рдкрд╣рд┐рд▓реЗ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реЗрдХреЛ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд╡рд┐рдзрд┐ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдХрдиреНрд╕реБрд▓рд▓рд╛рдИ рд▓рдЧрдЗрди рдЕрдиреБрд░реЛрдз рдкрдард╛рдЙрдиреЗрдЫреМрдВредрд▓рд┐рдЩреНрдХ].
  • рддрдкрд╛рдИрдВрдХреЛ рд╕реЗрд╡рд╛ рдЦрд╛рддрд╛рдмрд╛рдЯ рдкреНрд░рд╡рд┐рд╖реНрдЯ рдЧрд░рд┐рдПрдХреЛ рдЯреЛрдХрди рд╣реЗрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐:

cat /run/secrets/kubernetes.io/serviceaccount/token

  • рдХрдиреНрдЯреЗрдирд░ рднрд┐рддреНрд░рдХреЛ рдлрд╛рдЗрд▓рдорд╛ рдирд┐рдореНрди рд▓реЗрдЦреНрдиреБрд╣реЛрд╕реН:

### payload.json
{
 "AuthMethod": "auth-method-test",
 "BearerToken": "<jwt_token>"
}

  • рд▓рдЧ - рдЗрди!

curl 
--request POST 
--data @payload.json 
consul-ds-client.default.svc.cluster.local/v1/acl/login

  • рдорд╛рдерд┐рдХрд╛ рдЪрд░рдгрд╣рд░реВ рдПрдХ рд▓рд╛рдЗрдирдорд╛ рдкреВрд░рд╛ рдЧрд░реНрдирдХрд╛ рд▓рд╛рдЧрд┐ (рд╣рд╛рдореА рдзреЗрд░реИ рдкрд░реАрдХреНрд╖рдгрд╣рд░реВ рдЪрд▓рд╛рдЙрдиреЗ рднрдПрдХрд╛рд▓реЗ), рддрдкрд╛рдИрдВрд▓реЗ рдирд┐рдореНрди рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ:

echo "{ 
"AuthMethod": "auth-method-skywiz-consul-poc", 
"BearerToken": "$(cat /run/secrets/kubernetes.io/serviceaccount/token)" 
}" 
| curl 
--request POST 
--data @- 
consul-ds-client.default.svc.cluster.local/v1/acl/login

  • рдХрд╛рдорд╣рд░реВ! рдХрдореНрддрд┐рдорд╛ рд╣реБрдиреБрдкрд░реНрдЫред рдЕрдм SecretID рд▓рд┐рдиреБрд╣реЛрд╕реН рд░ рдХреБрдЮреНрдЬреА/рдорд╛рди рдкрд╣реБрдБрдЪ рдЧрд░реНрди рдкреНрд░рдпрд╛рд╕ рдЧрд░реНрдиреБрд╣реЛрд╕реН рдЬреБрди рд╣рд╛рдореАрд▓реЗ рдкрд╣реБрдБрдЪ рдЧрд░реНрдиреБрдкрд░реНрджрдЫред

curl 
consul-ds-client.default.svc.cluster.local/v1/kv/custom-ns/test_key --header тАЬX-Consul-Token: <SecretID_from_prev_response>тАЭ

  • рддрдкрд╛рдИрдВрд▓реЗ рдмреЗрд╕64 рдбрд┐рдХреЛрдб "рдорд╛рди" рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рд░ рдпреЛ UI рдорд╛ custom-ns/test_key рдорд╛ рднрдПрдХреЛ рдорд╛рдирд╕рдБрдЧ рдореЗрд▓ рдЦрд╛рдиреНрдЫ рднрдиреЗрд░ рд╣реЗрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред рдпрджрд┐ рддрдкрд╛рдИрдВрд▓реЗ рдпрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓рдорд╛ рдорд╛рдерд┐рдХреЛ рд╕рдорд╛рди рдорд╛рди рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрднрдпреЛ рднрдиреЗ, рддрдкрд╛рдИрдВрдХреЛ рдПрдиреНрдХреЛрдб рдЧрд░рд┐рдПрдХреЛ рдорд╛рди IkknbSBpbiB0aGUgY3VzdG9tLW5zIGZvbGRlciEi рд╣реБрдиреЗрдЫред

рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛ рд╕реЗрд╡рд╛ рдЦрд╛рддрд╛ рдкрд░реАрдХреНрд╖рдг:

  • рдирд┐рдореНрди рдЖрджреЗрд╢ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдЕрдиреБрдХреВрд▓рди рд╕реЗрд╡рд╛ рдЦрд╛рддрд╛ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН [рд▓рд┐рдЩреНрдХ].

kubectl apply -f - <<EOF
apiVersion: v1
kind: ServiceAccount
metadata:
 name: custom-sa
EOF

  • рдкреЛрдбрдХреЛ рд▓рд╛рдЧрд┐ рдирдпрд╛рдБ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдлрд╛рдЗрд▓ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реНред рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджрд┐рдиреБрд╣реЛрд╕реН рдХрд┐ рдореИрд▓реЗ рд╢реНрд░рдо рдмрдЪрдд рдЧрд░реНрди рдХрд░реНрд▓ рд╕реНрдерд╛рдкрдирд╛ рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реЗрдХреЛ рдЫреБ :)

###poc-ubuntu-custom-sa.yaml
apiVersion: v1
kind: Pod
metadata:
 name: poc-ubuntu-custom-sa
 namespace: default
spec:
 serviceAccountName: custom-sa
 containers:
 - name: poc-ubuntu-custom-sa
   image: ubuntu
   command: ["/bin/bash","-ec"]
   args: ["apt-get update && apt-get install curl -y; sleep infinity"]
 restartPolicy: Never

  • рддреНрдпрд╕ рдкрдЫрд┐, рдХрдиреНрдЯреЗрдирд░ рднрд┐рддреНрд░ рдЦреЛрд▓ рдЪрд▓рд╛рдЙрдиреБрд╣реЛрд╕реНред

kubectl exec -it poc-ubuntu-custom-sa /bin/bash

  • рд▓рдЧ - рдЗрди!

echo "{ 
"AuthMethod": "auth-method-skywiz-consul-poc", 
"BearerToken": "$(cat /run/secrets/kubernetes.io/serviceaccount/token)" 
}" 
| curl 
--request POST 
--data @- 
consul-ds-client.default.svc.cluster.local/v1/acl/login

  • рдЕрдиреБрдорддрд┐ рдЕрд╕реНрд╡реАрдХреГрддред рдУрд╣, рд╣рд╛рдореАрд▓реЗ рдЙрдкрдпреБрдХреНрдд рдЕрдиреБрдорддрд┐рд╣рд░реВрд╕рдБрдЧ рдмрд╛рдзреНрдпрдХрд╛рд░реА рдирдпрд╛рдБ рдирд┐рдпрдорд╣рд░реВ рдердкреНрди рдмрд┐рд░реНрд╕рд┐рдпреМрдВ, рдЕрдм рддреНрдпрд╕реЛ рдЧрд░реМрдВред

рдорд╛рдерд┐рдХреЛ рдЕрдШрд┐рд▓реНрд▓реЛ рдЪрд░рдгрд╣рд░реВ рджреЛрд╣реЛрд░реНрдпрд╛рдЙрдиреБрд╣реЛрд╕реН:
рдХ) рдЙрдкрд╕рд░реНрдЧ "рдХрд╕реНрдЯрдо-рд╕рд╛/" рдХреЛ рд▓рд╛рдЧреА рдПрдХ рд╕рдорд╛рди рдиреАрддрд┐ рдмрдирд╛рдЙрдиреБрд╣реЛрд╕реНред
рдЦ) рднреВрдорд┐рдХрд╛ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН, рдпрд╕рд▓рд╛рдИ "рдЕрдиреБрдХреВрд▓-рд╕рд╛-рднреВрдорд┐рдХрд╛" рднрдиреНрдиреБрд╣реЛрд╕реНред
рдЧ) рднреВрдорд┐рдХрд╛рдорд╛ рдиреАрддрд┐ рд╕рдВрд▓рдЧреНрди рдЧрд░реНрдиреБрд╣реЛрд╕реНред

  • рдирд┐рдпрдо-рдмрд╛рдЗрдиреНрдбрд┐рдЩ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН (cli/api рдмрд╛рдЯ рдорд╛рддреНрд░ рд╕рдореНрднрд╡)ред рдЪрдпрдирдХрд░реНрддрд╛ рдЭрдгреНрдбрд╛рдХреЛ рдлрд░рдХ рдЕрд░реНрдерд▓рд╛рдИ рдзреНрдпрд╛рди рджрд┐рдиреБрд╣реЛрд╕реНред

consul acl binding-rule create 
-method=auth-method-skywiz-consul-poc 
-bind-type=role 
-bind-name='custom-sa-role' 
-selector='serviceaccount.name=="custom-sa"'

  • "poc-ubuntu-custom-sa" рдХрдиреНрдЯреЗрдирд░рдмрд╛рдЯ рдлреЗрд░рд┐ рд▓рдЧрдЗрди рдЧрд░реНрдиреБрд╣реЛрд╕реНред рд╕рдлрд▓рддрд╛!
  • рдЕрдиреБрдХреВрд▓рди-рд╕рд╛/ рдХреБрдЮреНрдЬреА рдорд╛рд░реНрдЧрдорд╛ рд╣рд╛рдореНрд░реЛ рдкрд╣реБрдБрдЪ рдЬрд╛рдБрдЪ рдЧрд░реНрдиреБрд╣реЛрд╕реНред

curl 
consul-ds-client.default.svc.cluster.local/v1/kv/custom-sa/test_key --header тАЬX-Consul-Token: <SecretID>тАЭ

  • рддрдкрд╛рдЗрдБ рдпреЛ рдкрдирд┐ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рдХрд┐ рдпреЛ рдЯреЛрдХрдирд▓реЗ "custom-ns/" рдорд╛ kv рдорд╛ рдкрд╣реБрдБрдЪ рдкреНрд░рджрд╛рди рдЧрд░реНрджреИрдиред "custom-sa" рдЙрдкрд╕рд░реНрдЧ "custom-ns" рд▓рд╛рдИ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдЧрд░реЗрдкрдЫрд┐ рдорд╛рддреНрд░ рдорд╛рдерд┐рдХреЛ рдЖрджреЗрд╢ рджреЛрд╣реЛрд░реНрдпрд╛рдЙрдиреБрд╣реЛрд╕реНред
    рдЕрдиреБрдорддрд┐ рдЕрд╕реНрд╡реАрдХреГрддред

рдУрднрд░рд▓реЗ рдЙрджрд╛рд╣рд░рдг:

  • рдпреЛ рдиреЛрдЯ рдЧрд░реНрди рд▓рд╛рдпрдХ рдЫ рдХрд┐ рд╕рдмреИ рдирд┐рдпрдо-рдмрд╛рдзреНрдпрдХрд╛рд░реА рдореНрдпрд╛рдкрд┐рдЩрд╣рд░реВ рдпреА рдЕрдзрд┐рдХрд╛рд░рд╣рд░реВрд╕рдБрдЧ рдЯреЛрдХрдирдорд╛ рдердкрд┐рдиреЗрдЫрдиреНред
  • рд╣рд╛рдореНрд░реЛ рдХрдиреНрдЯреЗрдирд░ "poc-ubuntu-custom-sa" рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдиреЗрдорд╕реНрдкреЗрд╕рдорд╛ рдЫ - рддреНрдпрд╕реИрд▓реЗ рдпрд╕рд▓рд╛рдИ рдлрд░рдХ рдирд┐рдпрдо-рдмрд╛рдЗрдиреНрдбрд┐рдЩрдХрд╛ рд▓рд╛рдЧрд┐ рдкреНрд░рдпреЛрдЧ рдЧрд░реМрдВред
  • рдЕрдШрд┐рд▓реНрд▓реЛ рдЪрд░рдгрд╣рд░реВ рджреЛрд╣реЛрд░реНрдпрд╛рдЙрдиреБрд╣реЛрд╕реН:
    рдХ) "рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд/" рдХреБрдЮреНрдЬреА рдЙрдкрд╕рд░реНрдЧрдХреЛ рд▓рд╛рдЧрд┐ рд╕рдорд╛рди рдиреАрддрд┐ рдмрдирд╛рдЙрдиреБрд╣реЛрд╕реНред
    рдЦ) рднреВрдорд┐рдХрд╛ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН, рдпрд╕рд▓рд╛рдИ "рдбрд┐рдлрд▓реНрдЯ-рдПрдирдПрд╕-рд░реЛрд▓" рдирд╛рдо рджрд┐рдиреБрд╣реЛрд╕реН
    рдЧ) рднреВрдорд┐рдХрд╛рдорд╛ рдиреАрддрд┐ рд╕рдВрд▓рдЧреНрди рдЧрд░реНрдиреБрд╣реЛрд╕реНред
  • рдирд┐рдпрдо-рдмрд╛рдЗрдиреНрдбрд┐рдЩ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН (cli/api рдмрд╛рдЯ рдорд╛рддреНрд░ рд╕рдореНрднрд╡)

consul acl binding-rule create 
-method=auth-method-skywiz-consul-poc 
-bind-type=role 
-bind-name='default-ns-role' 
-selector='serviceaccount.namespace=="default"'

  • рд╣рд╛рдореНрд░реЛ "poc-ubuntu-custom-sa" рдХрдиреНрдЯреЗрдирд░рдорд╛ рдлрд░реНрдХрдиреБрд╣реЛрд╕реН рд░ "default/" kv рдорд╛рд░реНрдЧрдорд╛ рдкрд╣реБрдБрдЪ рдЧрд░реНрдиреЗ рдкреНрд░рдпрд╛рд╕ рдЧрд░реНрдиреБрд╣реЛрд╕реНред
  • рдЕрдиреБрдорддрд┐ рдЕрд╕реНрд╡реАрдХреГрддред
    рддрдкрд╛рдЗрдБ ACL > рдЯреЛрдХрди рдЕрдиреНрддрд░реНрдЧрдд UI рдорд╛ рдкреНрд░рддреНрдпреЗрдХ рдЯреЛрдХрдирдХреЛ рд▓рд╛рдЧрд┐ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдкреНрд░рдорд╛рдгрд╣рд░реВ рд╣реЗрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред рддрдкрд╛рдИрдВрд▓реЗ рджреЗрдЦреНрди рд╕рдХреНрдиреБрд╣реБрдиреЗ рд░реВрдкрдорд╛, рд╣рд╛рдореНрд░реЛ рд╣рд╛рд▓рдХреЛ рдЯреЛрдХрдирдорд╛ рдПрдЙрдЯрд╛ рдорд╛рддреНрд░ "рдХрд╕реНрдЯрдо-рд╕рд╛-рднреВрдорд┐рдХрд╛" рдЬреЛрдбрд┐рдПрдХреЛ рдЫред рд╣рд╛рдореАрд▓реЗ рд╣рд╛рд▓ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рд░рд╣реЗрдХреЛ рдЯреЛрдХрди рд╣рд╛рдореАрд▓реЗ рд▓рдЧ рдЗрди рдЧрд░реНрджрд╛ рдЙрддреНрдкрдиреНрди рднрдПрдХреЛ рдерд┐рдпреЛ рд░ рддреНрдпрд╣рд╛рдБ рдПрдХ рдорд╛рддреНрд░ рдирд┐рдпрдо-рдмрд╛рдзреНрдпрдХрд╛рд░реА рдерд┐рдпреЛ рдЬреБрди рддреНрдпрд╕рдмреЗрд▓рд╛ рдореЗрд▓ рдЦрд╛рдиреНрдЫред рд╣рд╛рдореАрд▓реЗ рдлреЗрд░рд┐ рд▓рдЧрдЗрди рдЧрд░реНрдиреБрдкрд░реНрдЫ рд░ рдирдпрд╛рдБ рдЯреЛрдХрди рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрдкрд░реНрдЫред
  • рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдЧрд░реНрдиреБрд╣реЛрд╕реН рдХрд┐ рддрдкрд╛рдЗрдБ рджреБрдмреИ "рдХрд╕реНрдЯрдо-рд╕рд╛/" рд░ "рдбрд┐рдлрд▓реНрдЯ/" kv рдорд╛рд░реНрдЧрд╣рд░реВрдмрд╛рдЯ рдкрдвреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред
    рд╕рдлрд▓рддрд╛!
    рдпреЛ рдХрд┐рдирднрдиреЗ рд╣рд╛рдореНрд░реЛ "poc-ubuntu-custom-sa" рд▓реЗ "custom-sa" рд░ "default-ns" рдирд┐рдпрдо рдмрд╛рдЗрдиреНрдбрд┐рдЩрд╕рдБрдЧ рдореЗрд▓ рдЦрд╛рдиреНрдЫред

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

TTL рдЯреЛрдХрди mgmt?

рдпрд╕ рд▓реЗрдЦрдирдХреЛ рд╕рдордпрдорд╛, рдпрд╕ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд╡рд┐рдзрд┐рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрдиреНрди рдЯреЛрдХрдирд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ TTL рдирд┐рд░реНрдзрд╛рд░рдг рдЧрд░реНрдиреЗ рдХреБрдиреИ рдПрдХреАрдХреГрдд рддрд░рд┐рдХрд╛ рдЫреИрдиред рдпреЛ рдХрдиреНрд╕реБрд▓ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рд╕реНрд╡рдЪрд╛рд▓рди рдкреНрд░рджрд╛рди рдЧрд░реНрди рдХреЛ рд▓рд╛рдЧреА рдПрдХ рд╢рд╛рдирджрд╛рд░ рдЕрд╡рд╕рд░ рд╣реБрдиреЗрдЫред

TTL рд╕рдБрдЧ рдореНрдпрд╛рдиреБрдЕрд▓ рд░реВрдкрдорд╛ рдЯреЛрдХрди рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреЗ рд╡рд┐рдХрд▓реНрдк рдЫ:

  • https://www.consul.io/docs/acl/acl-system.html#acl-tokens
    рдореНрдпрд╛рдж рд╕рдХрд┐рдиреЗ рд╕рдордп - рдпреЛ рдЯреЛрдХрди рд░рджреНрдж рдЧрд░рд┐рдиреЗ рд╕рдордпред (рд╡реИрдХрд▓реНрдкрд┐рдХ; рдХрдиреНрд╕реБрд▓ рез.рел.реж рдорд╛ рдердкрд┐рдПрдХреЛ)
  • рдореНрдпрд╛рдиреБрдЕрд▓ рд╕рд┐рд░реНрдЬрдирд╛/рдЕрдкрдбреЗрдЯрдХреЛ рд▓рд╛рдЧрд┐ рдорд╛рддреНрд░ рдЕрд╡рд╕реНрдерд┐рдд рдЫ https://www.consul.io/api/acl/tokens.html#expirationtime

рдЖрд╢рд╛ рдЫ рдирд┐рдХрдЯ рднрд╡рд┐рд╖реНрдпрдорд╛ рд╣рд╛рдореА рдХрд╕рд░реА рдЯреЛрдХрдирд╣рд░реВ рдЙрддреНрдкрдиреНрди рд╣реБрдиреНрдЫрдиреН (рдкреНрд░рддрд┐ рдирд┐рдпрдо рд╡рд╛ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд╡рд┐рдзрд┐) рдирд┐рдпрдиреНрддреНрд░рдг рдЧрд░реНрди рд░ TTL рдердкреНрди рд╕рдХреНрд╖рдо рд╣реБрдиреЗрдЫреМрдВред

рддрдм рд╕рдореНрдо, рдпреЛ рд╕реБрдЭрд╛рд╡ рджрд┐рдЗрдиреНрдЫ рдХрд┐ рддрдкрд╛рдЗрдБ рддрдкрд╛рдЗрдБрдХреЛ рддрд░реНрдХ рдорд╛ рд▓рдЧрдЖрдЙрдЯ рдЕрдиреНрддреНрдп рдмрд┐рдиреНрджреБ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрд╣реЛрд╕реНред

рд╣рд╛рдореНрд░реЛ рдмреНрд▓рдЧрдорд╛ рдЕрдиреНрдп рд▓реЗрдЦрд╣рд░реВ рдкрдирд┐ рдкрдвреНрдиреБрд╣реЛрд╕реН:

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

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