Kubernetes рд╡рд┐рдХрд╛рд╕ рдХреЛ рд▓рд╛рдЧреА Skaffold рдХреЛ рд╕рдореАрдХреНрд╖рд╛

Kubernetes рд╡рд┐рдХрд╛рд╕ рдХреЛ рд▓рд╛рдЧреА Skaffold рдХреЛ рд╕рдореАрдХреНрд╖рд╛

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

NB: рд╡реИрд╕реЗ, рд╣рд╛рдореАрд▓реЗ рдкрд╣рд┐рд▓реЗ рдиреИ рд╣рд╛рдореНрд░реЛ рд╕рд╛рдорд╛рдиреНрдп рдорд╛ Skaffold рдмрд╛рд░реЗ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдХреБрд░рд╛ рдЧрд░рд┐рд╕рдХреЗрдХрд╛ рдЫреМрдВ рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛ рдЙрдкрдХрд░рдгрд╣рд░реВрдХреЛ рд╕рдореАрдХреНрд╖рд╛, рдЬрд╕рдХреЛ рдЬреАрд╡рди Kubernetes рд╕рдВрдЧ рдЬреЛрдбрд┐рдПрдХреЛ рдЫред

рд╕рд┐рджреНрдзрд╛рдиреНрддред рдЙрджреНрджреЗрд╢реНрдп рд░ рдХреНрд╖рдорддрд╛рд╣рд░реВ

рддреНрдпрд╕реЛрднрдП, рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛ рднрдиреНрдиреБрдкрд░реНрджрд╛, Skaffold рд▓реЗ CI/CD рдЪрдХреНрд░ (рдирд┐рд░реНрдорд╛рдг, рдкреБрд╢, рдбрд┐рдкреНрд▓реЛрдп рдЪрд░рдгрд╣рд░реВрдорд╛) рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдЧрд░реНрдиреЗ рд╕рдорд╕реНрдпрд╛ рд╕рдорд╛рдзрд╛рди рдЧрд░реНрджрдЫ, рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рд▓рд╛рдИ рддрддреНрдХрд╛рд▓ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреНрд░рджрд╛рди рдЧрд░реНрджреИ, рдЕрд░реНрдерд╛рддреНред рдкрдЫрд┐рд▓реНрд▓реЛ рдХреЛрдб рдкрд░рд┐рд╡рд░реНрддрдирд╣рд░реВрдХреЛ рдкрд░рд┐рдгрд╛рдо рдЪрд╛рдБрдбреИ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрдиреЗ рдХреНрд╖рдорддрд╛ - Kubernetes рдХреНрд▓рд╕реНрдЯрд░рдорд╛ рдЪрд▓рд┐рд░рд╣реЗрдХреЛ рдЕрджреНрдпрд╛рд╡рдзрд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧрдХреЛ рд░реВрдкрдорд╛ред рд░ рдпрд╕рд▓реЗ рд╡рд┐рднрд┐рдиреНрди рд╕рд░реНрдХрд┐рдЯрд╣рд░реВрдорд╛ рдХрд╛рдо рдЧрд░реНрди рд╕рдХреНрдЫ (рджреЗрд╡, рдЪрд░рдг, рдЙрддреНрдкрд╛рджрди ...), рдЬрд╕рдХреЛ рд▓рд╛рдЧрд┐ Skaffold рд▓реЗ рд░реЛрд▓рдЖрдЙрдЯрдХреЛ рд▓рд╛рдЧрд┐ рд╕рдореНрдмрдиреНрдзрд┐рдд рдкрд╛рдЗрдкрд▓рд╛рдЗрдирд╣рд░реВ рд╡рд░реНрдгрди рдЧрд░реНрди рдорджреНрджрдд рдЧрд░реНрджрдЫред

Skaffold рдХреЛ рд╕реНрд░реЛрдд рдХреЛрдб Go рдорд╛ рд▓реЗрдЦрд┐рдПрдХреЛ рдЫ, рджреНрд╡рд╛рд░рд╛ рд╡рд┐рддрд░рд┐рдд рдирд┐: рд╢реБрд▓реНрдХ Apache рд▓рд╛рдЗрд╕реЗрдиреНрд╕ 2.0 (GitHub) рдЕрдиреНрддрд░реНрдЧрддред

рдореБрдЦреНрдп рдХрд╛рд░реНрдп рд░ рд╕реБрд╡рд┐рдзрд╛рд╣рд░реВ рд╣реЗрд░реМрдВред рдкрд╣рд┐рд▓реЛ рдирд┐рдореНрди рд╕рдорд╛рд╡реЗрд╢:

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

рдЕрдм рд╕реБрд╡рд┐рдзрд╛рд╣рд░реВ рдмрд╛рд░реЗ:

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

