рдУрдкрдирд╢рд┐рдлреНрдЯ рдкрд░ рдЖрдзреБрдирд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧ, рднрд╛рдЧ 2: рдЬрдВрдЬреАрд░ рдирд┐рд░реНрдорд┐рдд

рдирдорд╕реНрддреЗ! рдпрд╣ рд╣рдорд╛рд░реА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреА рджреВрд╕рд░реА рдкреЛрд╕реНрдЯ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╣рдо рджрд┐рдЦрд╛рддреЗ рд╣реИрдВ рдХрд┐ Red Hat OpenShift рдкрд░ рдЖрдзреБрдирд┐рдХ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреИрд╕реЗ рддреИрдирд╛рдд рдХрд░реЗрдВред

рдУрдкрдирд╢рд┐рдлреНрдЯ рдкрд░ рдЖрдзреБрдирд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧ, рднрд╛рдЧ 2: рдЬрдВрдЬреАрд░ рдирд┐рд░реНрдорд┐рдд

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

рд╕реНрд╡рдЪреНрдЫ рдмрд┐рд▓реНрдбрд░ рдЫрд╡рд┐

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

рд╕реНрд░реЛрдд-рд╕реЗ-рдЫрд╡рд┐ (S2I)

рдЗрд╕ рдкреЛрд╕реНрдЯ рдореЗрдВ рд╣рдо "S2I рдХреНрдпрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВ" рд╡рд┐рд╖рдп рдкрд░ рдмрд╛рдд рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ (рдЖрдк рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╣рд╛рдВ), рд▓реЗрдХрд┐рди рд╡реЗрдм рдРрдк рдмрд┐рд▓реНрдбрд░ рдЫрд╡рд┐ рдХреНрдпрд╛ рдХрд░рддреА рд╣реИ, рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рджреЛ рдЪрд░рдгреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рд╣реЛрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред

рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдЪрд░рдг

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

рд╡реЗрдм рдРрдк рдмрд┐рд▓реНрдбрд░ рдЫрд╡рд┐ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдЖрдкрдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рдирд┐рд░реНрднрд░рддрд╛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдФрд░ рдмрд┐рд▓реНрдб рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╝рд┐рдореНрдореЗрджрд╛рд░ рд╣реИред рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЗрдХрдЯреНрдард╛ рдХрд░реЗрдВ. рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдмрд┐рд▓реНрдбрд░ рдЫрд╡рд┐ npm рд░рди рдмрд┐рд▓реНрдб рдирд┐рд░реНрдорд╛рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ NPM_BUILD рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдЬреИрд╕рд╛ рдХрд┐ рд╣рдордиреЗ рдкрд╣рд▓реЗ рдХрд╣рд╛, рддреИрдпрд╛рд░, рдкрд╣рд▓реЗ рд╕реЗ рдирд┐рд░реНрдорд┐рдд рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рд╕реНрдерд╛рди рдЗрд╕ рдмрд╛рдд рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдХреМрди рд╕реЗ рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд░рд┐рдПрдХреНрдЯ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ ./build рдлрд╝реЛрд▓реНрдбрд░ рд╣реЛрдЧрд╛, рдФрд░ Angular рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдпрд╣ project_name/dist рдлрд╝реЛрд▓реНрдбрд░ рд╣реЛрдЧрд╛ред рдФрд░, рдЬреИрд╕рд╛ рдХрд┐ рдкрд┐рдЫрд▓реА рдкреЛрд╕реНрдЯ рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЖрдЙрдЯрдкреБрдЯ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХрд╛ рд╕реНрдерд╛рди, рдЬреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рд╕реЗрдЯ рд╣реИ, рдХреЛ OUTPUT_DIR рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЦреИрд░, рдЪреВрдВрдХрд┐ рдЖрдЙрдЯрдкреБрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдХрд╛ рд╕реНрдерд╛рди рдлреНрд░реЗрдорд╡рд░реНрдХ рд╕реЗ рдлреНрд░реЗрдорд╡рд░реНрдХ рдореЗрдВ рднрд┐рдиреНрди рд╣реЛрддрд╛ рд╣реИ, рдЖрдк рдмрд╕ рдЬреЗрдирд░реЗрдЯ рдХрд┐рдП рдЧрдП рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рдЫрд╡рд┐ рдореЗрдВ рдорд╛рдирдХ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдХреЙрдкреА рдХрд░рддреЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рддреН /opt/apt-root/outputред рдЗрд╕ рд▓реЗрдЦ рдХреЗ рдмрд╛рдХреА рд╣рд┐рд╕реНрд╕реЛрдВ рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рд▓реЗрдХрд┐рди рдЕрднреА рдЖрдЗрдП рдЕрдЧрд▓реЗ рдЪрд░рдг - рд░рди рдЪрд░рдг рдкрд░ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВред

