ื›ื™ืฆื“ ืœื”ืฉืชืžืฉ ื‘-kubectl ื‘ืฆื•ืจื” ื™ืขื™ืœื” ื™ื•ืชืจ: ืžื“ืจื™ืš ืžืคื•ืจื˜

ื›ื™ืฆื“ ืœื”ืฉืชืžืฉ ื‘-kubectl ื‘ืฆื•ืจื” ื™ืขื™ืœื” ื™ื•ืชืจ: ืžื“ืจื™ืš ืžืคื•ืจื˜
ืื ืืชื” ืขื•ื‘ื“ ืขื Kubernetes, ืื– kubectl ื”ื•ื ื›ื ืจืื” ืื—ื“ ืžื›ืœื™ ื”ืฉื™ืจื•ืช ืฉื‘ื”ื ืืชื” ืžืฉืชืžืฉ ื”ื›ื™ ื”ืจื‘ื”. ื•ื‘ื›ืœ ืคืขื ืฉืืชื” ืžื‘ืœื” ื–ืžืŸ ืจื‘ ื‘ืขื‘ื•ื“ื” ืขื ื›ืœื™ ืžืกื•ื™ื, ื›ื“ืื™ ืœืœืžื•ื“ ืื•ืชื• ื”ื™ื˜ื‘ ื•ืœืœืžื•ื“ ื›ื™ืฆื“ ืœื”ืฉืชืžืฉ ื‘ื• ื‘ื™ืขื™ืœื•ืช.

ืงื‘ื•ืฆื” Kubernetes aaS ืž-Mail.ru ืชืจื’ื ืžืืžืจ ืžืืช ื“ื ื™ืืœ ื•ื•ื™ื‘ืœ ื‘ื• ืชืžืฆืื• ื˜ื™ืคื™ื ื•ื˜ืจื™ืงื™ื ืœืขื‘ื•ื“ื” ื™ืขื™ืœื” ืขื kubectl. ื–ื” ื’ื ื™ืขื–ื•ืจ ืœืš ืœืงื‘ืœ ื”ื‘ื ื” ืžืขืžื™ืงื” ื™ื•ืชืจ ืฉืœ Kubernetes.

ืœื“ื‘ืจื™ ื”ืžื—ื‘ืจ, ืžื˜ืจืช ื”ืžืืžืจ ื”ื™ื ืœื”ืคื•ืš ืืช ื”ืขื‘ื•ื“ื” ื”ื™ื•ืžื™ื•ืžื™ืช ืฉืœืš ืขื Kubernetes ืœื ืจืง ืœื™ืขื™ืœื” ื™ื•ืชืจ, ืืœื ื’ื ืœืžื”ื ื” ื™ื•ืชืจ!

ืžื‘ื•ื: ืžื” ื–ื” kubectl

ืœืคื ื™ ืฉืชื•ื›ืœ ืœืœืžื•ื“ ืœื”ืฉืชืžืฉ ื‘-kubectl ื‘ืฆื•ืจื” ื™ืขื™ืœื” ื™ื•ืชืจ, ืขืœื™ืš ืœืงื‘ืœ ื”ื‘ื ื” ื‘ืกื™ืกื™ืช ืฉืœ ืžื” ื–ื” ื•ืื™ืš ื–ื” ืขื•ื‘ื“.

ืžื ืงื•ื“ืช ืžื‘ื˜ ืฉืœ ืžืฉืชืžืฉ, kubectl ื”ื•ื ืœื•ื— ื‘ืงืจื” ื”ืžืืคืฉืจ ืœืš ืœื‘ืฆืข ืคืขื•ืœื•ืช Kubernetes.

ืžื‘ื—ื™ื ื” ื˜ื›ื ื™ืช, kubectl ื”ื•ื ืœืงื•ื— ืฉืœ Kubernetes API.

Kubernetes API ื”ื•ื HTTP REST API. API ื–ื” ื”ื•ื ืžืžืฉืง ื”ืžืฉืชืžืฉ ื”ืืžื™ืชื™ ืฉืœ Kubernetes, ืฉื“ืจื›ื• ื”ื•ื ื ืฉืœื˜ ืœื—ืœื•ื˜ื™ืŸ. ื”ืžืฉืžืขื•ืช ื”ื™ื ืฉื›ืœ ืคืขื•ืœืช Kubernetes ื ื—ืฉืคืช ื›ื ืงื•ื“ืช ืงืฆื” API ื•ื ื™ืชืŸ ืœื‘ืฆืข ืื•ืชื” ื‘ืืžืฆืขื•ืช ื‘ืงืฉืช HTTP ืœืื•ืชื” ื ืงื•ื“ืช ืงืฆื”.

ืœื›ืŸ, ื”ืชืคืงื™ื“ ื”ืขื™ืงืจื™ ืฉืœ kubectl ื”ื•ื ืœื‘ืฆืข ื‘ืงืฉื•ืช HTTP ืœ-Kubernetes API:

ื›ื™ืฆื“ ืœื”ืฉืชืžืฉ ื‘-kubectl ื‘ืฆื•ืจื” ื™ืขื™ืœื” ื™ื•ืชืจ: ืžื“ืจื™ืš ืžืคื•ืจื˜
Kubernetes ื”ื™ื ืžืขืจื›ืช ืžื•ื›ื•ื•ื ืช ืžืฉืื‘ื™ื ืœื—ืœื•ื˜ื™ืŸ. ื”ืžืฉืžืขื•ืช ื”ื™ื ืฉื”ื™ื ืฉื•ืžืจืช ืขืœ ื”ืžืฆื‘ ื”ืคื ื™ืžื™ ืฉืœ ื”ืžืฉืื‘ื™ื ื•ื›ืœ ืคืขื•ืœื•ืช Kubernetes ื”ืŸ ืคืขื•ืœื•ืช CRUD.

ืืชื” ื‘ืฉืœื™ื˜ื” ืžืœืื” ืขืœ Kubernetes ืขืœ ื™ื“ื™ ื ื™ื”ื•ืœ ืžืฉืื‘ื™ื ืืœื”, ื•- Kubernetes ืžื’ืœื” ืžื” ืœืขืฉื•ืช ื‘ื”ืชื‘ืกืก ืขืœ ื”ืžืฆื‘ ื”ื ื•ื›ื—ื™ ืฉืœ ื”ืžืฉืื‘ื™ื. ืžืกื™ื‘ื” ื–ื•, ื”ื”ืคื ื™ื” ืฉืœ Kubernetes API ืžืื•ืจื’ื ืช ื›ืจืฉื™ืžื” ืฉืœ ืกื•ื’ื™ ืžืฉืื‘ื™ื ืขื ื”ืคืขื•ืœื•ืช ื”ืžืฉื•ื™ื›ื•ืช ืœื”ื.

ื‘ื•ืื• ื ืกืชื›ืœ ืขืœ ื“ื•ื’ืžื”.

ื ื ื™ื— ืฉืืชื” ืจื•ืฆื” ืœื™ืฆื•ืจ ืžืฉืื‘ ReplicaSet. ืœืฉื ื›ืš, ืืชื” ืžืชืืจ ืืช ReplicaSet ื‘ืงื•ื‘ืฅ ืœืคื™ ืฉื replicaset.yaml, ื•ืื– ื”ืคืขืœ ืืช ื”ืคืงื•ื“ื”:

$ kubectl create -f replicaset.yaml

ืคืขื•ืœื” ื–ื• ืชื™ืฆื•ืจ ืžืฉืื‘ ReplicaSet. ืื‘ืœ ืžื” ืงื•ืจื” ืžืื—ื•ืจื™ ื”ืงืœืขื™ื?

ืœ-Kubernetes ื™ืฉ ืคืขื•ืœืช ื™ืฆื™ืจืช ReplicaSet. ื›ืžื• ื›ืœ ืคืขื•ืœื” ืื—ืจืช, ื”ื™ื ื—ืฉื•ืคื” ื›ื ืงื•ื“ืช ืงืฆื” ืฉืœ API. ื ืงื•ื“ืช ื”ืงืฆื” ื”ืกืคืฆื™ืคื™ืช ืฉืœ ื”-API ืขื‘ื•ืจ ืคืขื•ืœื” ื–ื• ื ืจืื™ืช ื›ืš:

POST /apis/apps/v1/namespaces/{namespace}/replicasets

ื ื™ืชืŸ ืœืžืฆื•ื ื ืงื•ื“ื•ืช ืงืฆื” ืฉืœ API ืขื‘ื•ืจ ื›ืœ ืคืขื•ืœื•ืช Kubernetes ื‘ื›ืชื•ื‘ืช ื”ืคื ื™ื” ืœ-API (ื›ื•ืœืœ ื ืงื•ื“ืช ื”ืกื™ื•ื ืœืขื™ืœ). ื›ื“ื™ ืœื‘ืฆืข ื‘ืงืฉื” ื‘ืคื•ืขืœ ืœื ืงื•ื“ืช ืงืฆื”, ืชื—ื™ืœื” ืขืœื™ืš ืœื”ื•ืกื™ืฃ ืืช ื›ืชื•ื‘ืช ื”ืืชืจ ืฉืœ ืฉืจืช ื”-API ืœื ืชื™ื‘ื™ ื ืงื•ื“ืช ื”ืงืฆื” ื”ืจืฉื•ืžื™ื ื‘ื”ืคื ื™ื” ืœ-API.

ืœืคื™ื›ืš, ื›ืืฉืจ ืืชื” ืžื‘ืฆืข ืืช ื”ืคืงื•ื“ื” ืœืขื™ืœ, kubectl ืฉื•ืœื— ื‘ืงืฉืช HTTP POST ืœื ืงื•ื“ืช ื”ืงืฆื” ืฉืœ ื”-API ืฉืœืžืขืœื”. ื”ื’ื“ืจืช ReplicaSet ืฉืกื™ืคืงืช ื‘ืงื•ื‘ืฅ replicaset.yaml, ื ืฉืœื— ื‘ื’ื•ืฃ ื”ื‘ืงืฉื”.

ื›ืš ืคื•ืขืœ kubectl ืขื‘ื•ืจ ื›ืœ ื”ืคืงื•ื“ื•ืช ื”ืžืงื™ื™ืžื•ืช ืื™ื ื˜ืจืืงืฆื™ื” ืขื ืืฉื›ื•ืœ Kubernetes. ื‘ื›ืœ ื”ืžืงืจื™ื ื”ืœืœื•, kubectl ืคืฉื•ื˜ ืžื‘ืฆืข ื‘ืงืฉื•ืช HTTP ืœื ืงื•ื“ื•ืช ื”ืงืฆื” ื”ืžืชืื™ืžื•ืช ืฉืœ Kubernetes API.

ืฉื™ื ืœื‘ ืฉืืชื” ื™ื›ื•ืœ ืœื ื”ืœ ืืช Kubernetes ื‘ืื•ืคืŸ ืžืœื ื‘ืืžืฆืขื•ืช ื›ืœื™ ืฉื™ืจื•ืช ื›ื’ื•ืŸ curlืขืœ ื™ื“ื™ ืฉืœื™ื—ืช ื‘ืงืฉื•ืช HTTP ื™ื“ื ื™ืช ืœ-Kubernetes API. Kubectl ืคืฉื•ื˜ ืžืงืœ ืขืœ ื”ืฉื™ืžื•ืฉ ื‘-Kubernetes API.

ื–ื” ื”ื™ืกื•ื“ื•ืช ืฉืœ ืžื” ื–ื” kubectl ื•ืื™ืš ื–ื” ืขื•ื‘ื“. ืื‘ืœ ื™ืฉ ืžืฉื”ื• ืื—ืจ ื‘-Kubernetes API ืฉื›ืœ ืžืฉืชืžืฉ kubectl ืฆืจื™ืš ืœื“ืขืช. ื‘ื•ืื• ื ืกืชื›ืœ ื‘ืžื”ื™ืจื•ืช ืขืœ ื”ืขื•ืœื ื”ืคื ื™ืžื™ ืฉืœ Kubernetes.

ื”ืขื•ืœื ื”ืคื ื™ืžื™ ืฉืœ Kubernetes

Kubernetes ืžื•ืจื›ื‘ืช ืžืงื‘ื•ืฆื” ืฉืœ ืจื›ื™ื‘ื™ื ืขืฆืžืื™ื™ื ื”ืคื•ืขืœื™ื ื›ืชื”ืœื™ื›ื™ื ื ืคืจื“ื™ื ื‘ืฆืžืชื™ ืืฉื›ื•ืœ. ื—ืœืง ืžื”ืจื›ื™ื‘ื™ื ืคื•ืขืœื™ื ืขืœ ืฆืžืชื™ื ืžืืกื˜ืจ, ืื—ืจื™ื ืขืœ ืฆืžืชื™ ืขื•ื‘ื“ื™ื, ื›ืœ ืจื›ื™ื‘ ืžื‘ืฆืข ืืช ื”ืžืฉื™ืžื” ื”ืกืคืฆื™ืคื™ืช ืฉืœื•.

