рдХреБрдмрд░реНрдиреЗрдЯреНрд╕рдЪреНрдпрд╛ рд╡рд┐рдХрд╛рд╕рд╛рд╕рд╛рдареА рд╕реНрдХреЕрдлреЛрд▓реНрдбрдЪреЗ рдкреБрдирд░рд╛рд╡рд▓реЛрдХрди

рдХреБрдмрд░реНрдиреЗрдЯреНрд╕рдЪреНрдпрд╛ рд╡рд┐рдХрд╛рд╕рд╛рд╕рд╛рдареА рд╕реНрдХреЕрдлреЛрд▓реНрдбрдЪреЗ рдкреБрдирд░рд╛рд╡рд▓реЛрдХрди

рджреАрдб рд╡рд░реНрд╖рд╛рдкреВрд░реНрд╡реА, 5 рдорд╛рд░реНрдЪ 2018 рд░реЛрдЬреА, Google рдиреЗ CI/CD рдирд╛рд╡рд╛рдЪреНрдпрд╛ рддреНрдпрд╛рдЪреНрдпрд╛ рдУрдкрди рд╕реЛрд░реНрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯрдЪреА рдкрд╣рд┐рд▓реА рдЕрд▓реНрдлрд╛ рдЖрд╡реГрддреНрддреА рдкреНрд░рд╕рд┐рджреНрдз рдХреЗрд▓реА. рд╕реНрдХреЕрдлреЛрд▓реНрдб, рдЬреНрдпрд╛рдВрдЪреЗ рдЙрджреНрджрд┐рд╖реНрдЯ "рд╕рд╛рдзреНрдпрд╛ рдЖрдгрд┐ рдкреБрдирд░рд╛рд╡реГрддреНрддреА рдХрд░рдгреНрдпрд╛рдпреЛрдЧреНрдп рдХреБрдмрд░рдиреЗрдЯ рд╡рд┐рдХрд╛рд╕" рддрдпрд╛рд░ рдХрд░рдгреЗ рд╣реЗ рд╣реЛрддреЗ рдЬреЗрдгреЗрдХрд░реБрди рд╡рд┐рдХрд╛рд╕рдХ рдкреНрд░рд╢рд╛рд╕рдирд╛рдРрд╡рдЬреА рд╡рд┐рдХрд╛рд╕рд╛рд╡рд░ рд▓рдХреНрд╖ рдХреЗрдВрджреНрд░рд┐рдд рдХрд░реВ рд╢рдХрддреАрд▓. Skaffold рдмрджреНрджрд▓ рдХрд╛рдп рдордиреЛрд░рдВрдЬрдХ рдЕрд╕реВ рд╢рдХрддреЗ? рд╣реЗ рджрд┐рд╕реВрди рдпреЗрддреЗ рдХреА, рддреНрдпрд╛рдЪреНрдпрд╛ рд╕реНрд▓реАрд╡реНрд╣рд╡рд░ рдХрд╛рд╣реА рдпреБрдХреНрддреНрдпрд╛ рдЖрд╣реЗрдд рдЬреНрдпрд╛рдореБрд│реЗ рддреЗ рд╡рд┐рдХрд╕рдХ рдЖрдгрд┐ рдХрджрд╛рдЪрд┐рдд рдСрдкрд░реЗрд╢рди рдЗрдВрдЬрд┐рдирд┐рдпрд░рд╕рд╛рдареА рдПрдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд╕рд╛рдзрди рдмрдиреВ рд╢рдХрддреЗ. рдЪрд▓рд╛ рдкреНрд░рдХрд▓реНрдк рдЖрдгрд┐ рддреНрдпрд╛рдЪреНрдпрд╛ рдХреНрд╖рдорддрд╛рдВрд╢реА рдкрд░рд┐рдЪрд┐рдд рд╣реЛрдК рдпрд╛.

