рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рд╕реНрдХреЗрдлреЛрд▓реНрдб рд╕рдореАрдХреНрд╖рд╛



рдбреЗрдврд╝ рд╕рд╛рд▓ рдкрд╣рд▓реЗ, 5 рдорд╛рд░реНрдЪ, 2018 рдХреЛ, Google рдиреЗ рдЕрдкрдиреЗ рдУрдкрди рд╕реЛрд░реНрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд╛ рдкрд╣рд▓рд╛ рдЕрд▓реНрдлрд╝рд╛ рд╕рдВрд╕реНрдХрд░рдг CI / CD рдХреЗ рд▓рд┐рдП рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЬрд┐рд╕реЗ рд╕реНрдХреЗрдлреЛрд▓реНрдб рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рд▓рдХреНрд╖реНрдп "рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдХреЗ рд▓рд┐рдП рд╕рд░рд▓ рдФрд░ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╡рд┐рдХрд╛рд╕" рдмрдирд╛рдирд╛ рдерд╛ рддрд╛рдХрд┐ рдбреЗрд╡рд▓рдкрд░реНрд╕ рд╡рд┐рдХрд╛рд╕ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░ рд╕рдХреЗрдВ, рдФрд░ рдкреНрд░рд╢рд╛рд╕рди рдкрд░ рдирд╣реАрдВред рд╕реНрдХреЗрдлреЛрд▓реНрдб рдХреЗ рд▓рд┐рдП рдмреНрдпрд╛рдЬ рдХреНрдпрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ? рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдирд┐рдХрд▓рд╛, рдЙрд╕рдХреА рдЖрд╕реНрддреАрди рдореЗрдВ рдХреБрдЫ рдЯреНрд░рдореНрдк рдХрд╛рд░реНрдб рд╣реИрдВ, рдЬрд┐рд╕рдХреА рдмрджреМрд▓рдд рд╡рд╣ рдПрдХ рдбреЗрд╡рд▓рдкрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдЙрдкрдХрд░рдг рдмрди рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рд╢рд╛рдпрдж рдПрдХ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рдЗрдВрдЬреАрдирд┐рдпрд░ред рд╣рдо рдкрд░рд┐рдпреЛрдЬрдирд╛ рдФрд░ рдЗрд╕рдХреА рдХреНрд╖рдорддрд╛рдУрдВ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реЛрдВрдЧреЗред

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

рд╕рд┐рджреНрдзрд╛рдВрддред рдЙрджреНрджреЗрд╢реНрдп рдФрд░ рд╕реБрд╡рд┐рдзрд╛рдПрдБ


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

Skaffold рдХреЗ рд▓рд┐рдП рд╕реНрд░реЛрдд рдХреЛрдб рдЧреЛ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдЗрд╕реЗ рдореБрдлреНрдд Apache рд▓рд╛рдЗрд╕реЗрдВрд╕ 2.0 ( GitHub ) рдХреЗ рддрд╣рдд рд╡рд┐рддрд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдореБрдЦреНрдп рдХрд╛рд░реНрдпреЛрдВ рдФрд░ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рдкрд╣рд▓реЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:

  • Skaffold CI / CD рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдХрд░рдг рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
  • рдЖрдкрдХреЛ рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ рд╕реНрд░реЛрдд рдХреЛрдб рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░рдиреЗ рдФрд░ рдХрдВрдЯреЗрдирд░ рдЫрд╡рд┐рдпреЛрдВ рдореЗрдВ рдХреЛрдб рдмрдирд╛рдиреЗ рдХреА рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЗрди рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рдбреЛрдХрд░ рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдореЗрдВ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдХреЗ рдЙрдиреНрд╣реЗрдВ рдХреБрдмреЗрд░рдиреЗрдЯ рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рддреИрдирд╛рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
  • рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЗ рд╕рд╛рде рднрдВрдбрд╛рд░ рдореЗрдВ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд░рддрд╛ рд╣реИред
  • рдХрдВрдЯреЗрдирд░-рд╕рдВрд░рдЪрдирд╛-рдкрд░реАрдХреНрд╖рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкрд░реАрдХреНрд╖рдгред
  • рдЖрдЧреЗ рдХреА рдУрд░ рдмрдВрджрд░рдЧрд╛рд╣ред
  • рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдЪрд▓ рд░рд╣реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓реЙрдЧ рдкрдврд╝рддрд╛ рд╣реИред
  • Java, Node.js, Python, Go рдореЗрдВ рд▓рд┐рдЦреЗ рдбрд┐рдмрдЧрд┐рдВрдЧ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред

рдЕрдм рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ:

  • рд╕реНрдХреЗрдлреЛрд▓реНрдб рдореЗрдВ рд╣реА рдХреНрд▓рд╕реНрдЯрд░-рд╕рд╛рдЗрдб рдШрдЯрдХ рдирд╣реАрдВ рд╣реИрдВ ред рдпрд╣реА рд╣реИ, рдЖрдкрдХреЛ рдЗрд╕ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдмреЗрд░рдиреЗрдЯ рдХреЛ рдЕрддрд┐рд░рд┐рдХреНрдд рд░реВрдк рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
  • рдЖрдкрдХреЗ рдЖрд╡реЗрджрди рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ рдкрд╛рдЗрдкрд▓рд╛рдЗрди ред рдЬрдм рдЖрдк рд╡рд┐рдХрд╛рд╕ рдХрд░ рд░рд╣реЗ рд╣реЛрдВ, рдФрд░ рддрдм рдордВрдЪ рдпрд╛ рдЙрддреНрдкрд╛рджрди рдкрд░ рд╕реНрдерд╛рдиреАрдп рдорд┐рдирд┐рдХреНрдпреВрдм рдореЗрдВ рдХреЛрдб рдХреЛ рд░реЛрд▓ рдЖрдЙрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ? рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди, рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдФрд░ рдЭрдВрдбреЗ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдЬреЛ рдЖрдкрдХреЛ рдПрдХ рдЖрд╡реЗрджрди рдХреЗ рд▓рд┐рдП рд╡рд┐рднрд┐рдиреНрди рдкрд╛рдЗрдкрд▓рд╛рдЗрдиреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред
  • CLIред YAML рдореЗрдВ рдХреЗрд╡рд▓ рдХрдВрд╕реЛрд▓ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рдиред рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рдЖрдк рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ рдЬреАрдпреВрдЖрдИ рдмрдирд╛рдиреЗ рдХреЗ рдкреНрд░рдпрд╛рд╕реЛрдВ рдХреЗ рд╕рдВрджрд░реНрдн рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдлрд┐рд▓рд╣рд╛рд▓ рдЗрд╕рдХрд╛ рдорддрд▓рдм рдХреЗрд╡рд▓ рдпрд╣ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдХреЛ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирд╣реАрдВред
  • рдкреНрд░рддрд┐рд░реВрдкрдХрддрд╛ ред рд╕реНрдХреЗрдлреЛрд▓реНрдб рдПрдХ рд╕реНрд╡рддрдВрддреНрд░ рд╕рдВрдпреЛрдЬрди рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ рдореЙрдбреНрдпреВрд▓ рдпрд╛ рдореМрдЬреВрджрд╛ рд╕рдорд╛рдзрд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИред

рдЙрддреНрддрд░рд╛рд░реНрджреНрдз рдХрд╛ рдЪрд┐рддреНрд░рдг:

  • рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдЪрд░рдг рдореЗрдВ, рдЖрдк рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
    • docker рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ, kaniko рдпрд╛ Google рдХреНрд▓рд╛рдЙрдб рдмрд┐рд▓реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ;
    • рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдмрд╛рдЬрд╝рд▓;
    • Jib Maven рдФрд░ Jib Gradle рд╕реНрдерд╛рдиреАрдп рдпрд╛ Google рдХреНрд▓рд╛рдЙрдб рдмрд┐рд▓реНрдб рдкрд░;
    • рдХрд╕реНрдЯрдо рдмрд┐рд▓реНрдб рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдЪрд▓рддреА рд╣реИрдВред рдпрджрд┐ рдЖрдкрдХреЛ рдЕрд╕реЗрдВрдмрд▓реА рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ (рдЕрдзрд┐рдХ рд▓рдЪреАрд▓рд╛ / рдкрд░рд┐рдЪрд┐рдд / ...) рд╕рдорд╛рдзрд╛рди рдЪрд▓рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рддрд╛рдХрд┐ рд╕реНрдХреЗрдлреЛрд▓реНрдб рдЗрд╕реЗ рдЪрд▓рд╛рддрд╛ рд╣реИ ( рдкреНрд░рд▓реЗрдЦрди рд╕реЗ рдЙрджрд╛рд╣рд░рдг )ред рдпрд╣ рдЖрдкрдХреЛ рдХрд┐рд╕реА рднреА рдХрд▓реЗрдХреНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ;
  • рдкрд░реАрдХреНрд╖рдг рдЪрд░рдг рдореЗрдВ, рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдХрдВрдЯреЗрдирд░-рд╕рдВрд░рдЪрдирд╛-рдкрд░реАрдХреНрд╖рдг рд╕рдорд░реНрдерд┐рдд рд╣реИ;
  • рддреИрдирд╛рддреА рдХреЗ рд▓рд┐рдП рдкреНрд░рджрд╛рди рдХреА рдЬрд╛рддреА рд╣реИрдВ:
    • Kubectl;
    • рдкрддрд╡рд╛рд░;
    • kustomizeред