рдЪрд░рдг рдЪрд▓рд╛рдПрдБ

рдпрд╣ рдЪрд░рдг рддрдм рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдЕрд╕реЗрдВрдмрд▓реА рдЪрд░рдг рдХреЗ рджреМрд░рд╛рди рдмрдирд╛рдИ рдЧрдИ рдирдИ рдЫрд╡рд┐ рдкрд░ рдбреЙрдХрд░ рд░рди рдХреЗ рд▓рд┐рдП рдХреЙрд▓ рдХреА рдЬрд╛рддреА рд╣реИред рдУрдкрдирд╢рд┐рдлреНрдЯ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдкрд░ рддреИрдирд╛рдд рдХрд░рддреЗ рд╕рдордп рднреА рдРрд╕рд╛ рд╣реА рд╣реЛрддрд╛ рд╣реИред рдЧрд▓рддреА рдХрд░рдирд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рдПрдБ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рд╕рд░реНрд╡ рдореЙрдбреНрдпреВрд▓ рдЙрдкрд░реЛрдХреНрдд рдорд╛рдирдХ рдЖрдЙрдЯрдкреБрдЯ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд╕реНрдерд┐рдд рд╕реНрдерд┐рд░ рд╕рд╛рдордЧреНрд░реА рдкрд░реЛрд╕рдиреЗ рдХреЗ рд▓рд┐рдПред

рдпрд╣ рд╡рд┐рдзрд┐ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рд╢реАрдШреНрд░рддрд╛ рд╕реЗ рддреИрдирд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫреА рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдо рддреМрд░ рдкрд░ рдЗрд╕ рддрд░рд╣ рд╕реЗ рд╕реНрдерд┐рд░ рд╕рд╛рдордЧреНрд░реА рдкрд░реЛрд╕рдиреЗ рдХреА рдЕрдиреБрд╢рдВрд╕рд╛ рдирд╣реАрдВ рдХреА рдЬрд╛рддреА рд╣реИред рдЦреИрд░, рдЪреВрдБрдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╣рдо рдХреЗрд╡рд▓ рд╕реНрдерд┐рд░ рд╕рд╛рдордЧреНрд░реА рдкрд░реЛрд╕рддреЗ рд╣реИрдВ, рд╣рдореЗрдВ рдЕрдкрдиреА рдЫрд╡рд┐ рдХреЗ рдЕрдВрджрд░ Node.js рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ - рдПрдХ рд╡реЗрдм рд╕рд░реНрд╡рд░ рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдЧрд╛ред

рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рд╕рдВрдпреЛрдЬрди рдХрд░рддреЗ рд╕рдордп рд╣рдореЗрдВ рдПрдХ рдЪреАрдЬрд╝ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╕рдордп рд╣рдореЗрдВ рджреВрд╕рд░реА рдЪреАрдЬрд╝ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдЬрдВрдЬреАрд░рджрд╛рд░ рдирд┐рд░реНрдорд╛рдг рдХрд╛рдо рдореЗрдВ рдЖрддреЗ рд╣реИрдВред