NB: рддрд╕реЗ, рдЖрдореНрд╣реА рдЖрдордЪреНрдпрд╛ рдЬрдирд░рд▓рдордзреНрдпреЗ рд╕реНрдХреЕрдлреЛрд▓реНрдбрдмрджреНрджрд▓ рдереЛрдбрдХреНрдпрд╛рдд рдмреЛрд▓рд▓реЛ рдЖрд╣реЛрдд рд╡рд┐рдХрд╕рдХ рд╕рд╛рдзрдирд╛рдВрдЪреЗ рдкреБрдирд░рд╛рд╡рд▓реЛрдХрди, рдЬреНрдпрд╛рдВрдЪреЗ рдЬреАрд╡рди рдХреБрдмрд░реНрдиреЗрдЯреНрд╕рд╢реА рдЬреЛрдбрд▓реЗрд▓реЗ рдЖрд╣реЗ.

рд╕рд┐рджреНрдзрд╛рдВрдд. рдЙрджреНрджреЗрд╢ рдЖрдгрд┐ рдХреНрд╖рдорддрд╛

рддрд░, рд╕рд░реНрд╡рд╕рд╛рдзрд╛рд░рдгрдкрдгреЗ, рд╕реНрдХреЕрдлреЛрд▓реНрдб CI/CD рд╕рд╛рдпрдХрд▓ рд╕реНрд╡рдпрдВрдЪрд▓рд┐рдд рдХрд░рдгреНрдпрд╛рдЪреНрдпрд╛ рд╕рдорд╕реНрдпреЗрдЪреЗ рдирд┐рд░рд╛рдХрд░рдг рдХрд░рддреЗ (рдмрд┐рд▓реНрдб, рдкреБрд╢, рдбрд┐рдкреНрд▓реЙрдп рд╕реНрдЯреЗрдЬрд╡рд░), рдбреЗрд╡реНрд╣рд▓рдкрд░рд▓рд╛ рддреНрд╡рд░рд┐рдд рдлреАрдбрдмреЕрдХ рдСрдлрд░ рдХрд░рддреЗ, рдЙрджрд╛. рддреНрдпрд╛рдирдВрддрд░рдЪреНрдпрд╛ рдХреЛрдб рдмрджрд▓рд╛рдВрдЪреЗ рдкрд░рд┐рдгрд╛рдо рддреНрд╡рд░реАрдд рдкреНрд░рд╛рдкреНрдд рдХрд░рдгреНрдпрд╛рдЪреА рдХреНрд╖рдорддрд╛ - рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдХреНрд▓рд╕реНрдЯрд░рдордзреНрдпреЗ рдЪрд╛рд▓реВ рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рдЕрджреНрдпрддрдирд┐рдд рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╛рдЪреНрдпрд╛ рд╕реНрд╡рд░реВрдкрд╛рдд. рдЖрдгрд┐ рддреЗ рд╡реЗрдЧрд╡реЗрдЧрд│реНрдпрд╛ рд╕рд░реНрдХрд┐рдЯреНрд╕ (рджреЗрд╡, рд╕реНрдЯреЗрдЬ, рдЙрддреНрдкрд╛рджрди...) рдордзреНрдпреЗ рдХрд╛рд░реНрдп рдХрд░реВ рд╢рдХрддреЗ, рдЬреНрдпрд╛рд╕рд╛рдареА рд╕реНрдХреЕрдлреЛрд▓реНрдб рд░реЛрд▓рдЖрдЙрдЯрд╕рд╛рдареА рд╕рдВрдмрдВрдзрд┐рдд рдкрд╛рдЗрдкрд▓рд╛рдЗрдирдЪреЗ рд╡рд░реНрдгрди рдХрд░рдгреНрдпрд╛рд╕ рдорджрдд рдХрд░рддреЗ.

рд╕реНрдХреЕрдлреЛрд▓реНрдбрдЪрд╛ рд╕реНрддреНрд░реЛрдд рдХреЛрдб Go рдордзреНрдпреЗ рд▓рд┐рд╣рд┐рд▓реЗрд▓рд╛ рдЖрд╣реЗ, рджреНрд╡рд╛рд░рд╛ рд╡рд┐рддрд░рд┐рдд рдореЛрдлрдд Apache рдкрд░рд╡рд╛рдирд╛ 2.0 (GitHub) рдЕрдВрддрд░реНрдЧрдд.

рдЪрд▓рд╛ рдореБрдЦреНрдп рдХрд╛рд░реНрдпреЗ рдЖрдгрд┐ рд╡реИрд╢рд┐рд╖реНрдЯреНрдпреЗ рдкрд╛рд╣реВ. рдкреНрд░рдердо рдЦрд╛рд▓реАрд▓ рд╕рдорд╛рд╡рд┐рд╖реНрдЯреАрдд рдЖрд╣реЗ:

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

