āĻā§āĻ°āĻŋāĻāĻŋāĻāĻ¸! āĻŦā§āĻļāĻŋāĻˇā§āĻā§āĻ¯ āĻļāĻžāĻāĻž (āĻāĻ°āĻĢā§ āĻĄāĻŋāĻĒā§āĻ˛ā§āĻ¯āĻŧ āĻĒā§āĻ°āĻŋāĻāĻŋāĻ, āĻ°āĻŋāĻāĻŋāĻ āĻ ā§āĻ¯āĻžāĻĒ) - āĻāĻāĻŋ āĻ¤āĻāĻ¨āĻ āĻšāĻ¯āĻŧ āĻ¯āĻāĻ¨ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻŽāĻžāĻ¸ā§āĻāĻžāĻ° āĻŦā§āĻ°āĻžāĻā§āĻāĻ āĻŽā§āĻ¤āĻžāĻ¯āĻŧā§āĻ¨ āĻāĻ°āĻž āĻšāĻ¯āĻŧ āĻ¨āĻž, āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻĒā§āĻ˛ āĻ āĻ¨ā§āĻ°ā§āĻ§ āĻāĻāĻāĻŋ āĻ āĻ¨āĻ¨ā§āĻ¯ URL-āĻāĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧāĨ¤ āĻāĻĒāĻ¨āĻŋ āĻā§āĻĄāĻāĻŋ āĻĒā§āĻ°ā§āĻĄāĻžāĻāĻļāĻ¨ āĻĒāĻ°āĻŋāĻŦā§āĻļā§ āĻāĻžāĻ āĻāĻ°ā§ āĻāĻŋāĻ¨āĻž āĻ¤āĻž āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨; āĻŦā§āĻļāĻŋāĻˇā§āĻā§āĻ¯āĻāĻŋ āĻ āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻĒā§āĻ°ā§āĻā§āĻ°āĻžāĻŽāĻžāĻ° āĻŦāĻž āĻĒāĻŖā§āĻ¯ āĻŦāĻŋāĻļā§āĻˇāĻā§āĻāĻĻā§āĻ° āĻĻā§āĻāĻžāĻ¨ā§ āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤ āĻāĻĒāĻ¨āĻŋ āĻāĻāĻāĻŋ āĻĒā§āĻ˛ āĻ āĻ¨ā§āĻ°ā§āĻ§ā§ āĻāĻžāĻ āĻāĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ, āĻĒā§āĻ°āĻžāĻ¨ā§ āĻā§āĻĄā§āĻ° āĻāĻ¨ā§āĻ¯ āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻĒā§āĻ°āĻ¤āĻŋāĻļā§āĻ°ā§āĻ¤āĻŋ āĻŦāĻ°ā§āĻ¤āĻŽāĻžāĻ¨ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨āĻž āĻŽā§āĻā§ āĻĢā§āĻ˛āĻž āĻšāĻ¯āĻŧ, āĻāĻŦāĻ āĻ¨āĻ¤ā§āĻ¨ āĻā§āĻĄā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ¨āĻ¤ā§āĻ¨ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨āĻž āĻ°ā§āĻ˛ āĻāĻāĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧāĨ¤ āĻāĻĒāĻ¨āĻŋ āĻ¯āĻāĻ¨ āĻŽāĻžāĻ¸ā§āĻāĻžāĻ° āĻļāĻžāĻāĻžāĻ¯āĻŧ āĻāĻāĻāĻŋ āĻĒā§āĻ˛ āĻ āĻ¨ā§āĻ°ā§āĻ§ āĻŽāĻžāĻ°ā§āĻ āĻāĻ°ā§āĻ¨ āĻ¤āĻāĻ¨ āĻĒā§āĻ°āĻļā§āĻ¨ āĻāĻ āĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤ āĻāĻĒāĻ¨āĻžāĻ° āĻāĻ° āĻŦā§āĻļāĻŋāĻˇā§āĻā§āĻ¯ āĻļāĻžāĻāĻžāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻ¨ā§āĻ, āĻ¤āĻŦā§ āĻā§āĻŦāĻžāĻ°āĻ¨ā§āĻāĻ¸ āĻ¸āĻāĻ¸ā§āĻĨāĻžāĻ¨āĻā§āĻ˛āĻŋ āĻāĻāĻ¨āĻ āĻā§āĻ˛āĻžāĻ¸ā§āĻāĻžāĻ°ā§ āĻ°āĻ¯āĻŧā§āĻā§āĨ¤
āĻŦā§āĻļāĻŋāĻˇā§āĻā§āĻ¯ āĻļāĻžāĻāĻž āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻāĻ°ā§
āĻā§āĻŦāĻžāĻ°āĻ¨ā§āĻāĻ¸ā§ āĻŦā§āĻļāĻŋāĻˇā§āĻā§āĻ¯ āĻļāĻžāĻāĻž āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻžāĻ° āĻāĻāĻāĻŋ āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻšāĻ˛ āĻ¨āĻžāĻŽāĻ¸ā§āĻĨāĻžāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻžāĨ¤ āĻ¸āĻāĻā§āĻˇā§āĻĒā§, āĻāĻ¤ā§āĻĒāĻžāĻĻāĻ¨ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻāĻ āĻŽāĻ¤ āĻĻā§āĻāĻžāĻ¯āĻŧ:
kind: Namespace
apiVersion: v1
metadata:
name: habr-back-end
...
kind: Deployment
apiVersion: apps/v1
metadata:
namespace: habr-back-end
spec:
replicas: 3
...
āĻāĻāĻāĻŋ āĻŦā§āĻļāĻŋāĻˇā§āĻā§āĻ¯ āĻļāĻžāĻāĻžāĻ° āĻāĻ¨ā§āĻ¯, āĻāĻāĻāĻŋ āĻ¨āĻžāĻŽāĻ¸ā§āĻĨāĻžāĻ¨ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻšāĻ¯āĻŧ āĻ¤āĻžāĻ° āĻļāĻ¨āĻžāĻā§āĻ¤āĻāĻžāĻ°ā§ (āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, āĻĒā§āĻ˛ āĻ āĻ¨ā§āĻ°ā§āĻ§ āĻ¨āĻŽā§āĻŦāĻ°) āĻāĻŦāĻ āĻāĻŋāĻā§ āĻ§āĻ°āĻ¨ā§āĻ° āĻāĻĒāĻ¸āĻ°ā§āĻ/āĻĒā§āĻ¸ā§āĻāĻĢāĻŋāĻā§āĻ¸ (āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, -āĻĒāĻŋāĻāĻ°-):
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
):
- āĻāĻŽāĻ°āĻž āĻļāĻžāĻāĻžāĻ¯āĻŧ āĻāĻāĻāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻĒā§āĻ°āĻ¤āĻŋāĻļā§āĻ°ā§āĻ¤āĻŋ āĻ§āĻžāĻā§āĻāĻž.
- āĻŦāĻŋāĻ˛ā§āĻĄā§, āĻ˛āĻŋāĻ¨ā§āĻāĻžāĻ° āĻāĻŦāĻ/āĻ āĻĨāĻŦāĻž āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻāĻžāĻ˛āĻžāĻ¨ā§ āĻšāĻ¯āĻŧāĨ¤
- āĻā§āĻŦāĻžāĻ°āĻ¨ā§āĻāĻ¸ āĻĒā§āĻ˛ āĻ āĻ¨ā§āĻ°ā§āĻ§ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨āĻā§āĻ˛āĻŋ āĻĢā§āĻ˛āĻžāĻāĻ¤ā§ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻšāĻ¯āĻŧ (āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, āĻāĻ° āĻ¨āĻŽā§āĻŦāĻ°āĻāĻŋ āĻ¸āĻŽāĻžāĻĒā§āĻ¤ āĻā§āĻŽāĻĒā§āĻ˛ā§āĻā§ āĻĸā§āĻāĻžāĻ¨ā§ āĻšāĻ¯āĻŧ)āĨ¤
- kubectl āĻāĻĒā§āĻ˛āĻžāĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§, āĻā§āĻ˛āĻžāĻ¸ā§āĻāĻžāĻ°ā§ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻ¯ā§āĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧ (āĻĄāĻŋāĻĒā§āĻ˛āĻ¯āĻŧ)āĨ¤
- āĻĒā§āĻ˛ āĻ°āĻŋāĻā§āĻ¯āĻŧā§āĻ¸ā§āĻ āĻŽāĻžāĻ¸ā§āĻāĻžāĻ° āĻŦā§āĻ°āĻžāĻā§āĻā§ āĻŽāĻžāĻ°ā§āĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§āĨ¤
āĻāĻĒāĻ¨āĻŋ āĻāĻāĻāĻŋ āĻĒā§āĻ˛ āĻ āĻ¨ā§āĻ°ā§āĻ§ā§ āĻāĻžāĻ āĻāĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ, āĻĒā§āĻ°āĻžāĻ¨ā§ āĻā§āĻĄā§āĻ° āĻāĻ¨ā§āĻ¯ āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻĒā§āĻ°āĻ¤āĻŋāĻļā§āĻ°ā§āĻ¤āĻŋ āĻŦāĻ°ā§āĻ¤āĻŽāĻžāĻ¨ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨āĻž āĻŽā§āĻā§ āĻĢā§āĻ˛āĻž āĻšāĻ¯āĻŧ, āĻāĻŦāĻ āĻ¨āĻ¤ā§āĻ¨ āĻā§āĻĄā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ¨āĻ¤ā§āĻ¨ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨āĻž āĻ°ā§āĻ˛ āĻāĻāĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧāĨ¤ āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻ¯āĻāĻ¨ āĻāĻāĻāĻŋ āĻĒā§āĻ˛ āĻ āĻ¨ā§āĻ°ā§āĻ§ āĻŽāĻžāĻ¸ā§āĻāĻžāĻ° āĻļāĻžāĻāĻžāĻ¯āĻŧ āĻāĻāĻ¤ā§āĻ°āĻŋāĻ¤ āĻāĻ°āĻž āĻšāĻ¯āĻŧ, āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻŽāĻžāĻ¸ā§āĻāĻžāĻ° āĻļāĻžāĻāĻž āĻ¨āĻŋāĻ°ā§āĻŽāĻŋāĻ¤ āĻšāĻŦā§āĨ¤ āĻĢāĻ˛āĻ¸ā§āĻŦāĻ°ā§āĻĒ, āĻāĻāĻŋ āĻĻā§āĻāĻž āĻ¯āĻžāĻā§āĻā§ āĻ¯ā§ āĻāĻŽāĻ°āĻž āĻāĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§āĻ āĻĒā§āĻ˛ āĻ āĻ¨ā§āĻ°ā§āĻ§āĻāĻŋ āĻā§āĻ˛ā§ āĻā§āĻāĻŋ āĻāĻŦāĻ āĻāĻ° āĻā§āĻŦāĻžāĻ°āĻ¨ā§āĻāĻ¸ āĻ¸āĻāĻ¸ā§āĻĨāĻžāĻ¨āĻā§āĻ˛āĻŋ āĻāĻāĻ¨āĻ āĻā§āĻ˛āĻžāĻ¸ā§āĻāĻžāĻ°ā§ āĻ°āĻ¯āĻŧā§āĻā§āĨ¤
āĻāĻŋāĻāĻžāĻŦā§ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻ¤ā§ āĻšāĻŦā§
āĻ¨ā§āĻā§āĻ° āĻāĻŽāĻžāĻ¨ā§āĻĄ āĻĻāĻŋāĻ¯āĻŧā§ āĻĒā§āĻ°āĻāĻ˛ā§āĻĒāĻāĻŋ āĻāĻ¨āĻ¸ā§āĻāĻ˛ āĻāĻ°ā§āĻ¨:
$ 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
.
āĻ¸ā§āĻĨāĻŋāĻ¤āĻŋāĻŽāĻžāĻĒ afterDaysWithout Deploy āĻĒā§āĻ°āĻžāĻ¨ā§ āĻ¨āĻžāĻŽāĻ¸ā§āĻĨāĻžāĻ¨ āĻŽā§āĻā§ āĻĢā§āĻ˛āĻžāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨āĨ¤ āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, āĻ¯āĻĻāĻŋ āĻ¨āĻžāĻŽāĻ¸ā§āĻĨāĻžāĻ¨ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻšāĻ¯āĻŧ 3 Đ´ĐŊŅ 1 ŅĐ°Ņ
āĻĢāĻŋāĻ°ā§, āĻāĻŦāĻ āĻĒāĻ°āĻžāĻŽāĻŋāĻ¤āĻŋ āĻ¨āĻŋāĻ°ā§āĻĻā§āĻļ āĻāĻ°ā§ 3 Đ´ĐŊŅ
, āĻāĻ āĻ¨āĻžāĻŽāĻ¸ā§āĻĨāĻžāĻ¨ āĻŽā§āĻā§ āĻĢā§āĻ˛āĻž āĻšāĻŦā§āĨ¤ āĻ¨āĻžāĻŽāĻ¸ā§āĻĨāĻžāĻ¨ āĻ¤ā§āĻ°āĻŋ āĻšāĻ˛ā§ āĻāĻāĻŋ āĻŦāĻŋāĻĒāĻ°ā§āĻ¤ āĻĻāĻŋāĻā§āĻ āĻāĻžāĻ āĻāĻ°ā§ 2 Đ´ĐŊŅ 23 ŅĐ°ŅĐ°
āĻĢāĻŋāĻ°ā§, āĻāĻŦāĻ āĻĒāĻ°āĻžāĻŽāĻŋāĻ¤āĻŋ āĻ¨āĻŋāĻ°ā§āĻĻā§āĻļ āĻāĻ°ā§ 3 Đ´ĐŊŅ
, āĻāĻ āĻ¨āĻžāĻŽāĻ¸ā§āĻĨāĻžāĻ¨ āĻŽā§āĻā§ āĻĢā§āĻ˛āĻž āĻšāĻŦā§ āĻ¨āĻžāĨ¤
āĻāĻ°āĻ āĻāĻāĻāĻŋ āĻĒāĻ°āĻžāĻŽāĻŋāĻ¤āĻŋ āĻ°āĻ¯āĻŧā§āĻā§, āĻāĻ¤ āĻāĻ¨ āĻāĻ¨ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ¨āĻžāĻŽāĻ¸ā§āĻĨāĻžāĻ¨ āĻ¸ā§āĻā§āĻ¯āĻžāĻ¨ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§ āĻāĻŦāĻ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨āĻž āĻāĻžāĻĄāĻŧāĻžāĻ āĻĻāĻŋāĻ¨āĻā§āĻ˛āĻŋ āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻāĻ°āĻ¤ā§ āĻšāĻŦā§ āĻ¤āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻŋ āĻĻāĻžāĻ¯āĻŧā§ - āĻĒā§āĻ°āĻ¤āĻŋ āĻŽāĻŋāĻ¨āĻŋāĻā§ āĻā§āĻ āĻāĻ°ā§āĻ¨. āĻĄāĻŋāĻĢāĻ˛ā§āĻāĻ°ā§āĻĒā§ āĻāĻāĻŋ āĻ¸āĻŽāĻžāĻ¨ 30 ĐŧиĐŊŅŅĐ°Đŧ
.
āĻāĻā§āĻ˛ā§ āĻāĻŋāĻāĻžāĻŦā§ āĻāĻžāĻ āĻāĻ°ā§
āĻ āĻ¨ā§āĻļā§āĻ˛āĻ¨ā§, āĻāĻĒāĻ¨āĻžāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻšāĻŦā§:
āĻĄāĻāĻļā§āĻ°āĻŽāĻŋāĻ āĻāĻāĻāĻŋ āĻŦāĻŋāĻā§āĻāĻŋāĻ¨ā§āĻ¨ āĻĒāĻ°āĻŋāĻŦā§āĻļā§ āĻāĻžāĻ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯āĨ¤āĻŽāĻŋāĻ¨āĻŋāĻāĨā¤¯āĨā¤Ŧ āĻ¸ā§āĻĨāĻžāĻ¨ā§āĻ¯āĻŧāĻāĻžāĻŦā§ āĻāĻāĻāĻŋ Kubernetes āĻā§āĻ˛āĻžāĻ¸ā§āĻāĻžāĻ° āĻŦāĻžāĻĄāĻŧāĻžāĻŦā§āĨ¤āĻā§āĻŦā§āĻā§āĻā§āĻ˛ - āĻā§āĻ˛āĻžāĻ¸ā§āĻāĻžāĻ° āĻĒāĻ°āĻŋāĻāĻžāĻ˛āĻ¨āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻŽāĻžāĻ¨ā§āĻĄ āĻ˛āĻžāĻāĻ¨ āĻāĻ¨ā§āĻāĻžāĻ°āĻĢā§āĻ¸āĨ¤
āĻāĻŽāĻ°āĻž āĻ¸ā§āĻĨāĻžāĻ¨ā§āĻ¯āĻŧāĻāĻžāĻŦā§ āĻāĻāĻāĻŋ 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
āĻ¯ā§āĻšā§āĻ¤ā§ āĻĒā§āĻ°ā§āĻĄāĻžāĻāĻļāĻ¨ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨āĻā§āĻ˛āĻŋ āĻĒā§āĻ°āĻžāĻ¨ā§ āĻ¨āĻžāĻŽāĻ¸ā§āĻĨāĻžāĻ¨ āĻā§āĻ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ° āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§, āĻāĻŦāĻ āĻāĻŽāĻžāĻĻā§āĻ° āĻ¨āĻ¤ā§āĻ¨ āĻāĻ¤ā§āĻĨāĻžāĻĒāĻŋāĻ¤ āĻā§āĻ˛āĻžāĻ¸ā§āĻāĻžāĻ°ā§ āĻ¸ā§āĻā§āĻ˛āĻŋ āĻ¨ā§āĻ, āĻ¤āĻžāĻ āĻāĻŽāĻ°āĻž āĻĒāĻ°āĻŋāĻŦā§āĻļ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨āĻļā§āĻ˛āĻāĻŋ āĻĒā§āĻ°āĻ¤āĻŋāĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻ°āĻŦ 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
āĻāĻ¯āĻŧā§āĻāĻŦāĻžāĻ° āĻāĻŦāĻ āĻ¨āĻŋāĻļā§āĻāĻŋāĻ¤ āĻāĻ°ā§āĻ¨ āĻ¯ā§ āĻ¤āĻžāĻ°āĻž āĻāĻ āĻŽāĻŋāĻ¨āĻŋāĻā§āĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻ¸āĻ°āĻžāĻ¨ā§ āĻšāĻ¯āĻŧā§āĻā§āĨ¤
āĻŦāĻŋāĻāĻ˛ā§āĻĒ
āĻāĻāĻāĻŋ āĻā§āĻ˛āĻžāĻ¸ā§āĻāĻžāĻ°ā§ āĻāĻžāĻ āĻāĻ°ā§ āĻāĻŽāĻ¨ āĻāĻāĻāĻ¨ āĻ āĻĒāĻžāĻ°ā§āĻāĻ°ā§āĻ° āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤ā§ āĻā§ āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§? āĻŦā§āĻļ āĻāĻ¯āĻŧā§āĻāĻāĻŋ āĻĒāĻ¨ā§āĻĨāĻž āĻ°āĻ¯āĻŧā§āĻā§, āĻ¸ā§āĻā§āĻ˛āĻŋ āĻ¸āĻŦāĻ āĻ āĻ¸āĻŋāĻĻā§āĻ§ (āĻāĻŦāĻ āĻ¤āĻžāĻĻā§āĻ° āĻ¤ā§āĻ°ā§āĻāĻŋāĻā§āĻ˛āĻŋ āĻŦāĻŋāĻˇāĻ¯āĻŧāĻāĻ¤), āĻāĻŦāĻ āĻĒā§āĻ°āĻ¤ā§āĻ¯ā§āĻā§ āĻ¨āĻŋāĻā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ¸āĻŋāĻĻā§āĻ§āĻžāĻ¨ā§āĻ¤ āĻ¨ā§āĻ¯āĻŧ āĻāĻāĻāĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻĒā§āĻ°āĻāĻ˛ā§āĻĒā§āĻ° āĻāĻ¨ā§āĻ¯ āĻā§ āĻ¸ā§āĻ°āĻž:
-
āĻŽāĻžāĻ¸ā§āĻāĻžāĻ° āĻļāĻžāĻāĻžāĻ° āĻā§āĻ°āĻŽāĻžāĻāĻ¤ āĻāĻ¨ā§āĻāĻŋāĻā§āĻ°ā§āĻļāĻ¨ āĻŦāĻŋāĻ˛ā§āĻĄ āĻāĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻŦā§āĻļāĻŋāĻˇā§āĻā§āĻ¯ āĻļāĻžāĻāĻž āĻŽā§āĻā§āĻ¨āĨ¤
- āĻāĻāĻŋ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯, āĻāĻĒāĻ¨āĻžāĻā§ āĻāĻžāĻ¨āĻ¤ā§ āĻšāĻŦā§ āĻ¯ā§ āĻā§āĻ¨ āĻĒā§āĻ˛ āĻ āĻ¨ā§āĻ°ā§āĻ§āĻāĻŋ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻšāĻā§āĻā§ āĻ¤āĻžāĻ° āĻ¸āĻžāĻĨā§ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻāĻŋāĻ¤āĨ¤ āĻ¯ā§āĻšā§āĻ¤ā§ āĻŦā§āĻļāĻŋāĻˇā§āĻā§āĻ¯ āĻļāĻžāĻāĻžāĻ° āĻ¨āĻžāĻŽāĻ¸ā§āĻĨāĻžāĻ¨ā§ āĻĒā§āĻ˛ āĻ āĻ¨ā§āĻ°ā§āĻ§ āĻļāĻ¨āĻžāĻā§āĻ¤āĻāĻžāĻ°ā§ āĻ°āĻ¯āĻŧā§āĻā§ - āĻāĻ° āĻ¨āĻŽā§āĻŦāĻ°, āĻŦāĻž āĻļāĻžāĻāĻžāĻ° āĻ¨āĻžāĻŽ, āĻ¤āĻžāĻ āĻļāĻ¨āĻžāĻā§āĻ¤āĻāĻžāĻ°ā§āĻā§ āĻ¸āĻ°ā§āĻŦāĻĻāĻž āĻĒā§āĻ°āĻ¤āĻŋāĻļā§āĻ°ā§āĻ¤āĻŋāĻ¤ā§ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§āĨ¤
- āĻŽāĻžāĻ¸ā§āĻāĻžāĻ° āĻļāĻžāĻāĻž āĻ¨āĻŋāĻ°ā§āĻŽāĻžāĻŖ āĻŦā§āĻ¯āĻ°ā§āĻĨ āĻšāĻ¯āĻŧ. āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, āĻāĻĒāĻ¨āĻžāĻ° āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻāĻŋāĻ¤ āĻ§āĻžāĻĒāĻā§āĻ˛āĻŋ āĻ°āĻ¯āĻŧā§āĻā§: āĻĒā§āĻ°āĻāĻ˛ā§āĻĒāĻāĻŋ āĻĄāĻžāĻāĻ¨āĻ˛ā§āĻĄ āĻāĻ°ā§āĻ¨, āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻāĻžāĻ˛āĻžāĻ¨, āĻĒā§āĻ°āĻāĻ˛ā§āĻĒāĻāĻŋ āĻ¤ā§āĻ°āĻŋ āĻāĻ°ā§āĻ¨, āĻāĻāĻāĻŋ āĻĒā§āĻ°āĻāĻžāĻļ āĻāĻ°ā§āĻ¨, āĻŦāĻŋāĻā§āĻāĻĒā§āĻ¤āĻŋ āĻĒāĻžāĻ āĻžāĻ¨, āĻļā§āĻˇ āĻĒā§āĻ˛ āĻ āĻ¨ā§āĻ°ā§āĻ§ā§āĻ° āĻŦā§āĻļāĻŋāĻˇā§āĻā§āĻ¯ āĻļāĻžāĻāĻžāĻāĻŋ āĻ¸āĻžāĻĢ āĻāĻ°ā§āĻ¨ā§ˇ āĻāĻāĻāĻŋ āĻŦāĻŋāĻā§āĻāĻĒā§āĻ¤āĻŋ āĻĒāĻžāĻ āĻžāĻ¨ā§āĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻŦāĻŋāĻ˛ā§āĻĄ āĻŦā§āĻ¯āĻ°ā§āĻĨ āĻšāĻ˛ā§, āĻāĻĒāĻ¨āĻžāĻā§ āĻā§āĻ˛āĻžāĻ¸ā§āĻāĻžāĻ°ā§āĻ° āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ¸āĻāĻ¸ā§āĻĨāĻžāĻ¨ āĻŽā§āĻ¯āĻžāĻ¨ā§āĻ¯āĻŧāĻžāĻ˛āĻŋ āĻŽā§āĻāĻ¤ā§ āĻšāĻŦā§āĨ¤
- āĻ¸āĻ āĻŋāĻ āĻĒā§āĻ°āĻ¸āĻā§āĻ āĻāĻžāĻĄāĻŧāĻž, āĻŽāĻžāĻ¸ā§āĻāĻžāĻ° āĻŦāĻŋāĻ˛ā§āĻĄā§ āĻŦā§āĻļāĻŋāĻˇā§āĻā§āĻ¯ āĻļāĻžāĻāĻžāĻā§āĻ˛āĻŋ āĻŽā§āĻā§ āĻĢā§āĻ˛āĻž āĻ¸ā§āĻ¸ā§āĻĒāĻˇā§āĻ āĻ¨āĻ¯āĻŧāĨ¤
-
āĻāĻ¯āĻŧā§āĻŦāĻšā§āĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ (
āĻāĻĻāĻžāĻšāĻ°āĻŖ ).- āĻāĻāĻŋ āĻāĻĒāĻ¨āĻžāĻ° āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻ¨āĻžāĻ āĻšāĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤ āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, āĻŽāĻ§ā§āĻ¯ā§
āĻā§āĻ¨āĻāĻŋāĻ¨ā§āĻ¸ , āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻāĻ āĻ§āĻ°āĻ¨ā§āĻ° āĻĒāĻžāĻāĻĒāĻ˛āĻžāĻāĻ¨ āĻ¸ā§āĻ°ā§āĻ¸ āĻā§āĻĄā§ āĻāĻ° āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻ¸āĻāĻ°āĻā§āĻˇāĻŖ āĻāĻ°āĻžāĻ° āĻā§āĻˇāĻŽāĻ¤āĻž āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻāĻ°ā§āĨ¤ āĻāĻ¯āĻŧā§āĻŦāĻšā§āĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ, āĻ¸ā§āĻā§āĻ˛āĻŋ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻĒāĻ¨āĻžāĻā§ āĻ¨āĻŋāĻā§āĻ° āĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻ āĻ˛āĻŋāĻāĻ¤ā§ āĻšāĻŦā§āĨ¤ āĻāĻ āĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻāĻāĻŋ āĻā§āĻ¨āĻāĻŋāĻ¨ā§āĻ¸ āĻāĻ¨ā§āĻāĻžāĻ°āĻĢā§āĻ¸ā§ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§, āĻ¯āĻž āĻŦāĻāĻžāĻ¯āĻŧ āĻ°āĻžāĻāĻž āĻāĻ āĻŋāĻ¨āĨ¤
- āĻāĻāĻŋ āĻāĻĒāĻ¨āĻžāĻ° āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻ¨āĻžāĻ āĻšāĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤ āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, āĻŽāĻ§ā§āĻ¯ā§
-
āĻ˛ā§āĻāĻž
āĻā§āĻ°ā§āĻ¨āĻāĻŦ āĻāĻŦāĻ āĻāĻāĻāĻŋ Kubernetes āĻā§āĻ˛āĻžāĻ¸ā§āĻāĻžāĻ° āĻ¯ā§āĻ āĻāĻ°ā§āĻ¨āĨ¤- āĻ˛ā§āĻāĻžāĻ˛ā§āĻāĻŋ āĻāĻŦāĻ āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ā§ āĻ¸āĻŽāĻ¯āĻŧ āĻŦā§āĻ¯āĻ¯āĻŧ āĻāĻ°āĻžāĨ¤
- āĻ āĻĒāĻžāĻ°ā§āĻāĻ° āĻāĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§ āĻāĻāĻāĻŋ āĻ āĻ¨ā§āĻ°ā§āĻĒ āĻļā§āĻ˛ā§ āĻāĻžāĻ āĻāĻ°ā§, āĻ¨āĻĨāĻŋāĻā§āĻā§āĻ¤ āĻāĻŦāĻ āĻ¸āĻŽāĻ°ā§āĻĨāĻŋāĻ¤.
āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ā§ āĻāĻĒāĻ¨āĻžāĻ° āĻŽāĻ¨ā§āĻ¯ā§āĻā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻĒāĻ¨āĻžāĻā§ āĻ§āĻ¨ā§āĻ¯āĻŦāĻžāĻĻ.
āĻāĻ¤ā§āĻ¸: www.habr.com