рдЬрдВрдЬреАрд░рджрд╛рд░ рдирд┐рд░реНрдорд╛рдг

рд╡реЗ рдЗрд╕реА рдмрд╛рд░реЗ рдореЗрдВ рд▓рд┐рдЦрддреЗ рд╣реИрдВ рдЬрдВрдЬреАрд░рджрд╛рд░ рдирд┐рд░реНрдорд╛рдг рдУрдкрдирд╢рд┐рдлреНрдЯ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ:

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

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

рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдо рд╡реЗрдм рдРрдк рдмрд┐рд▓реНрдбрд░ рдЫрд╡рд┐ рдХреЛ "рд╢реБрджреНрдз" рдмрд┐рд▓реНрдбрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╕рд╛рде рд╣реА рдПрдХ рдЫреЛрдЯреА рд░рдирдЯрд╛рдЗрдо рдЫрд╡рд┐ рднреА рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЕрдм рдЗрд╕реЗ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрджрд╛рд╣рд░рдг рд╕реЗ рджреЗрдЦрддреЗ рд╣реИрдВред

рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рд╣рдо рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ рд╕рд░рд▓ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЖрд╡реЗрджрди, create-react-app рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ред

рдЗрд╕рд╕реЗ рд╣рдореЗрдВ рд╕рдм рдХреБрдЫ рдПрдХ рд╕рд╛рде рд░рдЦрдиреЗ рдореЗрдВ рдорджрдж рдорд┐рд▓реЗрдЧреА рдУрдкрдирд╢рд┐рдлреНрдЯ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдлрд╝рд╛рдЗрд▓.

рдЖрдЗрдП рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рджреЗрдЦреЗрдВ, рдФрд░ рдкреИрд░рд╛рдореАрдЯрд░ рдЕрдиреБрднрд╛рдЧ рд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВред

parameters:
  - name: SOURCE_REPOSITORY_URL
    description: The source URL for the application
    displayName: Source URL
    required: true
  - name: SOURCE_REPOSITORY_REF
    description: The branch name for the application
    displayName: Source Branch
    value: master
    required: true
  - name: SOURCE_REPOSITORY_DIR
    description: The location within the source repo of the application
    displayName: Source Directory
    value: .
    required: true
  - name: OUTPUT_DIR
    description: The location of the compiled static files from your web apps builder
    displayName: Output Directory
    value: build
    required: false

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

рдЖрдЗрдП рдЕрдм ImageStreams рдЕрдиреБрднрд╛рдЧ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВред

- apiVersion: v1
  kind: ImageStream
  metadata:
    name: react-web-app-builder  // 1 
  spec: {}
- apiVersion: v1
  kind: ImageStream
  metadata:
    name: react-web-app-runtime  // 2 
  spec: {}
- apiVersion: v1
  kind: ImageStream
  metadata:
    name: web-app-builder-runtime // 3
  spec:
    tags:
    - name: latest
      from:
        kind: DockerImage
        name: nodeshift/ubi8-s2i-web-app:10.x
- apiVersion: v1
  kind: ImageStream
  metadata:
    name: nginx-image-runtime // 4
  spec:
    tags:
    - name: latest
      from:
        kind: DockerImage
        name: 'centos/nginx-112-centos7:latest'

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

рддреАрд╕рд░реА рдЫрд╡рд┐ рд╡реЗрдм-рдРрдк-рдмрд┐рд▓реНрдбрд░ рд╣реИ рдФрд░ рдпрд╣ nodeshift/ubi8-s2i-web-app рд╕реЗ рдЖрддреА рд╣реИ рдЬрд┐рд╕реЗ 10.x рдкрд░ рдЯреИрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдбреЙрдХрдЯрд░ рд╣рдм.

рдЪреМрдереА рдирд╡реАрдирддрдо рдЯреИрдЧ рдХреЗ рд╕рд╛рде рдПрдХ рдПрдирдЬреАрдЖрдИрдПрдирдПрдХреНрд╕ рдЫрд╡рд┐ (рд╕рдВрд╕реНрдХрд░рдг 1.12) рд╣реИ рдбреЙрдХрдЯрд░ рд╣рдм.

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

