рдпрд╕ рдмреНрд▓рдЧрдорд╛ рд╕рдмреИрд▓рд╛рдИ рдирдорд╕реНрдХрд╛рд░! рдпреЛ рд╢реГрдЩреНрдЦрд▓рд╛рдХреЛ рддреЗрд╕реНрд░реЛ рдкреЛрд╖реНрдЯ рд╣реЛ рдЬрд╕рдорд╛ рд╣рд╛рдореАрд▓реЗ Red Hat OpenShift рдорд╛ рдЖрдзреБрдирд┐рдХ рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВ рдХрд╕рд░реА рдбрд┐рдкреНрд▓реЛрдп рдЧрд░реНрдиреЗ рднрдиреЗрд░ рджреЗрдЦрд╛рдЙрдБрдЫреМрдВред
рдЕрдШрд┐рд▓реНрд▓рд╛ рджреБрдИ рдкреЛрд╖реНрдЯрд╣рд░реВрдорд╛, рд╣рд╛рдореАрд▓реЗ рдХреЗрд╣реА рдЪрд░рдгрд╣рд░реВрдорд╛ рдЖрдзреБрдирд┐рдХ рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВ рдХрд╕рд░реА рдбрд┐рдкреНрд▓реЛрдп рдЧрд░реНрдиреЗ рд░ рдХрд╕рд░реА рдирдпрд╛рдБ S2I рдЫрд╡рд┐ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗ рднрдиреЗрд░ рджреЗрдЦреНрдпреМрдВ, рдЬрд╕реНрддреИ NGINX, рдЙрддреНрдкрд╛рджрди рдбрд┐рдкреНрд▓реЛрдпрдореЗрдиреНрдЯрд╣рд░реВ рдЕрд░реНрдХреЗрд╕реНрдЯреНрд░реЗрдЯ рдЧрд░реНрди рдЪреЗрди рдмрд┐рд▓реНрдбрд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдЕрдл-рдж-рд╢реЗрд▓реНрдл HTTP рд╕рд░реНрднрд░ рдЫрд╡рд┐рдХреЛ рд╕рд╛рдеред ред
рдЖрдЬ рд╣рд╛рдореА OpenShift рдкреНрд▓реЗрдЯрдлрд░реНрдордорд╛ рддрдкрд╛рдЗрдБрдХреЛ рдЕрдиреБрдкреНрд░рдпреЛрдЧрдХреЛ рд▓рд╛рдЧрд┐ рд╡рд┐рдХрд╛рд╕ рд╕рд░реНрднрд░ рдХрд╕рд░реА рдЪрд▓рд╛рдЙрдиреЗ рд░ рдпрд╕рд▓рд╛рдИ рд╕реНрдерд╛рдиреАрдп рдлрд╛рдЗрд▓ рдкреНрд░рдгрд╛рд▓реАрд╕рдБрдЧ рд╕рд┐рдЩреНрдХреНрд░реЛрдирд╛рдЗрдЬ рдЧрд░реНрдиреЗ рднрдиреЗрд░ рджреЗрдЦрд╛рдЙрдиреЗрдЫреМрдВ, рд░ OpenShift рдкрд╛рдЗрдкрд▓рд╛рдЗрдирд╣рд░реВ рдХреЗ рд╣реБрдиреН рд░ рдЙрдиреАрд╣рд░реВрд▓рд╛рдИ рд▓рд┐рдЩреНрдХ рдЧрд░рд┐рдПрдХреЛ рдПрд╕реЗрдореНрдмрд▓реАрд╣рд░реВрдХреЛ рд╡рд┐рдХрд▓реНрдкрдХреЛ рд░реВрдкрдорд╛ рдХрд╕рд░реА рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ рднрдиреНрдиреЗ рдмрд╛рд░реЗ рдкрдирд┐ рдХреБрд░рд╛ рдЧрд░реНрдиреЗрдЫреМрдВред
рд╡рд┐рдХрд╛рд╕ рд╡рд╛рддрд╛рд╡рд░рдгрдХреЛ рд░реВрдкрдорд╛ OpenShift
рд╡рд┐рдХрд╛рд╕ рдХрд╛рд░реНрдпрдкреНрд░рд╡рд╛рд╣
рдорд╛ рдкрд╣рд┐рд▓реЗ рдиреИ рднрдирд┐рдПрдХреЛ рдЫ
рдзреЗрд░реИрдЬрд╕реЛ рдЖрдзреБрдирд┐рдХ рдлреНрд░реЗрдорд╡рд░реНрдХрд╣рд░реВрдорд╛, рдпрд╕реНрддреЛ "рд╡рд┐рдХрд╛рд╕ рд╕рд░реНрднрд░" рд╕рдореНрдмрдиреНрдзрд┐рдд рдХрдорд╛рдгреНрдб рд▓рд╛рдЗрди рдЙрдкрдХрд░рдгрд╣рд░реВрдорд╛ рдирд┐рд░реНрдорд┐рдд рд╣реБрдиреНрдЫред
рд╕реНрдерд╛рдиреАрдп рдЙрджрд╛рд╣рд░рдг
рдкрд╣рд┐рд▓реЗ, рд╕реНрдерд╛рдиреАрдп рд░реВрдкрдорд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВ рдЪрд▓рд╛рдЙрдБрджрд╛ рдпрд╕рд▓реЗ рдХрд╕рд░реА рдХрд╛рдо рдЧрд░реНрдЫ рд╣реЗрд░реМрдВред рдПрдЙрдЯрд╛ рдЙрджрд╛рд╣рд░рдгрдХреЛ рд░реВрдкрдорд╛ рдЖрд╡реЗрджрди рд▓рд┐рдиреБрд╣реЛрд╕реН
рддреНрдпрд╕реЛрднрдП, рд╣рд╛рдореНрд░реЛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЙрджрд╛рд╣рд░рдгрдорд╛ "рджреЗрд╡ рд╕рд░реНрднрд░" рд╕реБрд░реБ рдЧрд░реНрди, рд╣рд╛рдореА рдирд┐рдореНрди рдЖрджреЗрд╢ рдкреНрд░рд╡рд┐рд╖реНрдЯ рдЧрд░реНрдиреЗрдЫреМрдВ:
$ npm run start
рддреНрдпрд╕рдкрдЫрд┐ рдЯрд░реНрдорд┐рдирд▓ рд╡рд┐рдиреНрдбреЛрдорд╛ рд╣рд╛рдореА рдпреЛ рдЬрд╕реНрддреИ рдХреЗрд╣рд┐ рджреЗрдЦреНрдиреЗрдЫреМрдВ:
рд░ рд╣рд╛рдореНрд░реЛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдмреНрд░рд╛рдЙрдЬрд░рдорд╛ рдЦреБрд▓реНрдиреЗрдЫ:
рдЕрдм, рдпрджрд┐ рд╣рд╛рдореАрд▓реЗ рдлрд╛рдЗрд▓рдорд╛ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрдЫреМрдВ рднрдиреЗ, рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдмреНрд░рд╛рдЙрдЬрд░рдорд╛ рдЕрджреНрдпрд╛рд╡рдзрд┐рдХ рд╣реБрдиреБрдкрд░реНрдЫред
рдареАрдХ рдЫ, рд╕реНрдерд╛рдиреАрдп рдореЛрдбрдорд╛ рд╡рд┐рдХрд╛рд╕рдХреЛ рд╕рд╛рде рд╕рдмреИ рдХреБрд░рд╛ рд╕реНрдкрд╖реНрдЯ рдЫ, рддрд░ OpenShift рдорд╛ рдХрд╕рд░реА рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрдиреЗ?
OpenShift рдорд╛ рд╡рд┐рдХрд╛рд╕ рд╕рд░реНрднрд░
рдпрджрд┐ рддрдкрд╛рдЗрдБ рд╕рдореНрдЭрдиреБрд╣реБрдиреНрдЫ рднрдиреЗ, рдорд╛
рдпрджреНрдпрдкрд┐, рдпрджрд┐ рддрдкрд╛рдЗрдБ рдирдЬрд┐рдХрдмрд╛рдЯ рд╣реЗрд░реНрдиреБрднрдпреЛ рднрдиреЗ
рдЙрджрд╛рд╣рд░рдг рдХреЛ рд▓рд╛рдЧреА, рд╣рд╛рдореА рд╣рд╛рдореНрд░реЛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рддреИрдирд╛рдд рдЧрд░реНрди nodeshift рдореЛрдбреНрдпреБрд▓ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрдЫреМрдВ:
$ npx nodeshift --deploy.env NPM_RUN="yarn start" --dockerImage=nodeshift/ubi8-s2i-web-app
рдиреЛрдЯ: рдорд╛рдерд┐рдХреЛ рдЙрджрд╛рд╣рд░рдг рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рдЪрд╛рд░ рдЪрд┐рддреНрд░рдг рдЧрд░реНрди рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдЫред
рдпрд╣рд╛рдБ рд╣рд╛рдореАрд▓реЗ рд╣рд╛рдореНрд░реЛ рдбрд┐рдкреНрд▓реЛрдЗрдореЗрдиреНрдЯрдорд╛ NPM_RUN рд╡рд╛рддрд╛рд╡рд░рдг рдЪрд░ рдердкреЗрдХрд╛ рдЫреМрдВ, рдЬрд╕рд▓реЗ рд░рдирдЯрд╛рдЗрдорд▓рд╛рдИ рдпрд╛рд░реНрди рд╕реНрдЯрд╛рд░реНрдЯ рдХрдорд╛рдгреНрдб рдЪрд▓рд╛рдЙрдирдХреЛ рд▓рд╛рдЧрд┐ рдмрддрд╛рдЙрдБрдЫ, рдЬрд╕рд▓реЗ рд╣рд╛рдореНрд░реЛ OpenShift рдкреЛрдб рднрд┐рддреНрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╡рд┐рдХрд╛рд╕ рд╕рд░реНрднрд░ рд╕реБрд░реБ рдЧрд░реНрдЫред
рдпрджрд┐ рддрдкрд╛рдЗрдБ рдЪрд▓рд┐рд░рд╣реЗрдХреЛ рдкреЛрдбрдХреЛ рд▓рдЧ рд╣реЗрд░реНрдиреБрднрдпреЛ рднрдиреЗ, рдпреЛ рдХреЗрд╣рд┐ рдпрд╕реНрддреЛ рджреЗрдЦрд┐рдиреНрдЫ:
рдирд┐рд╕реНрд╕рдиреНрджреЗрд╣, рд╣рд╛рдореАрд▓реЗ рд╕реНрдерд╛рдиреАрдп рдХреЛрдбрд▓рд╛рдИ рдХреЛрдбрд╕рдБрдЧ рд╕рд┐рдЩреНрдХреНрд░реЛрдирд╛рдЗрдЬ рдЧрд░реНрди рдирд╕рдХреЗрд╕рдореНрдо рдпреЛ рд╕рдмреИ рдХреЗрд╣рд┐ рд╣реБрдиреЗрдЫреИрди, рдЬреБрди рдкрд░рд┐рд╡рд░реНрддрдирд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдкрдирд┐ рдирд┐рдЧрд░рд╛рдиреА рдЧрд░рд┐рдиреНрдЫ, рддрд░ рд░рд┐рдореЛрдЯ рд╕рд░реНрднрд░рдорд╛ рд░рд╣рдиреНрдЫред
рд░рд┐рдореЛрдЯ рд░ рд╕реНрдерд╛рдиреАрдп рдХреЛрдб рд╕рд┐рдЩреНрдХреНрд░реЛрдирд╛рдЗрдЬ рдЧрд░реНрджреИ
рд╕реМрднрд╛рдЧреНрдп рджреЗрдЦрд┐, nodeshift рд╕рдЬрд┐рд▓реИ рд╕рдВрдЧ рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЬреЗрд╕рди рдорджреНрджрдд рдЧрд░реНрди рд╕рдХреНрдЫ, рд░ рддрдкрд╛рдЗрдБ рдкрд░рд┐рд╡рд░реНрддрдирд╣рд░реВ рдЯреНрд░реНрдпрд╛рдХ рдЧрд░реНрди рд╡рд╛рдЪ рдЖрджреЗрд╢ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред
рддреНрдпрд╕реЛрднрдП рд╣рд╛рдореАрд▓реЗ рд╣рд╛рдореНрд░реЛ рдЕрдиреБрдкреНрд░рдпреЛрдЧрдХреЛ рд▓рд╛рдЧрд┐ рд╡рд┐рдХрд╛рд╕ рд╕рд░реНрднрд░ рдбрд┐рдкреНрд▓реЛрдп рдЧрд░реНрди рдЖрджреЗрд╢ рдЪрд▓рд╛рдЗрд╕рдХреЗрдкрдЫрд┐, рд╣рд╛рдореА рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдкрдорд╛ рдирд┐рдореНрди рдЖрджреЗрд╢ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрдЫреМрдВ:
$ npx nodeshift watch
рдирддрд┐рдЬрд╛рдХреЛ рд░реВрдкрдорд╛, рд╣рд╛рдореАрд▓реЗ рдЕрд▓рд┐ рдкрд╣рд┐рд▓реЗ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реЗрдХреЛ рдЪрд▓рд┐рд░рд╣реЗрдХреЛ рдкреЛрдбрдорд╛ рдЬрдбрд╛рди рдмрдирд╛рдЗрдиреЗрдЫ, рд░рд┐рдореЛрдЯ рдХреНрд▓рд╕реНрдЯрд░рд╕рдБрдЧ рд╣рд╛рдореНрд░рд╛ рд╕реНрдерд╛рдиреАрдп рдлрд╛рдЗрд▓рд╣рд░реВрдХреЛ рд╕рд┐рдЩреНрдХреНрд░реЛрдирд╛рдЗрдЬреЗрд╕рди рд╕рдХреНрд░рд┐рдп рд╣реБрдиреЗрдЫ, рд░ рд╣рд╛рдореНрд░реЛ рд╕реНрдерд╛рдиреАрдп рдкреНрд░рдгрд╛рд▓реАрдорд╛ рднрдПрдХрд╛ рдлрд╛рдЗрд▓рд╣рд░реВ рдкрд░рд┐рд╡рд░реНрддрдирд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдирд┐рдЧрд░рд╛рдиреА рдЧрд░реНрди рд╕реБрд░реБ рд╣реБрдиреЗрдЫред
рддреНрдпрд╕рдХрд╛рд░рдг, рдпрджрд┐ рд╣рд╛рдореАрд▓реЗ рдЕрдм src/App.js рдлрд╛рдЗрд▓ рдЕрджреНрдпрд╛рд╡рдзрд┐рдХ рдЧрд░реНрдЫреМрдВ рднрдиреЗ, рдкреНрд░рдгрд╛рд▓реАрд▓реЗ рдпреА рдкрд░рд┐рд╡рд░реНрддрдирд╣рд░реВрдорд╛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджрд┐рдиреЗрдЫ, рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рдЯрд╛рдврд╛рдХреЛ рдХреНрд▓рд╕реНрдЯрд░рдорд╛ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдЧрд░реНрдиреЗрдЫ рд░ рд╡рд┐рдХрд╛рд╕ рд╕рд░реНрднрд░ рд╕реБрд░реБ рдЧрд░реНрдиреЗрдЫ, рдЬрд╕рд▓реЗ рдмреНрд░рд╛рдЙрдЬрд░рдорд╛ рд╣рд╛рдореНрд░реЛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЕрджреНрдпрд╛рд╡рдзрд┐рдХ рдЧрд░реНрдиреЗрдЫред
рддрд╕реНрд╡рд┐рд░ рдкреВрд░рд╛ рдЧрд░реНрди, рдпреА рд╕рдореНрдкреВрд░реНрдг рдЖрджреЗрд╢рд╣рд░реВ рдХрд╕реНрддреЛ рджреЗрдЦрд┐рдиреНрдЫ рджреЗрдЦрд╛рдЙрдиреБрд╣реЛрд╕реН:
$ npx nodeshift --strictSSL=false --dockerImage=nodeshift/ubi8-s2i-web-app --build.env YARN_ENABLED=true --expose --deploy.env NPM_RUN="yarn start" --deploy.port 3000
$ npx nodeshift watch --strictSSL=false
рд╡рд╛рдЪ рдЖрджреЗрд╢ oc rsync рдХрдорд╛рдгреНрдбрдХреЛ рд╢реАрд░реНрд╖рдорд╛ рд░рд╣реЗрдХреЛ рдПрдЙрдЯрд╛ рдПрдмреНрд╕реНрдЯреНрд░реНрдпрд╛рдХрд╕рди рд╣реЛ, рдпрд╕рд▓реЗ рдХрд╕рд░реА рдХрд╛рдо рдЧрд░реНрдЫ рднрдиреНрдиреЗ рдмрд╛рд░реЗ рдердк рдЬрд╛рдиреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред
рдпреЛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛ рд▓рд╛рдЧреА рдПрдХ рдЙрджрд╛рд╣рд░рдг рдерд┐рдпреЛ, рддрд░ рдареНрдпрд╛рдХреНрдХреИ рдЙрд╣реА рд╡рд┐рдзрд┐ рдЕрдиреНрдп рдлреНрд░реЗрдорд╡рд░реНрдХ рд╕рдВрдЧ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ, рдЖрд╡рд╢реНрдпрдХ рдЕрдиреБрд╕рд╛рд░ NPM_RUN рд╡рд╛рддрд╛рд╡рд░рдг рдЪрд░ рд╕реЗрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реНред
тАГ
рдУрдкрдирд╢рд┐рдлреНрдЯ рдкрд╛рдЗрдкрд▓рд╛рдЗрдирд╣рд░реВ
рдЕрд░реНрдХреЛ рд╣рд╛рдореА OpenShift Pipelines рдЬрд╕реНрддреИ рдЙрдкрдХрд░рдгрдХреЛ рдмрд╛рд░реЗрдорд╛ рдХреБрд░рд╛ рдЧрд░реНрдиреЗрдЫреМрдВ рд░ рдпрд╕рд▓рд╛рдИ рдХрд╕рд░реА рдЬрдВрдЬреАрд░ рдирд┐рд░реНрдорд╛рдгрдХреЛ рд╡рд┐рдХрд▓реНрдкрдХреЛ рд░реВрдкрдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред
OpenShift рдкрд╛рдЗрдкрд▓рд╛рдЗрдирд╣рд░реВ рдХреЗ рд╣реБрдиреН
OpenShift Pipelines Tekton рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдкрд╛рдЗрдкрд▓рд╛рдЗрдирд╣рд░реВ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдЧрд░реНрди рдбрд┐рдЬрд╛рдЗрди рдЧрд░рд┐рдПрдХреЛ рдХреНрд▓рд╛рдЙрдб-рдиреЗрдЯрд┐рдн CI/CD рдирд┐рд░рдиреНрддрд░ рдПрдХреАрдХрд░рдг рд░ рдбреЗрд▓рд┐рднрд░реА рдкреНрд░рдгрд╛рд▓реА рд╣реЛред Tekton рдПрдХ рд▓рдЪрд┐рд▓реЛ рдЦреБрд▓рд╛ рд╕реНрд░реЛрдд Kubernetes-рдиреЗрдЯрд┐рдн CI/CD рдлреНрд░реЗрдорд╡рд░реНрдХ рд╣реЛ рдЬрд╕рд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдЕрдиреНрддрд░реНрдирд┐рд╣рд┐рдд рддрд╣рдмрд╛рдЯ рд╕рд╛рд░ рдЧрд░реЗрд░ рд╡рд┐рднрд┐рдиреНрди рдкреНрд▓реЗрдЯрдлрд░реНрдорд╣рд░реВ (рдХреБрдмрд░реНрдиреЗрдЯреНрд╕, рд╕рд░реНрднрд░рд▓реЗрд╕, рднрд░реНрдЪреБрдЕрд▓ рдореЗрд╕рд┐рдирд╣рд░реВ, рдЖрджрд┐) рдорд╛ рдбрд┐рдкреНрд▓реЛрдЗрдореЗрдиреНрдЯ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫред
рдпрд╕ рд▓реЗрдЦрд▓рд╛рдИ рдмреБрдЭреНрди рдкрд╛рдЗрдкрд▓рд╛рдЗрдирд╣рд░реВрдХреЛ рдХреЗрд╣реА рдЬреНрдЮрд╛рди рдЪрд╛рд╣рд┐рдиреНрдЫ, рддреНрдпрд╕реИрд▓реЗ рд╣рд╛рдореА рджреГрдврддрд╛рдХрд╛ рд╕рд╛рде рд╕рд┐рдлрд╛рд░рд┐рд╕ рдЧрд░реНрджрдЫреМрдВ рдХрд┐ рддрдкрд╛рдЗрдБ рдкрд╣рд┐рд▓реЗ рдкрдвреНрдиреБрд╣реЛрд╕реН
рдЖрдлреНрдиреЛ рдХрд╛рд░реНрдп рд╡рд╛рддрд╛рд╡рд░рдг рд╕реЗрдЯ рдЕрдк рдЧрд░реНрджреИ
рдпрд╕ рд▓реЗрдЦрдорд╛ рднрдПрдХрд╛ рдЙрджрд╛рд╣рд░рдгрд╣рд░реВрд╕рдБрдЧ рдЦреЗрд▓реНрди, рддрдкрд╛рдИрдВрд▓реЗ рдкрд╣рд┐рд▓реЗ рдЖрдлреНрдиреЛ рдХрд╛рдо рдЧрд░реНрдиреЗ рд╡рд╛рддрд╛рд╡рд░рдг рддрдпрд╛рд░ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ:
- OpenShift 4 рдХреНрд▓рд╕реНрдЯрд░ рд╕реНрдерд╛рдкрдирд╛ рд░ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрдиреБрд╣реЛрд╕реНред рд╣рд╛рдореНрд░рд╛ рдЙрджрд╛рд╣рд░рдгрд╣рд░реВрд▓реЗ рдпрд╕рдХреЛ рд▓рд╛рдЧрд┐ рдХреЛрдбрд░реЗрдбреА рдХрдиреНрдЯреЗрдирд░рд╣рд░реВ (CRD) рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдЫрдиреН, рдЬрд╕рдХреЛ рд▓рд╛рдЧрд┐ рд╕реНрдерд╛рдкрдирд╛ рдирд┐рд░реНрджреЗрд╢рдирд╣рд░реВ рдлреЗрд▓рд╛ рдкрд╛рд░реНрди рд╕рдХрд┐рдиреНрдЫред
рдпрд╣рд╛рдБ . - рдХреНрд▓рд╕реНрдЯрд░ рддрдпрд╛рд░ рднрдПрдкрдЫрд┐, рддрдкрд╛рдИрдВрд▓реЗ рдпрд╕рдорд╛ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдЕрдкрд░реЗрдЯрд░ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫред рдирдбрд░рд╛рдЙрдиреБрд╣реЛрд╕реН, рдпреЛ рд╕рдЬрд┐рд▓реЛ рдЫ, рд╕реНрдерд╛рдкрдирд╛ рдирд┐рд░реНрджреЗрд╢рдирд╣рд░реВ
рдпрд╣рд╛рдБ . - рдбрд╛рдЙрдирд▓реЛрдб рдЧрд░реНрдиреБрд╣реЛрд╕реН
Tekton CLI (tkn)рдпрд╣рд╛рдБ . - рд╕рд┐рд░реНрдЬрдирд╛-рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдПрдк рдХрдорд╛рдгреНрдб рд▓рд╛рдЗрди рдЙрдкрдХрд░рдг рдЪрд▓рд╛рдЙрдиреБрд╣реЛрд╕реН рдПрдЙрдЯрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╕рди рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдирдХрд╛ рд▓рд╛рдЧрд┐ рдЬреБрди рддрдкрд╛рдИрдВрд▓реЗ рдбрд┐рдкреНрд▓реЛрдп рдЧрд░реНрдиреБрд╣реБрдиреЗрдЫ (рдпреЛ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╣реЛред
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ ). - (рд╡реИрдХрд▓реНрдкрд┐рдХ) npm рд╕реНрдерд╛рдкрдирд╛ рд░ рддреНрдпрд╕рдкрдЫрд┐ npm рд╕реНрдЯрд╛рд░реНрдЯрдХреЛ рд╕рд╛рде рд╕реНрдерд╛рдиреАрдп рд░реВрдкрдорд╛ рдЙрджрд╛рд╣рд░рдг рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЪрд▓рд╛рдЙрди рднрдгреНрдбрд╛рд░ рдХреНрд▓реЛрди рдЧрд░реНрдиреБрд╣реЛрд╕реНред
рдПрдкреНрд▓рд┐рдХреЗрд╕рди рд░рд┐рдкреЛрдЬрд┐рдЯрд░реАрдорд╛ k8s рдлреЛрд▓реНрдбрд░ рдкрдирд┐ рд╣реБрдиреЗрдЫ, рдЬрд╕рдорд╛ рдПрдк рдбрд┐рдкреНрд▓реЛрдп рдЧрд░реНрди рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреЗ Kubernetes/OpenShift YAMLs рд╕рдорд╛рд╡реЗрд╢ рд╣реБрдиреЗрдЫред рддреНрдпрд╣рд╛рдБ рдЯрд╛рд╕реНрдХрд╣рд░реВ, рдХреНрд▓рд╕реНрдЯрд░ рдЯрд╛рд╕реНрдХрд╣рд░реВ, рд╕рдВрд╕рд╛рдзрдирд╣рд░реВ рд░ рдкрд╛рдЗрдкрд▓рд╛рдЗрдирд╣рд░реВ рд╣реБрдиреЗрдЫрдиреН рдЬреБрди рд╣рд╛рдореАрд▓реЗ рдпрд╕рдорд╛ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреЗрдЫреМрдВ
рд╕реБрд░реБ рдЧрд░реМрдВ
рд╣рд╛рдореНрд░реЛ рдЙрджрд╛рд╣рд░рдгрдХреЛ рд▓рд╛рдЧрд┐ рдкрд╣рд┐рд▓реЛ рдЪрд░рдг OpenShift рдХреНрд▓рд╕реНрдЯрд░рдорд╛ рдирдпрд╛рдБ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреБ рд╣реЛред рдпреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛ webapp-pipeline рд▓рд╛рдИ рдХрд▓ рдЧрд░реМрдВ рд░ рдпрд╕рд▓рд╛рдИ рдирд┐рдореНрди рдЖрджреЗрд╢рдХреЛ рд╕рд╛рде рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реМрдВ:
$ oc new-project webapp-pipeline
рдпреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛рдХреЛ рдирд╛рдо рдкрдЫрд┐ рдХреЛрдбрдорд╛ рджреЗрдЦрд╛ рдкрд░реНрдиреЗрдЫ, рддреНрдпрд╕реИрд▓реЗ рдпрджрд┐ рддрдкрд╛рдЗрдБ рдпрд╕рд▓рд╛рдИ рдЕрд░реВ рдХреЗрд╣рд┐ рдирд╛рдо рджрд┐рдиреЗ рдирд┐рд░реНрдгрдп рдЧрд░реНрдиреБрд╣реБрдиреНрдЫ рднрдиреЗ, рдЙрджрд╛рд╣рд░рдг рдХреЛрдб рддрджрдиреБрд╕рд╛рд░ рд╕рдореНрдкрд╛рджрди рдЧрд░реНрди рдирдмрд┐рд░реНрд╕рдиреБрд╣реЛрд╕реНред рдпрд╕ рдмрд┐рдиреНрджреБрдмрд╛рдЯ рд╕реБрд░реБ рдЧрд░реНрджреИ, рд╣рд╛рдореА рдорд╛рдерд┐-рдбрд╛рдЙрди рдЬрд╛рдиреЗ рдЫреИрдиреМрдВ, рддрд░ рддрд▓-рдорд╛рдерд┐: рддреНрдпреЛ рд╣реЛ, рд╣рд╛рдореА рдкрд╣рд┐рд▓реЗ рдХрдиреНрд╡реЗрдпрд░рдХреЛ рд╕рдмреИ рдШрдЯрдХрд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреЗрдЫреМрдВ, рд░ рддреНрдпрд╕рдкрдЫрд┐ рдорд╛рддреНрд░ рдХрдиреНрд╡реЗрдпрд░ рдЖрдлреИрдВред
рддреНрдпрд╕реИрд▓реЗ, рд╕рдмреИ рднрдиреНрджрд╛ рдкрд╣рд┐рд▓реЗ ...
рдХрд╛рд░реНрдпрд╣рд░реВ
рдХреЗрд╣реА рдХрд╛рд░реНрдпрд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реМрдВ, рдЬрд╕рд▓реЗ рддреНрдпрд╕рдкрдЫрд┐ рд╣рд╛рдореНрд░реЛ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рднрд┐рддреНрд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рдорджреНрджрдд рдЧрд░реНрдиреЗрдЫред рдкрд╣рд┐рд▓реЛ рдХрд╛рд░реНрдп - apply_manifests_task - рд╣рд╛рдореНрд░реЛ рдЕрдиреБрдкреНрд░рдпреЛрдЧрдХреЛ k8s рдлреЛрд▓реНрдбрд░рдорд╛ рдЕрд╡рд╕реНрдерд┐рдд Kubernetes рд╕реНрд░реЛрддрд╣рд░реВ (рд╕реЗрд╡рд╛, рдбрд┐рдкреНрд▓реЛрдЗрдореЗрдиреНрдЯ рд░ рдорд╛рд░реНрдЧ) рдХреЛ YAML рд▓рд╛рдЧреВ рдЧрд░реНрди рдЬрд┐рдореНрдореЗрд╡рд╛рд░ рдЫред рджреЛрд╕реНрд░реЛ рдХрд╛рд░реНрдп - update_deployment_task - рд╣рд╛рдореНрд░реЛ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рджреНрд╡рд╛рд░рд╛ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░рд┐рдПрдХреЛ рдЫрд╡рд┐рдорд╛ рдкрд╣рд┐рд▓реЗ рдиреИ рддреИрдирд╛рде рдЧрд░рд┐рдПрдХреЛ рдЫрд╡рд┐ рдЕрджреНрдпрд╛рд╡рдзрд┐рдХ рдЧрд░реНрди рдЬрд┐рдореНрдореЗрд╡рд╛рд░ рдЫред
рдЪрд┐рдиреНрддрд╛ рдирдЧрд░реНрдиреБрд╣реЛрд╕реН рдпрджрд┐ рдпреЛ рдЕрдЭреИ рдзреЗрд░реИ рд╕реНрдкрд╖реНрдЯ рдЫреИрди рднрдиреЗред рд╡рд╛рд╕реНрддрд╡рдорд╛, рдпреА рдХрд╛рд░реНрдпрд╣рд░реВ рдЙрдкрдпреЛрдЧрд┐рддрд╛рд╣рд░реВ рдЬрд╕реНрддреИ рдЫрдиреН, рд░ рд╣рд╛рдореА рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рдХреЗрд╣реА рдкрдЫрд┐ рдердк рд╡рд┐рд╕реНрддрд╛рд░рдорд╛ рд╣реЗрд░реНрдиреЗрдЫреМрдВред рдЕрд╣рд┐рд▓реЗрдХреЛ рд▓рд╛рдЧрд┐, рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реМрдВ:
$ oc create -f https://raw.githubusercontent.com/nodeshift/webapp-pipeline-tutorial/master/tasks/update_deployment_task.yaml
$ oc create -f https://raw.githubusercontent.com/nodeshift/webapp-pipeline-tutorial/master/tasks/apply_manifests_task.yaml
рддреНрдпрд╕рдкрдЫрд┐, tkn CLI рдЖрджреЗрд╢ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░, рд╣рд╛рдореА рдХрд╛рд░реНрдпрд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░рд┐рдПрдХреЛ рдЫ рднрдиреЗрд░ рдЬрд╛рдБрдЪ рдЧрд░реНрдиреЗрдЫреМрдВ:
$ tkn task ls
NAME AGE
apply-manifests 1 minute ago
update-deployment 1 minute ago
рдиреЛрдЯ: рдпреА рддрдкрд╛рдИрдВрдХреЛ рд╣рд╛рд▓рдХреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛рдХрд╛ рд▓рд╛рдЧрд┐ рд╕реНрдерд╛рдиреАрдп рдХрд╛рд░реНрдпрд╣рд░реВ рд╣реБрдиреНред
рдХреНрд▓рд╕реНрдЯрд░ рдХрд╛рд░реНрдпрд╣рд░реВ
рдХреНрд▓рд╕реНрдЯрд░ рдХрд╛рд░реНрдпрд╣рд░реВ рдореВрд▓рддрдпрд╛ рд╕рд╛рдзрд╛рд░рдг рдХрд╛рд░реНрдпрд╣рд░реВ рдЬрд╕реНрддреИ рд╣реБрдиреНред рддреНрдпреЛ рд╣реЛ, рдпреЛ рдЪрд░рдгрд╣рд░реВрдХреЛ рдкреБрди: рдкреНрд░рдпреЛрдЬреНрдп рд╕рдВрдЧреНрд░рд╣ рд╣реЛ рдЬреБрди рдПрдХ рд╡рд┐рд╢реЗрд╖ рдХрд╛рд░реНрдп рдЪрд▓рд╛рдЙрдБрджрд╛ рдПрдХ рд╡рд╛ рдЕрд░реНрдХреЛрдорд╛ рд╕рдВрдпреБрдХреНрдд рд╣реБрдиреНрдЫред рднрд┐рдиреНрдирддрд╛ рдпреЛ рд╣реЛ рдХрд┐ рдХреНрд▓рд╕реНрдЯрд░ рдХрд╛рд░реНрдп рдХреНрд▓рд╕реНрдЯрд░ рднрд┐рддреНрд░ рдЬрддрд╛рддрддреИ рдЙрдкрд▓рдмреНрдз рдЫред рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдЕрдкрд░реЗрдЯрд░ рдердкреНрджрд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдкрдорд╛ рд╕рд┐рд░реНрдЬрдирд╛ рд╣реБрдиреЗ рдХреНрд▓рд╕реНрдЯрд░ рдХрд╛рд░реНрдпрд╣рд░реВрдХреЛ рд╕реВрдЪреА рд╣реЗрд░реНрди, рд╣рд╛рдореА рдлреЗрд░рд┐ tkn CLI рдЖрджреЗрд╢ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗрдЫреМрдВ:
$ tkn clustertask ls
NAME AGE
buildah 1 day ago
buildah-v0-10-0 1 day ago
jib-maven 1 day ago
kn 1 day ago
maven 1 day ago
openshift-client 1 day ago
openshift-client-v0-10-0 1 day ago
s2i 1 day ago
s2i-go 1 day ago
s2i-go-v0-10-0 1 day ago
s2i-java-11 1 day ago
s2i-java-11-v0-10-0 1 day ago
s2i-java-8 1 day ago
s2i-java-8-v0-10-0 1 day ago
s2i-nodejs 1 day ago
s2i-nodejs-v0-10-0 1 day ago
s2i-perl 1 day ago
s2i-perl-v0-10-0 1 day ago
s2i-php 1 day ago
s2i-php-v0-10-0 1 day ago
s2i-python-3 1 day ago
s2i-python-3-v0-10-0 1 day ago
s2i-ruby 1 day ago
s2i-ruby-v0-10-0 1 day ago
s2i-v0-10-0 1 day ago
рдЕрдм рджреБрдИ рдХреНрд▓рд╕реНрдЯрд░ рдХрд╛рд░реНрдпрд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реМрдВред рдкрд╣рд┐рд▓реЛрд▓реЗ S2I рдЫрд╡рд┐ рдЙрддреНрдкрдиреНрди рдЧрд░реНрдиреЗрдЫ рд░ рдпрд╕рд▓рд╛рдИ рдЖрдиреНрддрд░рд┐рдХ OpenShift рд░рдЬрд┐рд╕реНрдЯреНрд░реАрдорд╛ рдкрдард╛рдЙрдиреЗрдЫ; рджреЛрд╕реНрд░реЛ рднрдиреЗрдХреЛ рд╣рд╛рдореАрд▓реЗ рд╕рд╛рдордЧреНрд░реАрдХреЛ рд░реВрдкрдорд╛ рдирд┐рд░реНрдорд╛рдг рдЧрд░рд┐рд╕рдХреЗрдХрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ NGINX рдорд╛ рдЖрдзрд╛рд░рд┐рдд рд╣рд╛рдореНрд░реЛ рдЫрд╡рд┐ рдирд┐рд░реНрдорд╛рдг рдЧрд░реНрдиреБ рд╣реЛред
рдЫрд╡рд┐ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН рд░ рдкрдард╛рдЙрдиреБрд╣реЛрд╕реН
рдкрд╣рд┐рд▓реЛ рдХрд╛рд░реНрдп рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрджрд╛, рд╣рд╛рдореА рдЬреЛрдбрд┐рдПрдХреЛ рдПрд╕реЗрдореНрдмрд▓реАрд╣рд░реВрдХреЛ рдмрд╛рд░реЗрдорд╛ рдЕрдШрд┐рд▓реНрд▓реЛ рд▓реЗрдЦрдорд╛ рд╣рд╛рдореАрд▓реЗ рдкрд╣рд┐рд▓реЗ рдиреИ рдЧрд░реЗрдХреЛ рдХреБрд░рд╛ рджреЛрд╣реЛрд░реНрдпрд╛рдЙрдиреЗрдЫреМрдВред рд╕рдореНрдЭрдиреБрд╣реЛрд╕реН рдХрд┐ рд╣рд╛рдореАрд▓реЗ рд╣рд╛рдореНрд░реЛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ "рдирд┐рд░реНрдорд╛рдг" рдЧрд░реНрди S2I рдЫрд╡рд┐ (ubi8-s2i-web-app) рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдпреМрдВ, рд░ OpenShift рдЖрдиреНрддрд░рд┐рдХ рд░рдЬрд┐рд╕реНрдЯреНрд░реАрдорд╛ рднрдгреНрдбрд╛рд░рдг рдЧрд░рд┐рдПрдХреЛ рдЫрд╡рд┐рдХреЛ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рднрдпреЛред рдЕрдм рд╣рд╛рдореА рд╣рд╛рдореНрд░реЛ рдПрдкрдХреЛ рд▓рд╛рдЧрд┐ рдбрдХрд░рдлрд╛рдЗрд▓ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ рдпреЛ S2I рд╡реЗрдм рдПрдк рдЫрд╡рд┐ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗрдЫреМрдВ рд░ рддреНрдпрд╕рдкрдЫрд┐ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдирд┐рд░реНрдорд╛рдг рдЧрд░реНрди Buildah рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗрдЫреМрдВ рд░ рдирддрд┐рдЬрд╛рдХреЛ рдЫрд╡рд┐рд▓рд╛рдИ OpenShift рдЖрдиреНрддрд░рд┐рдХ рд░рдЬрд┐рд╕реНрдЯреНрд░реАрдорд╛ рдкреБрд╢ рдЧрд░реНрдиреЗрдЫреМрдВ, рдХрд┐рдирдХрд┐ рддрдкрд╛рдИрдВрд▓реЗ NodeShift рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдЖрдлреНрдиреЛ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрд╛ OpenShift рд▓реЗ рдЧрд░реНрдЫред ред
рд╣рд╛рдореАрд▓рд╛рдИ рдпреЛ рд╕рдмреИ рдХрд╕рд░реА рдерд╛рд╣рд╛ рднрдпреЛ, рддрдкрд╛рдЗрдБ рд╕реЛрдзреНрдиреБрд╣реБрдиреНрдЫ? рдмрд╛рдЯ
рддреНрдпрд╕реЛрднрдП, рдЕрдм s2i-web-app рдХреНрд▓рд╕реНрдЯрд░ рдХрд╛рд░реНрдп рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реМрдВ:
$ oc create -f https://raw.githubusercontent.com/nodeshift/webapp-pipeline-tutorial/master/clustertasks/s2i-web-app-task.yaml
рд╣рд╛рдореА рдпрд╕рд▓рд╛рдИ рд╡рд┐рд╕реНрддреГрдд рд░реВрдкрдорд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдЧрд░реНрджреИрдиреМрдВ, рддрд░ OUTPUT_DIR рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рдорд╛ рдорд╛рддреНрд░ рдзреНрдпрд╛рди рдХреЗрдиреНрджреНрд░рд┐рдд рдЧрд░реНрдиреЗрдЫреМрдВ:
params:
- name: OUTPUT_DIR
description: The location of the build output directory
default: build
рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд░реВрдкрдорд╛, рдпреЛ рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░ рдирд┐рд░реНрдорд╛рдгрдХреЛ рдмрд░рд╛рдмрд░ рд╣реБрдиреНрдЫ, рдЬрд╣рд╛рдБ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд▓реЗ рдПрд╕реЗрдореНрдмрд▓ рдЧрд░рд┐рдПрдХреЛ рд╕рд╛рдордЧреНрд░реА рд░рд╛рдЦреНрдЫред рдЕрдиреНрдп рдлреНрд░реЗрдорд╡рд░реНрдХрд╣рд░реВрд▓реЗ рд╡рд┐рднрд┐рдиреНрди рдорд╛рд░реНрдЧрд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдЫрдиреН, рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдПрдореНрдмрд░рдорд╛ рдпреЛ рдбрд┐рд╕реНрдЯ рд╣реЛред рд╣рд╛рдореНрд░реЛ рдкрд╣рд┐рд▓реЛ рдХреНрд▓рд╕реНрдЯрд░ рдХрд╛рд░реНрдпрдХреЛ рдЖрдЙрдЯрдкреБрдЯ рд╣рд╛рдореАрд▓реЗ рд╕рдЩреНрдХрд▓рди рдЧрд░реЗрдХреЛ HTML, JavaScript рд░ CSS рд╕рдорд╛рд╡реЗрд╢ рднрдПрдХреЛ рдЫрд╡рд┐ рд╣реБрдиреЗрдЫред
NGINX рдорд╛ рдЖрдзрд╛рд░рд┐рдд рдЫрд╡рд┐ рдмрдирд╛рдЙрдиреБрд╣реЛрд╕реН
рд╣рд╛рдореНрд░реЛ рджреЛрд╕реНрд░реЛ рдХреНрд▓рд╕реНрдЯрд░ рдХрд╛рд░реНрдпрдХреЛ рд▓рд╛рдЧрд┐, рдпрд╕рд▓реЗ рд╣рд╛рдореНрд░реЛ рд▓рд╛рдЧрд┐ NGINX-рдЖрдзрд╛рд░рд┐рдд рдЫрд╡рд┐ рдирд┐рд░реНрдорд╛рдг рдЧрд░реНрдиреБрдкрд░реНрдЫ, рд╣рд╛рдореАрд▓реЗ рдкрд╣рд┐рд▓реЗ рдиреИ рдмрдирд╛рдПрдХреЛ рдЕрдиреБрдкреНрд░рдпреЛрдЧрдХреЛ рд╕рд╛рдордЧреНрд░реА рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ред рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдкрдорд╛, рдпреЛ рдЕрдШрд┐рд▓реНрд▓реЛ рдЦрдгреНрдбрдХреЛ рдЕрдВрд╢ рд╣реЛ рдЬрд╣рд╛рдБ рд╣рд╛рдореАрд▓реЗ рдЬрдВрдЬреАрд░ рдирд┐рд░реНрдорд╛рдгрд╣рд░реВ рд╣реЗрд░реНрдпреМрдВред
рдпреЛ рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐, рд╣рд╛рдореА - рдареНрдпрд╛рдХреНрдХреИ рдорд╛рдерд┐ рдЬрд╕реНрддреИ - рдПрдЙрдЯрд╛ рдХреНрд▓рд╕реНрдЯрд░ рдХрд╛рд░реНрдп webapp-build-runtime рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреЗрдЫреМрдВ:
$ oc create -f https://raw.githubusercontent.com/nodeshift/webapp-pipeline-tutorial/master/clustertasks/webapp-build-runtime-task.yaml
рдпрджрд┐ рддрдкрд╛рдИрдВрд▓реЗ рдпреА рдХреНрд▓рд╕реНрдЯрд░ рдХрд╛рд░реНрдпрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдХреЛрдб рд╣реЗрд░реНрдиреБрднрдпреЛ рднрдиреЗ, рддрдкрд╛рдИрдВрд▓реЗ рджреЗрдЦреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рдХрд┐ рдпрд╕рд▓реЗ рд╣рд╛рдореАрд▓реЗ рдХрд╛рдо рдЧрд░рд┐рд░рд╣реЗрдХрд╛ Git рднрдгреНрдбрд╛рд░ рд╡рд╛ рд╣рд╛рдореАрд▓реЗ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░рд┐рд░рд╣реЗрдХрд╛ рдЫрд╡рд┐рд╣рд░реВрдХреЛ рдирд╛рдо рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрджреИрдиред рд╣рд╛рдореА рдХреЗрд╡рд▓ Git рдорд╛ рд╕реНрдерд╛рдирд╛рдиреНрддрд░рдг рдЧрд░реНрджреИрдЫреМрдВ рд╡рд╛ рдирд┐рд╢реНрдЪрд┐рдд рдЫрд╡рд┐ рдЬрд╣рд╛рдБ рдЕрдиреНрддрд┐рдо рдЫрд╡рд┐ рдЖрдЙрдЯрдкреБрдЯ рд╣реБрдиреБрдкрд░реНрдЫ рднрдиреЗрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрджрдЫреМрдВред рдпрд╕реИрд▓реЗ рдЕрдиреНрдп рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВрд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрджрд╛ рдпреА рдХреНрд▓рд╕реНрдЯрд░ рдХрд╛рд░реНрдпрд╣рд░реВ рдкреБрди: рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред
рд░ рдпрд╣рд╛рдБ рд╣рд╛рдореА рдХреГрдкрд╛рдкреВрд░реНрд╡рдХ рдЕрд░реНрдХреЛ рдмрд┐рдиреНрджреБрдорд╛ рдЬрд╛рдиреНрдЫреМрдВ ...
╨а╨╡╤Б╤Г╤А╤Б╤Л
рддреНрдпрд╕реЛрднрдП, рд╣рд╛рдореАрд▓реЗ рднрд░реНрдЦрд░реИ рднрдиреЗрдЭреИрдВ, рдХреНрд▓рд╕реНрдЯрд░ рдХрд╛рд░реНрдпрд╣рд░реВ рд╕рдХреЗрд╕рдореНрдо рд╕рд╛рдорд╛рдиреНрдп рд╣реБрдиреБрдкрд░реНрджрдЫ, рд╣рд╛рдореАрд▓реЗ рд╕реНрд░реЛрддрд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ рдЬреБрди рдЗрдирдкреБрдЯ (рдЧрд┐рдЯ рднрдгреНрдбрд╛рд░) рд░ рдЖрдЙрдЯрдкреБрдЯ (рдЕрдиреНрддрд┐рдо рдЫрд╡рд┐рд╣рд░реВ) рдХреЛ рд░реВрдкрдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреЗрдЫред рд╣рд╛рдореАрд▓рд╛рдИ рдЪрд╛рд╣рд┐рдиреЗ рдкрд╣рд┐рд▓реЛ рд╕реНрд░реЛрдд Git рд╣реЛ, рдЬрд╣рд╛рдБ рд╣рд╛рдореНрд░реЛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдмрд╕реНрдЫ, рдпреЛ рдЬрд╕реНрддреИ:
# This resource is the location of the git repo with the web application source
apiVersion: tekton.dev/v1alpha1
kind: PipelineResource
metadata:
name: web-application-repo
spec:
type: git
params:
- name: url
value: https://github.com/nodeshift-starters/react-pipeline-example
- name: revision
value: master
рдпрд╣рд╛рдБ PipelineResource рдкреНрд░рдХрд╛рд░ git рдХреЛ рдЫред рдкреНрдпрд╛рд░рд╛рдо рдЦрдгреНрдбрдорд╛ рд░рд╣реЗрдХреЛ url рдХреБрдЮреНрдЬреАрд▓реЗ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рднрдгреНрдбрд╛рд░рдорд╛ рджреЗрдЦрд╛рдЙрдБрдЫ рд░ рдорд╛рд╕реНрдЯрд░ рд╢рд╛рдЦрд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрджрдЫ (рдпреЛ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╣реЛ, рддрд░ рд╣рд╛рдореА рдпрд╕рд▓рд╛рдИ рдкреВрд░реНрдгрддрд╛рдХреЛ рд▓рд╛рдЧрд┐ рд▓реЗрдЦреНрдЫреМрдВ)ред
рдЕрдм рд╣рд╛рдореАрд▓реЗ рдЫрд╡рд┐рдХреЛ рд▓рд╛рдЧрд┐ рдПрдЙрдЯрд╛ рд╕реНрд░реЛрдд рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ рдЬрд╣рд╛рдБ s2i-web-app рдХрд╛рд░реНрдпрдХреЛ рдкрд░рд┐рдгрд╛рдорд╣рд░реВ рдмрдЪрдд рдЧрд░рд┐рдиреЗрдЫ, рдпреЛ рдпрд╕рд░реА рдЧрд░рд┐рдиреНрдЫ:
# This resource is the result of running "npm run build", the resulting built files will be located in /opt/app-root/output
apiVersion: tekton.dev/v1alpha1
kind: PipelineResource
metadata:
name: built-web-application-image
spec:
type: image
params:
- name: url
value: image-registry.openshift-image-registry.svc:5000/webapp-pipeline/built-web-application:latest
рдпрд╣рд╛рдБ PipelineResource рдЫрд╡рд┐ рдкреНрд░рдХрд╛рд░рдХреЛ рд╣реЛ, рд░ url рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рдХреЛ рдорд╛рдирд▓реЗ рдЖрдиреНрддрд░рд┐рдХ OpenShift рдЫрд╡рд┐ рд░рдЬрд┐рд╕реНрдЯреНрд░реАрд▓рд╛рдИ рдкреЛрдЗрдиреНрдЯ рдЧрд░реНрдЫ, рд╡рд┐рд╢реЗрд╖ рдЧрд░реА webapp-рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдиреЗрдорд╕реНрдкреЗрд╕рдорд╛ рдЕрд╡рд╕реНрдерд┐рдд рдПрдЙрдЯрд╛ред рдпрджрд┐ рддрдкрд╛рдЗрдБ рдлрд░рдХ рдиреЗрдорд╕реНрдкреЗрд╕ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджреИ рд╣реБрдиреБрд╣реБрдиреНрдЫ рднрдиреЗ рдпреЛ рд╕реЗрдЯрд┐рдЩ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрди рдирдмрд┐рд░реНрд╕рдиреБрд╣реЛрд╕реНред
рд░ рдЕрдиреНрддрдорд╛, рд╣рд╛рдореАрд▓рд╛рдИ рдЪрд╛рд╣рд┐рдиреЗ рдЕрдиреНрддрд┐рдо рд╕реНрд░реЛрдд рдкрдирд┐ рдкреНрд░рдХрд╛рд░рдХреЛ рдЫрд╡рд┐рдХреЛ рд╣реБрдиреЗрдЫ рд░ рдпреЛ рдЕрдиреНрддрд┐рдо NGINX рдЫрд╡рд┐ рд╣реБрдиреЗрдЫ рдЬреБрди рддреНрдпрд╕рдкрдЫрд┐ рдкреНрд░рдпреЛрдЧрдХреЛ рд╕рдордпрдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреЗрдЫ:
# This resource is the image that will be just the static html, css, js files being run with nginx
apiVersion: tekton.dev/v1alpha1
kind: PipelineResource
metadata:
name: runtime-web-application-image
spec:
type: image
params:
- name: url
value: image-registry.openshift-image-registry.svc:5000/webapp-pipeline/runtime-web-application:latest
рдлреЗрд░рд┐, рдзреНрдпрд╛рди рджрд┐рдиреБрд╣реЛрд╕реН рдХрд┐ рдпреЛ рд╕реНрд░реЛрддрд▓реЗ рдЫрд╡рд┐рд▓рд╛рдИ webapp-рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдиреЗрдорд╕реНрдкреЗрд╕рдХреЛ рдЖрдиреНрддрд░рд┐рдХ OpenShift рд░рдЬрд┐рд╕реНрдЯреНрд░реАрдорд╛ рднрдгреНрдбрд╛рд░рдг рдЧрд░реНрдЫред
рдпреА рд╕рдмреИ рд╕реНрд░реЛрддрд╣рд░реВ рдПрдХреИрдЪреЛрдЯрд┐ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди, рд╣рд╛рдореА рд╕рд┐рд░реНрдЬрдирд╛ рдЖрджреЗрд╢ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдЫреМрдВ:
$ oc create -f https://raw.githubusercontent.com/nodeshift/webapp-pipeline-tutorial/master/resources/resource.yaml
рддрдкрд╛рдИрдВ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рдХрд┐ рд╕реНрд░реЛрддрд╣рд░реВ рдпрд╕рд░реА рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░рд┐рдПрдХреЛ рдЫ:
$ tkn resource ls
рдХрдиреНрд╡реЗрдпрд░ рдкрд╛рдЗрдкрд▓рд╛рдЗрди
рдЕрдм рд╣рд╛рдореАрд╕рдБрдЧ рд╕рдмреИ рдЖрд╡рд╢реНрдпрдХ рдХрдореНрдкреЛрдиреЗрдиреНрдЯрд╣рд░реВ рдЫрдиреН, рдирд┐рдореНрди рдЖрджреЗрд╢рдХреЛ рд╕рд╛рде рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реЗрд░ рддрд┐рдиреАрд╣рд░реВрдмрд╛рдЯ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдЬрдореНрдорд╛ рдЧрд░реМрдВ:
$ oc create -f https://raw.githubusercontent.com/nodeshift/webapp-pipeline-tutorial/master/pipelines/build-and-deploy-react.yaml
рддрд░ рд╣рд╛рдореАрд▓реЗ рдпреЛ рдЖрджреЗрд╢ рдЪрд▓рд╛рдЙрдиреБ рдЕрдШрд┐, рдпреА рдХрдореНрдкреЛрдиреЗрдиреНрдЯрд╣рд░реВ рд╣реЗрд░реМрдВред рдкрд╣рд┐рд▓реЛ рдирд╛рдо рд╣реЛ:
apiVersion: tekton.dev/v1alpha1
kind: Pipeline
metadata:
name: build-and-deploy-react
рддреНрдпрд╕рдкрдЫрд┐ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЦрдгреНрдбрдорд╛ рд╣рд╛рдореАрд▓реЗ рдкрд╣рд┐рд▓реЗ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реЗрдХрд╛ рд╕реНрд░реЛрддрд╣рд░реВрдХреЛ рд╕рдЩреНрдХреЗрдд рджреЗрдЦреНрдЫреМрдВ:
spec:
resources:
- name: web-application-repo
type: git
- name: built-web-application-image
type: image
- name: runtime-web-application-image
type: image
рддреНрдпрд╕рдкрдЫрд┐ рд╣рд╛рдореА рд╣рд╛рдореНрд░реЛ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдкреВрд░рд╛ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдХрд╛рд░реНрдпрд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдЫреМрдВред рд╕рдмреИрднрдиреНрджрд╛ рдкрд╣рд┐рд▓реЗ, рдпрд╕рд▓реЗ рд╣рд╛рдореАрд▓реЗ рдкрд╣рд┐рд▓реЗ рдиреИ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░рд┐рд╕рдХреЗрдХрд╛ s2i-web-app рдХрд╛рд░реНрдп рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░реНрдиреБрдкрд░реНрдЫ:
tasks:
- name: build-web-application
taskRef:
name: s2i-web-app
kind: ClusterTask
рдпреЛ рдХрд╛рд░реНрдпрд▓реЗ рдЗрдирдкреБрдЯ (рдЧрд┐рд░ рд░рд┐рд╕реЛрд░реНрд╕) рд░ рдЖрдЙрдЯрдкреБрдЯ (рдмрд┐рд▓реНрдЯ-рд╡реЗрдм-рдПрдкреНрд▓рд┐рдХреЗрд╢рди-рдЗрдореЗрдЬ рд░рд┐рд╕реЛрд░реНрд╕) рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд╣рд░реВ рд▓рд┐рдиреНрдЫред рд╣рд╛рдореА рдпрд╕рд▓рд╛рдИ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░ рдкрдирд┐ рдкрд╛рд╕ рдЧрд░реНрдЫреМрдВ рддрд╛рдХрд┐ рдпрд╕рд▓реЗ TLS рдкреНрд░рдорд╛рдгрд┐рдд рдЧрд░реНрджреИрди рдХрд┐рдирдХрд┐ рд╣рд╛рдореАрд▓реЗ рд╕реНрд╡-рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдкреНрд░рдорд╛рдгрдкрддреНрд░рд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рд░рд╣реЗрдХрд╛ рдЫреМрдВ:
resources:
inputs:
- name: source
resource: web-application-repo
outputs:
- name: image
resource: built-web-application-image
params:
- name: TLSVERIFY
value: "false"
рдЕрд░реНрдХреЛ рдХрд╛рд░реНрдп рд▓рдЧрднрдЧ рдЙрд╕реНрддреИ рдЫ, рдХреЗрд╡рд▓ рдпрд╣рд╛рдБ рд╣рд╛рдореАрд▓реЗ рдкрд╣рд┐рд▓реЗ рдиреИ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реЗрдХреЛ webapp-build-runtime рдХреНрд▓рд╕реНрдЯрд░ рдХрд╛рд░реНрдп рднрдирд┐рдиреНрдЫ:
name: build-runtime-image
taskRef:
name: webapp-build-runtime
kind: ClusterTask
рдЕрдШрд┐рд▓реНрд▓реЛ рдХрд╛рд░реНрдпрдХреЛ рд░реВрдкрдорд╛, рд╣рд╛рдореА рд╕реНрд░реЛрддрдорд╛ рдкрд╛рд╕ рдЧрд░реНрдЫреМрдВ, рддрд░ рдЕрдм рдпреЛ рдирд┐рд░реНрдорд┐рдд-рд╡реЗрдм-рдПрдкреНрд▓рд┐рдХреЗрд╢рди-рдЫрд╡рд┐ (рд╣рд╛рдореНрд░реЛ рдЕрдШрд┐рд▓реНрд▓реЛ рдХрд╛рд░реНрдпрдХреЛ рдЖрдЙрдЯрдкреБрдЯ) рд╣реЛред рд░ рдЖрдЙрдЯрдкреБрдЯрдХреЛ рд░реВрдкрдорд╛ рд╣рд╛рдореАрд▓реЗ рдлреЗрд░рд┐ рдЫрд╡рд┐ рд╕реЗрдЯ рдЧрд░реНрдпреМрдВред рдпреЛ рдХрд╛рд░реНрдп рдЕрдШрд┐рд▓реНрд▓реЛ рдПрдХ рдкрдЫрд┐ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реБрдиреБрдкрд░реНрдЫ, рд╣рд╛рдореА runAfter рдлрд┐рд▓реНрдб рдердкреНрдЫреМрдВ:
resources:
inputs:
- name: image
resource: built-web-application-image
outputs:
- name: image
resource: runtime-web-application-image
params:
- name: TLSVERIFY
value: "false"
runAfter:
- build-web-application
рдЕрд░реНрдХреЛ рджреБрдИ рдХрд╛рд░реНрдпрд╣рд░реВ рд╣рд╛рдореНрд░реЛ рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧрдХреЛ k8s рдбрд╛рдЗрд░реЗрдХреНрдЯрд░реАрдорд╛ рд░рд╣рдиреЗ рд╕реЗрд╡рд╛, рдорд╛рд░реНрдЧ рд░ рдбрд┐рдкреНрд▓реЛрдЗрдореЗрдиреНрдЯ YAML рдлрд╛рдЗрд▓рд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдирдХрд╛ рд▓рд╛рдЧрд┐ рдЬрд┐рдореНрдореЗрд╡рд╛рд░ рдЫрдиреН, рд░ рдирдпрд╛рдБ рдЫрд╡рд┐рд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрджрд╛ рдпреЛ рдбрд┐рдкреНрд▓реЛрдпрдореЗрдиреНрдЯ рдЕрджреНрдпрд╛рд╡рдзрд┐рдХ рдЧрд░реНрдирдХрд╛ рд▓рд╛рдЧрд┐ рдкрдирд┐ред рд╣рд╛рдореАрд▓реЗ рд▓реЗрдЦрдХреЛ рд╕реБрд░реБрдорд╛ рдпреА рджреБрдИ рдХреНрд▓рд╕реНрдЯрд░ рдХрд╛рд░реНрдпрд╣рд░реВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЧрд░реЗрдХрд╛ рдЫреМрдВред
рдХрдиреНрд╡реЗрдпрд░ рд╕реБрд░реБ рдЧрд░реНрджреИ
рддреНрдпрд╕реЛрднрдП, рд╣рд╛рдореНрд░реЛ рдкрд╛рдЗрдкрд▓рд╛рдЗрдирдХрд╛ рд╕рдмреИ рднрд╛рдЧрд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░рд┐рдПрдХрд╛ рдЫрдиреН, рд░ рд╣рд╛рдореА рдпрд╕рд▓рд╛рдИ рдирд┐рдореНрди рдЖрджреЗрд╢рдХреЛ рд╕рд╛рде рдЪрд▓рд╛рдЙрдиреЗрдЫреМрдВ:
$ tkn pipeline start build-and-deploy-react
рдпрд╕ рдЪрд░рдгрдорд╛, рдХрдорд╛рдгреНрдб рд▓рд╛рдЗрди рдЕрдиреНрддрд░рдХреНрд░рд┐рдпрд╛рддреНрдордХ рд░реВрдкрдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫ рд░ рддрдкрд╛рдИрдВрд▓реЗ рдпрд╕рдХреЛ рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрд░реЛрдзрдХреЛ рдЬрд╡рд╛рдлрдорд╛ рдЙрдкрдпреБрдХреНрдд рд╕реНрд░реЛрддрд╣рд░реВ рдЪрдпрди рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ: git рд╕рдВрд╕рд╛рдзрдирдХреЛ рд▓рд╛рдЧрд┐, рд╡реЗрдм-рдПрдкреНрд▓рд┐рдХреЗрд╢рди-рд░рд┐рдкреЛ рдЪрдпрди рдЧрд░реНрдиреБрд╣реЛрд╕реН, рддреНрдпрд╕рдкрдЫрд┐ рдкрд╣рд┐рд▓реЛ рдЫрд╡рд┐ рд╕реНрд░реЛрддрдХреЛ рд▓рд╛рдЧрд┐, рдирд┐рд░реНрдорд┐рдд-рд╡реЗрдм-рдЕрдиреБрдкреНрд░рдпреЛрдЧред -рдЫрд╡рд┐, рд░ рдЕрдиреНрддрдорд╛, рджреЛрд╕реНрд░реЛ рдЫрд╡рд┐ рд╕реНрд░реЛрддрдХреЛ рд▓рд╛рдЧрд┐ -рд░рдирдЯрд╛рдЗрдо-рд╡реЗрдм-рдПрдкреНрд▓рд┐рдХреЗрд╢рди-рдЫрд╡рд┐:
? Choose the git resource to use for web-application-repo: web-application-repo (https://github.com/nodeshift-starters/react-pipeline-example)
? Choose the image resource to use for built-web-application-image: built-web-application-image (image-registry.openshift-image-registry.svc:5000/webapp-pipeline/built-web-
application:latest)
? Choose the image resource to use for runtime-web-application-image: runtime-web-application-image (image-registry.openshift-image-registry.svc:5000/webapp-pipeline/runtim
e-web-application:latest)
Pipelinerun started: build-and-deploy-react-run-4xwsr
рдЕрдм рдирд┐рдореНрди рдЖрджреЗрд╢ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдкрд╛рдЗрдкрд▓рд╛рдЗрдирдХреЛ рд╕реНрдерд┐рддрд┐ рдЬрд╛рдБрдЪ рдЧрд░реМрдВ:
$ tkn pipeline logs -f
рдПрдХ рдкрдЯрдХ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рд╕реБрд░реБ рднрдПрдкрдЫрд┐ рд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рддреИрдирд╛рдд рдЧрд░рд┐рд╕рдХреЗрдкрдЫрд┐, рд╣рд╛рдореА рдирд┐рдореНрди рдЖрджреЗрд╢рдХреЛ рд╕рд╛рде рдкреНрд░рдХрд╛рд╢рд┐рдд рдорд╛рд░реНрдЧ рдЕрдиреБрд░реЛрдз рдЧрд░реНрди рд╕рдХреНрдЫреМрдВ:
$ oc get route react-pipeline-example --template='http://{{.spec.host}}'
рдердк рджреГрд╢реНрдпрдХрд╛ рд▓рд╛рдЧрд┐, рддрдкрд╛рдИрдВрд▓реЗ рд╕реЗрдХреНрд╕рдирдорд╛ рд░рд╣реЗрдХреЛ рд╡реЗрдм рдХрдиреНрд╕реЛрд▓рдХреЛ рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛ рдореЛрдбрдорд╛ рд╣рд╛рдореНрд░реЛ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рд╣реЗрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред рдкрд╛рдЗрдкрд▓рд╛рдЗрдирд╣рд░реВ, рдЪрд┐рддреНрд░ рдорд╛ рджреЗрдЦрд╛рдЗрдПрдХреЛ рд░реВрдкрдорд╛ред рез.
рдЪрд┐рддреНрд░ резред рдЪрд▓рд┐рд░рд╣реЗрдХреЛ рдкрд╛рдЗрдкрд▓рд╛рдЗрдирд╣рд░реВрдХреЛ рд╕рдореАрдХреНрд╖рд╛ред
рдЪрд▓рд┐рд░рд╣реЗрдХреЛ рдкрд╛рдЗрдкрд▓рд╛рдЗрдирдорд╛ рдХреНрд▓рд┐рдХ рдЧрд░реНрджрд╛ рдЪрд┐рддреНрд░ реи рдорд╛ рджреЗрдЦрд╛рдЗрдП рдЕрдиреБрд╕рд╛рд░ рдердк рд╡рд┐рд╡рд░рдгрд╣рд░реВ рджреЗрдЦрд╛рдЙрдБрдЫред
рдЪрд╛рдорд▓ред 2. рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдмрд╛рд░реЗ рдердк рдЬрд╛рдирдХрд╛рд░реАред
рдердк рдЬрд╛рдирдХрд╛рд░реА рдкрдЫрд┐, рддрдкрд╛рдЗрдБ рджреГрд╢реНрдпрдорд╛ рдЪрд▓рд┐рд░рд╣реЗрдХреЛ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВ рд╣реЗрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рдЯреЛрдкреЛрд▓реЛрдЬреА, рдЪрд┐рддреНрд░ 3 рдорд╛ рджреЗрдЦрд╛рдЗрдПрдХреЛ рдЫред
рдЪрд┐рддреНрд░ 3. рд╕реБрд░реБ рдЧрд░рд┐рдПрдХреЛ рдкреЛрдбред
рдкреНрд░рддрд┐рдорд╛рдХреЛ рдорд╛рдерд┐рд▓реНрд▓реЛ рджрд╛рдпрд╛рдБ рдХреБрдирд╛рдорд╛ рд░рд╣реЗрдХреЛ рд╕рд░реНрдХрд▓рдорд╛ рдХреНрд▓рд┐рдХ рдЧрд░реНрджрд╛ рдЪрд┐рддреНрд░ 4 рдорд╛ рджреЗрдЦрд╛рдЗрдП рдЕрдиреБрд╕рд╛рд░ рд╣рд╛рдореНрд░реЛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЦреЛрд▓реНрдЫред
рдЪрд╛рдорд▓ред 4. рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЪрд▓рд┐рд░рд╣реЗрдХреЛ рдЫред
рдирд┐рд╖реНрдХрд░реНрд╖рдорд╛
рддреНрдпрд╕реЛрднрдП, рд╣рд╛рдореАрд▓реЗ OpenShift рдорд╛ рддрдкрд╛рдЗрдБрдХреЛ рдЕрдиреБрдкреНрд░рдпреЛрдЧрдХреЛ рд▓рд╛рдЧрд┐ рд╡рд┐рдХрд╛рд╕ рд╕рд░реНрднрд░ рдХрд╕рд░реА рдЪрд▓рд╛рдЙрдиреЗ рд░ рдпрд╕рд▓рд╛рдИ рд╕реНрдерд╛рдиреАрдп рдлрд╛рдЗрд▓ рдкреНрд░рдгрд╛рд▓реАрд╕рдБрдЧ рд╕рд┐рдЩреНрдХреНрд░реЛрдирд╛рдЗрдЬ рдЧрд░реНрдиреЗ рднрдиреЗрд░ рджреЗрдЦрд╛рдпреМрдВред рд╣рд╛рдореАрд▓реЗ OpenShift рдкрд╛рдЗрдкрд▓рд╛рдЗрдирд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдЪреЗрди-рдмрд┐рд▓реНрдб рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХрд╕рд░реА рд╕рд┐рдореБрд▓реЗрдЯ рдЧрд░реНрдиреЗ рднрдиреЗрд░ рдкрдирд┐ рд╣реЗрд░реНрдпреМрдВред рдпрд╕ рд▓реЗрдЦрдмрд╛рдЯ рд╕рдмреИ рдЙрджрд╛рд╣рд░рдг рдХреЛрдбрд╣рд░реВ рдлреЗрд▓рд╛ рдкрд╛рд░реНрди рд╕рдХрд┐рдиреНрдЫ
рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реНрд░реЛрддрд╣рд░реВ (EN)
- рдирд┐: рд╢реБрд▓реНрдХ рдИ-рдкреБрд╕реНрддрдХ
"OpenShift рдорд╛ рд╡рд┐рдХрд╛рд╕: рдЕрдзреАрд░ рдХреЛ рд▓рд╛рдЧреА рдПрдХ рдЧрд╛рдЗрдб" Red Hat OpenShift рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд░рдирдЯрд╛рдЗрдо рд░ Istio рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдХрдиреНрдЯреЗрдирд░-рдХреЗрдиреНрджреНрд░рд┐рдд Node.js рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВ рдирд┐рд░реНрдорд╛рдг рдЧрд░реНрджреИ Chrome DevTools рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ OpenShift рдорд╛ Node.js рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВ рдбрд┐рдмрдЧ рдЧрд░реНрджреИ рд╕реНрдХреНрд░реНрдпрд╛рдЪрдмрд╛рдЯ OpenShift рдорд╛ рдПрдХреНрд╕рдкреНрд░реЗрд╕ рдорд╛рд╕реНрдЯрд░ рдЧрд░реНрди рддреАрди рдЖрджреЗрд╢рд╣рд░реВ Red Hat OpenShift рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд░рдирдЯрд╛рдЗрдордХреЛ рднрд╛рдЧрдХреЛ рд░реВрдкрдорд╛ Node.js рдХреЛ рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛ рдЙрдкрд▓рдмреНрдз рд╕рдВрд╕реНрдХрд░рдгрдХреЛ рдШреЛрд╖рдгрд╛ Prometheus рд╕рдВрдЧ OpenShift рдорд╛ рдЕрдиреБрдЧрдорди Node.js рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВ - рдЕрдиреНрдп рд▓реЗрдЦрд╣рд░реВрдорд╛
OpenShift рд░ Kubernetes Red Hat рд╡реЗрдмрд╕рд╛рдЗрдЯрдорд╛
рдЖрдЧрд╛рдореА рд╡реЗрдмрд┐рдирд╛рд░рд╣рд░реВрдХреЛ рдШреЛрд╖рдгрд╛
рд╣рд╛рдореА Red Hat OpenShift рдХрдиреНрдЯреЗрдирд░ рдкреНрд▓реЗрдЯрдлрд░реНрдо рд░ Kubernetes рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдиреЗрдЯрд┐рдн рдЕрдиреБрднрд╡рдХреЛ рдмрд╛рд░реЗрдорд╛ рд╢реБрдХреНрд░рдмрд╛рд░ рд╡реЗрдмрд┐рдирд╛рд░рд╣рд░реВрдХреЛ рд╢реНрд░реГрдВрдЦрд▓рд╛ рд╕реБрд░реБ рдЧрд░реНрджреИрдЫреМрдВ:
рдЕрдЧрд╕реНрдЯ реирео, рд╡реЗрдмрд┐рдирд╛рд░ рд╕рдореНрд░рд╛рдЯ "рдЕрдкрд░реЗрдЯрд░": рдУрдкрдирд╢рд┐рдлреНрдЯ рд░ рдХреБрдмреЗрд░рдиреЗрдЯрдорд╛ рдЕрдкрд░реЗрдЯрд░рд╣рд░реВ рд╕реЗрдкреНрдЯреЗрдореНрдмрд░ 11, рдбрд┐рдкреНрд▓реЛрдпрдореЗрдиреНрдЯ рдХрдиреНрдлрд┐рдЧ рдмрдирд╛рдо рдбрд┐рдкреНрд▓реЛрдпрдореЗрдиреНрдЯ - рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВ рдирд┐рд░реНрдорд╛рдг рд░ рдбрд┐рдкреНрд▓реЛрдЗ рдЧрд░реНрдирдХрд╛ рд▓рд╛рдЧрд┐ рдУрдкрдирд╢рд┐рдлреНрдЯ-рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЬрд╛рджреВ рд╕реЗрдкреНрдЯреЗрдореНрдмрд░ 25, Red Hat OpenShift рд░ Machine API рдЕрдХреНрдЯреЛрдмрд░ 9, рдХрд╛рдордХреЛ рдмреЛрдЭ рдЕрдЪрд╛рдирдХ рдмрдвреЗрдХреЛрд╕рдБрдЧ рдХрд╕рд░реА рд╕рд╛рдордирд╛ рдЧрд░реНрдиреЗ рдЕрдХреНрдЯреЛрдмрд░ реирей, рдЗрдореНрдмреЗрдбреЗрдб рдЬреЗрдирдХрд┐рдиреНрд╕, рдкрд╛рдЗрдкрд▓рд╛рдЗрди-рдмрд┐рд▓реНрдбреНрд╕, рд░реЗрдб рд╣реНрдпрд╛рдЯ рдУрдкрдирд╕рд┐рдлреНрдЯ рдХрдиреНрдЯреЗрдирд░ рдкреНрд▓реЗрдЯрдлрд░реНрдордорд╛ рдЯреЗрдХрдЯрди
рд╕реНрд░реЛрдд: www.habr.com