เจธเจค เจธเฉเจฐเฉ เจ เจเจพเจฒ! เจนเจพเจฒ เจนเฉ เจตเจฟเฉฑเจ, เจฌเจนเฉเจค เจธเจพเจฐเฉ เจตเจงเฉเจ เจเจเฉเจฎเฉเจธเจผเจจ เจเฉเจฒ เจกเฉเจเจฐ เจเจฟเฉฑเจคเจฐเจพเจ เจจเฉเฉฐ เจฌเจฃเจพเจเจฃ เจ เจคเฉ เจเฉเจฌเจฐเจจเฉเจเจธ เจฒเจ เจคเฉเจจเจพเจคเฉ เจฒเจ เจเจพเจฐเฉ เจเฉเจคเฉ เจเจ เจนเจจเฅค เจเจธ เจธเจฌเฉฐเจง เจตเจฟเฉฑเจ, เจฎเฉเจ เจเจฟเฉฑเจเจฒเฉเจฌ เจฆเฉ เจจเจพเจฒ เจเฉเจกเจฃ เจฆเจพ เจซเฉเจธเจฒเจพ เจเฉเจคเจพ, เจเจธ เจฆเฉเจเจ เจธเจฎเจฐเฉฑเจฅเจพเจตเจพเจ เจฆเจพ เจเฉฐเจเฉ เจคเจฐเฉเจนเจพเจ เจ เจงเจฟเจเจจ เจเฉเจคเจพ เจ เจคเฉ, เจฌเฉเจธเจผเจ, เจชเจพเจเจชเจฒเจพเจเจจ เจธเจฅเจพเจชเจค เจเฉเจคเฉเฅค
เจเจน เจเฉฐเจฎ เจตเฉเฉฑเจฌเจธเจพเจเจ เจคเฉเจ เจชเฉเจฐเฉเจฐเจฟเจค เจธเฉ
เจฎเฉเจ เจธเจเฉเจฐเฉเจ เจคเฉเจ เจเฉฑเจ เจธเจฎเจพเจจ เจชเฉเจฐเจเจฟเจฐเจฟเจ เจฌเจฃเจพเจเจฃ เจฆเฉ เจเฉเจธเจผเจฟเจธเจผ เจเฉเจคเฉ, เจชเจฐ เจชเฉเจฐเฉ เจคเจฐเฉเจนเจพเจ เจเจฟเจเจฒเฉเจฌ เจธเฉเจเจ เจ เจคเฉ เจฎเฉเจซเจค เจเฉเจฒเจธ 'เจคเฉ เจฌเจฃเจพเจเจ เจเจฟเจ เจนเฉ เจเฉ เจฎเฉเจ เจเฉเจฌเจฐเจจเฉเจเจธ เจฒเจ เจเจชเจฒเฉเจเฉเจธเจผเจจเจพเจ เจจเฉเฉฐ เจคเฉเจจเจพเจค เจเจฐเจจ เจฒเจ เจตเจฐเจคเจฃ เจฒเจ เจเจฆเฉ เจนเจพเจเฅค เจ เฉฑเจ เจฎเฉเจ เจคเฉเจนเจพเจจเฉเฉฐ เจเจจเฉเจนเจพเจ เจฌเจพเจฐเฉ เจนเฉเจฐ เจฆเฉฑเจธเจพเจเจเจพ.
เจฒเฉเจ เจเฉเจฒเจธ เจฌเจพเจฐเฉ เจเจฐเจเจพ เจเจฐเฉเจเจพ เจเจฟเจตเฉเจ เจเจฟ:
Hugo, qbec, เจเจจเฉเจเฉ, git-เจเฉเจฐเจฟเจชเจ ะธ เจเจฟเฉฑเจเจฒเจพเจฌ เจธเฉ.เจเจ. เจเจคเฉเจธเจผเฉเจฒ เจตเจพเจคเจพเจตเจฐเจฃ เจฆเฉ เจธเจฟเจฐเจเจฃเจพ เจฆเฉ เจจเจพเจฒ.
เจธเจฎเจเจฐเฉ
เจนเจฟเจเจเฉ เจจเฉเฉฐ เจฎเจฟเจฒเฉ เจกเฉเจเจฐเจซเจพเจเจฒ เจคเจฟเจเจฐ เจเจฐ เจฐเจฟเจนเจพ เจนเฉ เจเจจเจฟเจเฉ เจเจพเจฃเจจเจพ qbec เจจเฉเฉฐ เจเจพเจฃเจจเจพ เจเฉเจฌเจฐเจจเฉเจเจธ-เจเจเจเจผเฉเจเจฟเจเจเจฐ เจจเจพเจฒ เจเจฟเจเจฒเจฌ-เจฐเจจเจฐ เจฆเฉ เจเฉเจธเจผเจฟเจธเจผ เจเจฐ เจฐเจฟเจนเจพ เจนเฉ qbec เจฆเฉ เจจเจพเจฒ เจนเฉเจฒเจฎ เจเจพเจฐเจ เจคเจพเจเจจเจพเจค เจเจฐเจจเจพ เจเจฟเฉฑเจ-เจเฉเจฐเจฟเจชเจ เจชเฉเจธเจผ เจเจฐ เจฐเจฟเจนเจพ เจนเฉ เจเฉฑเจ เจเฉเจฒเจฌเจพเจเจธ เจเจฟเฉฑเจคเจฐ เจฌเจฃเจพเจเจฃเจพ เจธเจพเจกเฉ เจชเจนเจฟเจฒเฉ เจชเจพเจเจชเจฒเจพเจเจจ เจ เจคเฉ เจเฉเจ เจฆเฉเจเจฐเจพ เจเจฟเฉฑเจคเจฐเจพเจ เจฆเฉ เจ เจธเฉเจเจฌเจฒเฉ เจกเจฟเจชเจฒเจพเจเจฎเฉเจเจ เจเจเฉเจฎเฉเจธเจผเจจ เจเจฒเจพเจคเจฎเจ เจเฉเจเจผเจพเจ เจ เจคเฉ เจ เจธเฉเจเจฌเจฒเฉ เจเจฆเฉเจ เจฎเจพเจธเจเจฐ เจตเฉฑเจฒ เจงเฉฑเจเจฆเฉ เจนเฉ เจเจคเฉเจธเจผเฉเจฒ เจตเจพเจคเจพเจตเจฐเจฃ เจเจชเจพเจ เจฆเฉ เจธเจฎเฉเจเจฟเจ เจเจฐเฉ
1. เจนเจฟเจเจเฉ เจจเฉเฉฐ เจเจพเจฃเจจเจพ
เจธเจพเจกเฉ เจชเฉเจฐเฉเจเฉเจเจ เจฆเฉ เจเฉฑเจ เจเจฆเจพเจนเจฐเจฃ เจตเจเฉเจ, เจ เจธเฉเจ เจนเจฟเจเจเฉ 'เจคเฉ เจฌเจฃเฉ เจเฉฑเจ เจฆเจธเจคเจพเจตเฉเจเจผ เจชเฉเจฐเจเจพเจธเจผเจจ เจธเจพเจเจ เจฌเจฃเจพเจเจฃ เจฆเฉ เจเฉเจธเจผเจฟเจธเจผ เจเจฐเจพเจเจเฉเฅค เจนเจฟเจเจเฉ เจเฉฑเจ เจธเจฅเจฟเจฐ เจธเจฎเฉฑเจเจฐเฉ เจเจจเจฐเฉเจเจฐ เจนเฉเฅค
เจเจนเจจเจพเจ เจฒเจ เจเฉ เจธเจฅเจฟเจฐ เจเจจเจฐเฉเจเจฐเจพเจ เจคเฉเจ เจเจพเจฃเฉ เจจเจนเฉเจ เจนเจจ, เจฎเฉเจ เจคเฉเจนเจพเจจเฉเฉฐ เจเจนเจจเจพเจ เจฌเจพเจฐเฉ เจฅเฉเฉเจพ เจนเฉเจฐ เจฆเฉฑเจธเจพเจเจเจพ. เจเฉฑเจ เจกเฉเจเจพเจฌเฉเจธ เจ เจคเฉ เจเฉเจ PHP เจตเจพเจฒเฉ เจฐเจตเจพเจเจคเฉ เจตเฉเจฌเจธเจพเจเจ เจเฉฐเจเจฃเจพเจ เจฆเฉ เจเจฒเจ, เจเฉ, เจเจฆเฉเจ เจเฉฑเจ เจเจชเจญเฉเจเจคเจพ เจฆเฉเจเจฐเจพ เจฌเฉเจจเจคเฉ เจเฉเจคเฉ เจเจพเจเจฆเฉ เจนเฉ, เจซเจฒเจพเจ 'เจคเฉ เจชเฉฐเจจเฉ เจคเจฟเจเจฐ เจเจฐเจฆเฉ เจนเจจ, เจธเจฅเจฟเจฐ เจเจจเจฐเฉเจเจฐ เจฅเฉเฉเฉ เจตเฉฑเจเจฐเฉ เจขเฉฐเจ เจจเจพเจฒ เจกเจฟเจเจผเจพเจเจจ เจเฉเจคเฉ เจเจพเจเจฆเฉ เจนเจจเฅค เจเจน เจคเฉเจนเจพเจจเฉเฉฐ เจธเจฐเฉเจค เจฒเฉเจฃ เจฆเฉ เจเจเจพเจเจผเจค เจฆเจฟเฉฐเจฆเฉ เจนเจจ, เจเจฎ เจคเฉเจฐ 'เจคเฉ เจฎเจพเจฐเจเจกเจพเจเจจ เจฎเจพเจฐเจเจ เจช เจ เจคเฉ เจฅเฉเจฎ เจเฉเจเจชเจฒเฉเจเจธ เจตเจฟเฉฑเจ เจซเจพเจเจฒเจพเจ เจฆเจพ เจเฉฑเจ เจธเฉเฉฑเจ, เจซเจฟเจฐ เจเจนเจจเจพเจ เจจเฉเฉฐ เจชเฉเจฐเฉ เจคเจฐเฉเจนเจพเจ เจฎเฉเจเฉฐเจฎเจฒ เจตเฉเจฌเจธเจพเจเจ เจตเจฟเฉฑเจ เจเฉฐเจชเจพเจเจฒ เจเจฐเฉเฅค
เจญเจพเจต, เจจเจคเฉเจเฉ เจตเจเฉเจ, เจคเฉเจนเจพเจจเฉเฉฐ เจเฉฑเจ เจกเจพเจเจฐเฉเจเจเจฐเฉ เจขเจพเจเจเจพ เจ เจคเฉ เจคเจฟเจเจฐ เจเฉเจคเฉเจเจ HTML เจซเจพเจเจฒเจพเจ เจฆเจพ เจเฉฑเจ เจธเฉเฉฑเจ เจฎเจฟเจฒเฉเจเจพ, เจเจฟเจธ เจจเฉเฉฐ เจคเฉเจธเฉเจ เจเจฟเจธเฉ เจตเฉ เจธเจธเจคเฉ เจนเฉเจธเจเจฟเฉฐเจ 'เจคเฉ เจ เจชเจฒเฉเจก เจเจฐ เจธเจเจฆเฉ เจนเฉ เจ เจคเฉ เจเฉฑเจ เจเฉฐเจฎ เจเจฐเจจ เจตเจพเจฒเฉ เจตเฉเจฌเจธเจพเจเจ เจชเฉเจฐเจพเจชเจค เจเจฐ เจธเจเจฆเฉ เจนเฉเฅค
เจคเฉเจธเฉเจ เจนเจฟเจเจเฉ เจจเฉเฉฐ เจธเจฅเจพเจจเจ เจคเฉเจฐ 'เจคเฉ เจธเจฅเจพเจชเจฟเจค เจเจฐ เจธเจเจฆเฉ เจนเฉ เจ เจคเฉ เจเจธเจจเฉเฉฐ เจ เจเจผเจฎเจพ เจธเจเจฆเฉ เจนเฉ:
เจเฉฑเจ เจจเจตเฉเจ เจธเจพเจเจ เจฆเฉ เจธเจผเฉเจฐเฉเจเจค:
hugo new site docs.example.org
เจ เจคเฉ เจเจธเฉ เจธเจฎเฉเจ git เจฐเจฟเจชเฉเจเจผเจเจฐเฉ:
cd docs.example.org
git init
เจนเฉเจฃ เจคเฉฑเจ, เจธเจพเจกเฉ เจธเจพเจเจ เจชเฉเจฐเจพเจเฉเจจ เจนเฉ เจ เจคเฉ เจเจธ 'เจคเฉ เจเฉเจ เจฆเจฟเจเจพเจ เจฆเฉเจฃ เจฒเจ, เจธเจพเจจเฉเฉฐ เจชเจนเจฟเจฒเจพเจ เจเฉฑเจ เจฅเฉเจฎ เจจเฉเฉฐ เจเฉเฉเจจ เจฆเฉ เจฒเฉเฉ เจนเฉเฉฐเจฆเฉ เจนเฉ; เจเฉฑเจ เจฅเฉเจฎ เจธเจฟเจฐเจซเจผ เจเฉเจเจชเจฒเฉเจเจพเจ เจ เจคเฉ เจจเจฟเจธเจผเจเจฟเจค เจจเจฟเจฏเจฎเจพเจ เจฆเจพ เจเฉฑเจ เจธเจฎเฉเจน เจนเฉ เจเจฟเจธ เจฆเฉเจเจฐเจพ เจธเจพเจกเฉ เจธเจพเจเจ เจคเจฟเจเจฐ เจเฉเจคเฉ เจเจพเจเจฆเฉ เจนเฉเฅค
เจฅเฉเจฎ เจฒเจ เจ
เจธเฉเจ เจตเจฐเจคเจพเจเจเฉ
เจฎเฉเจ เจเจธ เจคเฉฑเจฅ เจตเฉฑเจฒ เจตเจฟเจธเจผเฉเจธเจผ เจงเจฟเจเจจ เจฆเฉเจฃเจพ เจเจพเจนเจพเจเจเจพ เจเจฟ เจธเจพเจจเฉเฉฐ เจเจชเจฃเฉ เจชเฉเจฐเฉเจเฉเจเจ เจฐเจฟเจชเฉเจเจผเจเจฐเฉ เจตเจฟเฉฑเจ เจฅเฉเจฎ เจซเจพเจเจฒเจพเจ เจจเฉเฉฐ เจธเฉเจฐเฉฑเจเจฟเจ เจค เจเจฐเจจ เจฆเฉ เจเจผเจฐเฉเจฐเจค เจจเจนเฉเจ เจนเฉ; เจเจธ เจฆเฉ เจฌเจเจพเจ, เจ เจธเฉเจ เจเจธเจจเฉเฉฐ เจตเจฐเจค เจเฉ เจเฉเฉ เจธเจเจฆเฉ เจนเจพเจ git เจธเจฌเจฎเฉเจกเจฟเจเจฒ:
git submodule add https://github.com/matcornic/hugo-theme-learn themes/learn
เจเจธ เจคเจฐเฉเจนเจพเจ, เจธเจพเจกเฉ เจฐเจฟเจชเฉเจเจผเจเจฐเฉ เจตเจฟเฉฑเจ เจธเจฟเจฐเจซ เจธเจพเจกเฉ เจชเฉเจฐเฉเจเฉเจเจ เจจเจพเจฒ เจธเจฟเฉฑเจงเฉ เจคเฉเจฐ 'เจคเฉ เจธเฉฐเจฌเฉฐเจงเจฟเจค เจซเจพเจเจฒเจพเจ เจธเจผเจพเจฎเจฒ เจนเฉเจฃเจเฉเจเจ, เจ เจคเฉ เจเฉเฉเจฟเจ เจฅเฉเจฎ เจเฉฑเจ เจเจพเจธ เจฐเจฟเจชเฉเจเจผเจเจฐเฉ เจฆเฉ เจฒเจฟเฉฐเจ เจ เจคเฉ เจเจธ เจตเจฟเฉฑเจ เจเฉฑเจ เจชเฉเจฐเจคเฉเจฌเฉฑเจงเจคเจพ เจฆเฉ เจฐเฉเจช เจตเจฟเฉฑเจ เจฐเจนเฉเจเจพ, เจฏเจพเจจเฉ เจเจธเจจเฉเฉฐ เจนเจฎเฉเจธเจผเจพ เจ เจธเจฒ เจธเจฐเฉเจค เจคเฉเจ เจเจฟเฉฑเจเจฟเจ เจเจพ เจธเจเจฆเจพ เจนเฉ เจ เจคเฉ เจกเจฐเจจเจพ เจจเจนเฉเจ เจนเฉ. เจ เจธเฉฐเจเจค เจคเจฌเจฆเฉเจฒเฉเจเจเฅค
เจเจ เจธเฉฐเจฐเจเจจเจพ เจจเฉเฉฐ เจ เฉเจ เจเจฐเฉเจ config.toml:
baseURL = "http://docs.example.org/"
languageCode = "en-us"
title = "My Docs Site"
theme = "learn"
เจชเจนเจฟเจฒเจพเจ เจนเฉ เจเจธ เจชเฉเจพเจ 'เจคเฉ เจคเฉเจธเฉเจ เจเจฒเจพ เจธเจเจฆเฉ เจนเฉ:
hugo server
เจ
เจคเฉ เจชเจคเฉ 'เจคเฉ
เจตเจฟเฉฑเจ เจเฉฑเจ เจเจตเจฐ เจชเฉเจ เจฌเจฃเจพเจเจฃ เจฆเฉ เจเฉเจธเจผเจฟเจธเจผ เจเจฐเฉเจ content/_index.md:
# My docs site
## Welcome to the docs!
You will be very smart :-)
เจจเจตเฉเจ เจฌเจฃเฉ เจชเฉฐเจจเฉ เจฆเจพ เจธเจเจฐเฉเจจเจธเจผเจพเจ
เจเฉฑเจ เจธเจพเจเจ เจฌเจฃเจพเจเจฃ เจฒเจ, เจฌเฉฑเจธ เจเจฒเจพเจ:
hugo
เจกเจพเจเจฐเฉเจเจเจฐเฉ เจธเจฎเฉฑเจเจฐเฉ เจเจจเจคเจ/ เจ
เจคเฉ เจคเฉเจนเจพเจกเฉ เจตเฉเจฌเจธเจพเจเจ เจนเฉเจตเฉเจเฉเฅค
เจนเจพเจ, เจคเจฐเฉเจเฉ เจจเจพเจฒ, เจเจ เจเจธ เจจเฉเฉฐ เจคเฉเจฐเฉฐเจค เจธเจผเจพเจฎเจฒ เจเจฐเฉเจ .เจเจฟเฉฑเจเจพเจเจจเฉเจฐ:
echo /public > .gitignore
เจธเจพเจกเฉ เจฌเจฆเจฒเจพเจ เจเจฐเจจ เจฒเจ เจจเจพ เจญเฉเฉฑเจฒเฉ:
git add .
git commit -m "New site created"
2. เจกเฉเจเจฐเจซเจพเจเจฒ เจจเฉเฉฐ เจคเจฟเจเจฐ เจเจฐเจจเจพ
เจเจน เจธเจพเจกเฉ เจฐเจฟเจชเฉเจเจผเจเจฐเฉ เจฆเฉ เจฌเจฃเจคเจฐ เจจเฉเฉฐ เจชเจฐเจฟเจญเจพเจธเจผเจฟเจค เจเจฐเจจ เจฆเจพ เจธเจฎเจพเจ เจนเฉเฅค เจฎเฉเจ เจเจฎ เจคเฉเจฐ 'เจคเฉ เจเฉเจ เจ เจเจฟเจนเจพ เจตเจฐเจคเจฆเจพ เจนเจพเจ:
.
โโโ deploy
โ โโโ app1
โ โโโ app2
โโโ dockerfiles
โโโ image1
โโโ image2
- dockerfiles/ - เจกเฉเจเจฐเจซเจพเจเจฒเจพเจ เจจเจพเจฒ เจกเจพเจเจฐเฉเจเจเจฐเฉเจเจ เจ เจคเฉ เจธเจพเจกเฉ เจกเฉเจเจฐ เจเจฟเฉฑเจคเจฐเจพเจ เจจเฉเฉฐ เจฌเจฃเจพเจเจฃ เจฒเจ เจฒเฉเฉเฉเจเจฆเฉ เจนเจฐ เจเฉเจเจผ เจธเจผเจพเจฎเจฒ เจเจฐเฉเฅค
- เจคเฉเจจเจพเจค/ โ เจธเจพเจกเฉเจเจ เจเจชเจฒเฉเจเฉเจธเจผเจจเจพเจ เจจเฉเฉฐ เจเฉเจฌเจฐเจจเฉเจเจธ 'เจคเฉ เจคเฉเจจเจพเจค เจเจฐเจจ เจฒเจ เจกเจพเจเจฐเฉเจเจเจฐเฉเจเจ เจฐเฉฑเจเจฆเจพ เจนเฉ
เจเจธ เจคเจฐเฉเจนเจพเจ, เจ เจธเฉเจ เจฎเจพเจฐเจ เจฆเฉ เจจเจพเจฒ เจเจชเจฃเฉ เจชเจนเจฟเจฒเฉ เจกเฉเจเจฐเจซเจพเจเจฒ เจฌเจฃเจพเจตเจพเจเจเฉ dockerfiles/website/dockerfile
FROM alpine:3.11 as builder
ARG HUGO_VERSION=0.62.0
RUN wget -O- https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_${HUGO_VERSION}_linux-64bit.tar.gz | tar -xz -C /usr/local/bin
ADD . /src
RUN hugo -s /src
FROM alpine:3.11
RUN apk add --no-cache darkhttpd
COPY --from=builder /src/public /var/www
ENTRYPOINT [ "/usr/bin/darkhttpd" ]
CMD [ "/var/www" ]
เจเจฟเจตเฉเจ เจเจฟ เจคเฉเจธเฉเจ เจตเฉเจ เจธเจเจฆเฉ เจนเฉ, เจกเฉเจเจฐเจซเจพเจเจฒ เจตเจฟเฉฑเจ เจฆเฉ เจนเจจ เจคเฉเจ, เจเจธ เจฎเฉเจเฉ เจจเฉเฉฐ เจเจฟเจนเจพ เจเจพเจเจฆเจพ เจนเฉ
เจเจธ เจคเจฐเฉเจนเจพเจ, เจ
เฉฐเจคเจฟเจฎ เจเจฟเฉฑเจคเจฐ เจตเจฟเฉฑเจ เจธเจฟเจฐเจซ เจธเจผเจพเจฎเจฒ เจนเฉเจตเฉเจเจพ darkhttpd (เจนเจฒเจเฉ HTTP เจธเจฐเจตเจฐ) เจ
เจคเฉ เจเจจเจคเจ/ โ เจธเจพเจกเฉ เจธเจฅเจฟเจฐ เจคเฉเจฐ 'เจคเฉ เจคเจฟเจเจฐ เจเฉเจคเฉ เจตเฉเฉฑเจฌเจธเจพเจเจ เจฆเฉ เจธเจฎเฉฑเจเจฐเฉเฅค
เจธเจพเจกเฉ เจฌเจฆเจฒเจพเจ เจเจฐเจจ เจฒเจ เจจเจพ เจญเฉเฉฑเจฒเฉ:
git add dockerfiles/website
git commit -m "Add Dockerfile for website"
3. เจเจจเฉเจเฉ เจจเฉเฉฐ เจเจพเจฃเจจเจพ
เจเฉฑเจ เจกเฉเจเจฐ เจเจฟเฉฑเจคเจฐ เจฌเจฟเจฒเจกเจฐ เจตเจเฉเจ, เจฎเฉเจ เจตเจฐเจคเจฃ เจฆเจพ เจซเฉเจธเจฒเจพ เจเฉเจคเจพ
เจเจฟเฉฑเจคเจฐ เจจเฉเฉฐ เจฌเจฃเจพเจเจฃ เจฒเจ, เจธเจฟเจฐเจซ เจเฉฐเจเฉเจจเจฐ เจจเจพเจฒ เจเจฒเจพเจ kaniko เจเจเจเจผเฉเจเจฟเจเจเจฐ เจ เจคเฉ เจเจธเจจเฉเฉฐ เจฎเฉเจเฉเจฆเจพ เจฌเจฟเจฒเจก เจธเฉฐเจฆเจฐเจญ เจตเจฟเฉฑเจ เจชเจพเจธ เจเจฐเฉ; เจเจน เจกเฉเจเจฐ เจฆเฉเจเจฐเจพ, เจธเจฅเจพเจจเจ เจคเฉเจฐ 'เจคเฉ เจตเฉ เจเฉเจคเจพ เจเจพ เจธเจเจฆเจพ เจนเฉ:
docker run -ti --rm
-v $PWD:/workspace
-v ~/.docker/config.json:/kaniko/.docker/config.json:ro
gcr.io/kaniko-project/executor:v0.15.0
--cache
--dockerfile=dockerfiles/website/Dockerfile
--destination=registry.gitlab.com/kvaps/docs.example.org/website:v0.0.1
เจเจฟเฉฑเจฅเฉ registry.gitlab.com/kvaps/docs.example.org/website - เจคเฉเจนเจพเจกเฉ เจกเฉเจเจฐ เจเจฟเฉฑเจคเจฐ เจฆเจพ เจจเจพเจฎ; เจฌเจฃเจพเจเจฃ เจคเฉเจ เจฌเจพเจ เจฆ, เจเจน เจเจชเจฃเฉ เจเจช เจกเฉเจเจฐ เจฐเจเจฟเจธเจเจฐเฉ เจตเจฟเฉฑเจ เจฒเจพเจเจ เจเฉเจคเจพ เจเจพเจตเฉเจเจพเฅค
เจชเฉเจฐเจพเจฎเฉเจเจฐ --เจเฉเจธเจผ เจคเฉเจนเจพเจจเฉเฉฐ เจกเฉเจเจฐ เจฐเจเจฟเจธเจเจฐเฉ เจตเจฟเฉฑเจ เจฒเฉเจ เจฐเจพเจ เจจเฉเฉฐ เจเฉเจธเจผ เจเจฐเจจ เจฆเฉ เจเจเจพเจเจผเจค เจฆเจฟเฉฐเจฆเจพ เจนเฉ; เจฆเจฟเฉฑเจคเฉ เจเจ เจเจฆเจพเจนเจฐเจจ เจฒเจ, เจเจนเจจเจพเจ เจจเฉเฉฐ เจเจธ เจตเจฟเฉฑเจ เจธเฉเจฐเฉฑเจเจฟเจ เจค เจเฉเจคเจพ เจเจพเจตเฉเจเจพ registry.gitlab.com/kvaps/docs.example.org/website/cache, เจชเจฐ เจคเฉเจธเฉเจ เจชเฉเจฐเจพเจฎเฉเจเจฐ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจเฉ เจเฉเจ เจนเฉเจฐ เจฎเจพเจฐเจ เจจเจฟเจฐเจงเจพเจฐเจค เจเจฐ เจธเจเจฆเฉ เจนเฉ --cache-repo.
เจกเฉเจเจฐ-เจฐเจเจฟเจธเจเจฐเฉ เจฆเจพ เจธเจเฉเจฐเฉเจจเจธเจผเฉเจ
4. qbec เจจเฉเฉฐ เจเจพเจฃเจจเจพ
เจเจน เจเจนเจจเจพเจ เจฎเจพเจฎเจฒเจฟเจเจ เจตเจฟเฉฑเจ เจเจพเจธ เจคเฉเจฐ 'เจคเฉ เจธเฉฑเจ เจนเฉ เจธเจเจฆเจพ เจนเฉ เจเจฟเฉฑเจฅเฉ เจคเฉเจนเจพเจจเฉเฉฐ เจตเฉฑเจ-เจตเฉฑเจ เจฎเจพเจชเจฆเฉฐเจกเจพเจ เจตเจพเจฒเฉ เจเจ เจเจฒเฉฑเจธเจเจฐเจพเจ เจตเจฟเฉฑเจ เจเฉฑเจ เจเจชเจฒเฉเจเฉเจธเจผเจจ เจจเฉเฉฐ เจคเฉเจจเจพเจค เจเจฐเจจ เจฆเฉ เจฒเฉเฉ เจนเฉเฉฐเจฆเฉ เจนเฉ เจ เจคเฉ เจเจนเจจเจพเจ เจจเฉเฉฐ Git เจตเจฟเฉฑเจ เจเฉเจธเจผเจฃเจพเจคเจฎเจ เจคเฉเจฐ 'เจคเฉ เจตเจฐเจฃเจจ เจเจฐเจจเจพ เจเจพเจนเฉเฉฐเจฆเฉ เจนเฉเฅค
Qbec เจคเฉเจนเจพเจจเฉเฉฐ เจนเฉเจฒเจฎ เจเจพเจฐเจ เจจเฉเฉฐ เจฒเฉเฉเฉเจเจฆเฉ เจฎเจพเจชเจฆเฉฐเจกเจพเจ เจจเฉเฉฐ เจชเจพเจธ เจเจฐเจเฉ เจฐเฉเจเจกเจฐ เจเจฐเจจ เจฆเฉ เจตเฉ เจเจเจพเจเจผเจค เจฆเจฟเฉฐเจฆเจพ เจนเฉ เจ เจคเฉ เจซเจฟเจฐ เจเจนเจจเจพเจ เจจเฉเฉฐ เจจเจฟเจฏเจฎเจค เจฎเฉเจจเฉเจซเฉเจธเจ เจตเจพเจเจ เจนเฉ เจธเฉฐเจเจพเจฒเจฟเจค เจเจฐเจฆเจพ เจนเฉ, เจเจฟเจธ เจตเจฟเฉฑเจ เจคเฉเจธเฉเจ เจเจนเจจเจพเจ 'เจคเฉ เจตเฉฑเจ-เจตเฉฑเจ เจชเจฐเจฟเจตเจฐเจคเจจ เจฒเจพเจเฉ เจเจฐ เจธเจเจฆเฉ เจนเฉ, เจ เจคเฉ เจเจน, เจฌเจฆเจฒเฉ เจตเจฟเฉฑเจ, เจคเฉเจนเจพเจจเฉเฉฐ เจฒเฉเฉ เจคเฉเจ เจเฉเจเจเจพเจฐเจพ เจชเจพเจเจฃ เจฆเฉ เจเจเจพเจเจผเจค เจฆเจฟเฉฐเจฆเจพ เจนเฉเฅค เจเจพเจฐเจ เจฎเจฟเจเจเจผเฉเจ เจฎ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเฉเฅค เจญเจพเจต, เจคเฉเจธเฉเจ เจเจพเจฐเจ เจจเฉเฉฐ เจธเจฟเฉฑเจงเฉ git เจคเฉเจ เจธเจเฉเจฐ เจ เจคเฉ เจฐเฉเจเจกเจฐ เจเจฐ เจธเจเจฆเฉ เจนเฉ, เจเจฟเฉฑเจฅเฉ เจเจน เจธเจฌเฉฐเจงเจค เจนเจจเฅค
เจเจฟเจตเฉเจ เจเจฟ เจฎเฉเจ เจชเจนเจฟเจฒเจพเจ เจเจฟเจนเจพ เจธเฉ, เจ เจธเฉเจ เจธเจพเจฐเฉเจเจ เจคเฉเจจเจพเจคเฉเจเจ เจจเฉเฉฐ เจกเจพเจเจฐเฉเจเจเจฐเฉ เจตเจฟเฉฑเจ เจธเจเฉเจฐ เจเจฐเจพเจเจเฉ เจคเฉเจจเจพเจค/:
mkdir deploy
cd deploy
เจเจ เจธเจพเจกเฉ เจชเจนเจฟเจฒเฉ เจเจชเจฒเฉเจเฉเจธเจผเจจ เจธเจผเฉเจฐเฉ เจเจฐเฉเจ:
qbec init website
cd website
เจนเฉเจฃ เจธเจพเจกเฉ เจเจชเจฒเฉเจเฉเจธเจผเจจ เจฆเฉ เจฌเจฃเจคเจฐ เจเจธ เจคเจฐเฉเจนเจพเจ เจฆเจฟเจเจพเจ เจฆเจฟเฉฐเจฆเฉ เจนเฉ:
.
โโโ components
โโโ environments
โ โโโ base.libsonnet
โ โโโ default.libsonnet
โโโ params.libsonnet
โโโ qbec.yaml
เจเจ เจซเจพเจเจฒ เจจเฉเฉฐ เจตเฉเจเฉเจ qbec.yaml:
apiVersion: qbec.io/v1alpha1
kind: App
metadata:
name: website
spec:
environments:
default:
defaultNamespace: docs
server: https://kubernetes.example.org:8443
vars: {}
เจเฉฑเจฅเฉ เจ
เจธเฉเจ เจฎเฉเฉฑเจ เจคเฉเจฐ 'เจคเฉ เจฆเจฟเจฒเจเจธเจชเฉ เจฐเฉฑเจเจฆเฉ เจนเจพเจ spec.environments, qbec เจจเฉ เจชเจนเจฟเจฒเจพเจ เจนเฉ เจธเจพเจกเฉ เจฒเจ เจเฉฑเจ เจกเจฟเจซเฉเจฒเจ เจตเจพเจคเจพเจตเจฐเจฃ เจฌเจฃเจพเจเจ เจนเฉ เจ
เจคเฉ เจธเจฐเจตเจฐ เจเจกเจฐเฉเฉฑเจธ เจฆเฉ เจจเจพเจฒ-เจจเจพเจฒ เจธเจพเจกเฉ เจฎเฉเจเฉเจฆเจพ kubeconfig เจคเฉเจ เจจเฉเจฎเจธเจชเฉเจธ เจฒเจฟเจ เจนเฉเฅค
'เจคเฉ เจคเจพเจเจจเจพเจค เจเจฐเจจ เจตเฉเจฒเฉ เจฎเฉเจฒ เจตเจพเจคเจพเจตเจฐเจฃ, qbec เจนเจฎเฉเจธเจผเจพ เจจเจฟเจธเจผเจเจฟเจค เจเฉเจฌเจฐเจจเฉเจเจธ เจเจฒเฉฑเจธเจเจฐ เจ
เจคเฉ เจจเจฟเจธเจผเจเจฟเจค เจจเฉเจฎเจธเจชเฉเจธ เจตเจฟเฉฑเจ เจนเฉ เจคเฉเจจเจพเจค เจเจฐเฉเจเจพ, เจฏเจพเจจเฉ เจเจฟ, เจคเฉเจนเจพเจจเฉเฉฐ เจนเฉเจฃ เจคเฉเจจเจพเจคเฉ เจเจฐเจจ เจฒเจ เจธเฉฐเจฆเจฐเจญเจพเจ เจ
เจคเฉ เจจเฉเจฎเจธเจชเฉเจธ เจตเจฟเฉฑเจ เจฌเจฆเจฒเจฃ เจฆเฉ เจฒเฉเฉ เจจเจนเฉเจ เจนเฉเฅค
เจเฉเจเจฐ เจฒเฉเฉ เจนเฉเจตเฉ, เจคเจพเจ เจคเฉเจธเฉเจ เจนเจฎเฉเจธเจผเจพ เจเจธ เจซเจผเจพเจเจฒ เจตเจฟเฉฑเจ เจธเฉเจเจฟเฉฐเจเจพเจ เจจเฉเฉฐ เจ
เฉฑเจชเจกเฉเจ เจเจฐ เจธเจเจฆเฉ เจนเฉเฅค
เจคเฉเจนเจพเจกเฉ เจธเจพเจฐเฉ เจตเจพเจคเจพเจตเจฐเจฃเจพเจ เจฆเจพ เจตเจฐเจฃเจจ เจเฉเจคเจพ เจเจฟเจ เจนเฉ qbec.yaml, เจ เจคเฉ เจซเจพเจเจฒ เจตเจฟเฉฑเจ params.libsonnet, เจเจฟเฉฑเจฅเฉ เจเจน เจฆเฉฑเจธเจฆเจพ เจนเฉ เจเจฟ เจเจนเจจเจพเจ เจฒเจ เจชเฉเจฐเจพเจฎเฉเจเจฐ เจเจฟเฉฑเจฅเฉ เจชเฉเจฐเจพเจชเจค เจเจฐเจจเฉ เจนเจจเฅค
เจ เฉฑเจเฉ เจ เจธเฉเจ เจฆเฉ เจกเจพเจเจฐเฉเจเจเจฐเฉเจเจ เจฆเฉเจเจฆเฉ เจนเจพเจ:
- เจนเจฟเฉฑเจธเฉ/ - เจธเจพเจกเฉ เจเจชเจฒเฉเจเฉเจธเจผเจจ เจฒเจ เจธเจพเจฐเฉ เจฎเฉเจจเฉเจซเฉเจธเจ เจเฉฑเจฅเฉ เจธเจเฉเจฐ เจเฉเจคเฉ เจเจพเจฃเจเฉ; เจเจนเจจเจพเจ เจจเฉเฉฐ jsonnet เจ เจคเฉ เจจเจฟเจฏเจฎเจค yaml เจซเจพเจเจฒเจพเจ เจฆเฉเจตเจพเจ เจตเจฟเฉฑเจ เจตเจฐเจฃเจจ เจเฉเจคเจพ เจเจพ เจธเจเจฆเจพ เจนเฉ
- เจตเจพเจคเจพเจตเจฐเจฃ/ โ เจเฉฑเจฅเฉ เจ เจธเฉเจ เจเจชเจฃเฉ เจตเจพเจคเจพเจตเจฐเจจ เจฒเจ เจธเจพเจฐเฉ เจตเฉเจฐเฉเจเจฌเจฒ (เจชเฉเจฐเจพเจฎเฉเจเจฐ) เจฆเจพ เจตเจฐเจฃเจจ เจเจฐเจพเจเจเฉเฅค
เจฎเฉเจฒ เจฐเฉเจช เจตเจฟเฉฑเจ เจธเจพเจกเฉ เจเฉเจฒ เจฆเฉ เจซเจพเจเจฒเจพเจ เจนเจจ:
- เจตเจพเจคเจพเจตเจฐเจฃ/base.libsonnet - เจเจธ เจตเจฟเฉฑเจ เจธเจพเจฐเฉ เจตเจพเจคเจพเจตเจฐเจฃ เจฒเจ เจธเจพเจเจเฉ เจฎเจพเจชเจฆเฉฐเจก เจธเจผเจพเจฎเจฒ เจนเฉเจฃเจเฉ
- เจตเจพเจคเจพเจตเจฐเจฃ/default.libsonnet โ เจตเจพเจคเจพเจตเจฐเจจ เจฒเจ เจเจตเจฐเจฐเจพเจเจก เจเฉเจคเฉ เจชเฉเจฐเจพเจฎเฉเจเจฐ เจฐเฉฑเจเจฆเจพ เจนเฉ เจฎเฉเจฒ
เจเจฒเฉ เจเฉเจฒเฉเจนเฉเจ เจตเจพเจคเจพเจตเจฐเจฃ/base.libsonnet เจ เจคเฉ เจเฉฑเจฅเฉ เจธเจพเจกเฉ เจชเจนเจฟเจฒเฉ เจนเจฟเฉฑเจธเฉ เจฒเจ เจฎเจพเจชเจฆเฉฐเจก เจเฉเฉเฉ:
{
components: {
website: {
name: 'example-docs',
image: 'registry.gitlab.com/kvaps/docs.example.org/website:v0.0.1',
replicas: 1,
containerPort: 80,
servicePort: 80,
nodeSelector: {},
tolerations: [],
ingressClass: 'nginx',
domain: 'docs.example.org',
},
},
}
เจเจ เจเจชเจฃเจพ เจชเจนเจฟเจฒเจพ เจเฉฐเจชเฉเจจเฉเจเจ เจตเฉ เจฌเจฃเจพเจเจ components/website.jsonnet:
local env = {
name: std.extVar('qbec.io/env'),
namespace: std.extVar('qbec.io/defaultNs'),
};
local p = import '../params.libsonnet';
local params = p.components.website;
[
{
apiVersion: 'apps/v1',
kind: 'Deployment',
metadata: {
labels: { app: params.name },
name: params.name,
},
spec: {
replicas: params.replicas,
selector: {
matchLabels: {
app: params.name,
},
},
template: {
metadata: {
labels: { app: params.name },
},
spec: {
containers: [
{
name: 'darkhttpd',
image: params.image,
ports: [
{
containerPort: params.containerPort,
},
],
},
],
nodeSelector: params.nodeSelector,
tolerations: params.tolerations,
imagePullSecrets: [{ name: 'regsecret' }],
},
},
},
},
{
apiVersion: 'v1',
kind: 'Service',
metadata: {
labels: { app: params.name },
name: params.name,
},
spec: {
selector: {
app: params.name,
},
ports: [
{
port: params.servicePort,
targetPort: params.containerPort,
},
],
},
},
{
apiVersion: 'extensions/v1beta1',
kind: 'Ingress',
metadata: {
annotations: {
'kubernetes.io/ingress.class': params.ingressClass,
},
labels: { app: params.name },
name: params.name,
},
spec: {
rules: [
{
host: params.domain,
http: {
paths: [
{
backend: {
serviceName: params.name,
servicePort: params.servicePort,
},
},
],
},
},
],
},
},
]
เจเจธ เจซเจพเจเจฒ เจตเจฟเฉฑเจ เจ เจธเฉเจ เจเฉฑเจ เจตเจพเจฐ เจตเจฟเฉฑเจ เจคเจฟเฉฐเจจ เจเฉเจฌเจฐเจจเฉเจเจธ เจธเฉฐเจธเจฅเจพเจตเจพเจ เจฆเจพ เจตเจฐเจฃเจจ เจเฉเจคเจพ เจนเฉ, เจเจน เจนเจจ: เจกเจฟเจชเจฒเฉเจฎเฉเจ, เจธเฉเจตเจพ ะธ เจฆเจพเจเจฒ. เจเฉเจเจฐ เจ เจธเฉเจ เจเจพเจนเฉเฉฐเจฆเฉ เจนเจพเจ, เจคเจพเจ เจ เจธเฉเจ เจเจนเจจเจพเจ เจจเฉเฉฐ เจตเฉฑเจ-เจตเฉฑเจ เจนเจฟเฉฑเจธเจฟเจเจ เจตเจฟเฉฑเจ เจชเจพ เจธเจเจฆเฉ เจนเจพเจ, เจชเจฐ เจเจธ เจชเฉเจพเจ 'เจคเฉ เจธเจพเจกเฉ เจฒเจ เจเฉฑเจ เจนเฉ เจเจพเจซเฉ เจนเฉเจตเฉเจเจพเฅค
เจธเฉฐเจเฉเจเจธ jsonnet เจจเจฟเจฏเจฎเจค json เจฆเฉ เจธเจฎเจพเจจ เจนเฉ, เจธเจฟเจงเจพเจเจคเจ เจคเฉเจฐ 'เจคเฉ, เจจเจฟเจฏเจฎเจค json เจชเจนเจฟเจฒเจพเจ เจนเฉ เจตเฉเจง jsonnet เจนเฉ, เจเจธ เจฒเจ เจชเจนเจฟเจฒเจพเจ เจคเจพเจ เจคเฉเจนเจพเจกเฉ เจฒเจ เจเจจเจฒเจพเจเจจ เจธเฉเจตเจพเจตเจพเจ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจจเจพ เจเจธเจพเจจ เจนเฉ เจธเจเจฆเจพ เจนเฉ เจเจฟเจตเฉเจ เจเจฟ yaml2json เจเจชเจฃเฉ เจเจฎ yaml เจจเฉเฉฐ json เจตเจฟเฉฑเจ เจฌเจฆเจฒเจฃ เจฒเจ, เจเจพเจ, เจเฉเจเจฐ เจคเฉเจนเจพเจกเฉ เจญเจพเจเจพเจ เจตเจฟเฉฑเจ เจเฉเจ เจตเฉเจฐเฉเจเจฌเจฒ เจจเจนเฉเจ เจนเจจ, เจคเจพเจ เจเจนเจจเจพเจ เจจเฉเฉฐ เจจเจฟเจฏเจฎเจค yaml เจฆเฉ เจฐเฉเจช เจตเจฟเฉฑเจ เจตเจฐเจฃเจจ เจเฉเจคเจพ เจเจพ เจธเจเจฆเจพ เจนเฉเฅค
เจจเจพเจฒ เจเฉฐเจฎ เจเจฐเจฆเฉ เจธเจฎเฉเจ jsonnet เจฎเฉเจ เจคเฉเจนเจพเจกเฉ เจธเฉฐเจชเจพเจฆเจ เจฒเจ เจเฉฑเจ เจชเจฒเฉฑเจเจเจจ เจธเจฅเจพเจชเจค เจเจฐเจจ เจฆเฉ เจเจผเฉเจฐเจฆเจพเจฐ เจธเจฟเจซเจพเจฐเจธเจผ เจเจฐเจฆเจพ เจนเจพเจ
เจเจฆเจพเจนเจฐเจจ เจฒเจ, vim เจฒเจ เจเฉฑเจ เจชเจฒเฉฑเจเจเจจ เจนเฉ vim-jsonnet, เจเฉ เจธเจฟเฉฐเจเฉเจเจธ เจนเจพเจเจฒเจพเจเจเจฟเฉฐเจ เจจเฉเฉฐ เจเจพเจฒเฉ เจเจฐเจฆเจพ เจนเฉ เจ เจคเฉ เจเจชเจฃเฉ เจเจช เจนเฉ เจเจฒเจพเจเจเจฆเจพ เจนเฉ jsonnet fmt เจนเจฐ เจตเจพเจฐ เจเจฆเฉเจ เจคเฉเจธเฉเจ เจธเฉเจต เจเจฐเจฆเฉ เจนเฉ (เจเจธเฉเจจเฉเจ เจธเจฅเจพเจชเจค เจเจฐเจจ เจฆเฉ เจฒเฉเฉ เจนเฉเฉฐเจฆเฉ เจนเฉ)เฅค
เจธเจญ เจเฉเจ เจคเจฟเจเจฐ เจนเฉ, เจนเฉเจฃ เจ เจธเฉเจ เจคเฉเจจเจพเจค เจเจฐเจจเจพ เจธเจผเฉเจฐเฉ เจเจฐ เจธเจเจฆเฉ เจนเจพเจ:
เจเจน เจฆเฉเจเจฃ เจฒเจ เจเจฟ เจธเจพเจจเฉเฉฐ เจเฉ เจฎเจฟเจฒเจฟเจ, เจเจฒเฉ:
qbec show default
เจเจเจเจชเฉเฉฑเจ 'เจคเฉ, เจคเฉเจธเฉเจ เจฐเฉเจเจกเจฐ เจเฉเจคเฉ yaml เจฎเฉเจจเฉเจซเฉเจธเจ เจฆเฉเจเฉเจเฉ เจเฉ เจกเจฟเจซเฉเจฒเจ เจเจฒเฉฑเจธเจเจฐ 'เจคเฉ เจฒเจพเจเฉ เจนเฉเจฃเจเฉเฅค
เจฌเจนเฉเจค เจตเจงเฉเจ, เจนเฉเจฃ เจฒเจพเจเฉ เจเจฐเฉ:
qbec apply default
เจเจเจเจชเฉเฉฑเจ 'เจคเฉ เจคเฉเจธเฉเจ เจนเจฎเฉเจธเจผเจพ เจฆเฉเจเฉเจเฉ เจเจฟ เจคเฉเจนเจพเจกเฉ เจเจฒเฉฑเจธเจเจฐ เจตเจฟเฉฑเจ เจเฉ เจเฉเจคเจพ เจเจพเจตเฉเจเจพ, qbec เจคเฉเจนเจพเจจเฉเฉฐ เจเจพเจเจช เจเจฐเจเฉ เจคเจฌเจฆเฉเจฒเฉเจเจ เจจเจพเจฒ เจธเจนเจฟเจฎเจค เจนเฉเจฃ เจฒเจ เจเจนเฉเจเจพเฅค y เจคเฉเจธเฉเจ เจเจชเจฃเฉ เจเจฐเจพเจฆเจฟเจเจ เจฆเฉ เจชเฉเจธเจผเจเฉ เจเจฐเจจ เจฆเฉ เจฏเฉเจ เจนเฉเจตเฉเจเฉเฅค
เจธเจพเจกเฉ เจ เจฐเจเจผเฉ เจคเจฟเจเจฐ เจนเฉ เจ เจคเฉ เจคเฉเจจเจพเจค เจนเฉ!
เจเฉเจเจฐ เจคเฉเจธเฉเจ เจฌเจฆเจฒเจพเจ เจเจฐเจฆเฉ เจนเฉ, เจคเจพเจ เจคเฉเจธเฉเจ เจนเจฎเฉเจธเจผเจพ เจเจน เจเจฐ เจธเจเจฆเฉ เจนเฉ:
qbec diff default
เจเจน เจตเฉเจเจฃ เจฒเจ เจเจฟ เจเจน เจคเจฌเจฆเฉเจฒเฉเจเจ เจฎเฉเจเฉเจฆเจพ เจคเฉเจจเจพเจคเฉ เจจเฉเฉฐ เจเจฟเจตเฉเจ เจชเฉเจฐเจญเจพเจตเจค เจเจฐเจจเจเฉเจเจ
เจธเจพเจกเฉ เจฌเจฆเจฒเจพเจ เจเจฐเจจ เจฒเจ เจจเจพ เจญเฉเฉฑเจฒเฉ:
cd ../..
git add deploy/website
git commit -m "Add deploy for website"
5. เจเฉเจฌเจฐเจจเฉเจเจธ-เจเจเจเจผเฉเจเจฟเจเจเจฐ เจจเจพเจฒ เจเจฟเจเจฒเฉเจฌ-เจฐเจจเจฐ เจฆเฉ เจเฉเจธเจผเจฟเจธเจผ เจเจฐเจจเจพ
เจนเจพเจฒ เจนเฉ เจคเฉฑเจ เจฎเฉเจ เจธเจฟเจฐเจซ เจจเจฟเจฏเจฎเจค เจคเฉเจฐ 'เจคเฉ เจตเจฐเจคเจฟเจ gitlab-เจฆเฉเฉเจพเจ เจธเจผเฉเฉฑเจฒ เจเจพเจ เจกเฉเจเจฐ-เจเจเจเจผเฉเจเจฟเจเจเจฐ เจจเจพเจฒ เจชเจนเจฟเจฒเจพเจ เจคเฉเจ เจคเจฟเจเจฐ เจฎเจธเจผเฉเจจ (LXC เจเฉฐเจเฉเจจเจฐ) 'เจคเฉเฅค เจธเจผเฉเจฐเฉ เจตเจฟเฉฑเจ, เจธเจพเจกเฉ เจเฉเจฒ เจธเจพเจกเฉ เจเจฟเจเจฒเฉเจฌ เจตเจฟเฉฑเจ เจตเจฟเจธเจผเจต เจชเฉฑเจงเจฐ 'เจคเฉ เจชเจฐเจฟเจญเจพเจธเจผเจฟเจค เจเจ เจ เจเจฟเจนเฉ เจฆเฉเฉเจพเจ เจธเจจเฅค เจเจนเจจเจพเจ เจจเฉ เจธเจพเจฐเฉ เจชเฉเจฐเฉเจเฉเจเจเจพเจ เจฒเจ เจกเฉเจเจฐ เจเจฟเฉฑเจคเจฐ เจเจเฉฑเจ เฉ เจเฉเจคเฉ.
เจชเจฐ เจเจฟเจตเฉเจ เจเจฟ เจ เจญเจฟเจเจธ เจจเฉ เจฆเจฟเจเจพเจเจ เจนเฉ, เจเจน เจตเจฟเจเจฒเจช เจธเจญ เจคเฉเจ เจเจฆเจฐเจธเจผ เจจเจนเฉเจ เจนเฉ, เจตเจฟเจนเจพเจฐเจเจคเจพ เจ เจคเฉ เจธเฉเจฐเฉฑเจเจฟเจ เจฆเฉเจตเจพเจ เจฆเฉ เจฐเฉเจช เจตเจฟเฉฑเจ. เจนเจฐเฉเจ เจชเฉเจฐเฉเจเฉเจเจ เจฒเจ, เจเจพเจ เจเฉฑเจฅเฉเจ เจคเฉฑเจ เจเจฟ เจนเจฐเฉเจ เจตเจพเจคเจพเจตเจฐเจฃ เจฒเจ เจตเฉฑเจเจฐเฉ เจฆเฉเฉเจพเจเจพเจ เจจเฉเฉฐ เจคเฉเจจเจพเจค เจเจฐเจจเจพ เจฌเจนเฉเจค เจตเจงเฉเจ เจ เจคเฉ เจตเจฟเจเจพเจฐเจงเจพเจฐเจ เจคเฉเจฐ 'เจคเฉ เจตเจงเฉเจฐเฉ เจธเจนเฉ เจนเฉเฅค
เจเฉเจธเจผเจเจฟเจธเจฎเจคเฉ เจจเจพเจฒ, เจเจน เจเฉเจ เจธเจฎเฉฑเจธเจฟเจ เจจเจนเฉเจ เจนเฉ, เจเจฟเจเจเจเจฟ เจนเฉเจฃ เจ เจธเฉเจ เจคเฉเจจเจพเจค เจเจฐเจพเจเจเฉ gitlab-เจฆเฉเฉเจพเจ เจธเจฟเฉฑเจงเฉ เจเฉเจฌเจฐเจจเฉเจเจธ เจตเจฟเฉฑเจ เจธเจพเจกเฉ เจชเฉเจฐเฉเจเฉเจเจ เจฆเฉ เจนเจฟเฉฑเจธเฉ เจตเจเฉเจเฅค
เจเจฟเจเจฒเฉเจฌ เจเฉเจฌเจฐเจจเฉเจเจธ เจจเฉเฉฐ เจเจฟเจเจฒเฉเจฌ-เจฐเจจเจฐ เจจเฉเฉฐ เจคเจพเจเจจเจพเจค เจเจฐเจจ เจฒเจ เจคเจฟเจเจฐ-เจฌเจฃเจพเจเจ เจนเฉเจฒเจฎ เจเจพเจฐเจ เจชเฉเจฐเจฆเจพเจจ เจเจฐเจฆเจพ เจนเฉเฅค เจเจธ เจฒเจ เจคเฉเจนเจพเจจเฉเฉฐ เจธเจญ เจเฉเจ เจฒเฉฑเจญเจฃ เจฆเฉ เจฒเฉเฉ เจนเฉ เจฐเจเจฟเจธเจเจฐเฉเจธเจผเจจ เจเฉเจเจจ เจตเจฟเฉฑเจ เจธเจพเจกเฉ เจชเฉเจฐเฉเจเฉเจเจ เจฒเจ เจธเฉเจเจฟเฉฐเจเจพเจ -> CI / CD -> เจฆเฉเฉเจพเจ เจ เจคเฉ เจเจธ เจจเฉเฉฐ เจนเฉเจฒเจฎ เจจเฉเฉฐ เจญเฉเจเฉ:
helm repo add gitlab https://charts.gitlab.io
helm install gitlab-runner
--set gitlabUrl=https://gitlab.com
--set runnerRegistrationToken=yga8y-jdCusVDn_t4Wxc
--set rbac.create=true
gitlab/gitlab-runner
เจเจฟเฉฑเจฅเฉ:
https://gitlab.com - เจคเฉเจนเจพเจกเฉ เจเจฟเจเจฒเจฌ เจธเจฐเจตเจฐ เจฆเจพ เจชเจคเจพเฅค- yga8y-jdCusVDn_t4Wxc - เจคเฉเจนเจพเจกเฉ เจชเฉเจฐเฉเจเฉเจเจ เจฒเจ เจฐเจเจฟเจธเจเฉเจฐเฉเจธเจผเจจ เจเฉเจเจจเฅค
- rbac.create=true โ เจเฉเจฌเจฐเจจเฉเจเจธ-เจเจเจเจผเฉเจเจฟเจเจเจฐ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจเฉ เจธเจพเจกเฉ เจเฉฐเจฎ เจเจฐเจจ เจฒเจ เจชเฉเจก เจฌเจฃเจพเจเจฃ เจฆเฉ เจฏเฉเจ เจนเฉเจฃ เจฒเจ เจฆเฉเฉเจพเจ เจจเฉเฉฐ เจฒเฉเฉเฉเจเจฆเฉ เจตเจฟเจธเจผเฉเจธเจผ เจ เจงเจฟเจเจพเจฐ เจชเฉเจฐเจฆเจพเจจ เจเจฐเจฆเจพ เจนเฉเฅค
เจเฉ เจธเจญ เจเฉเจ เจธเจนเฉ เจขเฉฐเจ เจจเจพเจฒ เจเฉเจคเจพ เจเจฟเจ เจนเฉ, เจคเจพเจ เจคเฉเจนเจพเจจเฉเฉฐ เจญเจพเจ เจตเจฟเฉฑเจ เจเฉฑเจ เจฐเจเจฟเจธเจเจฐเจก เจฆเฉเฉเจพเจ เจฆเฉเจเจฃเจพ เจเจพเจนเฉเจฆเจพ เจนเฉ เจฐเจจเจฐ, เจคเฉเจนเจพเจกเฉ เจชเฉเจฐเฉเจเฉเจเจ เจธเฉเจเจฟเฉฐเจเจพเจ เจตเจฟเฉฑเจเฅค
เจธเจผเจพเจฎเจฒ เจเฉเจคเฉ เจเจ เจฆเฉเฉเจพเจ เจฆเจพ เจธเจเฉเจฐเฉเจจเจธเจผเฉเจ
เจเฉ เจเจน เจธเจงเจพเจฐเจจ เจนเฉ? - เจนเจพเจ, เจเจน เจฌเจนเฉเจค เจธเจงเจพเจฐเจจ เจนเฉ! เจฆเฉเฉเจพเจเจพเจ เจจเฉเฉฐ เจนเฉฑเจฅเฉเจ เจฐเจเจฟเจธเจเจฐ เจเจฐเจจ เจตเจฟเฉฑเจ เจเฉเจ เจนเฉเจฐ เจฎเฉเจธเจผเจเจฒ เจจเจนเฉเจ, เจนเฉเจฃ เจคเฉเจ เจฆเฉเฉเจพเจ เจเจชเจฃเฉ เจเจช เจนเฉ เจฌเจฃเจพเจ เจ เจคเฉ เจจเจธเจผเจ เจนเฉ เจเจพเจฃเจเฉเฅค
6. QBEC เจจเจพเจฒ เจนเฉเจฒเจฎ เจเจพเจฐเจ เจฒเจเจพเจ
เจเจฟเจเจเจเจฟ เจ เจธเฉเจ เจตเจฟเจเจพเจฐ เจเจฐเจจ เจฆเจพ เจซเฉเจธเจฒเจพ เจเฉเจคเจพ เจนเฉ gitlab-เจฆเฉเฉเจพเจ เจธเจพเจกเฉ เจชเฉเจฐเฉเจเฉเจเจ เจฆเจพ เจนเจฟเฉฑเจธเจพ เจนเฉ, เจเจน เจธเจพเจกเฉ Git เจฐเจฟเจชเฉเจเจผเจเจฐเฉ เจตเจฟเฉฑเจ เจเจธเจฆเจพ เจตเจฐเจฃเจจ เจเจฐเจจ เจฆเจพ เจธเจฎเจพเจ เจนเฉ.
เจ เจธเฉเจ เจเจธเจจเฉเฉฐ เจเฉฑเจ เจตเฉฑเจเจฐเฉ เจนเจฟเฉฑเจธเฉ เจตเจเฉเจ เจตเจฐเจฃเจจ เจเจฐ เจธเจเจฆเฉ เจนเจพเจ เจตเฉเจฌเจธเจพเจเจ, เจชเจฐ เจญเจตเจฟเฉฑเจ เจตเจฟเฉฑเจ เจ เจธเฉเจ เจตเฉฑเจ-เจตเฉฑเจ เจเจพเจชเฉเจเจ เจคเฉเจจเจพเจค เจเจฐเจจ เจฆเฉ เจฏเฉเจเจจเจพ เจฌเจฃเจพ เจฐเจนเฉ เจนเจพเจ เจตเฉเจฌเจธเจพเจเจ เจฌเจนเฉเจค เจ เจเจธเจฐ, เจเจฒเจ gitlab-เจฆเฉเฉเจพเจ, เจเฉ เจเจฟ เจเฉเจฌเจฐเจจเฉเจเจธ เจเจฒเฉฑเจธเจเจฐ เจชเฉเจฐเจคเฉ เจธเจฟเจฐเจซเจผ เจเฉฑเจ เจตเจพเจฐ เจคเฉเจจเจพเจค เจเฉเจคเจพ เจเจพเจตเฉเจเจพเฅค เจคเจพเจ เจเจ เจเจธเจฆเฉ เจฒเจ เจเฉฑเจ เจตเฉฑเจเจฐเฉ เจเจชเจฒเฉเจเฉเจธเจผเจจ เจธเจผเฉเจฐเฉ เจเจฐเฉเจ:
cd deploy
qbec init gitlab-runner
cd gitlab-runner
เจเจธ เจตเจพเจฐ เจ เจธเฉเจ เจเฉเจฌเจฐเจจเฉเจเจธ เจเจเจพเจเจเจ เจฆเจพ เจตเจฐเจฃเจจ เจนเฉฑเจฅเฉเจ เจจเจนเฉเจ เจเจฐเจพเจเจเฉ, เจชเจฐ เจเฉฑเจ เจคเจฟเจเจฐ เจนเฉเจฒเจฎ เจเจพเจฐเจ เจฒเจตเจพเจเจเฉเฅค Qbec เจฆเฉ เจซเจพเจเจฆเจฟเจเจ เจตเจฟเฉฑเจเฉเจ เจเฉฑเจ เจนเฉเจฒเจฎ เจเจพเจฐเจ เจจเฉเฉฐ เจธเจฟเฉฑเจงเฉ เจเฉฑเจ Git เจฐเจฟเจชเฉเจเจผเจเจฐเฉ เจคเฉเจ เจฐเฉเจเจกเจฐ เจเจฐเจจ เจฆเฉ เจฏเฉเจเจคเจพ เจนเฉเฅค
เจเจ เจเจธเจจเฉเฉฐ git เจธเจฌเจฎเฉเจกเจฟเจเจฒ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจเฉ เจเจจเฉเจเจ เจเจฐเฉเจ:
git submodule add https://gitlab.com/gitlab-org/charts/gitlab-runner vendor/gitlab-runner
เจนเฉเจฃ เจกเจพเจเจฐเฉเจเจเจฐเฉ เจตเจฟเจเจฐเฉเจคเจพ/เจเจฟเจเจฒเฉเจฌ-เจฐเจจเจฐ เจธเจพเจกเฉ เจเฉเจฒ gitlab-เจฐเจจเจฐ เจฒเจ เจเฉฑเจ เจเจพเจฐเจ เจฆเฉ เจจเจพเจฒ เจเฉฑเจ เจฐเจฟเจชเฉเจเจผเจเจฐเฉ เจนเฉเฅค
เจเจธเฉ เจคเจฐเฉเจนเจพเจ, เจคเฉเจธเฉเจ เจนเฉเจฐ เจฐเจฟเจชเฉเจเจผเจเจฐเฉเจเจ เจจเฉเฉฐ เจเฉเฉ เจธเจเจฆเฉ เจนเฉ, เจเจฆเจพเจนเจฐเจจ เจฒเจ, เจ เจงเจฟเจเจพเจฐเจค เจเจพเจฐเจ เจจเจพเจฒ เจชเฉเจฐเฉ เจฐเจฟเจชเฉเจเจผเจเจฐเฉ
https://github.com/helm/charts
เจเจ เจเฉฐเจชเฉเจจเฉเจเจ เจฆเจพ เจตเจฐเจฃเจจ เจเจฐเฉเจ components/gitlab-runner.jsonnet:
local env = {
name: std.extVar('qbec.io/env'),
namespace: std.extVar('qbec.io/defaultNs'),
};
local p = import '../params.libsonnet';
local params = p.components.gitlabRunner;
std.native('expandHelmTemplate')(
'../vendor/gitlab-runner',
params.values,
{
nameTemplate: params.name,
namespace: env.namespace,
thisFile: std.thisFile,
verbose: true,
}
)
เจจเฉเฉฐ เจชเจนเจฟเจฒเฉ เจฆเจฒเฉเจฒ expandHelmTemplate เจ เจธเฉเจ เจเจพเจฐเจ เจฆเจพ เจฎเจพเจฐเจ เจชเจพเจธ เจเจฐเจฆเฉ เจนเจพเจ, เจซเจฟเจฐ params.values, เจเจฟเจธ เจจเฉเฉฐ เจ เจธเฉเจ เจตเจพเจคเจพเจตเจฐเจฃ เจชเฉเจฐเจพเจฎเฉเจเจฐเจพเจ เจคเฉเจ เจฒเฉเจเจฆเฉ เจนเจพเจ, เจซเจฟเจฐ เจเจฌเจเฉเจเจ เจเจเจเจฆเจพ เจนเฉ
- เจจเจพเจฎ เจเฉเจเจชเจฒเฉเจ - เจฐเจฟเจฒเฉเจเจผ เจฆเจพ เจธเจฟเจฐเจฒเฉเจ
- เจจเจพเจฎ เจเจเฉเจนเจพ โ เจจเฉเจฎเจธเจชเฉเจธ เจจเฉเฉฐ เจนเฉเจฒเจฎ เจตเจฟเฉฑเจ เจคเจฌเจฆเฉเจฒ เจเฉเจคเจพ เจเจฟเจ
- เจเจน เจซเจพเจเจฒ โ เจเฉฑเจ เจฒเฉเฉเฉเจเจฆเจพ เจชเฉเจฐเจพเจฎเฉเจเจฐ เจเฉ เจฎเฉเจเฉเจฆเจพ เจซเจพเจเจฒ เจฆเจพ เจฎเจพเจฐเจ เจชเจพเจธ เจเจฐเจฆเจพ เจนเฉ
- เจตเจฐเจฌเฉเจ - เจนเฉเจเจฎ เจฆเจฟเจเจพเจเจเจฆเจพ เจนเฉ เจนเฉเจฒเจฎ เจเฉเจเจชเจฒเฉเจ เจเจพเจฐเจ เจจเฉเฉฐ เจชเฉเจธเจผ เจเจฐเจฆเฉ เจธเจฎเฉเจ เจธเจพเจฐเฉเจเจ เจฆเจฒเฉเจฒเจพเจ เจฆเฉ เจจเจพเจฒ
เจเจ เจนเฉเจฃ เจธเจพเจกเฉ เจเฉฐเจชเฉเจจเฉเจเจ เจฒเจ เจชเฉเจฐเจพเจฎเฉเจเจฐเจพเจ เจฆเจพ เจตเจฐเจฃเจจ เจเจฐเฉเจ เจตเจพเจคเจพเจตเจฐเจฃ/base.libsonnet:
local secrets = import '../secrets/base.libsonnet';
{
components: {
gitlabRunner: {
name: 'gitlab-runner',
values: {
gitlabUrl: 'https://gitlab.com/',
rbac: {
create: true,
},
runnerRegistrationToken: secrets.runnerRegistrationToken,
},
},
},
}
เจงเจฟเจเจจ เจฆเฉเจตเฉ runnerRegistrationToken เจ เจธเฉเจ เจเฉฑเจ เจฌเจพเจนเจฐเฉ เจซเจพเจเจฒ เจคเฉเจ เจฒเฉเจเจฆเฉ เจนเจพเจ secrets/base.libsonnet, เจเจ เจเจธเจจเฉเฉฐ เจฌเจฃเจพเจเจ:
{
runnerRegistrationToken: 'yga8y-jdCusVDn_t4Wxc',
}
เจเจฒเฉ เจเจพเจเจ เจเจฐเฉเจ เจเจฟ เจเฉ เจธเจญ เจเฉเจ เจเฉฐเจฎ เจเจฐเจฆเจพ เจนเฉ:
qbec show default
เจเฉเจเจฐ เจธเจญ เจเฉเจ เจเฉเจฐเจฎ เจตเจฟเฉฑเจ เจนเฉ, เจคเจพเจ เจ เจธเฉเจ เจนเฉเจฒเจฎ เจฆเฉเจเจฐเจพ เจธเจพเจกเฉ เจชเจฟเจเจฒเฉ เจคเฉเจจเจพเจค เจฐเฉเจฒเฉเจเจผ เจจเฉเฉฐ เจฎเจฟเจเจพ เจธเจเจฆเฉ เจนเจพเจ:
helm uninstall gitlab-runner
เจ เจคเฉ เจเจธเจจเฉเฉฐ เจเจธเฉ เจคเจฐเฉเจเฉ เจจเจพเจฒ เจฒเจพเจเฉ เจเจฐเฉ, เจชเจฐ qbec เจฆเฉเจเจฐเจพ:
qbec apply default
7. เจเจฟเฉฑเจ-เจเฉเจฐเจฟเจชเจ เจจเจพเจฒ เจเจพเจฃ-เจชเจเจพเจฃ
เจเจธ เจธเจฎเฉเจ, gitlab-runner เจฒเจ เจธเจพเจกเฉ เจกเจพเจเจฐเฉเจเจเจฐเฉ เจฌเจฃเจคเจฐ เจเจธ เจคเจฐเฉเจนเจพเจ เจฆเจฟเจเจพเจ เจฆเจฟเฉฐเจฆเฉ เจนเฉ:
.
โโโ components
โ โโโ gitlab-runner.jsonnet
โโโ environments
โ โโโ base.libsonnet
โ โโโ default.libsonnet
โโโ params.libsonnet
โโโ qbec.yaml
โโโ secrets
โ โโโ base.libsonnet
โโโ vendor
โโโ gitlab-runner (submodule)
เจชเจฐ Git เจตเจฟเฉฑเจ เจญเฉเจฆ เจธเจเฉเจฐ เจเจฐเจจเจพ เจธเฉเจฐเฉฑเจเจฟเจ เจค เจจเจนเฉเจ เจนเฉ, เจเฉ เจเจน เจนเฉ? เจเจธ เจฒเจ เจธเจพเจจเฉเฉฐ เจเจนเจจเจพเจ เจจเฉเฉฐ เจธเจนเฉ เจขเฉฐเจ เจจเจพเจฒ เจเจจเจเฉเจฐเจฟเจชเจ เจเจฐเจจ เจฆเฉ เจฒเฉเฉ เจนเฉเฅค
เจเจฎ เจคเฉเจฐ 'เจคเฉ, เจเฉฑเจ เจตเฉเจฐเฉเจเจฌเจฒ เจฆเฉ เจเจผเจพเจคเจฐ, เจเจน เจนเจฎเฉเจธเจผเจพ เจ เจฐเจฅ เจจเจนเฉเจ เจฐเฉฑเจเจฆเจพเฅค เจจเฉเฉฐ เจญเฉเจฆ เจเฉเจฐเจพเจเจธเจซเจฐ เจเจฐ เจธเจเจฆเฉ เจนเฉ qbec เจ เจคเฉ เจคเฉเจนเจพเจกเฉ CI เจธเจฟเจธเจเจฎ เจฆเฉ เจตเจพเจคเจพเจตเจฐเจฃ เจตเฉเจฐเฉเจเจฌเจฒ เจฆเฉเจเจฐเจพเฅค
เจชเจฐ เจเจน เจงเจฟเจเจจ เจฆเฉเจฃ เจฏเฉเจ เจนเฉ เจเจฟ เจเฉฑเจฅเฉ เจนเฉเจฐ เจตเฉ เจเฉเฉฐเจเจฒเจฆเจพเจฐ เจชเฉเจฐเฉเจเฉเจเจ เจนเจจ เจเจฟเจนเจจเจพเจ เจตเจฟเฉฑเจ เจนเฉเจฐ เจฌเจนเฉเจค เจธเจพเจฐเฉ เจญเฉเจฆ เจนเฉ เจธเจเจฆเฉ เจนเจจ; เจเจนเจจเจพเจ เจธเจพเจฐเจฟเจเจ เจจเฉเฉฐ เจตเจพเจคเจพเจตเจฐเจฃ เจตเฉเจฐเฉเจเจฌเจฒเจพเจ เจฆเฉเจเจฐเจพ เจคเจฌเจฆเฉเจฒ เจเจฐเจจเจพ เจฌเจนเฉเจค เจฎเฉเจธเจผเจเจฒ เจนเฉเจตเฉเจเจพเฅคเจเจธ เจคเฉเจ เจเจฒเจพเจตเจพ, เจเจธ เจเฉเจธ เจตเจฟเฉฑเจ เจฎเฉเจ เจคเฉเจนเจพเจจเฉเฉฐ เจ เจเจฟเจนเฉ เจเฉฑเจ เจธเจผเจพเจจเจฆเจพเจฐ เจธเฉฐเจฆ เจฌเจพเจฐเฉ เจฆเฉฑเจธเจฃ เจฆเฉ เจฏเฉเจ เจจเจนเฉเจ เจนเฉเจตเจพเจเจเจพ git-เจเฉเจฐเจฟเจชเจ.
git-เจเฉเจฐเจฟเจชเจ เจเจน เจเจธ เจตเจฟเฉฑเจ เจตเฉ เจธเฉเจตเจฟเจงเจพเจเจจเจ เจนเฉ เจเจฟ เจเจน เจคเฉเจนเจพเจจเฉเฉฐ เจญเฉเจฆ เจฆเฉ เจชเฉเจฐเฉ เจเจคเจฟเจนเจพเจธ เจจเฉเฉฐ เจธเฉเจฐเฉฑเจเจฟเจ เจค เจเจฐเจจ เจฆเฉ เจจเจพเจฒ-เจจเจพเจฒ เจคเฉเจฒเจจเจพ เจเจฐเจจ, เจฎเจฟเจฒเจพเจเจฃ เจ เจคเฉ เจตเจฟเจตเจพเจฆเจพเจ เจจเฉเฉฐ เจนเฉฑเจฒ เจเจฐเจจ เจฆเฉ เจเจเจพเจเจผเจค เจฆเจฟเฉฐเจฆเจพ เจนเฉ เจเจฟเจตเฉเจ เจเจฟ เจ เจธเฉเจ เจเจฟเฉฑเจ เจฆเฉ เจฎเจพเจฎเจฒเฉ เจตเจฟเฉฑเจ เจเจฐเจฆเฉ เจนเจพเจเฅค
เจเฉฐเจธเจเจพเจฒเฉเจธเจผเจจ เจฆเฉ เจฌเจพเจ เจฆ เจชเจนเจฟเจฒเฉ เจเฉเจเจผ git-เจเฉเจฐเจฟเจชเจ เจธเจพเจจเฉเฉฐ เจเจชเจฃเฉ เจฐเจฟเจชเฉเจเจผเจเจฐเฉ เจฒเจ เจเฉเฉฐเจเฉเจเจ เจฌเจฃเจพเจเจฃ เจฆเฉ เจฒเฉเฉ เจนเฉ:
git crypt init
เจเฉเจเจฐ เจคเฉเจนเจพเจกเฉ เจเฉเจฒ เจเฉฑเจ PGP เจเฉเฉฐเจเฉ เจนเฉ, เจคเจพเจ เจคเฉเจธเฉเจ เจคเฉเจฐเฉฐเจค เจเจชเจฃเฉ เจเจช เจจเฉเฉฐ เจเจธ เจชเฉเจฐเฉเจเฉเจเจ เจฒเจ เจเฉฑเจ เจธเจนเจฟเจฏเฉเจเฉ เจตเจเฉเจ เจธเจผเจพเจฎเจฒ เจเจฐ เจธเจเจฆเฉ เจนเฉ:
git-crypt add-gpg-user [email protected]
เจเจธ เจคเจฐเฉเจนเจพเจ เจคเฉเจธเฉเจ เจนเจฎเฉเจธเจผเจพ เจเจชเจฃเฉ เจจเจฟเฉฑเจเฉ เจเฉเฉฐเจเฉ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจเฉ เจเจธ เจฐเจฟเจชเฉเจเจผเจเจฐเฉ เจจเฉเฉฐ เจกเฉเจเฉเจฐเจฟเจชเจ เจเจฐ เจธเจเจฆเฉ เจนเฉเฅค
เจเฉเจเจฐ เจคเฉเจนเจพเจกเฉ เจเฉเจฒ PGP เจเฉเฉฐเจเฉ เจจเจนเฉเจ เจนเฉ เจ เจคเฉ เจเจธเจฆเฉ เจเจฎเฉเจฆ เจจเจนเฉเจ เจนเฉ, เจคเจพเจ เจคเฉเจธเฉเจ เจฆเฉเจเฉ เจคเจฐเฉเจเฉ เจจเจพเจฒ เจเจพ เจธเจเจฆเฉ เจนเฉ เจ เจคเฉ เจชเฉเจฐเฉเจเฉเจเจ เจเฉเฉฐเจเฉ เจจเฉเฉฐ เจจเจฟเจฐเจฏเจพเจค เจเจฐ เจธเจเจฆเฉ เจนเฉ:
git crypt export-key /path/to/keyfile
เจเจธ เจคเจฐเฉเจนเจพเจ, เจเจฟเจธ เจเจฟเจธเฉ เจจเฉ เจตเฉ เจฌเจฐเจพเจฎเจฆ เจเฉเจคเจพ เจนเฉ keyfile เจคเฉเจนเจพเจกเฉ เจฐเจฟเจชเฉเจเจผเจเจฐเฉ เจจเฉเฉฐ เจกเฉเจเฉเจฐเจฟเจชเจ เจเจฐเจจ เจฆเฉ เจฏเฉเจ เจนเฉเจตเฉเจเจพเฅค
เจเจน เจธเจพเจกเจพ เจชเจนเจฟเจฒเจพ เจฐเจพเจเจผ เจธเจฅเจพเจชเจค เจเจฐเจจ เจฆเจพ เจธเจฎเจพเจ เจนเฉ.
เจฎเฉเจจเฉเฉฐ เจคเฉเจนเจพเจจเฉเฉฐ เจฏเจพเจฆ เจฆเจฟเจตเจพเจเจฃ เจฆเจฟเจ เจเจฟ เจ
เจธเฉเจ เจ
เจเฉ เจตเฉ เจกเจพเจเจฐเฉเจเจเจฐเฉ เจตเจฟเฉฑเจ เจนเจพเจ deploy/gitlab-runner/, เจเจฟเฉฑเจฅเฉ เจธเจพเจกเฉ เจเฉเจฒ เจเฉฑเจ เจกเจพเจเจฐเฉเจเจเจฐเฉ เจนเฉ เจญเฉเจฆ/, เจเจ เจเจธ เจตเจฟเฉฑเจ เจธเจพเจฐเฉเจเจ เจซเจพเจเจฒเจพเจ เจจเฉเฉฐ เจเจจเจเฉเจฐเจฟเจชเจ เจเจฐเฉเจ, เจเจธเจฆเฉ เจฒเจ เจ
เจธเฉเจ เจเฉฑเจ เจซเจพเจเจฒ เจฌเจฃเจพเจตเจพเจเจเฉ เจญเฉเจฆ/.gitattributes เจนเฉเจ เจฆเจฟเฉฑเจคเฉ เจธเจฎเฉฑเจเจฐเฉ เจฆเฉ เจจเจพเจฒ:
* filter=git-crypt diff=git-crypt
.gitattributes !filter !diff
เจเจฟเจตเฉเจ เจเจฟ เจธเจฎเฉฑเจเจฐเฉ เจคเฉเจ เจฆเฉเจเจฟเจ เจเจพ เจธเจเจฆเจพ เจนเฉ, เจธเจพเจฐเฉเจเจ เจซเจพเจเจฒเจพเจ เจจเฉเฉฐ เจฎเจพเจธเจ เจเฉเจคเจพ เจเจฟเจ เจนเฉ * เจฆเฉเจเจฐเจพ เจเจฒเจพเจเจ เจเจพเจตเฉเจเจพ git-เจเฉเจฐเจฟเจชเจ, เจธเจญ เจจเฉเฉฐ เจเฉฑเจก เจเฉ .gitattributes
เจ เจธเฉเจ เจเจธเจจเฉเฉฐ เจเจฒเจพ เจเฉ เจเจพเจเจ เจธเจเจฆเฉ เจนเจพเจ:
git crypt status -e
เจเจเจเจชเฉเฉฑเจ เจฐเจฟเจชเฉเจเจผเจเจฐเฉ เจตเจฟเฉฑเจ เจเจนเจจเจพเจ เจธเจพเจฐเฉเจเจ เจซเจพเจเจฒเจพเจ เจฆเฉ เจเฉฑเจ เจธเฉเจเฉ เจนเฉเจตเฉเจเฉ เจเจฟเจจเฉเจนเจพเจ เจฒเจ เจเจจเจเฉเจฐเจฟเจชเจธเจผเจจ เจธเจฎเจฐเฉฑเจฅ เจนเฉ
เจฌเจธ, เจนเฉเจฃ เจ เจธเฉเจ เจธเฉเจฐเฉฑเจเจฟเจ เจค เจขเฉฐเจ เจจเจพเจฒ เจเจชเจฃเฉเจเจ เจคเจฌเจฆเฉเจฒเฉเจเจ เจเจฐ เจธเจเจฆเฉ เจนเจพเจ:
cd ../..
git add .
git commit -m "Add deploy for gitlab-runner"
เจเฉฑเจ เจฐเจฟเจชเฉเจเจผเจเจฐเฉ เจจเฉเฉฐ เจฌเจฒเฉเจ เจเจฐเจจ เจฒเจ, เจฌเฉฑเจธ เจเจฒเจพเจ:
git crypt lock
เจ
เจคเฉ เจคเฉเจฐเฉฐเจค เจธเจพเจฐเฉเจเจ เจเจจเจเฉเจฐเจฟเจชเจเจก เจซเจพเจเจฒเจพเจ เจฌเจพเจเจจเจฐเฉ เจเฉเจเจผ เจตเจฟเฉฑเจ เจฌเจฆเจฒ เจเจพเจฃเจเฉเจเจ, เจเจนเจจเจพเจ เจจเฉเฉฐ เจชเฉเฉเจนเจจเจพ เจ
เจธเฉฐเจญเจต เจนเฉ เจเจพเจตเฉเจเจพ.
เจฐเจฟเจชเฉเจเจผเจเจฐเฉ เจจเฉเฉฐ เจกเฉเจเฉเจฐเจฟเจชเจ เจเจฐเจจ เจฒเจ, เจเจฒเจพเจ:
git crypt unlock
8. เจเฉฑเจ เจเฉเจฒเจฌเจพเจเจธ เจเจฟเฉฑเจคเจฐ เจฌเจฃเจพเจ
เจเฉฑเจ เจเฉเจฒเจฌเจพเจเจธ เจเจฟเฉฑเจคเจฐ เจเฉฑเจ เจเจฟเฉฑเจคเจฐ เจนเฉเฉฐเจฆเจพ เจนเฉ เจเจฟเจธเจฆเฉ เจตเจฐเจคเฉเจ เจ เจธเฉเจ เจเจชเจฃเฉ เจชเฉเจฐเฉเจเฉเจเจ เจจเฉเฉฐ เจฒเจพเจเฉ เจเจฐเจจ เจฒเจ เจเจฐเจพเจเจเฉเฅค เจเจน Gitlab เจฆเฉเฉเจพเจ เจฆเฉเจเจฐเจพ เจเจฎ เจคเฉเจจเจพเจคเฉ เจเจพเจฐเจเจพเจ เจจเฉเฉฐ เจเจฐเจจ เจฒเจ เจตเจฐเจคเจฟเจ เจเจพเจตเฉเจเจพเฅค
เจเฉฑเจฅเฉ เจธเจญ เจเฉเจ เจธเจงเจพเจฐเจจ เจนเฉ, เจเจ เจเฉฑเจ เจจเจตเจพเจ เจฌเจฃเจพเจ dockerfiles/เจเฉเจฒเจฌเจพเจเจธ/Dockerfile เจนเฉเจ เจฆเจฟเฉฑเจคเฉ เจธเจฎเฉฑเจเจฐเฉ เจฆเฉ เจจเจพเจฒ:
FROM alpine:3.11
RUN apk add --no-cache git git-crypt
RUN QBEC_VER=0.10.3
&& wget -O- https://github.com/splunk/qbec/releases/download/v${QBEC_VER}/qbec-linux-amd64.tar.gz
| tar -C /tmp -xzf -
&& mv /tmp/qbec /tmp/jsonnet-qbec /usr/local/bin/
RUN KUBECTL_VER=1.17.0
&& wget -O /usr/local/bin/kubectl
https://storage.googleapis.com/kubernetes-release/release/v${KUBECTL_VER}/bin/linux/amd64/kubectl
&& chmod +x /usr/local/bin/kubectl
RUN HELM_VER=3.0.2
&& wget -O- https://get.helm.sh/helm-v${HELM_VER}-linux-amd64.tar.gz
| tar -C /tmp -zxf -
&& mv /tmp/linux-amd64/helm /usr/local/bin/helm
เจเจฟเจตเฉเจ เจเจฟ เจคเฉเจธเฉเจ เจตเฉเจ เจธเจเจฆเฉ เจนเฉ, เจเจธ เจเจฟเฉฑเจคเจฐ เจตเจฟเฉฑเจ เจ เจธเฉเจ เจเจนเจจเจพเจ เจธเจพเจฐเฉเจเจ เจเจชเจฏเฉเจเจคเจพเจตเจพเจ เจจเฉเฉฐ เจธเจฅเจพเจชเจฟเจค เจเจฐเจฆเฉ เจนเจพเจ เจเฉ เจ เจธเฉเจ เจธเจพเจกเฉ เจเจชเจฒเฉเจเฉเจธเจผเจจ เจจเฉเฉฐ เจฒเจพเจเฉ เจเจฐเจจ เจฒเจ เจตเจฐเจคเฉเจเจ เจธเจจเฅค เจธเจพเจจเฉเฉฐ เจเฉฑเจฅเฉ เจเจธเจฆเฉ เจฒเฉเฉ เจจเจนเฉเจ เจนเฉ เจเจฆเฉเจ เจคเฉฑเจ kubectl, เจชเจฐ เจคเฉเจธเฉเจ เจชเจพเจเจชเจฒเจพเจเจจ เจธเฉเจเจ เจช เจชเฉเจพเจ เจฆเฉเจฐเจพเจจ เจเจธเจฆเฉ เจจเจพเจฒ เจเฉเจกเจฃเจพ เจเจพเจน เจธเจเจฆเฉ เจนเฉเฅค
เจเจธ เจคเฉเจ เจเจฒเจพเจตเจพ, เจเฉเจฌเจฐเจจเฉเจเจธ เจจเจพเจฒ เจธเฉฐเจเจพเจฐ เจเจฐเจจ เจ เจคเฉ เจเจธ เจจเฉเฉฐ เจฒเจพเจเฉ เจเจฐเจจ เจฆเฉ เจฏเฉเจ เจนเฉเจฃ เจฒเจ, เจธเจพเจจเฉเฉฐ เจเจฟเจเจฒเฉเจฌ-เจฐเจจเจฐ เจฆเฉเจเจฐเจพ เจคเจฟเจเจฐ เจเฉเจคเฉ เจชเฉเจกเจพเจ เจฒเจ เจเฉฑเจ เจญเฉเจฎเจฟเจเจพ เจฆเฉ เจธเฉฐเจฐเจเจจเจพ เจเจฐเจจ เจฆเฉ เจฒเฉเฉ เจนเฉเฅค
เจ เจเจฟเจนเจพ เจเจฐเจจ เจฒเจ, เจเจ gitlab-runner เจจเจพเจฒ เจกเจพเจเจฐเฉเจเจเจฐเฉ 'เจคเฉ เจเฉฑเจฒเฉเจ:
cd deploy/gitlab-runner
เจ เจคเฉ เจเฉฑเจ เจจเจตเจพเจ เจญเจพเจ เจธเจผเจพเจฎเจฒ เจเจฐเฉ components/rbac.jsonnet:
local env = {
name: std.extVar('qbec.io/env'),
namespace: std.extVar('qbec.io/defaultNs'),
};
local p = import '../params.libsonnet';
local params = p.components.rbac;
[
{
apiVersion: 'v1',
kind: 'ServiceAccount',
metadata: {
labels: {
app: params.name,
},
name: params.name,
},
},
{
apiVersion: 'rbac.authorization.k8s.io/v1',
kind: 'Role',
metadata: {
labels: {
app: params.name,
},
name: params.name,
},
rules: [
{
apiGroups: [
'*',
],
resources: [
'*',
],
verbs: [
'*',
],
},
],
},
{
apiVersion: 'rbac.authorization.k8s.io/v1',
kind: 'RoleBinding',
metadata: {
labels: {
app: params.name,
},
name: params.name,
},
roleRef: {
apiGroup: 'rbac.authorization.k8s.io',
kind: 'Role',
name: params.name,
},
subjects: [
{
kind: 'ServiceAccount',
name: params.name,
namespace: env.namespace,
},
],
},
]
เจ เจธเฉเจ เจตเจฟเฉฑเจ เจจเจตเฉเจ เจชเฉเจฐเจพเจฎเฉเจเจฐเจพเจ เจฆเจพ เจตเจฐเจฃเจจ เจตเฉ เจเจฐเจพเจเจเฉ เจตเจพเจคเจพเจตเจฐเจฃ/base.libsonnet, เจเฉ เจนเฉเจฃ เจเจธ เจคเจฐเฉเจนเจพเจ เจฆเจฟเจเจพเจ เจฆเจฟเฉฐเจฆเจพ เจนเฉ:
local secrets = import '../secrets/base.libsonnet';
{
components: {
gitlabRunner: {
name: 'gitlab-runner',
values: {
gitlabUrl: 'https://gitlab.com/',
rbac: {
create: true,
},
runnerRegistrationToken: secrets.runnerRegistrationToken,
runners: {
serviceAccountName: $.components.rbac.name,
image: 'registry.gitlab.com/kvaps/docs.example.org/toolbox:v0.0.1',
},
},
},
rbac: {
name: 'gitlab-runner-deploy',
},
},
}
เจงเจฟเจเจจ เจฆเฉเจตเฉ $.components.rbac.name เจฆเจพ เจนเจตเจพเจฒเจพ เจฆเจฟเฉฐเจฆเจพ เจนเฉ เจจเจพเจฎ เจเฉฐเจชเฉเจจเฉเจเจ เจฒเจ rbac
เจเจ เจฆเฉเจเฉเจ เจเจฟ เจเฉ เจฌเจฆเจฒเจฟเจ เจนเฉ:
qbec diff default
เจ เจคเฉ เจธเจพเจกเฉเจเจ เจคเจฌเจฆเฉเจฒเฉเจเจ เจจเฉเฉฐ เจเฉเจฌเจฐเจจเฉเจเจธ 'เจคเฉ เจฒเจพเจเฉ เจเจฐเฉ:
qbec apply default
เจจเจพเจฒ เจนเฉ, เจธเจพเจกเฉเจเจ เจคเจฌเจฆเฉเจฒเฉเจเจ เจจเฉเฉฐ เจเจฟเฉฑเจ เจตเจฟเฉฑเจ เจเจฐเจจเจพ เจจเจพ เจญเฉเฉฑเจฒเฉ:
cd ../..
git add dockerfiles/toolbox
git commit -m "Add Dockerfile for toolbox"
git add deploy/gitlab-runner
git commit -m "Configure gitlab-runner to use toolbox"
9. เจธเจพเจกเฉ เจชเจนเจฟเจฒเฉ เจชเจพเจเจชเจฒเจพเจเจจ เจ
เจคเฉ เจเฉเจ เจฆเฉเจเจฐเจพ เจเจฟเฉฑเจคเจฐเจพเจ เจฆเฉ เจ
เจธเฉเจเจฌเจฒเฉ
เจชเฉเจฐเฉเจเฉเจเจ เจฆเฉ เจเฉเฉเจน 'เจคเฉ เจ เจธเฉเจ เจฌเจฃเจพเจตเจพเจเจเฉ .gitlab-ci.yml เจนเฉเจ เจฆเจฟเฉฑเจคเฉ เจธเจฎเฉฑเจเจฐเฉ เจฆเฉ เจจเจพเจฒ:
.build_docker_image:
stage: build
image:
name: gcr.io/kaniko-project/executor:debug-v0.15.0
entrypoint: [""]
before_script:
- echo "{"auths":{"$CI_REGISTRY":{"username":"$CI_REGISTRY_USER","password":"$CI_REGISTRY_PASSWORD"}}}" > /kaniko/.docker/config.json
build_toolbox:
extends: .build_docker_image
script:
- /kaniko/executor --cache --context $CI_PROJECT_DIR/dockerfiles/toolbox --dockerfile $CI_PROJECT_DIR/dockerfiles/toolbox/Dockerfile --destination $CI_REGISTRY_IMAGE/toolbox:$CI_COMMIT_TAG
only:
refs:
- tags
build_website:
extends: .build_docker_image
variables:
GIT_SUBMODULE_STRATEGY: normal
script:
- /kaniko/executor --cache --context $CI_PROJECT_DIR --dockerfile $CI_PROJECT_DIR/dockerfiles/website/Dockerfile --destination $CI_REGISTRY_IMAGE/website:$CI_COMMIT_TAG
only:
refs:
- tags
เจเจฟเจฐเจชเจพ เจเจฐเจเฉ เจจเฉเจ เจเจฐเฉ เจเจฟ เจ เจธเฉเจ เจตเจฐเจคเจฆเฉ เจนเจพเจ GIT_SUBMODULE_STRATEGY: เจเจฎ เจเจนเจจเจพเจ เจจเฉเจเจฐเฉเจเจ เจฒเจ เจเจฟเฉฑเจฅเฉ เจคเฉเจนเจพเจจเฉเฉฐ เจเจเจเจผเฉเจเจฟเจเจธเจผเจจ เจคเฉเจ เจชเจนเจฟเจฒเจพเจ เจธเจชเฉฑเจธเจผเจ เจคเฉเจฐ 'เจคเฉ เจธเจฌเจฎเฉเจกเจฟเจเจฒ เจธเจผเฉเจฐเฉ เจเจฐเจจ เจฆเฉ เจฒเฉเฉ เจนเฉเฉฐเจฆเฉ เจนเฉเฅค
เจธเจพเจกเฉ เจฌเจฆเจฒเจพเจ เจเจฐเจจ เจฒเจ เจจเจพ เจญเฉเฉฑเจฒเฉ:
git add .gitlab-ci.yml
git commit -m "Automate docker build"
เจฎเฉเจจเฉเฉฐ เจฒเจเจฆเจพ เจนเฉ เจเจฟ เจ เจธเฉเจ เจเจธเจจเฉเฉฐ เจธเฉเจฐเฉฑเจเจฟเจ เจค เจฐเฉเจช เจจเจพเจฒ เจเฉฑเจ เจธเฉฐเจธเจเจฐเจฃ เจเจนเจฟ เจธเจเจฆเฉ เจนเจพเจ v0.0.1 เจ เจคเฉ เจเฉเจ เจเฉเฉเฉ:
git tag v0.0.1
เจเจฆเฉเจ เจตเฉ เจธเจพเจจเฉเฉฐ เจเฉฑเจ เจจเจตเจพเจ เจธเฉฐเจธเจเจฐเจฃ เจเจพเจฐเฉ เจเจฐเจจ เจฆเฉ เจเจผเจฐเฉเจฐเจค เจนเฉเจเจเฉ เจ เจธเฉเจ เจเฉเจ เจเฉเฉเจพเจเจเฉเฅค เจกเฉเจเจฐ เจเจฟเฉฑเจคเจฐเจพเจ เจตเจฟเฉฑเจ เจเฉเจเจธ เจจเฉเฉฐ เจเจฟเฉฑเจ เจเฉเจเจธ เจจเจพเจฒ เจเฉเฉเจฟเจ เจเจพเจตเฉเจเจพเฅค เจเฉฑเจ เจจเจตเฉเจ เจเฉเจ เจจเจพเจฒ เจนเจฐ เจเฉฑเจ เจชเฉเจธเจผ เจเจธ เจเฉเจ เจจเจพเจฒ เจเจฟเฉฑเจคเจฐเจพเจ เจฆเฉ เจจเจฟเจฐเจฎเจพเจฃ เจจเฉเฉฐ เจธเจผเฉเจฐเฉ เจเจฐเฉเจเจพเฅค
เจเจฒเฉ เจเจฐเฉเจ git push --tags, เจ เจคเฉ เจเจ เจธเจพเจกเฉ เจชเจนเจฟเจฒเฉ เจชเจพเจเจชเจฒเจพเจเจจ เจจเฉเฉฐ เจตเฉเจเฉเจ:
เจชเจนเจฟเจฒเฉ เจชเจพเจเจชเจฒเจพเจเจจ เจฆเจพ เจธเจเฉเจฐเฉเจจเจธเจผเฉเจ
เจเจน เจเจธ เจคเฉฑเจฅ เจตเฉฑเจฒ เจคเฉเจนเจพเจกเจพ เจงเจฟเจเจจ เจเจฟเฉฑเจเจฃ เจฏเฉเจ เจนเฉ เจเจฟ เจเฉเจเจธ เจฆเฉเจเจฐเจพ เจ เจธเฉเจเจฌเจฒเฉ เจกเฉเจเจฐ เจเจฟเฉฑเจคเจฐเจพเจ เจจเฉเฉฐ เจฌเจฃเจพเจเจฃ เจฒเจ เจขเฉเจเจตเฉเจ เจนเฉ, เจชเจฐ เจเฉเจฌเจฐเจจเฉเจเจธ เจฒเจ เจเจชเจฒเฉเจเฉเจธเจผเจจ เจจเฉเฉฐ เจคเจพเจเจจเจพเจค เจเจฐเจจ เจฒเจ เจขเฉเจเจตเจพเจ เจจเจนเฉเจ เจนเฉเฅค เจเจฟเจเจเจเจฟ เจจเจตเฉเจ เจเฉเจ เจชเฉเจฐเจพเจฃเฉ เจเจฎเจฟเจเจพเจ เจจเฉเฉฐ เจจเจฟเจฐเจงเจพเจฐเจค เจเฉเจคเฉ เจเจพ เจธเจเจฆเฉ เจนเจจ, เจเจธ เจธเจฅเจฟเจคเฉ เจตเจฟเฉฑเจ, เจเจนเจจเจพเจ เจฒเจ เจชเจพเจเจชเจฒเจพเจเจจ เจธเจผเฉเจฐเฉ เจเจฐเจจ เจจเจพเจฒ เจชเฉเจฐเจพเจฃเฉ เจธเฉฐเจธเจเจฐเจฃ เจฆเฉ เจคเฉเจจเจพเจคเฉ เจนเฉเจตเฉเจเฉเฅค
เจเจธ เจธเจฎเฉฑเจธเจฟเจ เจจเฉเฉฐ เจนเฉฑเจฒ เจเจฐเจจ เจฒเจ, เจเจฎ เจคเฉเจฐ 'เจคเฉ เจกเฉเจเจฐ เจเจฟเฉฑเจคเจฐเจพเจ เจฆเฉ เจจเจฟเจฐเจฎเจพเจฃ เจจเฉเฉฐ เจเฉเจเจธ เจจเจพเจฒ เจเฉเฉเจฟเจ เจเจพเจเจฆเจพ เจนเฉ, เจ เจคเฉ เจเจชเจฒเฉเจเฉเจธเจผเจจ เจจเฉเฉฐ เจเฉฑเจ เจธเจผเจพเจเจพ เจตเจฟเฉฑเจ เจคเจพเจเจจเจพเจค เจเฉเจคเจพ เจเจพเจเจฆเจพ เจนเฉเฅค เจฎเจพเจธเจเจฐ, เจเจฟเจธ เจตเจฟเฉฑเจ เจเจเฉฑเจคเจฐ เจเฉเจคเฉ เจเจฟเฉฑเจคเจฐเจพเจ เจฆเฉ เจธเฉฐเจธเจเจฐเจฃ เจนเจพเจฐเจกเจเฉเจก เจเฉเจคเฉ เจเจ เจนเจจเฅค เจเจน เจเจน เจฅเจพเจ เจนเฉ เจเจฟเฉฑเจฅเฉ เจคเฉเจธเฉเจ เจเฉฑเจ เจธเจงเจพเจฐเจจ เจฐเฉเจตเจฐเจ เจจเจพเจฒ เจฐเฉเจฒเจฌเฉเจ เจธเจผเฉเจฐเฉ เจเจฐ เจธเจเจฆเฉ เจนเฉ เจฎเจพเจธเจเจฐ- เจธเจผเจพเจเจพเจตเจพเจเฅค
10. เจคเฉเจจเจพเจคเฉ เจฆเจพ เจธเจตเฉเจเจพเจฒเจจ
Gitlab-เจฐเจจเจฐ เจจเฉเฉฐ เจธเจพเจกเฉ เจฐเจพเจเจผ เจจเฉเฉฐ เจกเฉเจเฉเจฐเจฟเจชเจ เจเจฐเจจ เจฒเจ, เจธเจพเจจเฉเฉฐ เจฐเจฟเจชเฉเจเจผเจเจฐเฉ เจเฉเฉฐเจเฉ เจจเฉเฉฐ เจจเจฟเจฐเจฏเจพเจค เจเจฐเจจ เจ เจคเฉ เจเจธเจจเฉเฉฐ เจธเจพเจกเฉ CI เจตเจพเจคเจพเจตเจฐเจฃ เจตเฉเจฐเฉเจเจฌเจฒ เจตเจฟเฉฑเจ เจเฉเฉเจจ เจฆเฉ เจฒเฉเฉ เจนเฉเจตเฉเจเฉ:
git crypt export-key /tmp/docs-repo.key
base64 -w0 /tmp/docs-repo.key; echo
เจ
เจธเฉเจ เจจเจคเฉเจเฉ เจตเจพเจฒเฉ เจฒเจพเจเจจ เจจเฉเฉฐ เจเจฟเจเจฒเฉเจฌ เจตเจฟเฉฑเจ เจธเฉเจฐเฉฑเจเจฟเจ
เจค เจเจฐเจพเจเจเฉ; เจ
เจเจฟเจนเจพ เจเจฐเจจ เจฒเจ, เจเจ เจธเจพเจกเฉเจเจ เจชเฉเจฐเฉเจเฉเจเจ เจธเฉเจเจฟเฉฐเจเจพเจ 'เจคเฉ เจเฉฑเจฒเฉเจ:
เจธเฉเจเจฟเฉฐเจเจพเจ -> CI / CD -> เจตเฉเจฐเฉเจเจฌเจฒ
เจ เจคเฉ เจเจ เจเฉฑเจ เจจเจตเจพเจ เจตเฉเจฐเฉเจเจฌเจฒ เจฌเจฃเจพเจเจ:
เจฆเฉ เจเจฟเจธเจฎ
เจเฉเฉฐเจเฉ
เจฎเฉเฉฑเจฒ
เจธเฉเจฐเฉฑเจเจฟเจ
เจค
เจจเจเจพเจฌเจชเฉเจธเจผ
เจธเจเฉเจช
File
GITCRYPT_KEY
<your string>
true
(เจธเจฟเจเจฒเจพเจ เจฆเฉเจฐเจพเจจ เจคเฉเจธเฉเจ เจเจฐ เจธเจเจฆเฉ เจนเฉ false
)
true
All environments
เจธเจผเจพเจฎเจฒ เจเฉเจคเฉ เจตเฉเจฐเฉเจเจฌเจฒ เจฆเจพ เจธเจเฉเจฐเฉเจจเจธเจผเฉเจ
เจนเฉเจฃ เจธเจพเจจเฉเฉฐ เจ เฉฑเจชเจกเฉเจ เจเจฐเฉเจ .gitlab-ci.yml เจเจธ เจตเจฟเฉฑเจ เจธเจผเจพเจฎเจฒ เจเจฐเจจเจพ:
.deploy_qbec_app:
stage: deploy
only:
refs:
- master
deploy_gitlab_runner:
extends: .deploy_qbec_app
variables:
GIT_SUBMODULE_STRATEGY: normal
before_script:
- base64 -d "$GITCRYPT_KEY" | git-crypt unlock -
script:
- qbec apply default --root deploy/gitlab-runner --force:k8s-context __incluster__ --wait --yes
deploy_website:
extends: .deploy_qbec_app
script:
- qbec apply default --root deploy/website --force:k8s-context __incluster__ --wait --yes
เจเฉฑเจฅเฉ เจ เจธเฉเจ qbec เจฒเจ เจเจ เจจเจตเฉเจ เจตเจฟเจเจฒเจช เจฏเฉเจ เจเฉเจคเฉ เจนเจจ:
- --เจฐเฉเจ เจเฉเจ/เจเจช โ เจคเฉเจนเจพเจจเฉเฉฐ เจเฉฑเจ เจเจพเจธ เจเจชเจฒเฉเจเฉเจธเจผเจจ เจฆเฉ เจกเจพเจเจฐเฉเจเจเจฐเฉ เจจเจฟเจฐเจงเจพเจฐเจค เจเจฐเจจ เจฆเฉ เจเจเจฟเจ เจฆเจฟเฉฐเจฆเจพ เจนเฉ
- --force:k8s-context __incluster__ - เจเจน เจเฉฑเจ เจเจพเจฆเฉเจ เจตเฉเจฐเฉเจเจฌเจฒ เจนเฉ เจเฉ เจเจนเจฟเฉฐเจฆเจพ เจนเฉ เจเจฟ เจคเฉเจจเจพเจคเฉ เจเจธเฉ เจเจฒเฉฑเจธเจเจฐ เจตเจฟเฉฑเจ เจนเฉเจตเฉเจเฉ เจเจฟเจธ เจตเจฟเฉฑเจ gtilab-runner เจเฉฑเจฒ เจฐเจฟเจนเจพ เจนเฉเฅค เจเจน เจเจผเจฐเฉเจฐเฉ เจนเฉ เจเจฟเจเจเจเจฟ เจจเจนเฉเจ เจคเจพเจ qbec เจคเฉเจนเจพเจกเฉ kubeconfig เจตเจฟเฉฑเจ เจเฉฑเจ เจขเฉเจเจตเจพเจ Kubernetes เจธเจฐเจตเจฐ เจฒเฉฑเจญเจฃ เจฆเฉ เจเฉเจธเจผเจฟเจธเจผ เจเจฐเฉเจเจพเฅค
- --เจเจกเฉเจ เจเจฐเฉ โ qbec เจจเฉเฉฐ เจเฉฐเจคเจเจผเจพเจฐ เจเจฐเจจ เจฒเจ เจฎเจเจผเจฌเฉเจฐ เจเจฐเจฆเจพ เจนเฉ เจเจฆเฉเจ เจคเฉฑเจ เจเจน เจคเจฟเจเจฐ เจเฉเจคเฉ เจธเจฐเฉเจค เจคเจฟเจเจฐ เจธเจฅเจฟเจคเฉ เจตเจฟเฉฑเจ เจจเจนเฉเจ เจเจพเจเจฆเฉ เจนเจจ เจ เจคเฉ เจเฉเจตเจฒ เจคเจฆ เจนเฉ เจเฉฑเจ เจธเจซเจฒ เจเจเจเจผเจฟเจ-เจเฉเจก เจจเจพเจฒ เจฌเจพเจนเจฐ เจจเจฟเจเจฒเจฆเฉ เจนเจจเฅค
- -เจนเจพเจ - เจธเจฟเจฐเจซเจผ เจเฉฐเจเจฐเจเจเจเจฟเจต เจธเจผเฉเฉฑเจฒ เจจเฉเฉฐ เจ เจฏเฉเจ เจเจฐเจฆเจพ เจนเฉ เจคเฉเจนเจพเจจเฉเฉฐ เจชเฉเจฐเจพ เจตเจฟเจธเจผเจตเจพเจธ เจนเฉ? เจเจฆเฉเจ เจคเจพเจเจจเจพเจค เจเฉเจคเจพ เจเจพเจเจฆเจพ เจนเฉเฅค
เจธเจพเจกเฉ เจฌเจฆเจฒเจพเจ เจเจฐเจจ เจฒเจ เจจเจพ เจญเฉเฉฑเจฒเฉ:
git add .gitlab-ci.yml
git commit -m "Automate deploy"
เจ เจคเฉ เจฌเจพเจ เจฆ git เจงเฉฑเจเจพ เจ เจธเฉเจ เจฆเฉเจเจพเจเจเฉ เจเจฟ เจธเจพเจกเฉเจเจ เจ เจฐเจเจผเฉเจเจ เจเจฟเจตเฉเจ เจคเจพเจเจจเจพเจค เจเฉเจคเฉเจเจ เจเจเจเจ เจนเจจ:
เจฆเฉเจเฉ เจชเจพเจเจชเจฒเจพเจเจจ เจฆเจพ เจธเจเฉเจฐเฉเจจเจธเจผเฉเจ
11. เจเจฒเจพเจคเจฎเจ เจเฉเจเจผเจพเจ เจ
เจคเฉ เจ
เจธเฉเจเจฌเจฒเฉ เจเจฆเฉเจ เจฎเจพเจธเจเจฐ เจตเฉฑเจฒ เจงเฉฑเจเจฆเฉ เจนเจจ
เจเจฎ เจคเฉเจฐ 'เจคเฉ, เจเฉฑเจชเจฐ เจฆเฉฑเจธเฉ เจเจ เจเจฆเจฎ เจฒเจเจญเจ เจเจฟเจธเฉ เจตเฉ เจฎเจพเจเจเฉเจฐเฉเจธเจฐเจตเจฟเจธ เจจเฉเฉฐ เจฌเจฃเจพเจเจฃ เจ เจคเฉ เจชเฉเจฐเจฆเจพเจจ เจเจฐเจจ เจฒเจ เจเจพเจซเฉ เจนเฉเฉฐเจฆเฉ เจนเจจ, เจชเจฐ เจเจฆเฉเจ เจตเฉ เจธเจพเจจเฉเฉฐ เจธเจพเจเจ เจจเฉเฉฐ เจ เฉฑเจชเจกเฉเจ เจเจฐเจจ เจฆเฉ เจฒเฉเฉ เจนเฉเฉฐเจฆเฉ เจนเฉ เจคเจพเจ เจ เจธเฉเจ เจเฉเจ เจเฉเจ เจจเจนเฉเจ เจเฉเฉเจจเจพ เจเจพเจนเฉเฉฐเจฆเฉเฅค เจเจธ เจฒเจ, เจ เจธเฉเจ เจเฉฑเจ เจนเฉเจฐ เจเจคเฉเจธเจผเฉเจฒ เจฐเฉเจ เจฒเจตเจพเจเจเฉ เจ เจคเฉ เจฎเจพเจธเจเจฐ เจฌเฉเจฐเจพเจเจ เจตเจฟเฉฑเจ เจเฉฑเจ เจกเจพเจเจเฉเจธเจ เจคเฉเจจเจพเจคเฉ เจธเจฅเจพเจชเจค เจเจฐเจพเจเจเฉเฅค
เจเจน เจตเจฟเจเจพเจฐ เจธเจงเจพเจฐเจจ เจนเฉ: เจนเฉเจฃ เจธเจพเจกเฉ เจคเจธเจตเฉเจฐ เจตเฉเจฌเจธเจพเจเจ เจนเจฐ เจตเจพเจฐ เจเจฆเฉเจ เจคเฉเจธเฉเจ เจ เฉฐเจฆเจฐ เจงเฉฑเจเฉเจเฉ เจคเจพเจ เจฆเฉเจฌเจพเจฐเจพ เจฌเจฃเจพเจเจ เจเจพเจตเฉเจเจพ เจฎเจพเจธเจเจฐ, เจ เจคเฉ เจซเจฟเจฐ เจเจชเจฃเฉ เจเจช เจเฉเจฌเจฐเจจเฉเจเจธ 'เจคเฉ เจคเฉเจจเจพเจค เจเจฐเฉเฅค
เจเจ เจเจชเจฃเฉ เจตเจฟเฉฑเจ เจเจนเจจเจพเจ เจฆเฉ เจจเฉเจเจฐเฉเจเจ เจจเฉเฉฐ เจ เจชเจกเฉเจ เจเจฐเฉเจ .gitlab-ci.yml:
build_website:
extends: .build_docker_image
variables:
GIT_SUBMODULE_STRATEGY: normal
script:
- mkdir -p $CI_PROJECT_DIR/artifacts
- /kaniko/executor --cache --context $CI_PROJECT_DIR --dockerfile $CI_PROJECT_DIR/dockerfiles/website/Dockerfile --destination $CI_REGISTRY_IMAGE/website:$CI_COMMIT_REF_NAME --digest-file $CI_PROJECT_DIR/artifacts/website.digest
artifacts:
paths:
- artifacts/
only:
refs:
- master
- tags
deploy_website:
extends: .deploy_qbec_app
script:
- DIGEST="$(cat artifacts/website.digest)"
- qbec apply default --root deploy/website --force:k8s-context __incluster__ --wait --yes --vm:ext-str digest="$DIGEST"
เจเจฟเจฐเจชเจพ เจเจฐเจเฉ เจจเฉเจ เจเจฐเฉ เจเจฟ เจ เจธเฉเจ เจเฉฑเจ เจงเจพเจเจพ เจเฉเฉเจฟเจ เจนเฉ เจฎเจพเจธเจเจฐ ะบ เจฐเจฟเจซเจเจผ เจจเฉเจเจฐเฉเจเจ เจฒเจ build_website เจ เจคเฉ เจ เจธเฉเจ เจนเฉเจฃ เจตเจฐเจคเจฆเฉ เจนเจพเจ $CI_COMMIT_REF_NAME เจฆเฉ เจฌเจเจพเจ $CI_COMMIT_TAG, เจฏเจพเจจเฉ, เจ เจธเฉเจ เจเจฟเฉฑเจ เจตเจฟเฉฑเจ เจเฉเจเจธ เจคเฉเจ เจฎเฉเจเจค เจนเฉ เจเจ เจนเจพเจ เจ เจคเฉ เจนเฉเจฃ เจ เจธเฉเจ เจชเจพเจเจชเจฒเจพเจเจจ เจจเฉเฉฐ เจธเจผเฉเจฐเฉ เจเจฐเจจ เจตเจพเจฒเฉ เจเจฎเจฟเจ เจฌเฉเจฐเจพเจเจ เจฆเฉ เจจเจพเจฎ เจจเจพเจฒ เจเฉฑเจ เจเจฟเฉฑเจคเจฐ เจจเฉเฉฐ เจชเฉเจธเจผ เจเจฐเจพเจเจเฉเฅค เจเจน เจงเจฟเจเจจ เจฆเฉเจฃ เจฏเฉเจ เจนเฉ เจเจฟ เจเจน เจเฉเจเจพเจ เจฆเฉ เจจเจพเจฒ เจตเฉ เจเฉฐเจฎ เจเจฐเฉเจเจพ, เจเฉ เจธเจพเจจเฉเฉฐ เจกเฉเจเจฐ-เจฐเจเจฟเจธเจเจฐเฉ เจตเจฟเฉฑเจ เจเฉฑเจ เจเจพเจธ เจธเฉฐเจธเจเจฐเจฃ เจตเจพเจฒเฉ เจธเจพเจเจ เจฆเฉ เจธเจจเฉเจชเจธเจผเจพเจ เจจเฉเฉฐ เจธเฉเจฐเฉฑเจเจฟเจ เจค เจเจฐเจจ เจฆเฉ เจเจเจฟเจ เจฆเฉเจตเฉเจเจพเฅค
เจเจฆเฉเจ เจธเจพเจเจ เจฆเฉ เจเฉฑเจ เจจเจตเฉเจ เจธเฉฐเจธเจเจฐเจฃ เจฒเจ เจกเฉเจเจฐ เจเฉเจ เจฆเจพ เจจเจพเจฎ เจฌเจฆเจฒเจฟเจ เจจเจนเฉเจ เจเจพ เจธเจเจฆเจพ เจนเฉ, เจคเจพเจ เจธเจพเจจเฉเฉฐ เจ เจเฉ เจตเฉ เจเฉเจฌเจฐเจจเฉเจเจธ เจตเจฟเฉฑเจ เจคเจฌเจฆเฉเจฒเฉเจเจ เจฆเจพ เจตเจฐเจฃเจจ เจเจฐเจจเจพ เจชเจเจเจพ, เจจเจนเฉเจ เจคเจพเจ เจเจน เจจเจตเฉเจ เจเจฟเฉฑเจคเจฐ เจคเฉเจ เจเจชเจฒเฉเจเฉเจธเจผเจจ เจจเฉเฉฐ เจฆเฉเจฌเจพเจฐเจพ เจฒเจพเจเฉ เจจเจนเฉเจ เจเจฐเฉเจเจพ, เจเจฟเจเจเจเจฟ เจเจน เจเจฟเจธเฉ เจตเฉ เจคเจฌเจฆเฉเจฒเฉ เจจเฉเฉฐ เจจเฉเจเจฟเจธ เจจเจนเฉเจ เจเจฐเฉเจเจพ. เจคเฉเจจเจพเจคเฉ เจฎเฉเจจเฉเจซเฉเจธเจเฅค
เจตเจฟเจเจฒเจช โvm:ext-str digest=โ$DIGESTโ qbec เจฒเจ - เจคเฉเจนเจพเจจเฉเฉฐ jsonnet เจจเฉเฉฐ เจเฉฑเจ เจฌเจพเจนเจฐเฉ เจตเฉเจฐเฉเจเจฌเจฒ เจชเจพเจธ เจเจฐเจจ เจฆเฉ เจเจเจพเจเจผเจค เจฆเจฟเฉฐเจฆเจพ เจนเฉเฅค เจ เจธเฉเจ เจเจพเจนเฉเฉฐเจฆเฉ เจนเจพเจ เจเจฟ เจเจธ เจจเฉเฉฐ เจธเจพเจกเฉ เจเจชเจฒเฉเจเฉเจธเจผเจจ เจฆเฉ เจนเจฐเฉเจ เจฐเฉเจฒเฉเจเจผ เจฆเฉ เจจเจพเจฒ เจเจฒเฉฑเจธเจเจฐ เจตเจฟเฉฑเจ เจฎเฉเฉ เจคเฉเจจเจพเจค เจเฉเจคเจพ เจเจพเจตเฉเฅค เจ เจธเฉเจ เจนเฉเจฃ เจเฉเจ เจจเจพเจฎ เจฆเฉ เจตเจฐเจคเฉเจ เจจเจนเฉเจ เจเจฐ เจธเจเจฆเฉ เจนเจพเจ, เจเฉ เจนเฉเจฃ เจฌเจฆเจฒเจฟเจ เจจเจนเฉเจ เจเจพ เจธเจเจฆเจพ เจนเฉ, เจเจฟเจเจเจเจฟ เจธเจพเจจเฉเฉฐ เจเจฟเฉฑเจคเจฐ เจฆเฉ เจเฉฑเจ เจเจพเจธ เจธเฉฐเจธเจเจฐเจฃ เจจเจพเจฒ เจฌเฉฐเจจเฉเจนเจฃ เจฆเฉ เจฒเฉเฉ เจนเฉ เจ เจคเฉ เจเจฆเฉเจ เจเจน เจฌเจฆเจฒเจฆเจพ เจนเฉ เจคเจพเจ เจคเฉเจจเจพเจคเฉ เจจเฉเฉฐ เจเจฐเจฟเฉฑเจเจฐ เจเจฐเจจเจพ เจเจพเจนเฉเจฆเจพ เจนเฉเฅค
เจเฉฑเจฅเฉ เจธเจพเจจเฉเฉฐ เจเฉฑเจ เจกเจพเจเจเฉเจธเจ เจเจฟเฉฑเจคเจฐ เจจเฉเฉฐ เจเฉฑเจ เจซเจพเจเจฒ เจตเจฟเฉฑเจ เจธเฉเจฐเฉฑเจเจฟเจ
เจค เจเจฐเจจ เจฆเฉ เจเจพเจจเฉเจเฉ เจฆเฉ เจฏเฉเจเจคเจพ เจฆเฉเจเจฐเจพ เจฎเจฆเจฆ เจเฉเจคเฉ เจเจพเจตเฉเจเฉ (เจตเจฟเจเจฒเจช --digest-file)
เจซเจฟเจฐ เจ
เจธเฉเจ เจเจธ เจซเจพเจเจฒ เจจเฉเฉฐ เจเฉเจฐเจพเจเจธเจซเจฐ เจเจฐเจพเจเจเฉ เจ
เจคเฉ เจคเฉเจจเจพเจคเฉ เจฆเฉ เจธเจฎเฉเจ เจเจธเจจเฉเฉฐ เจชเฉเฉเจนเจพเจเจเฉเฅค
เจเจ เจธเจพเจกเฉ เจฒเจ เจฎเจพเจชเจฆเฉฐเจกเจพเจ เจจเฉเฉฐ เจ เจชเจกเฉเจ เจเจฐเฉเจ deploy/website/environments/base.libsonnet เจเฉ เจนเฉเจฃ เจเจธ เจคเจฐเฉเจนเจพเจ เจฆเจฟเจเจพเจ เจฆเฉเจตเฉเจเจพ:
{
components: {
website: {
name: 'example-docs',
image: 'registry.gitlab.com/kvaps/docs.example.org/website@' + std.extVar('digest'),
replicas: 1,
containerPort: 80,
servicePort: 80,
nodeSelector: {},
tolerations: [],
ingressClass: 'nginx',
domain: 'docs.example.org',
},
},
}
เจนเฉ เจเจฟเจ, เจนเฉเจฃ เจเฉเจ เจตเฉ เจตเจเจจเจฌเฉฑเจงเจคเจพ เจฎเจพเจธเจเจฐ เจฒเจ เจกเฉเจเจฐ เจเจฟเฉฑเจคเจฐ เจฆเฉ เจจเจฟเจฐเจฎเจพเจฃ เจจเฉเฉฐ เจธเจผเฉเจฐเฉ เจเจฐเจฆเจพ เจนเฉ เจตเฉเจฌเจธเจพเจเจ, เจ เจคเฉ เจซเจฟเจฐ เจเจธเจจเฉเฉฐ เจเฉเจฌเจฐเจจเฉเจเจธ เจตเจฟเฉฑเจ เจคเฉเจจเจพเจค เจเจฐเฉเฅค
เจธเจพเจกเฉ เจฌเจฆเจฒเจพเจ เจเจฐเจจ เจฒเจ เจจเจพ เจญเฉเฉฑเจฒเฉ:
git add .
git commit -m "Configure dynamic build"
เจ เจธเฉเจ เจฌเจพเจ เจฆ เจตเจฟเฉฑเจ เจเจพเจเจ เจเจฐเจพเจเจเฉ git เจงเฉฑเจเจพ เจธเจพเจจเฉเฉฐ เจเจธ เจคเจฐเฉเจนเจพเจ เจเฉเจ เจฆเฉเจเจฃเจพ เจเจพเจนเฉเจฆเจพ เจนเฉ:
เจฎเจพเจธเจเจฐ เจฒเจ เจชเจพเจเจชเจฒเจพเจเจจ เจฆเจพ เจธเจเฉเจฐเฉเจจเจธเจผเฉเจ
เจธเจฟเจงเจพเจเจค เจตเจฟเฉฑเจ, เจธเจพเจจเฉเฉฐ เจนเจฐ เจเฉฑเจ เจชเฉเจธเจผ เจฆเฉ เจจเจพเจฒ เจเจฟเจเจฒเฉเจฌ-เจฐเจจเจฐ เจจเฉเฉฐ เจฆเฉเจฌเจพเจฐเจพ เจคเฉเจจเจพเจค เจเจฐเจจ เจฆเฉ เจเจผเจฐเฉเจฐเจค เจจเจนเฉเจ เจนเฉ, เจเจฆเฉเจ เจคเฉฑเจ, เจฌเฉเจธเจผเจ, เจเจธเจฆเฉ เจธเฉฐเจฐเจเจจเจพ เจตเจฟเฉฑเจ เจเฉเจ เจตเฉ เจจเจนเฉเจ เจฌเจฆเจฒเจฟเจ เจนเฉ, เจเจ เจเจธเจจเฉเฉฐ เจ เฉเจ เจเจฐเฉเจ .gitlab-ci.yml:
deploy_gitlab_runner:
extends: .deploy_qbec_app
variables:
GIT_SUBMODULE_STRATEGY: normal
before_script:
- base64 -d "$GITCRYPT_KEY" | git-crypt unlock -
script:
- qbec apply default --root deploy/gitlab-runner --force:k8s-context __incluster__ --wait --yes
only:
changes:
- deploy/gitlab-runner/**/*
เจคเจฌเจฆเฉเจฒเฉเจเจ เจตเจฟเฉฑเจ เจคเจฌเจฆเฉเจฒเฉเจเจ เจฆเฉ เจจเจฟเจเจฐเจพเจจเฉ เจเจฐเจจ เจฆเฉ เจเจเจพเจเจผเจค เจฆเฉเจตเฉเจเจพ deploy/gitlab-runner/ เจ เจคเฉ เจธเจพเจกเฉ เจจเฉเจเจฐเฉ เจจเฉเฉฐ เจเจฆเฉเจ เจนเฉ เจเจพเจฒเฉ เจเจฐเฉเจเจพ เจเฉเจเจฐ เจเฉเจ เจนเฉเจตเฉ
เจธเจพเจกเฉ เจฌเจฆเจฒเจพเจ เจเจฐเจจ เจฒเจ เจจเจพ เจญเฉเฉฑเจฒเฉ:
git add .gitlab-ci.yml
git commit -m "Reduce gitlab-runner deploy"
git เจงเฉฑเจเจพ, เจเจน เจเฉเจ:
เจ เฉฑเจชเจกเฉเจ เจเฉเจคเฉ เจชเจพเจเจชเจฒเจพเจเจจ เจฆเจพ เจธเจเจฐเฉเจจเจธเจผเจพเจ
12. เจเจคเฉเจธเจผเฉเจฒ เจตเจพเจคเจพเจตเจฐเจฃ
เจเจน เจธเจพเจกเฉ เจชเจพเจเจชเจฒเจพเจเจจ เจจเฉเฉฐ เจเจคเฉเจธเจผเฉเจฒ เจตเจพเจคเจพเจตเจฐเจฃ เจจเจพเจฒ เจตเจฟเจญเจฟเฉฐเจจ เจฌเจฃเจพเจเจฃ เจฆเจพ เจธเจฎเจพเจ เจนเฉเฅค
เจชเจนเจฟเจฒเจพเจ, เจเจ เจจเฉเจเจฐเฉ เจจเฉเฉฐ เจ เจชเจกเฉเจ เจเจฐเฉเจ build_website เจธเจพเจกเฉ เจตเจฟเฉฑเจ .gitlab-ci.yml, เจเจธ เจคเฉเจ เจฌเจฒเจพเจ เจจเฉเฉฐ เจนเจเจพเจเจฃเจพ เจธเจฟเจฐเจซ, เจเฉ เจเจฟ Gitlab เจจเฉเฉฐ เจเจฟเจธเฉ เจตเฉ เจธเจผเจพเจเจพ เจฒเจ เจเจฟเจธเฉ เจตเฉ เจตเจเจจเจฌเฉฑเจงเจคเจพ 'เจคเฉ เจเจธ เจจเฉเฉฐ เจเจพเจฒเฉ เจเจฐเจจ เจฒเจ เจฎเจเจฌเฉเจฐ เจเจฐเฉเจเจพ:
build_website:
extends: .build_docker_image
variables:
GIT_SUBMODULE_STRATEGY: normal
script:
- mkdir -p $CI_PROJECT_DIR/artifacts
- /kaniko/executor --cache --context $CI_PROJECT_DIR --dockerfile $CI_PROJECT_DIR/dockerfiles/website/Dockerfile --destination $CI_REGISTRY_IMAGE/website:$CI_COMMIT_REF_NAME --digest-file $CI_PROJECT_DIR/artifacts/website.digest
artifacts:
paths:
- artifacts/
เจซเจฟเจฐ เจจเฉเจเจฐเฉ เจจเฉเฉฐ เจ เจชเจกเฉเจ เจเจฐเฉ deploy_website, เจเฉฑเจฅเฉ เจเฉฑเจ เจฌเจฒเจพเจ เจเฉเฉเฉ เจตเจพเจคเจพเจตเจฐเจฃ เจจเฉเฉฐ:
deploy_website:
extends: .deploy_qbec_app
environment:
name: prod
url: https://docs.example.org
script:
- DIGEST="$(cat artifacts/website.digest)"
- qbec apply default --root deploy/website --force:k8s-context __incluster__ --wait --yes --vm:ext-str digest="$DIGEST"
เจเจน Gitlab เจจเฉเฉฐ เจจเฉเจเจฐเฉ เจจเจพเจฒ เจเฉเฉเจจ เจฆเฉ เจเจเจพเจเจผเจค เจฆเฉเจตเฉเจเจพ เจชเฉเจธเจผเฉ เจตเจพเจคเจพเจตเจฐเจฃ เจ เจคเฉ เจเจธเจฆเฉ เจฒเจ เจธเจนเฉ เจฒเจฟเฉฐเจ เจชเฉเจฐเจฆเจฐเจธเจผเจฟเจค เจเจฐเฉเฅค
เจเจ เจนเฉเจฃ เจฆเฉ เจนเฉเจฐ เจจเฉเจเจฐเฉเจเจ เจเฉเฉเฉเจ:
deploy_website:
extends: .deploy_qbec_app
environment:
name: prod
url: https://docs.example.org
script:
- DIGEST="$(cat artifacts/website.digest)"
- qbec apply default --root deploy/website --force:k8s-context __incluster__ --wait --yes --vm:ext-str digest="$DIGEST"
deploy_review:
extends: .deploy_qbec_app
environment:
name: review/$CI_COMMIT_REF_NAME
url: http://$CI_ENVIRONMENT_SLUG.docs.example.org
on_stop: stop_review
script:
- DIGEST="$(cat artifacts/website.digest)"
- qbec apply review --root deploy/website --force:k8s-context __incluster__ --wait --yes --vm:ext-str digest="$DIGEST" --vm:ext-str subdomain="$CI_ENVIRONMENT_SLUG" --app-tag "$CI_ENVIRONMENT_SLUG"
only:
refs:
- branches
except:
refs:
- master
stop_review:
extends: .deploy_qbec_app
environment:
name: review/$CI_COMMIT_REF_NAME
action: stop
stage: deploy
before_script:
- git clone "$CI_REPOSITORY_URL" master
- cd master
script:
- qbec delete review --root deploy/website --force:k8s-context __incluster__ --yes --vm:ext-str digest="$DIGEST" --vm:ext-str subdomain="$CI_ENVIRONMENT_SLUG" --app-tag "$CI_ENVIRONMENT_SLUG"
variables:
GIT_STRATEGY: none
only:
refs:
- branches
except:
refs:
- master
when: manual
เจเจน เจฎเจพเจธเจเจฐ เจจเฉเฉฐ เจเฉฑเจก เจเฉ เจเจฟเจธเฉ เจตเฉ เจธเจผเจพเจเจพ เจตเจฟเฉฑเจ เจชเฉเจธเจผ เจเจฐเจจ 'เจคเฉ เจฒเจพเจเจ เจเฉเจคเฉ เจเจพเจฃเจเฉ เจ เจคเฉ เจธเจพเจเจ เจฆเฉ เจชเฉเจฐเฉเจตเจฟเจ เจธเฉฐเจธเจเจฐเจฃ เจจเฉเฉฐ เจคเฉเจจเจพเจค เจเจฐเจจเจเฉเฅค
เจ
เจธเฉเจ qbec เจฒเจ เจเฉฑเจ เจจเจตเจพเจ เจตเจฟเจเจฒเจช เจฆเฉเจเจฆเฉ เจนเจพเจ: --เจเจช-เจเฉเจ โ เจเจน เจคเฉเจนเจพเจจเฉเฉฐ เจเจชเจฒเฉเจเฉเจธเจผเจจ เจฆเฉ เจคเฉเจจเจพเจค เจธเฉฐเจธเจเจฐเจฃเจพเจ เจจเฉเฉฐ เจเฉเจ เจเจฐเจจ เจ
เจคเฉ เจธเจฟเจฐเจซเจผ เจเจธ เจเฉเจ เจฆเฉ เจ
เฉฐเจฆเจฐ เจเฉฐเจฎ เจเจฐเจจ เจฆเฉ เจเจเจพเจเจผเจค เจฆเจฟเฉฐเจฆเจพ เจนเฉ; เจเจฆเฉเจ Kubernetes เจตเจฟเฉฑเจ เจธเจฐเฉเจค เจฌเจฃเจพเจเจฃ เจ
เจคเฉ เจจเจธเจผเจ เจเจฐเจจ เจตเฉเจฒเฉ, qbec เจธเจฟเจฐเจซเจผ เจเจนเจจเจพเจ เจจเจพเจฒ เจเฉฐเจฎ เจเจฐเฉเจเจพเฅค
เจเจธ เจคเจฐเฉเจเฉ เจจเจพเจฒ เจ
เจธเฉเจ เจนเจฐเฉเจ เจธเจฎเฉเจเจฟเจ เจฒเจ เจเฉฑเจ เจตเฉฑเจเจฐเจพ เจตเจพเจคเจพเจตเจฐเจฃ เจจเจนเฉเจ เจฌเจฃเจพ เจธเจเจฆเฉ เจนเจพเจ, เจชเจฐ เจธเจฟเจฐเจซเจผ เจเจธเฉ เจจเฉเฉฐ เจฆเฉเจฌเจพเจฐเจพ เจตเจฐเจค เจธเจเจฆเฉ เจนเจพเจเฅค
เจเฉฑเจฅเฉ เจ เจธเฉเจ เจตเฉ เจตเจฐเจคเจฆเฉ เจนเจพเจ qbec เจธเจฎเฉเจเจฟเจ เจฒเจพเจเฉ เจเจฐเฉ, เจฆเฉ เจฌเจเจพเจ qbec เจกเจฟเจซเจพเจฒเจ เจฒเจพเจเฉ เจเจฐเฉ - เจเจน เจฌเจฟเจฒเจเฉเจฒ เจเจน เจชเจฒ เจนเฉ เจเจฆเฉเจ เจ เจธเฉเจ เจเจชเจฃเฉ เจตเจพเจคเจพเจตเจฐเจจ (เจธเจฎเฉเจเจฟเจ เจ เจคเฉ เจฎเฉเจฒ) เจฒเจ เจ เฉฐเจคเจฐเจพเจ เจฆเจพ เจตเจฐเจฃเจจ เจเจฐเจจ เจฆเฉ เจเฉเจธเจผเจฟเจธเจผ เจเจฐเจพเจเจเฉ:
เจเฉเฉเฉ เจธเจฎเฉเจเจฟเจ เจตเจฟเฉฑเจ เจตเจพเจคเจพเจตเจฐเจฃ deploy/website/qbec.yaml
spec:
environments:
review:
defaultNamespace: docs
server: https://kubernetes.example.org:8443
เจซเจฟเจฐ เจ เจธเฉเจ เจเจธ เจตเจฟเฉฑเจ เจเฉเจธเจผเจฃเจพ เจเจฐเจพเจเจเฉ deploy/website/params.libsonnet:
local env = std.extVar('qbec.io/env');
local paramsMap = {
_: import './environments/base.libsonnet',
default: import './environments/default.libsonnet',
review: import './environments/review.libsonnet',
};
if std.objectHas(paramsMap, env) then paramsMap[env] else error 'environment ' + env + ' not defined in ' + std.thisFile
เจ เจคเฉ เจเจธเจฆเฉ เจฒเจ เจเจธเจเจฎ เจชเฉเจฐเจพเจฎเฉเจเจฐ เจฒเจฟเจเฉ deploy/website/environments/review.libsonnet:
// this file has the param overrides for the default environment
local base = import './base.libsonnet';
local slug = std.extVar('qbec.io/tag');
local subdomain = std.extVar('subdomain');
base {
components+: {
website+: {
name: 'example-docs-' + slug,
domain: subdomain + '.docs.example.org',
},
},
}
เจเจ เจเฉเจฌเฉ 'เจคเฉ เจตเฉ เจกเฉเฉฐเจเจพเจ เจจเจพเจฒ เจตเจฟเจเจพเจฐ เจเจฐเฉเจ stop_review, เจเจน เจเจฆเฉเจ เจเจพเจฒเฉ เจนเฉ เจเจพเจตเฉเจเจพ เจเจฆเฉเจ เจธเจผเจพเจเจพ เจจเฉเฉฐ เจฎเจฟเจเจพเจเจ เจเจพเจเจฆเจพ เจนเฉ เจ
เจคเฉ เจเจธ เจฒเจ เจเจฟเจเจฒเฉเจฌ เจเฉเฉฑเจเจเจเจ เจเจฐเจจ เจฆเฉ เจเฉเจธเจผเจฟเจธเจผ เจจเจพ เจเจฐเฉ เจเจธเจฆเฉ เจตเจฐเจคเฉเจ เจเฉเจคเฉ เจเจพเจเจฆเฉ เจนเฉ GIT_STRATEGY: เจเฉเจ เจจเจนเฉเจ, เจฌเจพเจ
เจฆ เจตเจฟเฉฑเจ เจ
เจธเฉเจ เจเจฒเฉเจจ เจเจฐเจฆเฉ เจนเจพเจ เจฎเจพเจธเจเจฐ- เจฌเฉเจฐเจพเจเจ เจ
เจคเฉ เจเจธเจฆเฉ เจฆเฉเจเจฐเจพ เจธเจฎเฉเจเจฟเจ เจจเฉเฉฐ เจฎเจฟเจเจพเจ.
เจเจน เจฅเฉเฉเจพ เจเจฒเจเจฃ เจตเจพเจฒเจพ เจนเฉ, เจชเจฐ เจฎเฉเจจเฉเฉฐ เจ
เจเฉ เจคเฉฑเจ เจเฉเจ เจนเฉเจฐ เจธเฉเฉฐเจฆเจฐ เจคเจฐเฉเจเจพ เจจเจนเฉเจ เจฎเจฟเจฒเจฟเจ เจนเฉเฅค
เจเฉฑเจ เจตเจฟเจเจฒเจชเจ เจตเจฟเจเจฒเจช เจนเจฐเฉเจ เจธเจฎเฉเจเจฟเจ เจจเฉเฉฐ เจเฉฑเจ เจนเฉเจเจฒ เจจเฉเจฎเจธเจชเฉเจธ เจตเจฟเฉฑเจ เจคเฉเจจเจพเจค เจเจฐเจจเจพ เจนเฉเจตเฉเจเจพ, เจเจฟเจธเจจเฉเฉฐ เจนเจฎเฉเจธเจผเจพ เจชเฉเจฐเฉ เจคเจฐเฉเจนเจพเจ เจขเจพเจนเจฟเจ เจเจพ เจธเจเจฆเจพ เจนเฉเฅค
เจธเจพเจกเฉ เจฌเจฆเจฒเจพเจ เจเจฐเจจ เจฒเจ เจจเจพ เจญเฉเฉฑเจฒเฉ:
git add .
git commit -m "Enable automatic review"
git เจงเฉฑเจเจพ, git checkout -b เจเฉเจธเจ, git เจชเฉเจธเจผ เจฎเฉเจฒ เจเฉเจธเจ, เจเฉเจ:
เจเจฟเจเจฒเฉเจฌ เจตเจฟเฉฑเจ เจฌเจฃเจพเจ เจตเจพเจคเจพเจตเจฐเจจ เจฆเจพ เจธเจเฉเจฐเฉเจจเจธเจผเฉเจ
เจธเจญ เจเฉเจ เจเฉฐเจฎ เจเจฐ เจฐเจฟเจนเจพ เจนเฉ? - เจฌเจนเฉเจค เจตเจงเฉเจ, เจธเจพเจกเฉ เจเฉเจธเจ เจธเจผเจพเจเจพ เจจเฉเฉฐ เจฎเจฟเจเจพเจ: git เจเฉเจเจเจเจ เจฎเจพเจธเจเจฐ, git เจชเฉเจธเจผ เจฎเฉเจฒ: เจเฉเจธเจ, เจ เจธเฉเจ เจเจพเจเจ เจเจฐเจฆเฉ เจนเจพเจ เจเจฟ เจตเจพเจคเจพเจตเจฐเจฃ เจฎเจฟเจเจพเจเจฃ เจฆเฉเจเจ เจจเฉเจเจฐเฉเจเจ เจจเฉ เจฌเจฟเจจเจพเจ เจเจฟเจธเฉ เจคเจฐเฉเฉฑเจเฉ เจฆเฉ เจเฉฐเจฎ เจเฉเจคเจพ เจนเฉเฅค
เจเฉฑเจฅเฉ เจฎเฉเจ เจคเฉเจฐเฉฐเจค เจธเจชเฉฑเจธเจผเจ เจเจฐเจจเจพ เจเจพเจนเจพเจเจเจพ เจเจฟ เจเจฟเจธเฉ เจชเฉเจฐเฉเจเฉเจเจ เจตเจฟเฉฑเจ เจเฉเจ เจตเฉ เจกเจฟเจตเฉเจฒเจชเจฐ เจธเจผเจพเจเจพเจตเจพเจ เจฌเจฃเจพ เจธเจเจฆเจพ เจนเฉ, เจเจน เจฌเจฆเจฒ เจตเฉ เจธเจเจฆเจพ เจนเฉ .gitlab-ci.yml เจซเจพเจเจฒ เจ เจคเฉ เจเจเจธเฉเจธ เจเฉเจชเจค เจตเฉเจฐเฉเจเจฌเจฒ.
เจเจธ เจฒเจ, เจเจน เจเจผเฉเจฐเจฆเจพเจฐ เจธเจฟเจซเจพเจฐเจธเจผ เจเฉเจคเฉ เจเจพเจเจฆเฉ เจนเฉ เจเจฟ เจเจนเจจเจพเจ เจฆเฉ เจตเจฐเจคเฉเจ เจธเจฟเจฐเจซเจผ เจธเฉเจฐเฉฑเจเจฟเจ เจค เจธเจผเจพเจเจพเจตเจพเจ เจฒเจ เจนเฉ เจเฉเจคเฉ เจเจพเจตเฉ, เจเจฆเจพเจนเจฐเจจ เจฒเจ เจตเจฟเฉฑเจ เจฎเจพเจธเจเจฐ, เจเจพเจ เจนเจฐเฉเจ เจตเจพเจคเจพเจตเจฐเจฃ เจฒเจ เจตเฉเจฐเฉเจเจฌเจฒ เจฆเจพ เจเฉฑเจ เจตเฉฑเจเจฐเจพ เจธเฉเฉฑเจ เจฌเจฃเจพเจเฅค
13. เจเจชเจธ เจฆเฉ เจธเจฎเฉเจเจฟเจ เจเจฐเฉ
เจเจนเจจเจพเจ เจฌเจเจจเจพเจ เจจเฉเฉฐ เจฆเจฟเจเจพเจ เจฆเฉเจฃ เจฒเจ, เจคเฉเจนเจพเจจเฉเฉฐ เจเฉฑเจ เจซเจพเจเจฒ เจฌเจฃเจพเจเจฃ เจฆเฉ เจฒเฉเฉ เจนเฉ .gitlab/route-map.yml เจ เจคเฉ เจเจธ เจตเจฟเฉฑเจ เจธเจพเจฐเฉ เจฎเจพเจฐเจ เจชเจฐเจฟเจตเจฐเจคเจจ เจฆเจพ เจตเจฐเจฃเจจ เจเจฐเฉ; เจธเจพเจกเฉ เจเฉเจธ เจตเจฟเฉฑเจ เจเจน เจฌเจนเฉเจค เจธเจฐเจฒ เจนเฉเจตเฉเจเจพ:
# Indices
- source: /content/(.+?)_index.(md|html)/
public: '1'
# Pages
- source: /content/(.+?).(md|html)/
public: '1/'
เจธเจพเจกเฉ เจฌเจฆเจฒเจพเจ เจเจฐเจจ เจฒเจ เจจเจพ เจญเฉเฉฑเจฒเฉ:
git add .gitlab/
git commit -m "Enable review apps"
git เจงเฉฑเจเจพ, เจ เจคเฉ เจเจพเจเจ เจเจฐเฉ:
เจธเจฎเฉเจเจฟเจ เจเจช เจฌเจเจจ เจฆเจพ เจธเจเฉเจฐเฉเจจเจธเจผเฉเจ
เจเฉฐเจฎ เจนเฉ เจเจฟเจ เจนเฉ!
เจชเฉเจฐเฉเจเฉเจเจ เจธเจฐเฉเจค:
- Gitlab 'เจคเฉ:
https://gitlab.com/kvaps/docs.example.org - GitHub 'เจคเฉ:
https://github.com/kvaps/docs.example.org
เจคเฉเจนเจพเจกเฉ เจงเจฟเจเจจ เจฒเจ เจงเฉฐเจจเจตเจพเจฆ, เจฎเฉเจจเฉเฉฐ เจเจฎเฉเจฆ เจนเฉ เจเจฟ เจคเฉเจนเจพเจจเฉเฉฐ เจเจน เจชเจธเฉฐเจฆ เจเจเจ เจนเฉเจตเฉเจเจพ
เจธเจฐเฉเจค: www.habr.com