рддреНрдпреЛ рд╕рд╣рд┐ рд╣реЛ, рд░рд┐рд▓рд┐рдЬ рдкрдЫрд┐
рдпрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓рдорд╛ рд╣рд╛рдореА рдЪрд░рдгрдмрджреНрдз рд░реВрдкрдорд╛ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреЗрдЫреМрдВ
рд╕рд┐рдВрд╣рд╛рд╡рд▓реЛрдХрди
рдпрджрд┐ рд╣рд╛рдореА рдЬрд╛рдиреНрдЫреМрдВ
рд░реЗрдЦрд╛рдЪрд┐рддреНрд░ рез: рдХрдиреНрд╕реБрд▓ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд╡рд┐рдзрд┐рдХреЛ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╕рд┐рдВрд╣рд╛рд╡рд▓реЛрдХрди
рднрд┐рддреНрд░ рд╣реЗрд░реМрдВ
рдЕрд╡рд╢реНрдп, рддреНрдпрд╣рд╛рдБ рдЙрдкрдпреЛрдЧреА рдЬрд╛рдирдХрд╛рд░реА рдЫ, рддрд░ рд╡рд╛рд╕реНрддрд╡рдорд╛ рдпреЛ рд╕рдмреИ рдХрд╕рд░реА рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗ рднрдиреНрдиреЗ рдмрд╛рд░реЗ рдХреБрдиреИ рдЧрд╛рдЗрдб рдЫреИрдиред рддреНрдпрд╕реЛрднрдП, рдХреБрдиреИ рдкрдирд┐ рд╕рдордЭрджрд╛рд░ рд╡реНрдпрдХреНрддрд┐рд▓реЗ рдЬрд╕реНрддреИ, рддрдкрд╛рдЗрдБ рдорд╛рд░реНрдЧрджрд░реНрд╢рдирдХреЛ рд▓рд╛рдЧрд┐ рдЗрдиреНрдЯрд░рдиреЗрдЯрдХреЛ рдЦреЛрдЬреА рдЧрд░реНрдиреБрд╣реБрдиреНрдЫред рд░ рддреНрдпрд╕рдкрдЫрд┐ ... рддрдкрд╛рдИрдВ рдЕрд╕рдлрд▓ред рдпрд╕реНрддреЛ рд╣реБрдиреНрдЫред рдпрд╕рд▓рд╛рдИ рдареАрдХ рдЧрд░реМрдВред
рд╣рд╛рдореА рд╣рд╛рдореНрд░реЛ POC рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рдЕрдЧрд╛рдбрд┐ рдмрдвреНрдиреБ рдЕрдШрд┐, рдХрдиреНрд╕реБрд▓рдХреЛ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд╡рд┐рдзрд┐рд╣рд░реВ (рдЪрд┐рддреНрд░ рез) рдХреЛ рд╕рд┐рдВрд╣рд╛рд╡рд▓реЛрдХрдирдорд╛ рдлрд░реНрдХреМрдВ рд░ рдХреБрдмрд░реНрдиреЗрдЯреНрд╕рдХреЛ рд╕рдиреНрджрд░реНрднрдорд╛ рдпрд╕рд▓рд╛рдИ рдкрд░рд┐рд╖реНрдХреГрдд рдЧрд░реМрдВред
рд╡рд╛рд╕реНрддреБрдХрд▓рд╛
рдпрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓рдорд╛, рд╣рд╛рдореА рдХрдиреНрд╕реБрд▓рд░ рдХреНрд▓рд╛рдЗрдиреНрдЯ рд╕реНрдерд╛рдкрдирд╛ рднрдПрдХреЛ рдХреБрдмреЗрд░рдиреЗрдЯ рдХреНрд▓рд╕реНрдЯрд░рд╕рдБрдЧ рдХреБрд░рд╛рдХрд╛рдиреА рдЧрд░реНрдиреЗ рдЫреБрдЯреНрдЯреИ рдореЗрд╕рд┐рдирдорд╛ рдХрдиреНрд╕реБрд▓ рд╕рд░реНрднрд░ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреЗрдЫреМрдВред рддреНрдпрд╕рдкрдЫрд┐ рд╣рд╛рдореА рдкреЛрдбрдорд╛ рд╣рд╛рдореНрд░реЛ рдбрдореА рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреЗрдЫреМрдВ рд░ рд╣рд╛рдореНрд░реЛ рдХрдиреНрд╕реБрд▓ рдХреБрдЮреНрдЬреА/рдореВрд▓реНрдп рд╕реНрдЯреЛрд░рдмрд╛рдЯ рдкрдвреНрдирдХреЛ рд▓рд╛рдЧрд┐ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░рд┐рдПрдХреЛ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд╡рд┐рдзрд┐ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗрдЫреМрдВред
рддрд▓рдХреЛ рд░реЗрдЦрд╛рдЪрд┐рддреНрд░рд▓реЗ рд╣рд╛рдореАрд▓реЗ рдпрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓рдорд╛ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреЗ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛рдХреЛ рд╡рд┐рд╡рд░рдг рджрд┐рдиреНрдЫ, рд╕рд╛рдереИ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд╡рд┐рдзрд┐рдХреЛ рдкрдЫрд╛рдбрд┐рдХреЛ рддрд░реНрдХ, рдЬреБрди рдкрдЫрд┐ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдЧрд░рд┐рдиреЗрдЫред
рд░реЗрдЦрд╛рдЪрд┐рддреНрд░ реи: рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд╡рд┐рдзрд┐ рд╕рд┐рдВрд╣рд╛рд╡рд▓реЛрдХрди
рджреНрд░реБрдд рдиреЛрдЯ: рдХрдиреНрд╕реБрд▓ рд╕рд░реНрднрд░рд▓реЗ рдпреЛ рдХрд╛рдо рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ рдХреБрдмреЗрд░рдиреЗрдЯ рдХреНрд▓рд╕реНрдЯрд░ рдмрд╛рд╣рд┐рд░ рдмрд╕реНрдиреБ рдкрд░реНрджреИрдиред рддрд░ рд╣реЛ, рдЙрд╕рд▓реЗ рдпреЛ рддрд░рд┐рдХрд╛ рд░ рддреНрдпреЛ рдЧрд░реНрди рд╕рдХреНрдЫред
рддреНрдпрд╕реЛрднрдП, рдХрдиреНрд╕реБрд▓ рд╕рд┐рдВрд╣рд╛рд╡рд▓реЛрдХрди рд░реЗрдЦрд╛рдЪрд┐рддреНрд░ (рдЪрд┐рддреНрд░ рез) рд▓рд┐рдПрд░ рдпрд╕рдорд╛ рдХреБрдмреЗрд░рдиреЗрдЯрд╣рд░реВ рд▓рд╛рдЧреВ рдЧрд░реНрджреИ, рд╣рд╛рдореАрд▓реЗ рдорд╛рдерд┐рдХреЛ рд░реЗрдЦрд╛рдЪрд┐рддреНрд░ (рдЪрд┐рддреНрд░ реи) рдкрд╛рдЙрдБрдЫреМрдВ, рд░ рдпрд╣рд╛рдБ рддрд░реНрдХ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдЫ:
- рдкреНрд░рддреНрдпреЗрдХ рдкреЛрдбрдорд╛ рдПрдХ рд╕реЗрд╡рд╛ рдЦрд╛рддрд╛ рд╕рдВрд▓рдЧреНрди рд╣реБрдиреЗрдЫ рдЬрд╕рдорд╛ рдПрдХ JWT рдЯреЛрдХрди рдЙрддреНрдкрдиреНрди рд╣реБрдиреНрдЫ рд░ Kubernetes рджреНрд╡рд╛рд░рд╛ рдЬреНрдЮрд╛рдд рд╣реБрдиреНрдЫред рдпреЛ рдЯреЛрдХрди рдкрдирд┐ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд░реВрдкрдорд╛ рдкреЛрдбрдорд╛ рд╕рдореНрдорд┐рд▓рд┐рдд рд╣реБрдиреНрдЫред
- рд╣рд╛рдореНрд░реЛ рдПрдкреНрд▓рд┐рдХреЗрд╕рди рд╡рд╛ рдкреЛрдб рднрд┐рддреНрд░рдХреЛ рд╕реЗрд╡рд╛рд▓реЗ рд╣рд╛рдореНрд░реЛ рдХрдиреНрд╕реБрд▓ рдХреНрд▓рд╛рдЗрдиреНрдЯрд▓рд╛рдИ рд▓рдЧрдЗрди рдЖрджреЗрд╢ рд╕реБрд░реБ рдЧрд░реНрдЫред рд▓рдЧрдЗрди рдЕрдиреБрд░реЛрдзрдорд╛ рд╣рд╛рдореНрд░реЛ рдЯреЛрдХрди рд░ рдирд╛рдо рдкрдирд┐ рд╕рдорд╛рд╡реЗрд╢ рд╣реБрдиреЗрдЫ рд╡рд┐рд╢реЗрд╖ рд░реВрдкрдорд╛ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░рд┐рдПрдХреЛ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд╡рд┐рдзрд┐ (Kubernetes рдкреНрд░рдХрд╛рд░)ред рдпреЛ рдЪрд░рдг #2 рдХрдиреНрд╕реБрд▓ рд░реЗрдЦрд╛рдЪрд┐рддреНрд░ (рдпреЛрдЬрдирд╛ 1) рдХреЛ рдЪрд░рдг 1 рд╕рдБрдЧ рдореЗрд▓ рдЦрд╛рдиреНрдЫред
- рд╣рд╛рдореНрд░реЛ рдХрдиреНрд╕реБрд▓ рдЧреНрд░рд╛рд╣рдХрд▓реЗ рдпрд╕ рдЕрдиреБрд░реЛрдзрд▓рд╛рдИ рд╣рд╛рдореНрд░реЛ рдХрдиреНрд╕реБрд▓ рд╕рд░реНрднрд░рдорд╛ рдлрд░реНрд╡рд╛рд░реНрдб рдЧрд░реНрдиреЗрдЫред
- рдЬрд╛рджреВ! рдпреЛ рдЬрд╣рд╛рдБ рдХрдиреНрд╕реБрд▓ рд╕рд░реНрднрд░рд▓реЗ рдЕрдиреБрд░реЛрдзрдХреЛ рдкреНрд░рд╛рдорд╛рдгрд┐рдХрддрд╛ рдкреНрд░рдорд╛рдгрд┐рдд рдЧрд░реНрджрдЫ, рдЕрдиреБрд░реЛрдзрдХреЛ рдкрд╣рд┐рдЪрд╛рдирдХреЛ рдмрд╛рд░реЗрдорд╛ рдЬрд╛рдирдХрд╛рд░реА рд╕рдЩреНрдХрд▓рди рдЧрд░реНрджрдЫ рд░ рдХреБрдиреИ рдкрдирд┐ рд╕рдореНрдмрдиреНрдзрд┐рдд рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдирд┐рдпрдорд╣рд░реВрд╕рдБрдЧ рддреБрд▓рдирд╛ рдЧрд░реНрджрдЫред рдпреЛ рдЪрд┐рддреНрд░рдг рдЧрд░реНрди рддрд▓ рдЕрд░реНрдХреЛ рд░реЗрдЦрд╛рдЪрд┐рддреНрд░ рдЫред рдпреЛ рдЪрд░рдг рдХрдиреНрд╕реБрд▓ рд╕рд┐рдВрд╣рд╛рд╡рд▓реЛрдХрди рд░реЗрдЦрд╛рдЪрд┐рддреНрд░ (рдЪрд┐рддреНрд░ 3) рдХреЛ рдЪрд░рдг 4, 5 рд░ 1 рд╕рдБрдЧ рдореЗрд▓ рдЦрд╛рдиреНрдЫред
- рд╣рд╛рдореНрд░реЛ рдХрдиреНрд╕реБрд▓ рд╕рд░реНрднрд░рд▓реЗ рдЕрдиреБрд░реЛрдзрдХрд░реНрддрд╛рдХреЛ рдкрд╣рд┐рдЪрд╛рдирдХреЛ рд╕рдиреНрджрд░реНрднрдорд╛ рд╣рд╛рдореНрд░реЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд╡рд┐рдзрд┐ рдирд┐рдпрдорд╣рд░реВ (рдЬрд╕рд▓рд╛рдИ рд╣рд╛рдореАрд▓реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЧрд░реЗрдХрд╛ рдЫреМрдВ) рдЕрдиреБрд╕рд╛рд░ рдЕрдиреБрдорддрд┐рд╕рд╣рд┐рдд рдХрдиреНрд╕реБрд▓ рдЯреЛрдХрди рдЙрддреНрдкрдиреНрди рдЧрд░реНрджрдЫред рддреНрдпрд╕рдкрдЫрд┐ рддреНрдпреЛ рдЯреЛрдХрди рдлрд┐рд░реНрддрд╛ рдкрдард╛рдЙрдиреЗрдЫред рдпреЛ рдХрдиреНрд╕реБрд▓ рд░реЗрдЦрд╛рдЪрд┐рддреНрд░ (рдЪрд┐рддреНрд░ 6) рдХреЛ рдЪрд░рдг 1 рд╕рдБрдЧ рдореЗрд▓ рдЦрд╛рдиреНрдЫред
- рд╣рд╛рдореНрд░реЛ рдХрдиреНрд╕реБрд▓ рдЧреНрд░рд╛рд╣рдХрд▓реЗ рдЕрдиреБрд░реЛрдз рдЧрд░реНрдиреЗ рдЖрд╡реЗрджрди рд╡рд╛ рд╕реЗрд╡рд╛рдорд╛ рдЯреЛрдХрди рдлрд░реНрд╡рд╛рд░реНрдб рдЧрд░реНрдЫред
рд╣рд╛рдореНрд░реЛ рдПрдкреНрд▓рд┐рдХреЗрд╕рди рд╡рд╛ рд╕реЗрд╡рд╛рд▓реЗ рдЕрдм рдпреЛ рдХрдиреНрд╕реБрд▓ рдЯреЛрдХрди рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрдЫ рд╣рд╛рдореНрд░реЛ рдХрдиреНрд╕реБрд▓ рдбрд╛рдЯрд╛рд╕рдБрдЧ рдХреБрд░рд╛рдХрд╛рдиреА рдЧрд░реНрди, рдЯреЛрдХрдирдХреЛ рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░рд▓реЗ рдирд┐рд░реНрдзрд╛рд░рдг рдЧрд░реЗ рдЕрдиреБрд╕рд╛рд░ред
рдЬрд╛рджреВ рдЦреБрд▓реНрдпреЛ!
рддрдкрд╛рдИрдВрд╣рд░реВ рдордзреНрдпреЗ рдЬреЛ рдЯреЛрдкреАрдмрд╛рдЯ рдПрдЙрдЯрд╛ рдЦрд░рд╛рдпреЛ рдорд╛рддреНрд░ рдЦреБрд╕реА рд╣реБрдиреБрд╣реБрдиреНрди рд░ рдпрд╕рд▓реЗ рдХрд╕рд░реА рдХрд╛рдо рдЧрд░реНрдЫ рднрдиреЗрд░ рдЬрд╛рдиреНрди рдЪрд╛рд╣рд╛рдиреБрд╣реБрдиреНрдЫ... рдорд▓рд╛рдИ "рддрдкрд╛рдИрд▓рд╛рдИ рдХрддрд┐ рдЧрд╣рд┐рд░реЛ рджреЗрдЦрд╛рдЙрдиреБрд╣реЛрд╕реН рдЦрд░рд╛рдпреЛ рдкреНрд╡рд╛рд▓"ред
рдкрд╣рд┐рд▓реЗ рдЙрд▓реНрд▓реЗрдЦ рдЧрд░рд┐рдП рдЕрдиреБрд╕рд╛рд░, рд╣рд╛рдореНрд░реЛ "рдЬрд╛рджреВ" рдЪрд░рдг (рдЪрд┐рддреНрд░ 2: рдЪрд░рдг 4) рдЬрд╣рд╛рдБ рдХрдиреНрд╕реБрд▓ рд╕рд░реНрднрд░рд▓реЗ рдЕрдиреБрд░реЛрдзрд▓рд╛рдИ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдЧрд░реНрджрдЫ, рдЕрдиреБрд░реЛрдз рдЬрд╛рдирдХрд╛рд░реА рд╕рдЩреНрдХрд▓рди рдЧрд░реНрджрдЫ, рд░ рдХреБрдиреИ рдкрдирд┐ рд╕рдореНрдмрдиреНрдзрд┐рдд рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдирд┐рдпрдорд╣рд░реВрд╕рдБрдЧ рддреБрд▓рдирд╛ рдЧрд░реНрджрдЫред рдпреЛ рдЪрд░рдг рдХрдиреНрд╕реБрд▓ рд╕рд┐рдВрд╣рд╛рд╡рд▓реЛрдХрди рд░реЗрдЦрд╛рдЪрд┐рддреНрд░ (рдЪрд┐рддреНрд░ 3) рдХреЛ рдЪрд░рдг 4, 5 рд░ 1 рд╕рдБрдЧ рдореЗрд▓ рдЦрд╛рдиреНрдЫред рддрд▓ рдПрдЙрдЯрд╛ рд░реЗрдЦрд╛рдЪрд┐рддреНрд░ (рдЪрд┐рддреНрд░ 3) рдЫ, рдЬрд╕рдХреЛ рдЙрджреНрджреЗрд╢реНрдп рд╡рд╛рд╕реНрддрд╡рдорд╛ рдХреЗ рднрдЗрд░рд╣реЗрдХреЛ рдЫ рднрдиреЗрд░ рд╕реНрдкрд╖реНрдЯ рд░реВрдкрдорд╛ рджреЗрдЦрд╛рдЙрдиреБ рд╣реЛред рд╣реБрдб рдореБрдирд┐ рд╡рд┐рд╢рд┐рд╖реНрдЯ Kubernetes рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд╡рд┐рдзрд┐ред
рд░реЗрдЦрд╛рдЪрд┐рддреНрд░ 3: рдЬрд╛рджреВ рдкреНрд░рдХрдЯ рднрдпреЛ!
- рд╕реБрд░реВрд╡рд╛рдд рдмрд┐рдиреНрджреБрдХреЛ рд░реВрдкрдорд╛, рд╣рд╛рдореНрд░реЛ рдХрдиреНрд╕реБрд▓ рдХреНрд▓рд╛рдЗрдиреНрдЯрд▓реЗ рд╣рд╛рдореНрд░реЛ рдХрдиреНрд╕реБрд▓ рд╕рд░реНрднрд░рдорд╛ рд▓рдЧрдЗрди рдЕрдиреБрд░реЛрдзрд▓рд╛рдИ Kubernetes рдЦрд╛рддрд╛ рдЯреЛрдХрди рд░ рдкрд╣рд┐рд▓реЗ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░рд┐рдПрдХреЛ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд╡рд┐рдзрд┐рдХреЛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрджрд╛рд╣рд░рдг рдирд╛рдордХреЛ рд╕рд╛рде рдлрд░реНрд╡рд╛рд░реНрдб рдЧрд░реНрджрдЫред рдпреЛ рдЪрд░рдг рдЕрдШрд┐рд▓реНрд▓реЛ рд╕рд░реНрдХрд┐рдЯ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдорд╛ рдЪрд░рдг 3 рд╕рдВрдЧ рдореЗрд▓ рдЦрд╛рдиреНрдЫред
- рдЕрдм рдХрдиреНрд╕реБрд▓ рд╕рд░реНрднрд░ (рд╡рд╛ рдиреЗрддрд╛) рд▓реЗ рдкреНрд░рд╛рдкреНрдд рдЯреЛрдХрдирдХреЛ рдкреНрд░рдорд╛рдгрд┐рдХрддрд╛ рдкреНрд░рдорд╛рдгрд┐рдд рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫред рддреНрдпрд╕рдХрд╛рд░рдг, рдпрд╕рд▓реЗ Kubernetes рдХреНрд▓рд╕реНрдЯрд░рд╕рдБрдЧ рдкрд░рд╛рдорд░реНрд╢ рдЧрд░реНрдиреЗрдЫ (рдХрдиреНрд╕рд▓ рдЧреНрд░рд╛рд╣рдХ рдорд╛рд░реНрдлрдд) рд░ рдЙрдкрдпреБрдХреНрдд рдЕрдиреБрдорддрд┐рд╣рд░реВрдХреЛ рд╕рд╛рдердорд╛, рд╣рд╛рдореА рдЯреЛрдХрди рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╣реЛ рд░ рдпреЛ рдХрд╕рдХреЛ рд╣реЛ рднрдиреЗрд░ рдкрддреНрддрд╛ рд▓рдЧрд╛рдЙрдиреЗрдЫреМрдВред
- рдкреБрд╖реНрдЯрд┐ рдЧрд░рд┐рдПрдХреЛ рдЕрдиреБрд░реЛрдз рддреНрдпрд╕рдкрдЫрд┐ рдХрдиреНрд╕реБрд▓ рдиреЗрддрд╛рд▓рд╛рдИ рдлрд┐рд░реНрддрд╛ рдЧрд░рд┐рдиреНрдЫ, рд░ рдХрдиреНрд╕реБрд▓ рд╕рд░реНрднрд░рд▓реЗ рд▓рдЧрдЗрди рдЕрдиреБрд░реЛрдз (рд░ рдХреБрдмреЗрд░рдиреЗрдЯ рдкреНрд░рдХрд╛рд░) рдмрд╛рдЯ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╛рдордХреЛ рд╕рд╛рде рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд╡рд┐рдзрд┐ рдЙрджрд╛рд╣рд░рдг рдЦреЛрдЬреНрдЫред
- рдХрдиреНрд╕реБрд▓ рдиреЗрддрд╛рд▓реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд╡рд┐рдзрд┐ рдЙрджрд╛рд╣рд░рдг (рдпрджрд┐ рдлреЗрд▓рд╛ рдкрд░реНрдпреЛ рднрдиреЗ) рдкрд╣рд┐рдЪрд╛рди рдЧрд░реНрджрдЫ рд░ рдпрд╕рдорд╛ рд╕рдВрд▓рдЧреНрди рдмрд╛рдзреНрдпрдХрд╛рд░реА рдирд┐рдпрдорд╣рд░реВрдХреЛ рд╕реЗрдЯ рдкрдвреНрдЫред рддреНрдпрд╕рдкрдЫрд┐ рдпрд╕рд▓реЗ рдпреА рдирд┐рдпрдорд╣рд░реВ рдкрдвреНрдЫ рд░ рдкреНрд░рдорд╛рдгрд┐рдд рдкрд╣рд┐рдЪрд╛рди рд╡рд┐рд╢реЗрд╖рддрд╛рд╣рд░реВрд╕рдБрдЧ рддреБрд▓рдирд╛ рдЧрд░реНрдЫред
- TA-dah! рдЕрдШрд┐рд▓реНрд▓реЛ рд╕рд░реНрдХрд┐рдЯ рд╡реНрдпрд╛рдЦреНрдпрд╛рдорд╛ рдЪрд░рдг 5 рдорд╛ рдЬрд╛рдиреБрд╣реЛрд╕реНред
рдирд┐рдпрдорд┐рдд рднрд░реНрдЪреБрдЕрд▓ рдореЗрд╕рд┐рдирдорд╛ рдХрдиреНрд╕рд▓-рд╕рд░реНрднрд░ рдЪрд▓рд╛рдЙрдиреБрд╣реЛрд╕реН
рдЕрдм рджреЗрдЦрд┐, рдо рдкреНрд░рд╛рдп: рдпреЛ POC рдХрд╕рд░реА рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреЗ рднрдиреНрдиреЗ рдмрд╛рд░реЗ рдирд┐рд░реНрджреЗрд╢рдирд╣рд░реВ рджрд┐рдиреЗрдЫреБ, рдкреНрд░рд╛рдпрдГ рдмреБрд▓реЗрдЯ рдкреЛрдЗрдиреНрдЯрд╣рд░реВрдорд╛, рдкреВрд░реНрдг рд╡рд╛рдХреНрдп рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдмрд┐рдирд╛ред рд╕рд╛рдереИ, рдкрд╣рд┐рд▓реЗ рдЙрд▓реНрд▓реЗрдЦ рдЧрд░рд┐рдПрдЭреИрдВ, рдо рд╕рдмреИ рдкреВрд░реНрд╡рд╛рдзрд╛рд░рд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди GCP рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗрдЫреБ, рддрд░ рддрдкрд╛рдИрдВрд▓реЗ рдЙрд╣реА рдкреВрд░реНрд╡рд╛рдзрд╛рд░ рдЕрд░реВ рдХрд╣рд┐рдБ рдкрдирд┐ рдмрдирд╛рдЙрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред
- рднрд░реНрдЪреБрдЕрд▓ рдореЗрд╕рд┐рди рд╕реБрд░реБ рдЧрд░реНрдиреБрд╣реЛрд╕реН (рдЙрджрд╛рд╣рд░рдг/рд╕рд░реНрднрд░)ред
- рдлрд╛рдпрд░рд╡рд╛рд▓рдХреЛ рд▓рд╛рдЧрд┐ рдирд┐рдпрдо рдмрдирд╛рдЙрдиреБрд╣реЛрд╕реН (AWS рдорд╛ рд╕реБрд░рдХреНрд╖рд╛ рд╕рдореВрд╣):
- рдо рдирд┐рдпрдо рд░ рдиреЗрдЯрд╡рд░реНрдХ рдЯреНрдпрд╛рдЧ рджреБрд╡реИрдорд╛ рд╕рдорд╛рди рдореЗрд╕рд┐рдирдХреЛ рдирд╛рдо рддреЛрдХреНрди рдЪрд╛рд╣рдиреНрдЫреБ, рдпрд╕ рдЕрд╡рд╕реНрдерд╛рдорд╛ "skywiz-consul-server-poc"ред
- рдЖрдлреНрдиреЛ рд╕реНрдерд╛рдиреАрдп рдХрдореНрдкреНрдпреБрдЯрд░рдХреЛ IP рдареЗрдЧрд╛рдирд╛ рдлреЗрд▓рд╛ рдкрд╛рд░реНрдиреБрд╣реЛрд╕реН рд░ рдпрд╕рд▓рд╛рдИ рд╕реНрд░реЛрдд IP рдареЗрдЧрд╛рдирд╛рд╣рд░реВрдХреЛ рд╕реВрдЪреАрдорд╛ рдердкреНрдиреБрд╣реЛрд╕реН рддрд╛рдХрд┐ рд╣рд╛рдореА рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдиреНрдЯрд░рдлреЗрд╕ (UI) рдкрд╣реБрдБрдЪ рдЧрд░реНрди рд╕рдХреНрдЫреМрдВред
- UI рдХреЛ рд▓рд╛рдЧрд┐ рдкреЛрд░реНрдЯ 8500 рдЦреЛрд▓реНрдиреБрд╣реЛрд╕реНред рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН рдХреНрд▓рд┐рдХ рдЧрд░реНрдиреБрд╣реЛрд╕реНред рд╣рд╛рдореА рдпреЛ рдлрд╛рдпрд░рд╡рд╛рд▓ рдлреЗрд░рд┐ рдЪрд╛рдБрдбреИ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрдиреЗрдЫреМрдВ [
рд▓рд┐рдЩреНрдХ ]. - рдЙрджрд╛рд╣рд░рдгрдорд╛ рдлрд╛рдпрд░рд╡рд╛рд▓ рдирд┐рдпрдо рдердкреНрдиреБрд╣реЛрд╕реНред рдХрдиреНрд╕реБрд▓ рд╕рд░реНрднрд░рдХреЛ VM рдбреНрдпрд╛рд╕рдмреЛрд░реНрдбрдорд╛ рдлрд░реНрдХрдиреБрд╣реЛрд╕реН рд░ рдиреЗрдЯрд╡рд░реНрдХ рдЯреНрдпрд╛рдЧ рдлрд┐рд▓реНрдбрдорд╛ "skywiz-consul-server-poc" рдердкреНрдиреБрд╣реЛрд╕реНред рдмрдЪрдд рдХреНрд▓рд┐рдХ рдЧрд░реНрдиреБрд╣реЛрд╕реНред
- рднрд░реНрдЪреБрдЕрд▓ рдореЗрд╕рд┐рдирдорд╛ рдХрдиреНрд╕реБрд▓ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН, рдпрд╣рд╛рдБ рдЬрд╛рдБрдЪ рдЧрд░реНрдиреБрд╣реЛрд╕реНред рдпрд╛рдж рдЧрд░реНрдиреБрд╣реЛрд╕реН рддрдкрд╛рдИрд▓рд╛рдИ рдХрдиреНрд╕реБрд▓ рд╕рдВрд╕реНрдХрд░рдг тЙе рез.рел рдЪрд╛рд╣рд┐рдиреНрдЫ [рд▓рд┐рдЩреНрдХ]
- рдПрдХрд▓ рдиреЛрдб рдХрдиреНрд╕реБрд▓ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реМрдВ - рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдЫред
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" рднрдиреНрдиреЗрдЫреМрдВред
- рд╕рд╛рдЗрдб рдиреЛрдЯрдХреЛ рд░реВрдкрдорд╛, рдпрд╣рд╛рдБ рдПрдЙрдЯрд╛ рд░рд╛рдореНрд░реЛ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдЫ рдЬреБрди рдореИрд▓реЗ рдХрдиреНрд╕реБрд▓ рдЬрдбрд╛рдирд╕рдБрдЧ 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 рдкреЛрд░реНрдЯрд╣рд░реВ рдЦреЛрд▓реНрдиреБрд╣реЛрд╕реНред
- Consul UI рдорд╛ рдЬрд╛рдиреБрд╣реЛрд╕реН рд░ рдХреЗрд╣рд┐ рдорд┐рдиреЗрдЯ рдкрдЫрд┐ рддрдкрд╛рдИрдВрд▓реЗ рдиреЛрдбреНрд╕ рдЯреНрдпрд╛рдмрдорд╛ рд╣рд╛рдореНрд░реЛ рдХреНрд▓рд╕реНрдЯрд░ рджреЗрдЦреНрдиреБрд╣реБрдиреЗрдЫред
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) рд░ рддрдкрд╛рдИрдХреЛ рд░реЛрдЬрд╛рдЗрдХреЛ рдорд╛рдиред рдирдпрд╛рдБ рдкреНрд░рдореБрдЦ рдорд╛рд░реНрдЧрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдЙрдкрдпреБрдХреНрдд рдиреАрддрд┐ рд░ рднреВрдорд┐рдХрд╛рд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реНред рд╣рд╛рдореА рдкрдЫрд┐ рдмрд╛рдЗрдиреНрдбрд┐рдЩ рдЧрд░реНрдиреЗрдЫреМрдВред
рдЕрдиреБрдХреВрд▓рди рдиреЗрдорд╕реНрдкреЗрд╕ рдкрд░реАрдХреНрд╖рдг:
- рд╣рд╛рдореНрд░реЛ рдЖрдлреНрдиреИ рдирд╛рдо рд╕реНрдерд╛рди рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реМрдВ:
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 рдердкреНрди рд╕рдХреНрд╖рдо рд╣реБрдиреЗрдЫреМрдВред
рддрдм рд╕рдореНрдо, рдпреЛ рд╕реБрдЭрд╛рд╡ рджрд┐рдЗрдиреНрдЫ рдХрд┐ рддрдкрд╛рдЗрдБ рддрдкрд╛рдЗрдБрдХреЛ рддрд░реНрдХ рдорд╛ рд▓рдЧрдЖрдЙрдЯ рдЕрдиреНрддреНрдп рдмрд┐рдиреНрджреБ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрд╣реЛрд╕реНред
https://www.consul.io/api/acl/acl.html#logout-from-auth-method https://www.consul.io/docs/acl/acl-auth-methods.html#overall-login-process
рд╣рд╛рдореНрд░реЛ рдмреНрд▓рдЧрдорд╛ рдЕрдиреНрдп рд▓реЗрдЦрд╣рд░реВ рдкрдирд┐ рдкрдвреНрдиреБрд╣реЛрд╕реН:
рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдмрд┐рдирд╛ рдХреНрд▓рд┐рдХрд╣рд╛рдЙрд╕рдмрд╛рдЯ рдХреНрд▓рд┐рдХрд╣рд╛рдЙрд╕рдорд╛ рдкреНрд░рд╛рдзрд┐рдХрд░рдгрдХреЛ рд╕рд╛рде рдорд╛рдЗрдЧреНрд░реЗрд╕рдирд▓реЗ рдХреЗ рдирд┐рдореНрддреНрдпрд╛рдпреЛ? GitLab CI/CD рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдзреЗрд░реИ рдкрд╛рдЗрдкрд▓рд╛рдЗрдирд╣рд░реВ рдХрд╕рд░реА рдЪрд▓рд╛рдЙрдиреЗ рдбрдХрд░ рдЫрд╡рд┐рд╣рд░реВ рд╕рдВрдХреБрдЪрд┐рдд рдЧрд░реНрди рддреАрди рд╕рд░рд▓ рдЪрд╛рд▓рд╣рд░реВ K8S рдХреЛ рд▓рд╛рдЧрд┐ рдкреНрд░рд╡реЗрд╢ рдирд┐рдпрдиреНрддреНрд░рдХрдХреЛ рд░реВрдкрдорд╛ Traefik рд╡рд┐рд╖рдо рд╡реЗрдм рдкрд░рд┐рдпреЛрдЬрдирд╛рд╣рд░реВрдХреЛ рдареВрд▓реЛ рд╕рдВрдЦреНрдпрд╛рдХреЛ рдмреНрдпрд╛рдХрдЕрдк Redmine рдХреЛ рд▓рд╛рдЧреА рдЯреЗрд▓реАрдЧреНрд░рд╛рдо рдмреЛрдЯред рдЖрдлреНрдиреЛ рд░ рдЕрд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдЬреАрд╡рди рдХрд╕рд░реА рд╕рд░рд▓ рдмрдирд╛рдЙрдиреЗ
рд╕реНрд░реЛрдд: www.habr.com