āĻšā§ āĻšāĻžāĻŦāĻ°!
āĻā§āĻ°ā§āĻˇā§āĻŽā§āĻ° āĻļā§āĻˇā§, āĻāĻŽāĻ°āĻž āĻāĻĒāĻ¨āĻžāĻā§ āĻŽāĻ¨ā§ āĻāĻ°āĻŋāĻ¯āĻŧā§ āĻĻāĻŋāĻ¤ā§ āĻāĻžāĻ āĻ¯ā§ āĻāĻŽāĻ°āĻž āĻāĻ āĻŦāĻŋāĻˇāĻ¯āĻŧā§ āĻāĻžāĻ āĻāĻžāĻ˛āĻŋāĻ¯āĻŧā§ āĻ¯āĻžāĻā§āĻāĻŋ
āĻĒāĻĄāĻŧāĻžāĻ° āĻāĻĒāĻā§āĻ āĻāĻ°ā§āĻ¨!
āĻāĻ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻāĻŋ āĻ˛ā§āĻāĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ, āĻā§āĻŦāĻžāĻ°āĻ¨ā§āĻāĻ¸ā§āĻ° āĻŦāĻ¯āĻŧāĻ¸ āĻĒā§āĻ°āĻžāĻ¯āĻŧāĨ¤
āĻ˛āĻŋāĻ¨āĻžāĻā§āĻ¸ā§ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻā§āĻ˛āĻŋ āĻŦāĻŋāĻā§āĻāĻŋāĻ¨ā§āĻ¨ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻ¨ā§āĻā§āĻāĻ¨āĻžāĻ°āĻā§āĻ˛āĻŋ āĻāĻāĻāĻŋ āĻŦāĻŋāĻļā§āĻˇ āĻ¨āĻāĻļāĻž āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻļā§āĻ°ā§ āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛; āĻĒāĻžāĻ¤ā§āĻ°ā§ 2007 āĻ¸āĻžāĻ˛ āĻĨā§āĻā§ āĻ
āĻ¨ā§āĻ¤āĻ°ā§āĻā§āĻā§āĻ¤ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§
āĻā§āĻŦāĻžāĻ°āĻ¨ā§āĻāĻ¸ āĻā§āĻ¨ āĻāĻ¤ āĻāĻ¨āĻĒā§āĻ°āĻŋāĻ¯āĻŧ āĻ¤āĻž āĻŦā§āĻāĻžāĻ° āĻā§āĻˇā§āĻāĻž āĻāĻ°ā§āĻ¨, āĻāĻ¸ā§āĻ¨ āĻāĻ¯āĻŧā§āĻāĻāĻŋ āĻĒā§āĻ°āĻļā§āĻ¨ā§āĻ° āĻāĻ¤ā§āĻ¤āĻ° āĻĻā§āĻāĻ¯āĻŧāĻžāĻ° āĻā§āĻˇā§āĻāĻž āĻāĻ°āĻŋāĨ¤ āĻļā§āĻˇāĻŦāĻžāĻ° āĻāĻāĻ¨ āĻĄā§āĻā§āĻ˛āĻĒāĻžāĻ°āĻ°āĻž āĻ¸āĻŽā§āĻŽāĻ¤ āĻšāĻ¤ā§ āĻĒā§āĻ°ā§āĻāĻŋāĻ˛ āĻāĻŋāĻāĻžāĻŦā§ āĻĒā§āĻ°ā§āĻĄāĻžāĻāĻļāĻ¨ā§ āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻ°āĻ¤ā§ āĻšāĻ¯āĻŧ? āĻāĻĒāĻ¨āĻŋ āĻāĻ¤āĻāĻ¨ āĻŦāĻŋāĻāĻžāĻļāĻāĻžāĻ°ā§āĻā§ āĻāĻžāĻ¨ā§āĻ¨ āĻ¯āĻžāĻ°āĻž āĻŦāĻžāĻā§āĻ¸ā§āĻ° āĻŦāĻžāĻāĻ°ā§ āĻ¸āĻ°āĻŦāĻ°āĻžāĻš āĻāĻ°āĻž āĻ¸āĻ°āĻā§āĻāĻžāĻŽāĻā§āĻ˛āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§? āĻāĻ āĻāĻ¤āĻāĻ¨ āĻā§āĻ˛āĻžāĻāĻĄ āĻĒā§āĻ°āĻļāĻžāĻ¸āĻ āĻāĻā§āĻ¨ āĻ¯āĻžāĻ°āĻž āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨āĻā§āĻ˛āĻŋ āĻā§āĻāĻžāĻŦā§ āĻāĻžāĻ āĻāĻ°ā§ āĻ¤āĻž āĻŦā§āĻā§āĻ¨ āĻ¨āĻž? āĻāĻŽāĻ°āĻž āĻāĻ āĻĒā§āĻ°āĻŦāĻ¨ā§āĻ§ā§ āĻāĻ āĻĒā§āĻ°āĻļā§āĻ¨āĻā§āĻ˛ā§āĻ° āĻāĻ¤ā§āĻ¤āĻ° āĻĻā§āĻāĻŦāĨ¤
YAML āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻĒāĻ°āĻŋāĻāĻžāĻ āĻžāĻŽā§
āĻĒāĻžāĻĒā§āĻ āĻāĻŦāĻ āĻļā§āĻĢ āĻĨā§āĻā§ āĻā§āĻŦāĻžāĻ°āĻ¨ā§āĻā§ āĻāĻ˛ā§ āĻ¯āĻžāĻāĻ¯āĻŧāĻž āĻŦāĻŋāĻļā§āĻŦā§, āĻ¸āĻŦāĻā§āĻ¯āĻŧā§ āĻŦāĻĄāĻŧ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨āĻā§āĻ˛āĻŋāĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻāĻāĻāĻŋ āĻšāĻ˛ "āĻā§āĻĄ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻ āĻŦāĻāĻžāĻ āĻžāĻŽā§" āĻĨā§āĻā§ "āĻĄā§āĻāĻž āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻĒāĻ°āĻŋāĻāĻžāĻ āĻžāĻŽā§" - āĻŦāĻŋāĻļā§āĻˇāĻ¤, YAML āĻāĻ° āĻŽāĻ¤ā§āĨ¤ āĻā§āĻŦāĻžāĻ°āĻ¨ā§āĻāĻ¸ā§āĻ° āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ¸āĻāĻ¸ā§āĻĨāĻžāĻ¨, āĻ¯āĻžāĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻ°āĻ¯āĻŧā§āĻā§ āĻĒāĻĄ, āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨, āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻ°āĻž āĻāĻĻāĻžāĻšāĻ°āĻŖ, āĻāĻ˛āĻŋāĻāĻŽ āĻāĻ¤ā§āĻ¯āĻžāĻĻāĻŋ, āĻāĻāĻāĻŋ YAML āĻĢāĻžāĻāĻ˛ā§ āĻ¸āĻšāĻā§āĻ āĻŦāĻ°ā§āĻŖāĻ¨āĻž āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤ āĻāĻĻāĻžāĻšāĻ°āĻŖ āĻ¸ā§āĻŦāĻ°ā§āĻĒ:
apiVersion: v1
kind: Pod
metadata:
name: site
labels:
app: web
spec:
containers:
- name: front-end
image: nginx
ports:
- containerPort: 80
āĻāĻ āĻĻā§āĻļā§āĻ¯āĻāĻŋ DevOps āĻŦāĻž SRE āĻĒā§āĻļāĻžāĻĻāĻžāĻ°āĻĻā§āĻ° āĻāĻ¨ā§āĻ¯ Python āĻŦāĻž Javascript-āĻāĻ° āĻŽāĻ¤ā§ āĻāĻžāĻˇāĻžāĻ¯āĻŧ āĻā§āĻĄ āĻ¨āĻž āĻ˛āĻŋāĻā§āĻ āĻ¤āĻžāĻĻā§āĻ° āĻāĻžāĻā§āĻ° āĻāĻžāĻĒ āĻ¸āĻŽā§āĻĒā§āĻ°ā§āĻŖāĻ°ā§āĻĒā§ āĻĒā§āĻ°āĻāĻžāĻļ āĻāĻ°āĻž āĻ¸āĻšāĻ āĻāĻ°ā§ āĻ¤ā§āĻ˛ā§āĨ¤
āĻĄā§āĻāĻž āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻ āĻŦāĻāĻžāĻ āĻžāĻŽā§ āĻ¸āĻāĻāĻ āĻŋāĻ¤ āĻāĻ°āĻžāĻ° āĻ āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻ¸ā§āĻŦāĻŋāĻ§āĻžāĻā§āĻ˛āĻŋāĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻ°āĻ¯āĻŧā§āĻā§:
- GitOps āĻŦāĻž Git āĻ āĻĒāĻžāĻ°ā§āĻļāĻ¨ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ āĻ¨āĻŋāĻ¯āĻŧāĻ¨ā§āĻ¤ā§āĻ°āĻŖāĨ¤ āĻāĻ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻ° āĻ¸āĻžāĻšāĻžāĻ¯ā§āĻ¯ā§ āĻāĻĒāĻ¨āĻŋ āĻ¸āĻŽāĻ¸ā§āĻ¤ Kubernetes YAML āĻĢāĻžāĻāĻ˛āĻā§āĻ˛āĻŋāĻā§ āĻāĻŋāĻ āĻ°āĻŋāĻĒā§āĻāĻŋāĻāĻ°āĻŋāĻ¤ā§ āĻ°āĻžāĻāĻ¤ā§ āĻĒāĻžāĻ°āĻŦā§āĻ¨, āĻ¯āĻžāĻ¤ā§ āĻāĻĒāĻ¨āĻŋ āĻ āĻŋāĻ āĻāĻāĻ¨ āĻāĻāĻāĻŋ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛, āĻā§ āĻāĻāĻŋ āĻāĻ°ā§āĻā§ āĻāĻŦāĻ āĻ āĻŋāĻ āĻā§ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻšāĻ¯āĻŧā§āĻā§ āĻ¤āĻž āĻā§āĻ°ā§āĻ¯āĻžāĻ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨āĨ¤ āĻāĻāĻŋ āĻ¸āĻŽāĻā§āĻ° āĻ¸āĻāĻ¸ā§āĻĨāĻž āĻā§āĻĄāĻŧā§ āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻāĻ˛āĻžāĻĒā§āĻ° āĻ¸ā§āĻŦāĻā§āĻāĻ¤āĻž āĻŦāĻžāĻĄāĻŧāĻžāĻ¯āĻŧ āĻāĻŦāĻ āĻ āĻ¸ā§āĻĒāĻˇā§āĻāĻ¤āĻž āĻĻā§āĻ° āĻāĻ°ā§ āĻ āĻĒāĻžāĻ°ā§āĻļāĻ¨āĻžāĻ˛ āĻĻāĻā§āĻˇāĻ¤āĻž āĻāĻ¨ā§āĻ¨āĻ¤ āĻāĻ°ā§, āĻŦāĻŋāĻļā§āĻˇ āĻāĻ°ā§ āĻ¯ā§āĻāĻžāĻ¨ā§ āĻāĻ°ā§āĻŽā§āĻĻā§āĻ° āĻ¤āĻžāĻĻā§āĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧ āĻ¸āĻāĻ¸ā§āĻĨāĻžāĻ¨āĻā§āĻ˛āĻŋ āĻ¸āĻ¨ā§āĻ§āĻžāĻ¨ āĻāĻ°āĻž āĻāĻāĻŋāĻ¤āĨ¤ āĻāĻāĻ āĻ¸āĻŽāĻ¯āĻŧā§, āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻāĻāĻāĻŋ āĻĒā§āĻ˛ āĻ āĻ¨ā§āĻ°ā§āĻ§ āĻŽāĻžāĻ°ā§āĻ āĻāĻ°ā§ āĻā§āĻŦāĻžāĻ°āĻ¨ā§āĻāĻ¸ āĻ¸āĻāĻ¸ā§āĻĨāĻžāĻ¨āĻā§āĻ˛āĻŋāĻ¤ā§ āĻ¸ā§āĻŦāĻ¯āĻŧāĻāĻā§āĻ°āĻŋāĻ¯āĻŧāĻāĻžāĻŦā§ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ°āĻž āĻ¸āĻšāĻ āĻšāĻ¯āĻŧā§ āĻ¯āĻžāĻ¯āĻŧāĨ¤
- āĻĒāĻ°āĻŋāĻŽāĻžāĻĒāĻ¯ā§āĻā§āĻ¯āĻ¤āĻžāĨ¤ āĻ¯āĻāĻ¨ āĻ¸āĻāĻ¸ā§āĻĨāĻžāĻ¨āĻā§āĻ˛āĻŋāĻā§ YAML āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻ¸āĻāĻā§āĻāĻžāĻ¯āĻŧāĻŋāĻ¤ āĻāĻ°āĻž āĻšāĻ¯āĻŧ, āĻ¤āĻāĻ¨ āĻā§āĻ˛āĻžāĻ¸ā§āĻāĻžāĻ° āĻ āĻĒāĻžāĻ°ā§āĻāĻ°āĻĻā§āĻ° āĻāĻ¨ā§āĻ¯ āĻā§āĻŦāĻžāĻ°āĻ¨ā§āĻāĻ¸ āĻ°āĻŋāĻ¸ā§āĻ°ā§āĻ¸ā§ āĻāĻ āĻŦāĻž āĻĻā§āĻāĻŋ āĻ¸āĻāĻā§āĻ¯āĻž āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ°āĻž āĻ āĻ¤ā§āĻ¯āĻ¨ā§āĻ¤ āĻ¸āĻšāĻ āĻšāĻ¯āĻŧā§ āĻ¯āĻžāĻ¯āĻŧ, āĻ¯āĻžāĻ° āĻĢāĻ˛ā§ āĻāĻāĻŋ āĻā§āĻāĻžāĻŦā§ āĻ¸ā§āĻā§āĻ˛ āĻšāĻ¯āĻŧ āĻ¤āĻž āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ°ā§āĨ¤ āĻā§āĻŦāĻžāĻ°āĻ¨ā§āĻāĻ¸ āĻĒāĻĄāĻā§āĻ˛āĻŋāĻ° āĻ āĻ¨ā§āĻā§āĻŽāĻŋāĻ āĻ āĻā§āĻ¸ā§āĻā§āĻ˛āĻŋāĻāĻ¯āĻŧā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻ¸āĻ°āĻŦāĻ°āĻžāĻš āĻāĻ°ā§, āĻ¯āĻž āĻ¨āĻŋāĻŽā§āĻ¨ āĻāĻŦāĻ āĻāĻā§āĻ āĻ¸ā§āĻ¤āĻ°ā§āĻ° āĻā§āĻ°ā§āĻ¯āĻžāĻĢāĻŋāĻ āĻĒāĻ°āĻŋāĻāĻžāĻ˛āĻ¨āĻž āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨āĻžāĻ° āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ā§ āĻ¸āĻ°ā§āĻŦāĻ¨āĻŋāĻŽā§āĻ¨ āĻāĻŦāĻ āĻ¸āĻ°ā§āĻŦāĻžāĻ§āĻŋāĻ āĻ¸āĻāĻā§āĻ¯āĻ āĻĒāĻĄā§āĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻ¤āĻž āĻ¸āĻšāĻā§āĻ āĻ¨āĻŋāĻ°ā§āĻ§āĻžāĻ°āĻŖ āĻāĻ°āĻ¤ā§ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤ āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, āĻ¯āĻĻāĻŋ āĻāĻĒāĻ¨āĻŋ āĻāĻŽāĻ¨ āĻāĻāĻāĻŋ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻ°ā§āĻ¨ āĻ¯āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻšāĻ āĻžā§ āĻā§āĻ°āĻžāĻĢāĻŋāĻā§āĻ° āĻŦā§āĻĻā§āĻ§āĻŋāĻ° āĻāĻžāĻ°āĻŖā§ āĻ āĻ¤āĻŋāĻ°āĻŋāĻā§āĻ¤ āĻā§āĻˇāĻŽāĻ¤āĻžāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻšāĻ¯āĻŧ, āĻ¤āĻžāĻšāĻ˛ā§ maxReplicas 10 āĻĨā§āĻā§ 20 āĻ¤ā§ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§:
apiVersion: autoscaling/v2beta2
kind: HorizontalPodAutoscaler
metadata:
name: myapp
namespace: default
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: myapp-deployment
minReplicas: 1
maxReplicas: 20
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 50
- āĻ¨āĻŋāĻ°āĻžāĻĒāĻ¤ā§āĻ¤āĻž āĻāĻŦāĻ āĻŦā§āĻ¯āĻŦāĻ¸ā§āĻĨāĻžāĻĒāĻ¨āĻžāĨ¤ āĻā§āĻŦāĻžāĻ°āĻ¨ā§āĻāĻ¸ā§ āĻāĻŋāĻ¨āĻŋāĻ¸āĻā§āĻ˛āĻŋ āĻā§āĻāĻžāĻŦā§ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻ°āĻž āĻšāĻ¯āĻŧ āĻ¤āĻž āĻŽā§āĻ˛ā§āĻ¯āĻžāĻ¯āĻŧāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ YAML āĻĻā§āĻ°ā§āĻĻāĻžāĻ¨ā§āĻ¤āĨ¤ āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, āĻāĻāĻāĻŋ āĻĒā§āĻ°āĻ§āĻžāĻ¨ āĻ¨āĻŋāĻ°āĻžāĻĒāĻ¤ā§āĻ¤āĻž āĻāĻĻā§āĻŦā§āĻ āĻāĻĻā§āĻŦāĻŋāĻā§āĻ¨ āĻ¯ā§ āĻāĻĒāĻ¨āĻžāĻ° āĻāĻžāĻā§āĻ° āĻāĻžāĻĒāĻā§āĻ˛āĻŋ āĻāĻāĻāĻ¨ āĻ¨āĻ¨-āĻĒā§āĻ°āĻļāĻžāĻ¸āĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻāĻ˛āĻā§ āĻāĻŋāĻ¨āĻžāĨ¤ āĻāĻ āĻā§āĻˇā§āĻ¤ā§āĻ°ā§, āĻāĻŽāĻ°āĻž āĻ¯ā§āĻŽāĻ¨ āĻ¸āĻ°āĻā§āĻāĻžāĻŽ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻšāĻ¤ā§ āĻĒāĻžāĻ°ā§
āĻĒā§āĻ°āĻ¤āĻŋāĻ¯ā§āĻāĻŋāĻ¤āĻž , YAML/JSON āĻ¯āĻžāĻāĻžāĻāĻāĻžāĻ°ā§, āĻĒā§āĻ˛āĻžāĻ¸āĻĒāĻ˛āĻŋāĻ¸āĻŋ āĻāĻā§āĻ¨ā§āĻ āĻā§āĻ˛ā§āĻ¨ , āĻĒā§āĻ°āĻ¸āĻā§āĻāĻāĻŋ āĻ¨āĻŋāĻļā§āĻāĻŋāĻ¤ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻ¨ā§āĻ¤āĻŋ āĻ¯āĻžāĻāĻžāĻāĻāĻžāĻ°ā§āĻ¨āĻŋāĻ°āĻžāĻĒāĻ¤ā§āĻ¤āĻž āĻĒā§āĻ°āĻ¸āĻā§āĻ āĻāĻĒāĻ¨āĻžāĻ° āĻāĻžāĻā§āĻ° āĻāĻžāĻĒ āĻāĻ¨ā§āĻā§āĻāĻ¨āĻžāĻ°āĻāĻŋāĻā§ āĻĒā§āĻ°āĻļāĻžāĻ¸āĻā§āĻ° āĻŦāĻŋāĻļā§āĻˇāĻžāĻ§āĻŋāĻāĻžāĻ°ā§āĻ° āĻ¸āĻžāĻĨā§ āĻāĻžāĻ˛āĻžāĻ¨ā§āĻ° āĻ āĻ¨ā§āĻŽāĻ¤āĻŋ āĻĻā§āĻ¯āĻŧ āĻ¨āĻžāĨ¤ āĻ¯āĻĻāĻŋ āĻāĻāĻŋ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻšāĻ¯āĻŧ, āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§āĻ°āĻž āĻāĻāĻāĻŋ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻ¨ā§āĻ¤āĻŋ āĻĒā§āĻ°āĻ¯āĻŧā§āĻ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨Rego , āĻāĻ āĻŽāĻ¤:
package main
deny[msg] {
input.kind = "Deployment"
not input.spec.template.spec.securityContext.runAsNonRoot = true
msg = "Containers must not run as root"
}
- āĻāĻāĻāĻŋ āĻā§āĻ˛āĻžāĻāĻĄ āĻĒā§āĻ°āĻĻāĻžāĻ¨āĻāĻžāĻ°ā§āĻ° āĻ¸āĻžāĻĨā§ āĻāĻā§āĻāĻ°āĻŖā§āĻ° āĻāĻ¨ā§āĻ¯ āĻŦāĻŋāĻāĻ˛ā§āĻĒāĨ¤ āĻāĻāĻā§āĻ° āĻāĻā§āĻ āĻĒā§āĻ°āĻ¯ā§āĻā§āĻ¤āĻŋāĻ° āĻ¸āĻŦāĻā§āĻ¯āĻŧā§ āĻāĻ˛ā§āĻ˛ā§āĻāĻ¯ā§āĻā§āĻ¯ āĻĒā§āĻ°āĻŦāĻŖāĻ¤āĻž āĻšāĻ˛ āĻĒāĻžāĻŦāĻ˛āĻŋāĻ āĻā§āĻ˛āĻžāĻāĻĄ āĻĒā§āĻ°āĻĻāĻžāĻ¨āĻāĻžāĻ°ā§āĻĻā§āĻ° āĻāĻĒāĻ° āĻāĻžāĻā§āĻ° āĻāĻžāĻĒ āĻāĻžāĻ˛āĻžāĻ¨ā§āĨ¤ āĻāĻĒāĻžāĻĻāĻžāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§
āĻŽā§āĻ āĻĒā§āĻ°āĻĻāĻžāĻ¨āĻāĻžāĻ°ā§ Kubernetes āĻ¯ā§āĻā§āĻ¨ āĻā§āĻ˛āĻžāĻ¸ā§āĻāĻžāĻ°āĻā§ āĻā§āĻ˛āĻžāĻāĻĄ āĻĒā§āĻ°āĻĻāĻžāĻ¨āĻāĻžāĻ°ā§āĻ° āĻ¸āĻžāĻĨā§ āĻāĻā§āĻā§āĻ¤ āĻāĻ°āĻžāĻ° āĻ āĻ¨ā§āĻŽāĻ¤āĻŋ āĻĻā§āĻ¯āĻŧ āĻ¯āĻžāĻ° āĻāĻĒāĻ° āĻāĻāĻŋ āĻāĻ˛ā§āĨ¤ āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, āĻ¯āĻĻāĻŋ āĻāĻāĻāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§ AWS-āĻ Kubernetes-āĻ āĻāĻāĻāĻŋ āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ āĻāĻžāĻ˛āĻžāĻ¯āĻŧ āĻāĻŦāĻ āĻāĻāĻāĻŋ āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻžāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ āĻ¸ā§āĻ āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨āĻāĻŋ āĻĒā§āĻ°āĻāĻžāĻļ āĻāĻ°āĻ¤ā§ āĻāĻžāĻ¯āĻŧ, āĻā§āĻ˛āĻžāĻāĻĄ āĻĒā§āĻ°āĻĻāĻžāĻ¨āĻāĻžāĻ°ā§ āĻ¸ā§āĻŦāĻ¯āĻŧāĻāĻā§āĻ°āĻŋāĻ¯āĻŧāĻāĻžāĻŦā§ āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻž āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻ¤ā§ āĻ¸āĻšāĻžāĻ¯āĻŧāĻ¤āĻž āĻāĻ°ā§LoadBalancer
āĻ¯āĻž āĻ¸ā§āĻŦāĻ¯āĻŧāĻāĻā§āĻ°āĻŋāĻ¯āĻŧāĻāĻžāĻŦā§ āĻ˛ā§āĻĄ āĻŦā§āĻ¯āĻžāĻ˛ā§āĻ¨ā§āĻ¸āĻžāĻ° āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻāĻ°āĻŦā§āĻāĻŽāĻžāĻāĻ¨ āĻāĻ˛āĻžāĻ¸ā§āĻāĻŋāĻ āĻ˛ā§āĻĄ āĻŦā§āĻ¯āĻžāĻ˛ā§āĻ¨ā§āĻ¸āĻžāĻ° āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ āĻĒāĻĄ āĻā§āĻ°āĻžāĻĢāĻŋāĻ āĻĒā§āĻ¨āĻ°ā§āĻ¨āĻŋāĻ°ā§āĻĻā§āĻļ āĻāĻ°āĻ¤ā§.
āĻĒā§āĻ°āĻ¸āĻžāĻ°āĻŖāĻ¯ā§āĻā§āĻ¯āĻ¤āĻž
Kubernetes āĻā§āĻŦ āĻāĻā§āĻ¸āĻā§āĻ¨āĻ¸āĻŋāĻŦāĻ˛ āĻāĻŦāĻ āĻŦāĻŋāĻāĻžāĻļāĻāĻžāĻ°ā§āĻ°āĻž āĻāĻāĻŋ āĻĒāĻāĻ¨ā§āĻĻ āĻāĻ°ā§āĨ¤ āĻāĻāĻžāĻ¨ā§ āĻāĻĒāĻ˛āĻŦā§āĻ§ āĻ¸āĻŽā§āĻĒāĻĻā§āĻ° āĻāĻāĻāĻŋ āĻ¸ā§āĻ āĻ°āĻ¯āĻŧā§āĻā§ āĻ¯ā§āĻŽāĻ¨ āĻĒāĻĄ, āĻ¸ā§āĻĨāĻžāĻĒāĻ¨āĻž, StatefulSets
, āĻā§āĻĒāĻ¨ā§āĻ¯āĻŧāĻ¤āĻž, ConfigMaps
, āĻāĻ¤ā§āĻ¯āĻžāĻĻāĻŋ āĻ¸āĻ¤ā§āĻ¯, āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§ āĻāĻŦāĻ āĻŦāĻŋāĻāĻžāĻļāĻāĻžāĻ°ā§āĻ°āĻž āĻĢāĻ°ā§āĻŽāĻāĻŋāĻ¤ā§ āĻ
āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻ¸āĻāĻ¸ā§āĻĨāĻžāĻ¨ āĻ¯ā§āĻ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§
āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, āĻ¯āĻĻāĻŋ āĻāĻŽāĻ°āĻž āĻāĻāĻāĻŋ āĻ¸āĻŽā§āĻĒāĻĻ āĻ¸āĻāĻā§āĻāĻžāĻ¯āĻŧāĻŋāĻ¤ āĻāĻ°āĻ¤ā§ āĻāĻžāĻ CronTab
, āĻ¤āĻžāĻ°āĻĒāĻ° āĻāĻĒāĻ¨āĻŋ āĻāĻ āĻŽāĻ¤ āĻāĻŋāĻā§ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨:
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
name: crontabs.my.org
spec:
group: my.org
versions:
- name: v1
served: true
storage: true
Schema:
openAPIV3Schema:
type: object
properties:
spec:
type: object
properties:
cronSpec:
type: string
pattern: '^(d+|*)(/d+)?(s+(d+|*)(/d+)?){4}$'
replicas:
type: integer
minimum: 1
maximum: 10
scope: Namespaced
names:
plural: crontabs
singular: crontab
kind: CronTab
shortNames:
- ct
āĻĒāĻ°ā§ āĻāĻŽāĻ°āĻž āĻāĻāĻāĻŋ āĻā§āĻ°āĻ¨āĻā§āĻ¯āĻžāĻŦ āĻ°āĻŋāĻ¸ā§āĻ°ā§āĻ¸ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°āĻŋ āĻāĻ°āĻāĻŽ āĻāĻŋāĻā§:
apiVersion: "my.org/v1"
kind: CronTab
metadata:
name: my-cron-object
spec:
cronSpec: "* * * * */5"
image: my-cron-image
replicas: 5
Kubernetes-āĻ āĻ¸āĻŽā§āĻĒā§āĻ°āĻ¸āĻžāĻ°āĻŖāĻ¯ā§āĻā§āĻ¯āĻ¤āĻžāĻ° āĻāĻ°ā§āĻāĻāĻŋ āĻŦāĻŋāĻāĻ˛ā§āĻĒ āĻšāĻ˛ āĻ¯ā§ āĻŦāĻŋāĻāĻžāĻļāĻāĻžāĻ°ā§ āĻ¤āĻžāĻ° āĻ¨āĻŋāĻāĻ¸ā§āĻŦ āĻŦāĻŋāĻŦā§āĻ¤āĻŋ āĻ˛āĻŋāĻāĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨āĨ¤
āĻāĻŽāĻŋāĻāĻ¨āĻŋāĻāĻŋāĻ¤ā§ āĻŦā§āĻļ āĻāĻŋāĻā§ āĻā§āĻ˛ āĻ°āĻ¯āĻŧā§āĻā§ āĻ¯āĻž āĻĄā§āĻā§āĻ˛āĻĒāĻžāĻ°āĻĻā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ¤āĻžāĻĻā§āĻ° āĻ¨āĻŋāĻāĻ¸ā§āĻŦ āĻ
āĻĒāĻžāĻ°ā§āĻāĻ° āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻ¸āĻšāĻ āĻāĻ°ā§ āĻ¤ā§āĻ˛ā§āĨ¤ āĻ¤āĻžāĻĻā§āĻ° āĻŽāĻ§ā§āĻ¯ā§ -
$ operator-sdk new my-operator --repo github.com/myuser/my-operator
āĻāĻāĻŋ YAML āĻĢāĻžāĻāĻ˛ āĻāĻŦāĻ āĻā§āĻ˛āĻ āĻā§āĻĄ āĻ¸āĻš āĻāĻĒāĻ¨āĻžāĻ° āĻ āĻĒāĻžāĻ°ā§āĻāĻ°ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻŦāĻ¯āĻŧāĻ˛āĻžāĻ°āĻĒā§āĻ˛ā§āĻ āĻā§āĻĄ āĻ¤ā§āĻ°āĻŋ āĻāĻ°ā§:
.
|____cmd
| |____manager
| | |____main.go
|____go.mod
|____deploy
| |____role.yaml
| |____role_binding.yaml
| |____service_account.yaml
| |____operator.yaml
|____tools.go
|____go.sum
|____.gitignore
|____version
| |____version.go
|____build
| |____bin
| | |____user_setup
| | |____entrypoint
| |____Dockerfile
|____pkg
| |____apis
| | |____apis.go
| |____controller
| | |____controller.go
āĻ¤āĻžāĻ°āĻĒāĻ°ā§ āĻāĻĒāĻ¨āĻŋ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧ API āĻāĻŦāĻ āĻ¨āĻŋāĻ¯āĻŧāĻžāĻŽāĻ āĻ¯ā§āĻ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨, āĻ¯ā§āĻŽāĻ¨:
$ operator-sdk add api --api-version=myapp.com/v1alpha1 --kind=MyAppService
$ operator-sdk add controller --api-version=myapp.com/v1alpha1 --kind=MyAppService
āĻ¤āĻžāĻ°āĻĒāĻ°, āĻ āĻŦāĻļā§āĻˇā§, āĻ āĻĒāĻžāĻ°ā§āĻāĻ°āĻā§ āĻāĻāĻ¤ā§āĻ°āĻŋāĻ¤ āĻāĻ°ā§āĻ¨ āĻāĻŦāĻ āĻāĻĒāĻ¨āĻžāĻ° āĻāĻ¨ā§āĻā§āĻāĻ¨āĻžāĻ°ā§āĻ° āĻ°ā§āĻāĻŋāĻ¸ā§āĻā§āĻ°āĻŋāĻ¤ā§ āĻĒāĻžāĻ āĻžāĻ¨:
$ operator-sdk build your.container.registry/youruser/myapp-operator
āĻŦāĻŋāĻāĻžāĻļāĻāĻžāĻ°ā§ āĻ¯āĻĻāĻŋ āĻāĻ°āĻ āĻŦā§āĻļāĻŋ āĻ¨āĻŋāĻ¯āĻŧāĻ¨ā§āĻ¤ā§āĻ°āĻŖ āĻāĻžāĻ¯āĻŧ, āĻ¤āĻŦā§ Go āĻĢāĻžāĻāĻ˛ā§āĻ° āĻŦāĻ¯āĻŧāĻ˛āĻžāĻ°āĻĒā§āĻ˛ā§āĻ āĻā§āĻĄ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤ āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, āĻ¨āĻŋāĻ¯āĻŧāĻžāĻŽāĻā§āĻ° āĻ¸ā§āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ°āĻ¤ā§, āĻāĻĒāĻ¨āĻŋ āĻĢāĻžāĻāĻ˛āĻāĻŋāĻ¤ā§ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨ controller.go
.
āĻāĻ°ā§āĻāĻāĻŋ āĻĒā§āĻ°āĻāĻ˛ā§āĻĒ
$ kubectl kudo install zookeeper
$ kubectl kudo install kafka
āĻāĻŦāĻ āĻ¤āĻžāĻ°āĻĒāĻ° āĻ āĻ¨ā§āĻ¯ āĻāĻŽāĻžāĻ¨ā§āĻĄ āĻĻāĻŋāĻ¯āĻŧā§ āĻāĻāĻŋ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ° āĻāĻ°ā§āĻ¨:
$ kubectl kudo install kafka --instance=my-kafka-name
-p ZOOKEEPER_URI=zk-zookeeper-0.zk-hs:2181
-p ZOOKEEPER_PATH=/my-path -p BROKER_CPUS=3000m
-p BROKER_COUNT=5 -p BROKER_MEM=4096m
-p DISK_SIZE=40Gi -p MIN_INSYNC_REPLICAS=3
-p NUM_NETWORK_THREADS=10 -p NUM_IO_THREADS=20
āĻĒā§āĻ°āĻŦāĻ°ā§āĻ¤āĻŋāĻ¤
āĻāĻ¤ āĻāĻ¯āĻŧā§āĻ āĻŦāĻāĻ° āĻ§āĻ°ā§, āĻĒā§āĻ°āĻ¤āĻŋ āĻāĻ¯āĻŧā§āĻ āĻŽāĻžāĻ¸ā§ āĻŦāĻĄāĻŧ āĻā§āĻŦāĻžāĻ°āĻ¨ā§āĻ āĻ°āĻŋāĻ˛āĻŋāĻ āĻŦā§āĻ° āĻšāĻā§āĻā§ - āĻ
āĻ°ā§āĻĨāĻžā§ āĻŦāĻāĻ°ā§ āĻ¤āĻŋāĻ¨ āĻĨā§āĻā§ āĻāĻžāĻ°āĻāĻŋ āĻŦāĻĄāĻŧ āĻ°āĻŋāĻ˛āĻŋāĻāĨ¤ āĻ¤āĻžāĻĻā§āĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋāĻ¤ā§ āĻāĻžāĻ˛ā§ āĻāĻ°āĻž āĻ¨āĻ¤ā§āĻ¨ āĻŦā§āĻļāĻŋāĻˇā§āĻā§āĻ¯ā§āĻ° āĻ¸āĻāĻā§āĻ¯āĻž āĻšā§āĻ°āĻžāĻ¸ āĻĒāĻžāĻ¯āĻŧ āĻ¨āĻžāĨ¤ āĻ¤āĻžāĻāĻžāĻĄāĻŧāĻž āĻāĻ āĻāĻ āĻŋāĻ¨ āĻ¸āĻŽāĻ¯āĻŧā§āĻ āĻ§ā§āĻ°āĻāĻ¤āĻŋāĻ° āĻā§āĻ¨ā§ āĻ˛āĻā§āĻˇāĻŖ āĻ¨ā§āĻ-āĻĻā§āĻā§āĻ¨ āĻāĻāĻ¨ āĻā§ āĻ
āĻŦāĻ¸ā§āĻĨāĻž
āĻ¨āĻ¤ā§āĻ¨ āĻā§āĻˇāĻŽāĻ¤āĻž āĻāĻĒāĻ¨āĻžāĻā§ āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻāĻžāĻā§āĻ° āĻāĻžāĻĒ āĻā§āĻĄāĻŧā§ āĻāĻ°āĻ āĻ¨āĻŽāĻ¨ā§āĻ¯āĻŧāĻāĻžāĻŦā§ āĻā§āĻ˛āĻžāĻ¸ā§āĻāĻžāĻ° āĻ āĻĒāĻžāĻ°ā§āĻļāĻ¨ āĻāĻ°āĻžāĻ° āĻ āĻ¨ā§āĻŽāĻ¤āĻŋ āĻĻā§āĻ¯āĻŧāĨ¤ āĻāĻĒāĻ°āĻ¨ā§āĻ¤ā§, āĻĒā§āĻ°ā§āĻĄāĻžāĻāĻļāĻ¨ā§ āĻ¸āĻ°āĻžāĻ¸āĻ°āĻŋ āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻĒā§āĻ°ā§āĻā§āĻ°āĻžāĻŽāĻžāĻ°āĻ°āĻž āĻ āĻ§āĻŋāĻ āĻ¨āĻŋāĻ¯āĻŧāĻ¨ā§āĻ¤ā§āĻ°āĻŖ āĻāĻĒāĻā§āĻ āĻāĻ°ā§āĨ¤
āĻ¸āĻŽā§āĻĒā§āĻ°āĻĻāĻžāĻ¯āĻŧ
āĻā§āĻŦāĻžāĻ°āĻ¨ā§āĻāĻ¸ā§āĻ° āĻāĻ¨āĻĒā§āĻ°āĻŋāĻ¯āĻŧāĻ¤āĻžāĻ° āĻāĻ°ā§āĻāĻāĻŋ āĻŦāĻĄāĻŧ āĻĻāĻŋāĻ āĻšāĻ˛ āĻāĻ° āĻ¸āĻŽā§āĻĒā§āĻ°āĻĻāĻžāĻ¯āĻŧā§āĻ° āĻļāĻā§āĻ¤āĻŋāĨ¤ 2015 āĻ¸āĻžāĻ˛ā§, 1.0 āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖā§ āĻĒā§āĻāĻāĻžāĻ¨ā§āĻ° āĻĒāĻ°ā§, āĻā§āĻŦāĻžāĻ°āĻ¨ā§āĻāĻ¸ āĻĻā§āĻŦāĻžāĻ°āĻž āĻ¸ā§āĻĒāĻ¨āĻ¸āĻ° āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛
āĻāĻāĻžāĻĄāĻŧāĻžāĻ āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻ¸āĻŽā§āĻĒā§āĻ°āĻĻāĻžāĻ¯āĻŧ āĻ°āĻ¯āĻŧā§āĻā§
āĻā§āĻ˛āĻžāĻāĻĄ āĻ¨ā§āĻāĻŋāĻ āĻĢāĻžāĻāĻ¨ā§āĻĄā§āĻļāĻ¨ āĻāĻāĻžāĻĄāĻŧāĻžāĻ CloudNativeCon/KubeCon āĻšā§āĻ¸ā§āĻ āĻāĻ°ā§, āĻ¯āĻž āĻ˛ā§āĻāĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ, āĻŦāĻŋāĻļā§āĻŦā§āĻ° āĻŦā§āĻšāĻ¤ā§āĻ¤āĻŽ āĻāĻĒā§āĻ¨ āĻ¸ā§āĻ°ā§āĻ¸ āĻ¸āĻŽā§āĻŽā§āĻ˛āĻ¨āĨ¤ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ¤ āĻŦāĻāĻ°ā§ āĻ¤āĻŋāĻ¨āĻŦāĻžāĻ° āĻ āĻ¨ā§āĻˇā§āĻ āĻŋāĻ¤ āĻšāĻ¯āĻŧ, āĻāĻāĻŋ āĻšāĻžāĻāĻžāĻ° āĻšāĻžāĻāĻžāĻ° āĻĒā§āĻļāĻžāĻĻāĻžāĻ°āĻā§ āĻāĻāĻ¤ā§āĻ° āĻāĻ°ā§ āĻ¯āĻžāĻ°āĻž āĻā§āĻŦāĻžāĻ°āĻ¨ā§āĻāĻ¸ āĻāĻŦāĻ āĻāĻ° āĻāĻā§āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽ āĻāĻ¨ā§āĻ¨āĻ¤ āĻāĻ°āĻ¤ā§ āĻāĻžāĻ¯āĻŧ, āĻ¸ā§āĻāĻ¸āĻžāĻĨā§ āĻĒā§āĻ°āĻ¤āĻŋ āĻ¤āĻŋāĻ¨ āĻŽāĻžāĻ¸ā§ āĻĒā§āĻ°āĻĻāĻ°ā§āĻļāĻŋāĻ¤ āĻ¨āĻ¤ā§āĻ¨ āĻŦā§āĻļāĻŋāĻˇā§āĻā§āĻ¯āĻā§āĻ˛āĻŋ āĻļāĻŋāĻāĻ¤ā§ āĻāĻžāĻ¯āĻŧāĨ¤
āĻ¤āĻžāĻāĻžāĻĄāĻŧāĻž āĻā§āĻ˛āĻžāĻāĻĄ āĻ¨ā§āĻāĻŋāĻ āĻĢāĻžāĻāĻ¨ā§āĻĄā§āĻļāĻ¨ āĻ°āĻ¯āĻŧā§āĻā§
āĻ āĻŦāĻļā§āĻˇā§, āĻāĻŽāĻŋ āĻŦāĻŋāĻļā§āĻŦāĻžāĻ¸ āĻāĻ°āĻŋ āĻ¯ā§ āĻ¸āĻŽāĻā§āĻ° āĻ¸āĻŽā§āĻĒā§āĻ°āĻĻāĻžāĻ¯āĻŧā§āĻ° āĻ¸āĻā§āĻ¤āĻ¨ āĻĒā§āĻ°āĻā§āĻˇā§āĻāĻž āĻāĻžāĻĄāĻŧāĻž āĻā§āĻŦāĻžāĻ°āĻ¨ā§āĻāĻ¸ āĻ¤āĻ¤āĻāĻž āĻ¸āĻĢāĻ˛ āĻšāĻŦā§ āĻ¨āĻž, āĻ¯ā§āĻāĻžāĻ¨ā§ āĻ˛ā§āĻā§āĻ°āĻž āĻāĻāĻ¸āĻžāĻĨā§ āĻĨāĻžāĻā§ āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻāĻāĻ āĻ¸āĻžāĻĨā§ āĻ¨āĻ¤ā§āĻ¨āĻĻā§āĻ° āĻāĻžāĻāĻā§ āĻ¸ā§āĻŦāĻžāĻāĻ¤ āĻāĻžāĻ¨āĻžāĻ¯āĻŧāĨ¤
āĻāĻŦāĻŋāĻˇā§āĻ¯ā§
āĻāĻŦāĻŋāĻˇā§āĻ¯āĻ¤ā§ āĻŦāĻŋāĻāĻžāĻļāĻāĻžāĻ°ā§āĻĻā§āĻ° āĻ¯ā§ āĻĒā§āĻ°āĻ§āĻžāĻ¨ āĻā§āĻ¯āĻžāĻ˛ā§āĻā§āĻāĻā§āĻ˛āĻŋ āĻŽā§āĻāĻžāĻŦā§āĻ˛āĻž āĻāĻ°āĻ¤ā§ āĻšāĻŦā§ āĻ¤āĻž āĻšāĻ˛ āĻā§āĻĄā§āĻ° āĻŦāĻŋāĻļāĻĻ āĻŦāĻŋāĻŦāĻ°āĻŖāĻā§āĻ˛āĻŋāĻ¤ā§ āĻĢā§āĻāĻžāĻ¸ āĻāĻ°āĻžāĻ° āĻā§āĻˇāĻŽāĻ¤āĻž, āĻāĻŦāĻ āĻāĻāĻŋ āĻ¯ā§ āĻĒāĻ°āĻŋāĻāĻžāĻ āĻžāĻŽā§āĻ¤ā§ āĻāĻ˛ā§ āĻ¤āĻžāĻ° āĻāĻĒāĻ° āĻ¨āĻ¯āĻŧāĨ¤ āĻāĻāĻž āĻāĻ āĻĒā§āĻ°āĻŦāĻŖāĻ¤āĻž āĻĒā§āĻ°āĻŖ
āĻāĻ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ā§, āĻāĻŽāĻ°āĻž āĻā§āĻŦāĻ˛āĻŽāĻžāĻ¤ā§āĻ° āĻā§āĻŦāĻžāĻ°āĻ¨ā§āĻāĻ¸ā§āĻ° āĻŦāĻ°ā§āĻ¤āĻŽāĻžāĻ¨ āĻ
āĻŦāĻ¸ā§āĻĨāĻžāĻ° āĻĒā§āĻˇā§āĻ āĻāĻŋ āĻ¸ā§āĻā§āĻ°ā§āĻ¯āĻžāĻ āĻāĻ°ā§āĻāĻŋâāĻāĻ¸āĻ˛ā§, āĻāĻāĻŋ āĻā§āĻŦāĻ˛ āĻāĻāĻ¸āĻŦāĻžāĻ°ā§āĻā§āĻ° āĻ
āĻā§āĻ°āĻāĻžāĻāĨ¤ Kubernetes āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§āĻĻā§āĻ° āĻ¤āĻžāĻĻā§āĻ° āĻ¨āĻŋāĻˇā§āĻĒāĻ¤ā§āĻ¤āĻŋāĻ¤ā§ āĻ
āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻ
āĻ¨ā§āĻ āĻ¸āĻŽā§āĻĒāĻĻ, āĻā§āĻˇāĻŽāĻ¤āĻž āĻāĻŦāĻ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻāĻā§āĨ¤
āĻāĻ¤ā§āĻ¸: www.habr.com