рдЖрддрд╛ рд╡реИрд╢рд┐рд╖реНрдЯреНрдпрд╛рдВрдмрджреНрджрд▓:

  • рд╕реНрдХрд╛рдлреЛрд▓реНрдбрдордзреНрдпреЗ рд╕реНрд╡рддрдГрдЪ рдХреНрд▓рд╕реНрдЯрд░-рд╕рд╛рдЗрдб рдШрдЯрдХ рдирд╛рд╣реАрдд. рдореНрд╣рдгрдЬреЗрдЪ, рдпрд╛ рдпреБрдЯрд┐рд▓рд┐рдЯреАрдЪрд╛ рд╡рд╛рдкрд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдХреБрдмрд░реНрдиреЗрдЯреНрд╕рд▓рд╛ рдЖрдгрдЦреА рдХреЙрдиреНрдлрд┐рдЧрд░ рдХрд░рдгреНрдпрд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╛рд╣реА.
  • рддреБрдордЪреНрдпрд╛ рдЕрд░реНрдЬрд╛рд╕рд╛рдареА рд╡реЗрдЧрд╡реЗрдЧрд│реНрдпрд╛ рдкрд╛рдЗрдкрд▓рд╛рдЗрди. рддреБрдореНтАНрд╣реА рд╡рд┐рдХрд╕реАрдд рдХрд░рдд рдЕрд╕рддрд╛рдирд╛ рддреБрдореНтАНрд╣рд╛рд▓рд╛ рд╕реНтАНрдерд╛рдирд┐рдХ Minikube рд╡рд░ рдХреЛрдб рд░реЛрд▓ рдЖрдЙрдЯ рдХрд░рдгреНтАНрдпрд╛рдЪреА рдЖрд╡рд╢реНтАНрдпрдХрддрд╛ рдЖрд╣реЗ рдЖрдгрд┐ рдирдВрддрд░ рд╕реНтАНрдЯреЗрдЬ рдХрд┐рдВрд╡рд╛ рдкреНрд░реЙрдбрдХреНтАНрд╢рдирд╕рд╛рдареА? рдпрд╛ рд╣реЗрддреВрдиреЗ рдЖрд╣реЗрдд рдкреНрд░реЛрдлрд╛рдЗрд▓ рдЖрдгрд┐ рд╡рд╛рдкрд░рдХрд░реНрддрд╛ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди, рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд▓ рдЖрдгрд┐ рдзреНрд╡рдЬ, рдЬреЗ рддреБрдореНрд╣рд╛рд▓рд╛ рдПрдХрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╛рд╕рд╛рдареА рд╡реЗрдЧрд╡реЗрдЧрд│реНрдпрд╛ рдкрд╛рдЗрдкрд▓рд╛рдЗрдирдЪреЗ рд╡рд░реНрдгрди рдХрд░рдгреНрдпрд╛рд╕ рдЕрдиреБрдорддреА рджреЗрддрд╛рдд.
  • CLI. YAML рдордзреНрдпреЗ рдлрдХреНрдд рдХрдиреНрд╕реЛрд▓ рдпреБрдЯрд┐рд▓рд┐рдЯреА рдЖрдгрд┐ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди. рдЗрдВрдЯрд░рдиреЗрдЯрд╡рд░ рдЖрдкрдг рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рдЪреНрдпрд╛ рдкреНрд░рдпрддреНрдирд╛рдВрдЪреЗ рд╕рдВрджрд░реНрдн рд╢реЛрдзреВ рд╢рдХрддрд╛ рдкреНрд░рд╛рдпреЛрдЧрд┐рдХ GUI, рддрдерд╛рдкрд┐, рдпрд╛ рдХреНрд╖рдгреА рдпрд╛рдЪрд╛ рдЕрд░реНрде рдЕрд╕рд╛ рдЖрд╣реЗ рдХреА рдПрдЦрд╛рджреНрдпрд╛рд▓рд╛ рддреНрдпрд╛рдЪреА рдЧрд░рдЬ рдЖрд╣реЗ, рдкрд░рдВрддреБ рдЦрд░реЛрдЦрд░ рдирд╛рд╣реА.
  • рдореЙрдбреНрдпреБрд▓реЕрд░рд┐рдЯреА. рд╕реНрдХреЕрдлреЛрд▓реНрдб рд╣рд╛ рдПрдХ рд╕реНрд╡рддрдВрддреНрд░ рдХрд╛рдкрдгреА рдпрдВрддреНрд░ рдирд╛рд╣реА, рдкрд░рдВрддреБ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдпрд╛рдВрд╕рд╛рдареА рд╡реИрдпрдХреНрддрд┐рдХ рдореЙрдбреНрдпреВрд▓ рдХрд┐рдВрд╡рд╛ рд╡рд┐рджреНрдпрдорд╛рди рдЙрдкрд╛рдп рд╡рд╛рдкрд░рдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХрд░рддреЛ.