рджреВрд╕рд░реА рдЫрд╡рд┐ - рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рд╡реЗрдм-рдРрдк-рд░рдирдЯрд╛рдЗрдо - nginx-image-runtime рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рд╡реЗрдм-рдРрдк-рдмрд┐рд▓реНрдбрд░ рдЫрд╡рд┐ рд╕реЗ рдХреБрдЫ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рдВрдпреЛрдЬрди рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╣реЛрдЧреАред рдЗрд╕ рдЫрд╡рд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдХреЗ рджреМрд░рд╛рди рднреА рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдЗрд╕рдореЗрдВ рдХреЗрд╡рд▓ рд╣рдорд╛рд░реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рд╡реЗрдм рд╕рд░реНрд╡рд░ рдФрд░ рд╕реНрдерд┐рд░ HTML, рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ, рд╕реАрдПрд╕рдПрд╕ рд╢рд╛рдорд┐рд▓ рд╣реЛрдЧрд╛ред

рдЕрд╕реНрдкрд╖реНрдЯ? рдЖрдЗрдП рдЕрдм рдмрд┐рд▓реНрдб рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ рдФрд░ рдпрд╣ рдереЛрдбрд╝рд╛ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред

рд╣рдорд╛рд░реЗ рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЗрдВ рджреЛ рдмрд┐рд▓реНрдб рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╣реИрдВред рдпрд╣рд╛рдБ рдкрд╣рд▓рд╛ рд╣реИ, рдФрд░ рдпрд╣ рдХрд╛рдлреА рдорд╛рдирдХ рд╣реИ:

  apiVersion: v1
  kind: BuildConfig
  metadata:
    name: react-web-app-builder
  spec:
    output:
      to:
        kind: ImageStreamTag
        name: react-web-app-builder:latest // 1
    source:   // 2 
      git:
        uri: ${SOURCE_REPOSITORY_URL}
        ref: ${SOURCE_REPOSITORY_REF}
      contextDir: ${SOURCE_REPOSITORY_DIR}
      type: Git
    strategy:
      sourceStrategy:
        env:
          - name: OUTPUT_DIR // 3 
            value: ${OUTPUT_DIR}
        from:
          kind: ImageStreamTag
          name: web-app-builder-runtime:latest // 4
        incremental: true // 5
      type: Source
    triggers: // 6
    - github:
        secret: ${GITHUB_WEBHOOK_SECRET}
      type: GitHub
    - type: ConfigChange
    - imageChange: {}
      type: ImageChange

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

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

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

5 рд▓реЗрдмрд▓ рд╡рд╛рд▓реА рд▓рд╛рдЗрди рдХрд╣рддреА рд╣реИ рдХрд┐ рд╣рдо рдПрдХ рд╡реГрджреНрдзрд┐рд╢реАрд▓ рдмрд┐рд▓реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдпрджрд┐ S2I рдЫрд╡рд┐ рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреА рд╣реИ, рдФрд░ рд╡реЗрдм рдРрдк рдмрд┐рд▓реНрдбрд░ рдЫрд╡рд┐ рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреА рд╣реИред рдкрд╣рд▓реЗ рд▓реЙрдиреНрдЪ рдкрд░, рдЕрд╕реЗрдВрдмрд▓реА рдЪрд░рдг рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЫрд╡рд┐ рдиреЛрдб_рдореЙрдбреНрдпреВрд▓ рдлрд╝реЛрд▓реНрдбрд░ рдХреЛ рдПрдХ рд╕рдВрдЧреНрд░рд╣ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рд╣реЗрдЬреЗрдЧреАред рдлрд┐рд░, рдмрд╛рдж рдХреЗ рд░рди рдкрд░, рдЫрд╡рд┐ рдирд┐рд░реНрдорд╛рдг рд╕рдордп рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдлрд╝реЛрд▓реНрдбрд░ рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдЕрдирдЬрд╝рд┐рдк рдХрд░ рджреЗрдЧреАред

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

рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░ рдпрд╣ рдПрдХ рдХрд╛рдлреА рдорд╛рдирдХ рдмрд┐рд▓реНрдб рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╣реИред

рдЕрдм рдЖрдЗрдП рджреВрд╕рд░реЗ рдмрд┐рд▓реНрдб рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВред рдпрд╣ рдкрд╣рд▓реЗ рд╡рд╛рд▓реЗ рдХреЗ рд╕рдорд╛рди рд╣реА рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЕрдВрддрд░ рд╣реИред

apiVersion: v1
  kind: BuildConfig
  metadata:
    name: react-web-app-runtime
  spec:
    output:
      to:
        kind: ImageStreamTag
        name: react-web-app-runtime:latest // 1
    source: // 2
      type: Image
      images:                              
        - from:
            kind: ImageStreamTag
            name: react-web-app-builder:latest // 3
          paths:
            - sourcePath: /opt/app-root/output/.  // 4
              destinationDir: .  // 5
             
    strategy: // 6
      sourceStrategy:
        from:
          kind: ImageStreamTag
          name: nginx-image-runtime:latest
        incremental: true
      type: Source
    triggers:
    - github:
        secret: ${GITHUB_WEBHOOK_SECRET}
      type: GitHub
    - type: ConfigChange
    - type: ImageChange
      imageChange: {}
    - type: ImageChange
      imageChange:
        from:
          kind: ImageStreamTag
          name: react-web-app-builder:latest // 7

рддреЛ рджреВрд╕рд░рд╛ рдмрд┐рд▓реНрдб рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рд╡реЗрдм-рдРрдк-рд░рдирдЯрд╛рдЗрдо рд╣реИ, рдФрд░ рдпрд╣ рдХрд╛рдлреА рдорд╛рдирдХ рд░реВрдк рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред

1 рд▓реЗрдмрд▓ рд╡рд╛рд▓реА рд▓рд╛рдЗрди рдХреЛрдИ рдирдИ рдмрд╛рдд рдирд╣реАрдВ рд╣реИ - рдпрд╣ рдмрд╕ рдЗрддрдирд╛ рдХрд╣рддреА рд╣реИ рдХрд┐ рдмрд┐рд▓реНрдб рдкрд░рд┐рдгрд╛рдо рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рд╡реЗрдм-рдРрдк-рд░рдирдЯрд╛рдЗрдо рдЫрд╡рд┐ рдореЗрдВ рдбрд╛рд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдкрд┐рдЫрд▓реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреА рддрд░рд╣, 2 рд▓реЗрдмрд▓ рд╡рд╛рд▓реА рд▓рд╛рдЗрди рдЗрдВрдЧрд┐рдд рдХрд░рддреА рд╣реИ рдХрд┐ рд╕реНрд░реЛрдд рдХреЛрдб рдХрд╣рд╛рдБ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рдПред рд▓реЗрдХрд┐рди рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрд╣рд╛рдВ рд╣рдо рдпрд╣ рдХрд╣ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рддрд╕реНрд╡реАрд░ рд╕реЗ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЙрд╕ рдЫрд╡рд┐ рд╕реЗ рдЬреЛ рд╣рдордиреЗ рдЕрднреА рдмрдирд╛рдИ рд╣реИ - рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рд╡реЗрдм-рдРрдк-рдмрд┐рд▓реНрдбрд░ рд╕реЗ (3 рд▓реЗрдмрд▓ рд╡рд╛рд▓реА рдкрдВрдХреНрддрд┐ рдореЗрдВ рджрд░реНрд╢рд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ)ред рдЬрд┐рди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рд╣рдо рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рд╡реЗ рдЫрд╡рд┐ рдХреЗ рдЕрдВрджрд░ рд╣реИрдВ рдФрд░ рд╡рд╣рд╛рдВ рдЙрдирдХрд╛ рд╕реНрдерд╛рди 4 рд▓реЗрдмрд▓ рд╡рд╛рд▓реА рдкрдВрдХреНрддрд┐ рдореЗрдВ рд╕реЗрдЯ рд╣реИ, рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ /opt/app-root/output/ рд╣реИред рдпрджрд┐ рдЖрдкрдХреЛ рдпрд╛рдж рд╣реЛ, рддреЛ рдпрд╣ рд╡рд╣ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдВ рд╣рдорд╛рд░реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЙрддреНрдкрдиреНрди рдлрд╝рд╛рдЗрд▓реЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХреА рдЬрд╛рддреА рд╣реИрдВред