рдЗрд╕рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рд╕реНрдХреЗрдлреЛрд▓реНрдб рдХреЛ CI / CD рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдврд╛рдВрдЪрд╛ рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ (рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкреНрд░рд▓реЗрдЦрди рд╕реЗ):



рд╕реНрдХреЗрдлреЛрд▓реНрдб рдХрд╛ рдХрд╛рд░реНрдп рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рдореЗрдВ рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ?

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



рд╕реНрдХреЗрдлреЛрд▓реНрдб рдореАрд▓ рдХреЗ рдкрддреНрдерд░ рдХрд╛ рдЪрд┐рддреНрд░рдг

рдЕрднреНрдпрд╛рд╕ред рд╕реНрдХреЗрдлреЛрд▓реНрдб рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реИ


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

рд╕реНрдХреЗрдлреЛрд▓реНрдб рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ:

 curl -Lo skaffold https://storage.googleapis.com/skaffold/releases/latest/skaffold-linux-amd64 chmod +x skaffold sudo mv skaffold /usr/local/bin skaffold version v0.37.1 

рдЪрд▓реЛ рдЖрд╡рд╢реНрдпрдХ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рд╕реНрдХреЛрдлреЛрд▓реНрдб рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЛ рдХреНрд▓реЛрди рдХрд░рддреЗ рд╣реИрдВ:

 git clone https://github.com/GoogleContainerTools/skaffold cd skaffold/examples/microservices 

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

 ~/skaffold/examples/microservices # tree . тФЬтФАтФА leeroy-app тФВ тФЬтФАтФА app.go тФВ тФЬтФАтФА Dockerfile тФВ тФФтФАтФА kubernetes тФВ тФФтФАтФА deployment.yaml тФЬтФАтФА leeroy-web тФВ тФЬтФАтФА Dockerfile тФВ тФЬтФАтФА kubernetes тФВ тФВ тФФтФАтФА deployment.yaml тФВ тФФтФАтФА web.go тФЬтФАтФА README.adoc тФФтФАтФА skaffold.yaml 4 directories, 8 files 

рд╕реНрдерд╛рдиреАрдп рд╕реНрддрд░ рдкрд░ рдЗрд╕ рдХреЛрдб рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП leeroy-app рдФрд░ leeroy-web рдореЗрдВ рдЧреЛ рдХреЛрдб рдФрд░ рд╕рд░рд▓ рдбреЙрдХрдлрд╛рдЗрд▓реНрд╕ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:

 ~/skaffold/examples/microservices # cat leeroy-app/Dockerfile FROM golang:1.12.9-alpine3.10 as builder COPY app.go . RUN go build -o /app . FROM alpine:3.10 CMD ["./app"] COPY --from=builder /app . 

рдореИрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛрдб рдирд╣реАрдВ рджреВрдВрдЧрд╛ - рдпрд╣ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ рдХрд┐ leeroy-web рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ leeroy-app рд▓рд┐рдП рдкреНрд░реЙрдХреНрд╕реА рдХрд░рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, Deployment.yaml рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рдХреЗрд╡рд▓ app (рдЖрдВрддрд░рд┐рдХ рд░реВрдЯрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП) рд╕реЗрд╡рд╛ рд╣реИред рдЖрд╡реЗрджрди рдХреЗ рддреНрд╡рд░рд┐рдд рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП web рдкреЙрдб рдкреЛрд░реНрдЯ рдХреЛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рднреЗрдЬрд╛ рдЬрд╛рдПрдЧрд╛ред