рдирдВрддрд░рдЪреЗ рдЙрджрд╛рд╣рд░рдг:

  • рдЕрд╕реЗрдВрдмреНрд▓реА рд╕реНрдЯреЗрдЬрд╡рд░ рдЖрдкрдг рд╣реЗ рд╡рд╛рдкрд░реВ рд╢рдХрддрд╛:
    • рдбреЙрдХрд░ рдмрд┐рд▓реНрдб рд╕реНрдерд╛рдирд┐рдХ рдкрд╛рддрд│реАрд╡рд░, рдХрдирд┐рдХреЛ рд╡рд╛рдкрд░реВрди рдХреНрд▓рд╕реНрдЯрд░рдордзреНрдпреЗ рдХрд┐рдВрд╡рд╛ Google рдХреНрд▓рд╛рдЙрдб рдмрд┐рд▓реНрдбрдордзреНрдпреЗ;
    • рд╕реНрдерд╛рдирд┐рдХ рдкрд╛рддрд│реАрд╡рд░ рдмреЕрдЭреЗрд▓;
    • Jib Maven рдЖрдгрд┐ Jib Gradle рд╕реНрдерд╛рдирд┐рдХ рдкрд╛рддрд│реАрд╡рд░ рдХрд┐рдВрд╡рд╛ Google рдХреНрд▓рд╛рдЙрдб рдмрд┐рд▓реНрдбрдордзреНрдпреЗ;
    • рд╕рд╛рдиреБрдХреВрд▓ рдмрд┐рд▓реНрдб рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реНрдерд╛рдирд┐рдХ рдкрд╛рддрд│реАрд╡рд░ рдЪрд╛рд▓рддрд╛рдд. рддреБрдореНрд╣рд╛рд▓рд╛ рджреБрд╕рд░реЗ (рдЕрдзрд┐рдХ рд▓рд╡рдЪрд┐рдХ/рдкрд░рд┐рдЪрд┐рдд/...) рдмрд┐рд▓реНрдб рд╕реЛрд▓реНрдпреВрд╢рди рдЪрд╛рд▓рд╡рд╛рдпрдЪреЗ рдЕрд╕рд▓реНрдпрд╛рд╕, рддреНрдпрд╛рдЪреЗ рд╡рд░реНрдгрди рд╕реНрдХреНрд░рд┐рдкреНрдЯрдордзреНрдпреЗ рдХреЗрд▓реЗ рдЖрд╣реЗ рдЬреЗрдгреЗрдХрд░реВрди рд╕реНрдХреЕрдлреЛрд▓реНрдб рддреЗ рд▓реЙрдиреНрдЪ рдХрд░реЗрд▓ (рджрд╕реНрддрдРрд╡рдЬреАрдХрд░рдгрд╛рддреАрд▓ рдЙрджрд╛рд╣рд░рдг). рд╣реЗ рддреБрдореНрд╣рд╛рд▓рд╛ рдХреЛрдгрддреНрдпрд╛рд╣реА рдХрд▓реЗрдХреНрдЯрд░рдЪрд╛ рд╡рд╛рдкрд░ рдХрд░рдгреНрдпрд╛рд╕ рдЕрдиреБрдорддреА рджреЗрддреЗ рдЬреНрдпрд╛рд▓рд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╡рд╛рдкрд░реВрди рдХреЙрд▓ рдХреЗрд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ;
  • рдЪрд╛рдЪрдгреА рдЯрдкреНрдкреНрдпрд╛рд╡рд░, рдЖрдзреАрдЪ рдирдореВрдж рдХреЗрд▓реЗ рдЖрд╣реЗ рдХрдВрдЯреЗрдирд░-рд╕реНрдЯреНрд░рдХреНрдЪрд░-рдЪрд╛рдЪрдгреА;
  • рдЙрдкрдпреЛрдЬрдирд╛рд╕рд╛рдареА рдЦрд╛рд▓реАрд▓ рдкреНрд░рджрд╛рди рдХреЗрд▓реЗ рдЖрд╣реЗрдд:
    • рдХреБрдмреЗрдХреНрдЯрд▓;
    • рд╣реЗрд▓реНрдо;
    • рд╕рд╛рдиреБрдХреВрд▓рд┐рдд рдХрд░рд╛.

