Hello! เบชเบฒเบเบฒเบเบธเบเบชเบปเบกเบเบฑเบ (aka deploy preview, review app) - เบเบตเปเปเบกเปเบเปเบงเบฅเบฒเบเบตเปเบเปเปเบเบฝเบเปเบเปเบชเบฒเบเบฒเบเบปเปเบเบชเบฐเบเบฑเบเบเบทเบเบเปเบฒเปเบเปเบเป, เปเบเปเบเบฑเบเปเบเปเบฅเบฐเบเปเบฒเบฎเปเบญเบเบเปเบเบถเบเปเบเบซเบฒ URL เบเบตเปเปเบเบฑเบเปเบญเบเบฐเบฅเบฑเบ. เบเปเบฒเบเบชเบฒเบกเบฒเบเบเบงเบเปเบเบดเปเบเบงเปเบฒเบฅเบฐเบซเบฑเบเปเบฎเบฑเบเบงเบฝเบเบขเบนเปเปเบเบชเบฐเบเบฒเบเปเบงเบเบฅเปเบญเบกเบเบฒเบเบเบฐเบฅเบดเบ; เปเบเบเบฐเบเบฐเบเบตเปเบเปเบฒเบเบเปเบฒเบฅเบฑเบเปเบฎเบฑเบเบงเบฝเบเบขเบนเปเปเบเบเปเบฒเบฎเปเบญเบเบเปเบเบฒเบเบเบถเบ, เปเบเปเบฅเบฐ commit เปเบซเบกเป deploy เปเบเบเบฑเบเบเบธเบเบฑเบเบชเปเบฒเบฅเบฑเบเบฅเบฐเบซเบฑเบเปเบเบปเปเบฒเบเบฐเบเบทเบเบฅเบถเบ, เปเบฅเบฐ deploy เปเบซเบกเปเบชเปเบฒเบฅเบฑเบเบฅเบฐเบซเบฑเบเปเบซเบกเปเปเบกเปเบ rolled เบญเบญเบ. เบเปเบฒเบเบฒเบกเบญเบฒเบเบเบฐเปเบเบตเบเบเบทเปเบเปเบกเบทเปเบญเบเปเบฒเบเบฅเบงเบกเปเบญเบปเบฒเบเปเบฒเบฎเปเบญเบเบเปเบเบถเบเปเบเบปเปเบฒเปเบเปเบเบชเบฒเบเบฒเบเบปเปเบเบชเบฐเบเบฑเบ. เบเปเบฒเบเบเปเปเบเปเบญเบเบเบฒเบเบชเบฒเบเบฒเบเบธเบเบชเบปเบกเบเบฑเบเบญเบตเบเบเปเปเปเบ, เปเบเปเบเบฑเบเบเบฐเบเบฒเบเบญเบ Kubernetes เบเบฑเบเบขเบนเปเปเบเบเบธเปเบก.
เปเบเบตเปเบกเปเบเบตเบกเบเปเบฝเบงเบเบฑเบเบชเบฒเบเบฒเบเบธเบเบชเบปเบกเบเบฑเบ
เบงเบดเบเบตเปเบถเปเบเปเบเบเบฒเบเบชเปเบฒเบเบชเบฒเบเบฒเบเบธเบเบชเบปเบกเบเบฑเบเปเบ Kubernetes เปเบกเปเบเบเบฒเบเปเบเป namespaces. เปเบเบชเบฑเปเบ, เบเบฒเบเบเบฑเปเบเบเปเบฒเบเบฒเบเบเบฐเบฅเบดเบเปเบเบดเปเบเบเบทเบงเปเบฒ:
kind: Namespace
apiVersion: v1
metadata:
name: habr-back-end
...
kind: Deployment
apiVersion: apps/v1
metadata:
namespace: habr-back-end
spec:
replicas: 3
...
เบชเปเบฒเบฅเบฑเบเบชเบฒเบเบฒเบเบธเบเบชเบปเบกเบเบฑเบ, namespace เบเบทเบเบชเปเบฒเบเบเบถเปเบเบเปเบงเบเบเบปเบงเบฅเบฐเบเบธเบเบญเบเบกเบฑเบ (เบเบปเบงเบขเปเบฒเบ, เบเปเบฒเบเบงเบเบเบฒเบเบฎเปเบญเบเบเปเบเบฒเบเบเบถเบ) เปเบฅเบฐเบเบฒเบเบเบฐเปเบเบเบเบญเบเบเปเบฒเบเปเบฒเบซเบเปเบฒ / postfix (เบเบปเบงเบขเปเบฒเบ, -pr-):
kind: Namespace
apiVersion: v1
metadata:
name: habr-back-end-pr-17
...
kind: Deployment
apiVersion: apps/v1
metadata:
namespace: habr-back-end-pr-17
spec:
replicas: 1
...
เปเบเบเบเบปเปเบงเปเบ, เบเปเบฒเบเบฐเปเบเบปเปเบฒเปเบเปเบเบฝเบ เบเบนเปเบเบฐเบเบญเบเบเบฒเบ Kubernetes (เปเบญเบฑเบเบเบฅเบดเปเบเบเบฑเบเบเบตเปเบกเบตเบเบฒเบเปเบเบปเปเบฒเปเบเบดเบเบเบฑเบเบเบฐเบเบฒเบเบญเบเบเบญเบเบเบธเปเบก),
$ kubectl get pods --all-namespaces | grep -e "-pr-"
NAMESPACE ... AGE
habr-back-end-pr-264 ... 4d8h
habr-back-end-pr-265 ... 5d7h
เบเปเบฒเบเบชเบฒเบกเบฒเบเบญเปเบฒเบเบเปเบฝเบงเบเบฑเบเบงเบดเบเบตเบเบฒเบเบเบฐเบเบดเบเบฑเบเบชเบฒเบเบฒเบเบธเบเบเบฐเบชเบปเบกเบเบฑเบเปเบเบฑเบเบเบธเปเบก
เปเบฎเบเบเบฐเบเบธเปเบ
เปเบซเปเปเบเบดเปเบเบขเบนเปเปเบเบงเบปเบเบเบญเบเบเบฒเบเบฎเปเบญเบเบเปเบเบฒเบเบเบถเบเปเบเบเบเบปเบเบเบฐเบเบดเบเบตเปเบกเบตเบเบฒเบเปเบเบทเปเบญเบกเปเบเบเบขเปเบฒเบเบเปเปเปเบเบทเปเบญเบ (continuous integration
):
- เบเบงเบเปเบฎเบปเบฒเบเบนเปเบเปเบฒเบซเบกเบฑเปเบเบชเบฑเบเบเบฒเปเบซเบกเปเบเบฑเบเบชเบฒเบเบฒ.
- เปเบเบเบฒเบเบเปเปเบชเปเบฒเบ, linters เปเบฅเบฐ / เบซเบผเบทเบเบฒเบเบเบปเบเบชเบญเบเปเบกเปเบเบเปเบฒเปเบเบตเบเบเบฒเบ.
- เบเบฒเบเบเบฑเปเบเบเปเบฒเบเบฒเบเบฎเปเบญเบเบเปเบเบฒเบเบเบถเบ Kubernetes เปเบกเปเบเบเบทเบเบชเปเบฒเบเบเบถเปเบเปเบเบเบฑเบเบเบต (เบเบปเบงเบขเปเบฒเบ, เบเบปเบงเปเบฅเบเบเบญเบเบกเบฑเบเบเบทเบเปเบชเปเปเบเบปเปเบฒเปเบเปเบเปเบกเปเปเบเบเบชเปเบฒเปเบฅเบฑเบเบฎเบนเบ).
- เบเบฒเบเบเปเบฒเปเบเป kubectl เบเปเบฒเปเบเป, เบเบฒเบเบเบฑเปเบเบเปเบฒเบเบฐเบเบทเบเปเบเบตเปเบกเปเบชเปเบเบธเปเบก (เบเบฑเบเปเบเป).
- เบเบฒเบเบฎเปเบญเบเบเปเบเบถเบเบเบทเบเบฅเบงเบกเปเบเบปเปเบฒเปเบเปเบเบชเบฒเบเบฒเปเบกเปเบเบปเบ.
เปเบเบเบฐเบเบฐเบเบตเปเบเปเบฒเบเบเปเบฒเบฅเบฑเบเปเบฎเบฑเบเบงเบฝเบเบขเบนเปเปเบเบเปเบฒเบฎเปเบญเบเบเปเบเบฒเบเบเบถเบ, เปเบเปเบฅเบฐเบเปเบฒเบซเบกเบฑเปเบเบชเบฑเบเบเบฒเปเบซเบกเปเบเบตเปเบเบฐเบเปเบฒเปเบเปเบเปเปเบเบเบฑเบเบเบธเบเบฑเบเบชเปเบฒเบฅเบฑเบเบฅเบฐเบซเบฑเบเปเบเบปเปเบฒเบเบฐเบเบทเบเบฅเบถเบเบเบดเปเบก, เปเบฅเบฐเบเบฒเบเบเปเบฒเปเบเปเปเบซเบกเปเบชเปเบฒเบฅเบฑเบเบฅเบฐเบซเบฑเบเปเบซเบกเปเปเบกเปเบ rolled เบญเบญเบ. เปเบเปเปเบกเบทเปเบญเบเบฒเบเบฎเปเบญเบเบเปเบเบฒเบเบเบถเบเปเบเปเบเบทเบเบฅเบงเบกเปเบเบปเปเบฒเปเบเปเบเบชเบฒเบเบฒเปเบกเปเบเบปเบ, เบกเบตเบเบฝเบเปเบเปเบชเบฒเบเบฒเปเบกเปเบเบปเบเปเบเบปเปเบฒเบเบฑเปเบเบเบตเปเบเบฐเบเบทเบเบชเปเบฒเบเบเบถเปเบ. เบเบฑเปเบเบเบฑเปเบ, เบกเบฑเบเบเบฐเบเบปเบเบงเปเบฒเบเบงเบเปเบฎเบปเบฒเปเบเปเบฅเบทเบกเปเบฅเปเบงเบเปเบฝเบงเบเบฑเบเบเบฒเบเบฎเปเบญเบเบเปเบเบฒเบเบเบถเบ, เปเบฅเบฐเบเบฑเบเบเบฐเบเบฒเบเบญเบ Kubernetes เบเบญเบเบกเบฑเบเบเบฑเบเบขเบนเปเปเบเบเบธเปเบก.
เบงเบดเบเบตเปเบเป
เบเบดเบเบเบฑเปเบเปเบเบเบเบฒเบเบเปเบงเบเบเปเบฒเบชเบฑเปเบเบเปเบฒเบเบฅเบธเปเบกเบเบตเป:
$ kubectl apply -f https://raw.githubusercontent.com/dmytrostriletskyi/stale-feature-branch-operator/master/configs/production.yml
เบชเปเบฒเบเปเบเบฅเปเบเบตเปเบกเบตเปเบเบทเปเบญเบซเบฒเบเปเปเปเบเบเบตเปเปเบฅเบฐเบเบดเบเบเบฑเปเบเบเปเบฒเบ kubectl apply -f
:
apiVersion: feature-branch.dmytrostriletskyi.com/v1
kind: StaleFeatureBranch
metadata:
name: stale-feature-branch
spec:
namespaceSubstring: -pr-
afterDaysWithoutDeploy: 3
Parameter namespaceSubstring เบเปเบญเบเบเบฒเบเปเบเบทเปเบญเบเบฑเปเบเบเบญเบ namespaces เบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบถเบเบเปเบฒเบฎเปเบญเบเบเปเบเบฒเบ namespaces เบญเบทเปเบเป. เบเบปเบงเบขเปเบฒเบ, เบเปเบฒเบเบธเปเบกเบกเบต namespaces เบเปเปเปเบเบเบตเป: habr-back-end
, habr-front-end
, habr-back-end-pr-17
, habr-back-end-pr-33
, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบเบนเปเบชเบฐเบซเบกเบฑเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเบฅเบถเบเบเบฐเปเบเบฑเบ habr-back-end-pr-17
, habr-back-end-pr-33
.
Parameter afterdaysWithoutDeploy เบเปเบญเบเบเบฒเบเบฅเบถเบ namespaces เปเบเบปเปเบฒ. เบเบปเบงเบขเปเบฒเบ, เบเปเบฒ namespace เบเบทเบเบชเปเบฒเบเบเบถเปเบ 3 ะดะฝั 1 ัะฐั
เบเบฑเบเบเบทเบเปเบเบเปเบญเบ, เปเบฅเบฐเบเบปเบงเบเปเบฒเบเบปเบเบเบฒเบเบเบตเปเปเบซเปเปเบซเบฑเบ 3 ะดะฝั
, namespace เบเบตเปเบเบฐเบเบทเบเบฅเบถเบ. เบกเบฑเบเบเบฑเบเปเบฎเบฑเบเบงเบฝเบเปเบเบเบดเบเบเบฒเบเบเบปเบเบเบฑเบเบเปเบฒเบกเบเปเบฒ namespace เบเบทเบเบชเปเบฒเบเบเบถเปเบ 2 ะดะฝั 23 ัะฐัะฐ
เบเบฑเบเบเบทเบเปเบเบเปเบญเบ, เปเบฅเบฐเบเบปเบงเบเปเบฒเบเบปเบเบเบฒเบเบเบตเปเปเบซเปเปเบซเบฑเบ 3 ะดะฝั
, namespace เบเบตเปเบเบฐเบเปเปเบเบทเบเบฅเบถเบ.
เบกเบตเบเบปเบงเบเปเบฒเบเบปเบเบเบฒเบเปเบเบตเปเบกเปเบเบตเบกเบซเบเบถเปเบ, เบกเบฑเบเปเบเบฑเบเบเบงเบฒเบกเบฎเบฑเบเบเบดเบเบเบญเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเบชเบฐเปเบเบ namespaces เบเบฑเบเบซเบกเบปเบเปเบฅเบทเปเบญเบเปเปเบฅเบฐเบเบงเบเปเบเบดเปเบเบชเปเบฒเบฅเบฑเบเบกเบทเปเปเบเบเบเปเปเบกเบตเบเบฒเบเบเปเบฒเปเบเป - เบเบงเบโเบชเบญเบโเบเบธเบโเบเบฒโเบเบตโ. เปเบเบเบเปเบฒเปเบฅเบตเปเบกเบเบปเปเบเบกเบฑเบเปเบเบปเปเบฒเบเบฑเบ 30 ะผะธะฝััะฐะผ
.
เบงเบดเบเบตเบเบฒเบเปเบฎเบฑเบเบงเบฝเบเบเบตเป
เปเบโเบเบฒเบโเบเบฐโเบเบดโเบเบฑเบโ, เบเปเบฒเบโเบเบฐโเบเปเบญเบโเบเบฒเบโ:
Docker เบชเปเบฒเบฅเบฑเบเบเบฒเบเปเบฎเบฑเบเบงเบฝเบเบขเบนเปเปเบเบชเบฐเบเบฒเบเปเบงเบเบฅเปเบญเบกเบเบตเปเปเบเบเบเปเบฝเบง.เบกเบดเบเบดเบเบดเบ เบเบฐเบเบปเบเบเบธเปเบก Kubernetes เบขเบนเปเปเบเบเปเบญเบเบเบดเปเบ.kubectl - เบเบฒเบเปเบเปเบเบญเบเปเบชเบฑเปเบเบเปเบฒเบชเบฑเปเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบธเปเบกเบเบญเบเบเบธเปเบก.
เบเบงเบเปเบฎเบปเบฒเบเบปเบเบเบธเปเบก Kubernetes เบขเบนเปเปเบเบเปเบญเบเบเบดเปเบ:
$ minikube start --vm-driver=docker
minikube v1.11.0 on Darwin 10.15.5
Using the docker driver based on existing profile.
Starting control plane node minikube in cluster minikube.
เบฅเบฐเบเบธเบงเปเบฒ kubectl
เปเบเปเบเบธเปเบกเบเปเบญเบเบเบดเปเบเบเบฒเบกเบเปเบฒเปเบฅเบตเปเบกเบเบปเปเบ:
$ kubectl config use-context minikube
Switched to context "minikube".
เบเบฒเบงเปเบซเบฅเบเบเบฒเบเบเบฑเปเบเบเปเบฒเบชเปเบฒเบฅเบฑเบเบชเบฐเบเบฒเบเปเบงเบเบฅเปเบญเบกเบเบฒเบเบเบฐเบฅเบดเบ:
$ curl https://raw.githubusercontent.com/dmytrostriletskyi/stale-feature-branch-operator/master/configs/production.yml > stale-feature-branch-production-configs.yml
เบเบฑเบเบเบฑเปเบเปเบเปเบเบฒเบเบเบฑเปเบเบเปเบฒเบเบฒเบเบเบฐเบฅเบดเบเบเบทเบเบเบฑเปเบเบเปเบฒเปเบเบทเปเบญเบเบงเบเปเบเบดเปเบ namespace เปเบเบปเปเบฒ, เปเบฅเบฐเบเบธเปเบกเบเบตเปเบชเปเบฒเบเบเบถเปเบเปเบซเบกเปเบเบญเบเบเบงเบเปเบฎเบปเบฒเบเปเปเบกเบตเบเบงเบเบกเบฑเบ, เบเบงเบเปเบฎเบปเบฒเบเบฐเบเปเบฝเบเบเบปเบงเปเบเบชเบฐเบเบฒเบเปเบงเบเบฅเปเบญเบก. IS_DEBUG
เบชเบธเบ true
. เบเปเบงเบเบเปเบฒเบเบตเปเบเบฒเบฅเบฒเบกเบดเปเบเบต afterDaysWithoutDeploy
เบเปเปโเปเบเปโเบเบทเบโเปเบญเบปเบฒโเปเบเบปเปเบฒโเปเบโเบเบฑเบโเบเบตโเปเบฅเบฐ namespaces เบเปเปโเปเบเปโเบเบทเบโเบเบงเบโเบชเบญเบโเบชเปเบฒโเบฅเบฑเบโเบกเบทเปโเปเบเบโเบเปเปโเบกเบตโเบเบฒเบโเบเปเบฒโเปเบเปโ, เบเบฝเบโเปเบเปโเบชเปเบฒโเบฅเบฑเบโเบเบฒเบโเปเบเบตเบโเบเบถเปเบโเบเบญเบ substring (-pr-
).
เบเปเบฒเปเบเบปเปเบฒเบขเบนเป Linux
:
$ sed -i 's|false|true|g' stale-feature-branch-production-configs.yml
เบเปเบฒเปเบเบปเปเบฒเบขเบนเป macOS
:
$ sed -i "" 's|false|true|g' stale-feature-branch-production-configs.yml
เบเบฒเบโเบเบดเบโเบเบฑเปเบโเปเบเบโเบเบฒเบโ:
$ kubectl apply -f stale-feature-branch-production-configs.yml
เบเบฒเบเบเบงเบเบชเบญเบเบงเปเบฒเบเบฑเบเบเบฐเบเบฒเบเบญเบเปเบเปเบเบฒเบเบปเบเบขเบนเปเปเบเบเบธเปเบก StaleFeatureBranch
:
$ kubectl api-resources | grep stalefeaturebranches
NAME ... APIGROUP ... KIND
stalefeaturebranches ... feature-branch.dmytrostriletskyi.com ... StaleFeatureBranch
เบเบงเบเปเบฎเบปเบฒเบเบงเบเปเบเบดเปเบเบงเปเบฒเบเบปเบงเบเบฐเบเบดเบเบฑเบเบเบฒเบเปเบเปเบเบฒเบเบปเบเบขเบนเปเปเบเบเบธเปเบก:
$ kubectl get pods --namespace stale-feature-branch-operator
NAME ... STATUS ... AGE
stale-feature-branch-operator-6bfbfd4df8-m7sch ... Running ... 38s
เบเปเบฒเบเปเบฒเบเปเบเบดเปเบเบเบฑเบเบเบถเบเบเบญเบเบกเบฑเบ, เบกเบฑเบเบเปเบญเบกเบเบตเปเบเบฐเบเบธเบเปเบเปเบเบเบฑเบเบเบฐเบเบฒเบเบญเบ StaleFeatureBranch
:
$ kubectl logs stale-feature-branch-operator-6bfbfd4df8-m7sch -n stale-feature-branch-operator
... "msg":"Operator Version: 0.0.1"}
...
... "msg":"Starting EventSource", ... , "source":"kind source: /, Kind="}
... "msg":"Starting Controller", ...}
... "msg":"Starting workers", ..., "worker count":1}
เบเบงเบเปเบฎเบปเบฒเบเบดเบเบเบฑเปเบเบเปเบญเบก fixtures
(เบเบฒเบเบเบฑเปเบเบเปเบฒเบเบตเปเปเบฎเบฑเบเปเบฅเปเบงเบชเปเบฒเบฅเบฑเบเบเบฒเบเบชเปเบฒเบเปเบเบเบเปเบฒเบฅเบญเบเบเบฑเบเบเบฐเบเบฒเบเบญเบเบเบธเปเบก) เบชเปเบฒเบฅเบฑเบเบเบฑเบเบเบฐเบเบฒเบเบญเบ StaleFeatureBranch
:
$ kubectl apply -f https://raw.githubusercontent.com/dmytrostriletskyi/stale-feature-branch-operator/master/fixtures/stale-feature-branch.yml
เบเบฒเบโเบเบฑเปเบโเบเปเบฒโเบชเบฐโเปเบเบโเปเบซเปโเปเบซเบฑเบโเบเบฒเบโเบเบปเปเบโเบซเบฒโเบชเปเบฒโเบฅเบฑเบ namespaces เบเบฑเบ substring เปเบเบฑเบโ -pr-
เบเบธเบเปเบเบฑเปเบ 1 ะผะธะฝััั
.:
apiVersion: feature-branch.dmytrostriletskyi.com/v1
kind: StaleFeatureBranch
metadata:
name: stale-feature-branch
spec:
namespaceSubstring: -pr-
afterDaysWithoutDeploy: 1
checkEveryMinutes: 1
เบเบนเปเบเบฐเบเบญเบเบเบฒเบเปเบเปเบเบญเบเบชเบฐเบซเบเบญเบเปเบฅเบฐเบเปเบญเบกเบเบตเปเบเบฐเบเบงเบเบชเบญเบ namespaces:
$ kubectl logs stale-feature-branch-operator-6bfbfd4df8-m7sch -n stale-feature-branch-operator
... "msg":"Stale feature branch is being processing.","namespaceSubstring":"-pr-","afterDaysWithoutDeploy":1,"checkEveryMinutes":1,"isDebug":"true"}
เบเบดเบเบเบฑเปเบ fixtures
, เบเบฐเบเบญเบเบเปเบงเบเบชเบญเบ namespaces (project-pr-1
, project-pr-2
) เปเบฅเบฐโเปเบเบปเบฒโเปเบเบปเปเบฒโ deployments
, services
, ingress
, เปเบฅเบฐเบญเบทเปเบเป:
$ kubectl apply -f https://raw.githubusercontent.com/dmytrostriletskyi/stale-feature-branch-operator/master/fixtures/first-feature-branch.yml -f https://raw.githubusercontent.com/dmytrostriletskyi/stale-feature-branch-operator/master/fixtures/second-feature-branch.yml
...
namespace/project-pr-1 created
deployment.apps/project-pr-1 created
service/project-pr-1 created
horizontalpodautoscaler.autoscaling/project-pr-1 created
secret/project-pr-1 created
configmap/project-pr-1 created
ingress.extensions/project-pr-1 created
namespace/project-pr-2 created
deployment.apps/project-pr-2 created
service/project-pr-2 created
horizontalpodautoscaler.autoscaling/project-pr-2 created
secret/project-pr-2 created
configmap/project-pr-2 created
ingress.extensions/project-pr-2 created
เบเบงเบเปเบฎเบปเบฒเบเบงเบเปเบเบดเปเบเบงเปเบฒเบเบฑเบเบเบฐเบเบฒเบเบญเบเบเบฑเบเบซเบกเบปเบเบเปเบฒเบเปเบเบดเบเปเบเปเบเบทเบเบชเปเบฒเบเบเบทเปเบเบขเปเบฒเบเบชเปเบฒเปเบฅเบฑเบเบเบปเบ:
$ kubectl get namespace,pods,deployment,service,horizontalpodautoscaler,configmap,ingress -n project-pr-1 && kubectl get namespace,pods,deployment,service,horizontalpodautoscaler,configmap,ingress -n project-pr-2
...
NAME ... READY ... STATUS ... AGE
pod/project-pr-1-848d5fdff6-rpmzw ... 1/1 ... Running ... 67s
NAME ... READY ... AVAILABLE ... AGE
deployment.apps/project-pr-1 ... 1/1 ... 1 ... 67s
...
เบเบฑเบเบเบฑเปเบเปเบเปเบเบงเบเปเบฎเบปเบฒเบฅเบงเบก debug
, namespaces project-pr-1
ะธ project-pr-2
, เบเบฑเปเบเบเบฑเปเบเบเบฑเบเบเบฐเบเบฒเบเบญเบเบญเบทเปเบเปเบเบฑเบเบซเบกเบปเบเบเบฐเบเปเบญเบเบเบทเบเบฅเบถเบเบเบฑเบเบเบตเปเบเบเบเปเปเบเปเบญเบเบเปเบฒเบเบถเบเปเบเบดเบเบเบฒเบฅเบฒเบกเบดเปเบเบต afterDaysWithoutDeploy
. เบเบตเปเบชเบฒเบกเบฒเบเปเบซเบฑเบเปเบเปเปเบเบเบฑเบเบเบถเบเบเบญเบเบเบปเบงเบเบฐเบเบดเบเบฑเบเบเบฒเบ:
$ kubectl logs stale-feature-branch-operator-6bfbfd4df8-m7sch -n stale-feature-branch-operator
... "msg":"Namespace should be deleted due to debug mode is enabled.","namespaceName":"project-pr-1"}
... "msg":"Namespace is being processing.","namespaceName":"project-pr-1","namespaceCreationTimestamp":"2020-06-16 18:43:58 +0300 EEST"}
... "msg":"Namespace has been deleted.","namespaceName":"project-pr-1"}
... "msg":"Namespace should be deleted due to debug mode is enabled.","namespaceName":"project-pr-2"}
... "msg":"Namespace is being processing.","namespaceName":"project-pr-2","namespaceCreationTimestamp":"2020-06-16 18:43:58 +0300 EEST"}
... "msg":"Namespace has been deleted.","namespaceName":"project-pr-2"}
เบเปเบฒเบเปเบฒเบเบเบงเบเปเบเบดเปเบเบเบงเบฒเบกเบเปเบญเบกเบเบญเบเบเบฑเบเบเบฐเบเบฒเบเบญเบ, เบเบงเบเปเบเบปเบฒเบเบฐเบขเบนเปเปเบเบชเบฐเบเบฒเบเบฐ Terminating
(เบเบฐเบเบงเบเบเบฒเบเบฅเบถเบ) เบซเบผเบทเบเบทเบเบฅเบถเบเปเบฅเปเบง (เบเบฒเบเบชเบปเปเบเบญเบญเบเบเปเบฒเบชเบฑเปเบเปเบกเปเบเบซเบงเปเบฒเบเปเบเบปเปเบฒ).
$ kubectl get namespace,pods,deployment,service,horizontalpodautoscaler,configmap,ingress -n project-pr-1 && kubectl get namespace,pods,deployment,service,horizontalpodautoscaler,configmap,ingress -n project-pr-2
...
เบเปเบฒเบเบชเบฒเบกเบฒเบเปเบฎเบฑเบเบเปเปเบฒเบเบฐเบเบงเบเบเบฒเบเบชเปเบฒเบ fixtures
เบซเบผเบฒเบเบเบฑเปเบเปเบฅเบฐเปเบซเปเปเบเปเปเบเบงเปเบฒเบเบงเบเบกเบฑเบเบเบทเบเปเบเบเบเปเบฒเบเบญเบญเบเบเบฒเบเปเบเบซเบเบถเปเบเบเบฒเบเบต.
เบเบฒเบเปเบฅเบทเบญเบ
เบชเบดเปเบเบเบตเปเบชเบฒเบกเบฒเบเปเบฎเบฑเบเปเบเปเปเบเบเบเบตเปเบเบฐเปเบเบฑเบเบเบนเปเบเบฐเบเบญเบเบเบฒเบเบเบตเปเปเบฎเบฑเบเบงเบฝเบเบขเบนเปเปเบเบเบธเปเบก? เบกเบตเบซเบผเบฒเบเบงเบดเบเบตเบเบฒเบ, เบเบงเบเบกเบฑเบเบเบฑเบเบซเบกเบปเบเปเบกเปเบเบเปเปเบชเบปเบกเบเบนเบเปเบเบ (เปเบฅเบฐเบเปเปเบเบปเบเบเปเบญเบเบเบญเบเบกเบฑเบเปเบกเปเบเบซเบปเบงเบเปเป), เปเบฅเบฐเบเบธเบเบเบปเบเบเบฑเบเบชเบดเบเปเบเบเปเบงเบเบเบปเบเปเบญเบเบงเปเบฒเบชเบดเปเบเบเบตเปเบเบตเบเบตเปเบชเบธเบเบชเปเบฒเบฅเบฑเบเปเบเบเบเบฒเบเบชเบฐเปเบเบฒเบฐเปเบเบซเบเบถเปเบ:
-
เบฅเบถเบเบชเบฒเบเบฒเบเบธเบเบชเบปเบกเบเบฑเบเปเบเบฅเบฐเบซเบงเปเบฒเบเบเบฒเบเบชเปเบฒเบเบชเบฒเบเบฒเปเบกเปเปเบเบเบขเปเบฒเบเบเปเปเปเบเบทเปเบญเบ.
- เปเบเบทเปเบญเปเบฎเบฑเบเบชเบดเปเบเบเบตเป, เบเปเบฒเบเบเปเบฒเปเบเบฑเบเบเปเบญเบเบฎเบนเปเบงเปเบฒเบเปเบฒเบฎเปเบญเบเบเปเบเบถเบเบเบตเปเบเปเบฝเบงเบเปเบญเบเบเบฑเบเบเปเบฒเบซเบกเบฑเปเบเบชเบฑเบเบเบฒเบเบตเปเบเบทเบเบชเปเบฒเบเบเบถเปเบ. เปเบเบทเปเบญเบเบเบฒเบเบเบธเบเบชเบปเบกเบเบฑเบเบชเบฒเบเบฒ namespace เบกเบตเบเบปเบงเบฅเบฐเบเบธเบเบฒเบเบฎเปเบญเบเบเปเบเบถเบ - เบเบปเบงเปเบฅเบเบเบญเบเบกเบฑเบ, เบซเบผเบทเบเบทเปเบเบญเบเบชเบฒเบเบฒ, เบเบปเบงเบฅเบฐเบเบธเบเบฐเบเปเบญเบเบเบทเบเบฅเบฐเบเบธเบขเบนเปเปเบเบเปเบฒเบซเบกเบฑเปเบเบชเบฑเบเบเบฒ.
- เบเบฒเบเบชเปเบฒเบเบชเบฒเบเบฒเปเบกเปเบเบปเบเบฅเบปเปเบกเปเบซเบฅเบง. เบชเปเบฒเบฅเบฑเบเบเบปเบงเบขเปเบฒเบ, เบเปเบฒเบเบกเบตเบเบฑเปเบเบเบญเบเบเบฑเปเบเบเปเปเปเบเบเบตเป: เบเบฒเบงเปเบซเบฅเบเปเบเบเบเบฒเบ, เบเปเบฒเปเบเบตเบเบเบฒเบเบเบปเบเบชเบญเบ, เบเบฒเบเบเปเปเบชเปเบฒเบเปเบเบเบเบฒเบ, เบเบฒเบเบเปเบญเบเบเบปเบง, เบชเบปเปเบเบเบฒเบเปเบเปเบเปเบเบทเบญเบ, เบฅเปเบฒเบเบชเบฒเบเบฒเบเบธเบเบเบฐเบชเบปเบกเบเบฑเบเบเบญเบเบเปเบฒเบฎเปเบญเบเบเปเบเบถเบเบชเบธเบเบเปเบฒเบ. เบเปเบฒเบเบฒเบเบเปเปเบชเปเบฒเบเบฅเบปเปเบกเปเบซเบฅเบงเปเบเปเบงเบฅเบฒเบชเบปเปเบเบเบฒเบเปเบเปเบเปเบเบทเบญเบ, เบเปเบฒเบเบเบฐเบเปเบญเบเบฅเบถเบเบเบฑเบเบเบฐเบเบฒเบเบญเบเบเบฑเบเบซเบกเบปเบเปเบ cluster เบเปเบงเบเบเบปเบเปเบญเบ.
- เบเปเบฒเบเปเปเบกเบตเบชเบฐเบเบฒเบเบเบฒเบเบเบตเปเปเบซเบกเบฒเบฐเบชเบปเบก, เบเบฒเบเบฅเบถเบเบชเบฒเบเบฒเบเบธเบเบชเบปเบกเบเบฑเบเปเบ master build เปเบกเปเบเบเปเปเบเบฐเปเบเปเบ.
-
เปเบเป webhooks (
เบเบปเบงเบขเปเบฒเบ ).- เบเบตเปเบญเบฒเบเบเบฐเบเปเปเปเบกเปเบเบงเบดเบเบตเบเบฒเบเบเบญเบเปเบเบปเปเบฒ. เบเบปเบงเบขเปเบฒเบ, เปเบ
Jenkins , เบเบฝเบเปเบเปเบซเบเบถเปเบเบเบฐเปเบเบเบเบญเบเบเปเปเบชเบฐเบซเบเบฑเบเบชเบฐเบซเบเบนเบเบเบงเบฒเบกเบชเบฒเบกเบฒเบเปเบเบเบฒเบเบเบฑเบเบเบถเบเบเบฒเบเบเบฑเปเบเบเปเบฒเบเบญเบเบกเบฑเบเบขเบนเปเปเบเบฅเบฐเบซเบฑเบเปเบซเบผเปเบ. เปเบกเบทเปเบญเปเบเป webhooks, เบเปเบฒเบเบเปเบฒเปเบเบฑเบเบเปเบญเบเบเบฝเบ script เบเบญเบเบเปเบฒเบเปเบญเบเปเบเบทเปเบญเบเบธเบเปเบเปเบเบเบงเบเบกเบฑเบ. script เบเบตเปเบเบฐเบเปเบญเบเบเบทเบเบเบฑเบเปเบชเปเปเบเบเบฒเบเปเบเปเบเบญเบ Jenkins, เปเบเบดเปเบเบเบฒเบเบเบตเปเบเบฐเบฎเบฑเบเบชเบฒ.
- เบเบตเปเบญเบฒเบเบเบฐเบเปเปเปเบกเปเบเบงเบดเบเบตเบเบฒเบเบเบญเบเปเบเบปเปเบฒ. เบเบปเบงเบขเปเบฒเบ, เปเบ
-
เบเบฒเบเบเบฝเบ
Cronjob เปเบฅเบฐเปเบเบตเปเบกเบเบธเปเบก Kubernetes.- เปเบเปเปเบงเบฅเบฒเปเบเบเบฒเบเบเบฝเบเปเบฅเบฐเบเบฒเบเบชเบฐเบซเบเบฑเบเบชเบฐเบซเบเบนเบ.
- เบเบนเปเบเบฐเบเบญเบเบเบฒเบเปเบฎเบฑเบเบงเบฝเบเบขเบนเปเปเบเบฎเบนเบเปเบเบเบเบตเปเบเปเบฒเบเบเบทเบเบฑเบเปเบฅเปเบง, เบเบทเบเบเบฑเบเบเบถเบเปเบฅเบฐเบชเบฐเบซเบเบฑเบเบชเบฐเบซเบเบนเบ.
เบเปเบเบญเบเปเบเบเปเบฒเบเบชเปเบฒเบฅเบฑเบเบเบงเบฒเบกเบชเบปเบเปเบเบเบญเบเบเปเบฒเบเบเบฑเบเบเบปเบเบเบงเบฒเบก.
เปเบซเบผเปเบเบเปเปเบกเบนเบ: www.habr.com