рдХреНрдпрд╛ skaffold.yaml рдЬреИрд╕рд╛ рджрд┐рдЦрддрд╛ skaffold.yaml :

 ~/skaffold/examples/microservices # cat skaffold.yaml apiVersion: skaffold/v1beta13 kind: Config build: artifacts: - image: leeroy-web context: ./leeroy-web/ - image: leeroy-app context: ./leeroy-app/ deploy: kubectl: manifests: - ./leeroy-web/kubernetes/* - ./leeroy-app/kubernetes/* portForward: - resourceType: deployment resourceName: leeroy-web port: 8080 localPort: 9000 

рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рд╕рднреА рдЪрд░рдгреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдпрд╣рд╛рдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╡реИрд╢реНрд╡рд┐рдХ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рд╕рд╛рде рдПрдХ рдлрд╝рд╛рдЗрд▓ рднреА рд╣реИ - ~/.skaffold/config ред рдЗрд╕реЗ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдпрд╛ CLI рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдВрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ - рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕ рддрд░рд╣:

 skaffold config set --global local-cluster true 

рдпрд╣ рдЖрджреЗрд╢ local-cluster рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ рдХреЛ true рд╕реЗрдЯ рдХрд░рддрд╛ true , рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рд╕реНрдХреЗрдлреЛрд▓реНрдб рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рджреВрд░рд╕реНрде рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдореЗрдВ 'рдкреБрд╢' рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рдпрджрд┐ рдЖрдк рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рд╡рд┐рдХрд╕рд┐рдд рд╣реЛ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЗрд╕ рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕реНрдерд╛рдиреАрдп рд╕реНрддрд░ рдкрд░ рднреА рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рд╡рд╛рдкрд╕ skaffold.yaml :

  • build рд╕реНрдЯреЗрдЬ рдкрд░, рд╣рдо рдЗрдВрдЧрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдХреЛ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдЫрд╡рд┐ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдФрд░ рд╕рд╣реЗрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдкрд╣рд▓реА рдмрд╛рд░ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рд╢реБрд░реВ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рджреЗрдЦреЗрдВрдЧреЗ:

     // .. Minikube      , //   ,    # minikube ssh $ docker images REPOSITORY TAG IMAGE ID CREATED SIZE leeroy-app 7d55a50803590b2ff62e47e6f240723451f3ef6f8c89aeb83b34e661aa287d2e 7d55a5080359 4 hours ago 13MB leeroy-app v0.37.1-171-g0270a0c-dirty 7d55a5080359 4 hours ago 13MB leeroy-web 5063bfb29d984db1ff70661f17d6efcc5537f2bbe6aa6907004ad1ab38879681 5063bfb29d98 5 hours ago 13.1MB leeroy-web v0.37.1-171-g0270a0c-dirty 5063bfb29d98 5 hours ago 13.1MB 

    рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╕реНрдХреЗрдлреЛрд▓реНрдб рдиреЗ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдЫрд╡рд┐рдпреЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ред рд╡реИрд╕реЗ, рдХрдИ рдЯреИрдЧрд┐рдВрдЧ рдиреАрддрд┐рдпреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
  • рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд context: ./leeroy-app/ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ context: ./leeroy-app/ , i.e. рд╡рд╣ рд╕рдВрджрд░реНрдн рдЬрд┐рд╕рдореЗрдВ рдЫрд╡рд┐ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
  • рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдЪрд░рдг рдореЗрдВ, рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рд╣рдо рд╡рд╛рдВрдЫрд┐рдд рдШреЛрд╖рдгрд╛рдкрддреНрд░ рдХреЗ рд▓рд┐рдП рдХреБрдмреЗрдХреЗрд▓ рдФрд░ рдПрдХ рдореБрдЦреМрдЯрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред
  • PortForward : kubectl port-forward рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рд╣рдо рдЖрдорддреМрд░ рдкрд░ рдкреЛрд░реНрдЯ рдХреЛ рдХреИрд╕реЗ рдЕрдЧреНрд░реЗрд╖рд┐рдд рдХрд░рддреЗ kubectl port-forward , рдЗрд╕рдХреЗ рд╕рдорд╛рди, рд╣рдо рдЗрд╕ рдХрдорд╛рдВрдб рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдХреЗрдлреЛрд▓реНрдб рдирд┐рд░реНрджреЗрд╢ рджреЗрддреЗ рд╣реИрдВред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рд╕реНрдерд╛рдиреАрдп рдкреЛрд░реНрдЯ 9000 рдХреЛ leeroy-web рдирд╛рдо рдХреЗ рд╕рд╛рде рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдореЗрдВ 8080 рдкрд░ рднреЗрдЬ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдпрд╣ skaffold dev рд╢реБрд░реВ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рд╣реИ: рдЯреАрдо рдПрдХ "рдлреАрдбрдмреИрдХ рд▓реВрдк" рдмрдирд╛рдПрдЧреА, рдпрд╛рдиреАред рди рдХреЗрд╡рд▓ рд╕рдм рдХреБрдЫ рдПрдХрддреНрд░ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдПрдХ рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рд╣реЛрддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рдЗрд╕ рд╕рдордп рдлрд▓реА рдХреА рд╕реНрдерд┐рддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреА рдмрддрд╛рддрд╛ рд╣реИ, рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░реЗрдЧрд╛ рдФрд░ рдлрд▓реА рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдЧрд╛ред