рдпрд╛рдмрджреНрджрд▓ рдзрдиреНрдпрд╡рд╛рдж, рд╕реНрдХрд╛рдлреЛрд▓реНрдбрд▓рд╛ рдПрдХ рдЕрджреНрд╡рд┐рддреАрдп рдореНрд╣рдЯрд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ рд╕реАрдЖрдп/рд╕реАрдбреА рдмрд╛рдВрдзрдгреНрдпрд╛рд╕рд╛рдареА рдлреНрд░реЗрдорд╡рд░реНрдХ. рд╣реЗ рд╡рд╛рдкрд░рддрд╛рдирд╛ рд╡рд░реНрдХрдлреНрд▓реЛрдЪреЗ рдЙрджрд╛рд╣рд░рдг рдпреЗрдереЗ рдЖрд╣реЗ (рдкреНрд░реЛрдЬреЗрдХреНрдЯ рджрд╕реНрддрдРрд╡рдЬреАрдХрд░рдгрд╛рддреВрди):

рдХреБрдмрд░реНрдиреЗрдЯреНрд╕рдЪреНрдпрд╛ рд╡рд┐рдХрд╛рд╕рд╛рд╕рд╛рдареА рд╕реНрдХреЕрдлреЛрд▓реНрдбрдЪреЗ рдкреБрдирд░рд╛рд╡рд▓реЛрдХрди

рд╕реНрдХреЕрдлреЛрд▓реНрдбрдЪреЗ рдХрд╛рд░реНрдп рд╕рд░реНрд╡рд╕рд╛рдзрд╛рд░рдгрдкрдгреЗ рдХрд╕реЗ рджрд┐рд╕рддреЗ?

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

рдХреБрдмрд░реНрдиреЗрдЯреНрд╕рдЪреНрдпрд╛ рд╡рд┐рдХрд╛рд╕рд╛рд╕рд╛рдареА рд╕реНрдХреЕрдлреЛрд▓реНрдбрдЪреЗ рдкреБрдирд░рд╛рд╡рд▓реЛрдХрди
рд╕реНрдХрд╛рдлреЛрд▓реНрдб рдСрдкрд░реЗрд╢рдирдЪреНрдпрд╛ рдореБрдЦреНрдп рдЯрдкреНрдкреНрдпрд╛рдВрдЪреЗ рдЪрд┐рддреНрд░рдг

рд╕рд░рд╛рд╡. Skaffold рдкреНрд░рдпрддреНрди рдХрд░рдд рдЖрд╣реЗ

Skaffold рдЪрд╛ рд╡рд╛рдкрд░ рджрд╛рдЦрд╡рдгреНрдпрд╛рд╕рд╛рдареА, рдореА рдПрдХ рдЙрджрд╛рд╣рд░рдг рдШреЗрдИрди GitHub рдкреНрд░рдХрд▓реНрдк рднрд╛рдВрдбрд╛рд░... рддрд╕реЗ, рддреЗрдереЗ рдЖрдкрдг рдЗрддрд░ рдЕрдиреЗрдХ рдЙрджрд╛рд╣рд░рдгреЗ рд╢реЛрдзреВ рд╢рдХрддрд╛ рдЬреЗ рд╡рд┐рд╡рд┐рдз рддрдкрд╢реАрд▓ рд╡рд┐рдЪрд╛рд░рд╛рдд рдШреЗрддрд╛рдд. рдореА рд╕рд░реНрд╡ рдХреНрд░рд┐рдпрд╛ рд╕реНрдерд╛рдирд┐рдХ рдкрд╛рддрд│реАрд╡рд░ Minikube рдордзреНрдпреЗ рдХрд░реАрди. рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рд╕реЛрдкреЗ рдЖрд╣реЗ рдЖрдгрд┐ рдХрд╛рд╣реА рдорд┐рдирд┐рдЯреЗ рд▓рд╛рдЧрддрд╛рдд рдЖрдгрд┐ рд╕реБрд░реВ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рддреБрдореНрд╣рд╛рд▓рд╛ 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

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