ืœื”ืœืŸ ื”ืจื›ื™ื‘ื™ื ื”ื—ืฉื•ื‘ื™ื ื‘ื™ื•ืชืจ ื‘ืฆืžืชื™ื ื”ืจืืฉื™ื™ื:

  1. ืื—ืกื•ืŸ - ืžืื—ืกืŸ ื”ื’ื“ืจื•ืช ืžืฉืื‘ื™ื (ื‘ื“ืจืš ื›ืœืœ ื–ื” ื•ื›ื•').
  2. ืฉืจืช API - ืžืกืคืง API ื•ืžื ื”ืœ ืื—ืกื•ืŸ.
  3. ืžื ื”ืœ ื‘ืงืจ - ืžื‘ื˜ื™ื— ืฉืกื˜ื˜ื•ืกื™ ืžืฉืื‘ื™ื ืชื•ืืžื™ื ืœืžืคืจื˜ื™ื.
  4. ืžืชื–ืžืŸ - ืžืชื–ืžืŸ ืชืจืžื™ืœื™ื ื‘ืฆืžืชื™ ืขื•ื‘ื“ื™ื.

ื•ื”ื ื” ืžืจื›ื™ื‘ ืื—ื“ ื—ืฉื•ื‘ ื‘ื™ื•ืชืจ ื‘ืฆืžืชื™ ื”ืขื•ื‘ื“:

  1. ืงื•ื‘ืœื˜ - ืžื ื”ืœ ืืช ื”ื”ืฉืงื” ืฉืœ ืžื›ื•ืœื•ืช ื‘ืฆื•ืžืช ื”ืขื‘ื•ื“ื”.

ื›ื“ื™ ืœื”ื‘ื™ืŸ ื›ื™ืฆื“ ืžืจื›ื™ื‘ื™ื ืืœื” ืคื•ืขืœื™ื ื™ื—ื“, ื”ื‘ื” ื ืกืชื›ืœ ืขืœ ื“ื•ื’ืžื”.

ื‘ื•ื ื ื ื™ื— ืฉื–ื” ืขืชื” ืกื™ื™ืžืช kubectl create -f replicaset.yaml, ืฉืœืื—ืจื™ื• kubectl ื‘ื™ืฆืขื” ื‘ืงืฉืช HTTP POST ืืœ ื ืงื•ื“ืช ืงืฆื” ืฉืœ ReplicaSet API (ืžืขื‘ื™ืจ ืืช ื”ื’ื“ืจืช ื”ืžืฉืื‘ ืฉืœ ReplicaSet).

ืžื” ืงื•ืจื” ื‘ืืฉื›ื•ืœ?

  1. ืœืื—ืจ ืžืขืฉื” kubectl create -f replicaset.yaml ืฉืจืช ื”-API ืžืื—ืกืŸ ืืช ื”ื’ื“ืจืช ื”ืžืฉืื‘ ืฉืœ ReplicaSet ื‘ืื—ืกื•ืŸ:

    ื›ื™ืฆื“ ืœื”ืฉืชืžืฉ ื‘-kubectl ื‘ืฆื•ืจื” ื™ืขื™ืœื” ื™ื•ืชืจ: ืžื“ืจื™ืš ืžืคื•ืจื˜

  2. ืœืื—ืจ ืžื›ืŸ, ื‘ืงืจ ื”-ReplicaSet ืžื•ืคืขืœ ื‘ืžื ื”ืœ ื”ื‘ืงืจ, ื”ืžื˜ืคืœ ื‘ื™ืฆื™ืจื”, ืฉื™ื ื•ื™ ื•ืžื—ื™ืงื” ืฉืœ ืžืฉืื‘ื™ ReplicaSet:

    ื›ื™ืฆื“ ืœื”ืฉืชืžืฉ ื‘-kubectl ื‘ืฆื•ืจื” ื™ืขื™ืœื” ื™ื•ืชืจ: ืžื“ืจื™ืš ืžืคื•ืจื˜

  3. ื‘ืงืจ ื”-ReplicaSet ื™ื•ืฆืจ ื”ื’ื“ืจืช ืคื•ื“ ืขื‘ื•ืจ ื›ืœ ื”ืขืชืง ืฉืœ ReplicaSet (ืœืคื™ ืชื‘ื ื™ืช ื”ืคื•ื“ ื‘ื”ื’ื“ืจืช ReplicaSet) ื•ืžืื—ืกืŸ ืื•ืชื ื‘ืื—ืกื•ืŸ:

    ื›ื™ืฆื“ ืœื”ืฉืชืžืฉ ื‘-kubectl ื‘ืฆื•ืจื” ื™ืขื™ืœื” ื™ื•ืชืจ: ืžื“ืจื™ืš ืžืคื•ืจื˜

  4. ืžืชื–ืžืŸ ืžื•ืคืขืœ, ืขื•ืงื‘ ืื—ืจ ืชืจืžื™ืœื™ื ืฉืขื“ื™ื™ืŸ ืœื ื”ื•ืงืฆื• ืœืฉื•ื ืฆื•ืžืช ืขื•ื‘ื“ื™ื:

    ื›ื™ืฆื“ ืœื”ืฉืชืžืฉ ื‘-kubectl ื‘ืฆื•ืจื” ื™ืขื™ืœื” ื™ื•ืชืจ: ืžื“ืจื™ืš ืžืคื•ืจื˜

  5. ื”ืžืชื–ืžืŸ ื‘ื•ื—ืจ ืฆื•ืžืช ืขื•ื‘ื“ ืžืชืื™ื ืœื›ืœ ืคื•ื“ ื•ืžื•ืกื™ืฃ ืžื™ื“ืข ื–ื” ืœื”ื’ื“ืจืช ื”ืคื•ื“ ื‘ื—ื ื•ืช:

    ื›ื™ืฆื“ ืœื”ืฉืชืžืฉ ื‘-kubectl ื‘ืฆื•ืจื” ื™ืขื™ืœื” ื™ื•ืชืจ: ืžื“ืจื™ืš ืžืคื•ืจื˜

  6. ื‘ืฆื•ืžืช ื”ืขื•ื‘ื“ ืฉืืœื™ื• ืžื•ืงืฆื” ื”ืคื•ื“, Kubelet ืžื•ืคืขืœ, ื”ื•ื ืขื•ืงื‘ ืื—ืจ ื”ืคื•ื“ื™ื ืฉื”ื•ืงืฆื• ืœืฆื•ืžืช ื–ื”:

    ื›ื™ืฆื“ ืœื”ืฉืชืžืฉ ื‘-kubectl ื‘ืฆื•ืจื” ื™ืขื™ืœื” ื™ื•ืชืจ: ืžื“ืจื™ืš ืžืคื•ืจื˜

  7. ื”-Kubelet ืงื•ืจื ืืช ื”ื’ื“ืจืช ื”ืชืจืžื™ืœ ืžื”ืื—ืกื•ืŸ ื•ืžื•ืจื” ืœื–ืžืŸ ืจื™ืฆื” ืฉืœ ืžื™ื›ืœ, ื›ื’ื•ืŸ Docker, ืœื”ืฉื™ืง ืงื•ื ื˜ื™ื™ื ืจื™ื ื‘ืฆื•ืžืช:

    ื›ื™ืฆื“ ืœื”ืฉืชืžืฉ ื‘-kubectl ื‘ืฆื•ืจื” ื™ืขื™ืœื” ื™ื•ืชืจ: ืžื“ืจื™ืš ืžืคื•ืจื˜

ืœื”ืœืŸ ื’ืจืกืช ื˜ืงืกื˜ ืฉืœ ืชื™ืื•ืจ ื–ื”.

ื‘ืงืฉืช ื”-API ืœื ืงื•ื“ืช ื”ืงืฆื” ืฉืœ ื™ืฆื™ืจืช ReplicaSet ืžืขื•ื‘ื“ืช ืขืœ ื™ื“ื™ ืฉืจืช ื”-API. ืฉืจืช ื”-API ืžืืžืช ืืช ื”ื‘ืงืฉื” ื•ืžืื—ืกืŸ ืืช ื”ื’ื“ืจืช ื”ืžืฉืื‘ ืฉืœ ReplicaSet ื‘ืื—ืกื•ืŸ.

ืื™ืจื•ืข ื–ื” ืžืชื—ื™ืœ ืืช ื‘ืงืจ ReplicaSet, ืฉื”ื•ื ืชืช-ืชื”ืœื™ืš ืฉืœ ืžื ื”ืœ ื”ื‘ืงืจ. ื‘ืงืจ ReplicaSet ืขื•ืงื‘ ืื—ืจ ื™ืฆื™ืจื”, ืขื“ื›ื•ืŸ ื•ืžื—ื™ืงื” ืฉืœ ืžืฉืื‘ื™ ReplicaSet ื‘ื—ื ื•ืช ื•ืžืงื‘ืœ ื”ื•ื“ืขื” ืขืœ ืื™ืจื•ืข ื›ืืฉืจ ื–ื” ืžืชืจื—ืฉ.

ืชืคืงื™ื“ื• ืฉืœ ื‘ืงืจ ื”-ReplicaSet ื”ื•ื ืœื•ื•ื“ื ืฉืงื™ื™ื ื”ืžืกืคืจ ื”ื ื“ืจืฉ ืฉืœ ืชืจืžื™ืœื™ื ืฉืœ ReplicaSet. ื‘ื“ื•ื’ืžื” ืฉืœื ื•, ืขื“ื™ื™ืŸ ืœื ืงื™ื™ืžื™ื ืคื•ื“ื™ื, ืื– ื”ื‘ืงืจ ืฉืœ ReplicaSet ื™ื•ืฆืจ ืืช ื”ื’ื“ืจื•ืช ื”ืคื•ื“ ื”ืœืœื• (ืœืคื™ ืชื‘ื ื™ืช ื”ืคื•ื“ ื‘ื”ื’ื“ืจืช ReplicaSet) ื•ืžืื—ืกืŸ ืื•ืชื ื‘ืื—ืกื•ืŸ.

ื”ื™ืฆื™ืจื” ืฉืœ ืชืจืžื™ืœื™ื ื—ื“ืฉื™ื ืžื•ืคืขืœืช ืขืœ ื™ื“ื™ ืžืชื–ืžืŸ ืฉืขื•ืงื‘ ืื—ืจ ื”ื’ื“ืจื•ืช ืชืจืžื™ืœื™ื ืฉืขื“ื™ื™ืŸ ืœื ืžืชื•ื›ื ื ื•ืช ืœืฆืžืชื™ ืขื•ื‘ื“ื™ื. ื”ืžืชื–ืžืŸ ื‘ื•ื—ืจ ืฆื•ืžืช ืขื•ื‘ื“ ืžืชืื™ื ืœื›ืœ ืคื•ื“ ื•ืžืขื“ื›ืŸ ืืช ื”ื’ื“ืจื•ืช ื”ืคื•ื“ ื‘ืžืื’ืจ.

ืฉื™ื ืœื‘ ืฉืขื“ ืœื ืงื•ื“ื” ื–ื•, ืœื ืคืขืœ ืงื•ื“ ืขื•ืžืก ืขื‘ื•ื“ื” ื‘ืฉื•ื ืžืงื•ื ื‘ืืฉื›ื•ืœ. ื›ืœ ืžื” ืฉื ืขืฉื” ืขื“ ื›ื” - ื–ื”ื• ื™ืฆื™ืจื” ื•ืขื“ื›ื•ืŸ ืฉืœ ืžืฉืื‘ื™ื ื‘ืžืื’ืจ ื‘ืฆื•ืžืช ื”ืจืืฉื™.

ื”ืื™ืจื•ืข ื”ืื—ืจื•ืŸ ืžืคืขื™ืœ Kubelets, ืฉืขื•ืงื‘ื™ื ืื—ืจ ื”ืคื•ื“ื™ื ื”ืžืชื•ื–ืžื ื™ื ืœืฆืžืชื™ ื”ืขื•ื‘ื“ื™ื ืฉืœื”ื. ื”-Kubelet ืฉืœ ืฆื•ืžืช ื”ืขื‘ื•ื“ื” ืฉืขืœื™ื• ืžื•ืชืงื ื™ื ื”ืคื•ื“ื™ื ืฉืœ ReplicaSet ืฉืœืš ื—ื™ื™ื‘ืช ืœื”ื•ืจื•ืช ืœื–ืžืŸ ื”ืจื™ืฆื” ืฉืœ ื”ืžื›ื•ืœื”, ื›ื’ื•ืŸ Docker, ืœื”ื•ืจื™ื“ ืืช ืชืžื•ื ื•ืช ื”ืžื›ื•ืœื” ื”ื ื“ืจืฉื•ืช ื•ืœื”ืคืขื™ืœ ืื•ืชืŸ.

ื‘ืฉืœื‘ ื–ื”, ืืคืœื™ืงืฆื™ื™ืช ReplicaSet ืฉืœืš ืกื•ืฃ ืกื•ืฃ ืคื•ืขืœืช!

ืชืคืงื™ื“ ื”-API ืฉืœ Kubernetes

ื›ืคื™ ืฉืจืื™ืช ื‘ื“ื•ื’ืžื” ื”ืงื•ื“ืžืช, ืจื›ื™ื‘ื™ Kubernetes (ืœืžืขื˜ ืฉืจืช ื”-API ื•ื”ืื—ืกื•ืŸ) ืขื•ืงื‘ื™ื ืื—ืจ ืฉื™ื ื•ื™ื™ื ื‘ืžืฉืื‘ื™ื ื‘ืื—ืกื•ืŸ ื•ืžืฉื ื™ื ืžื™ื“ืข ืขืœ ืžืฉืื‘ื™ื ื‘ืื—ืกื•ืŸ.

ื›ืžื•ื‘ืŸ ืฉืจื›ื™ื‘ื™ื ืืœื• ืื™ื ื ืžืงื™ื™ืžื™ื ืื™ื ื˜ืจืืงืฆื™ื” ื™ืฉื™ืจื” ืขื ื”ืื—ืกื•ืŸ, ืืœื ืจืง ื“ืจืš ื”-API ืฉืœ Kubernetes.

ืฉืงื•ืœ ืืช ื”ื“ื•ื’ืžืื•ืช ื”ื‘ืื•ืช:

  1. ื‘ืงืจ ReplicaSet ืžืฉืชืžืฉ ื‘ื ืงื•ื“ืช ื”ืงืฆื” ืฉืœ ื”-API ืจืฉื™ืžืช ReplicaSets ืขื ืคืจืžื˜ืจ watch ื›ื“ื™ ืœื ื˜ืจ ืฉื™ื ื•ื™ื™ื ื‘ืžืฉืื‘ื™ ReplicaSet.
  2. ื‘ืงืจ ReplicaSet ืžืฉืชืžืฉ ื‘ื ืงื•ื“ืช ื”ืงืฆื” ืฉืœ ื”-API ืœื™ืฆื•ืจ Pod (ื™ืฆื™ืจืช ืชืจืžื™ืœ) ื›ื“ื™ ืœื™ืฆื•ืจ ืชืจืžื™ืœื™ื.
  3. ืžืชื–ืžืŸ ืžืฉืชืžืฉ ื‘ื ืงื•ื“ืช ืงืฆื” API ืชืจืžื™ืœ ืชื™ืงื•ืŸ (ืขืจื•ืš ืคื•ื“) ื›ื“ื™ ืœืขื“ื›ืŸ ืคื•ื“ื™ื ืขื ืžื™ื“ืข ืขืœ ืฆื•ืžืช ื”ืขื‘ื•ื“ื” ืฉื ื‘ื—ืจ.

ื›ืคื™ ืฉืืชื” ื™ื›ื•ืœ ืœืจืื•ืช, ื–ื”ื• ืื•ืชื• API ืืœื™ื• kubectl ื ื™ื’ืฉืช. ืฉื™ืžื•ืฉ ื‘ืื•ืชื• API ืขื‘ื•ืจ ืจื›ื™ื‘ื™ื ืคื ื™ืžื™ื™ื ื•ืžืฉืชืžืฉื™ื ื—ื™ืฆื•ื ื™ื™ื ื”ื•ื ืจืขื™ื•ืŸ ื‘ืกื™ืกื™ ื‘ืขื™ืฆื•ื‘ Kubernetes.

ืขื›ืฉื™ื• ืื ื—ื ื• ื™ื›ื•ืœื™ื ืœืกื›ื ืื™ืš Kubernetes ืขื•ื‘ื“:

  1. ื—ื ื•ื™ื•ืช ื”ืื—ืกื•ืŸ ืžืฆื™ื™ื ื•ืช, ื›ืœื•ืžืจ ืžืฉืื‘ื™ Kubernetes.
  2. ืฉืจืช ื”-API ืžืกืคืง ืžืžืฉืง ืœืื—ืกื•ืŸ ื‘ืฆื•ืจื” ืฉืœ ื”-API ืฉืœ Kubernetes.
  3. ื›ืœ ืฉืืจ ื”ืจื›ื™ื‘ื™ื ื•ื”ืžืฉืชืžืฉื™ื ืฉืœ Kubernetes ืงื•ืจืื™ื, ืžืชื‘ื•ื ื ื™ื ื•ืžืชืคืขืœื™ื ืืช ืžืฆื‘ Kubernetes (ืžืฉืื‘ื™ื) ื‘ืืžืฆืขื•ืช ื”-API.

ื”ื›ืจืช ื”ืžื•ืฉื’ื™ื ื”ืœืœื• ืชืขื–ื•ืจ ืœืš ืœื”ื‘ื™ืŸ ื˜ื•ื‘ ื™ื•ืชืจ ืืช kubectl ื•ืœื”ืคื™ืง ืžืžื ื• ืืช ื”ืžืจื‘.

ืขื›ืฉื™ื• ื‘ื•ืื• ื ืกืชื›ืœ ืขืœ ื›ืžื” ื˜ื™ืคื™ื ื•ื˜ืจื™ืงื™ื ืกืคืฆื™ืคื™ื™ื ืฉื™ืขื–ืจื• ืœืฉืคืจ ืืช ื”ืคืจื•ื“ื•ืงื˜ื™ื‘ื™ื•ืช ืฉืœื›ื ืขื kubectl.

1. ื”ืืฅ ืืช ื”ืงืœื˜ ื‘ืืžืฆืขื•ืช ื”ืฉืœืžืช ืคืงื•ื“ื”

ืื—ืช ื”ื˜ื›ื ื™ืงื•ืช ื”ืฉื™ืžื•ืฉื™ื•ืช ื‘ื™ื•ืชืจ, ืืš ืœืขืชื™ื ืงืจื•ื‘ื•ืช ืžืชืขืœืžื•ืช ืžืžื ื”, ืœืฉื™ืคื•ืจ ื”ื‘ื™ืฆื•ืขื™ื ืขื kubectl ื”ื™ื ื”ืฉืœืžืช ืคืงื•ื“ื•ืช.

ื”ืฉืœืžืช ืคืงื•ื“ื” ืžืืคืฉืจืช ืœืš ืœื”ืฉืœื™ื ื‘ืื•ืคืŸ ืื•ื˜ื•ืžื˜ื™ ื—ืœืงื™ื ืžืคืงื•ื“ื•ืช kubectl ื‘ืืžืฆืขื•ืช ืžืงืฉ Tab. ื–ื” ืขื•ื‘ื“ ืขื‘ื•ืจ ืคืงื•ื“ื•ืช ืžืฉื ื”, ืืคืฉืจื•ื™ื•ืช ื•ืืจื’ื•ืžื ื˜ื™ื, ื›ื•ืœืœ ืžืฉื”ื• ืžื•ืจื›ื‘ ื›ืžื• ืฉืžื•ืช ืžืฉืื‘ื™ื.

ืจืื” ื›ื™ืฆื“ ืคื•ืขืœืช ื”ืฉืœืžืช ืคืงื•ื“ื•ืช kubectl:

ื›ื™ืฆื“ ืœื”ืฉืชืžืฉ ื‘-kubectl ื‘ืฆื•ืจื” ื™ืขื™ืœื” ื™ื•ืชืจ: ืžื“ืจื™ืš ืžืคื•ืจื˜
ื”ืฉืœืžืช ื”ืคืงื•ื“ื” ืคื•ืขืœืช ืขื‘ื•ืจ ืคื’ื–ื™ Bash ื•-Zsh.

ืžื“ืจื™ืš ืจืฉืžื™ ืžื›ื™ืœ ื”ื ื—ื™ื•ืช ืžืคื•ืจื˜ื•ืช ืœื”ื’ื“ืจืช ื”ืฉืœืžื” ืื•ื˜ื•ืžื˜ื™ืช, ืืš ื‘ื”ืžืฉืš ื ืกืคืง ืงื˜ืข ืงืฆืจ.

ื›ื™ืฆื“ ืคื•ืขืœืช ื”ืฉืœืžืช ืคืงื•ื“ื”

ื”ืฉืœืžืช ืคืงื•ื“ื” ื”ื™ื ืชื›ื•ื ืช ืžืขื˜ืคืช ืฉืคื•ืขืœืช ื‘ืืžืฆืขื•ืช ืกืงืจื™ืคื˜ ื”ืฉืœืžื”. ืกืงืจื™ืคื˜ ื”ืจื—ื‘ื” ื”ื•ื ืกืงืจื™ืคื˜ ืžืขื˜ืคืช ื”ืžื’ื“ื™ืจ ืืช ื”ื”ืชื ื”ื’ื•ืช ืฉืœ ื”ืจื—ื‘ื” ืขื‘ื•ืจ ืคืงื•ื“ื” ืกืคืฆื™ืคื™ืช.

Kubectl ืžื™ื™ืฆืจ ื•ืžื•ืฆื™ื ืื•ื˜ื•ืžื˜ื™ืช ืกืงืจื™ืคื˜ื™ื ืฉืœ ื”ืจื—ื‘ื•ืช ืขื‘ื•ืจ Bash ื•-Zsh ื‘ืืžืฆืขื•ืช ื”ืคืงื•ื“ื•ืช ื”ื‘ืื•ืช:

$ kubectl completion bash

ะ˜ะปะธ:

$ kubectl completion zsh

ื‘ืชื™ืื•ืจื™ื”, ืžืกืคื™ืง ืœื—ื‘ืจ ืืช ื”ืคืœื˜ ืฉืœ ื”ืคืงื•ื“ื•ืช ื”ืœืœื• ืœืžืขื˜ืคืช ื”ืคืงื•ื“ื” ื”ืžืชืื™ืžื” ื›ื“ื™ ืฉ-kubectl ื™ื•ื›ืœ ืœื”ืฉืœื™ื ืืช ื”ืคืงื•ื“ื•ืช.

ื‘ืคื•ืขืœ, ืฉื™ื˜ืช ื”ื—ื™ื‘ื•ืจ ืฉื•ื ื” ืขื‘ื•ืจ Bash (ื›ื•ืœืœ ื”ื‘ื“ืœื™ื ื‘ื™ืŸ ืœื™ื ื•ืงืก ื•-MacOS) ื•-Zsh. ืœื”ืœืŸ ื ื‘ื—ืŸ ืืช ื›ืœ ื”ืืคืฉืจื•ื™ื•ืช ื”ืœืœื•.

Bash ืขืœ ืœื™ื ื•ืงืก

ืกืงืจื™ืคื˜ ื”ืฉืœืžืช Bash ืชืœื•ื™ ื‘ื—ื‘ื™ืœืช bash-completion, ืื– ืชื—ื™ืœื” ืขืœื™ืš ืœื”ืชืงื™ืŸ ืื•ืชื•:

$ sudo apt-get install bash-completion

ะ˜ะปะธ:

$ yum install bash-completion

ืืชื” ื™ื›ื•ืœ ืœื‘ื“ื•ืง ืฉื”ื—ื‘ื™ืœื” ืžื•ืชืงื ืช ื‘ื”ืฆืœื—ื” ื‘ืืžืฆืขื•ืช ื”ืคืงื•ื“ื” ื”ื‘ืื”:

$ type _init_completion

ืื ื–ื” ืžื•ืฆื™ื ืงื•ื“ ืคื•ื ืงืฆื™ื™ืช ืžืขื˜ืคืช, ืื– bash-completion ืžื•ืชืงืŸ ื›ื”ืœื›ื”. ืื ื”ืคืงื•ื“ื” ืžืฆื™ื’ื” ืฉื’ื™ืื” "ืœื ื ืžืฆื", ืขืœื™ืš ืœื”ื•ืกื™ืฃ ืืช ื”ืฉื•ืจื” ื”ื‘ืื” ืœืงื•ื‘ืฅ ืฉืœืš ~ / .bashrc:

$ source /usr/share/bash-completion/bash_completion

ื”ืื ื™ืฉ ืฆื•ืจืš ืœื”ื•ืกื™ืฃ ืฉื•ืจื” ื–ื• ืœืงื•ื‘ืฅ ~ / .bashrc ืื• ืœื ืชืœื•ื™ ื‘ืžื ื”ืœ ื”ื—ื‘ื™ืœื•ืช ืฉื‘ื• ื”ืฉืชืžืฉืช ืœื”ืชืงื ืช bash-completion. ื–ื” ื”ื›ืจื—ื™ ืขื‘ื•ืจ APT, ืื‘ืœ ืœื ืขื‘ื•ืจ YUM.

ืœืื—ืจ ื”ืชืงื ืช bash-completion, ืขืœื™ืš ืœื”ื’ื“ื™ืจ ื”ื›ืœ ื›ืš ืฉืกืงืจื™ืคื˜ ื”ื”ืฉืœืžื” ืฉืœ kubectl ื™ื•ืคืขืœ ื‘ื›ืœ ื”ืคืขืœื•ืช ื”ืžืขื˜ืคืช.

ืื—ืช ื”ื“ืจื›ื™ื ืœืขืฉื•ืช ื–ืืช ื”ื™ื ืœื”ื•ืกื™ืฃ ืืช ื”ืฉื•ืจื” ื”ื‘ืื” ืœืงื•ื‘ืฅ ~ / .bashrc:

source <(kubectl completion bash)

ื“ืจืš ื ื•ืกืคืช ื”ื™ื ืœื”ื•ืกื™ืฃ ืืช ืกืงืจื™ืคื˜ ื”ื”ืจื—ื‘ื” kubectl ืœืกืคืจื™ื™ื” /etc/bash_completion.d (ืฆื•ืจ ืื•ืชื• ืื ื”ื•ื ืœื ืงื™ื™ื):

$ kubectl completion bash >/etc/bash_completion.d/kubectl

ื›ืœ ื”ืกืงืจื™ืคื˜ื™ื ื”ืชื•ืกืคื™ื ื‘ืงื˜ืœื•ื’ /etc/bash_completion.d ื ื›ืœืœื™ื ืื•ื˜ื•ืžื˜ื™ืช ื‘ื”ืฉืœืžืช bash.

ืฉืชื™ ื”ืืคืฉืจื•ื™ื•ืช ื™ืฉื™ืžื•ืช ื‘ืื•ืชื” ืžื™ื“ื”.

ืœืื—ืจ ื”ืคืขืœื” ืžื—ื“ืฉ ืฉืœ ื”ืžืขื˜ืคืช, ื”ืฉืœืžืช ื”ืคืงื•ื“ื” kubectl ืชืขื‘ื•ื“.

Bash ืขืœ MacOS

ื‘-MacOS ื”ื”ื’ื“ืจื” ืงืฆืช ื™ื•ืชืจ ืžืกื•ื‘ื›ืช. ื”ืขื•ื‘ื“ื” ื”ื™ื ืฉื›ื‘ืจื™ืจืช ืžื—ื“ืœ, MacOS ืžืฉืชืžืฉ ื‘ื’ืจืกื” 3.2 ืฉืœ Bash, ื•ืกืงืจื™ืคื˜ ื”ื”ืฉืœืžื” ื”ืื•ื˜ื•ืžื˜ื™ืช ืฉืœ kubectl ื“ื•ืจืฉืช ื’ืจืกืช Bash ืฉืœ ืœืคื—ื•ืช 4.1 ื•ืื™ื ื• ืขื•ื‘ื“ ื‘-Bash 3.2.

ื™ืฉื ืŸ ื‘ืขื™ื•ืช ืจื™ืฉื•ื™ ื”ืงืฉื•ืจื•ืช ืœืฉื™ืžื•ืฉ ื‘ื’ืจืกื” ืžื™ื•ืฉื ืช ืฉืœ Bash ื‘-MacOS. Bash ื’ืจืกื” 4 ืžื•ืจืฉื™ืช ืชื—ืช GPLv3, ืฉืื™ื ื” ื ืชืžื›ืช ืขืœ ื™ื“ื™ ืืคืœ.

ื›ื“ื™ ืœื”ื’ื“ื™ืจ ื”ืฉืœืžื” ืื•ื˜ื•ืžื˜ื™ืช ืฉืœ kubectl ื‘-MacOS, ืขืœื™ืš ืœื”ืชืงื™ืŸ ื’ืจืกื” ืขื“ื›ื ื™ืช ื™ื•ืชืจ ืฉืœ Bash. ืืชื” ื™ื›ื•ืœ ื’ื ืœื”ื’ื“ื™ืจ ืืช Bash ื”ืžืขื•ื“ื›ืŸ ื‘ืชื•ืจ ืžืขื˜ืคืช ื‘ืจื™ืจืช ื”ืžื—ื“ืœ ืฉืœืš, ืžื” ืฉื™ื—ืกื•ืš ืœืš ื”ืจื‘ื” ื‘ืขื™ื•ืช ื‘ืขืชื™ื“. ื–ื” ืœื ืงืฉื”, ืคืจื˜ื™ื ื ื™ืชื ื™ื ื‘ืžืืžืจ "ืขื“ื›ื•ืŸ Bash ื‘-MacOS".

ืœืคื ื™ ืฉืชืžืฉื™ืš, ื•ื“ื ืฉืืชื” ืžืฉืชืžืฉ ื‘ื’ืจืกื” ืขื“ื›ื ื™ืช ืฉืœ Bash (ื‘ื“ื•ืง ืืช ื”ืคืœื˜ bash --version).

ืกืงืจื™ืคื˜ ื”ืฉืœืžืช Bash ืžืฉืชื ื” ืœืคื™ ืคืจื•ื™ืงื˜ bash-ื”ืฉืœืžื”, ืื– ืชื—ื™ืœื” ืขืœื™ืš ืœื”ืชืงื™ืŸ ืื•ืชื•.

ืืชื” ื™ื›ื•ืœ ืœื”ืชืงื™ืŸ bash-completion ื‘ืืžืฆืขื•ืช Homebrew:

$ brew install bash-completion@2

ื›ืืŸ @2 ืžื™ื™ืฆื’ ืืช ื’ืจืกื” 2 ืฉืœ ื”ืฉืœืžืช bash. ื”ืฉืœืžื” ืื•ื˜ื•ืžื˜ื™ืช ืฉืœ kubectl ื“ื•ืจืฉืช ื”ืฉืœืžืช bash v2, ื•ื”ืฉืœืžืช bash v2 ื“ื•ืจืฉืช ืžื™ื ื™ืžื•ื ืฉืœ Bash ื’ืจืกื” 4.1.

ืคืœื˜ ืคืงื•ื“ื” brew-install ืžื›ื™ืœ ืงื˜ืข ืื–ื”ืจื•ืช, ื”ืžืฆื™ื™ืŸ ืžื” ืฆืจื™ืš ืœื”ื•ืกื™ืฃ ืœืงื•ื‘ืฅ ~/.bash_profile:

export BASH_COMPLETION_COMPAT_DIR=/usr/local/etc/bash_completion.d
[[ -r "/usr/local/etc/profile.d/bash_completion.sh" ]] && . 
"/usr/local/etc/profile.d/bash_completion.sh"

ืขื ื–ืืช, ืื ื™ ืžืžืœื™ืฅ ืœื”ื•ืกื™ืฃ ืฉื•ืจื•ืช ืืœื” ืœื ~/.bash_profile, ื‘ืขื•ื“ ื‘ ~/.bashrc. ื‘ืžืงืจื” ื–ื”, ื”ืฉืœืžื” ืื•ื˜ื•ืžื˜ื™ืช ืชื”ื™ื” ื–ืžื™ื ื” ืœื ืจืง ื‘ื—ืœืง ื”ืจืืฉื™, ืืœื ื’ื ื‘ืžืขื˜ืคื•ืช ืคืงื•ื“ื•ืช ืฉืœ ื™ืœื“.

ืœืื—ืจ ื”ืคืขืœื” ืžื—ื“ืฉ ืฉืœ ืžืขื˜ืคืช ื”ืคืงื•ื“ื”, ืชื•ื›ืœ ืœื•ื•ื“ื ืฉื”ื”ืชืงื ื” ื ื›ื•ื ื” ื‘ืืžืฆืขื•ืช ื”ืคืงื•ื“ื” ื”ื‘ืื”:

$ type _init_completion

ืื ืืชื” ืจื•ืื” ืคื•ื ืงืฆื™ื™ืช ืžืขื˜ืคืช ื‘ืคืœื˜, ืื– ื”ื›ืœ ืžื•ื’ื“ืจ ื›ื”ืœื›ื”.

ื›ืขืช ืขืœื™ื ื• ืœื•ื•ื“ื ืฉื”ื”ืฉืœืžื” ื”ืื•ื˜ื•ืžื˜ื™ืช ืฉืœ kubectl ืžื•ืคืขืœืช ื‘ื›ืœ ื”ื”ืคืขืœื•ืช.

ื“ืจืš ืื—ืช ื”ื™ื ืœื”ื•ืกื™ืฃ ืืช ื”ืฉื•ืจื” ื”ื‘ืื” ืฉืœืš ~/.bashrc:

source <(kubectl completion bash)

ื”ื“ืจืš ื”ืฉื ื™ื™ื” ื”ื™ื ืœื”ื•ืกื™ืฃ ืกืงืจื™ืคื˜ ื”ืฉืœืžื” ืื•ื˜ื•ืžื˜ื™ืช ืœืชื™ืงื™ื” /usr/local/etc/bash_completion.d:

$ kubectl completion bash
>/usr/local/etc/bash_completion.d/kubectl

ืฉื™ื˜ื” ื–ื• ืชืขื‘ื•ื“ ืจืง ืื ื”ืชืงื ืช bash-completion ื‘ืืžืฆืขื•ืช Homebrew. ื‘ืžืงืจื” ื–ื”, bash-completion ื˜ื•ืขืŸ ืืช ื›ืœ ื”ืกืงืจื™ืคื˜ื™ื ืžื”ืกืคืจื™ื™ื” ื”ื–ื•.

ืื ื”ืชืงื ืช kubectl ื‘ืืžืฆืขื•ืช Homebrew, ืื– ืื™ืŸ ืฆื•ืจืš ืœื‘ืฆืข ืืช ื”ืฉืœื‘ ื”ืงื•ื“ื, ืžื›ื™ื•ื•ืŸ ืฉืกืงืจื™ืคื˜ ื”ื”ืฉืœืžื” ื”ืื•ื˜ื•ืžื˜ื™ืช ื™ืžื•ืงื ืื•ื˜ื•ืžื˜ื™ืช ื‘ืชื™ืงื™ื™ื” /usr/local/etc/bash_completion.d ืชื•ืš ื›ื“ื™ ื”ืชืงื ื”. ื‘ืžืงืจื” ื–ื”, ื”ื”ืฉืœืžื” ื”ืื•ื˜ื•ืžื˜ื™ืช ืฉืœ kubectl ืชืชื—ื™ืœ ืœืขื‘ื•ื“ ื‘ืจื’ืข ืฉืชืชืงื™ืŸ bash-completion.

ื›ืชื•ืฆืื” ืžื›ืš, ื›ืœ ื”ืืคืฉืจื•ื™ื•ืช ื”ืœืœื• ืฉื•ื•ืช ืขืจืš.

ZSH

ืกืงืจื™ืคื˜ื™ื ืฉืœ ื”ืฉืœืžื” ืื•ื˜ื•ืžื˜ื™ืช ืขื‘ื•ืจ Zsh ืื™ื ื ื“ื•ืจืฉื™ื ืชืœื•ืช ื›ืœืฉื”ื™. ื›ืœ ืžื” ืฉืืชื” ืฆืจื™ืš ืœืขืฉื•ืช ื”ื•ื ืœื”ืคืขื™ืœ ืื•ืชื ื›ืืฉืจ ืืชื” ื˜ื•ืขืŸ ืืช ืžืขื˜ืคืช ื”ืคืงื•ื“ื”.

ืืชื” ื™ื›ื•ืœ ืœืขืฉื•ืช ื–ืืช ืขืœ ื™ื“ื™ ื”ื•ืกืคืช ืฉื•ืจื” ืœืฉื•ืจื” ืฉืœืš ~/.zshrc ืงื•ึนื‘ึถืฅ:

source <(kubectl completion zsh)

ืื ืืชื” ืžืงื‘ืœ ืฉื’ื™ืื” not found: compdef ืœืื—ืจ ื”ืคืขืœื” ืžื—ื“ืฉ ืฉืœ ื”ืžืขื˜ืคืช ืฉืœืš, ืขืœื™ืš ืœื”ืคืขื™ืœ ืืช ื”ืคื•ื ืงืฆื™ื” ื”ืžื•ื‘ื ื™ืช compdef. ืืชื” ื™ื›ื•ืœ ืœื”ืคืขื™ืœ ืื•ืชื• ืขืœ ื™ื“ื™ ื”ื•ืกืคืชื• ืœืชื—ื™ืœืช ื”ืงื•ื‘ืฅ ~/.zshrc ื”ืชืขื•ืคื” post

autoload -Uz compinit
compinit

2. ื”ืฆื’ ื‘ืžื”ื™ืจื•ืช ืžืคืจื˜ื™ ืžืฉืื‘ื™ื

ื›ืืฉืจ ืืชื” ื™ื•ืฆืจ ื”ื’ื“ืจื•ืช ืžืฉืื‘ื™ื ืฉืœ YAML, ืืชื” ืฆืจื™ืš ืœื“ืขืช ืืช ื”ืฉื“ื•ืช ื•ืืช ื”ืžืฉืžืขื•ืช ืฉืœื”ื ืขื‘ื•ืจ ืžืฉืื‘ื™ื ืืœื”. ืžืงื•ื ืื—ื“ ืœื—ืคืฉ ืžื™ื“ืข ื–ื” ื”ื•ื ื‘ื”ืคื ื™ื” ืœ-API, ื”ืžื›ื™ืœื” ืžืคืจื˜ื™ื ืžืœืื™ื ืขื‘ื•ืจ ื›ืœ ื”ืžืฉืื‘ื™ื.

ืขื ื–ืืช, ืžืขื‘ืจ ืœื“ืคื“ืคืŸ ื”ืื™ื ื˜ืจื ื˜ ื‘ื›ืœ ืคืขื ืฉืืชื” ืฆืจื™ืš ืœื—ืคืฉ ืžืฉื”ื• ืื™ื ื• ื ื•ื—. ืœื›ืŸ kubectl ืžืกืคืง ืืช ื”ืคืงื•ื“ื” kubectl explain, ื”ืžืฆื™ื’ ืืช ื”ืžืคืจื˜ ืฉืœ ื›ืœ ื”ืžืฉืื‘ื™ื ื™ืฉื™ืจื•ืช ื‘ืžืกื•ืฃ ืฉืœืš.

ืคื•ืจืžื˜ ื”ืคืงื•ื“ื” ื”ื•ื ื›ื“ืœืงืžืŸ:

$ kubectl explain resource[.field]...

ื”ืคืงื•ื“ื” ืชื•ืฆื™ื ืืช ื”ืžืคืจื˜ ืฉืœ ื”ืžืฉืื‘ ืื• ื”ืฉื“ื” ื”ืžื‘ื•ืงืฉ. ื”ืžื™ื“ืข ื”ืžื•ืฆื’ ื–ื”ื” ืœื–ื” ื”ื›ืœื•ืœ ื‘ืžื“ืจื™ืš ื”-API.

ื‘ืจื™ืจืช ืžื—ื“ืœ kubectl explain ืžืฆื™ื’ ืจืง ืืช ื”ืจืžื” ื”ืจืืฉื•ื ื” ืฉืœ ืงื™ื ื•ืŸ ืฉืœ ืฉื“ื•ืช.

ืชืจืื” ืื™ืš ื–ื” ื ืจืื” ืœืื—ืจ ืžื›ืŸ ืชื•ื›ืœ.

ืชื•ื›ืœ ืœื”ืฆื™ื’ ืืช ื›ืœ ื”ืขืฅ ืื ืชื•ืกื™ืฃ ืืช ื”ืืคืฉืจื•ืช --recursive:

$ kubectl explain deployment.spec --recursive

ืื ืื™ื ืš ื™ื•ื“ืข ื‘ื“ื™ื•ืง ืื™ืœื• ืžืฉืื‘ื™ื ื“ืจื•ืฉื™ื, ืชื•ื›ืœ ืœื”ืฆื™ื’ ืืช ื›ื•ืœื ื‘ืืžืฆืขื•ืช ื”ืคืงื•ื“ื” ื”ื‘ืื”:

$ kubectl api-resources

ืคืงื•ื“ื” ื–ื• ืžืฆื™ื’ื” ืฉืžื•ืช ืžืฉืื‘ื™ื ื‘ืฆื•ืจืช ืจื‘ื™ื, ืœืžืฉืœ. deployments ื‘ืžืงื•ื deployment. ื–ื” ื’ื ืžืฆื™ื’ ืืช ื”ืฉื ื”ืงืฆืจ, ืœืžืฉืœ deploy, ืขื‘ื•ืจ ืื•ืชื ืžืฉืื‘ื™ื ืฉื™ืฉ ืœื”ื ืืช ื–ื”. ืืœ ืชื“ืื’ ืœื’ื‘ื™ ื”ื”ื‘ื“ืœื™ื ื”ืืœื”. ื›ืœ ืืคืฉืจื•ื™ื•ืช ื”ืฉืžื•ืช ื”ืœืœื• ืžืงื‘ื™ืœื•ืช ืขื‘ื•ืจ kubectl. ื›ืœื•ืžืจ, ืืชื” ื™ื›ื•ืœ ืœื”ืฉืชืžืฉ ื‘ื›ืœ ืื—ื“ ืžื”ื ืขื‘ื•ืจ kubectl explain.

ื›ืœ ื”ืคืงื•ื“ื•ืช ื”ื‘ืื•ืช ืฉื•ื•ืช ืขืจืš:

$ kubectl explain deployments.spec
# ะธะปะธ
$ kubectl explain deployment.spec
# ะธะปะธ        
$ kubectl explain deploy.spec

3. ื”ืฉืชืžืฉ ื‘ืคื•ืจืžื˜ ืคืœื˜ ืขืžื•ื“ื” ืžื•ืชืื ืื™ืฉื™ืช

ืคื•ืจืžื˜ ืคืœื˜ ืคืงื•ื“ื” ื‘ืจื™ืจืช ืžื—ื“ืœ kubectl get:

$ kubectl get pods
NAME                     READY    STATUS    RESTARTS  AGE
engine-544b6b6467-22qr6   1/1     Running     0       78d
engine-544b6b6467-lw5t8   1/1     Running     0       78d
engine-544b6b6467-tvgmg   1/1     Running     0       78d
web-ui-6db964458-8pdw4    1/1     Running     0       78d

ืคื•ืจืžื˜ ื–ื” ื ื•ื—, ืืš ื”ื•ื ืžื›ื™ืœ ื›ืžื•ืช ืžื•ื’ื‘ืœืช ืฉืœ ืžื™ื“ืข. ื‘ื”ืฉื•ื•ืื” ืœืคื•ืจืžื˜ ื”ื’ื“ืจืช ื”ืžืฉืื‘ ื”ืžืœื, ืจืง ื›ืžื” ืฉื“ื•ืช ืžื•ืฆื’ื™ื ื›ืืŸ.

ื‘ืžืงืจื” ื–ื”, ืืชื” ื™ื›ื•ืœ ืœื”ืฉืชืžืฉ ื‘ืคื•ืจืžื˜ ืคืœื˜ ืขืžื•ื“ื” ืžื•ืชืื ืื™ืฉื™ืช. ื–ื” ืžืืคืฉืจ ืœืš ืœืงื‘ื•ืข ืื™ืœื• ื ืชื•ื ื™ื ืœืคืœื˜. ื ื™ืชืŸ ืœื”ืฆื™ื’ ื›ืœ ืฉื“ื” ืžืฉืื‘ ื›ืขืžื•ื“ื” ื ืคืจื“ืช.

ื”ืฉื™ืžื•ืฉ ื‘ืคื•ืจืžื˜ ืžื•ืชืื ืื™ืฉื™ืช ื ืงื‘ืข ื‘ืืžืฆืขื•ืช ื”ืืคืฉืจื•ื™ื•ืช:

-o custom-columns=<header>:<jsonpath>[,<header>:<jsonpath>]...

ื ื™ืชืŸ ืœื”ื’ื“ื™ืจ ื›ืœ ืขืžื•ื“ืช ืคืœื˜ ื›ื–ื•ื’ <header>:<jsonpath>ืื™ืคื” <header> ื”ื•ื ืฉื ื”ืขืžื•ื“ื”, ื• <jsonpath> - ื‘ื™ื˜ื•ื™ ื”ืžื’ื“ื™ืจ ืฉื“ื” ืžืฉืื‘ื™ื.

ื‘ื•ืื• ื ืกืชื›ืœ ืขืœ ื“ื•ื’ืžื” ืคืฉื•ื˜ื”:

$ kubectl get pods -o custom-columns='NAME:metadata.name'

NAME
engine-544b6b6467-22qr6
engine-544b6b6467-lw5t8
engine-544b6b6467-tvgmg
web-ui-6db964458-8pdw4

ื”ืคืœื˜ ืžื›ื™ืœ ืขืžื•ื“ื” ืื—ืช ืขื ืฉืžื•ืช ื”ืคื•ื“ื™ื.

ื‘ื™ื˜ื•ื™ ื”ืืคืฉืจื•ืช ื‘ื•ื—ืจ ืืช ืฉืžื•ืช ื”ืชืจืžื™ืœื™ื ืžื”ืฉื“ื” metadata.name. ื”ืกื™ื‘ื” ืœื›ืš ื”ื™ื ืฉืฉื ื”ืคื•ื“ ืžื•ื’ื“ืจ ื‘ืฉื“ื” ืฉื ื”ื™ืœื“ metadata ื‘ืชื™ืื•ืจ ื”ืžืฉืื‘ ืฉืœ ื”ืคื•ื“. ืคืจื˜ื™ื ื ื•ืกืคื™ื ื ื™ืชืŸ ืœืžืฆื•ื ื‘ ืžื“ืจื™ืš API ืื• ื”ืงืœื“ ืืช ื”ืคืงื•ื“ื” kubectl explain pod.metadata.name.

ื›ืขืช ื ื ื™ื— ืฉืืชื” ืจื•ืฆื” ืœื”ื•ืกื™ืฃ ืขืžื•ื“ื” ื ื•ืกืคืช ืœืคืœื˜, ืœืžืฉืœ ื”ืฆื’ืช ื”ืฆื•ืžืช ืฉืขืœื™ื• ืคื•ืขืœ ื›ืœ ืคื•ื“. ื›ื“ื™ ืœืขืฉื•ืช ื–ืืช, ืืชื” ื™ื›ื•ืœ ืคืฉื•ื˜ ืœื”ื•ืกื™ืฃ ืืช ืžืคืจื˜ ื”ืขืžื•ื“ื•ืช ื”ืžืชืื™ื ืœืืคืฉืจื•ืช ื”ืขืžื•ื“ื•ืช ื”ืžื•ืชืืžื•ืช ืื™ืฉื™ืช:

$ kubectl get pods 
  -o custom-columns='NAME:metadata.name,NODE:spec.nodeName'

NAME                       NODE
engine-544b6b6467-22qr6    ip-10-0-80-67.ec2.internal
engine-544b6b6467-lw5t8    ip-10-0-36-80.ec2.internal
engine-544b6b6467-tvgmg    ip-10-0-118-34.ec2.internal
web-ui-6db964458-8pdw4     ip-10-0-118-34.ec2.internal

ื”ื‘ื™ื˜ื•ื™ ื‘ื•ื—ืจ ืืช ืฉื ื”ืฆื•ืžืช spec.nodeName - ื›ืืฉืจ ืคื•ื“ ืžื•ืงืฆื” ืœืฆื•ืžืช, ืฉืžื• ื›ืชื•ื‘ ื‘ืฉื“ื” spec.nodeName ืžืคืจื˜ ืžืฉืื‘ื™ ื”ืคื•ื“. ืžื™ื“ืข ืžืคื•ืจื˜ ื™ื•ืชืจ ื ื™ืชืŸ ืœืžืฆื•ื ื‘ืคืœื˜ kubectl explain pod.spec.nodeName.

ืฉื™ื ืœื‘ ืฉืฉื“ื•ืช ื”ืžืฉืื‘ื™ื ืฉืœ Kubernetes ื”ื ืชืœื•ื™ื™ ืจื™ืฉื™ื•ืช.

ืืชื” ื™ื›ื•ืœ ืœื”ืฆื™ื’ ื›ืœ ืฉื“ื” ืžืฉืื‘ ื›ืขืžื•ื“ื”. ืคืฉื•ื˜ ืขื™ื™ืŸ ื‘ืžืคืจื˜ ื”ืžืฉืื‘ ื•ื ืกื” ืื•ืชื• ื‘ื›ืœ ืฉื“ื” ืฉืชืจืฆื”.

ืื‘ืœ ืจืืฉื™ืช, ื‘ื•ืื• ื ืกืชื›ืœ ืžืงืจื•ื‘ ืขืœ ื‘ื™ื˜ื•ื™ื™ ื‘ื—ื™ืจืช ืฉื“ื•ืช.

ื‘ื™ื˜ื•ื™ื™ JSONPath

ื‘ื™ื˜ื•ื™ื™ื ืœื‘ื—ื™ืจืช ืฉื“ื•ืช ืžืฉืื‘ื™ื ืžื‘ื•ืกืกื™ื ืขืœ JSON Path.

JSONPath ื”ื™ื ืฉืคื” ืœืื—ื–ื•ืจ ื ืชื•ื ื™ื ืžืžืกืžื›ื™ JSON. ื‘ื—ื™ืจืช ืฉื“ื” ื‘ื•ื“ื“ ื”ื™ื ืžืงืจื” ื”ืฉื™ืžื•ืฉ ื”ืคืฉื•ื˜ ื‘ื™ื•ืชืจ ืขื‘ื•ืจ JSONPath. ื™ืฉ ืœื• ื”ืจื‘ื” ืืคืฉืจื•ื™ื•ืช ื ื•ืกืคื•ืช, ื›ื•ืœืœ ื‘ื•ืจืจื™ื, ืžืกื ื ื™ื ื•ื›ืŸ ื”ืœืื”.

Kubectl explain ืชื•ืžืš ื‘ืžืกืคืจ ืžื•ื’ื‘ืœ ืฉืœ ืชื›ื•ื ื•ืช JSONPath. ื”ืืคืฉืจื•ื™ื•ืช ื•ื”ื“ื•ื’ืžืื•ืช ืœืฉื™ืžื•ืฉ ื‘ื”ืŸ ืžืชื•ืืจื•ืช ืœื”ืœืŸ:

# ะ’ั‹ะฑั€ะฐั‚ัŒ ะฒัะต ัะปะตะผะตะฝั‚ั‹ ัะฟะธัะบะฐ
$ kubectl get pods -o custom-columns='DATA:spec.containers[*].image'
# ะ’ั‹ะฑั€ะฐั‚ัŒ ัะฟะตั†ะธั„ะธั‡ะตัะบะธะน ัะปะตะผะตะฝั‚ ัะฟะธัะบะฐ
$ kubectl get pods -o custom-columns='DATA:spec.containers[0].image'
# ะ’ั‹ะฑั€ะฐั‚ัŒ ัะปะตะผะตะฝั‚ั‹ ัะฟะธัะบะฐ, ะฟะพะฟะฐะดะฐัŽั‰ะธะต ะฟะพะด ั„ะธะปัŒั‚ั€
$ kubectl get pods -o custom-columns='DATA:spec.containers[?(@.image!="nginx")].image'
# ะ’ั‹ะฑั€ะฐั‚ัŒ ะฒัะต ะฟะพะปั ะฟะพ ัƒะบะฐะทะฐะฝะฝะพะผัƒ ะฟัƒั‚ะธ, ะฝะตะทะฐะฒะธัะธะผะพ ะพั‚ ะธั… ะธะผะตะฝะธ
$ kubectl get pods -o custom-columns='DATA:metadata.*'
# ะ’ั‹ะฑั€ะฐั‚ัŒ ะฒัะต ะฟะพะปั ั ัƒะบะฐะทะฐะฝะฝั‹ะผ ะธะผะตะฝะตะผ, ะฒะฝะต ะทะฐะฒะธัะธะผะพัั‚ะธ ะพั‚ ะธั… ั€ะฐัะฟะพะปะพะถะตะฝะธั
$ kubectl get pods -o custom-columns='DATA:..image'

ื”ืื•ืคืจื˜ื•ืจ [] ื—ืฉื•ื‘ ื‘ืžื™ื•ื—ื“. ืฉื“ื•ืช ืžืฉืื‘ื™ื ืจื‘ื™ื ืฉืœ Kubernetes ื”ื ืจืฉื™ืžื•ืช, ื•ืื•ืคืจื˜ื•ืจ ื–ื” ืžืืคืฉืจ ืœืš ืœื‘ื—ื•ืจ ื—ื‘ืจื™ื ื‘ืจืฉื™ืžื•ืช ืืœื•. ื”ื•ื ืžืฉืžืฉ ืœืขืชื™ื ืงืจื•ื‘ื•ืช ืขื ืชื• ื›ืœืœื™ ื›ืžื• [*] ื›ื“ื™ ืœื‘ื—ื•ืจ ืืช ื›ืœ ื”ืจื›ื™ื‘ื™ื ืฉืœ ืจืฉื™ืžื”.

ื“ื•ื’ืžืื•ืช ืœื™ื™ืฉื•ื

ื”ืืคืฉืจื•ื™ื•ืช ืœืฉื™ืžื•ืฉ ื‘ืคื•ืจืžื˜ ืคืœื˜ ืขืžื•ื“ื” ืžื•ืชืื ืื™ืฉื™ืช ื”ืŸ ืื™ื ืกื•ืคื™ื•ืช, ืžื›ื™ื•ื•ืŸ ืฉื ื™ืชืŸ ืœื”ืฆื™ื’ ื›ืœ ืฉื“ื” ืื• ืฉื™ืœื•ื‘ ืฉืœ ืฉื“ื•ืช ืžืฉืื‘ื™ื ื‘ืคืœื˜. ื”ื ื” ื›ืžื” ืืคืœื™ืงืฆื™ื•ืช ืœื“ื•ื’ืžื”, ืืš ืืœ ืชื”ืกืก ืœื—ืงื•ืจ ืื•ืชืŸ ื‘ืขืฆืžืš ื•ืœืžืฆื•ื ืืคืœื™ืงืฆื™ื•ืช ืฉืขื•ื‘ื“ื•ืช ืขื‘ื•ืจืš.

  1. ื”ืฆื’ืช ืชืžื•ื ื•ืช ืžื™ื›ืœ ืขื‘ื•ืจ ืชืจืžื™ืœื™ื:
    $ kubectl get pods 
      -o custom-columns='NAME:metadata.name,IMAGES:spec.containers[*].image'
    
    NAME                        IMAGES
    engine-544b6b6467-22qr6     rabbitmq:3.7.8-management,nginx
    engine-544b6b6467-lw5t8     rabbitmq:3.7.8-management,nginx
    engine-544b6b6467-tvgmg     rabbitmq:3.7.8-management,nginx
    web-ui-6db964458-8pdw4      wordpress

    ืคืงื•ื“ื” ื–ื• ืžืฆื™ื’ื” ืืช ืฉืžื•ืช ืชืžื•ื ืช ื”ืžื›ืœ ืขื‘ื•ืจ ื›ืœ ืชืจืžื™ืœ.

    ื–ื›ื•ืจ ื›ื™ ืคื•ื“ ื™ื›ื•ืœ ืœื”ื›ื™ืœ ืžืกืคืจ ืžื™ื›ืœื™ื, ื•ืื– ืฉืžื•ืช ื”ืชืžื•ื ื•ืช ื™ื•ืฆื’ื• ื‘ืฉื•ืจื” ืื—ืช, ืžื•ืคืจื“ื™ื ื‘ืคืกื™ืงื™ื.

  2. ื”ืฆื’ืช ืื–ื•ืจื™ ื–ืžื™ื ื•ืช ืฉืœ ืฆื•ืžืช:
    $ kubectl get nodes 
      -o 
    custom-columns='NAME:metadata.name,ZONE:metadata.labels.failure-domain.beta.kubernetes.io/zone'
    
    NAME                          ZONE
    ip-10-0-118-34.ec2.internal   us-east-1b
    ip-10-0-36-80.ec2.internal    us-east-1a
    ip-10-0-80-67.ec2.internal    us-east-1b

    ืคืงื•ื“ื” ื–ื• ืฉื™ืžื•ืฉื™ืช ืื ื”ืืฉื›ื•ืœ ืฉืœืš ืžืชืืจื— ื‘ืขื ืŸ ืฆื™ื‘ื•ืจื™. ื”ื•ื ืžืฆื™ื’ ืืช ืื–ื•ืจ ื”ื–ืžื™ื ื•ืช ืขื‘ื•ืจ ื›ืœ ืฆื•ืžืช.

    ืื–ื•ืจ ื–ืžื™ื ื•ืช ื”ื•ื ืžื•ืฉื’ ืขื ืŸ ื”ืžื’ื‘ื™ืœ ืืช ืื–ื•ืจ ื”ืฉื›ืคื•ืœ ืœืื–ื•ืจ ื’ื™ืื•ื’ืจืคื™.

    ืื–ื•ืจื™ ื–ืžื™ื ื•ืช ืขื‘ื•ืจ ื›ืœ ืฆื•ืžืช ืžืชืงื‘ืœื™ื ื‘ืืžืฆืขื•ืช ืชื•ื•ื™ืช ืžื™ื•ื—ื“ืช - failure-domain.beta.kubernetes.io/zone. ืื ื”ืืฉื›ื•ืœ ืคื•ืขืœ ื‘ืขื ืŸ ืฆื™ื‘ื•ืจื™, ืชื•ื•ื™ืช ื–ื• ื ื•ืฆืจืช ื‘ืื•ืคืŸ ืื•ื˜ื•ืžื˜ื™ ื•ืžืชืžืœืืช ื‘ืฉืžื•ืช ืฉืœ ืื–ื•ืจื™ ื”ื–ืžื™ื ื•ืช ืขื‘ื•ืจ ื›ืœ ืฆื•ืžืช.

    ืชื•ื•ื™ื•ืช ืื™ื ืŸ ื—ืœืง ืžืžืคืจื˜ ื”ืžืฉืื‘ื™ื ืฉืœ Kubernetes, ื›ืš ืฉืœื ืชืžืฆื ืžื™ื“ืข ืขืœื™ื”ืŸ ื‘ ืžื“ืจื™ืš API. ืขื ื–ืืช, ื ื™ืชืŸ ืœืจืื•ืช ืื•ืชื (ื›ืžื• ื›ืœ ืชื•ื•ื™ื•ืช ืื—ืจื•ืช) ืื ืืชื” ืžื‘ืงืฉ ืžื™ื“ืข ืขืœ ื”ืฆืžืชื™ื ื‘ืคื•ืจืžื˜ YAML ืื• JSON:

    $ kubectl get nodes -o yaml
    # ะธะปะธ
    $ kubectl get nodes -o json

    ื–ื•ื”ื™ ื“ืจืš ืžืฆื•ื™ื ืช ืœืœืžื•ื“ ืขื•ื“ ืขืœ ืžืฉืื‘ื™ื, ื‘ื ื•ืกืฃ ืœืœื™ืžื•ื“ ืžืคืจื˜ื™ ืžืฉืื‘ื™ื.

4. ืžืขื‘ืจ ื‘ืงืœื•ืช ื‘ื™ืŸ ืืฉื›ื•ืœื•ืช ื•ืžืจื—ื‘ื™ ืฉืžื•ืช

ื›ืืฉืจ kubectl ืฉื•ืœื— ื‘ืงืฉื” ืœืžืžืฉืง ื”-API ืฉืœ Kubernetes, ื”ื•ื ืงื•ืจื ืชื—ื™ืœื” ืืช ืงื•ื‘ืฅ kubeconfig ื›ื“ื™ ืœืงื‘ืœ ืืช ื›ืœ ื”ืคืจืžื˜ืจื™ื ื”ื“ืจื•ืฉื™ื ืœื—ื™ื‘ื•ืจ.

ื›ื‘ืจื™ืจืช ืžื—ื“ืœ, ืงื•ื‘ืฅ kubeconfig ื”ื•ื ~/.kube/config. ื‘ื“ืจืš ื›ืœืœ ืงื•ื‘ืฅ ื–ื” ื ื•ืฆืจ ืื• ืžืชืขื“ื›ืŸ ืขืœ ื™ื“ื™ ืคืงื•ื“ื” ืžื™ื•ื—ื“ืช.

ื›ืืฉืจ ืืชื” ืขื•ื‘ื“ ืขื ืืฉื›ื•ืœื•ืช ืžืจื•ื‘ื™ื, ืงื•ื‘ืฅ kubeconfig ืฉืœืš ืžื›ื™ืœ ื”ื’ื“ืจื•ืช ืœื—ื™ื‘ื•ืจ ืœื›ืœ ืื•ืชื ืืฉื›ื•ืœื•ืช. ืืชื” ืฆืจื™ืš ื“ืจืš ืœื•ืžืจ ืœืคืงื•ื“ื” kubectl ืขื ืื™ื–ื” ืืฉื›ื•ืœ ืืชื” ืขื•ื‘ื“.

ื‘ืชื•ืš ืืฉื›ื•ืœ, ืืชื” ื™ื›ื•ืœ ืœื™ืฆื•ืจ ืžืจื—ื‘ื™ ืฉืžื•ืช ืžืจื•ื‘ื™ื - ืกื•ื’ ืฉืœ ืืฉื›ื•ืœ ื•ื™ืจื˜ื•ืืœื™ ื‘ืชื•ืš ืืฉื›ื•ืœ ืคื™ื–ื™. Kubectl ื’ื ืงื•ื‘ืข ื‘ืื™ื–ื” ืžืจื—ื‘ ืฉืžื•ืช ืœื”ืฉืชืžืฉ ื‘ื”ืชื‘ืกืก ืขืœ ืงื•ื‘ืฅ kubeconfig. ื–ื” ืื•ืžืจ ืฉืืชื” ืฆืจื™ืš ื’ื ื“ืจืš ืœื”ื’ื™ื“ ืœืคืงื•ื“ื” kubectl ืขื ืื™ื–ื” ืžืจื—ื‘ ืฉืžื•ืช ืœืขื‘ื•ื“.

ื‘ืคืจืง ื–ื” ื ืกื‘ื™ืจ ื›ื™ืฆื“ ื–ื” ืขื•ื‘ื“ ื•ื›ื™ืฆื“ ืœื’ืจื•ื ืœื–ื” ืœืขื‘ื•ื“ ื‘ื™ืขื™ืœื•ืช.

ืฉื™ื ืœื‘ ืฉื™ื™ืชื›ืŸ ืฉื™ืฉ ืœืš ืงื•ื‘ืฆื™ kubeconfig ืžืจื•ื‘ื™ื ื”ืจืฉื•ืžื™ื ื‘ืžืฉืชื ื” ื”ืกื‘ื™ื‘ื” KUBECONFIG. ื‘ืžืงืจื” ื–ื”, ื›ืœ ื”ืงื‘ืฆื™ื ื”ืœืœื• ื™ืฉื•ืœื‘ื• ืœืชืฆื•ืจื” ืžืฉื•ืชืคืช ืื—ืช ื‘ื–ืžืŸ ื”ืจื™ืฆื”. ืืชื” ื™ื›ื•ืœ ื’ื ืœืฉื ื•ืช ืืช ืงื•ื‘ืฅ ื‘ืจื™ืจืช ื”ืžื—ื“ืœ ืฉืœ kubeconfig ืขืœ ื™ื“ื™ ื”ืคืขืœืช kubectl ืขื ื”ืคืจืžื˜ืจ --kubeconfig. ืชืจืื” ืชื™ืขื•ื“ ืจืฉืžื™.

ืงื‘ืฆื™ kubeconfig

ื‘ื•ื ื ืจืื” ืžื” ื‘ื“ื™ื•ืง ืžื›ื™ืœ ืงื•ื‘ืฅ kubeconfig:

ื›ื™ืฆื“ ืœื”ืฉืชืžืฉ ื‘-kubectl ื‘ืฆื•ืจื” ื™ืขื™ืœื” ื™ื•ืชืจ: ืžื“ืจื™ืš ืžืคื•ืจื˜
ื›ืคื™ ืฉืืชื” ื™ื›ื•ืœ ืœืจืื•ืช, ืงื•ื‘ืฅ kubeconfig ืžื›ื™ืœ ืงื‘ื•ืฆื” ืฉืœ ื”ืงืฉืจื™ื. ื”ื”ืงืฉืจ ืžื•ืจื›ื‘ ืžืฉืœื•ืฉื” ืืœืžื ื˜ื™ื:

  • ืืฉื›ื•ืœ - ื›ืชื•ื‘ืช API ืฉืœ ืฉืจืช ื”ืืฉื›ื•ืœ.
  • ืžืฉืชืžืฉ - ืื™ืฉื•ืจื™ ืื™ืžื•ืช ืžืฉืชืžืฉ ื‘ืืฉื›ื•ืœ.
  • ืžืจื—ื‘ ืฉืžื•ืช - ืžืจื—ื‘ ื”ืฉืžื•ืช ื”ืžืฉืžืฉ ื‘ืขืช ื”ื”ืฆื˜ืจืคื•ืช ืœืืฉื›ื•ืœ.

ื‘ืคื•ืขืœ, ืœืขืชื™ื ืงืจื•ื‘ื•ืช ื”ื ืžืฉืชืžืฉื™ื ื‘ื”ืงืฉืจ ืื—ื“ ืœื›ืœ ืืฉื›ื•ืœ ื‘-kubeconfig ืฉืœื”ื. ืขื ื–ืืช, ืืชื” ื™ื›ื•ืœ ืœืงื‘ืœ ื”ืงืฉืจื™ื ืžืจื•ื‘ื™ื ืœื›ืœ ืืฉื›ื•ืœ, ืžื•ื‘ื—ื ื™ื ืœืคื™ ืžืฉืชืžืฉ ืื• ืžืจื—ื‘ ืฉืžื•ืช. ืขื ื–ืืช, ืชืฆื•ืจื” ืžืจื•ื‘ืช ื”ืงืฉืจื™ื ื–ื• ืื™ื ื” ื ืคื•ืฆื”, ื›ืš ืฉื‘ื“ืจืš ื›ืœืœ ื™ืฉ ืžื™ืคื•ื™ ืื—ื“ ืœืื—ื“ ื‘ื™ืŸ ืืฉื›ื•ืœื•ืช ื•ื”ืงืฉืจื™ื.

ื‘ื›ืœ ื–ืžืŸ ื ืชื•ืŸ, ืื—ื“ ื”ื”ืงืฉืจื™ื ื”ื•ื ืขื“ื›ื ื™:

ื›ื™ืฆื“ ืœื”ืฉืชืžืฉ ื‘-kubectl ื‘ืฆื•ืจื” ื™ืขื™ืœื” ื™ื•ืชืจ: ืžื“ืจื™ืš ืžืคื•ืจื˜
ื›ืืฉืจ kubectl ืงื•ืจื ืงื•ื‘ืฅ ืชืฆื•ืจื”, ื”ื•ื ืชืžื™ื“ ืœื•ืงื— ืžื™ื“ืข ืžื”ื”ืงืฉืจ ื”ื ื•ื›ื—ื™. ื‘ื“ื•ื’ืžื” ืœืžืขืœื”, kubectl ื™ืชื—ื‘ืจ ืœืืฉื›ื•ืœ ื”ืืจื ื‘.

ื‘ื”ืชืื, ื›ื“ื™ ืœืขื‘ื•ืจ ืœืืฉื›ื•ืœ ืื—ืจ, ืขืœื™ืš ืœืฉื ื•ืช ืืช ื”ื”ืงืฉืจ ื”ื ื•ื›ื—ื™ ื‘ืงื•ื‘ืฅ kubeconfig:

ื›ื™ืฆื“ ืœื”ืฉืชืžืฉ ื‘-kubectl ื‘ืฆื•ืจื” ื™ืขื™ืœื” ื™ื•ืชืจ: ืžื“ืจื™ืš ืžืคื•ืจื˜
ื›ืขืช kubectl ื™ืชื—ื‘ืจ ืœืืฉื›ื•ืœ ืคื•ืงืก.

ื›ื“ื™ ืœืขื‘ื•ืจ ืœืžืจื—ื‘ ืฉืžื•ืช ืื—ืจ ื‘ืื•ืชื• ืืฉื›ื•ืœ, ืขืœื™ืš ืœืฉื ื•ืช ืืช ื”ืขืจืš ืฉืœ ืจื›ื™ื‘ ืžืจื—ื‘ ื”ืฉืžื•ืช ืขื‘ื•ืจ ื”ื”ืงืฉืจ ื”ื ื•ื›ื—ื™:

ื›ื™ืฆื“ ืœื”ืฉืชืžืฉ ื‘-kubectl ื‘ืฆื•ืจื” ื™ืขื™ืœื” ื™ื•ืชืจ: ืžื“ืจื™ืš ืžืคื•ืจื˜
ื‘ื“ื•ื’ืžื” ืฉืœืžืขืœื”, kubectl ื™ืฉืชืžืฉ ื‘ืžืจื—ื‘ ื”ืฉืžื•ืช Prod ืฉืœ ืืฉื›ื•ืœ Fox (ืงื•ื“ื ืœื›ืŸ ื”ื•ื’ื“ืจ ืžืจื—ื‘ ื”ืฉืžื•ืช Test).

ืฉื™ืžื• ืœื‘ ืฉ-kubectl ืžืกืคืงืช ื’ื ืืคืฉืจื•ื™ื•ืช --cluster, --user, --namespace ะธ --context, ื”ืžืืคืฉืจื™ื ืœืš ืœื”ื—ืœื™ืฃ ืืœืžื ื˜ื™ื ื‘ื•ื“ื“ื™ื ื•ืืช ื”ื”ืงืฉืจ ื”ื ื•ื›ื—ื™ ืขืฆืžื•, ืœืœื ืงืฉืจ ืœืžื” ืฉื”ื•ื’ื“ืจ ื‘-kubeconfig. ืชืจืื” kubectl options.

ื‘ืชื™ืื•ืจื™ื”, ืืชื” ื™ื›ื•ืœ ืœืฉื ื•ืช ื™ื“ื ื™ืช ืืช ื”ื”ื’ื“ืจื•ืช ื‘-kubeconfig. ืื‘ืœ ื–ื” ืœื ื ื•ื—. ื›ื“ื™ ืœืคืฉื˜ ืืช ื”ืคืขื•ืœื•ืช ื”ืœืœื•, ื™ืฉื ื ื›ืœื™ ืขื–ืจ ืฉื•ื ื™ื ื”ืžืืคืฉืจื™ื ืœืš ืœืฉื ื•ืช ืคืจืžื˜ืจื™ื ื‘ืื•ืคืŸ ืื•ื˜ื•ืžื˜ื™.

ื”ืฉืชืžืฉ ื‘-kubectx

ื›ืœื™ ืขื–ืจ ืคื•ืคื•ืœืจื™ ืžืื•ื“ ืœืžืขื‘ืจ ื‘ื™ืŸ ืืฉื›ื•ืœื•ืช ื•ืžืจื—ื‘ื™ ืฉืžื•ืช.

ื›ืœื™ ื”ืฉื™ืจื•ืช ืžืกืคืง ืคืงื•ื“ื•ืช kubectx ะธ kubens ื›ื“ื™ ืœืฉื ื•ืช ืืช ื”ื”ืงืฉืจ ื”ื ื•ื›ื—ื™ ื•ืืช ืžืจื—ื‘ ื”ืฉืžื•ืช ื‘ื”ืชืืžื”.

ื›ืืžื•ืจ, ืฉื™ื ื•ื™ ื”ื”ืงืฉืจ ื”ื ื•ื›ื—ื™ ืคื™ืจื•ืฉื• ืฉื™ื ื•ื™ ื”ืืฉื›ื•ืœ ืื ื™ืฉ ืœืš ืจืง ื”ืงืฉืจ ืื—ื“ ืœื›ืœ ืืฉื›ื•ืœ.

ืœื”ืœืŸ ื“ื•ื’ืžื” ืœื”ืคืขืœืช ื”ืคืงื•ื“ื•ืช ื”ืœืœื•:

ื›ื™ืฆื“ ืœื”ืฉืชืžืฉ ื‘-kubectl ื‘ืฆื•ืจื” ื™ืขื™ืœื” ื™ื•ืชืจ: ืžื“ืจื™ืš ืžืคื•ืจื˜
ื‘ืขื™ืงืจื• ืฉืœ ื“ื‘ืจ, ืคืงื•ื“ื•ืช ืืœื” ืคืฉื•ื˜ ืขื•ืจื›ื•ืช ืืช ืงื•ื‘ืฅ kubeconfig ื›ืžืชื•ืืจ ืœืขื™ืœ.

ืœื”ืชืงื™ืŸ kubectx, ืขืงื•ื‘ ืื—ืจ ื”ื”ื•ืจืื•ืช ื‘ ื’ื™ืช'ื•ื‘.

ืฉืชื™ ื”ืคืงื•ื“ื•ืช ืชื•ืžื›ื•ืช ื‘ื”ืฉืœืžื” ืื•ื˜ื•ืžื˜ื™ืช ืฉืœ ืฉืžื•ืช ืฉืœ ื”ืงืฉืจ ื•ืžืจื—ื‘ ืฉืžื•ืช, ืžื” ืฉืžื‘ื˜ืœ ืืช ื”ืฆื•ืจืš ืœื”ืงืœื™ื“ ืื•ืชื ืœื—ืœื•ื˜ื™ืŸ. ื”ื•ืจืื•ืช ืœื”ื’ื“ืจืช ื”ืฉืœืžื” ืื•ื˜ื•ืžื˜ื™ืช ื›ืืŸ.

ืขื•ื“ ืชื›ื•ื ื” ืฉื™ืžื•ืฉื™ืช kubectx ื–ื” ืžืฆื‘ ืื™ื ื˜ืจืืงื˜ื™ื‘ื™. ื–ื” ืขื•ื‘ื“ ื‘ืฉื™ืœื•ื‘ ืขื ื›ืœื™ ื”ืฉื™ืจื•ืช fzf, ืฉื™ืฉ ืœื”ืชืงื™ืŸ ื‘ื ืคืจื“. ื”ืชืงื ืช fzf ื”ื•ืคื›ืช ื‘ืื•ืคืŸ ืื•ื˜ื•ืžื˜ื™ ืืช ื”ืžืฆื‘ ื”ืื™ื ื˜ืจืืงื˜ื™ื‘ื™ ืœื–ืžื™ืŸ ื‘ kubectx. ื‘ืื•ืคืŸ ืื™ื ื˜ืจืืงื˜ื™ื‘ื™, ืืชื” ื™ื›ื•ืœ ืœื‘ื—ื•ืจ ื”ืงืฉืจ ื•ืžืจื—ื‘ ืฉืžื•ืช ื“ืจืš ืžืžืฉืง ื”ื—ื™ืคื•ืฉ ื”ื—ื™ื ืžื™ ื”ืื™ื ื˜ืจืืงื˜ื™ื‘ื™ ืฉืžืกืคืง fzf.

ืฉื™ืžื•ืฉ ื‘ื›ื™ื ื•ื™ื™ ืžืขื˜ืคืช

ืืชื” ืœื ืฆืจื™ืš ื›ืœื™ื ื ืคืจื“ื™ื ื›ื“ื™ ืœืฉื ื•ืช ืืช ื”ื”ืงืฉืจ ื”ื ื•ื›ื—ื™ ื•ืืช ืžืจื—ื‘ ื”ืฉืžื•ืช ืžื›ื™ื•ื•ืŸ ืฉ-kubectl ืžืกืคืง ื’ื ืคืงื•ื“ื•ืช ืœื›ืš. ื›ืŸ, ืฆื•ื•ืช kubectl config ืžืกืคืง ืคืงื•ื“ื•ืช ืžืฉื ื” ืœืขืจื™ื›ืช ืงื‘ืฆื™ kubeconfig.

ื”ื ื” ื›ืžื” ืžื”ื:

  • kubectl config get-contexts: ื”ืฆื’ ืืช ื›ืœ ื”ื”ืงืฉืจื™ื;
  • kubectl config current-context: ืœืงื‘ืœ ื”ืงืฉืจ ื ื•ื›ื—ื™;
  • kubectl config use-context: ืœืฉื ื•ืช ืืช ื”ื”ืงืฉืจ ื”ื ื•ื›ื—ื™;
  • kubectl config set-context: ืฉื ื” ืืช ืจื›ื™ื‘ ื”ื”ืงืฉืจ.

ืขื ื–ืืช, ืฉื™ืžื•ืฉ ื‘ืคืงื•ื“ื•ืช ืืœื• ื™ืฉื™ืจื•ืช ืื™ื ื• ื ื•ื— ื‘ืžื™ื•ื—ื“ ืžื›ื™ื•ื•ืŸ ืฉื”ืŸ ืืจื•ื›ื•ืช. ืืชื” ื™ื›ื•ืœ ืœื™ืฆื•ืจ ืขื‘ื•ืจื ื›ื™ื ื•ื™ื™ื ืฉืœ ืžืขื˜ืคืช ืฉืงืœ ืœื‘ื™ืฆื•ืข.

ื™ืฆืจืชื™ ืงื‘ื•ืฆื” ืฉืœ ื›ื™ื ื•ื™ื™ื ื”ืžื‘ื•ืกืกื™ื ืขืœ ื”ืคืงื•ื“ื•ืช ื”ืœืœื• ื”ืžืกืคืงื•ืช ืคื•ื ืงืฆื™ื•ื ืœื™ื•ืช ื“ื•ืžื” ืœ-kubectx. ื›ืืŸ ืชื•ื›ืœื• ืœืจืื•ืช ืื•ืชื ื‘ืคืขื•ืœื”:

ื›ื™ืฆื“ ืœื”ืฉืชืžืฉ ื‘-kubectl ื‘ืฆื•ืจื” ื™ืขื™ืœื” ื™ื•ืชืจ: ืžื“ืจื™ืš ืžืคื•ืจื˜
ืฉื™ืžื• ืœื‘ ืฉื›ื™ื ื•ื™ื™ื ืžืฉืชืžืฉื™ื ื‘-fzf ื›ื“ื™ ืœืกืคืง ืžืžืฉืง ื—ื™ืคื•ืฉ ื—ื™ื ืžื™ ืื™ื ื˜ืจืืงื˜ื™ื‘ื™ (ื›ืžื• ื”ืžืฆื‘ ื”ืื™ื ื˜ืจืืงื˜ื™ื‘ื™ ืฉืœ kubectx). ื–ื” ืื•ืžืจ ืฉืืชื” ืฆืจื™ืš ืœื”ืชืงื™ืŸ fzfืœื”ืฉืชืžืฉ ื‘ื›ื™ื ื•ื™ื™ื ืืœื”.

ืœื”ืœืŸ ื”ื”ื’ื“ืจื•ืช ืฉืœ ื”ื›ื™ื ื•ื™ื™ื ืขืฆืžื:

# ะŸะพะปัƒั‡ะธั‚ัŒ ั‚ะตะบัƒั‰ะธะน ะบะพะฝั‚ะตะบัั‚
alias krc='kubectl config current-context'
# ะกะฟะธัะพะบ ะฒัะตั… ะบะพะฝั‚ะตะบัั‚ะพะฒ
alias klc='kubectl config get-contexts -o name | sed "s/^/  /;|^  $(krc)$|s/ /*/"'
# ะ˜ะทะผะตะฝะธั‚ัŒ ั‚ะตะบัƒั‰ะธะน ะบะพะฝั‚ะตะบัั‚
alias kcc='kubectl config use-context "$(klc | fzf -e | sed "s/^..//")"'

# ะŸะพะปัƒั‡ะธั‚ัŒ ั‚ะตะบัƒั‰ะตะต ะฟั€ะพัั‚ั€ะฐะฝัั‚ะฒะพ ะธะผะตะฝ
alias krn='kubectl config get-contexts --no-headers "$(krc)" | awk "{print $5}" | sed "s/^$/default/"'
# ะกะฟะธัะพะบ ะฒัะตั… ะฟั€ะพัั‚ั€ะฐะฝัั‚ะฒ ะธะผะตะฝ
alias kln='kubectl get -o name ns | sed "s|^.*/|  |;|^  $(krn)$|s/ /*/"'
# ะ˜ะทะผะตะฝะธั‚ัŒ ั‚ะตะบัƒั‰ะตะต ะฟั€ะพัั‚ั€ะฐะฝัั‚ะฒะพ ะธะผะตะฝ
alias kcn='kubectl config set-context --current --namespace "$(kln | fzf -e | sed "s/^..//")"'

ื›ื“ื™ ืœื”ื’ื“ื™ืจ ื›ื™ื ื•ื™ื™ื ืืœื” ืขืœื™ืš ืœื”ื•ืกื™ืฃ ืืช ื”ื”ื’ื“ืจื•ืช ืœืขื™ืœ ืœืงื•ื‘ืฅ ืฉืœืš ~/.bashrc ืื• ~/.zshrc ื•ืืชื—ืœ ืžื—ื“ืฉ ืืช ื”ืžืขื˜ืคืช ืฉืœืš.

ืฉื™ืžื•ืฉ ื‘ืชื•ืกืคื™ื

Kubectl ืžืืคืฉืจ ืœืš ืœื˜ืขื•ืŸ ืชื•ืกืคื™ื ื”ืžื•ืคืขืœื™ื ื‘ืื•ืชื• ืื•ืคืŸ ื›ืžื• ืคืงื•ื“ื•ืช ื‘ืกื™ืกื™ื•ืช. ืืชื” ื™ื›ื•ืœ, ืœืžืฉืœ, ืœื”ืชืงื™ืŸ ืืช ื”ืชื•ืกืฃ kubectl-foo ื•ืœื”ืคืขื™ืœ ืื•ืชื• ืขืœ ื™ื“ื™ ื‘ื™ืฆื•ืข ื”ืคืงื•ื“ื” kubectl foo.

ื–ื” ื™ื”ื™ื” ื ื•ื— ืœืฉื ื•ืช ืืช ื”ื”ืงืฉืจ ื•ืžืจื—ื‘ ื”ืฉืžื•ืช ื‘ื“ืจืš ื–ื•, ืœืžืฉืœ ืขืœ ื™ื“ื™ ื”ืคืขืœื” kubectl ctx ืœืฉื ื•ืช ื”ืงืฉืจ ื• kubectl ns ื›ื“ื™ ืœืฉื ื•ืช ืืช ืžืจื—ื‘ ื”ืฉืžื•ืช.

ื›ืชื‘ืชื™ ืฉื ื™ ืชื•ืกืคื™ื ืฉืขื•ืฉื™ื ืืช ื–ื”:

ืขื‘ื•ื“ืช ื”ืชื•ืกืคื™ื ืžื‘ื•ืกืกืช ืขืœ ื›ื™ื ื•ื™ื™ื ืžื”ืกืขื™ืฃ ื”ืงื•ื“ื.

ื›ืš ื”ื ืขื•ื‘ื“ื™ื:

ื›ื™ืฆื“ ืœื”ืฉืชืžืฉ ื‘-kubectl ื‘ืฆื•ืจื” ื™ืขื™ืœื” ื™ื•ืชืจ: ืžื“ืจื™ืš ืžืคื•ืจื˜
ืฉื™ืžื• ืœื‘ ืฉื”ืชื•ืกืคื™ื ืžืฉืชืžืฉื™ื ื‘-fzf ื›ื“ื™ ืœืกืคืง ืžืžืฉืง ื—ื™ืคื•ืฉ ืื™ื ื˜ืจืืงื˜ื™ื‘ื™ ื‘ื—ื™ื ื (ื›ืžื• ื”ืžืฆื‘ ื”ืื™ื ื˜ืจืืงื˜ื™ื‘ื™ ืฉืœ kubectx). ื–ื” ืื•ืžืจ ืฉืืชื” ืฆืจื™ืš ืœื”ืชืงื™ืŸ fzfืœื”ืฉืชืžืฉ ื‘ื›ื™ื ื•ื™ื™ื ืืœื”.

ื›ื“ื™ ืœื”ืชืงื™ืŸ ืชื•ืกืคื™ื, ืขืœื™ืš ืœื”ื•ืจื™ื“ ืกืงืจื™ืคื˜ื™ื ืฉืœ ืžืขื˜ืคืช ื‘ืฉื kubectl-ctx ะธ kubectl-ns ืœื›ืœ ืกืคืจื™ื™ื” ื‘ืžืฉืชื ื” PATH ืฉืœืš ื•ืœื”ืคื•ืš ืื•ืชื ืœื ื™ืชื ื™ื ืœื”ืคืขืœื” ืขื ืœืžืฉืœ. chmod +x. ืžื™ื“ ืœืื—ืจ ืžื›ืŸ ืชื•ื›ืœ ืœื”ืฉืชืžืฉ kubectl ctx ะธ kubectl ns.

5. ืฆืžืฆื ืืช ื”ืงืœื˜ ืขื ื›ื™ื ื•ื™ื™ื ืื•ื˜ื•ืžื˜ื™ื™ื

ื›ื™ื ื•ื™ื™ื ืฉืœ ืžืขื˜ืคืช ื”ื ื“ืจืš ื˜ื•ื‘ื” ืœื”ืื™ืฅ ืืช ื”ืงืœื˜. ืคึผืจื•ึนื™ึถืงื˜ kubectl-ื›ื™ื ื•ื™ื™ื ืžื›ื™ืœ ื›-800 ืงื™ืฆื•ืจื™ ื“ืจืš ืœืคืงื•ื“ื•ืช kubectl ื‘ืกื™ืกื™ื•ืช.

ืืชื” ืื•ืœื™ ืชื•ื”ื” - ืื™ืš ืืชื” ื–ื•ื›ืจ 800 ื›ื™ื ื•ื™ื™ื? ืื‘ืœ ืืชื” ืœื ืฆืจื™ืš ืœื–ื›ื•ืจ ืืช ื›ื•ืœื, ื›ื™ ื”ื ื‘ื ื•ื™ื™ื ืขืœ ืคื™ ืชื•ื›ื ื™ืช ืคืฉื•ื˜ื”, ื”ืžืคื•ืจื˜ืช ืœื”ืœืŸ:

ื›ื™ืฆื“ ืœื”ืฉืชืžืฉ ื‘-kubectl ื‘ืฆื•ืจื” ื™ืขื™ืœื” ื™ื•ืชืจ: ืžื“ืจื™ืš ืžืคื•ืจื˜
ืœื“ื•ื’ืžื”:

  1. kgpooyaml - kubectl get pods oyaml
  2. ksysgsvcw โ€” kubectl -n kube-system ืงื‘ืœ svc w
  3. ksysrmcm -kubectl -n kube-system rm cm
  4. kgdepallsl - kubectl ืงื‘ืœ ืคืจื™ืกื” ื›ืœ sl

ื›ืคื™ ืฉืืชื” ื™ื›ื•ืœ ืœืจืื•ืช, ื›ื™ื ื•ื™ื™ื ืžื•ืจื›ื‘ื™ื ืžืจื›ื™ื‘ื™ื, ืฉื›ืœ ืื—ื“ ืžื”ื ืžื™ื™ืฆื’ ืืœืžื ื˜ ืžืกื•ื™ื ืฉืœ ื”ืคืงื•ื“ื” kubectl. ืœื›ืœ ื›ื™ื ื•ื™ ื™ื›ื•ืœ ืœื”ื™ื•ืช ืจื›ื™ื‘ ืื—ื“ ืขื‘ื•ืจ ืคืงื•ื“ืช ื”ื‘ืกื™ืก, ื”ืคืขื•ืœื” ื•ื”ืžืฉืื‘, ื•ืจื›ื™ื‘ื™ื ืžืจื•ื‘ื™ื ืขื‘ื•ืจ ืคืจืžื˜ืจื™ื. ืืชื” ืคืฉื•ื˜ "ืžืื›ืœืก" ืืช ื”ืจื›ื™ื‘ื™ื ื”ืœืœื• ืžืฉืžืืœ ืœื™ืžื™ืŸ ืœืคื™ ื”ืชืจืฉื™ื ืœืžืขืœื”.

ื”ืชืจืฉื™ื ื”ืžืคื•ืจื˜ ื”ื ื•ื›ื—ื™ ื ืžืฆื ื‘- GitHub. ืฉื ื’ื ืืคืฉืจ ืœืžืฆื•ื ืจืฉื™ืžื” ืžืœืื” ืฉืœ ื›ื™ื ื•ื™ื™ื.

ืœื“ื•ื’ืžื”, ื”ื›ื™ื ื•ื™ kgpooyamlall ืฉื•ื•ื” ืขืจืš ืœืคืงื•ื“ื” kubectl get pods -o yaml --all-namespaces.

ื”ืกื“ืจ ื”ื™ื—ืกื™ ืฉืœ ื”ืืคืฉืจื•ื™ื•ืช ืื™ื ื• ื—ืฉื•ื‘: ืคืงื•ื“ื” kgpooyamlall ืฉื•ื•ื” ืœืคืงื•ื“ื” kgpoalloyaml.

ืื™ื ืš ื—ื™ื™ื‘ ืœื”ืฉืชืžืฉ ื‘ื›ืœ ื”ืจื›ื™ื‘ื™ื ื›ื›ื™ื ื•ื™ื™ื. ืœื“ื•ื’ืžื” k, kg, klo, ksys, kgpo ื ื™ืชืŸ ืœื”ืฉืชืžืฉ ื’ื. ื™ืชืจ ืขืœ ื›ืŸ, ื ื™ืชืŸ ืœืฉืœื‘ ื›ื™ื ื•ื™ื™ื ื•ืคืงื•ื“ื•ืช ืื• ืืคืฉืจื•ื™ื•ืช ืจื’ื™ืœื•ืช ื‘ืฉื•ืจืช ื”ืคืงื•ื“ื”:

ืœื“ื•ื’ืžื”:

  1. ื‘ืžืงื•ื ื–ืืช kubectl proxy ืืชื” ื™ื›ื•ืœ ืœื›ืชื•ื‘ k proxy.
  2. ื‘ืžืงื•ื ื–ืืช kubectl get roles ืืชื” ื™ื›ื•ืœ ืœื›ืชื•ื‘ kg roles (ืื™ืŸ ื›ืจื’ืข ื›ื™ื ื•ื™ ืœืžืฉืื‘ ื”ืชืคืงื™ื“ื™ื).
  3. ื›ื“ื™ ืœืงื‘ืœ ื ืชื•ื ื™ื ืขื‘ื•ืจ ืคื•ื“ ืกืคืฆื™ืคื™, ืืชื” ื™ื›ื•ืœ ืœื”ืฉืชืžืฉ ื‘ืคืงื•ื“ื” kgpo my-pod โ€” kubectl get pod my-pod.

ืฉื™ื ืœื‘ ืฉื—ืœืง ืžื”ื›ื™ื ื•ื™ื™ื ื“ื•ืจืฉื™ื ืืจื’ื•ืžื ื˜ ืฉื•ืจืช ืคืงื•ื“ื”. ืœืžืฉืœ, ื›ื™ื ื•ื™ kgpol ืืžืฆืขื™ื kubectl get pods -l. ืื•ึนืคึผึฐืฆึดื™ึธื” -l ื“ื•ืจืฉ ืืจื’ื•ืžื ื˜ - ืžืคืจื˜ ืชื•ื•ื™ืช. ืื ืืชื” ืžืฉืชืžืฉ ื‘ื›ื™ื ื•ื™ ื–ื” ื™ื™ืจืื” kgpol app=ui.

ืžื›ื™ื•ื•ืŸ ืฉื—ืœืง ืžื”ื›ื™ื ื•ื™ื™ื ื“ื•ืจืฉื™ื ืืจื’ื•ืžื ื˜ื™ื, ื”ื›ื™ื ื•ื™ื™ื a, f ื•-l ื—ื™ื™ื‘ื™ื ืœืฉืžืฉ ืื—ืจื•ื ื™ื.

ื‘ืื•ืคืŸ ื›ืœืœื™, ื‘ืจื’ืข ืฉืืชื” ืžื‘ื™ืŸ ืืช ื”ืชื•ื›ื ื™ืช ื”ื–ื•, ืืชื” ื™ื›ื•ืœ ืœื’ื–ื•ืจ ืื™ื ื˜ื•ืื™ื˜ื™ื‘ื™ืช ื›ื™ื ื•ื™ื™ื ืžื”ืคืงื•ื“ื•ืช ืฉืืชื” ืจื•ืฆื” ืœื‘ืฆืข ื•ืœื—ืกื•ืš ื–ืžืŸ ื”ืงืœื“ื” ืจื‘.

ื”ืชืงื ื”

ื›ื“ื™ ืœื”ืชืงื™ืŸ kubectl-aliases, ืขืœื™ืš ืœื”ื•ืจื™ื“ ืืช ื”ืงื•ื‘ืฅ โ€Ž.kubectl_aliases ืž-GitHub ื•ืœื›ืœื•ืœ ืื•ืชื• ื‘ืงื•ื‘ืฅ ~/.bashrc ืื• ~/.zshrc:

source ~/.kubectl_aliases

ื”ืฉืœืžื” ืื•ื˜ื•ืžื˜ื™ืช

ื›ืคื™ ืฉืืžืจื ื• ืงื•ื“ื, ืœืขืชื™ื ืงืจื•ื‘ื•ืช ืืชื” ืžื•ืกื™ืฃ ืžื™ืœื™ื ื ื•ืกืคื•ืช ืœื›ื™ื ื•ื™ ื‘ืฉื•ืจืช ื”ืคืงื•ื“ื”. ืœื“ื•ื’ืžื”:

$ kgpooyaml test-pod-d4b77b989

ืื ืืชื” ืžืฉืชืžืฉ ื‘ื”ืฉืœืžืช ืคืงื•ื“ื•ืช kubectl, ื›ื ืจืื” ืฉื”ืฉืชืžืฉืช ื‘ื”ืฉืœืžื” ืื•ื˜ื•ืžื˜ื™ืช ืขื‘ื•ืจ ื“ื‘ืจื™ื ื›ืžื• ืฉืžื•ืช ืžืฉืื‘ื™ื. ืืš ื”ืื ื ื™ืชืŸ ืœืขืฉื•ืช ื–ืืช ื›ืืฉืจ ืžืฉืชืžืฉื™ื ื‘ื›ื™ื ื•ื™ื™ื?

ื–ื• ืฉืืœื” ื—ืฉื•ื‘ื” ืžืื•ื“ ืžื›ื™ื•ื•ืŸ ืฉืื ื”ืฉืœืžื” ืื•ื˜ื•ืžื˜ื™ืช ืœื ืชืขื‘ื•ื“, ืชืื‘ื“ ื—ืœืง ืžื”ื™ืชืจื•ื ื•ืช ืฉืœ ื›ื™ื ื•ื™ื™ื.

ื”ืชืฉื•ื‘ื” ืชืœื•ื™ื” ื‘ืื™ื–ื• ืžืขื˜ืคืช ืืชื” ืžืฉืชืžืฉ:

  1. ืขื‘ื•ืจ Zsh, ื”ืฉืœืžืช ื”ื›ื™ื ื•ื™ ืคื•ืขืœืช ืžื—ื•ืฅ ืœืงื•ืคืกื”.
  2. ืขื‘ื•ืจ Bash, ืœืžืจื‘ื” ื”ืฆืขืจ, ื ื“ืจืฉืช ืขื‘ื•ื“ื” ืžืกื•ื™ืžืช ื›ื“ื™ ืฉื”ื”ืฉืœืžื” ื”ืื•ื˜ื•ืžื˜ื™ืช ืชืขื‘ื•ื“.

ื”ืคืขืœืช ื”ืฉืœืžื” ืื•ื˜ื•ืžื˜ื™ืช ืขื‘ื•ืจ ื›ื™ื ื•ื™ื™ื ื‘-Bash

ื”ื‘ืขื™ื” ืขื Bash ื”ื™ื ืฉื”ื•ื ืžื ืกื” ืœื”ืฉืœื™ื (ื‘ื›ืœ ืคืขื ืฉืืชื” ืœื•ื—ืฅ ืขืœ Tab) ืืช ื”ื›ื™ื ื•ื™, ื•ืœื ืืช ื”ืคืงื•ื“ื” ืฉื”ื›ื™ื ื•ื™ ืžืชื™ื™ื—ืก ืืœื™ื” (ื›ืžื• ืฉ-Zsh ืขื•ืฉื”, ืœืžืฉืœ). ืžื›ื™ื•ื•ืŸ ืฉืื™ืŸ ืœืš ืกืงืจื™ืคื˜ื™ื ืœื”ืฉืœืžื” ืขื‘ื•ืจ ื›ืœ 800 ื”ื›ื™ื ื•ื™ื™ื, ื”ืฉืœืžื” ืื•ื˜ื•ืžื˜ื™ืช ืœื ืขื•ื‘ื“ืช.

ืคืจื•ื™ืงื˜ ื›ื™ื ื•ื™ ืฉืœื ืžืกืคืง ืคืชืจื•ืŸ ื›ืœืœื™ ืœื‘ืขื™ื” ื–ื•. ื”ื•ื ืžืชื—ื‘ืจ ืœืžื ื’ื ื•ืŸ ื”ื”ืฉืœืžื” ืฉืœ ื›ื™ื ื•ื™ื™ื, ืžืจื—ื™ื‘ ื‘ืื•ืคืŸ ืคื ื™ืžื™ ืืช ื”ื›ื™ื ื•ื™ ืœืคืงื•ื“ื” ื•ืžื—ื–ื™ืจ ืืคืฉืจื•ื™ื•ืช ื”ืฉืœืžื” ืœืคืงื•ื“ื” ืฉื”ื•ืฉืœืžื”. ื”ืžืฉืžืขื•ืช ื”ื™ื ืฉื”ืจื™ืคื•ื“ ืขื‘ื•ืจ ื›ื™ื ื•ื™ ืžืชื ื”ื’ ื‘ื“ื™ื•ืง ื›ืžื• ืขื‘ื•ืจ ืคืงื•ื“ื” ืžืœืื”.

ื‘ื”ืžืฉืš, ืชื—ื™ืœื” ืืกื‘ื™ืจ ื›ื™ืฆื“ ืœื”ืชืงื™ืŸ ืืช complete-alias ื•ืœืื—ืจ ืžื›ืŸ ื›ื™ืฆื“ ืœื”ื’ื“ื™ืจ ืื•ืชื• ื›ืš ืฉื™ืืคืฉืจ ื”ืฉืœืžื” ืขื‘ื•ืจ ื›ืœ ื”ื›ื™ื ื•ื™ื™ื ืฉืœ kubectl.

ื”ืชืงื ืช ื›ื™ื ื•ื™ ืฉืœื

ืงื•ื“ื ื›ืœ, ื›ื™ื ื•ื™ ื”ืฉืœื ืชืœื•ื™ ื‘ bash-ื”ืฉืœืžื”. ืœื›ืŸ, ืœืคื ื™ ื”ืชืงื ืช complete-alias, ืขืœื™ืš ืœื•ื•ื“ื ืฉื”-bash-completion ืžื•ืชืงืŸ. ื”ื•ืจืื•ืช ื”ืชืงื ื” ืกื•ืคืงื• ื‘ืขื‘ืจ ืขื‘ื•ืจ Linux ื•-MacOS.

ื”ืขืจื” ื—ืฉื•ื‘ื” ืœืžืฉืชืžืฉื™ MacOS: ื›ืžื• ืกืงืจื™ืคื˜ ื”ื”ืฉืœืžื” ื”ืื•ื˜ื•ืžื˜ื™ืช ืฉืœ kubectl, complete-alias ืœื ืขื•ื‘ื“ ืขื Bash 3.2, ืฉื”ื™ื ื‘ืจื™ืจืช ื”ืžื—ื“ืœ ื‘-MacOS. ื‘ืคืจื˜, ื›ื™ื ื•ื™ ื”ืฉืœืžื” ืชืœื•ื™ ื‘ื”ืฉืœืžื” ืฉืœ bash v2 (brew install bash-completion@2), ื”ื“ื•ืจืฉ ืœืคื—ื•ืช Bash 4.1. ืžืฉืžืขื•ืช ื”ื“ื‘ืจ ื”ื™ื ืฉื›ื“ื™ ืœื”ืฉืชืžืฉ ื‘ื›ื™ื ื•ื™ ืฉืœื ื‘-MacOS, ืขืœื™ืš ืœื”ืชืงื™ืŸ ื’ืจืกื” ื—ื“ืฉื” ื™ื•ืชืจ ืฉืœ Bash.

ืืชื” ืฆืจื™ืš ืœื”ื•ืจื™ื“ ืืช ื”ืกืงืจื™ืคื˜ bash_completion.sh ืฉืœ ืžืื’ืจ GitHub ื•ืœื›ืœื•ืœ ืื•ืชื• ื‘ืงื•ื‘ืฅ ืฉืœืš ~/.bashrc:

source ~/bash_completion.sh

ืœืื—ืจ ืืชื—ื•ืœ ืžื—ื“ืฉ ืฉืœ ื”ืžืขื˜ืคืช, ื”-complet-alias ื™ื•ืชืงืŸ ื‘ืžืœื•ืื•.

ื”ืคืขืœืช ื”ืฉืœืžื” ืื•ื˜ื•ืžื˜ื™ืช ืขื‘ื•ืจ ื›ื™ื ื•ื™ื™ื ืฉืœ kubectl

ื›ื™ื ื•ื™ ืžืœื ืžื‘ื—ื™ื ื” ื˜ื›ื ื™ืช ืžืกืคืง ืคื•ื ืงืฆื™ื™ืช ืขื˜ื™ืคื” _complete_alias. ืคื•ื ืงืฆื™ื” ื–ื• ื‘ื•ื“ืงืช ืืช ื”ื›ื™ื ื•ื™ ื•ืžื—ื–ื™ืจื” ืจืžื–ื™ื ืœื”ืฉืœืžืช ืคืงื•ื“ืช ื”ื›ื™ื ื•ื™.

ื›ื“ื™ ืœืฉื™ื™ืš ืคื•ื ืงืฆื™ื” ืœื›ื™ื ื•ื™ ืกืคืฆื™ืคื™, ืขืœื™ืš ืœื”ืฉืชืžืฉ ื‘ืžื ื’ื ื•ืŸ Bash ื”ืžื•ื‘ื ื” ืœื”ืฉืœื™ื, ืœื”ืชืงื™ืŸ _complete_alias ื›ืคื•ื ืงืฆื™ื™ืช ื”ืฉืœืžืช ื›ื™ื ื•ื™.

ื›ื“ื•ื’ืžื”, ื ื™ืงื— ืืช ื”ื›ื™ื ื•ื™ k, ื”ืžื™ื™ืฆื’ ืืช ื”ืคืงื•ื“ื” kubectl. ืœื”ืชืงื™ืŸ _complete_alias ื›ืคื•ื ืงืฆื™ื” ืžืฉืœื™ืžื” ืขื‘ื•ืจ ื›ื™ื ื•ื™ ื–ื”, ืขืœื™ืš ืœื”ืคืขื™ืœ ืืช ื”ืคืงื•ื“ื” ื”ื‘ืื”:

$ complete -F _complete_alias k

ื”ืชื•ืฆืื” ืฉืœ ื–ื” ื”ื™ื ืฉื‘ื›ืœ ืคืขื ืฉืืชื” ืžืฉืœื™ื ืื•ื˜ื•ืžื˜ื™ืช ื›ื™ื ื•ื™ k, ื”ืคื•ื ืงืฆื™ื” ื ืงืจืืช _complete_alias, ืฉื‘ื•ื“ืง ืืช ื”ื›ื™ื ื•ื™ ื•ืžื—ื–ื™ืจ ืจืžื–ื™ื ืœื”ืฉืœืžืช ื”ืคืงื•ื“ื” kubectl.

ื›ื“ื•ื’ืžื” ืฉื ื™ื™ื”, ื ื™ืงื— ืืช ื”ื›ื™ื ื•ื™ kg, ื”ืžืฆื™ื™ืŸ kubectl get:

$ complete -F _complete_alias kg

ื‘ื“ื™ื•ืง ื›ืžื• ื‘ื“ื•ื’ืžื” ื”ืงื•ื“ืžืช, ื›ืืฉืจ ืืชื” ืžืฉืœื™ื ืื•ื˜ื•ืžื˜ื™ืช ืง"ื’, ืืชื” ืžืงื‘ืœ ืืช ืื•ืชื ืจืžื–ื™ ื”ืฉืœืžื” ืฉื”ื™ื™ืช ืžืงื‘ืœ ืขื‘ื•ืจ kubectl get.

ืฉื™ื ืœื‘ ืฉืืชื” ื™ื›ื•ืœ ืœื”ืฉืชืžืฉ ื‘ื›ื™ื ื•ื™ ื”ืฉืœื ืขื‘ื•ืจ ื›ืœ ื›ื™ื ื•ื™ ื‘ืžืขืจื›ืช ืฉืœืš.

ืœื›ืŸ, ื›ื“ื™ ืœืืคืฉืจ ื”ืฉืœืžื” ืื•ื˜ื•ืžื˜ื™ืช ืขื‘ื•ืจ ื›ืœ ื”ื›ื™ื ื•ื™ื™ื ืฉืœ kubectl, ืขืœื™ืš ืœื”ืคืขื™ืœ ืืช ื”ืคืงื•ื“ื” ืœืขื™ืœ ืขื‘ื•ืจ ื›ืœ ืื—ื“ ืžื”ื. ื”ืงื˜ืข ื”ื‘ื ืขื•ืฉื” ื‘ื“ื™ื•ืง ืืช ื–ื”, ื‘ืชื ืื™ ืฉื”ื’ื“ืจืช kubectl-ื›ื™ื ื•ื™ื™ื ืœ ~/.kubectl-aliases:

for _a in $(sed '/^alias /!d;s/^alias //;s/=.*$//' ~/.kubectl_aliases); 
do
  complete -F _complete_alias "$_a"
done

ื™ืฉ ืœืžืงื ืืช ืคื™ืกืช ื”ืงื•ื“ ื”ื–ื• ื‘ืงื•ื‘ืฅ ืฉืœืš ~/.bashrc, ื”ืคืขืœ ืžื—ื“ืฉ ืืช ืžืขื˜ืคืช ื”ืคืงื•ื“ื” ื•ื”ื”ืฉืœืžื” ื”ืื•ื˜ื•ืžื˜ื™ืช ืชื”ื™ื” ื–ืžื™ื ื” ืขื‘ื•ืจ ื›ืœ 800 ื”ื›ื™ื ื•ื™ื™ื ืฉืœ kubectl.

6. ื”ืจื—ื‘ืช kubectl ืขื ืชื•ืกืคื™ื

ื”ื—ืœ ืž ื’ืจืกื” 1.12, kubectl ืชื•ืžืš ืžื ื’ื ื•ืŸ ืชื•ืกืฃ, ื”ืžืืคืฉืจื™ื ืœืš ืœื”ืจื—ื™ื‘ ืืช ื”ืคื•ื ืงืฆื™ื•ืช ืฉืœื• ืขื ืคืงื•ื“ื•ืช ื ื•ืกืคื•ืช.

ืื ืืชื” ืžื›ื™ืจ ืžื ื’ื ื•ื ื™ ื”ืชื•ืกืฃ ืฉืœ Git, ืื– ืชื•ืกืคื™ kubectl ื‘ื ื•ื™ื™ื ืขืœ ืื•ืชื• ืขื™ืงืจื•ืŸ.

ื‘ืคืจืง ื–ื”, ื ืกืงื•ืจ ื›ื™ืฆื“ ืœื”ืชืงื™ืŸ ืชื•ืกืคื™ื, ื”ื™ื›ืŸ ืœืžืฆื•ื ืื•ืชื ื•ื›ื™ืฆื“ ืœื™ืฆื•ืจ ืชื•ืกืคื™ื ืžืฉืœืš.

ื”ืชืงื ืช ืชื•ืกืคื™ื

ืชื•ืกืคื™ื ืฉืœ Kubectl ืžื•ืคืฆื™ื ื›ืงื‘ืฆื™ ื”ืคืขืœื” ืคืฉื•ื˜ื™ื ืขื ื”ืฉื ื›ืžื• kubectl-x. ืงื™ื“ื•ืžืช kubectl- ื ื“ืจืฉืช, ื•ืื—ืจื™ื” ืชืช-ืคืงื•ื“ื” ื—ื“ืฉื” ืฉืœ kubectl ื”ืžืืคืฉืจืช ืœืš ืœื”ืชืงืฉืจ ืœืคืœืื’ื™ืŸ.

ืœื“ื•ื’ืžื”, ืชื•ืกืฃ hello ื™ื•ืคืฅ ื›ืงื•ื‘ืฅ ืฉื ืงืจื kubectl-hello.

ื›ื“ื™ ืœื”ืชืงื™ืŸ ืืช ื”ืชื•ืกืฃ, ืขืœื™ืš ืœื”ืขืชื™ืง ืืช ื”ืงื•ื‘ืฅ kubectl-x ืœื›ืœ ืกืคืจื™ื™ื” ื‘-PATH ืฉืœืš ื•ืœื”ืคื•ืš ืื•ืชื” ืœื ื™ืชื ืช ืœื”ืคืขืœื”, ืœืžืฉืœ ืขื chmod +x. ืžื™ื“ ืื—ืจื™ ื–ื” ืืชื” ื™ื›ื•ืœ ืœื”ืชืงืฉืจ ืขื ื”ืชื•ืกืฃ kubectl x.

ืืชื” ื™ื›ื•ืœ ืœื”ืฉืชืžืฉ ื‘ืคืงื•ื“ื” ื”ื‘ืื” ื›ื“ื™ ืœืจืฉื•ื ืืช ื›ืœ ื”ืชื•ืกืคื™ื ื”ืžื•ืชืงื ื™ื ื›ืขืช ื‘ืžืขืจื›ืช ืฉืœืš:

$ kubectl plugin list

ืคืงื•ื“ื” ื–ื• ืชืฆื™ื’ ื’ื ืื–ื”ืจื•ืช ืื ื™ืฉ ืœืš ืžืกืคืจ ืชื•ืกืคื™ื ืขื ืื•ืชื• ืฉื, ืื• ืื ื™ืฉ ืงื•ื‘ืฅ ืชื•ืกืคื™ื ืฉืื™ื ื• ื‘ืจ ื”ืคืขืœื”.

ืื™ืชื•ืจ ื•ื”ืชืงื ื” ืฉืœ ืชื•ืกืคื™ื ื‘ืืžืฆืขื•ืช Krew

ื ื™ืชืŸ ืœืฉืชืฃ ืชื•ืกืคื™ื ืฉืœ Kubectl ืื• ืœืขืฉื•ืช ื‘ื”ื ืฉื™ืžื•ืฉ ื—ื•ื–ืจ ื›ืžื• ื—ื‘ื™ืœื•ืช ืชื•ื›ื ื”. ืื‘ืœ ืื™ืคื” ืืชื” ื™ื›ื•ืœ ืœืžืฆื•ื ืชื•ืกืคื™ื ืฉืื—ืจื™ื ืฉื™ืชืคื•?

ืคืจื•ื™ืงื˜ ืงืจื• ืฉื•ืืคืช ืœืกืคืง ืคืชืจื•ืŸ ืžืื•ื—ื“ ืœืฉื™ืชื•ืฃ, ื—ื™ืคื•ืฉ, ื”ืชืงื ื” ื•ื ื™ื”ื•ืœ ืฉืœ ืชื•ืกืคื™ kubectl. ื”ืคืจื•ื™ืงื˜ ืžื›ื ื” ืืช ืขืฆืžื• "ืžื ื”ืœ ื—ื‘ื™ืœื•ืช ืขื‘ื•ืจ ืชื•ืกืคื™ื ืฉืœ kubectl" (Krew ื“ื•ืžื” ืœ ืœึฐื”ึดืชึฐื‘ึผึทืฉืึตืœ).

Krew ื”ื™ื ืจืฉื™ืžื” ืฉืœ ืชื•ืกืคื™ื ืฉืœ kubectl ืฉืืชื” ื™ื›ื•ืœ ืœื‘ื—ื•ืจ ื•ืœื”ืชืงื™ืŸ. ื‘ืžืงื‘ื™ืœ, Krew ื”ื•ื ื’ื ืชื•ืกืฃ ืœ-kubectl.

ื”ืžืฉืžืขื•ืช ื”ื™ื ืฉื”ืชืงื ืช Krew ืขื•ื‘ื“ืช ื‘ืขืฆื ื›ืžื• ื”ืชืงื ืช ื›ืœ ืชื•ืกืฃ kubectl ืื—ืจ. ืชื•ื›ืœ ืœืžืฆื•ื ื”ื ื—ื™ื•ืช ืžืคื•ืจื˜ื•ืช ื‘ื›ืชื•ื‘ืช ืขืžื•ื“ GitHub.

ื”ืคืงื•ื“ื•ืช ื”ื—ืฉื•ื‘ื•ืช ื‘ื™ื•ืชืจ ืฉืœ Krew ื”ืŸ:

# ะŸะพะธัะบ ะฒ ัะฟะธัะบะต ะฟะปะฐะณะธะฝะพะฒ
$ kubectl krew search [<query>]
# ะŸะพัะผะพั‚ั€ะตั‚ัŒ ะธะฝั„ะพั€ะผะฐั†ะธัŽ ะพ ะฟะปะฐะณะธะฝะต
$ kubectl krew info <plugin>
# ะฃัั‚ะฐะฝะพะฒะธั‚ัŒ ะฟะปะฐะณะธะฝ
$ kubectl krew install <plugin>
# ะžะฑะฝะพะฒะธั‚ัŒ ะฒัะต ะฟะปะฐะณะธะฝั‹ ะดะพ ะฟะพัะปะตะดะฝะตะน ะฒะตั€ัะธะธ
$ kubectl krew upgrade
# ะŸะพัะผะพั‚ั€ะตั‚ัŒ ะฒัะต ะฟะปะฐะณะธะฝั‹, ัƒัั‚ะฐะฝะพะฒะปะตะฝะฝั‹ะต ั‡ะตั€ะตะท Krew
$ kubectl krew list
# ะ”ะตะธะฝัั‚ะฐะปะปะธั€ะพะฒะฐั‚ัŒ ะฟะปะฐะณะธะฝ
$ kubectl krew remove <plugin>

ืฉื™ืžื• ืœื‘ ืฉื”ืชืงื ืช ืชื•ืกืคื™ื ื‘ืืžืฆืขื•ืช Krew ืื™ื ื” ืžืคืจื™ืขื” ืœื”ืชืงื ืช ืชื•ืกืคื™ื ื‘ืฉื™ื˜ื” ื”ืกื˜ื ื“ืจื˜ื™ืช ื”ืžืชื•ืืจืช ืœืขื™ืœ.

ืฉื™ืžื• ืœื‘ ืฉื”ืคืงื•ื“ื” kubectl krew list ืžืฆื™ื’ ืจืง ืชื•ืกืคื™ื ืฉื”ื•ืชืงื ื• ื‘ืืžืฆืขื•ืช Krew, ื•ืื™ืœื• ื”ืคืงื•ื“ื” kubectl plugin list ืžืคืจื˜ ืืช ื›ืœ ื”ืชื•ืกืคื™ื, ื›ืœื•ืžืจ ืืœื” ืฉื”ื•ืชืงื ื• ื‘ืืžืฆืขื•ืช Krew ื•ืืœื” ืฉื”ื•ืชืงื ื• ื‘ืฉื™ื˜ื•ืช ืื—ืจื•ืช.

ืžืฆื™ืืช ืชื•ืกืคื™ื ื‘ืžืงื•ื ืื—ืจ

Krew ื”ื•ื ืคืจื•ื™ืงื˜ ืฆืขื™ืจ, ืฉื ืžืฆื ื›ืจื’ืข ื‘ื• ื”ืจืฉื™ืžื” ืจืง ื›-30 ืชื•ืกืคื™ื. ืื ืื™ื ืš ืžื•ืฆื ืืช ืžื” ืฉืืชื” ืฆืจื™ืš, ืชื•ื›ืœ ืœืžืฆื•ื ืชื•ืกืคื™ื ื‘ืžืงื•ื ืื—ืจ, ื›ื’ื•ืŸ GitHub.

ืื ื™ ืžืžืœื™ืฅ ืœื”ืกืชื›ืœ ื‘ืงื˜ืข GitHub kubectl-plugins. ืฉื ืชืžืฆืื• ืขืฉืจื•ืช ืชื•ืกืคื™ื ื–ืžื™ื ื™ื ืฉืฉื•ื•ื” ืœื‘ื“ื•ืง.

ื›ืชื™ื‘ืช ืชื•ืกืคื™ื ืžืฉืœืš

ืืชื” ื™ื›ื•ืœ ื‘ืขืฆืžืš ืœื™ืฆื•ืจ ืชื•ืกืคื™ื - ื–ื” ืœื ืงืฉื”. ืืชื” ืฆืจื™ืš ืœื™ืฆื•ืจ ืงื•ื‘ืฅ ื”ืคืขืœื” ืฉืขื•ืฉื” ืืช ืžื” ืฉืืชื” ืฆืจื™ืš, ืฉื ื–ื” ื›ืžื• kubectl-x ื•ืœื”ืชืงื™ืŸ ื›ืžืชื•ืืจ ืœืขื™ืœ.

ื”ืงื•ื‘ืฅ ื™ื›ื•ืœ ืœื”ื™ื•ืช ืกืงืจื™ืคื˜ bash, ืกืงืจื™ืคื˜ python, ืื• ื™ื™ืฉื•ื GO ื”ื™ื“ื•ืจ - ื–ื” ืœื ืžืฉื ื”. ื”ืชื ืื™ ื”ื™ื—ื™ื“ ื”ื•ื ืฉื ื™ืชืŸ ืœื”ืคืขื™ืœ ืื•ืชื• ื™ืฉื™ืจื•ืช ื‘ืžืขืจื›ืช ื”ื”ืคืขืœื”.

ื‘ื•ื ื ื™ืฆื•ืจ ืชื•ืกืฃ ืœื“ื•ื’ืžื” ืขื›ืฉื™ื•. ื‘ืกืขื™ืฃ ื”ืงื•ื“ื, ื”ืฉืชืžืฉืช ื‘ืคืงื•ื“ื” kubectl ื›ื“ื™ ืœืจืฉื•ื ืืช ื”ืžื™ื›ืœื™ื ืขื‘ื•ืจ ื›ืœ ืชืจืžื™ืœ. ืงืœ ืœื”ืคื•ืš ืืช ื”ืคืงื•ื“ื” ื”ื–ื• ืœืคืœืื’ื™ืŸ ืฉืืคืฉืจ ืœื”ืชืงืฉืจ ืืœื™ื• ืขื ืœืžืฉืœ. kubectl img.

ืฆื•ืจ ืงื•ื‘ืฅ kubectl-img ื”ืชื•ื›ืŸ ื”ื‘ื:

#!/bin/bash
kubectl get pods -o custom-columns='NAME:metadata.name,IMAGES:spec.containers[*].image'

ื›ืขืช ื”ืคื•ืš ืืช ื”ืงื•ื‘ืฅ ืœื ื™ืชืŸ ืœื”ืคืขืœื” ืขื chmod +x kubectl-img ื•ื”ืขื‘ืจ ืื•ืชื• ืœื›ืœ ืกืคืจื™ื™ื” ื‘-PATH ืฉืœืš. ืžื™ื“ ืœืื—ืจ ืžื›ืŸ ืชื•ื›ืœ ืœื”ืฉืชืžืฉ ื‘ืชื•ืกืฃ kubectl img.

ื›ืืžื•ืจ, ืชื•ืกืคื™ kubectl ื™ื›ื•ืœื™ื ืœื”ื™ื›ืชื‘ ื‘ื›ืœ ืฉืคืช ืชื›ื ื•ืช ืื• ืกืงืจื™ืคื˜ื™ื. ืื ืืชื” ืžืฉืชืžืฉ ื‘ืกืงืจื™ืคื˜ื™ื ืฉืœ ืžืขื˜ืคืช, ื”ื™ืชืจื•ืŸ ืฉืœ ื”ื™ื›ื•ืœืช ืœื”ืชืงืฉืจ ื‘ืงืœื•ืช ืœ-kubectl ืžืชื•ืš ื”ืชื•ืกืฃ. ืขื ื–ืืช, ืืชื” ื™ื›ื•ืœ ืœื›ืชื•ื‘ ืชื•ืกืคื™ื ืžื•ืจื›ื‘ื™ื ื™ื•ืชืจ ื‘ืฉืคื•ืช ืชื›ื ื•ืช ืืžื™ืชื™ื•ืช ื‘ืืžืฆืขื•ืช ืกืคืจื™ื™ืช ืœืงื•ื—ื•ืช Kubernetes. ืื ืืชื” ืžืฉืชืžืฉ ื‘-Go, ืืชื” ื™ื›ื•ืœ ื’ื ืœื”ืฉืชืžืฉ ืกืคืจื™ื™ืช ื–ืžืŸ ืจื™ืฆื” ืฉืœ cli, ืฉืงื™ื™ื ื‘ืžื™ื•ื—ื“ ืœื›ืชื™ื‘ืช ืชื•ืกืคื™ื ืฉืœ kubectl.

ื›ื™ืฆื“ ืœืฉืชืฃ ืืช ื”ืชื•ืกืคื™ื ืฉืœืš

ืื ืืชื” ื—ื•ืฉื‘ ืฉื”ืชื•ืกืคื™ื ืฉืœืš ื™ื›ื•ืœื™ื ืœื”ื™ื•ืช ืฉื™ืžื•ืฉื™ื™ื ืœืื—ืจื™ื, ืืœ ืชื”ืกืก ืœืฉืชืฃ ืื•ืชื ื‘-GitHub. ื”ืงืคื“ ืœื”ื•ืกื™ืฃ ืื•ืชื ืœื ื•ืฉื kubectl-plugins.

ืืชื” ื™ื›ื•ืœ ื’ื ืœื‘ืงืฉ ืœื”ื•ืกื™ืฃ ืืช ื”ืชื•ืกืฃ ืฉืœืš ืจืฉื™ืžืช ืงืจื•. ื”ื•ืจืื•ืช ื›ื™ืฆื“ ืœืขืฉื•ืช ื–ืืช ื ืžืฆืื•ืช ืžืื’ืจื™ GitHub.

ื”ืฉืœืžืช ืคืงื•ื“ื”

ืชื•ืกืคื™ื ืื™ื ื ืชื•ืžื›ื™ื ื›ืขืช ื‘ื”ืฉืœืžื” ืื•ื˜ื•ืžื˜ื™ืช. ื›ืœื•ืžืจ, ื™ืฉ ืœื”ื–ื™ืŸ ืืช ื”ืฉื ื”ืžืœื ืฉืœ ื”ืชื•ืกืฃ ื•ืืช ื”ืฉืžื•ืช ื”ืžืœืื™ื ืฉืœ ื”ืืจื’ื•ืžื ื˜ื™ื.

ืœืžืื’ืจ GitHub kubectl ืขื‘ื•ืจ ืคื•ื ืงืฆื™ื” ื–ื• ื™ืฉ ื‘ืงืฉื” ืคืชื•ื—ื”. ืื– ื™ืชื›ืŸ ืฉื”ืชื›ื•ื ื” ื”ื–ื• ืชื™ื•ืฉื ืžืชื™ืฉื”ื• ื‘ืขืชื™ื“.

ื‘ื”ืฆืœื—ื”!!!

ืžื” ืขื•ื“ ืœืงืจื•ื ื‘ื ื•ืฉื:

  1. ืฉืœื•ืฉ ืจืžื•ืช ืฉืœ ืงื ื” ืžื™ื“ื” ืื•ื˜ื•ืžื˜ื™ ื‘-Kubernetes ื•ื›ื™ืฆื“ ืœื”ืฉืชืžืฉ ื‘ื”ืŸ ื‘ื™ืขื™ืœื•ืช.
  2. Kubernetes ื‘ืจื•ื— ื”ืคื™ืจืื˜ื™ื•ืช ืขื ืชื‘ื ื™ืช ืœื™ื™ืฉื•ื.
  3. ื”ืขืจื•ืฅ ืฉืœื ื• Around Kubernetes ื‘ื˜ืœื’ืจื.

ืžืงื•ืจ: www.habr.com

ื”ื•ืกืคืช ืชื’ื•ื‘ื”