рдпрд╣рд╛рдБ skaffold dev --port-forward рдЬрдм skaffold dev --port-forward рдЪрд▓рд╛рдиреЗ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╣реИ:



рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдХреИрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рдЕрдЧрд▓рд╛ - рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреИрдирд╛рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдмрдВрджрд░рдЧрд╛рд╣реЛрдВ рдХреЛ рдЕрдЧреНрд░реЗрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЪреВрдВрдХрд┐ --рдкреЛрд░реНрдЯ --port-forward рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╣реИ, рд╕реНрдХреЗрдлреЛрд▓реНрдб рдиреЗ рдЕрдиреБрд░реЛрдз рдХреЗ рдЕрдиреБрд╕рд╛рд░ web рдХреЛ рдкреЛрд░реНрдЯ рдЕрдЧреНрд░реЗрд╖рд┐рдд рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдЙрдиреНрд╣реЛрдВрдиреЗ рдЕрдкрдиреЗ рд╡рд┐рд╡реЗрдХ рдкрд░ app рдХреЛ рдЕрдЧреНрд░реЗрд╖рд┐рдд рдХрд┐рдпрд╛ (рдЙрдиреНрд╣реЛрдВрдиреЗ рдирд┐рдХрдЯрддрдо рдореБрдХреНрдд рдХреЛ рдЪреБрдирд╛)ред рдЙрд╕рдХреЗ рдмрд╛рдж, рд╣рдо рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рд╕реЗ рдкрд╣рд▓реЗ рд▓реЙрдЧ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред

рдкреНрд░рджрд░реНрд╢рди рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ?

 ~/skaffold/examples/microservices # kubectl get po NAME READY STATUS RESTARTS AGE leeroy-app-6998dfcc95-2nxvf 1/1 Running 0 103s leeroy-web-69f7d47c9d-5ff77 1/1 Running 0 103s ~/skaffold/examples/microservices # curl localhost:9000 leeroooooy app!!! 

leeroy-app/app.go рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░реЗрдВ - рдЗрд╕рдореЗрдВ рдХреБрдЫ рд╕реЗрдХрдВрдб рд▓рдЧрддреЗ рд╣реИрдВ ... рдФрд░:

 ~/skaffold/examples/microservices # kubectl get po NAME READY STATUS RESTARTS AGE leeroy-app-ffd79d986-l6nwp 1/1 Running 0 11s leeroy-web-69f7d47c9d-5ff77 1/1 Running 0 4m59s ~/skaffold/examples/microservices # curl localhost:9000 leeroooooy Habr!!! 

рдЙрд╕реА рд╕рдордп, рд╕реНрдХреЗрдлреЛрд▓реНрдб рдиреЗ рдЦреБрдж рдХреЛ рдПрдХ рдмрд┐рдВрджреБ рдХреЗ рдЕрдкрд╡рд╛рдж рдХреЗ рд╕рд╛рде рдкрд╣рд▓реЗ рдХреА рддрд░рд╣ рд╣реА рдХрдВрд╕реЛрд▓ рдкрд░ рд▓рд╛рдпрд╛: рдпрд╣ рдХреЗрд╡рд▓ leeroy-app рдХреЛ рд░реЛрд▓ рдЖрдЙрдЯ рдХрд┐рдпрд╛, рдФрд░ рд╕рднреА рдХреЛ рдПрдХ рдмрд╛рд░ рдореЗрдВ рдирд╣реАрдВред

рдЕрдзрд┐рдХ рдЕрднреНрдпрд╛рд╕


рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдПрдХ рдирдИ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдмрдирд╛рддреЗ рд╕рдордп, рд╕реНрдХреЗрдлреЛрд▓реНрдб рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди init рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмреВрдЯрд╕реНрдЯреНрд░реИрдк рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдк рдХрдИ рдХреЙрдиреНрдлрд┐рдЧрд░ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ: рдбрд┐рдлреЙрд▓реНрдЯ рдХреЙрдиреНрдлрд┐рдЧрд░ рдкрд░ рд╡рд┐рдХрд╕рд┐рдд рд╣реЛрддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ run рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рд╕реНрдЯреЗрдЬ рдкрд░ рд░реЛрд▓ рдХрд░рддреЗ рд╣реИрдВ (рдПрдХ рд╣реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ dev рд░реВрдк рдореЗрдВ, рдмрд╕ рдмрджрд▓рд╛рд╡реЛрдВ рдХрд╛ рдкрд╛рд▓рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ), рдПрдХ рдЕрд▓рдЧ рдХреЙрдиреНрдлрд┐рдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗред

рдХреИрдЯрд╛рдХреЛрдбрд╛ рдореЗрдВ рдПрдХ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рд╣реИ рдЬреЛ рд╕рд░рд▓ рднреА рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ Kubernetes, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдФрд░ рд╕реНрдХреЗрдлреЛрд▓реНрдб рдХреЗ рд╕рд╛рде рддреИрдпрд╛рд░ рд╕реИрдВрдбрдмреЙрдХреНрд╕ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдЕрдкрдиреЗ рджрдо рдкрд░ рдмрд╣реБрдд рдореВрд▓ рдмрд╛рддреЗрдВ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдПрдХ рдмрдврд╝рд┐рдпрд╛ рд╡рд┐рдХрд▓реНрдкред

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

рдФрд░ рдмреБрдирдХрд░реЛрдВ рдХреЗ рдЗрд╕ рдкреНрд░рдХрд╛рд╢рди рдореЗрдВ рдЖрдк рдЙрддреНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдмрдирд╛рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред

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


рд╕реНрдХреЗрдлреЛрд▓реНрдб рдкрд╛рдЗрдкрд▓рд╛рдЗрдиреЛрдВ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдЙрдкрдХрд░рдг рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реИ рдФрд░ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рд╡рд┐рдХрд╛рд╕ рдХреА рдЬрд░реВрд░рддреЛрдВ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рд╕рд╛рде, "рд╢реЙрд░реНрдЯ" рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИ рдЬреЛ рдбреЗрд╡рд▓рдкрд░ рдХреА рдмреБрдирд┐рдпрд╛рджреА рдЬрд░реВрд░рддреЛрдВ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрджрд┐ рдЖрдк рдЪрд╛рд╣реЗрдВ, рддреЛ рдЖрдк рдмрдбрд╝реА рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред CI / CD рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдореЗрдВ рд╕реНрдХреЗрдлреЛрд▓реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ 10 рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрд╡рд┐рд╕ рдХреА рдПрдХ рдкрд░реАрдХреНрд╖рдг рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╣реИ рдЬреЛ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕, рдЬреАрдЖрд░рдкреАрд╕реА, рдЗрд╕реНрддрд┐рдпреЛ рдФрд░ рдУрдкрдирд╕рд╛рдЗрдирд╕ рдЯреНрд░реЗрд╕рд┐рдВрдЧ рдХреА рдХреНрд╖рдорддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИред

рд╕реНрдХреЗрдлреЛрд▓реНрдб рдХреЛ рдкрд╣рд▓реЗ рд╣реА рд▓рдЧрднрдЧ 8000+ рд╕реНрдЯрд╛рд░ рдорд┐рд▓ рдЪреБрдХреЗ рд╣реИрдВ GitHub, Google рджреНрд╡рд╛рд░рд╛ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ рдФрд░ GoogleContainerTools рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ - рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЗрд╕ рд╕рдордп рдпрд╣ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдХрд░рдиреЗ рдХрд╛ рд╣рд░ рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрднреА рднреА рдЦреБрд╢реА рд╕реЗ рд╡рд┐рдХрд╕рд┐рдд рд╣реЛрдЧреАред

рдкреБрдирд╢реНрдЪ


рд╣рдорд╛рд░реЗ рдмреНрд▓реЙрдЧ рдореЗрдВ рднреА рдкрдврд╝реЗрдВ:

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


All Articles