~/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 рдордзреНрдпреЗ рд╣рд╛ рдХреЛрдб рд╕реНрдерд╛рдирд┐рдХ рдкрд╛рддрд│реАрд╡рд░ рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА Go рдХреЛрдб рдЖрдгрд┐ рд╕рд╛рдзреНрдпрд╛ рдбреЙрдХрд░рдлрд╛рдИрд▓реНрд╕ рдЕрд╕рддрд╛рдд:

~/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/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, рдЬреНрдпрд╛рдирдВрддрд░ Skaffold рд░рд┐рдореЛрдЯ рд░реЗрдЬрд┐рд╕реНрдЯреНрд░реАрдордзреНрдпреЗ рдкреНрд░рддрд┐рдорд╛ рдврдХрд▓рдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХрд░рдгрд╛рд░ рдирд╛рд╣реА. рддреБрдореНтАНрд╣реА рд╕реНтАНрдерд╛рдирд┐рдХрд░рд┐рддреНрдпрд╛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдд рдЕрд╕рд▓реНтАНрдпрд╛рд╕, рддреБрдореНтАНрд╣реА рд╕реНтАНрдерд╛рдирд┐рдХрдкрдгреЗ рдкреНрд░рддрд┐рдорд╛ рддрдпрд╛рд░ рдХрд░рдгреНтАНрдпрд╛рд╕рд╛рдареА рдпрд╛ рдХрдорд╛рдВрдбрдЪрд╛ рд╡рд╛рдкрд░ рдХрд░реВ рд╢рдХрддрд╛.

рдкрд░рдд 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/, рдореНрд╣рдгрдЬреЗ рдЬреНрдпрд╛ рд╕рдВрджрд░реНрднрд╛рдордзреНрдпреЗ рдкреНрд░рддрд┐рдорд╛ рд╕рдВрдХрд▓рд┐рдд рдХреЗрд▓реА рдЬрд╛рддреЗ рддреЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреЗрд▓реЗ рдЖрд╣реЗ.
  • рдбрд┐рдкреНрд▓реЙрдпрдореЗрдВрдЯ рд╕реНрдЯреЗрдЬрд╡рд░, рд╣реЗ рдирд┐рд╢реНрдЪрд┐рдд рдХреЗрд▓реЗ рдЖрд╣реЗ рдХреА рдЖрд╡рд╢реНрдпрдХ рдореЕрдирд┐рдлреЗрд╕реНрдЯрд╕рд╛рдареА рдЖрдореНрд╣реА рдХреБрдмреЗрдХреНрдЯрд▓ рдЖрдгрд┐ рдорд╛рд╕реНрдХ рд╡рд╛рдкрд░реВ.
  • PortForward: рдЖрдореНрд╣реА рд╕рд╛рдорд╛рдиреНрдпрддрдГ рдХрд╕реЗ рд╡рд╛рдкрд░реВрди рдкреЛрд░реНрдЯ рдлреЙрд░рд╡рд░реНрдб рдХрд░рддреЛ рддреНрдпрд╛рдкреНрд░рдорд╛рдгреЗ kubectl port-forward, рдЖрдореНрд╣реА Skaffold рд▓рд╛ рдпрд╛ рдХрдорд╛рдВрдбрд▓рд╛ рдХреЙрд▓ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╕реВрдЪрдирд╛ рджреЗрддреЛ. рдпрд╛ рдкреНрд░рдХрд░рдгрд╛рдд, рд╕реНрдерд╛рдирд┐рдХ рдкреЛрд░реНрдЯ 9000 рдирд╛рд╡рд╛рд╕рд╣ рддреИрдирд╛рддреАрдордзреНрдпреЗ 8080 рд╡рд░ рдкрд╛рдард╡рд▓реЗ рдЬрд╛рддреЗ. leeroy-web.

