рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕: рдПрдХ рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рдбреЙрдХрд░ рдЫрд╡рд┐рдпреЛрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг

рдЖрдк рдбрдВрдХрд░ рдХреЗ рдмрд┐рдирд╛ рдХрд░рддреЗ рд╣реБрдП рдбрдВрдХрд░ рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдиреАрдХреЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдЗрдП рдЬрд╛рдиреЗрдВ рдХрд┐ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдФрд░ рдХреБрдмреЗрд░рдиреЗрдЯ рд╕рдореВрд╣ рдореЗрдВ рдХрд╛рдЗрдХреЛ рдХреИрд╕реЗ рдЪрд▓рд╛рдпрд╛ рдЬрд╛рдПред


рдЫрд╡рд┐
рдЖрдЧреЗ рдПрдХ рдорд▓реНрдЯреА-рдмреБрдХ рд╣реЛрдЧреА


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


рд╣рдо Docker-in-Docker рдФрд░ рдЗрд╕рдХреЗ рд╡реИрдХрд▓реНрдкрд┐рдХ, kaniko рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреА рдмрд╛рдд рдХрд░реЗрдВрдЧреЗ, рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдЖрдк Docker рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ Docker рдЪрд┐рддреНрд░ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЕрдВрдд рдореЗрдВ, рд╣рдо рд╕реАрдЦреЗрдВрдЧреЗ рдХрд┐ рдХреБрдмреЗрд░рдиреЗрдЯ рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рдЫрд╡рд┐ рдЕрд╕реЗрдВрдмрд▓реА рдХреЛ рдХреИрд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛рдПред


рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдХрд╛ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рд╡рд░рдг "рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдЗрди рдПрдХреНрд╢рди" ("рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдЗрди рдПрдХреНрд╢рди") рдкреБрд╕реНрддрдХ рдореЗрдВ рд╣реИ ред


рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЙрджрд╛рд╣рд░рдг


рдореВрд▓ рд╡реЗрдм рдореЗрдВ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХрдИ рдирд┐рдЬреА рдбреЙрдХрд░ рдЫрд╡рд┐рдпрд╛рдВ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдХрд╣реАрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП рд╣рдордиреЗ рдПрдХ рдирд┐рдЬреА рдбреЙрдХрд░ рд╣рдм рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ред рдкрдмреНрд▓рд┐рдХ рдбреЙрдХрд░ рд╣рдм рдореЗрдВ рджреЛ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рд╣рдо рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВред


рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рдПрдХ рдХрддрд╛рд░ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рдереЗ рдЬреЛ рдбреЛрдирд░ рдЗрдореЗрдЬ рдХреЛ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдореЗрдВ рдЕрддреБрд▓реНрдп рд░реВрдк рд╕реЗ рдПрдХрддреНрд░рд┐рдд рдХрд░реЗрдЧреАред рджреВрд╕рд░реЗ, рдПрдХрддреНрд░ рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рдирд┐рдЬреА рдбреЛрдХрд░ рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдореЗрдВ рднреЗрдЬрдиреЗ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд░реЗрдВред


рдЖрдорддреМрд░ рдкрд░, рдбреЙрдХрд░ рд╕реАрдПрд▓рдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕реАрдзреЗ рдЗрди рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:


$ docker build ... $ docker push ... 

