āĻāĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻŦā§āĻ˛āĻā§ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻāĻĨāĻž āĻŦāĻ˛āĻž āĻšāĻ¯āĻŧā§āĻā§
āĻā§āĻ¨?
āĻāĻāĻāĻŋ āĻļā§āĻ˛-āĻ āĻĒāĻžāĻ°ā§āĻāĻ°ā§āĻ° āĻ§āĻžāĻ°āĻŖāĻžāĻāĻŋ āĻŦā§āĻļ āĻ¸āĻšāĻ: Kubernetes āĻ āĻŦāĻā§āĻā§āĻ āĻĨā§āĻā§ āĻāĻā§āĻ¨ā§āĻāĻā§āĻ˛āĻŋāĻ¤ā§ āĻ¸āĻĻāĻ¸ā§āĻ¯āĻ¤āĻž āĻ¨āĻŋāĻ¨ āĻāĻŦāĻ āĻāĻ āĻāĻā§āĻ¨ā§āĻāĻā§āĻ˛āĻŋ āĻĒā§āĻ°āĻžāĻĒā§āĻ¤ āĻšāĻ˛ā§, āĻāĻāĻāĻŋ āĻŦāĻšāĻŋāĻ°āĻžāĻāĻ¤ āĻĒā§āĻ°ā§āĻā§āĻ°āĻžāĻŽ āĻāĻžāĻ˛ā§ āĻāĻ°ā§āĻ¨, āĻāĻāĻŋ āĻāĻā§āĻ¨ā§āĻ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻ¤āĻĨā§āĻ¯ āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻāĻ°ā§:
āĻāĻāĻŋāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧāĻ¤āĻž āĻĻā§āĻāĻž āĻĻā§āĻ¯āĻŧ āĻ¯āĻāĻ¨, āĻā§āĻ˛āĻžāĻ¸ā§āĻāĻžāĻ°āĻā§āĻ˛āĻŋāĻ° āĻĒāĻ°āĻŋāĻāĻžāĻ˛āĻ¨āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ, āĻā§āĻ āĻā§āĻ āĻāĻžāĻāĻā§āĻ˛āĻŋ āĻĒā§āĻ°āĻĻāĻ°ā§āĻļāĻŋāĻ¤ āĻšāĻ¤ā§ āĻļā§āĻ°ā§ āĻāĻ°ā§ āĻ¯ā§ āĻāĻŽāĻ°āĻž āĻ¸āĻ¤ā§āĻ¯āĻŋāĻ āĻ¸āĻ āĻŋāĻ āĻāĻĒāĻžāĻ¯āĻŧā§ āĻ¸ā§āĻŦāĻ¯āĻŧāĻāĻā§āĻ°āĻŋāĻ¯āĻŧ āĻāĻ°āĻ¤ā§ āĻā§āĻ¯āĻŧā§āĻāĻŋāĻ˛āĻžāĻŽāĨ¤ āĻāĻ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻā§āĻ āĻāĻžāĻāĻā§āĻ˛āĻŋ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻŦā§āĻ¯āĻžāĻļ āĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻāĻā§āĻ˛āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛, āĻ¯āĻĻāĻŋāĻ āĻāĻĒāĻ¨āĻŋ āĻāĻžāĻ¨ā§āĻ¨, āĻā§āĻ˛āĻ-āĻ āĻ āĻĒāĻžāĻ°ā§āĻāĻ°āĻā§āĻ˛āĻŋ āĻ˛ā§āĻāĻž āĻāĻžāĻ˛āĨ¤ āĻ¸ā§āĻĒāĻˇā§āĻāĻ¤āĻ, āĻāĻ āĻāĻžāĻ¤ā§āĻ¯āĻŧ āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻā§āĻ āĻāĻžāĻā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻ āĻĒāĻžāĻ°ā§āĻāĻ°ā§āĻ° āĻĒā§āĻ°ā§āĻŖ-āĻ¸ā§āĻā§āĻ˛ āĻŦāĻŋāĻāĻžāĻļā§ āĻŦāĻŋāĻ¨āĻŋāĻ¯āĻŧā§āĻ āĻāĻ°āĻž āĻ āĻāĻžāĻ°ā§āĻ¯āĻāĻ° āĻšāĻŦā§āĨ¤
15 āĻŽāĻŋāĻ¨āĻŋāĻā§āĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻ āĻĒāĻžāĻ°ā§āĻāĻ°
āĻā§āĻŦāĻžāĻ°āĻ¨ā§āĻāĻ¸ āĻā§āĻ˛āĻžāĻ¸ā§āĻāĻžāĻ°ā§ āĻā§ āĻ¸ā§āĻŦāĻ¯āĻŧāĻāĻā§āĻ°āĻŋāĻ¯āĻŧ āĻšāĻ¤ā§ āĻĒāĻžāĻ°ā§ āĻāĻŦāĻ āĻļā§āĻ˛-āĻ āĻĒāĻžāĻ°ā§āĻāĻ° āĻā§āĻāĻžāĻŦā§ āĻ¸āĻžāĻšāĻžāĻ¯ā§āĻ¯ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§ āĻ¤āĻžāĻ° āĻāĻāĻāĻŋ āĻāĻĻāĻžāĻšāĻ°āĻŖ āĻĻā§āĻāĻž āĻ¯āĻžāĻāĨ¤ āĻāĻāĻāĻŋ āĻāĻĻāĻžāĻšāĻ°āĻŖ āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻāĻŋāĻ¤ āĻšāĻŦā§: āĻĄāĻāĻžāĻ° āĻ°ā§āĻāĻŋāĻ¸ā§āĻā§āĻ°āĻŋ āĻ ā§āĻ¯āĻžāĻā§āĻ¸ā§āĻ¸ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻā§āĻĒāĻ¨ āĻĒā§āĻ°āĻ¤āĻŋāĻ˛āĻŋāĻĒāĻŋ āĻāĻ°āĻžāĨ¤
āĻ¯ā§ āĻĒāĻĄāĻā§āĻ˛āĻŋ āĻāĻāĻāĻŋ āĻŦā§āĻ¯āĻā§āĻ¤āĻŋāĻāĻ¤ āĻ°ā§āĻāĻŋāĻ¸ā§āĻā§āĻ°āĻŋ āĻĨā§āĻā§ āĻāĻŦāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻ¤āĻžāĻĻā§āĻ° āĻŽā§āĻ¯āĻžāĻ¨āĻŋāĻĢā§āĻ¸ā§āĻā§ āĻ āĻŦāĻļā§āĻ¯āĻ āĻ°ā§āĻāĻŋāĻ¸ā§āĻā§āĻ°āĻŋ āĻ ā§āĻ¯āĻžāĻā§āĻ¸ā§āĻ¸ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻĄā§āĻāĻž āĻ¸āĻš āĻāĻāĻāĻŋ āĻā§āĻĒāĻ¨ āĻ˛āĻŋāĻā§āĻ āĻĨāĻžāĻāĻ¤ā§ āĻšāĻŦā§āĨ¤ āĻĒāĻĄ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻžāĻ° āĻāĻā§ āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻ¨āĻžāĻŽāĻ¸ā§āĻĨāĻžāĻ¨ā§ āĻāĻ āĻā§āĻĒāĻ¨ā§āĻ¯āĻŧāĻ¤āĻž āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§āĨ¤ āĻāĻāĻŋ āĻŽā§āĻ¯āĻžāĻ¨ā§āĻ¯āĻŧāĻžāĻ˛āĻŋ āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§, āĻ¤āĻŦā§ āĻāĻŽāĻ°āĻž āĻ¯āĻĻāĻŋ āĻāĻ¤āĻŋāĻļā§āĻ˛ āĻĒāĻ°āĻŋāĻŦā§āĻļ āĻ¸ā§āĻ āĻāĻĒ āĻāĻ°āĻŋ āĻ¤āĻŦā§ āĻāĻāĻāĻŋ āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ¨āĻžāĻŽāĻ¸ā§āĻĨāĻžāĻ¨ āĻ āĻ¨ā§āĻ āĻšāĻ¯āĻŧā§ āĻ¯āĻžāĻŦā§āĨ¤ āĻāĻŦāĻ āĻ¯āĻĻāĻŋ 2-3āĻāĻŋ āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ āĻ¨āĻž āĻĨāĻžāĻā§... āĻā§āĻĒāĻ¨ āĻ¸āĻāĻā§āĻ¯āĻž āĻ āĻ¨ā§āĻ āĻŦāĻĄāĻŧ āĻšāĻ¯āĻŧā§ āĻ¯āĻžāĻ¯āĻŧāĨ¤ āĻāĻŦāĻ āĻā§āĻĒāĻ¨ā§āĻ¯āĻŧāĻ¤āĻž āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻāĻ°āĻ āĻāĻāĻāĻŋ āĻāĻŋāĻ¨āĻŋāĻ¸: āĻāĻŽāĻŋ āĻ¸āĻŽāĻ¯āĻŧā§ āĻ¸āĻŽāĻ¯āĻŧā§ āĻ°ā§āĻāĻŋāĻ¸ā§āĻā§āĻ°āĻŋ āĻ ā§āĻ¯āĻžāĻā§āĻ¸ā§āĻ¸ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻā§ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ°āĻ¤ā§ āĻāĻžāĻāĨ¤ āĻ āĻŦāĻļā§āĻˇā§, āĻŽā§āĻ¯āĻžāĻ¨ā§āĻ¯āĻŧāĻžāĻ˛ āĻ āĻĒāĻžāĻ°ā§āĻļāĻ¨ āĻāĻāĻāĻŋ āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻ¸āĻŽā§āĻĒā§āĻ°ā§āĻŖ āĻ āĻāĻžāĻ°ā§āĻ¯āĻāĻ° - āĻāĻŽāĻžāĻĻā§āĻ° āĻā§āĻĒāĻ¨ā§āĻ¯āĻŧāĻ¤āĻž āĻ¤ā§āĻ°āĻŋ āĻāĻŦāĻ āĻāĻĒāĻĄā§āĻ āĻāĻ°āĻž āĻ¸ā§āĻŦāĻ¯āĻŧāĻāĻā§āĻ°āĻŋāĻ¯āĻŧ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§āĨ¤
āĻ¸āĻšāĻ āĻ āĻā§āĻŽā§āĻļāĻ¨
āĻāĻ¸ā§āĻ¨ āĻāĻāĻāĻŋ āĻļā§āĻ˛ āĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻ āĻ˛āĻŋāĻāĻŋ āĻ¯āĻž āĻĒā§āĻ°āĻ¤āĻŋ N āĻ¸ā§āĻā§āĻ¨ā§āĻĄā§ āĻāĻāĻŦāĻžāĻ° āĻāĻ˛ā§ āĻāĻŦāĻ āĻāĻāĻāĻŋ āĻā§āĻĒāĻ¨ āĻāĻĒāĻ¸ā§āĻĨāĻŋāĻ¤āĻŋāĻ° āĻāĻ¨ā§āĻ¯ āĻ¨ā§āĻŽāĻ¸ā§āĻĒā§āĻ¸ āĻā§āĻ āĻāĻ°ā§ āĻāĻŦāĻ āĻ¯āĻĻāĻŋ āĻā§āĻ¨āĻ āĻā§āĻĒāĻ¨ āĻ¨āĻž āĻĨāĻžāĻā§ āĻ¤āĻŦā§ āĻāĻāĻŋ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻšāĻ¯āĻŧāĨ¤ āĻāĻ āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨āĻāĻŋāĻ° āĻ¸ā§āĻŦāĻŋāĻ§āĻž āĻšāĻ˛ āĻāĻāĻŋ āĻā§āĻ°āĻ¨ā§āĻ° āĻāĻāĻāĻŋ āĻļā§āĻ˛ āĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻā§āĻ° āĻŽāĻ¤ā§ āĻĻā§āĻāĻžāĻ¯āĻŧ - āĻĒā§āĻ°āĻ¤ā§āĻ¯ā§āĻā§āĻ° āĻāĻžāĻā§ āĻāĻāĻāĻŋ āĻā§āĻ˛āĻžāĻ¸āĻŋāĻ āĻāĻŦāĻ āĻŦā§āĻ§āĻāĻŽā§āĻ¯ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĨ¤ āĻ¨ā§āĻ¤āĻŋāĻŦāĻžāĻāĻ āĻĻāĻŋāĻ āĻšāĻ˛ āĻ¯ā§ āĻāĻ° āĻ˛āĻā§āĻāĻā§āĻ˛āĻŋāĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻŦā§āĻ¯āĻŦāĻ§āĻžāĻ¨ā§ āĻāĻāĻāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻ¨āĻžāĻŽāĻ¸ā§āĻĨāĻžāĻ¨ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§ āĻāĻŦāĻ āĻāĻŋāĻā§ āĻ¸āĻŽāĻ¯āĻŧā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻā§āĻĒāĻ¨ā§āĻ¯āĻŧāĻ¤āĻž āĻāĻžāĻĄāĻŧāĻžāĻ āĻĨāĻžāĻāĻŦā§, āĻ¯āĻž āĻĒāĻĄāĻā§āĻ˛āĻŋ āĻāĻžāĻ˛ā§ āĻāĻ°āĻ¤ā§ āĻ¤ā§āĻ°ā§āĻāĻŋāĻ° āĻĻāĻŋāĻā§ āĻĒāĻ°āĻŋāĻāĻžāĻ˛āĻŋāĻ¤ āĻāĻ°āĻŦā§āĨ¤
āĻļā§āĻ˛-āĻ āĻĒāĻžāĻ°ā§āĻāĻ°ā§āĻ° āĻ¸āĻžāĻĨā§ āĻ āĻā§āĻŽā§āĻļāĻ¨
āĻāĻŽāĻžāĻĻā§āĻ° āĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻ āĻ¸āĻ āĻŋāĻāĻāĻžāĻŦā§ āĻāĻžāĻ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯, āĻāĻāĻāĻŋ āĻ¨āĻžāĻŽāĻ¸ā§āĻĨāĻžāĻ¨ āĻ¯ā§āĻ āĻāĻ°āĻž āĻšāĻ˛ā§ āĻā§āĻ˛āĻžāĻ¸āĻŋāĻ āĻā§āĻ°āĻ¨ āĻ˛āĻā§āĻāĻāĻŋāĻā§ āĻ˛āĻā§āĻ āĻĻāĻŋāĻ¯āĻŧā§ āĻĒā§āĻ°āĻ¤āĻŋāĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§: āĻāĻ āĻā§āĻˇā§āĻ¤ā§āĻ°ā§, āĻāĻĒāĻ¨āĻŋ āĻāĻāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻžāĻ° āĻāĻā§ āĻāĻāĻāĻŋ āĻā§āĻĒāĻ¨ā§āĻ¯āĻŧāĻ¤āĻž āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨āĨ¤ āĻļā§āĻ˛-āĻ āĻĒāĻžāĻ°ā§āĻāĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻā§āĻāĻžāĻŦā§ āĻāĻāĻŋ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ āĻāĻ°āĻž āĻ¯āĻžāĻ¯āĻŧ āĻ¤āĻž āĻĻā§āĻāĻž āĻ¯āĻžāĻāĨ¤
āĻĒā§āĻ°āĻĨāĻŽāĻ¤, āĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻ āĻ¤āĻžāĻāĻžāĻ¨. āĻļā§āĻ˛-āĻ
āĻĒāĻžāĻ°ā§āĻāĻ° āĻĒāĻĻā§ āĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻāĻā§āĻ˛āĻŋāĻā§ āĻšā§āĻ āĻŦāĻ˛āĻž āĻšāĻ¯āĻŧāĨ¤ āĻāĻāĻāĻŋ āĻĒāĻ¤āĻžāĻāĻž āĻ¸āĻā§āĻā§ āĻāĻžāĻ˛āĻžāĻ¨ā§ āĻ¯āĻāĻ¨ āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻšā§āĻ --config
āĻļā§āĻ˛-āĻ
āĻĒāĻžāĻ°ā§āĻāĻ°āĻā§ āĻāĻ° āĻŦāĻžāĻāĻ¨ā§āĻĄāĻŋāĻ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻ
āĻŦāĻšāĻŋāĻ¤ āĻāĻ°ā§, āĻ¯ā§āĻŽāĻ¨ āĻāĻāĻž āĻāĻžāĻ˛ā§ āĻāĻ°āĻž āĻāĻāĻŋāĻ¤ āĻāĻŋ āĻāĻā§āĻ¨ā§āĻ. āĻāĻŽāĻžāĻĻā§āĻ° āĻā§āĻˇā§āĻ¤ā§āĻ°ā§ āĻāĻŽāĻ°āĻž āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻŦ onKubernetesEvent
:
#!/bin/bash
if [[ $1 == "--config" ]] ; then
cat <<EOF
{
"onKubernetesEvent": [
{ "kind": "namespace",
"event":["add"]
}
]}
EOF
fi
āĻāĻāĻžāĻ¨ā§ āĻŦāĻ°ā§āĻŖāĻ¨āĻž āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§ āĻ¯ā§ āĻāĻŽāĻ°āĻž āĻāĻā§āĻ¨ā§āĻ āĻ¯ā§āĻ āĻāĻ°āĻ¤ā§ āĻāĻā§āĻ°āĻšā§ (add
) āĻ§āĻ°āĻ¨ā§āĻ° āĻŦāĻ¸ā§āĻ¤ā§ namespace
.
āĻāĻāĻ¨ āĻāĻĒāĻ¨āĻžāĻā§ āĻā§āĻĄāĻāĻŋ āĻ¯ā§āĻ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§ āĻ¯āĻž āĻāĻā§āĻ¨ā§āĻāĻāĻŋ āĻāĻāĻ˛ā§ āĻāĻžāĻ°ā§āĻ¯āĻāĻ° āĻāĻ°āĻž āĻšāĻŦā§:
#!/bin/bash
if [[ $1 == "--config" ]] ; then
# ĐēĐžĐŊŅиĐŗŅŅĐ°ŅиŅ
cat <<EOF
{
"onKubernetesEvent": [
{ "kind": "namespace",
"event":["add"]
}
]}
EOF
else
# ŅĐĩĐ°ĐēŅиŅ:
# ŅСĐŊĐ°ŅŅ, ĐēĐ°ĐēОК namespace ĐŋĐžŅвиĐģŅŅ
createdNamespace=$(jq -r '.[0].resourceName' $BINDING_CONTEXT_PATH)
# ŅОСдаŅŅ в ĐŊŅĐŧ ĐŊŅĐļĐŊŅĐš ŅĐĩĐēŅĐĩŅ
kubectl create -n ${createdNamespace} -f - <<EOF
apiVersion: v1
kind: Secret
metadata:
...
data:
...
EOF
fi
āĻĻāĻžāĻ°ā§āĻŖ! āĻĢāĻ˛āĻžāĻĢāĻ˛ āĻāĻāĻāĻŋ āĻā§āĻ, āĻ¸ā§āĻ¨ā§āĻĻāĻ° āĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻ āĻāĻŋāĻ˛. āĻāĻāĻŋāĻā§ "āĻĒā§āĻ¨āĻ°ā§āĻā§āĻā§āĻŦāĻŋāĻ¤" āĻāĻ°āĻ¤ā§, āĻĻā§āĻāĻŋ āĻ§āĻžāĻĒ āĻŦāĻžāĻāĻŋ āĻāĻā§: āĻāĻŋāĻ¤ā§āĻ°āĻāĻŋ āĻĒā§āĻ°āĻ¸ā§āĻ¤ā§āĻ¤ āĻāĻ°ā§āĻ¨ āĻāĻŦāĻ āĻā§āĻ˛āĻžāĻ¸ā§āĻāĻžāĻ°ā§ āĻāĻāĻŋ āĻāĻžāĻ˛ā§ āĻāĻ°ā§āĻ¨ā§ˇ
āĻāĻāĻāĻŋ āĻšā§āĻ āĻ¸āĻā§āĻā§ āĻāĻāĻāĻŋ āĻāĻŽā§āĻ āĻĒā§āĻ°āĻ¸ā§āĻ¤ā§āĻ¤āĻŋ
āĻāĻĒāĻ¨āĻŋ āĻ¯āĻĻāĻŋ āĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻāĻāĻŋ āĻĻā§āĻā§āĻ¨, āĻāĻĒāĻ¨āĻŋ āĻĻā§āĻāĻ¤ā§ āĻĒāĻžāĻŦā§āĻ¨ āĻ¯ā§ āĻāĻŽāĻžāĻ¨ā§āĻĄāĻā§āĻ˛āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§ kubectl
и jq
. āĻāĻ° āĻŽāĻžāĻ¨ā§ āĻšāĻ˛ āĻ¯ā§ āĻāĻŋāĻ¤ā§āĻ°āĻāĻŋāĻ¤ā§ āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻāĻŋāĻ¤ āĻāĻŋāĻ¨āĻŋāĻ¸āĻā§āĻ˛āĻŋ āĻĨāĻžāĻāĻ¤ā§ āĻšāĻŦā§: āĻāĻŽāĻžāĻĻā§āĻ° āĻšā§āĻ, āĻāĻāĻāĻŋ āĻļā§āĻ˛-āĻ
āĻĒāĻžāĻ°ā§āĻāĻ° āĻ¯āĻž āĻāĻāĻ¨āĻžāĻā§āĻ˛āĻŋ āĻļā§āĻ¨āĻŦā§ āĻāĻŦāĻ āĻšā§āĻ āĻāĻžāĻ˛āĻžāĻŦā§ āĻāĻŦāĻ āĻšā§āĻ āĻĻā§āĻŦāĻžāĻ°āĻž āĻŦā§āĻ¯āĻŦāĻšā§āĻ¤ āĻāĻŽāĻžāĻ¨ā§āĻĄāĻā§āĻ˛āĻŋ (kubectl āĻāĻŦāĻ jq)ā§ˇ Hub.docker.com-āĻāĻ° āĻāĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§āĻ āĻāĻāĻāĻŋ āĻ°ā§āĻĄāĻŋāĻŽā§āĻĄ āĻāĻŽā§āĻ āĻ°āĻ¯āĻŧā§āĻā§ āĻ¯ā§āĻāĻžāĻ¨ā§ āĻļā§āĻ˛-āĻ
āĻĒāĻžāĻ°ā§āĻāĻ°, kubectl āĻāĻŦāĻ jq āĻĒā§āĻ¯āĻžāĻā§āĻ āĻāĻ°āĻž āĻāĻā§āĨ¤ āĻ¯āĻž āĻ
āĻŦāĻļāĻŋāĻˇā§āĻ āĻĨāĻžāĻā§ āĻ¤āĻž āĻšāĻ˛ āĻāĻāĻāĻŋ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻšā§āĻ āĻ¯ā§āĻ āĻāĻ°āĻž Dockerfile
:
$ cat Dockerfile
FROM flant/shell-operator:v1.0.0-beta.1-alpine3.9
ADD namespace-hook.sh /hooks
$ docker build -t registry.example.com/my-operator:v1 .
$ docker push registry.example.com/my-operator:v1
āĻāĻāĻāĻŋ āĻā§āĻā§āĻ āĻŽāĻ§ā§āĻ¯ā§ āĻāĻ˛āĻŽāĻžāĻ¨
āĻāĻ¸ā§āĻ¨ āĻāĻŦāĻžāĻ° āĻšā§āĻāĻāĻŋ āĻĻā§āĻāĻŋ āĻāĻŦāĻ āĻāĻāĻŦāĻžāĻ° āĻā§āĻ˛āĻžāĻ¸ā§āĻāĻžāĻ°ā§ āĻā§ āĻā§ āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻāĻŦāĻ āĻā§āĻ¨ āĻŦāĻ¸ā§āĻ¤ā§āĻ° āĻ¸āĻžāĻĨā§ āĻāĻāĻŋ āĻ¸āĻŽā§āĻĒāĻžāĻĻāĻ¨ āĻāĻ°ā§ āĻ¤āĻž āĻ˛āĻŋāĻā§āĻ¨:
- āĻ¨ā§āĻŽāĻ¸ā§āĻĒā§āĻ¸ āĻ¤ā§āĻ°āĻŋāĻ° āĻāĻā§āĻ¨ā§āĻāĻā§āĻ˛āĻŋāĻ¤ā§ āĻ¸āĻĻāĻ¸ā§āĻ¯āĻ¤āĻž āĻ¨ā§āĻ¯āĻŧ;
- āĻ¯ā§āĻāĻžāĻ¨ā§ āĻāĻāĻŋ āĻāĻžāĻ˛ā§ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§ āĻ¤āĻž āĻāĻžāĻĄāĻŧāĻž āĻ āĻ¨ā§āĻ¯ āĻ¨āĻžāĻŽāĻ¸ā§āĻĨāĻžāĻ¨ā§ āĻāĻāĻāĻŋ āĻā§āĻĒāĻ¨ā§āĻ¯āĻŧāĻ¤āĻž āĻ¤ā§āĻ°āĻŋ āĻāĻ°ā§āĨ¤
āĻĻā§āĻāĻž āĻ¯āĻžāĻā§āĻā§ āĻ¯ā§ āĻ¯ā§ āĻĒāĻĄāĻāĻŋāĻ¤ā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻŦāĻŋāĻāĻŋ āĻāĻžāĻ˛ā§ āĻāĻ°āĻž āĻšāĻŦā§ āĻ¤āĻžāĻ° āĻ āĻŦāĻļā§āĻ¯āĻ āĻāĻ āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻā§āĻ˛āĻŋ āĻāĻ°āĻžāĻ° āĻ āĻ¨ā§āĻŽāĻ¤āĻŋ āĻĨāĻžāĻāĻ¤ā§ āĻšāĻŦā§āĨ¤ āĻāĻāĻŋ āĻāĻĒāĻ¨āĻžāĻ° āĻ¨āĻŋāĻāĻ¸ā§āĻŦ ServiceAccount āĻ¤ā§āĻ°āĻŋ āĻāĻ°ā§ āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤ āĻ āĻ¨ā§āĻŽāĻ¤āĻŋ ClusterRole āĻāĻŦāĻ ClusterRoleBinding āĻāĻāĻžāĻ°ā§ āĻāĻ°āĻž āĻāĻŦāĻļā§āĻ¯āĻ, āĻāĻžāĻ°āĻŖ āĻāĻŽāĻ°āĻž āĻ¸āĻŽāĻā§āĻ° āĻā§āĻ˛āĻžāĻ¸ā§āĻāĻžāĻ° āĻĨā§āĻā§ āĻŦāĻ¸ā§āĻ¤ā§ āĻāĻā§āĻ°āĻšā§.
YAML-āĻ āĻā§āĻĄāĻŧāĻžāĻ¨ā§āĻ¤ āĻŦāĻŋāĻŦāĻ°āĻŖāĻāĻŋ āĻāĻ°āĻāĻŽ āĻāĻŋāĻā§ āĻĻā§āĻāĻžāĻŦā§:
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: monitor-namespaces-acc
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRole
metadata:
name: monitor-namespaces
rules:
- apiGroups: [""]
resources: ["namespaces"]
verbs: ["get", "watch", "list"]
- apiGroups: [""]
resources: ["secrets"]
verbs: ["get", "list", "create", "patch"]
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
name: monitor-namespaces
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: monitor-namespaces
subjects:
- kind: ServiceAccount
name: monitor-namespaces-acc
namespace: example-monitor-namespaces
āĻāĻĒāĻ¨āĻŋ āĻāĻāĻ¤ā§āĻ°āĻŋāĻ¤ āĻāĻŋāĻ¤ā§āĻ°āĻāĻŋāĻā§ āĻāĻāĻāĻŋ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨āĻž āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻāĻžāĻ˛ā§ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: my-operator
spec:
template:
spec:
containers:
- name: my-operator
image: registry.example.com/my-operator:v1
serviceAccountName: monitor-namespaces-acc
āĻ¸ā§āĻŦāĻŋāĻ§āĻžāĻ° āĻāĻ¨ā§āĻ¯, āĻāĻāĻāĻŋ āĻĒā§āĻĨāĻ āĻ¨āĻžāĻŽāĻ¸ā§āĻĨāĻžāĻ¨ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§ āĻ¯ā§āĻāĻžāĻ¨ā§ āĻļā§āĻ˛-āĻ āĻĒāĻžāĻ°ā§āĻāĻ° āĻāĻžāĻ˛ā§ āĻšāĻŦā§ āĻāĻŦāĻ āĻ¤ā§āĻ°āĻŋ āĻŽā§āĻ¯āĻžāĻ¨āĻŋāĻĢā§āĻ¸ā§āĻāĻā§āĻ˛āĻŋ āĻĒā§āĻ°āĻ¯āĻŧā§āĻ āĻāĻ°āĻž āĻšāĻŦā§:
$ kubectl create ns example-monitor-namespaces
$ kubectl -n example-monitor-namespaces apply -f rbac.yaml
$ kubectl -n example-monitor-namespaces apply -f deployment.yaml
āĻļā§āĻ§ā§ āĻ¤āĻžāĻ: āĻļā§āĻ˛-āĻ āĻĒāĻžāĻ°ā§āĻāĻ° āĻļā§āĻ°ā§ āĻāĻ°āĻŦā§, āĻ¨āĻžāĻŽāĻ¸ā§āĻĨāĻžāĻ¨ āĻ¤ā§āĻ°āĻŋāĻ° āĻāĻā§āĻ¨ā§āĻāĻā§āĻ˛āĻŋāĻ¤ā§ āĻ¸āĻĻāĻ¸ā§āĻ¯āĻ¤āĻž āĻ¨ā§āĻŦā§ āĻāĻŦāĻ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§ āĻšā§āĻ āĻāĻžāĻ˛āĻžāĻŦā§āĨ¤
āĻ¸ā§āĻ¤āĻ°āĻžāĻ, āĻāĻāĻāĻŋ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻļā§āĻ˛ āĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻ āĻā§āĻŦāĻžāĻ°āĻ¨ā§āĻāĻ¸ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦ āĻ
āĻĒāĻžāĻ°ā§āĻāĻ°ā§ āĻĒāĻ°āĻŋāĻŖāĻ¤ āĻšāĻ¯āĻŧā§āĻā§ āĻāĻŦāĻ āĻāĻāĻāĻŋ āĻā§āĻ˛āĻžāĻ¸ā§āĻāĻžāĻ°ā§āĻ° āĻ
āĻāĻļ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻāĻžāĻ āĻāĻ°ā§āĨ¤ āĻāĻŦāĻ āĻāĻ āĻ¸āĻŦ āĻā§āĻ˛āĻ-āĻ āĻ
āĻĒāĻžāĻ°ā§āĻāĻ° āĻŦāĻŋāĻāĻžāĻļā§āĻ° āĻāĻāĻŋāĻ˛ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻāĻžāĻĄāĻŧāĻžāĻ:
āĻāĻ āĻŦāĻŋāĻˇāĻ¯āĻŧā§ āĻāĻ°ā§āĻāĻāĻŋ āĻĻā§āĻˇā§āĻāĻžāĻ¨ā§āĻ¤ āĻāĻā§ ...
āĻāĻŽāĻ°āĻž āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻāĻŋāĻ¤ āĻĒā§āĻ°āĻāĻžāĻļāĻ¨āĻžāĻā§āĻ˛āĻŋāĻ° āĻāĻāĻāĻŋāĻ¤ā§ āĻāĻ°āĻ āĻŦāĻŋāĻļāĻĻā§ āĻāĻ° āĻ
āĻ°ā§āĻĨ āĻĒā§āĻ°āĻāĻžāĻļ āĻāĻ°āĻŦāĨ¤
āĻĢāĻŋāĻ˛ā§āĻāĻžāĻ°āĻŋāĻ
āĻŦāĻ¸ā§āĻ¤ā§ āĻā§āĻ°ā§āĻ¯āĻžāĻāĻŋāĻ āĻāĻžāĻ˛, āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻĒā§āĻ°āĻžāĻ¯āĻŧāĻ āĻĒā§āĻ°āĻ¤āĻŋāĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻāĻāĻāĻŋ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻāĻā§ āĻāĻŋāĻā§ āĻŦāĻ¸ā§āĻ¤ā§āĻ° āĻŦā§āĻļāĻŋāĻˇā§āĻā§āĻ¯ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨, āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, āĻ¸ā§āĻĨāĻžāĻĒāĻ¨āĻžāĻ¯āĻŧ āĻĒā§āĻ°āĻ¤āĻŋāĻ˛āĻŋāĻĒāĻŋāĻ° āĻ¸āĻāĻā§āĻ¯āĻž āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ°āĻ¤ā§ āĻŦāĻž āĻ āĻŦāĻā§āĻā§āĻ āĻ˛ā§āĻŦā§āĻ˛ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ°āĻ¤ā§āĨ¤
āĻ¯āĻāĻ¨ āĻāĻāĻāĻŋ āĻāĻā§āĻ¨ā§āĻ āĻāĻ¸ā§, āĻļā§āĻ˛-āĻ
āĻĒāĻžāĻ°ā§āĻāĻ° āĻŦāĻ¸ā§āĻ¤ā§āĻāĻŋāĻ° JSON āĻŽā§āĻ¯āĻžāĻ¨āĻŋāĻĢā§āĻ¸ā§āĻ āĻĒāĻžāĻ¯āĻŧāĨ¤ āĻāĻŽāĻ°āĻž āĻāĻ JSON-āĻ āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻā§āĻ°āĻšā§āĻ° āĻŦā§āĻļāĻŋāĻˇā§āĻā§āĻ¯āĻā§āĻ˛āĻŋ āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻāĻ¨ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°āĻŋ āĻāĻŦāĻ āĻšā§āĻ āĻāĻžāĻ˛āĻžāĻ¤ā§ āĻĒāĻžāĻ°āĻŋ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻ¯āĻāĻ¨ āĻ¤āĻžāĻ°āĻž āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ°ā§āĨ¤ āĻāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻā§āĻˇā§āĻ¤ā§āĻ° āĻ°āĻ¯āĻŧā§āĻā§ jqFilter
, āĻ¯ā§āĻāĻžāĻ¨ā§ āĻāĻĒāĻ¨āĻžāĻā§ jq āĻāĻā§āĻ¸āĻĒā§āĻ°ā§āĻļāĻ¨āĻāĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§ āĻ¯āĻž JSON āĻŽā§āĻ¯āĻžāĻ¨āĻŋāĻĢā§āĻ¸ā§āĻā§ āĻĒā§āĻ°āĻ¯āĻŧā§āĻ āĻāĻ°āĻž āĻšāĻŦā§āĨ¤
āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, āĻĄāĻŋāĻĒā§āĻ˛āĻ¯āĻŧāĻŽā§āĻ¨ā§āĻ āĻ
āĻŦāĻā§āĻā§āĻā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ˛ā§āĻŦā§āĻ˛ā§āĻ° āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ā§āĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻāĻžāĻ¨āĻžāĻ¤ā§, āĻāĻĒāĻ¨āĻžāĻā§ āĻā§āĻˇā§āĻ¤ā§āĻ°āĻāĻŋ āĻĢāĻŋāĻ˛ā§āĻāĻžāĻ° āĻāĻ°āĻ¤ā§ āĻšāĻŦā§ labels
āĻŽāĻžāĻ ā§āĻ° āĻŦāĻžāĻāĻ°ā§ metadata
. āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻāĻ āĻŽāĻ¤ āĻšāĻŦā§:
cat <<EOF
{
"onKubernetesEvent": [
{ "kind": "deployment",
"event":["update"],
"jqFilter": ".metadata.labels"
}
]}
EOF
āĻāĻ jqFilter āĻāĻā§āĻ¸āĻĒā§āĻ°ā§āĻļāĻ¨āĻāĻŋ āĻĄāĻŋāĻĒā§āĻ˛āĻ¯āĻŧāĻŽā§āĻ¨ā§āĻā§āĻ° āĻĻā§āĻ°ā§āĻ JSON āĻŽā§āĻ¯āĻžāĻ¨āĻŋāĻĢā§āĻ¸ā§āĻāĻā§ āĻ˛ā§āĻŦā§āĻ˛ āĻ¸āĻš āĻā§āĻ JSON-āĻ āĻĒāĻ°āĻŋāĻŖāĻ¤ āĻāĻ°ā§:
āĻļā§āĻ˛-āĻ
āĻĒāĻžāĻ°ā§āĻāĻ° āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻšā§āĻ āĻāĻžāĻ˛āĻžāĻŦā§ āĻ¯āĻāĻ¨ āĻāĻ āĻ¸āĻāĻā§āĻˇāĻŋāĻĒā§āĻ¤ JSON āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻŋāĻ¤ āĻšāĻ¯āĻŧ, āĻāĻŦāĻ āĻ
āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻŦā§āĻļāĻŋāĻˇā§āĻā§āĻ¯ā§āĻ° āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻĒā§āĻā§āĻˇāĻž āĻāĻ°āĻž āĻšāĻŦā§āĨ¤
āĻšā§āĻ āĻ˛āĻā§āĻ āĻĒā§āĻ°āĻ¸āĻā§āĻ
āĻšā§āĻ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻāĻĒāĻ¨āĻžāĻā§ āĻāĻā§āĻ¨ā§āĻāĻā§āĻ˛āĻŋāĻ° āĻāĻ¨ā§āĻ¯ āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻŦāĻŋāĻāĻ˛ā§āĻĒ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻāĻ°āĻ¤ā§ āĻĻā§āĻ¯āĻŧ - āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, āĻā§āĻŦāĻžāĻ°āĻ¨ā§āĻāĻ¸ āĻĨā§āĻā§ āĻāĻā§āĻ¨ā§āĻā§āĻ° āĻāĻ¨ā§āĻ¯ 2āĻāĻŋ āĻŦāĻŋāĻāĻ˛ā§āĻĒ āĻāĻŦāĻ 2āĻāĻŋ āĻ¸āĻŽāĻ¯āĻŧāĻ¸ā§āĻā§:
{"onKubernetesEvent":[
{"name":"OnCreatePod",
"kind": "pod",
"event":["add"]
},
{"name":"OnModifiedNamespace",
"kind": "namespace",
"event":["update"],
"jqFilter": ".metadata.labels"
}
],
"schedule": [
{ "name":"every 10 min",
"crontab":"* */10 * * * *"
}, {"name":"on Mondays at 12:10",
"crontab": "* 10 12 * * 1"
]}
āĻāĻāĻāĻŋ āĻā§āĻ āĻĄāĻŋāĻā§āĻ°ā§āĻļāĻ¨: āĻšā§āĻ¯āĻžāĻ, āĻļā§āĻ˛-āĻ
āĻĒāĻžāĻ°ā§āĻāĻ° āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻāĻ°ā§ āĻāĻ˛āĻŽāĻžāĻ¨ crontab āĻļā§āĻ˛ā§ āĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻ. āĻāĻ°ā§ āĻŦāĻŋāĻ¸ā§āĻ¤āĻžāĻ°āĻŋāĻ¤ āĻĒāĻžāĻāĻ¯āĻŧāĻž āĻ¯āĻžāĻŦā§
āĻā§āĻ¨ āĻšā§āĻ āĻāĻžāĻ˛ā§ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛ āĻ¤āĻž āĻāĻ˛āĻžāĻĻāĻž āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯, āĻļā§āĻ˛-āĻ
āĻĒāĻžāĻ°ā§āĻāĻ° āĻāĻāĻāĻŋ āĻ
āĻ¸ā§āĻĨāĻžāĻ¯āĻŧā§ āĻĢāĻžāĻāĻ˛ āĻ¤ā§āĻ°āĻŋ āĻāĻ°ā§ āĻāĻŦāĻ āĻšā§āĻā§āĻ° āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨āĻļā§āĻ˛āĻāĻžāĻŦā§ āĻāĻāĻŋāĻ° āĻĒāĻžāĻĨ āĻĒāĻžāĻ¸ āĻāĻ°ā§āĨ¤ BINDING_CONTEXT_TYPE
. āĻĢāĻžāĻāĻ˛āĻāĻŋāĻ¤ā§ āĻšā§āĻ āĻāĻžāĻ˛āĻžāĻ¨ā§āĻ° āĻāĻžāĻ°āĻŖā§āĻ° āĻāĻāĻāĻŋ JSON āĻŦāĻŋāĻŦāĻ°āĻŖ āĻ°āĻ¯āĻŧā§āĻā§āĨ¤ āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, āĻĒā§āĻ°āĻ¤āĻŋ 10 āĻŽāĻŋāĻ¨āĻŋāĻā§ āĻšā§āĻ āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻāĻŋāĻ¤ āĻŦāĻŋāĻˇāĻ¯āĻŧāĻŦāĻ¸ā§āĻ¤ā§ āĻ¸āĻš āĻāĻ˛āĻŦā§:
[{ "binding": "every 10 min"}]
... āĻāĻŦāĻ āĻ¸ā§āĻŽāĻŦāĻžāĻ° āĻāĻāĻŋ āĻāĻ° āĻ¸āĻžāĻĨā§ āĻļā§āĻ°ā§ āĻšāĻŦā§:
[{ "binding": "every 10 min"}, { "binding": "on Mondays at 12:10"}]
āĻĨā§āĻā§ onKubernetesEvent
āĻāĻ°ā§ JSON āĻā§āĻ°āĻŋāĻāĻžāĻ° āĻšāĻŦā§, āĻāĻžāĻ°āĻŖ āĻāĻāĻŋ āĻŦāĻ¸ā§āĻ¤ā§āĻ° āĻāĻāĻāĻŋ āĻŦāĻŋāĻŦāĻ°āĻŖ āĻ°āĻ¯āĻŧā§āĻā§:
[
{
"binding": "onCreatePod",
"resourceEvent": "add",
"resourceKind": "pod",
"resourceName": "foo",
"resourceNamespace": "bar"
}
]
āĻā§āĻˇā§āĻ¤ā§āĻ°āĻā§āĻ˛āĻŋāĻ° āĻŦāĻŋāĻˇāĻ¯āĻŧāĻŦāĻ¸ā§āĻ¤ā§ āĻ¤āĻžāĻĻā§āĻ° āĻ¨āĻžāĻŽ āĻĨā§āĻā§ āĻŦā§āĻāĻž āĻ¯āĻžāĻ¯āĻŧ āĻāĻŦāĻ āĻāĻ°āĻ āĻŦāĻŋāĻļāĻĻ āĻŦāĻŋāĻŦāĻ°āĻŖ āĻĒāĻĄāĻŧāĻ¤ā§ āĻĒāĻžāĻ°ā§ resourceName
jq āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻāĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§ āĻāĻāĻāĻŋ āĻšā§āĻā§ āĻĻā§āĻāĻžāĻ¨ā§ āĻšāĻ¯āĻŧā§āĻā§ āĻ¯āĻž āĻā§āĻĒāĻ¨ā§āĻ¯āĻŧāĻ¤āĻžāĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻ˛āĻŋāĻĒāĻŋ āĻāĻ°ā§:
jq -r '.[0].resourceName' $BINDING_CONTEXT_PATH
āĻāĻĒāĻ¨āĻŋ āĻāĻāĻ āĻāĻžāĻŦā§ āĻ āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻā§āĻˇā§āĻ¤ā§āĻ° āĻĒā§āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨.
āĻāĻ°āĻĒāĻ°ā§ āĻā§?
āĻĒā§āĻ°āĻāĻ˛ā§āĻĒ āĻāĻžāĻ¨ā§āĻĄāĻžāĻ°ā§, āĻāĻ¨
āĻĒā§āĻ°āĻŽāĻŋāĻĨāĻŋāĻāĻ¸ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻŽā§āĻā§āĻ°āĻŋāĻā§āĻ¸ āĻ¸āĻāĻā§āĻ°āĻšā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻ°āĻ¯āĻŧā§āĻā§ - āĻāĻĒāĻ˛āĻŦā§āĻ§ āĻŽā§āĻā§āĻ°āĻŋāĻā§āĻ¸ āĻŦāĻŋāĻāĻžāĻā§ āĻŦāĻ°ā§āĻŖāĻ¨āĻž āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§
āĻāĻĒāĻ¨āĻŋ āĻ
āĻ¨ā§āĻŽāĻžāĻ¨ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨, āĻļā§āĻ˛-āĻ
āĻĒāĻžāĻ°ā§āĻāĻ°āĻāĻŋ Go-āĻ¤ā§ āĻ˛ā§āĻāĻž āĻāĻŦāĻ āĻāĻāĻāĻŋ āĻāĻĒā§āĻ¨ āĻ¸ā§āĻ°ā§āĻ¸ āĻ˛āĻžāĻāĻ¸ā§āĻ¨ā§āĻ¸ (Apache 2.0) āĻāĻ° āĻ
āĻ§ā§āĻ¨ā§ āĻŦāĻŋāĻ¤āĻ°āĻŖ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§āĨ¤ āĻ¯ā§āĻā§āĻ¨ā§ āĻāĻ¨ā§āĻ¨āĻ¯āĻŧāĻ¨ āĻ¸āĻšāĻžāĻ¯āĻŧāĻ¤āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻŽāĻ°āĻž āĻā§āĻ¤āĻā§āĻ āĻĨāĻžāĻāĻŦ
āĻā§āĻĒāĻ¨ā§āĻ¯āĻŧāĻ¤āĻžāĻ° āĻā§āĻŽāĻāĻž āĻ¤ā§āĻ˛ā§, āĻāĻŽāĻ°āĻž āĻāĻĒāĻ¨āĻžāĻā§ āĻāĻžāĻ¨āĻžāĻŦ āĻ¯ā§ āĻļā§āĻ˛-āĻ
āĻĒāĻžāĻ°ā§āĻāĻ° āĻā§āĻ āĻāĻŽāĻžāĻĻā§āĻ° āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽā§āĻ° āĻ
āĻāĻļ āĻ¯āĻž āĻā§āĻŦāĻžāĻ°āĻ¨ā§āĻāĻ¸ āĻā§āĻ˛āĻžāĻ¸ā§āĻāĻžāĻ°ā§ āĻāĻ¨āĻ¸ā§āĻāĻ˛ āĻāĻ°āĻž āĻ
ā§āĻ¯āĻžāĻĄ-āĻ
āĻ¨āĻā§āĻ˛āĻŋāĻā§ āĻāĻĒ āĻā§ āĻĄā§āĻ āĻ°āĻžāĻāĻ¤ā§ āĻĒāĻžāĻ°ā§ āĻāĻŦāĻ āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻ¸ā§āĻŦāĻ¯āĻŧāĻāĻā§āĻ°āĻŋāĻ¯āĻŧ āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻ¸āĻŽā§āĻĒāĻžāĻĻāĻ¨ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤ āĻāĻ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻāĻ°āĻ āĻĒāĻĄāĻŧā§āĻ¨
āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽā§āĻ° āĻŦāĻžāĻāĻŋ āĻ
āĻāĻļ āĻā§āĻ˛āĻžāĻ° āĻĒāĻ°āĻŋāĻāĻ˛ā§āĻĒāĻ¨āĻž āĻāĻā§: āĻ
ā§āĻ¯āĻžāĻĄāĻ¨-āĻ
āĻĒāĻžāĻ°ā§āĻāĻ° āĻāĻŦāĻ āĻāĻŽāĻžāĻĻā§āĻ° āĻšā§āĻ āĻāĻŦāĻ āĻŽāĻĄāĻŋāĻāĻ˛āĻā§āĻ˛āĻŋāĻ° āĻ¸āĻāĻā§āĻ°āĻšāĨ¤ āĻ¯āĻžāĻāĻšā§āĻ, āĻ
ā§āĻ¯āĻžāĻĄāĻ
āĻ¨-āĻ
āĻĒāĻžāĻ°ā§āĻāĻ° āĻāĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§āĻ
āĻ¸āĻžāĻĨā§ āĻĨāĻžāĻā§āĻ¨!
āĻĻā§āĻ°āĻˇā§āĻāĻŦā§āĻ¯
āĻāĻŽāĻžāĻĻā§āĻ° āĻŦā§āĻ˛āĻā§āĻ āĻĒāĻĄāĻŧā§āĻ¨:
- ÂĢ
āĻā§āĻŦāĻžāĻ°āĻ¨ā§āĻāĻ¸ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ āĻĒāĻžāĻ°ā§āĻāĻ°: āĻ°āĻžāĻˇā§āĻā§āĻ°ā§āĻ¯āĻŧ āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨āĻā§āĻ˛āĻŋ āĻā§āĻāĻžāĻŦā§ āĻāĻžāĻ˛āĻžāĻ¤ā§ āĻšāĻ¯āĻŧ "; - ÂĢ
āĻāĻŽāĻ°āĻž āĻā§āĻ˛āĻ-āĻ Kubernetes-āĻāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻ āĻĒāĻžāĻ°ā§āĻāĻ° āĻ˛āĻŋāĻāĻŋ "; - ÂĢ
Grafana - āĻ¸ā§āĻā§āĻ¯āĻžāĻāĻžāĻ¸āĻŽā§āĻ¯āĻžāĻĒ āĻĒā§āĻ¯āĻžāĻ¨ā§āĻ˛ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻĒā§āĻ˛āĻžāĻāĻāĻ¨ āĻĒā§āĻ°āĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ°āĻž āĻšāĻā§āĻā§ "; - ÂĢ
āĻ˛āĻāĻšāĻžāĻāĻ¸ āĻĒā§āĻ°āĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ°āĻž āĻšāĻā§āĻā§ - āĻā§āĻŦāĻžāĻ°āĻ¨ā§āĻā§ āĻ˛āĻā§āĻ° āĻ¸āĻžāĻĨā§ āĻāĻžāĻ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻāĻĒā§āĻ¨ āĻ¸ā§āĻ°ā§āĻ¸ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽ "; - ÂĢ
āĻāĻŽāĻ°āĻž āĻāĻ¨ā§āĻˇā§āĻ āĻžāĻ¨āĻŋāĻāĻāĻžāĻŦā§ Dapp āĻāĻĒāĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻ°āĻŋ - CI/CD āĻ°āĻā§āĻˇāĻŖāĻžāĻŦā§āĻā§āĻˇāĻŖā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ DevOps āĻāĻāĻāĻŋāĻ˛āĻŋāĻāĻŋ Âģ.
āĻāĻ¤ā§āĻ¸: www.habr.com