рдкреНрд░рдХреНрд╖реЗрдкрдг рдХрд░рдгреНрдпрд╛рдЪреА рд╡реЗрд│ рдЖрд▓реА рдЖрд╣реЗ skaffold dev: рдХрд╛рд░реНрдпрд╕рдВрдШ рдПрдХ рд╕рддрдд "рдлреАрдбрдмреЕрдХ рд▓реВрдк" рддрдпрд╛рд░ рдХрд░реЗрд▓, рдЙрджрд╛. рддреЗ рдХреЗрд╡рд│ рд╕рд░реНрд╡ рдХрд╛рд╣реА рдЧреЛрд│рд╛ рдХрд░реЗрд▓ рдЖрдгрд┐ рдХреНрд▓рд╕реНрдЯрд░рдордзреНрдпреЗ рддреИрдирд╛рдд рдХрд░реЗрд▓, рдкрд░рдВрддреБ рддреНрдпрд╛ рдХреНрд╖рдгреА рдкреЙрдбреНрд╕рдЪреНрдпрд╛ рд╕реНрдерд┐рддреАрдмрджреНрджрд▓ рджреЗрдЦреАрд▓ рд╕рд╛рдВрдЧреЗрд▓, рдмрджрд▓рд╛рдВрдЪреЗ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░реЗрд▓ рдЖрдгрд┐ рдкреЙрдбреНрд╕рдЪреА рд╕реНрдерд┐рддреА рдЕрджреНрдпрддрдирд┐рдд рдХрд░реЗрд▓.

рдпреЗрдереЗ рдкреНрд░рдХреНрд╖реЗрдкрдг рдкрд░рд┐рдгрд╛рдо рдЖрд╣реЗ skaffold dev --port-forward рдкреБрдиреНрд╣рд╛ рдПрдХрддреНрд░ рдХрд░рддрд╛рдирд╛:

рдХреБрдмрд░реНрдиреЗрдЯреНрд╕рдЪреНрдпрд╛ рд╡рд┐рдХрд╛рд╕рд╛рд╕рд╛рдареА рд╕реНрдХреЕрдлреЛрд▓реНрдбрдЪреЗ рдкреБрдирд░рд╛рд╡рд▓реЛрдХрди

рдкреНрд░рдердо, рдЖрдкрдг рдкрд╛рд╣реВ рд╢рдХрддрд╛ рдХреА рдХреЕрд╢реЗ рд╡рд╛рдкрд░рд▓реА рдЬрд╛рдд рдЖрд╣реЗ. рдкреБрдвреЗ, рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдПрдХрддреНрд░ рдХреЗрд▓рд╛ рдЬрд╛рддреЛ, рддреИрдирд╛рдд рдХреЗрд▓рд╛ рдЬрд╛рддреЛ рдЖрдгрд┐ рдкреЛрд░реНрдЯ рдлреЙрд░рд╡рд░реНрдб рдХреЗрд▓реЗ рдЬрд╛рддрд╛рдд. рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреЗрд▓реНрдпрд╛рдкрд╛рд╕реВрди --port-forward, Skaffold рдиреЗ рдкреЛрд░реНрдЯрд▓рд╛ рдлреЙрд░рд╡рд░реНрдб рдХреЗрд▓реЗ 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, рдлрдХреНрдд рдмрджрд▓рд╛рдВрдЪреЗ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░рдд рдирд╛рд╣реА), рднрд┐рдиреНрди рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рд╡рд╛рдкрд░реВрди.

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

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

рдЖрдгрд┐ рдордзреНрдпреЗ рд╣реЗ рдкреНрд░рдХрд╛рд╢рди Weaveworks рдордзреВрди рдЖрдкрдг рдЙрддреНрдкрд╛рджрдирд╛рд╕рд╛рдареА рдкрд╛рдЗрдкрд▓рд╛рдЗрди рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рдЪреЗ рдЙрджрд╛рд╣рд░рдг рд╢реЛрдзреВ рд╢рдХрддрд╛.

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