рд▓реЗрдмрд▓ 5 рдХреЗ рд╕рд╛рде рд╢рдмреНрдж рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрдВрддрд╡реНрдп рдлрд╝реЛрд▓реНрдбрд░ рдХреЗрд╡рд▓ рд╡рд░реНрддрдорд╛рди рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╣реИ (рдпрд╣ рд╕рдм, рдпрд╛рдж рд░рдЦреЗрдВ, рдУрдкрдирд╢рд┐рдлреНрдЯ рдирд╛рдордХ рдХрд┐рд╕реА рдЬрд╛рджреБрдИ рдЪреАрдЬрд╝ рдХреЗ рдЕрдВрджрд░ рдЪрд▓ рд░рд╣рд╛ рд╣реИ, рди рдХрд┐ рдЖрдкрдХреЗ рд╕реНрдерд╛рдиреАрдп рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░)ред

рд░рдгрдиреАрддрд┐ рдЕрдиреБрднрд╛рдЧ - 6 рд▓реЗрдмрд▓ рд╡рд╛рд▓реА рдкрдВрдХреНрддрд┐ - рднреА рдкрд╣рд▓реЗ рдмрд┐рд▓реНрдб рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд╕рдорд╛рди рд╣реИред рдХреЗрд╡рд▓ рдЗрд╕ рдмрд╛рд░ рд╣рдо nginx-image-runtime рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ, рдЬрд┐рд╕реЗ рд╣рдо рдкрд╣рд▓реЗ рд╣реА ImageStream рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рджреЗрдЦ рдЪреБрдХреЗ рд╣реИрдВред

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

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

рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдкрд░рд┐рдирд┐рдпреЛрдЬрди

рддреЛ рдЕрдм рдЬрдм рд╣рдордиреЗ рдЯреЗрдореНрдкрд▓реЗрдЯ рджреЗрдЦ рд▓рд┐рдпрд╛ рд╣реИ, рддреЛ рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдХрд┐рд╕реА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рддреИрдирд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВред

рд╣рдо рдЕрдкрдиреЗ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛ рддреИрдирд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП oc рдирд╛рдордХ рдУрдкрдирд╢рд┐рдлреНрдЯ рдХреНрд▓рд╛рдЗрдВрдЯ рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

$ find . | grep openshiftio | grep application | xargs -n 1 oc apply -f

$ oc new-app --template react-web-app -p SOURCE_REPOSITORY_URL=https://github.com/lholmquist/react-web-app

рдКрдкрд░ рджрд┐рдП рдЧрдП рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдореЗрдВ рдкрд╣рд▓рд╛ рдХрдорд╛рдВрдб рдЯреЗрдореНрдкрд▓реЗрдЯ./openshiftio/application.yaml рдХреЛ рдЦреЛрдЬрдиреЗ рдХрд╛ рдЬрд╛рдирдмреВрдЭрдХрд░ рдЗрдВрдЬреАрдирд┐рдпрд░рд┐рдВрдЧ рддрд░реАрдХрд╛ рд╣реИред

рджреВрд╕рд░рд╛ рдХрдорд╛рдВрдб рдмрд╕ рдЗрд╕ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рдирдпрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рддрд╛ рд╣реИред