рд▓реЗрдХрд┐рди рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ, рд╣рдо рдЫреЛрдЯреЗ рдФрд░ рдкреНрд░рд╛рдердорд┐рдХ рд▓рд┐рдирдХреНрд╕ рдЫрд╡рд┐рдпреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХрдВрдЯреЗрдирд░реЛрдВ рдХреА рдореЗрдЬрдмрд╛рдиреА рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рдбреЛрдХрд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдирд┐рд╣рд┐рдд рдирд╣реАрдВ рд╣реИред рдЕрдЧрд░ рдЕрдм рд╣рдо рдбреЙрдХрдЯрд░ (рдЬреИрд╕реЗ docker build... ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рд╕реА рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рдбреЛрдХрд░-рдЗрди-рдбреЙрдХрд░ рдЬреИрд╕реА рдХрд┐рд╕реА рдЪреАрдЬ рдХреА рдЬрд░реВрд░рдд рд╣реИред


рдбреЙрдХрдЯрд░-рдЗрди-рдбреЙрдХрд░ рдореЗрдВ рдХреНрдпрд╛ рдЧрд▓рдд рд╣реИ?


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


рдХрд╛рдирд┐рдХреЛ рдХреЗ рд╕рд╛рде рдкрд░рд┐рдЪрд┐рдд рд╣реЛрдирд╛


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


рдмрд╕ рдпрд╣ рдзреНрдпрд╛рди рд░рдЦреЗрдВ рдХрд┐ рдХрд╛рдирд┐рдХреЛ рдЕрднреА рднреА рд╡рд┐рдХрд╛рд╕ рдХреЗ рдЕрдзреАрди рд╣реИ рдФрд░ рд╕рднреА рдбреЙрдХрдлрд╛рдЗрд▓ рдХрдорд╛рдВрдб рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП - COPY рд▓рд┐рдП --chownflag ред


рдХрд╛рдирд┐рдХреЛ рд▓рд╛рдВрдЪ


рдпрджрд┐ рдЖрдк kaniko рдЪрд▓рд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ kaniko рдХрдВрдЯреЗрдирд░ рдХреЗ рд▓рд┐рдП рдХрдИ рддрд░реНрдХ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдЕрдкрдиреЗ рд╕рднреА рдЖрд╢реНрд░рд┐рддреЛрдВ рдХреЗ рд╕рд╛рде рдбрд┐рдХреЛрдлрд░рд╛рдЗрд▓ рдХреЛ рдХрд╛рдирд┐рдХреЛ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдбрд╛рд▓реЗрдВред рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ (рдбреЙрдХрд░ рдореЗрдВ), -v <__>:<__> рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ -v <__>:<__> рдХрдВрдЯреЗрдирд░_рдкреИрде -v <__>:<__> , рдФрд░ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдХреЗ рдкрд╛рд╕ рд╡реЙрд▓реНрдпреВрдо рд╣реИрдВ ред


Kaniko рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдирд┐рд░реНрднрд░рддрд╛ Dockerfile рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рддрд░реНрдХ --context рдЬреЛрдбрд╝реЗрдВ, рдпрд╣ рд╕рдВрд▓рдЧреНрди рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ (рдХрдВрдЯреЗрдирд░ рдХреЗ рдЕрдВрджрд░) рдХреЗ рд▓рд┐рдП рдкрде рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░реЗрдЧрд╛ред рдЕрдЧрд▓рд╛ рддрд░реНрдХ рд╣реИ - --dockerfile ред рдпрд╣ рдбреЙрдХрд░рдлрд╛рдЗрд▓ (рдирд╛рдо рд╕рд╣рд┐рдд) рдХреЗ рд▓рд┐рдП рдкрде рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИред рдПрдХ рдЕрдиреНрдп рдорд╣рддреНрд╡рдкреВрд░реНрдг рддрд░реНрдХ рдбреЙрдХрд░реА рд░рдЬрд┐рд╕реНрдЯреНрд░реА (рдирд╛рдо рдФрд░ рдЫрд╡рд┐ рдЯреИрдЧ рд╕рд╣рд┐рдд) рдХреЗ рд▓рд┐рдП рдкреВрд░реНрдг URL рдХреЗ рд╕рд╛рде --destination ред


рд╕реНрдерд╛рдиреАрдп рд▓реЙрдиреНрдЪ


рдХрдиреАрдХреЛ рдХрдИ рддрд░реАрдХреЛрдВ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдбреЙрдХрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╕реНрдерд╛рдиреАрдп рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ (рддрд╛рдХрд┐ рдХреБрдмреЗрд░рдиреЗрдЯ рдХреНрд▓рд╕реНрдЯрд░ рдХреЗ рд╕рд╛рде рдЧрдбрд╝рдмрдбрд╝ рди рд╣реЛ)ред рдирд┐рдореНрди рдЖрджреЗрд╢ рдХреЗ рд╕рд╛рде рд░рди kaniko:


 $ docker run \ -v $(pwd):/workspace \ gcr.io/kaniko-project/executor:latest \ --dockerfile=<path-to-dockerfile> \ --context=/workspace \ --destination=<repo-url-with-image-name>:<tag> 

рдпрджрд┐ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреЛ рдбреЙрдХрд░ рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдореЗрдВ рд╕рдХреНрд╖рдо рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ kaniko рдХреЛ рдкрд╣рд▓реЗ рд▓реЙрдЧ рдЗрди рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрди рдЖрджреЗрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд╛рдВрдЬреАрдХреЛ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдбреЙрдХ рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдХреЗ рд▓рд┐рдП рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓реНрд╕ рдХреЗ рд╕рд╛рде рд╕реНрдерд╛рдиреАрдп рдбреЙрдХрд░ config.jsonfile рдХреЛ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ:


 $ docker run \ -v $(pwd):/workspace \ -v ~/.docker/config.json:/kaniko/.docker/config.json \ gcr.io/kaniko-project/executor:latest \ --dockerfile=<path-to-dockerfile> \ --context=/workspace \ --destination=<repo-url-with-image-name>:<tag> 

рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдореЗрдВ рд▓реЙрдиреНрдЪ


рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╣рдо Kubernetes рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ kaniko рдЪрд▓рд╛рдирд╛ рдЪрд╛рд╣рддреЗ рдереЗред рдФрд░ рд╣рдореЗрдВ рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрддрд╛рд░ рдХреА рддрд░рд╣ рдХреБрдЫ рднреА рдЪрд╛рд╣рд┐рдП рдерд╛ред рдЕрдЧрд░ рдбреЙрдХрдЯрд░ рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдореЗрдВ рдЫрд╡рд┐ рдХреЛ рдЕрд╕реЗрдВрдмрд▓ рдпрд╛ рднреЗрдЬрддреЗ рд╕рдордп рд╡рд┐рдлрд▓рддрд╛ рд╣реЛрддреА рд╣реИ, рддреЛ рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рд╣реЛ рдЬрд╛рдПред рдЗрд╕рдХреЗ рд▓рд┐рдП, рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдореЗрдВ рдПрдХ рдиреМрдХрд░реА рд╣реИред рдХрд┐рддрдиреА рдмрд╛рд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдкреБрдирдГ рдкреНрд░рдпрд╛рд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдпрд╣ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдХреЗ backoffLimit рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВред


рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рдпрд╣ рд╣реИ рдХрд┐ PersistentVolumeClaim рдСрдмреНрдЬреЗрдХреНрдЯ (рд╣рдорд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдЗрд╕реЗ kaniko-workspace рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ kaniko рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдПрдХ рдирд┐рд░реНрднрд░рддрд╛ Dockerfile рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░реЗрдВред рдпрд╣ рдПрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдХрдВрдЯреЗрдирд░ рдХреЗ рд▓рд┐рдП рдмрд╛рдзреНрдп рд╣реЛрдЧрд╛, рдФрд░ рд╕рднреА рдбреЗрдЯрд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА kaniko-workspace рдореЗрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдПрдХ рдЕрдиреНрдп рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА kaniko-workspace рдореЗрдВ /my-build kaniko-workspace рдореЗрдВ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рдбреЙрдХрдлрд╛рдЗрд▓ рд╣реИред


рдордд рднреВрд▓реЛ рдХрд┐ AWS рдореЗрдВ PersistentVolumeClaim рдХреЗ рд╕рд╛рде рдкрд░реЗрд╢рд╛рдиреА рд╣реИред рдпрджрд┐ рдЖрдк AWS рдореЗрдВ PersistentVolumeClaim рдмрдирд╛рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ AWS рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рдиреЛрдб рдкрд░ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛ рдФрд░ рдХреЗрд╡рд▓ рд╡рд╣реАрдВ рдЙрдкрд▓рдмреНрдз рд╣реЛрдЧрд╛ред (рдЕрдкрдбреЗрдЯ: рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдПрдХ рдкреАрд╡реАрд╕реА рдмрдирд╛рддреЗ рд╕рдордп, рдЖрдкрдХреЗ рдХреНрд▓рд╕реНрдЯрд░ рдХреЗ рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдЙрдкрд▓рдмреНрдзрддрд╛ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдПрдХ RDS рд╡реЙрд▓реНрдпреВрдо рдмрдирд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рддрджрдиреБрд╕рд╛рд░, рдпрд╣ рд╡реЙрд▓реНрдпреВрдо рдЗрд╕ рдЬрд╝реЛрди рдореЗрдВ рд╕рднреА рдорд╢реАрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реЛрдЧрд╛ред рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдЦреБрдж рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдкреАрд╡реАрд╕реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдЗрд╕реЗ рдЙрдкрд▓рдмреНрдзрддрд╛ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдПрдХ рдиреЛрдб рдкрд░ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред RDS volyumaред - рд▓рдЧрднрдЧред) рддреЛ, рдпрджрд┐ рдЖрдк рдЬреЙрдм kaniko рдЪрд▓рд╛рддреЗ рд╣реИрдВ рдФрд░ рдпрд╣ рдХрд╛рд░реНрдп рдХрд┐рд╕реА рдЕрдиреНрдп рдиреЛрдб рдкрд░ рд╣реИ, рддреЛ рдпрд╣ рдкреНрд░рд╛рд░рдВрдн рдирд╣реАрдВ рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ PersistentVolumeClaim рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИред рдЖрд╢рд╛ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдЕрдореЗрдЬрд╝рди рдЗрд▓рд╛рд╕реНрдЯрд┐рдХ рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдЬрд▓реНрдж рд╣реА рдХреБрдмреЗрд░рдиреЗрдЯ рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реЛрдЧрд╛ рдФрд░ рд╕рдорд╕реНрдпрд╛ рджреВрд░ рд╣реЛ рдЬрд╛рдПрдЧреАред (рдЕрдкрдбреЗрдЯ: рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдореЗрдВ рдИрдПрдлрдПрд╕ рдХреЛ рднрдВрдбрд╛рд░рдг рдкреНрд░рд╛рд╡рдзрд╛рди рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рд╣реИред - рд▓рдЧрднрдЧ ред)


рдбреЙрдХрд░ рдЫрд╡рд┐рдпреЛрдВ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рдиреМрдХрд░реА рд╕рдВрд╕рд╛рдзрди рдЖрдорддреМрд░ рдкрд░ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:


 apiVersion: batch/v1 kind: Job metadata: name: build-image spec: template: spec: containers: - name: build-image image: gcr.io/kaniko-project/executor:latest args: - "--context=/workspace/my-build" - "--dockerfile=/workspace/my-build/Dockerfile" - "--destination=<repo-url-with-image-name>:<tag>" volumeMounts: - name: workspace mountPath: /workspace volumes: - name: workspace persistentVolumeClaim: claimName: kaniko-workspace restartPolicy: Never backoffLimit: 3 

рдпрджрд┐ рдЧрдВрддрд╡реНрдп рдбреЙрдХ рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдХреЛ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ kaniko рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓реНрд╕ рдХреЗ рд╕рд╛рде config.json рдлрд╝рд╛рдЗрд▓ рдкрд╛рд╕ рдХрд░реЗрдВред рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рдпрд╣ рд╣реИ рдХрд┐ PersistentVolumeClaim рдХреЛ рдЙрд╕ рдХрдВрдЯреЗрдирд░ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ рдЬрд┐рд╕рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА config.json рдлрд╝рд╛рдЗрд▓ рд╣реИред рдпрд╣рд╛рдБ PersistentVolumeClaim рдПрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ /kaniko/.docker/config.json рдХрдВрдЯреЗрдирд░ рдореЗрдВ /kaniko/.docker/config.json рдкрде рдореЗрдВ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд░реВрдк рдореЗрдВ /kaniko/.docker/config.json :


 apiVersion: batch/v1 kind: Job metadata: name: build-image spec: template: spec: containers: - name: build-image image: gcr.io/kaniko-project/executor:latest args: - "--context=/workspace/my-build" - "--dockerfile=/workspace/my-build/Dockerfile" - "--destination=<repo-url-with-image-name>:<tag>" volumeMounts: - name: config-json mountPath: /kaniko/.docker/config.json subPath: config.json - name: workspace mountPath: /workspace volumes: - name: config-json persistentVolumeClaim: claimName: kaniko-credentials - name: workspace persistentVolumeClaim: claimName: kaniko-workspace restartPolicy: Never backoffLimit: 3 

рдпрджрд┐ рдЖрдк kubectl рдмрд┐рд▓реНрдб рдЬреЙрдм рдХреА рд╕реНрдерд┐рддрд┐ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ kubectl рдЙрдкрдпреЛрдЧ kubectl ред stdout рджреНрд╡рд╛рд░рд╛ рд╕реНрдерд┐рддрд┐ рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдХрдорд╛рдВрдб рдЪрд▓рд╛рдПрдБ:


 $ kubectl get job build-image -o go-template='{{(index .status.conditions 0).type}}' 

рдкрд░рд┐рдгрд╛рдо


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

Source: https://habr.com/ru/post/hi436126/


All Articles