рд╕реНрдХрд╛рдлреЛрд▓реНрдб рд╣реЗ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдПрдХ рд╕реЛрдпреАрд╕реНрдХрд░ рд╕рд╛рдзрди рдЖрд╣реЗ рдЬреНрдпрд╛рдордзреНрдпреЗ рдХреБрдмрд░реНрдиреЗрдЯреНрд╕рд╕рд╛рдареА рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд░реЛрд▓ рдЖрдЙрдЯ рдХрд░рдгреЗ рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдЖрд╣реЗ рдЖрдгрд┐ рддреЗ рдкреНрд░рд╛рдореБрдЦреНрдпрд╛рдиреЗ рд╡рд┐рдХрд╛рд╕рд╛рдЪреНрдпрд╛ рдЧрд░рдЬрд╛рдВрд╡рд░ рдХреЗрдВрджреНрд░рд┐рдд рдЖрд╣реЗ. рд╡рд┐рдХрд╕рдХрд╛рдЪреНрдпрд╛ рдореВрд▓рднреВрдд рдЧрд░рдЬрд╛ рд╡рд┐рдЪрд╛рд░рд╛рдд рдШреЗрдгрд╛рд░реА "рд▓рд╣рд╛рди" рдкрд╛рдЗрдкрд▓рд╛рдЗрди рддрдпрд╛рд░ рдХрд░рдгреЗ рд╣реЗ рдЕрдЧрджреА рд╕реЛрдкреЗ рдХрд░рддреЗ, рдкрд░рдВрддреБ рдЗрдЪреНрдЫрд┐рдд рдЕрд╕рд▓реНрдпрд╛рд╕, рдЖрдкрдг рдореЛрдареНрдпрд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЖрдпреЛрдЬрд┐рдд рдХрд░реВ рд╢рдХрддрд╛. рд╕реАрдЖрдп/рд╕реАрдбреА рдкреНрд░рдХреНрд░рд┐рдпреЗрдордзреНрдпреЗ рд╕реНрдХрд╛рдлреЛрд▓реНрдб рд╡рд╛рдкрд░рдгреНрдпрд╛рдЪреЗ рд╕реНрдкрд╖реНрдЯ рдЙрджрд╛рд╣рд░рдгрд╛рдВрдкреИрдХреА рдПрдХ рдореНрд╣рдгреВрди рджрд┐рд▓реЗ рдЖрд╣реЗ рдЕрд╢рд╛ рдЪрд╛рдЪрдгреА рдкреНрд░рдХрд▓реНрдк рдХреБрдмрд░реНрдиреЗрдЯреНрд╕, gRPC, Istio рдЖрдгрд┐ OpenCensus рдЯреНрд░реЗрд╕рд┐рдВрдЧрдЪреА рдХреНрд╖рдорддрд╛ рд╡рд╛рдкрд░реВрди 10 рдорд╛рдпрдХреНрд░реЛ рд╕рд░реНрд╡реНрд╣рд┐рд╕реЗрд╕.

GitHub рд╡рд░ рд╕реНрдХреЕрдлреЛрд▓реНрдбрдХрдбреЗ рдЖрдзреАрдкрд╛рд╕реВрдирдЪ рдЬрд╡рд│рдкрд╛рд╕ 8000+ рддрд╛рд░реЗ рдЖрд╣реЗрдд, Google рдиреЗ рд╡рд┐рдХрд╕рд┐рдд рдХреЗрд▓реЗ рдЖрд╣реЗ рдЖрдгрд┐ рддреНрдпрд╛рдЪрд╛ рдПрдХ рднрд╛рдЧ рдЖрд╣реЗ Google ContainerTools - рд╕рд░реНрд╡рд╕рд╛рдзрд╛рд░рдгрдкрдгреЗ, рдпрд╛ рдХреНрд╖рдгреА рдЕрд╕рд╛ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдареЗрд╡рдгреНрдпрд╛рдЪреЗ рд╕рд░реНрд╡ рдХрд╛рд░рдг рдЖрд╣реЗ рдХреА рдкреНрд░рдХрд▓реНрдк рдЖрдирдВрджрд╛рдиреЗ рд╡рд┐рдХрд╕рд┐рдд рд╣реЛрдИрд▓.

PS

рдЖрдордЪреНрдпрд╛ рдмреНрд▓реЙрдЧрд╡рд░ рджреЗрдЦреАрд▓ рд╡рд╛рдЪрд╛:

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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