рдЗрди рдЖрджреЗрд╢реЛрдВ рдХреЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рджреЛ рдЕрд╕реЗрдВрдмрд▓реА рд╣реИрдВ:

рдУрдкрдирд╢рд┐рдлреНрдЯ рдкрд░ рдЖрдзреБрдирд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧ, рднрд╛рдЧ 2: рдЬрдВрдЬреАрд░ рдирд┐рд░реНрдорд┐рдд

рдФрд░ рдЕрд╡рд▓реЛрдХрди рд╕реНрдХреНрд░реАрди рдкрд░ рд▓реМрдЯрддреЗ рд╣реБрдП, рд╣рдо рд▓реЙрдиреНрдЪ рдХрд┐рдП рдЧрдП рдкреЙрдб рдХреЛ рджреЗрдЦреЗрдВрдЧреЗ:

рдУрдкрдирд╢рд┐рдлреНрдЯ рдкрд░ рдЖрдзреБрдирд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧ, рднрд╛рдЧ 2: рдЬрдВрдЬреАрд░ рдирд┐рд░реНрдорд┐рдд

рд▓рд┐рдВрдХ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░ рд╣рдореЗрдВ рд╣рдорд╛рд░реЗ рдРрдк рдкрд░ рд▓реЗ рдЬрд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЬреЛ рдХрд┐ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░рд┐рдПрдХреНрдЯ рдРрдк рдкреЗрдЬ рд╣реИ:

рдУрдкрдирд╢рд┐рдлреНрдЯ рдкрд░ рдЖрдзреБрдирд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧ, рднрд╛рдЧ 2: рдЬрдВрдЬреАрд░ рдирд┐рд░реНрдорд┐рдд

рдЕрдиреБрдкреВрд░рдХ 1

рдХреЛрдгреАрдп рдкреНрд░реЗрдорд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рднреА рд╣реИ рдЙрджрд╛рд╣рд░рдг рдЖрд╡реЗрджрди.

OUTPUT_DIR рд╡реЗрд░рд┐рдПрдмрд▓ рдХреЛ рдЫреЛрдбрд╝рдХрд░, рдпрд╣рд╛рдВ рдкреИрдЯрд░реНрди рд╕рдорд╛рди рд╣реИред

рдЕрдиреБрдкреВрд░рдХ 2

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

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

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

рд▓реЗрдЦреЛрдВ рдХреА рдЗрд╕ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреА рд╕рд╛рдордЧреНрд░реА

  • рднрд╛рдЧ 1: рдХреБрдЫ рд╣реА рдЪрд░рдгреЛрдВ рдореЗрдВ рдЖрдзреБрдирд┐рдХ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреИрд╕реЗ рддреИрдирд╛рдд рдХрд░реЗрдВ;
  • рднрд╛рдЧ 2: рдЙрддреНрдкрд╛рджрди рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдХреЗ рд▓рд┐рдП рд╕рдВрдмрдВрдзрд┐рдд рдУрдкрдирд╢рд┐рдлреНрдЯ рдЕрд╕реЗрдВрдмрд▓реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореМрдЬреВрджрд╛ HTTP рд╕рд░реНрд╡рд░ рдЫрд╡рд┐, рдЬреИрд╕реЗ рдПрдирдЬреАрдЖрдИрдПрдирдПрдХреНрд╕, рдХреЗ рд╕рд╛рде рдПрдХ рдирдИ рдПрд╕2рдЖрдИ рдЫрд╡рд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВ;
  • рднрд╛рдЧ 3: рдУрдкрдирд╢рд┐рдлреНрдЯ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдкрд░ рдЕрдкрдиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП рдПрдХ рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рд╕рд░реНрд╡рд░ рдХреИрд╕реЗ рдЪрд▓рд╛рдПрдВ рдФрд░ рдЗрд╕реЗ рд╕реНрдерд╛рдиреАрдп рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕рд╛рде рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд░реЗрдВред

рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рдВрд╕рд╛рдзрди

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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╝реЗрдВ