рдкрдЫрд┐рд▓реНрд▓реЛрдХреЛ рджреГрд╖реНрдЯрд╛рдиреНрдд:

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

рдпрд╕рдХреЛ рд▓рд╛рдЧрд┐ рдзрдиреНрдпрд╡рд╛рдж, Skaffold рдПрдХ рдЕрджреНрд╡рд┐рддреАрдп рднрдиреНрди рд╕рдХрд┐рдиреНрдЫ CI/CD рдирд┐рд░реНрдорд╛рдгрдХреЛ рд▓рд╛рдЧрд┐ рдврд╛рдБрдЪрд╛ред рдпрд╣рд╛рдБ рдПрдЙрдЯрд╛ рдЙрджрд╛рд╣рд░рдг рдХрд╛рд░реНрдпрдкреНрд░рд╡рд╛рд╣ рдЫ рдЬрдм рдпрд╕рд▓рд╛рдИ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрд╛ (рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛рдЧрдЬрд╛рддрдмрд╛рдЯ):

Kubernetes рд╡рд┐рдХрд╛рд╕ рдХреЛ рд▓рд╛рдЧреА Skaffold рдХреЛ рд╕рдореАрдХреНрд╖рд╛

Skaffold рдХреЛ рдХрд╛рдо рд╕рд╛рдорд╛рдиреНрдп рд╕рд░реНрддрд╣рд░реВрдорд╛ рдХрд╕реНрддреЛ рджреЗрдЦрд┐рдиреНрдЫ?

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

Kubernetes рд╡рд┐рдХрд╛рд╕ рдХреЛ рд▓рд╛рдЧреА Skaffold рдХреЛ рд╕рдореАрдХреНрд╖рд╛
Skaffold рд╕рдЮреНрдЪрд╛рд▓рдирдХреЛ рдореБрдЦреНрдп рдЪрд░рдгрд╣рд░реВрдХреЛ рдЪрд┐рддреНрд░рдг

рдЕрднреНрдпрд╛рд╕ рдЧрд░реНрдиреБрд╣реЛрд╕реНред Skaffold рдкреНрд░рдпрд╛рд╕ рдЧрд░реНрджреИ

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

Skaffold рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН:

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 рд▓реЗ рдЧреЛ рдХреЛрдб рд░ рд╕реНрдерд╛рдиреАрдп рд░реВрдкрдорд╛ рдпреЛ рдХреЛрдб рдирд┐рд░реНрдорд╛рдг рдЧрд░реНрдирдХрд╛ рд▓рд╛рдЧрд┐ рд╕рд╛рдзрд╛рд░рдг рдбрдХрд░рдлрд╛рдЗрд▓рд╣рд░реВ рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрджрдЫ:

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

рдпреЛ рд╕реБрд░реБ рдЧрд░реНрдиреЗ рд╕рдордп рд╣реЛ skaffold dev: рдЯреЛрд▓реАрд▓реЗ рдЪрд▓рд┐рд░рд╣реЗрдХреЛ "рдлрд┐рдбрдмреНрдпрд╛рдХ рд▓реВрдк" рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреЗрдЫ, рдЕрд░реНрдерд╛рддреНред рдпрд╕рд▓реЗ рд╕рдмреИ рдХреБрд░рд╛ рд╕рдЩреНрдХрд▓рди рдЧрд░реНрдиреЗ рд░ рдХреНрд▓рд╕реНрдЯрд░рдорд╛ рдбрд┐рдкреНрд▓реЛрдп рдЧрд░реНрдиреЗ рдорд╛рддреНрд░ рд╣реЛрдЗрди, рддрд░ рдЕрд╣рд┐рд▓реЗрдХреЛ рдкреЛрдбрдХреЛ рдЕрд╡рд╕реНрдерд╛рдмрд╛рд░реЗ рдкрдирд┐ рдмрддрд╛рдЙрдиреЗрдЫ, рдкрд░рд┐рд╡рд░реНрддрдирд╣рд░реВ рдирд┐рдЧрд░рд╛рдиреА рдЧрд░реНрдиреЗ рд░ рдкреЛрдбрд╣рд░реВрдХреЛ рдЕрд╡рд╕реНрдерд╛ рдЕрджреНрдпрд╛рд╡рдзрд┐рдХ рдЧрд░реНрдиреЗред

рдпрд╣рд╛рдБ рдкреНрд░рдХреНрд╖реЗрдкрдг рдкрд░рд┐рдгрд╛рдо рдЫ skaffold dev --port-forward рдкреБрди: рд╕рдВрдпреЛрдЬрди рдЧрд░реНрджрд╛:

Kubernetes рд╡рд┐рдХрд╛рд╕ рдХреЛ рд▓рд╛рдЧреА Skaffold рдХреЛ рд╕рдореАрдХреНрд╖рд╛

