เชนเซเชฒเซ! เชซเซเชเชฐ เชถเชพเชเชพ (เชเชฐเซเชซ เชกเชฟเชชเซเชฒเซเชฏ เชชเซเชฐเซเชตเซเชฏเซ, เชฐเชฟเชตเซเชฏเซ เชเชช) - เช เชคเซเชฏเชพเชฐเซ เชฅเชพเชฏ เชเซ เชเซเชฏเชพเชฐเซ เชฎเชพเชคเซเชฐ เชฎเชพเชธเซเชเชฐ เชฌเซเชฐเชพเชจเซเช เช เชคเซเชจเชพเชค เชเชฐเชตเชพเชฎเชพเช เชเชตเชคเซ เชจเชฅเซ, เชชเชฐเชเชคเซ เชฆเชฐเซเช เชชเซเชฒ เชฐเชฟเชเซเชตเซเชธเซเชเชจเซ เชเช เช เชจเชจเซเชฏ URL เชชเชฐ เชชเชฃ เชฎเซเชเชฒเชตเชพเชฎเชพเช เชเชตเซ เชเซ. เชคเชฎเซ เชเซเช เชเชฐเซ เชถเชเซ เชเซ เชเซ เชเซเชก เชชเซเชฐเซเชกเชเซเชถเชจ เชเชจเซเชตเชพเชฏเชฐเซเชจเชฎเซเชจเซเชเชฎเชพเช เชเชพเชฎ เชเชฐเซ เชเซ เชเซ เชเซเชฎ; เชธเซเชตเชฟเชงเชพ เช เชจเซเชฏ เชชเซเชฐเซเชเซเชฐเชพเชฎเชฐเซ เช เชฅเชตเชพ เชชเซเชฐเซเชกเชเซเช เชจเชฟเชทเซเชฃเชพเชคเซเชจเซ เชฌเชคเชพเชตเซ เชถเชเชพเชฏ เชเซ. เชเซเชฏเชพเชฐเซ เชคเชฎเซ เชชเซเชฒ เชฐเชฟเชเซเชตเซเชธเซเชเชฎเชพเช เชเชพเชฎ เชเชฐเซ เชฐเชนเซเชฏเชพ เชนเซเชต, เชคเซเชฏเชพเชฐเซ เชเซเชจเชพ เชเซเชก เชฎเชพเชเซ เชฆเชฐเซเช เชจเชตเซ เชเชฎเชฟเช เชตเชฐเซเชคเชฎเชพเชจ เชเชฎเชพเชตเช เชเชพเชขเซ เชจเชพเชเชตเชพเชฎเชพเช เชเชตเซ เชเซ, เช เชจเซ เชจเชตเชพ เชเซเชก เชฎเชพเชเซ เชจเชตเซ เชเชฎเชพเชตเช เชฐเซเชฒเชเชเช เชเชฐเชตเชพเชฎเชพเช เชเชตเซ เชเซ. เชเซเชฏเชพเชฐเซ เชคเชฎเซ เชฎเชพเชธเซเชเชฐ เชฌเซเชฐเชพเชจเซเชเชฎเชพเช เชชเซเชฒ เชฐเชฟเชเซเชตเซเชธเซเช เชฎเชฐเซเช เชเชฐเซ เชเซ เชคเซเชฏเชพเชฐเซ เชชเซเชฐเชถเซเชจเซ เชเชญเชพ เชฅเช เชถเชเซ เชเซ. เชคเชฎเชจเซ เชนเชตเซ เชธเซเชตเชฟเชงเชพ เชถเชพเชเชพเชจเซ เชเชฐเซเชฐ เชจเชฅเซ, เชชเชฐเชเชคเซ เชเซเชฌเชฐเชจเซเชเซเชธ เชธเชเชธเชพเชงเชจเซ เชนเชเซ เชชเชฃ เชเซเชฒเชธเซเชเชฐเชฎเชพเช เชเซ.
เชตเชฟเชถเซเชทเชคเชพ เชถเชพเชเชพเช เชตเชฟเชถเซ เชตเชงเซ
เชเซเชฌเชฐเชจเซเชเซเชธเชฎเชพเช เชตเชฟเชถเซเชทเชคเชพ เชถเชพเชเชพเช เชฌเชจเชพเชตเชตเชพเชจเซ เชเช เช เชญเชฟเชเชฎ เชจเซเชฎเชธเซเชชเซเชธเชจเซ เชเชชเชฏเซเช เชเชฐเชตเชพเชจเซ เชเซ. เชเซเชเชเชฎเชพเช, เชเชคเซเชชเชพเชฆเชจ เชฐเซเชชเชฐเซเชเชพเชเชเชจ เชเชจเชพ เชเซเชตเซ เชฆเซเชเชพเชฏ เชเซ:
kind: Namespace
apiVersion: v1
metadata:
name: habr-back-end
...
kind: Deployment
apiVersion: apps/v1
metadata:
namespace: habr-back-end
spec:
replicas: 3
...
เชซเซเชเชฐ เชฌเซเชฐเชพเชจเซเช เชฎเชพเชเซ, เชจเซเชฎเชธเซเชชเซเชธ เชคเซเชจเชพ เชเชณเชเชเชฐเซเชคเชพ (เชเชฆเชพเชนเชฐเชฃ เชคเชฐเซเชเซ, เชชเซเชฒ เชฐเชฟเชเซเชตเซเชธเซเช เชจเชเชฌเชฐ) เช เชจเซ เช เชฎเซเช เชชเซเชฐเชเชพเชฐเชจเชพ เชเชชเชธเชฐเซเช/เชชเซเชธเซเชเชซเชฟเชเซเชธ (เชเชฆเชพเชนเชฐเชฃ เชคเชฐเซเชเซ,) เชธเชพเชฅเซ เชฌเชจเชพเชตเชตเชพเชฎเชพเช เชเชตเซ เชเซ. -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
...
เชธเชพเชฎเชพเชจเซเชฏ เชฐเซเชคเซ, เชฎเซเช เชฒเชเซเชฏเซเช เชเซเชฌเชฐเชจเซเชเซเชธ เชเชชเชฐเซเชเชฐ (เชเช เชเชชเซเชฒเชฟเชเซเชถเชจ เชเซ เชเซเชฒเชธเซเชเชฐ เชธเชเชธเชพเชงเชจเซเชจเซ เชเชเซเชธเซเชธ เชงเชฐเชพเชตเซ เชเซ),
$ kubectl get pods --all-namespaces | grep -e "-pr-"
NAMESPACE ... AGE
habr-back-end-pr-264 ... 4d8h
habr-back-end-pr-265 ... 5d7h
เชเซเชฒเชธเซเชเชฐเชฎเชพเช เชตเชฟเชถเซเชทเชคเชพ เชถเชพเชเชพเชเชจเซ เชเซเชตเซ เชฐเซเชคเซ เชฒเชพเชเซ เชเชฐเชตเซ เชคเซ เชตเชฟเชถเซ เชคเชฎเซ เชตเชพเชเชเซ เชถเชเซ เชเซ
เชชเซเชฐเซเชคเซเชธเชพเชนเชจ
เชเชพเชฒเซ เชธเชคเชค เชเชเซเชเชฐเชฃ เชธเชพเชฅเซ เชฒเชพเชเซเชทเชฃเชฟเช เชชเซเชฒ เชตเชฟเชจเชเชคเซ เชเซเชตเชจเชเชเซเชฐ เชเซเชเช (continuous integration
):
- เช เชฎเซ เชถเชพเชเชพเชฎเชพเช เชจเชตเซ เชเชฎเชฟเชเชฟเชจเซ เชฆเชฌเชพเชฃ เชเชฐเซเช เชเซเช.
- เชฌเชฟเชฒเซเชก เชชเชฐ, เชฒเชฟเชเชเชฐ เช เชจเซ/เช เชฅเชตเชพ เชชเชฐเซเชเซเชทเชฃเซ เชเชฒเชพเชตเชตเชพเชฎเชพเช เชเชตเซ เชเซ.
- Kubernetes เชชเซเชฒ เชตเชฟเชจเชเชคเซ เชเซเช เชตเชฃเซ เชซเซเชฒเชพเชฏ เชชเชฐ เชเชจเชฐเซเช เชฅเชพเชฏ เชเซ (เชเชฆเชพเชนเชฐเชฃ เชคเชฐเซเชเซ, เชคเซเชจเซ เชจเชเชฌเชฐ เชซเชฟเชจเชฟเชถเซเชก เชเซเชฎเซเชชเชฒเซเชเชฎเชพเช เชฆเชพเชเชฒ เชเชฐเชตเชพเชฎเชพเช เชเชตเซ เชเซ).
- kubectl apply เชจเซ เชเชชเชฏเซเช เชเชฐเซเชจเซ, เชฐเซเชชเชฐเซเชเชพเชเชเชจเซ เชเซเชฒเชธเซเชเชฐเชฎเชพเช เชเชฎเซเชฐเชตเชพเชฎเชพเช เชเชตเซ เชเซ (เชกเชฟเชชเซเชฒเซเชฏ).
- เชชเซเชฒ เชตเชฟเชจเชเชคเซเชจเซ เชฎเชพเชธเซเชเชฐ เชฌเซเชฐเชพเชจเซเชเชฎเชพเช เชฎเชฐเซเช เชเชฐเชตเชพเชฎเชพเช เชเชตเซ เชเซ.
เชเซเชฏเชพเชฐเซ เชคเชฎเซ เชชเซเชฒ เชฐเชฟเชเซเชตเซเชธเซเชเชฎเชพเช เชเชพเชฎ เชเชฐเซ เชฐเชนเซเชฏเชพ เชนเซเชต, เชคเซเชฏเชพเชฐเซ เชเซเชจเชพ เชเซเชก เชฎเชพเชเซ เชฆเชฐเซเช เชจเชตเซ เชเชฎเชฟเช เชตเชฐเซเชคเชฎเชพเชจ เชเชฎเชพเชตเช เชเชพเชขเซ เชจเชพเชเชตเชพเชฎเชพเช เชเชตเซ เชเซ, เช เชจเซ เชจเชตเชพ เชเซเชก เชฎเชพเชเซ เชจเชตเซ เชเชฎเชพเชตเช เชฐเซเชฒเชเชเช เชเชฐเชตเชพเชฎเชพเช เชเชตเซ เชเซ. เชชเชฐเชเชคเซ เชเซเชฏเชพเชฐเซ เชชเซเชฒ เชตเชฟเชจเชเชคเซ เชฎเชพเชธเซเชเชฐ เชฌเซเชฐเชพเชจเซเชเชฎเชพเช เชฎเชฐเซเช เชเชฐเชตเชพเชฎเชพเช เชเชตเซ เชเซ, เชคเซเชฏเชพเชฐเซ เชฎเชพเชคเซเชฐ เชฎเชพเชธเซเชเชฐ เชฌเซเชฐเชพเชจเซเช เช เชฌเชจเชพเชตเชตเชพเชฎเชพเช เชเชตเชถเซ. เชชเชฐเชฟเชฃเชพเชฎเซ, เชคเซ เชคเชพเชฐเชฃ เชเชชเซ เชเซ เชเซ เช เชฎเซ เชชเซเชฒ เชตเชฟเชจเชเชคเซ เชตเชฟเชถเซ เชชเชนเซเชฒเซเชฅเซ เช เชญเซเชฒเซ เชเชฏเชพ เชเซเช, เช เชจเซ เชคเซเชจเชพ เชเซเชฌเชฐเชจเซเชเซเชธ เชธเชเชธเชพเชงเชจเซ เชนเชเซ เชชเชฃ เชเซเชฒเชธเซเชเชฐเชฎเชพเช เชเซ.
เชเซเชตเซ เชฐเซเชคเซ เชเชชเชฏเซเช เชเชฐเชตเซ
เชจเซเชเซเชจเชพ เชเชฆเซเชถ เชธเชพเชฅเซ เชชเซเชฐเซเชเซเชเซเช เชเชจเซเชธเซเชเซเชฒ เชเชฐเซ:
$ 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
เชชเซเชฐเชพเชฎเซเชเชฐ เชจเซเชฎเชธเซเชชเซเชธ เชธเชฌเชธเซเชเซเชฐเชฟเชเช เช
เชจเซเชฏ เชจเซเชฎเชธเซเชชเซเชธเชฎเชพเชเชฅเซ เชชเซเชฒ เชตเชฟเชจเชเชคเซเช เชฎเชพเชเซ เชจเซเชฎเชธเซเชชเซเชธ เชซเชฟเชฒเซเชเชฐ เชเชฐเชตเชพ เชฎเชพเชเซ เชเชฐเซเชฐเซ เชเซ. เชเชฆเชพเชนเชฐเชฃ เชคเชฐเซเชเซ, เชเซ เชเซเชฒเชธเซเชเชฐเชฎเชพเช เชจเซเชเซเชจเซ เชจเซเชฎเชธเซเชชเซเชธ เชเซ: 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
.
เชชเซเชฐเชพเชฎเซเชเชฐ afterDaysWithoutDeploy เชเซเชจเซ เชจเซเชฎเชธเซเชชเซเชธ เชเชพเชขเซ เชจเชพเชเชตเชพเชจเซ เชเชฐเซเชฐ เชเซ. เชเชฆเชพเชนเชฐเชฃ เชคเชฐเซเชเซ, เชเซ เชจเซเชฎเชธเซเชชเซเชธ เชฌเชจเชพเชตเชตเชพเชฎเชพเช เชเชตเซ เชเซ 3 ะดะฝั 1 ัะฐั
เชชเชพเชเชณ, เช
เชจเซ เชชเชฐเชฟเชฎเชพเชฃ เชธเซเชเชตเซ เชเซ 3 ะดะฝั
, เช เชจเซเชฎเชธเซเชชเซเชธ เชเชพเชขเซ เชจเชพเชเชตเชพเชฎเชพเช เชเชตเชถเซ. เชเซ เชจเซเชฎเชธเซเชชเซเชธ เชฌเชจเชพเชตเชตเชพเชฎเชพเช เชเชตเซ เชคเซ เชคเซ เชตเชฟเชฐเซเชฆเซเชง เชฆเชฟเชถเชพเชฎเชพเช เชชเชฃ เชเชพเชฎ เชเชฐเซ เชเซ 2 ะดะฝั 23 ัะฐัะฐ
เชชเชพเชเชณ, เช
เชจเซ เชชเชฐเชฟเชฎเชพเชฃ เชธเซเชเชตเซ เชเซ 3 ะดะฝั
, เช เชจเซเชฎเชธเซเชชเซเชธ เชเชพเชขเซ เชจเชพเชเชตเชพเชฎเชพเช เชเชตเชถเซ เชจเชนเซเช.
เชคเซเชฏเชพเช เชเช เชตเชงเซ เชชเชฐเชฟเชฎเชพเชฃ เชเซ, เชคเซ เชฌเชงเซ เชจเซเชฎเชธเซเชชเซเชธเชจเซ เชเซเชเชฒเซ เชตเชพเชฐ เชธเซเชเซเชจ เชเชฐเชตเชพ เช
เชจเซ เชเชฎเชพเชตเช เชตเชฟเชจเชพ เชฆเชฟเชตเชธเซ เชฎเชพเชเซ เชคเชชเชพเชธเชตเชพ เชฎเชพเชเซ เชเชตเชพเชฌเชฆเชพเชฐ เชเซ - เชฆเชฐเซเช เชฎเชฟเชจเชฟเช เชคเชชเชพเชธเซ. เชฎเซเชณเชญเซเชค เชฐเซเชคเซ เชคเซ เชธเชฎเชพเชจ เชเซ 30 ะผะธะฝััะฐะผ
.
เช เชเซเชตเซ เชฐเซเชคเซ เชเชพเชฎ เชเชฐเซ เชเซ
เชตเซเชฏเชตเชนเชพเชฐเชฎเชพเช, เชคเชฎเชพเชฐเซ เชเชจเซ เชเชฐเซเชฐ เชชเชกเชถเซ:
Docker เช เชฒเช เชตเชพเชคเชพเชตเชฐเชฃเชฎเชพเช เชเชพเชฎ เชเชฐเชตเชพ เชฎเชพเชเซ.เชฎเชฟเชจเซเชเซเชฌเซ เชธเซเชฅเชพเชจเชฟเช เชฐเซเชคเซ เชเซเชฌเชฐเชจเซเชเซเชธ เชเซเชฒเชธเซเชเชฐ เชเชญเซเช เชเชฐเชถเซ.kubectl - เชเซเชฒเชธเซเชเชฐ เชฎเซเชจเซเชเชฎเซเชจเซเช เชฎเชพเชเซ เชเชฎเชพเชจเซเชก เชฒเชพเชเชจ เชเชจเซเชเชฐเชซเซเชธ.
เช เชฎเซ เชธเซเชฅเชพเชจเชฟเช เชฐเซเชคเซ เชเซเชฌเชฐเชจเซเชเซเชธ เชเซเชฒเชธเซเชเชฐ เชเชญเชพ เชเชฐเซเช เชเซเช:
$ 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
เชชเซเชฐเซเชกเชเซเชถเชจ เชฐเซเชชเชฐเซเชเชพเชเชเชจเซ เชเซเชจเชพ เชจเซเชฎเชธเซเชชเซเชธเชจเซ เชเชเชพเชธเชตเชพ เชฎเชพเชเซ เชเซเช เชตเซเชฒ เชนเซเชตเชพเชฅเซ, เช
เชจเซ เช
เชฎเชพเชฐเชพ เชจเชตเชพ เชเชญเชพ เชฅเชฏเซเชฒเชพ เชเซเชฒเชธเซเชเชฐเชฎเชพเช เชคเซ เชจเชฅเซ, เช
เชฎเซ เชชเชฐเซเชฏเชพเชตเชฐเชฃ เชตเซเชฐเซเชเชฌเชฒเชจเซ เชฌเชฆเชฒเซเชถเซเช. IS_DEBUG
เชชเชฐ true
. เช เชฎเซเชฒเซเชฏ เชธเชพเชฅเซ เชชเชฐเชฟเชฎเชพเชฃ afterDaysWithoutDeploy
เชงเซเชฏเชพเชจเชฎเชพเช เชฒเซเชตเชพเชฎเชพเช เชเชตเชคเซเช เชจเชฅเซ เช
เชจเซ เชเชฎเชพเชตเช เชตเชเชฐเชจเชพ เชฆเชฟเชตเชธเซ เชธเซเชงเซ เชจเซเชฎเชธเซเชชเซเชธเชจเซ เชคเชชเชพเชธ เชเชฐเชตเชพเชฎเชพเช เชเชตเชคเซ เชจเชฅเซ, เชฎเชพเชคเซเชฐ เชธเชฌเชธเซเชเซเชฐเชฟเชเชเชจเซ เชเชเชจเชพ เชฎเชพเชเซ (-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
เชฐเซเชชเชฐเซเชเชพเชเชเชจเซ เชธเชฌเชธเซเชเซเชฐเชฟเชเช เชธเชพเชฅเซ เชจเซเชฎเชธเซเชชเซเชธ เชถเซเชงเชตเชพ เชฎเชพเชเซ เชธเซเชเชตเซ เชเซ -pr-
เชเชเชตเชพเชฐ เชฎเชพเช 1 ะผะธะฝััั
.:
apiVersion: feature-branch.dmytrostriletskyi.com/v1
kind: StaleFeatureBranch
metadata:
name: stale-feature-branch
spec:
namespaceSubstring: -pr-
afterDaysWithoutDeploy: 1
checkEveryMinutes: 1
เชเชชเชฐเซเชเชฐเซ เชเชตเชพเชฌ เชเชชเซเชฏเซ เชเซ เช เชจเซ เชจเซเชฎเชธเซเชชเซเชธ เชคเชชเชพเชธเชตเชพ เชฎเชพเชเซ เชคเซเชฏเชพเชฐ เชเซ:
$ 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
, เชเซเชฎเชพเช เชฌเซ เชจเซเชฎเชธเซเชชเซเชธ (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
, เชจเซเชฎเชธเซเชชเซเชธ 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
เชเชฃเซ เชตเชเชค เช
เชจเซ เชเชพเชคเชฐเซ เชเชฐเซ เชเซ เชคเซเช เชเช เชฎเชฟเชจเชฟเชเชฎเชพเช เชฆเซเชฐ เชเชฐเชตเชพเชฎเชพเช เชเชตเซ เชเซ.
เชตเชฟเชเชฒเซเชชเซ
เชเซเชฒเชธเซเชเชฐเชฎเชพเช เชเชพเชฎ เชเชฐเชคเชพ เชเชชเชฐเซเชเชฐเชจเซ เชฌเชฆเชฒเซ เชถเซเช เชเชฐเซ เชถเชเชพเชฏ? เชคเซเชฏเชพเช เชเชฃเชพ เช เชญเชฟเชเชฎเซ เชเซ, เชคเซ เชฌเชงเชพ เช เชชเซเชฐเซเชฃ เชเซ (เช เชจเซ เชคเซเชฎเชจเซ เชเชพเชฎเซเช เชตเซเชฏเชเซเชคเชฟเชฒเชเซเชทเซ เชเซ), เช เชจเซ เชฆเชฐเซเช เชตเซเชฏเชเซเชคเชฟ เชชเซเชคเชพเชจเชพ เชฎเชพเชเซ เชจเชเซเชเซ เชเชฐเซ เชเซ เชเซ เชเซเช เชเซเชเซเชเชธ เชชเซเชฐเซเชเซเชเซเช เชฎเชพเชเซ เชถเซเชฐเซเชทเซเช เชถเซเช เชเซ:
-
เชฎเชพเชธเซเชเชฐ เชฌเซเชฐเชพเชจเซเชเชจเชพ เชธเชคเชค เชเชเซเชเชฐเชฃ เชฌเชฟเชฒเซเชก เชฆเชฐเชฎเชฟเชฏเชพเชจ เชซเซเชเชฐ เชฌเซเชฐเชพเชจเซเชเชจเซ เชกเชฟเชฒเซเช เชเชฐเซ.
- เช เชเชฐเชตเชพ เชฎเชพเชเซ, เชคเชฎเชพเชฐเซ เชเชพเชฃเชตเชพเชจเซ เชเชฐเซเชฐ เชเซ เชเซ เชเช เชชเซเชฒ เชตเชฟเชจเชเชคเซ เชฌเชพเชเชงเชตเชพเชฎเชพเช เชเชตเซ เชฐเชนเซ เชเซ เชคเซ เชเชฎเชฟเช เชธเชพเชฅเซ เชธเชเชฌเชเชงเชฟเชค เชเซ. เชซเซเชเชฐ เชฌเซเชฐเชพเชจเซเช เชจเซเชฎเชธเซเชชเซเชธเชฎเชพเช เชชเซเชฒ เชฐเชฟเชเซเชตเซเชธเซเช เชเชเชกเซเชจเซเชเชฟเชซเชพเชฏเชฐ - เชคเซเชจเซ เชจเชเชฌเชฐ เช เชฅเชตเชพ เชฌเซเชฐเชพเชจเซเชเชจเซเช เชจเชพเชฎ เชนเซเชตเชพเชฅเซ, เชเชณเชเชเชฐเซเชคเชพเชจเซ เชนเชเชฎเซเชถเชพ เชเชฎเชฟเชเชฎเชพเช เชเชฒเซเชฒเซเชเชฟเชค เชเชฐเชตเชพเชจเซ เชฐเชนเซเชถเซ.
- เชฎเชพเชธเซเชเชฐ เชฌเซเชฐเชพเชจเซเช เชฌเชฟเชฒเซเชก เชจเชฟเชทเซเชซเชณ เชเชพเชฏ เชเซ. เชเชฆเชพเชนเชฐเชฃ เชคเชฐเซเชเซ, เชคเชฎเชพเชฐเซ เชชเชพเชธเซ เชจเซเชเซเชจเชพ เชคเชฌเชเซเชเชพเช เชเซ: เชชเซเชฐเซเชเซเชเซเช เชกเชพเชเชจเชฒเซเชก เชเชฐเซ, เชชเชฐเซเชเซเชทเชฃเซ เชเชฒเชพเชตเซ, เชชเซเชฐเซเชเซเชเซเช เชฌเชจเชพเชตเซ, เชฐเชฟเชฒเซเช เชเชฐเซ, เชธเซเชเชจเชพเช เชฎเซเชเชฒเซ, เชเซเชฒเซเชฒเซ เชชเซเชฒ เชตเชฟเชจเชเชคเซเชจเซ เชตเชฟเชถเซเชทเชคเชพ เชถเชพเชเชพเชจเซ เชธเชพเชซ เชเชฐเซ. เชเซ เชธเซเชเชจเชพ เชฎเซเชเชฒเชคเซ เชตเชเชคเซ เชฌเชฟเชฒเซเชก เชจเชฟเชทเซเชซเชณ เชเชพเชฏ, เชคเซ เชคเชฎเชพเชฐเซ เชเซเชฒเชธเซเชเชฐเชฎเชพเชเชจเชพ เชคเชฎเชพเชฎ เชธเชเชธเชพเชงเชจเซ เชเชพเชคเซ เช เชเชพเชขเซ เชจเชพเชเชตเชพ เชชเชกเชถเซ.
- เชฏเซเชเซเชฏ เชธเชเชฆเชฐเซเชญ เชตเชฟเชจเชพ, เชฎเชพเชธเซเชเชฐ เชฌเชฟเชฒเซเชกเชฎเชพเช เชตเชฟเชถเซเชทเชคเชพ เชถเชพเชเชพเช เชเชพเชขเซ เชจเชพเชเชตเซ เช เชธเซเชชเชทเซเช เชจเชฅเซ.
-
เชตเซเชฌเชนเซเชเซเชธเชจเซ เชเชชเชฏเซเช เชเชฐเซเชจเซ (
เชเชฆเชพเชนเชฐเชฃ ).- เช เชคเชฎเชพเชฐเซ เช
เชญเชฟเชเชฎ เชจ เชชเชฃ เชนเซเช เชถเชเซ. เชเชฆเชพเชนเชฐเชฃ เชคเชฐเซเชเซ, เชฎเชพเช
เชเซเชจเชเชฟเชจเซเชธ , เชฎเชพเชคเซเชฐ เชเช เชชเซเชฐเชเชพเชฐเชจเซ เชชเชพเชเชชเชฒเชพเชเชจ เชคเซเชจเชพ เชฐเซเชชเชฐเซเชเชพเชเชเชจเซเชจเซ เชธเซเชฐเซเชค เชเซเชกเชฎเชพเช เชธเชพเชเชตเชตเชพเชจเซ เชเซเชทเชฎเชคเชพเชจเซ เชธเชฎเชฐเซเชฅเชจ เชเชชเซ เชเซ. เชตเซเชฌเชนเซเชเซเชธเชจเซ เชเชชเชฏเซเช เชเชฐเชคเซ เชตเชเชคเซ, เชคเชฎเชพเชฐเซ เชคเซเชจเซ เชชเซเชฐเชเซเชฐเชฟเชฏเชพ เชเชฐเชตเชพ เชฎเชพเชเซ เชคเชฎเชพเชฐเซ เชชเซเชคเชพเชจเซ เชธเซเชเซเชฐเชฟเชชเซเช เชฒเชเชตเชพเชจเซ เชเชฐเซเชฐ เชเซ. เช เชธเซเชเซเชฐเชฟเชชเซเชเชจเซ เชเซเชจเชเชฟเชจเซเชธ เชเชจเซเชเชฐเชซเซเชธเชฎเชพเช เชฎเซเชเชตเซ เชชเชกเชถเซ, เชเซ เชเชพเชณเชตเชตเซ เชฎเซเชถเซเชเซเชฒ เชเซ.
- เช เชคเชฎเชพเชฐเซ เช
เชญเชฟเชเชฎ เชจ เชชเชฃ เชนเซเช เชถเชเซ. เชเชฆเชพเชนเชฐเชฃ เชคเชฐเซเชเซ, เชฎเชพเช
-
เชฒเชเชตเซ
เชเซเชฐเซเชจเชเซเชฌ เช เชจเซ เชเซเชฌเชฐเชจเซเชเซเชธ เชเซเชฒเชธเซเชเชฐ เชเชฎเซเชฐเซ.- เชฒเซเชเชจ เช เชจเซ เชธเชฎเชฐเซเชฅเชจ เชชเชพเชเชณ เชธเชฎเชฏ เชชเชธเชพเชฐ เชเชฐเชตเซ.
- เชเชชเชฐเซเชเชฐ เชชเชนเซเชฒเซเชฅเซ เช เชธเชฎเชพเชจ เชถเซเชฒเซเชฎเชพเช เชเชพเชฎ เชเชฐเซ เชเซ, เชฆเชธเซเชคเชพเชตเซเชเซเชเซเชค เช เชจเซ เชธเชชเซเชฐเซเชเซเชก เชเซ.
เชฒเซเช เชชเชฐ เชคเชฎเชพเชฐเซเช เชงเซเชฏเชพเชจ เชเชชเชตเชพ เชฌเชฆเชฒ เชเชญเชพเชฐ.
เชธเซเชฐเซเชธ: www.habr.com