рдкрд╣рд┐рд▓реЗ, рддрдкрд╛рдЗрдБ рджреЗрдЦреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рдХрд┐ рдХреНрдпрд╛рд╕ рдкреНрд░рдпреЛрдЧ рднрдЗрд░рд╣реЗрдХреЛ рдЫред рдЕрд░реНрдХреЛ, рдПрдкреНрд▓рд┐рдХреЗрд╕рди рдПрд╕реЗрдореНрдмрд▓, рдбрд┐рдкреНрд▓реЛрдЗ, рд░ рдкреЛрд░реНрдЯрд╣рд░реВ рдлрд░реНрд╡рд╛рд░реНрдб рдЧрд░рд┐рдиреНрдЫред рддреЛрдХрд┐рдПрджреЗрдЦрд┐ --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!!!

рдПрдХреИ рд╕рдордпрдорд╛, Skaffold рдЖрдлреИрдВрд▓реЗ рдХрдиреНрд╕реЛрд▓рдорд╛ рдкрд╣рд┐рд▓реЗ рдЬрд╕реНрддреИ рд╕рдорд╛рди рдЪреАрдЬ рдкреНрд░рджрд░реНрд╢рди рдЧрд░реНрдпреЛ, рдПрдХ рдмрд┐рдиреНрджреБрдХреЛ рдЕрдкрд╡рд╛рджрдХреЛ рд╕рд╛рде: рдпреЛ рдХреЗрд╡рд▓ рд░реЛрд▓ рдЖрдЙрдЯ рднрдпреЛред leeroy-app, рд░ рд╕рдмреИ рдПрдХреИ рдкрдЯрдХ рд╣реЛрдЗрдиред

рдердк рдЕрднреНрдпрд╛рд╕

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

рдХрд╛рдЯрд╛рдЪреЛрдбрд╛ рдорд╛ рдЫ рдЧрд╛рдИрдб рдпреЛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╕рдВрдЧ рдЕрдЭ рд╕рдЬрд┐рд▓реЛ рдЫред рддрд░ рдпрд╕рд▓реЗ Kubernetes, рдПрдкреНрд▓рд┐рдХреЗрд╕рди рд░ Skaffold рдХреЛ рд╕рд╛рдердорд╛ рддрдпрд╛рд░ рд╕реНрдпрд╛рдиреНрдбрдмрдХреНрд╕ рдкреНрд░рджрд╛рди рдЧрд░реНрджрдЫред рдПрдХ рд░рд╛рдореНрд░реЛ рд╡рд┐рдХрд▓реНрдк рдпрджрд┐ рддрдкрд╛рдИрдВ рдзреЗрд░реИ рдЖрдзрд╛рд░рднреВрдд рдХреБрд░рд╛рд╣рд░реВ рдЖрдлреИрдВ рдкреНрд░рдпрд╛рд╕ рдЧрд░реНрди рдЗрдЪреНрдЫреБрдХ рд╣реБрдиреБрд╣реБрдиреНрдЫ рднрдиреЗред

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

рд░ рднрд┐рддреНрд░ рдпреЛ рдкреНрд░рдХрд╛рд╢рди Weaveworks рдмрд╛рдЯ рддрдкрд╛рдИрдВрд▓реЗ рдЙрддреНрдкрд╛рджрдирдХреЛ рд▓рд╛рдЧрд┐ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреЗ рдЙрджрд╛рд╣рд░рдг рдкрд╛рдЙрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред

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

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

Skaffold рд╕рдБрдЧ рдкрд╣рд┐рд▓реЗ рдиреИ GitHub рдорд╛ рд▓рдЧрднрдЧ 8000+ рддрд╛рд░рд╛рд╣рд░реВ рдЫрдиреН, Google рджреНрд╡рд╛рд░рд╛ рд╡рд┐рдХрд╕рд┐рдд рдЧрд░рд┐рдПрдХреЛ рд╣реЛ рд░ рдпрд╕рдХреЛ рдЕрдВрд╢ рд╣реЛ рдЧреБрдЧрд▓ рдХрдиреНрдЯреЗрдирд░ рдЙрдкрдХрд░рдгрд╣рд░реВ - рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛, рдпрд╕ рд╕рдордпрдорд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдЦреБрд╢реАрд╕рд╛рде рд╡рд┐рдХрд╛рд╕ рд╣реБрдиреЗрдЫ рднрдиреНрдиреЗ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдЧрд░реНрдиреЗ рд╣рд░реЗрдХ рдХрд╛рд░рдг рдЫред

PS

рд╣рд╛рдореНрд░реЛ рдмреНрд▓рдЧрдорд╛ рдкрдирд┐ рдкрдвреНрдиреБрд╣реЛрд╕реН:

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

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