kubectl рдЕрдзрд┐рдХ рдкреНрд░рднрд╛рд╡реАрдкрдгреЗ рдХрд╕реЗ рд╡рд╛рдкрд░рд╛рд╡реЗ: рддрдкрд╢реАрд▓рд╡рд╛рд░ рдорд╛рд░реНрдЧрджрд░реНрд╢рдХ

kubectl рдЕрдзрд┐рдХ рдкреНрд░рднрд╛рд╡реАрдкрдгреЗ рдХрд╕реЗ рд╡рд╛рдкрд░рд╛рд╡реЗ: рддрдкрд╢реАрд▓рд╡рд╛рд░ рдорд╛рд░реНрдЧрджрд░реНрд╢рдХ
рдЬрд░ рддреБрдореНрд╣реА Kubernetes рд╕рд╣ рдХрд╛рдо рдХрд░рдд рдЕрд╕рд╛рд▓, рддрд░ kubectl рд╣реА рдХрджрд╛рдЪрд┐рдд рддреБрдореНрд╣реА рд╕рд░реНрд╡рд╛рдд рдЬрд╛рд╕реНрдд рд╡рд╛рдкрд░рдд рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рдпреБрдЯрд┐рд▓рд┐рдЯреАрдВрдкреИрдХреА рдПрдХ рдЖрд╣реЗ. рдЖрдгрд┐ рдЬреЗрд╡реНрд╣рд╛ рддреБрдореНрд╣реА рдПрдЦрд╛рджреНрдпрд╛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рд╛рдзрдирд╛рд╕рд╣ рдХрд╛рдо рдХрд░рддрд╛рдирд╛ рдмрд░рд╛рдЪ рд╡реЗрд│ рдШрд╛рд▓рд╡рддрд╛, рддреЗрд╡реНрд╣рд╛ рддреНрдпрд╛рдЪрд╛ рдЪрд╛рдВрдЧрд▓рд╛ рдЕрднреНрдпрд╛рд╕ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЖрдгрд┐ рддреЗ рдкреНрд░рднрд╛рд╡реАрдкрдгреЗ рдХрд╕реЗ рд╡рд╛рдкрд░рд╛рд╡реЗ рд╣реЗ рд╢рд┐рдХрдгреНрдпрд╛рд╕рд╛рдареА рддреЗ рдкреИрд╕реЗ рджреЗрддреЗ.

рд╕рдВрдШ Mail.ru рд╡рд░реВрди Kubernetes aaS рдбреЕрдирд┐рдпрд▓ рд╡реЗрдЗрдмреЗрд▓рдЪреНрдпрд╛ рд▓реЗрдЦрд╛рдЪрд╛ рдЕрдиреБрд╡рд╛рдж рдХреЗрд▓рд╛ рдЖрд╣реЗ рдЬреНрдпрд╛рдордзреНрдпреЗ рддреБрдореНрд╣рд╛рд▓рд╛ kubectl рд╕рд╣ рдкреНрд░рднрд╛рд╡реАрдкрдгреЗ рдХрд╛рдо рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЯрд┐рдкрд╛ рдЖрдгрд┐ рдпреБрдХреНрддреНрдпрд╛ рд╕рд╛рдкрдбрддреАрд▓. рд╣реЗ рддреБрдореНрд╣рд╛рд▓рд╛ рдХреБрдмрд░реНрдиреЗрдЯреНрд╕рдЪреА рд╕рдЦреЛрд▓ рдорд╛рд╣рд┐рддреА рдорд┐рд│рд╡рд┐рдгреНрдпрд╛рдд рджреЗрдЦреАрд▓ рдорджрдд рдХрд░реЗрд▓.

рд▓реЗрдЦрдХрд╛рдЪреНрдпрд╛ рдорддреЗ, рд▓реЗрдЦрд╛рдЪреЗ рдЙрджреНрджрд┐рд╖реНрдЯ рд╣реЗ рдЖрд╣реЗ рдХреА рдХреБрдмрд░рдиреЗрдЯрд╕рд╣ рддреБрдордЪреЗ рджреИрдирдВрджрд┐рди рдХрд╛рд░реНрдп рдХреЗрд╡рд│ рдЕрдзрд┐рдХ рдХрд╛рд░реНрдпрдХреНрд╖рдордЪ рдирд╛рд╣реА рддрд░ рдЕрдзрд┐рдХ рдЖрдирдВрджрджрд╛рдпрдХ рджреЗрдЦреАрд▓ рдЖрд╣реЗ!

рдкрд░рд┐рдЪрдп: kubectl рдореНрд╣рдгрдЬреЗ рдХрд╛рдп

рддреБрдореНрд╣реА kubectl рдЕрдзрд┐рдХ рдкреНрд░рднрд╛рд╡реАрдкрдгреЗ рд╡рд╛рдкрд░рдгреНрдпрд╛рд╕ рд╢рд┐рдХрдгреНрдпрд╛рдкреВрд░реНрд╡реА, рддреБрдореНрд╣рд╛рд▓рд╛ рддреЗ рдХрд╛рдп рдЖрд╣реЗ рдЖрдгрд┐ рддреЗ рдХрд╕реЗ рдХрд╛рд░реНрдп рдХрд░рддреЗ рдпрд╛рдЪреА рдореВрд▓рднреВрдд рдорд╛рд╣рд┐рддреА рдорд┐рд│рд╡рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ.

рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдЪреНрдпрд╛ рджреГрд╖реНрдЯреАрдХреЛрдирд╛рддреВрди, kubectl рд╣реЗ рдПрдХ рдирд┐рдпрдВрддреНрд░рдг рдкреЕрдиреЗрд▓ рдЖрд╣реЗ рдЬреЗ рддреБрдореНрд╣рд╛рд▓рд╛ Kubernetes рдСрдкрд░реЗрд╢рдиреНрд╕ рдХрд░рдгреНрдпрд╛рд╕ рдЕрдиреБрдорддреА рджреЗрддреЗ.

рддрд╛рдВрддреНрд░рд┐рдХрджреГрд╖реНрдЯреНрдпрд╛, kubectl рдПрдХ Kubernetes API рдХреНрд▓рд╛рдпрдВрдЯ рдЖрд╣реЗ.

Kubernetes API рдПрдХ HTTP REST API рдЖрд╣реЗ. рд╣рд╛ API рдЦрд░рд╛ Kubernetes рд╡рд╛рдкрд░рдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлреЗрд╕ рдЖрд╣реЗ, рдЬреНрдпрд╛рджреНрд╡рд╛рд░реЗ рддреЛ рдкреВрд░реНрдгрдкрдгреЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХреЗрд▓рд╛ рдЬрд╛рддреЛ. рдпрд╛рдЪрд╛ рдЕрд░реНрде рдЕрд╕рд╛ рдХреА рдкреНрд░рддреНрдпреЗрдХ Kubernetes рдСрдкрд░реЗрд╢рди API рдПрдВрдбрдкреЙрдЗрдВрдЯ рдореНрд╣рдгреВрди рдЙрдШрдб рдХреЗрд▓реЗ рдЬрд╛рддреЗ рдЖрдгрд┐ рддреНрдпрд╛ рдПрдВрдбрдкреЙрдЗрдВрдЯрд▓рд╛ HTTP рд╡рд┐рдирдВрддреАрд╕рд╣ рдХреЗрд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ.

рдореНрд╣рдгреВрди, kubectl рдЪреЗ рдореБрдЦреНрдп рдХрд╛рдо Kubernetes API рд▓рд╛ HTTP рд╡рд┐рдирдВрддреНрдпрд╛ рдХрд░рдгреЗ рдЖрд╣реЗ:

kubectl рдЕрдзрд┐рдХ рдкреНрд░рднрд╛рд╡реАрдкрдгреЗ рдХрд╕реЗ рд╡рд╛рдкрд░рд╛рд╡реЗ: рддрдкрд╢реАрд▓рд╡рд╛рд░ рдорд╛рд░реНрдЧрджрд░реНрд╢рдХ
Kubernetes рдПрдХ рдкреВрд░реНрдгрдкрдгреЗ рд╕рдВрд╕рд╛рдзрди-рджреЗрдгрд╛рд░рдВ рдкреНрд░рдгрд╛рд▓реА рдЖрд╣реЗ. рдпрд╛рдЪрд╛ рдЕрд░реНрде рддреЗ рд╕рдВрд╕рд╛рдзрдирд╛рдВрдЪреА рдЕрдВрддрд░реНрдЧрдд рд╕реНрдерд┐рддреА рд░рд╛рдЦрддреЗ рдЖрдгрд┐ рд╕рд░реНрд╡ рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдСрдкрд░реЗрд╢рдиреНрд╕ CRUD рдСрдкрд░реЗрд╢рдиреНрд╕ рдЖрд╣реЗрдд.

рд╣реА рд╕рдВрд╕рд╛рдзрдиреЗ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрд┐рдд рдХрд░реВрди рддреБрдореНрд╣реА рдХреБрдмрд░реНрдиреЗрдЯреНрд╕рдЪреНрдпрд╛ рдкреВрд░реНрдг рдирд┐рдпрдВрддреНрд░рдгрд╛рдд рдЖрд╣рд╛рдд рдЖрдгрд┐ рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рд╕рдВрд╕рд╛рдзрдирд╛рдВрдЪреНрдпрд╛ рд╕рдзреНрдпрд╛рдЪреНрдпрд╛ рд╕реНрдерд┐рддреАрдЪреНрдпрд╛ рдЖрдзрд╛рд░рд╛рд╡рд░ рдХрд╛рдп рдХрд░рд╛рд╡реЗ рд╣реЗ рд╢реЛрдзреВрди рдХрд╛рдврддрд╛рдд. рдпрд╛ рдХрд╛рд░рдгрд╛рд╕реНрддрд╡, Kubernetes API рд╕рдВрджрд░реНрдн рддреНрдпрд╛рдВрдЪреНрдпрд╛ рд╕рдВрдмрдВрдзрд┐рдд рдСрдкрд░реЗрд╢рдиреНрд╕рд╕рд╣ рд╕рдВрд╕рд╛рдзрди рдкреНрд░рдХрд╛рд░рд╛рдВрдЪреА рд╕реВрдЪреА рдореНрд╣рдгреВрди рдЖрдпреЛрдЬрд┐рдд рдХреЗрд▓рд╛ рдЖрд╣реЗ.

рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкрд╛рд╣реВ.

рд╕рдордЬрд╛ рддреБрдореНрд╣рд╛рд▓рд╛ ReplicaSet рд╕рдВрд╕рд╛рдзрди рддрдпрд╛рд░ рдХрд░рд╛рдпрдЪреЗ рдЖрд╣реЗ. рд╣реЗ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рддреБрдореНрд╣реА рдирд╛рд╡рд╛рдиреЗ рдлрд╛рдЗрд▓рдордзреНрдпреЗ ReplicaSet рдЪреЗ рд╡рд░реНрдгрди рдХрд░рд╛ replicaset.yaml, рдирдВрддрд░ рдХрдорд╛рдВрдб рдЪрд╛рд▓рд╡рд╛:

$ kubectl create -f replicaset.yaml

рд╣реЗ рдПрдХ ReplicaSet рд╕рдВрд╕рд╛рдзрди рддрдпрд╛рд░ рдХрд░реЗрд▓. рдкрдг рдкрдбрджреНрдпрд╛рдорд╛рдЧреЗ рдХрд╛рдп рд╣реЛрддреЗ?

Kubernetes рдХрдбреЗ ReplicaSet рдирд┐рд░реНрдорд┐рддреА рдСрдкрд░реЗрд╢рди рдЖрд╣реЗ. рдЗрддрд░ рдХреЛрдгрддреНрдпрд╛рд╣реА рдСрдкрд░реЗрд╢рдирдкреНрд░рдорд╛рдгреЗ, рд╣реЗ API рдПрдВрдбрдкреЙрдЗрдВрдЯ рдореНрд╣рдгреВрди рдЙрдШрдб рдЖрд╣реЗ. рдпрд╛ рдСрдкрд░реЗрд╢рдирд╕рд╛рдареА рд╡рд┐рд╢рд┐рд╖реНрдЯ API рдПрдВрдбрдкреЙрдЗрдВрдЯ рдЕрд╕реЗ рджрд┐рд╕рддреЗ:

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

рд╕рд░реНрд╡ Kubernetes рдСрдкрд░реЗрд╢рдиреНрд╕рд╕рд╛рдареА API рдПрдВрдбрдкреЙрдЗрдВрдЯ рдпреЗрдереЗ рдЖрдврд│реВ рд╢рдХрддрд╛рдд API рд╕рдВрджрд░реНрдн (рдпрд╛рд╕рд╣ рд╡рд░реАрд▓ рдЕрдВрддрд┐рдо рдмрд┐рдВрджреВ). рдПрдВрдбрдкреЙрдИрдВрдЯрд▓рд╛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╡рд┐рдирдВрддреА рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рддреБрдореНрд╣реА рдкреНрд░рдердо API рд╕рдВрджрд░реНрднрд╛рдордзреНрдпреЗ рд╕реВрдЪреАрдмрджреНрдз рдХреЗрд▓реЗрд▓реНрдпрд╛ рдПрдВрдбрдкреЙрдЗрдВрдЯ рдкрд╛рдердордзреНрдпреЗ API рд╕рд░реНрд╡реНрд╣рд░ URL рдЬреЛрдбрдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ.

рдореНрд╣рдгреВрди, рдЬреЗрд╡реНрд╣рд╛ рддреБрдореНрд╣реА рд╡рд░реАрд▓ рдХрдорд╛рдВрдб рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░рддрд╛, рддреЗрд╡реНрд╣рд╛ kubectl рд╡рд░реАрд▓ API рдПрдВрдбрдкреЙрдЗрдВрдЯрд▓рд╛ HTTP POST рд╡рд┐рдирдВрддреА рдкрд╛рдард╡рддреЗ. рддреБрдореНрд╣реА рдлрд╛рдЗрд▓рдордзреНрдпреЗ рджрд┐рд▓реЗрд▓реА ReplicaSet рд╡реНрдпрд╛рдЦреНрдпрд╛ replicaset.yaml, рд╡рд┐рдирдВрддреАрдЪреНрдпрд╛ рдореБрдЦреНрдп рднрд╛рдЧрд╛рдордзреНрдпреЗ рдкрд╛рдард╡рд▓реЗ рдЬрд╛рддреЗ.

рдХреБрдмреЗрд░рдиреЗрдЯ рдХреНрд▓рд╕реНрдЯрд░рд╢реА рд╕рдВрд╡рд╛рдж рд╕рд╛рдзрдгрд╛рд▒реНрдпрд╛ рд╕рд░реНрд╡ рдХрдорд╛рдВрдбрд╕рд╛рдареА рдХреБрдмреЗрдХреНрдЯрд▓ рдЕрд╢рд╛ рдкреНрд░рдХрд╛рд░реЗ рдХрд╛рд░реНрдп рдХрд░рддреЗ. рдпрд╛ рд╕рд░реНрд╡ рдкреНрд░рдХрд░рдгрд╛рдВрдордзреНрдпреЗ, kubectl рдлрдХреНрдд рдпреЛрдЧреНрдп Kubernetes API рдПрдВрдбрдкреЙрдЗрдВрдЯреНрд╕рдирд╛ HTTP рд╡рд┐рдирдВрддреНрдпрд╛ рдХрд░рддреЗ.

рдХреГрдкрдпрд╛ рд▓рдХреНрд╖рд╛рдд рдШреНрдпрд╛ рдХреА рддреБрдореНрд╣реА рдпреБрдЯрд┐рд▓рд┐рдЯреА рд╡рд╛рдкрд░реВрди рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдкреВрд░реНрдгрдкрдгреЗ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрд┐рдд рдХрд░реВ рд╢рдХрддрд╛ рдЬрд╕реЗ рдХреА curlKubernetes API рд▓рд╛ рд╕реНрд╡рддрдГ HTTP рд╡рд┐рдирдВрддреНрдпрд╛ рдкрд╛рдард╡реВрди. Kubectl рдлрдХреНрдд рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ API рд╡рд╛рдкрд░рдгреЗ рд╕реЛрдкреЗ рдХрд░рддреЗ.

рдХреБрдмреЗрдХреНрдЯрд▓ рдореНрд╣рдгрдЬреЗ рдХрд╛рдп рдЖрдгрд┐ рддреЗ рдХрд╕реЗ рдХрд╛рд░реНрдп рдХрд░рддреЗ рдпрд╛рдЪреА рд╣реА рдореВрд▓рднреВрдд рдорд╛рд╣рд┐рддреА рдЖрд╣реЗ. рдкрд░рдВрддреБ рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ API рдмрджреНрджрд▓ рдЖрдгрдЦреА рдПрдХ рдЧреЛрд╖реНрдЯ рдЖрд╣реЗ рдЬреА рдкреНрд░рддреНрдпреЗрдХ kubectl рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рд▓рд╛ рдорд╛рд╣рд┐рдд рдЕрд╕рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рдХреБрдмрд░реНрдиреЗрдЯреНрд╕рдЪреНрдпрд╛ рдЖрддреАрд▓ рдЬрдЧрд╛рдХрдбреЗ рдПрдХ рдЭрдЯрдХрди рдирдЬрд░ рдЯрд╛рдХреВрдпрд╛.

рдХреБрдмрд░реНрдиреЗрдЯреНрд╕рдЪреЗ рдЖрдВрддрд░рд┐рдХ рдЬрдЧ

рдХреБрдмрд░реНрдиреЗрдЯреНрд╕рдордзреНрдпреЗ рд╕реНрд╡рддрдВрддреНрд░ рдШрдЯрдХрд╛рдВрдЪрд╛ рд╕рдВрдЪ рдЕрд╕рддреЛ рдЬреЛ рдХреНрд▓рд╕реНрдЯрд░ рдиреЛрдбреНрд╕рд╡рд░ рд╕реНрд╡рддрдВрддреНрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореНрд╣рдгреВрди рдЪрд╛рд▓рддреЛ. рдХрд╛рд╣реА рдШрдЯрдХ рдорд╛рд╕реНрдЯрд░ рдиреЛрдбреНрд╕рд╡рд░ рдЪрд╛рд▓рддрд╛рдд, рдЗрддрд░ рд╡рд░реНрдХрд░ рдиреЛрдбреНрд╕рд╡рд░, рдкреНрд░рддреНрдпреЗрдХ рдШрдЯрдХ рд╕реНрд╡рддрдГрдЪреЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдп рдХрд░рдд рдЕрд╕рддреЛ.

рдореБрдЦреНрдп рдиреЛрдбреНрд╕рд╡рд░реАрд▓ рд╕рд░реНрд╡рд╛рдд рдорд╣рддреНрд╡рд╛рдЪреЗ рдШрдЯрдХ рдпреЗрдереЗ рдЖрд╣реЗрдд:

  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. рдЬреНрдпрд╛ рд╡рд░реНрдХрд░ рдиреЛрдбрд╡рд░ рдкреЙрдб рдирд┐рдпреБрдХреНрдд рдХреЗрд▓рд╛ рдЬрд╛рддреЛ, рдХреБрдмреЗрд▓реЗрдЯ рд▓рд╛рдБрдЪ рдХреЗрд▓рд╛ рдЬрд╛рддреЛ, рддреЛ рдпрд╛ рдиреЛрдбрд▓рд╛ рдирд┐рдпреБрдХреНрдд рдХреЗрд▓реЗрд▓реНрдпрд╛ рдкреЙрдбреНрд╕рдЪрд╛ рдорд╛рдЧреЛрд╡рд╛ рдШреЗрддреЛ:

    kubectl рдЕрдзрд┐рдХ рдкреНрд░рднрд╛рд╡реАрдкрдгреЗ рдХрд╕реЗ рд╡рд╛рдкрд░рд╛рд╡реЗ: рддрдкрд╢реАрд▓рд╡рд╛рд░ рдорд╛рд░реНрдЧрджрд░реНрд╢рдХ

  7. рдХреБрдмреЗрд▓реЗрдЯ рд╕реНрдЯреЛрд░реЗрдЬрдордзреВрди рдкреЙрдб рд╡реНрдпрд╛рдЦреНрдпрд╛ рд╡рд╛рдЪрддреЗ рдЖрдгрд┐ рдХрдВрдЯреЗрдирд░ рд░рдирдЯрд╛рдЗрдорд▓рд╛ рдирд┐рд░реНрджреЗрд╢ рджреЗрддреЗ, рдЬрд╕реЗ рдХреА рдбреЙрдХрд░, рдиреЛрдбрд╡рд░ рдХрдВрдЯреЗрдирд░ рд▓реЙрдиреНрдЪ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА:

    kubectl рдЕрдзрд┐рдХ рдкреНрд░рднрд╛рд╡реАрдкрдгреЗ рдХрд╕реЗ рд╡рд╛рдкрд░рд╛рд╡реЗ: рддрдкрд╢реАрд▓рд╡рд╛рд░ рдорд╛рд░реНрдЧрджрд░реНрд╢рдХ

рдЦрд╛рд▓реА рдпрд╛ рд╡рд░реНрдгрдирд╛рдЪреА рдордЬрдХреВрд░ рдЖрд╡реГрддреНрддреА рдЖрд╣реЗ.

ReplicaSet рдирд┐рд░реНрдорд┐рддреА рдПрдВрдбрдкреЙрдЗрдВрдЯрд▓рд╛ API рд╡рд┐рдирдВрддреА API рд╕рд░реНрд╡реНрд╣рд░рджреНрд╡рд╛рд░реЗ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗрд▓реА рдЬрд╛рддреЗ. API рд╕рд░реНрд╡реНрд╣рд░ рд╡рд┐рдирдВрддреАрдЪреЗ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХрд░рддреЛ рдЖрдгрд┐ ReplicaSet рд╕рдВрд╕рд╛рдзрди рдкрд░рд┐рднрд╛рд╖рд╛ рд╕реНрдЯреЛрд░реЗрдЬрдордзреНрдпреЗ рд╕рдВрдЧреНрд░рд╣рд┐рдд рдХрд░рддреЛ.

рд╣рд╛ рдХрд╛рд░реНрдпрдХреНрд░рдо ReplicaSet рдХрдВрдЯреНрд░реЛрд▓рд░ рд╕реБрд░реВ рдХрд░рддреЛ, рдЬреЛ рдХрдВрдЯреНрд░реЛрд▓рд░ рдореЕрдиреЗрдЬрд░рдЪреА рд╕рдмрдкреНрд░реЛрд╕реЗрд╕ рдЖрд╣реЗ. ReplicaSet рдХрдВрдЯреНрд░реЛрд▓рд░ рд╕реНрдЯреЛрдЕрд░рдордзреАрд▓ ReplicaSet рд╕рдВрд╕рд╛рдзрдиреЗ рддрдпрд╛рд░ рдХрд░рдгреЗ, рдЕрджреНрдпрддрдирд┐рдд рдХрд░рдгреЗ рдЖрдгрд┐ рд╣рдЯрд╡рдгреЗ рдпрд╛рд╡рд░ рд▓рдХреНрд╖ рдареЗрд╡рддреЛ рдЖрдгрд┐ рдЬреЗрд╡реНрд╣рд╛ рд╣реЗ рдШрдбрддреЗ рддреЗрд╡реНрд╣рд╛ рдЗрд╡реНрд╣реЗрдВрдЯ рд╕реВрдЪрдирд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ.

ReplicaSet рдХрдВрдЯреНрд░реЛрд▓рд░рдЪреЗ рдХрд╛рдо рд╣реЗ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдгреЗ рдЖрд╣реЗ рдХреА рдЖрд╡рд╢реНрдпрдХ рд╕рдВрдЦреНрдпреЗрдиреЗ ReplicaSet рдкреЙрдбреНрд╕ рдЕрд╕реНрддрд┐рддреНрд╡рд╛рдд рдЖрд╣реЗрдд. рдЖрдордЪреНрдпрд╛ рдЙрджрд╛рд╣рд░рдгрд╛рдордзреНрдпреЗ, рдЕрджреНрдпрд╛рдк рдХреЛрдгрддреЗрд╣реА рдкреЙрдбреНрд╕ рдЕрд╕реНрддрд┐рддреНрд╡рд╛рдд рдирд╛рд╣реАрдд, рдореНрд╣рдгреВрди ReplicaSet рдХрдВрдЯреНрд░реЛрд▓рд░ рдпрд╛ рдкреЙрдб рд╡реНрдпрд╛рдЦреНрдпрд╛ рддрдпрд╛рд░ рдХрд░рддреЛ (ReplicaSet рд╡реНрдпрд╛рдЦреНрдпреЗрддреАрд▓ рдкреЙрдб рдЯреЗрдореНрдкрд▓реЗрдЯрдиреБрд╕рд╛рд░) рдЖрдгрд┐ рддреНрдпрд╛рдВрдирд╛ рд╕реНрдЯреЛрд░реЗрдЬрдордзреНрдпреЗ рд╕рдВрдЧреНрд░рд╣рд┐рдд рдХрд░рддреЛ.

рдирд╡реАрди рдкреЙрдбреНрд╕рдЪреА рдирд┐рд░реНрдорд┐рддреА рд╢реЗрдбреНрдпреБрд▓рд░рджреНрд╡рд╛рд░реЗ рдХреЗрд▓реА рдЬрд╛рддреЗ рдЬреА рдкреЙрдб рд╡реНрдпрд╛рдЦреНрдпрд╛рдВрдЪрд╛ рдорд╛рдЧреЛрд╡рд╛ рдареЗрд╡рддреЗ рдЬреА рдЕрджреНрдпрд╛рдк рдХрд╛рдордЧрд╛рд░ рдиреЛрдбреНрд╕рд╕рд╛рдареА рд╢реЗрдбреНрдпреВрд▓ рдХреЗрд▓реЗрд▓реА рдирд╛рд╣реА. рд╢реЗрдбреНрдпреБрд▓рд░ рдкреНрд░рддреНрдпреЗрдХ рдкреЙрдбрд╕рд╛рдареА рдпреЛрдЧреНрдп рд╡рд░реНрдХрд░ рдиреЛрдб рдирд┐рд╡рдбрддреЛ рдЖрдгрд┐ рдкреЙрдбрдЪреНрдпрд╛ рд╡реНрдпрд╛рдЦреНрдпрд╛ рд░реЗрдкреЙрдЬрд┐рдЯрд░реАрдордзреНрдпреЗ рдЕрдкрдбреЗрдЯ рдХрд░рддреЛ.

рд▓рдХреНрд╖рд╛рдд рдШреНрдпрд╛ рдХреА рдпрд╛ рдмрд┐рдВрджреВрдкрд░реНрдпрдВрдд, рдХреНрд▓рд╕реНрдЯрд░рдордзреНрдпреЗ рдХреБрдареЗрд╣реА рд╡рд░реНрдХрд▓реЛрдб рдХреЛрдб рдЪрд╛рд▓реВ рдирд╡реНрд╣рддрд╛. рдЖрддрд╛рдкрд░реНрдпрдВрдд рдЬреЗ рдХрд╛рд╣реА рдХреЗрд▓реЗ рдЖрд╣реЗ - рд╣реЗ рдорд╛рд╕реНрдЯрд░ рдиреЛрдбрд╡рд░реАрд▓ рд░реЗрдкреЙрдЬрд┐рдЯрд░реАрдордзреНрдпреЗ рд╕рдВрд╕рд╛рдзрдиреЗ рддрдпрд╛рд░ рдХрд░рдгреЗ рдЖрдгрд┐ рдЕрджреНрдпрддрдирд┐рдд рдХрд░рдгреЗ рдЖрд╣реЗ.

рд╢реЗрд╡рдЯрдЪрд╛ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреБрдмреЗрд▓реЗрдЯреНрд╕ рдЯреНрд░рд┐рдЧрд░ рдХрд░рддреЛ, рдЬреЗ рддреНрдпрд╛рдВрдЪреНрдпрд╛ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдиреЛрдбреНрд╕рд╕рд╛рдареА рд╢реЗрдбреНрдпреВрд▓ рдХреЗрд▓реЗрд▓реНрдпрд╛ рдкреЙрдбреНрд╕рдЪреЗ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░рддрд╛рдд. рд╡рд░реНрдХрд░ рдиреЛрдбрдЪреЗ рдХреБрдмреЗрд▓реЗрдЯ рдЬреНрдпрд╛рд╡рд░ рддреБрдордЪреА ReplicaSet рдкреЙрдбреНрд╕ рдЗрдиреНрд╕реНрдЯреЙрд▓ рдХреЗрд▓реА рдЖрд╣реЗрдд рддреНрдпрд╛рдВрдиреА рдХрдВрдЯреЗрдирд░ рд░рдирдЯрд╛рдЗрдорд▓рд╛, рдЬрд╕реЗ рдХреА Docker рд▓рд╛ рдЖрд╡рд╢реНрдпрдХ рдХрдВрдЯреЗрдирд░ рдЗрдореЗрдЬ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЖрдгрд┐ рддреНрдпрд╛ рдЪрд╛рд▓рд╡рд╛рдпрд▓рд╛ рд╕рд╛рдВрдЧрдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ.

рдпрд╛ рдЯрдкреНрдкреНрдпрд╛рд╡рд░, рддреБрдордЪрд╛ ReplicaSet рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╢реЗрд╡рдЯреА рдЪрд╛рд▓реВ рдЖрд╣реЗ!

Kubernetes API рдЪреА рднреВрдорд┐рдХрд╛

рддреБрдореНрд╣реА рдорд╛рдЧреАрд▓ рдЙрджрд╛рд╣рд░рдгрд╛рдд рдкрд╛рд╣рд┐рд▓реНрдпрд╛рдкреНрд░рдорд╛рдгреЗ, Kubernetes рдШрдЯрдХ (API рд╕рд░реНрд╡реНрд╣рд░ рдЖрдгрд┐ рд╕реНрдЯреЛрд░реЗрдЬ рд╡рдЧрд│рддрд╛) рд╕реНрдЯреЛрд░реЗрдЬрдордзреАрд▓ рд░рд┐рд╕реЛрд░реНрд╕реЗрд╕рдордзреАрд▓ рдмрджрд▓рд╛рдВрд╡рд░ рд▓рдХреНрд╖ рдареЗрд╡рддрд╛рдд рдЖрдгрд┐ рд╕реНрдЯреЛрд░реЗрдЬрдордзреАрд▓ рд░рд┐рд╕реЛрд░реНрд╕реЗрд╕рдЪреА рдорд╛рд╣рд┐рддреА рдмрджрд▓рддрд╛рдд.

рдЕрд░реНрдерд╛рдд, рд╣реЗ рдШрдЯрдХ рд╕реНрдЯреЛрд░реЗрдЬрд╢реА рдереЗрдЯ рд╕рдВрд╡рд╛рдж рд╕рд╛рдзрдд рдирд╛рд╣реАрдд, рдкрд░рдВрддреБ рдХреЗрд╡рд│ рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ API рджреНрд╡рд╛рд░реЗ.

рдЦрд╛рд▓реАрд▓ рдЙрджрд╛рд╣рд░рдгреЗ рд╡рд┐рдЪрд╛рд░рд╛рдд рдШреНрдпрд╛:

  1. ReplicaSet рдХрдВрдЯреНрд░реЛрд▓рд░ API рдПрдВрдбрдкреЙрдЗрдВрдЯ рд╡рд╛рдкрд░рддреЛ рд╕реВрдЪреА рдкреНрд░рддрд┐рдХреГрддреА рдкреЕрд░рд╛рдореАрдЯрд░рд╕рд╣ watch ReplicaSet рд╕рдВрд╕рд╛рдзрдирд╛рдВрдордзреАрд▓ рдмрджрд▓рд╛рдВрдЪреЗ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА.
  2. ReplicaSet рдХрдВрдЯреНрд░реЛрд▓рд░ API рдПрдВрдбрдкреЙрдЗрдВрдЯ рд╡рд╛рдкрд░рддреЛ рдкреЙрдб рддрдпрд╛рд░ рдХрд░рд╛ (рдкреЙрдб рддрдпрд╛рд░ рдХрд░рд╛) рд╢реЗрдВрдЧрд╛ рддрдпрд╛рд░ рдХрд░рдгреЗ.
  3. рд╢реЗрдбреНрдпреБрд▓рд░ API рдПрдВрдбрдкреЙрдЗрдВрдЯ рд╡рд╛рдкрд░рддреЛ рдкреЕрдЪ рдкреЙрдб (рдкреЙрдб рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рд╛) рдирд┐рд╡рдбрд▓реЗрд▓реНрдпрд╛ рд╡рд░реНрдХрд░ рдиреЛрдбрдмрджреНрджрд▓ рдорд╛рд╣рд┐рддреАрд╕рд╣ рдкреЙрдбреНрд╕ рдЕрдкрдбреЗрдЯ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА.

рддреБрдореНрд╣реА рдмрдШреВ рд╢рдХрддрд╛, рд╣реЗ рд╕рдорд╛рди API рдЖрд╣реЗ рдЬреЗ kubectl рдНрдХреНрд╕реЗрд╕ рдХрд░рддреЗ. рдЕрдВрддрд░реНрдЧрдд рдШрдЯрдХ рдЖрдгрд┐ рдмрд╛рд╣реНрдп рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдВрд╕рд╛рдареА рд╕рдорд╛рди API рд╡рд╛рдкрд░рдгреЗ рд╣реА Kubernetes рдбрд┐рдЭрд╛рдЗрдирдордзреАрд▓ рдореВрд▓рднреВрдд рд╕рдВрдХрд▓реНрдкрдирд╛ рдЖрд╣реЗ.

рдЖрддрд╛ рдЖрдореНрд╣реА рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдХрд╕реЗ рдХрд╛рд░реНрдп рдХрд░рддреЛ рдпрд╛рдЪрд╛ рд╕рд╛рд░рд╛рдВрд╢ рджреЗрдК рд╢рдХрддреЛ:

  1. рд╕реНрдЯреЛрд░реЗрдЬ рд╕реНрдЯреЛрдЕрд░реНрд╕ рд╕рд╛рдВрдЧрддрд╛рдд, рдореНрд╣рдгрдЬреЗрдЪ рдХреБрдмрд░рдиреЗрдЯ рд╕рдВрд╕рд╛рдзрдиреЗ.
  2. API рд╕рд░реНрд╡реНрд╣рд░ рд╕реНрдЯреЛрд░реЗрдЬрд▓рд╛ Kubernetes API рдЪреНрдпрд╛ рд╕реНрд╡рд░реВрдкрд╛рдд рдЗрдВрдЯрд░рдлреЗрд╕ рдкреНрд░рджрд╛рди рдХрд░рддреЛ.
  3. рдЗрддрд░ рд╕рд░реНрд╡ Kubernetes рдШрдЯрдХ рдЖрдгрд┐ рд╡рд╛рдкрд░рдХрд░реНрддреЗ API рджреНрд╡рд╛рд░реЗ Kubernetes рд╕реНрдерд┐рддреА (рд╕рдВрд╕рд╛рдзрдиреЗ) рд╡рд╛рдЪрддрд╛рдд, рдирд┐рд░реАрдХреНрд╖рдг рдХрд░рддрд╛рдд рдЖрдгрд┐ рд╣рд╛рддрд╛рд│рддрд╛рдд.

рдпрд╛ рд╕рдВрдХрд▓реНрдкрдирд╛ рдЬрд╛рдгреВрди рдШреЗрддрд▓реНрдпрд╛рдиреЗ рддреБрдореНрд╣рд╛рд▓рд╛ kubectl рдЕрдзрд┐рдХ рдЪрд╛рдВрдЧрд▓реНрдпрд╛ рдкреНрд░рдХрд╛рд░реЗ рд╕рдордЬреВрди рдШреЗрдгреНрдпрд╛рдд рдЖрдгрд┐ рддреНрдпрд╛рддреВрди рдЬрд╛рд╕реНрддреАрдд рдЬрд╛рд╕реНрдд рдлрд╛рдпрджрд╛ рдорд┐рд│рд╡рдгреНрдпрд╛рдд рдорджрдд рд╣реЛрдИрд▓.

рдЖрддрд╛ рдХрд╛рд╣реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЯрд┐рдкреНрд╕ рдЖрдгрд┐ рдпреБрдХреНрддреНрдпрд╛ рдкрд╛рд╣реВ рдЬреНрдпрд╛ kubectl рд╕рд╣ рддреБрдордЪреА рдЙрддреНрдкрд╛рджрдХрддрд╛ рд╕реБрдзрд╛рд░рдгреНрдпрд╛рд╕ рдорджрдд рдХрд░рддреАрд▓.

1. рдХрдорд╛рдВрдб рдкреВрд░реНрдгрддрд╛ рд╡рд╛рдкрд░реВрди рдЗрдирдкреБрдЯрдЪреА рдЧрддреА рд╡рд╛рдврд╡рд╛

kubectl рд╕рд╣ рдХрд╛рд░реНрдпрдкреНрд░рджрд░реНрд╢рди рд╕реБрдзрд╛рд░рдгреНрдпрд╛рд╕рд╛рдареА рд╕рд░реНрд╡рд╛рдд рдЙрдкрдпреБрдХреНрдд, рдкрд░рдВрддреБ рдмрд░реНтАНрдпрд╛рдЪрджрд╛ рджреБрд░реНрд▓рдХреНрд╖рд┐рдд рдХреЗрд▓реЗрд▓реЗ рддрдВрддреНрд░ рдореНрд╣рдгрдЬреЗ рдХрдорд╛рдВрдб рдкреВрд░реНрдг рдХрд░рдгреЗ.

рдХрдорд╛рдВрдб рдХрдореНрдкреНрд▓реАрд╢рди рддреБрдореНрд╣рд╛рд▓рд╛ рдЯреЕрдм рдХреА рд╡рд╛рдкрд░реВрди kubectl рдХрдорд╛рдВрдбрдЪреЗ рднрд╛рдЧ рдЖрдкреЛрдЖрдк рдкреВрд░реНрдг рдХрд░реВ рджреЗрддреЗ. рд╣реЗ рдЙрдкрдХрдорд╛рдВрдб, рдкрд░реНрдпрд╛рдп рдЖрдгрд┐ рдЖрд░реНрдЧреНрдпреБрдореЗрдВрдЯреНрд╕рд╕рд╛рдареА рдХрд╛рд░реНрдп рдХрд░рддреЗ, рдЬреНрдпрд╛рдордзреНрдпреЗ рд╕рдВрд╕рд╛рдзрдирд╛рдВрдЪреНрдпрд╛ рдирд╛рд╡рд╛рдВрд╕рд╛рд░рдЦреНрдпрд╛ рдЬрдЯрд┐рд▓ рдЧреЛрд╖реНрдЯреАрдВрдЪрд╛ рд╕рдорд╛рд╡реЗрд╢ рдЖрд╣реЗ.

kubectl рдХрдорд╛рдВрдб рдкреВрд░реНрдг рдХрд░рдгреЗ рдХрд╕реЗ рдХрд╛рд░реНрдп рдХрд░рддреЗ рддреЗ рдкрд╣рд╛:

kubectl рдЕрдзрд┐рдХ рдкреНрд░рднрд╛рд╡реАрдкрдгреЗ рдХрд╕реЗ рд╡рд╛рдкрд░рд╛рд╡реЗ: рддрдкрд╢реАрд▓рд╡рд╛рд░ рдорд╛рд░реНрдЧрджрд░реНрд╢рдХ
Bash рдЖрдгрд┐ Zsh рд╢реЗрд▓рд╕рд╛рдареА рдХрдорд╛рдВрдб рдкреВрд░реНрдг рдХрд░рдгреЗ рдХрд╛рд░реНрдп рдХрд░рддреЗ.

рдЕрдзрд┐рдХреГрдд рдорд╛рд░реНрдЧрджрд░реНрд╢рдХ рд╕реНрд╡рдпрдВрдкреВрд░реНрдгрддрд╛ рд╕реЗрдЯ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рддрдкрд╢реАрд▓рд╡рд╛рд░ рд╕реВрдЪрдирд╛ рдЖрд╣реЗрдд, рдкрд░рдВрддреБ рдЦрд╛рд▓реА рдЖрдореНрд╣реА рдПрдХ рдЫреЛрдЯрд╛ рдЙрддрд╛рд░рд╛ рджреЗрдК.

рдХрдорд╛рдВрдб рдкреВрд░реНрдг рдХрд░рдгреЗ рдХрд╕реЗ рдХрд╛рд░реНрдп рдХрд░рддреЗ

рдХрдорд╛рдВрдб рдХрдореНрдкреНрд▓рд┐рд╢рди рд╣реЗ рдПрдХ рд╢реЗрд▓ рд╡реИрд╢рд┐рд╖реНрдЯреНрдп рдЖрд╣реЗ рдЬреЗ рдкреВрд░реНрдгрддреНрд╡ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╡рд╛рдкрд░реВрди рдХрд╛рд░реНрдп рдХрд░рддреЗ. рдПрдХреНрд╕реНрдЯреЗрдВрд╢рди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реА рд╢реЗрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЕрд╕рддреЗ рдЬреА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрдорд╛рдВрдбрд╕рд╛рдареА рдПрдХреНрд╕реНрдЯреЗрдВрд╢рдирдЪреЗ рд╡рд░реНрддрди рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ.

Kubectl рдЦрд╛рд▓реАрд▓ рдЖрджреЗрд╢рд╛рдВрдЪрд╛ рд╡рд╛рдкрд░ рдХрд░реВрди Bash рдЖрдгрд┐ Zsh рд╕рд╛рдареА рдПрдХреНрд╕реНрдЯреЗрдВрд╢рди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реНрд╡рдпрдВрдЪрд▓рд┐рддрдкрдгреЗ рд╡реНрдпреБрддреНрдкрдиреНрди рдХрд░рддреЗ рдЖрдгрд┐ рдЖрдЙрдЯрдкреБрдЯ рдХрд░рддреЗ:

$ kubectl completion bash

рдХрд┐рдВрд╡рд╛:

$ kubectl completion zsh

рд╕рд┐рджреНрдзрд╛рдВрддрд╛рдиреБрд╕рд╛рд░, рдпрд╛ рдЖрджреЗрд╢рд╛рдВрдЪреЗ рдЖрдЙрдЯрдкреБрдЯ рдпреЛрдЧреНрдп рдХрдорд╛рдВрдб рд╢реЗрд▓рд╢реА рдЬреЛрдбрдгреЗ рдкреБрд░реЗрд╕реЗ рдЖрд╣реЗ рдЬреЗрдгреЗрдХрд░реВрди kubectl рдХрдорд╛рдВрдбрд╕ рдкреВрд░рдХ рдард░реВ рд╢рдХреЗрд▓.

рд╡реНрдпрд╡рд╣рд╛рд░рд╛рдд, рдмреЕрд╢ (рд▓рд┐рдирдХреНрд╕ рдЖрдгрд┐ рдореЕрдХрдУрдПрд╕рдордзреАрд▓ рдлрд░рдХрд╛рдВрд╕рд╣) рдЖрдгрд┐ Zsh рд╕рд╛рдареА рдХрдиреЗрдХреНрд╢рди рдкрджреНрдзрдд рд╡реЗрдЧрд│реА рдЖрд╣реЗ. рдЖрдореНрд╣реА рдЦрд╛рд▓реА рд╣реЗ рд╕рд░реНрд╡ рдкрд░реНрдпрд╛рдп рдкрд╛рд╣реВ.

рд▓рд┐рдирдХреНрд╕ рд╡рд░ рдмреЕрд╢

рдмреЕрд╢ рдкреВрд░реНрдгрддрд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмреЕрд╢-рдХрдореНрдкреНрд▓рд┐рд╢рди рдкреЕрдХреЗрдЬрд╡рд░ рдЕрд╡рд▓рдВрдмреВрди рдЕрд╕рддреЗ, рдореНрд╣рдгреВрди рддреБрдореНрд╣рд╛рд▓рд╛ рддреЗ рдкреНрд░рдердо рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ:

$ sudo apt-get install bash-completion

рдХрд┐рдВрд╡рд╛:

$ yum install bash-completion

рдЦрд╛рд▓реАрд▓ рдЖрджреЗрд╢ рд╡рд╛рдкрд░реВрди рдкреЕрдХреЗрдЬ рдпрд╢рд╕реНрд╡реАрд░рд┐рддреНрдпрд╛ рд╕реНрдерд╛рдкрд┐рдд рдЭрд╛рд▓реЗ рдЖрд╣реЗ рдпрд╛рдЪреА рдЪрд╛рдЪрдгреА рдШреЗрдК рд╢рдХрддрд╛:

$ type _init_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-completion рдордзреНрдпреЗ рд╕реНрд╡рдпрдВрдЪрд▓рд┐рддрдкрдгреЗ рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдХреЗрд▓реЗ рдЬрд╛рддрд╛рдд.

рджреЛрдиреНрд╣реА рдкрд░реНрдпрд╛рдп рддрд┐рддрдХреЗрдЪ рд▓рд╛рдЧреВ рдЖрд╣реЗрдд.

рд╢реЗрд▓ рд░реАрд╕реНрдЯрд╛рд░реНрдЯ рдХреЗрд▓реНрдпрд╛рдирдВрддрд░, kubectl рдХрдорд╛рдВрдб рдкреВрд░реНрдг рдХрд░рдгреЗ рдХрд╛рд░реНрдп рдХрд░реЗрд▓.

MacOS рд╡рд░ рдмреЕрд╢

MacOS рд╡рд░ рд╕реЗрдЯрдЕрдк рдереЛрдбреЗ рдЕрдзрд┐рдХ рдХреНрд▓рд┐рд╖реНрдЯ рдЖрд╣реЗ. рд╡рд╕реНрддреБрд╕реНрдерд┐рддреА рдЕрд╢реА рдЖрд╣реЗ рдХреА рдбреАрдлреЙрд▓реНрдЯрдиреБрд╕рд╛рд░, MacOS Bash рдЖрд╡реГрддреНрддреА 3.2 рд╡рд╛рдкрд░рддреЗ рдЖрдгрд┐ kubectl рд╕реНрд╡рдпрдВрдкреВрд░реНрдг рд╕реНрдХреНрд░рд┐рдкреНрдЯрд╕рд╛рдареА рдХрд┐рдорд╛рди 4.1 рдЪреА Bash рдЖрд╡реГрддреНрддреА рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ рдЖрдгрд┐ Bash 3.2 рдордзреНрдпреЗ рдХрд╛рд░реНрдп рдХрд░рдд рдирд╛рд╣реА.

MacOS рд╡рд░ Bash рдЪреА рдЬреБрдиреА рдЖрд╡реГрддреНрддреА рд╡рд╛рдкрд░рдгреНрдпрд╛рд╢реА рд╕рдВрдмрдВрдзрд┐рдд рдкрд░рд╡рд╛рдирд╛ рд╕рдорд╕реНрдпрд╛ рдЖрд╣реЗрдд. Bash рдЖрд╡реГрддреНрддреА 4 GPLv3 рдЕрдВрддрд░реНрдЧрдд рдкрд░рд╡рд╛рдирд╛рдХреГрдд рдЖрд╣реЗ, рдЬреА Apple рджреНрд╡рд╛рд░реЗ рд╕рдорд░реНрдерд┐рдд рдирд╛рд╣реА.

MacOS рд╡рд░ kubectl рд╕реНрд╡рдпрдВрдкреВрд░реНрдгрддрд╛ рдХреЙрдиреНрдлрд┐рдЧрд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рддреБрдореНрд╣рд╛рд▓рд╛ Bash рдЪреА рдЕрдзрд┐рдХ рдЕрд▓реАрдХрдбреАрд▓ рдЖрд╡реГрддреНрддреА рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рддреБрдореНтАНрд╣реА рддреБрдордЪреНтАНрдпрд╛ рдбреАрдлреЙрд▓реНтАНрдЯ рд╢реЗрд▓ рдореНтАНрд╣рдгреВрди рдЕрдкрдбреЗрдЯ рдХреЗрд▓реЗрд▓реЗ рдмреЕрд╢ рджреЗрдЦреАрд▓ рд╕реЗрдЯ рдХрд░реВ рд╢рдХрддрд╛, рдЬреЗ рддреБрдореНтАНрд╣рд╛рд▓рд╛ рднрд╡рд┐рд╖реНтАНрдпрд╛рдд рдЕрдиреЗрдХ рд╕рдорд╕реНрдпрд╛рдВрдкрд╛рд╕реВрди рд╡рд╛рдЪрд╡реЗрд▓. рд╣реЗ рдЕрд╡рдШрдб рдирд╛рд╣реА, рддрдкрд╢реАрд▓ рд▓реЗрдЦрд╛рдд рджрд┐рд▓реЗрд▓рд╛ рдЖрд╣реЗ "MacOS рд╡рд░ рдмреЕрд╢ рдЕрдкрдбреЗрдЯ рдХрд░рдд рдЖрд╣реЗ┬╗.

рд╕реБрд░реВ рдареЗрд╡рдгреНрдпрд╛рдкреВрд░реНрд╡реА, рддреБрдореНрд╣реА рдмреЕрд╢рдЪреА рдЕрд▓реАрдХрдбреАрд▓ рдЖрд╡реГрддреНрддреА рд╡рд╛рдкрд░рдд рдЕрд╕рд▓реНрдпрд╛рдЪреА рдЦрд╛рддреНрд░реА рдХрд░рд╛ (рдЖрдЙрдЯрдкреБрдЯ рддрдкрд╛рд╕рд╛ bash --version).

рдмреЕрд╢ рдкреВрд░реНрдгрддреНрд╡рд╛рдЪреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреНрд░рдХрд▓реНрдкрд╛рдиреБрд╕рд╛рд░ рдмрджрд▓рддреЗ bash-рдкреВрд░реНрдгрддрд╛, рдореНрд╣рдгреВрди рдЖрдкрдг рдкреНрд░рдердо рддреЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ.

рд╡рд╛рдкрд░реВрди рддреБрдореНрд╣реА bash-completion рдЗрдиреНрд╕реНрдЯреЙрд▓ рдХрд░реВ рд╢рдХрддрд╛ рд╣реЛрдордмреНрд░реА:

$ brew install bash-completion@2

рддреЛ рдЖрд╣реЗ @2 bash-completion version 2 рдЪрд╛ рдЕрд░реНрде рдЖрд╣реЗ. kubectl autocompletion рд╕рд╛рдареА bash-completion v2 рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ рдЖрдгрд┐ bash-completion v2 рд▓рд╛ рдХрд┐рдорд╛рди Bash рдЖрд╡реГрддреНрддреА 4.1 рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ.

рдХрдорд╛рдВрдб рдЖрдЙрдЯрдкреБрдЯ brew-install рдПрдХ Caveats рд╡рд┐рднрд╛рдЧ рдЖрд╣реЗ, рдЬреЛ рдлрд╛рдЗрд▓рдордзреНрдпреЗ рдХрд╛рдп рдЬреЛрдбрдгреНрдпрд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЖрд╣реЗ рд╣реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЛ ~/.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 рдпрд╛ рдирд┐рд░реНрджреЗрд╢рд┐рдХреЗрддреАрд▓ рд╕рд░реНрд╡ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓реЛрдб рдХрд░рддреЗ.

рдЖрдкрдг рд╕реНрдерд╛рдкрд┐рдд рдХреЗрд▓реЗ рдЕрд╕рд▓реНрдпрд╛рд╕ рд╣реЛрдордмреНрд░реВ рд╡рд╛рдкрд░реВрди kubectl, рдирдВрддрд░ рдорд╛рдЧреАрд▓ рдЪрд░рдг рдкрд╛рд░ рдкрд╛рдбрдгреНрдпрд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╛рд╣реА, рдХрд╛рд░рдг рд╕реНрд╡рдпрдВрдкреВрд░реНрдг рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реНрд╡рдпрдВрдЪрд▓рд┐рддрдкрдгреЗ рдлреЛрд▓реНрдбрд░рдордзреНрдпреЗ рдареЗрд╡рд▓реА рдЬрд╛рдИрд▓ /usr/local/etc/bash_completion.d рд╕реНрдерд╛рдкрдирд╛ рджрд░рдореНрдпрд╛рди. рдпрд╛ рдкреНрд░рдХрд░рдгрд╛рдд, рддреБрдореНрд╣реА bash-completion рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рддрд╛рдЪ kubectl autocompletion рдХрд╛рд░реНрдп рдХрд░рдгреНрдпрд╛рд╕ рд╕реБрд░рд╡рд╛рдд рдХрд░реЗрд▓.

рдкрд░рд┐рдгрд╛рдореА, рд╣реЗ рд╕рд░реНрд╡ рдкрд░реНрдпрд╛рдп рд╕рдорддреБрд▓реНрдп рдЖрд╣реЗрдд.

zsh

Zsh рд╕рд╛рдареА рд╕реНрд╡рдпрдВрдкреВрд░реНрдгрддрд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯреНрд╕рдирд╛ рдХреЛрдгрддреНрдпрд╛рд╣реА рдЕрд╡рд▓рдВрдмрдирд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╕рддреЗ. рдЬреЗрд╡реНрд╣рд╛ рддреБрдореНрд╣реА рдХрдорд╛рдВрдб рд╢реЗрд▓ рд▓реЛрдб рдХрд░рддрд╛ рддреЗрд╡реНрд╣рд╛ рддреБрдореНрд╣рд╛рд▓рд╛ рдлрдХреНрдд рддреЗ рд╕рдХреНрд╖рдо рдХрд░рд╛рдпрдЪреЗ рдЖрд╣реЗ.

рддреБрдореНрд╣реА рддреБрдордЪреНрдпрд╛ рдордзреНрдпреЗ рдПрдХ рдУрд│ рдЬреЛрдбреВрди рд╣реЗ рдХрд░реВ рд╢рдХрддрд╛ ~/.zshrc рдлрд╛рдЗрд▓:

source <(kubectl completion zsh)

рдЖрдкрдг рддреНрд░реБрдЯреА рдкреНрд░рд╛рдкреНрдд рдХреЗрд▓реНрдпрд╛рд╕ not found: compdef рддреБрдордЪреЗ рд╢реЗрд▓ рд░реАрд╕реНрдЯрд╛рд░реНрдЯ рдХреЗрд▓реНрдпрд╛рдирдВрддрд░, рддреБрдореНрд╣рд╛рд▓рд╛ рдмрд┐рд▓реНрдЯрдЗрди рдлрдВрдХреНрд╢рди рд╕рдХреНрд╖рдо рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ compdef. рддреБрдореНрд╣реА рддреБрдордЪреНрдпрд╛ рдлрд╛рдИрд▓рдЪреНрдпрд╛ рд╕реБрд░реБрд╡рд╛рддреАрд▓рд╛ рдЬреЛрдбреВрди рддреЗ рд╕рдХреНрд╖рдо рдХрд░реВ рд╢рдХрддрд╛ ~/.zshrc рдкреБрдвреАрд▓:

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 рдЕрднрд┐рд╡реНрдпрдХреНрддреА

рд╕рдВрд╕рд╛рдзрди рдлреАрд▓реНрдб рдирд┐рд╡рдбрдгреНрдпрд╛рд╕рд╛рдареА рдЕрднрд┐рд╡реНрдпрдХреНрддреА рдЖрдзрд╛рд░рд┐рдд рдЖрд╣реЗрдд JSONPath.

JSONPath рд╣реА JSON рджрд╕реНрддрдРрд╡рдЬрд╛рдВрдордзреВрди рдбреЗрдЯрд╛ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдПрдХ рднрд╛рд╖рд╛ рдЖрд╣реЗ. JSONPath рд╕рд╛рдареА рдПрдХрдЪ рдлреАрд▓реНрдб рдирд┐рд╡рдбрдгреЗ рд╣рд╛ рд╕рд░реНрд╡рд╛рдд рд╕реЛрдкрд╛ рд╡рд╛рдкрд░ рдЖрд╣реЗ. рддреНрдпрд╛рдЪреНрдпрд╛рдХрдбреЗ рдмрд░реЗрдЪ рдХрд╛рд╣реА рдЖрд╣реЗ рдЕрдзрд┐рдХ рд╢рдХреНрдпрддрд╛, рд╕рд┐рд▓реЗрдХреНрдЯрд░реНрд╕, рдлрд┐рд▓реНрдЯрд░реНрд╕ рдЗ. рд╕рд╣.

Kubectl рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдорд░реНрдпрд╛рджрд┐рдд рд╕рдВрдЦреНрдпреЗрдиреЗ 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. рдХреНрд▓рд╕реНрдЯрд░ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреНрд▓рд╛рдЙрдбрдордзреНрдпреЗ рдЪрд╛рд▓реВ рдЕрд╕рд▓реНрдпрд╛рд╕, рд╣реЗ рд▓реЗрдмрд▓ рд╕реНрд╡рдпрдВрдЪрд▓рд┐рддрдкрдгреЗ рддрдпрд╛рд░ рдХреЗрд▓реЗ рдЬрд╛рддреЗ рдЖрдгрд┐ рдкреНрд░рддреНрдпреЗрдХ рдиреЛрдбрд╕рд╛рдареА рдЙрдкрд▓рдмреНрдзрддрд╛ рдХреНрд╖реЗрддреНрд░рд╛рдВрдЪреНрдпрд╛ рдирд╛рд╡рд╛рдВрдиреА рднрд░рд▓реЗ рдЬрд╛рддреЗ.

    рд▓реЗрдмрд▓реЗ рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рд░рд┐рд╕реЛрд░реНрд╕ рд╕реНрдкреЗрд╕рд┐рдлрд┐рдХреЗрд╢рдирдЪрд╛ рднрд╛рдЧ рдирд╛рд╣реАрдд, рддреНрдпрд╛рдореБрд│реЗ рддреБрдореНрд╣рд╛рд▓рд╛ рддреНрдпрд╛рдВрдЪреНрдпрд╛рдмрджреНрджрд▓ рдорд╛рд╣рд┐рддреА рдорд┐рд│рдгрд╛рд░ рдирд╛рд╣реА API рдорд╛рд░реНрдЧрджрд░реНрд╢рдХ. рддрдерд╛рдкрд┐, рддреБрдореНрд╣реА YAML рдХрд┐рдВрд╡рд╛ JSON рдлреЙрд░рдореЕрдЯрдордзреНрдпреЗ рдиреЛрдбреНрд╕рдмрджреНрджрд▓ рдорд╛рд╣рд┐рддреАрдЪреА рд╡рд┐рдирдВрддреА рдХреЗрд▓реНрдпрд╛рд╕ рддреЗ (рдЗрддрд░ рдХреЛрдгрддреНрдпрд╛рд╣реА рд▓реЗрдмрд▓рд╛рдВрдкреНрд░рдорд╛рдгреЗ) рдкрд╛рд╣рд┐рд▓реЗ рдЬрд╛рдК рд╢рдХрддрд╛рдд:

    $ kubectl get nodes -o yaml
    # ╨╕╨╗╨╕
    $ kubectl get nodes -o json

    рд╕рдВрд╕рд╛рдзрди рддрдкрд╢реАрд▓ рд╢рд┐рдХрдгреНрдпрд╛рд╡реНрдпрддрд┐рд░рд┐рдХреНрдд, рд╕рдВрд╕рд╛рдзрдирд╛рдВрдмрджреНрджрд▓ рдЕрдзрд┐рдХ рдЬрд╛рдгреВрди рдШреЗрдгреНрдпрд╛рдЪрд╛ рд╣рд╛ рдПрдХ рдЪрд╛рдВрдЧрд▓рд╛ рдорд╛рд░реНрдЧ рдЖрд╣реЗ.

4. рдХреНрд▓рд╕реНрдЯрд░ рдЖрдгрд┐ рдиреЗрдорд╕реНрдкреЗрд╕рдордзреНрдпреЗ рд╕рд╣рдЬрдкрдгреЗ рд╕реНрд╡рд┐рдЪ рдХрд░рд╛

рдЬреЗрд╡реНрд╣рд╛ kubectl Kubernetes API рд▓рд╛ рд╡рд┐рдирдВрддреА рдХрд░рддреЗ, рддреЗрд╡реНрд╣рд╛ рддреЗ рдХрдиреЗрдХреНрд╢рдирд╕рд╛рдареА рд╕рд░реНрд╡ рдЖрд╡рд╢реНрдпрдХ рдкреЕрд░рд╛рдореАрдЯрд░реНрд╕ рдорд┐рд│рд╡рд┐рдгреНрдпрд╛рд╕рд╛рдареА рдкреНрд░рдердо kubeconfig рдлрд╛рдЗрд▓ рд╡рд╛рдЪрддреЗ.

рдбреАрдлреЙрд▓реНрдЯрдиреБрд╕рд╛рд░ kubeconfig рдлрд╛рдЗрд▓ рдЖрд╣реЗ ~/.kube/config. рд╕рд╛рдорд╛рдиреНрдпрдд: рд╣реА рдлрд╛рдИрд▓ рд╡рд┐рд╢реЗрд╖ рдХрдорд╛рдВрдбрджреНрд╡рд╛рд░реЗ рддрдпрд╛рд░ рдХрд┐рдВрд╡рд╛ рдЕрдкрдбреЗрдЯ рдХреЗрд▓реА рдЬрд╛рддреЗ.

рдЬреЗрд╡реНрд╣рд╛ рддреБрдореНрд╣реА рдПрдХрд╛рдзрд┐рдХ рдХреНрд▓рд╕реНрдЯрд░реНрд╕рд╕рд╣ рдХрд╛рд░реНрдп рдХрд░рддрд╛, рддреЗрд╡реНрд╣рд╛ рддреБрдордЪреНрдпрд╛ kubeconfig рдлрд╛рдЗрд▓рдордзреНрдпреЗ рддреНрдпрд╛ рд╕рд░реНрд╡ рдХреНрд▓рд╕реНрдЯрд░рд╢реА рдХрдиреЗрдХреНрдЯ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╕реЗрдЯрд┐рдВрдЧреНрдЬ рдЕрд╕рддрд╛рдд. рддреБрдореНрд╣реА рдХреЛрдгрддреНрдпрд╛ рдХреНрд▓рд╕реНрдЯрд░рд╕реЛрдмрдд рдХрд╛рдо рдХрд░рдд рдЖрд╣рд╛рдд рд╣реЗ kubectl рдХрдорд╛рдВрдбрд▓рд╛ рд╕рд╛рдВрдЧрдгреНрдпрд╛рд╕рд╛рдареА рддреБрдореНрд╣рд╛рд▓рд╛ рдПрдХ рдорд╛рд░реНрдЧ рд╣рд╡рд╛ рдЖрд╣реЗ.

рдХреНрд▓рд╕реНрдЯрд░рдордзреНрдпреЗ, рддреБрдореНрд╣реА рдЕрдиреЗрдХ рдиреЗрдорд╕реНрдкреЗрд╕ рддрдпрд╛рд░ рдХрд░реВ рд╢рдХрддрд╛тАФрднреМрддрд┐рдХ рдХреНрд▓рд╕реНрдЯрд░рдордзреНрдпреЗ рд╡реНрд╣рд░реНрдЪреНрдпреБрдЕрд▓ рдХреНрд▓рд╕реНрдЯрд░рдЪрд╛ рдПрдХ рдкреНрд░рдХрд╛рд░. kubeconfig рдлрд╛рдЗрд▓рд╡рд░ рдЖрдзрд╛рд░рд┐рдд рдХреЛрдгрддреЗ рдиреЗрдорд╕реНрдкреЗрд╕ рд╡рд╛рдкрд░рд╛рдпрдЪреЗ рд╣реЗ рджреЗрдЦреАрд▓ Kubectl рдард░рд╡рддреЗ. рдпрд╛рдЪрд╛ рдЕрд░реНрде рддреБрдореНрд╣рд╛рд▓рд╛ kubectl рдХрдорд╛рдВрдбрд▓рд╛ рдХреЛрдгрддреНрдпрд╛ рдиреЗрдорд╕реНрдкреЗрд╕рд╕рд╣ рдХрд╛рд░реНрдп рдХрд░рд╛рд╡реЗ рд╣реЗ рд╕рд╛рдВрдЧрдгреНрдпрд╛рдЪрд╛ рдорд╛рд░реНрдЧ рджреЗрдЦреАрд▓ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ.

рд╣реЗ рдХрд╕реЗ рдХрд╛рд░реНрдп рдХрд░рддреЗ рдЖрдгрд┐ рддреЗ рдкреНрд░рднрд╛рд╡реАрдкрдгреЗ рдХрд╕реЗ рдХрд╛рд░реНрдп рдХрд░рддреЗ рд╣реЗ рдпрд╛ рдкреНрд░рдХрд░рдгрд╛рдд рдЖрдореНрд╣реА рд╕реНрдкрд╖реНрдЯ рдХрд░реВ.

рд▓рдХреНрд╖рд╛рдд рдШреНрдпрд╛ рдХреА рддреБрдордЪреНрдпрд╛рдХрдбреЗ KUBECONFIG рдкрд░реНрдпрд╛рд╡рд░рдг рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓рдордзреНрдпреЗ рд╕реВрдЪреАрдмрджреНрдз рдХреЗрд▓реЗрд▓реНрдпрд╛ рдПрдХрд╛рдзрд┐рдХ kubeconfig рдлрд╛рдЗрд▓реНрд╕ рдЕрд╕реВ рд╢рдХрддрд╛рдд. рдпрд╛ рдкреНрд░рдХрд░рдгрд╛рдд, рд░рдирдЯрд╛рдЗрдордЪреНрдпрд╛ рд╡реЗрд│реА рдпрд╛ рд╕рд░реНрд╡ рдлрд╛рдпрд▓реА рдПрдХрд╛ рд╕рд╛рдорд╛рдиреНрдп рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рдирдордзреНрдпреЗ рдПрдХрддреНрд░рд┐рдд рдХреЗрд▓реНрдпрд╛ рдЬрд╛рддреАрд▓. рддреБрдореНрд╣реА рдкреЕрд░рд╛рдореАрдЯрд░рд╕рд╣ kubectl рдЪрд╛рд▓рд╡реВрди рдбрд┐рдлреЙрд▓реНрдЯ kubeconfig рдлрд╛рдЗрд▓ рджреЗрдЦреАрд▓ рдмрджрд▓реВ рд╢рдХрддрд╛ --kubeconfig. рджрд┐рд╕рдд рдЕрдзрд┐рдХреГрдд рджрд╕реНрддрдРрд╡рдЬреАрдХрд░рдг.

kubeconfig рдлрд╛рдЗрд▓реНрд╕

kubeconfig рдлрд╛рдЗрд▓рдордзреНрдпреЗ рдиреЗрдордХреЗ рдХрд╛рдп рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдЖрд╣реЗ рддреЗ рдкрд╛рд╣реВрдпрд╛:

kubectl рдЕрдзрд┐рдХ рдкреНрд░рднрд╛рд╡реАрдкрдгреЗ рдХрд╕реЗ рд╡рд╛рдкрд░рд╛рд╡реЗ: рддрдкрд╢реАрд▓рд╡рд╛рд░ рдорд╛рд░реНрдЧрджрд░реНрд╢рдХ
рддреБрдореНрд╣реА рдмрдШреВ рд╢рдХрддрд╛, kubeconfig рдлрд╛рдЗрд▓рдордзреНрдпреЗ рд╕рдВрджрд░реНрднрд╛рдВрдЪрд╛ рд╕рдВрдЪ рдЖрд╣реЗ. рд╕рдВрджрд░реНрднрд╛рдордзреНрдпреЗ рддреАрди рдШрдЯрдХ рдЕрд╕рддрд╛рдд:

  • рдХреНрд▓рд╕реНрдЯрд░ тАФ рдХреНрд▓рд╕реНрдЯрд░ рд╕рд░реНрд╡реНрд╣рд░рдЪреА API URL.
  • рд╡рд╛рдкрд░рдХрд░реНрддрд╛ - рдХреНрд▓рд╕реНрдЯрд░рдордзреАрд▓ рд╡рд╛рдкрд░рдХрд░реНрддрд╛ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреНрд░реЗрдбреЗрдиреНрд╢рд┐рдпрд▓реНрд╕.
  • рдиреЗрдорд╕реНрдкреЗрд╕ - рдХреНрд▓рд╕реНрдЯрд░рдордзреНрдпреЗ рд╕рд╛рдореАрд▓ рд╣реЛрддрд╛рдирд╛ рд╡рд╛рдкрд░рд▓реЗрд▓реА рдиреЗрдорд╕реНрдкреЗрд╕.

рд╕рд░рд╛рд╡ рдордзреНрдпреЗ, рддреЗ рддреНрдпрд╛рдВрдЪреНрдпрд╛ kubeconfig рдордзреНрдпреЗ рдкреНрд░рддрд┐ рдХреНрд▓рд╕реНрдЯрд░ рдПрдХ рд╕рдВрджрд░реНрдн рд╡рд╛рдкрд░рддрд╛рдд. рддрдерд╛рдкрд┐, рддреБрдордЪреНрдпрд╛рдХрдбреЗ рдкреНрд░рддрд┐ рдХреНрд▓рд╕реНрдЯрд░ рдЕрдиреЗрдХ рд╕рдВрджрд░реНрдн рдЕрд╕реВ рд╢рдХрддрд╛рдд, рд╡рд╛рдкрд░рдХрд░реНрддрд╛ рдХрд┐рдВрд╡рд╛ рдиреЗрдорд╕реНрдкреЗрд╕ рджреНрд╡рд╛рд░реЗ рднрд┐рдиреНрди. рддрдерд╛рдкрд┐, рд╣реЗ рдмрд╣реБ-рд╕рдВрджрд░реНрдн рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдЕрд╕рд╛рдорд╛рдиреНрдп рдЖрд╣реЗ, рдореНрд╣рдгреВрди рдХреНрд▓рд╕реНрдЯрд░ рдЖрдгрд┐ рд╕рдВрджрд░реНрднрд╛рдВрдордзреНрдпреЗ рд╕рд╛рдорд╛рдиреНрдпрддрдГ рдПрдХ-рдЯреВ-рд╡рди рдореЕрдкрд┐рдВрдЧ рдЕрд╕рддреЗ.

рдХреЛрдгрддреНрдпрд╛рд╣реА рд╡реЗрд│реА, рд╕рдВрджрд░реНрднрд╛рдВрдкреИрдХреА рдПрдХ рд╡рд░реНрддрдорд╛рди рдЖрд╣реЗ:

kubectl рдЕрдзрд┐рдХ рдкреНрд░рднрд╛рд╡реАрдкрдгреЗ рдХрд╕реЗ рд╡рд╛рдкрд░рд╛рд╡реЗ: рддрдкрд╢реАрд▓рд╡рд╛рд░ рдорд╛рд░реНрдЧрджрд░реНрд╢рдХ
рдЬреЗрд╡реНрд╣рд╛ kubectl рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдлрд╛рдЗрд▓ рд╡рд╛рдЪрддреЗ, рддреЗрд╡реНрд╣рд╛ рддреА рдиреЗрд╣рдореА рд╡рд░реНрддрдорд╛рди рд╕рдВрджрд░реНрднрд╛рддреАрд▓ рдорд╛рд╣рд┐рддреА рдШреЗрддреЗ. рд╡рд░реАрд▓ рдЙрджрд╛рд╣рд░рдгрд╛рдд, kubectl Hare рдХреНрд▓рд╕реНрдЯрд░рд╢реА рдХрдиреЗрдХреНрдЯ рд╣реЛрдИрд▓.

рддреНрдпрд╛рдиреБрд╕рд╛рд░, рджреБрд╕рд░реНтАНрдпрд╛ рдХреНрд▓рд╕реНрдЯрд░рд╡рд░ рдЬрд╛рдгреНрдпрд╛рд╕рд╛рдареА, рддреБрдореНрд╣рд╛рд▓рд╛ kubeconfig рдлрд╛рдЗрд▓рдордзреАрд▓ рд╡рд░реНрддрдорд╛рди рд╕рдВрджрд░реНрдн рдмрджрд▓рдгреНрдпрд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЖрд╣реЗ:

kubectl рдЕрдзрд┐рдХ рдкреНрд░рднрд╛рд╡реАрдкрдгреЗ рдХрд╕реЗ рд╡рд╛рдкрд░рд╛рд╡реЗ: рддрдкрд╢реАрд▓рд╡рд╛рд░ рдорд╛рд░реНрдЧрджрд░реНрд╢рдХ
рдЖрддрд╛ kubectl рдлреЙрдХреНрд╕ рдХреНрд▓рд╕реНрдЯрд░рд╢реА рдХрдиреЗрдХреНрдЯ рд╣реЛрдИрд▓.

рддреНрдпрд╛рдЪ рдХреНрд▓рд╕реНрдЯрд░рдордзреАрд▓ рд╡реЗрдЧрд│реНрдпрд╛ рдиреЗрдорд╕реНрдкреЗрд╕рд╡рд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рддреБрдореНрд╣рд╛рд▓рд╛ рд╕рдзреНрдпрд╛рдЪреНрдпрд╛ рд╕рдВрджрд░реНрднрд╛рд╕рд╛рдареА рдиреЗрдорд╕реНрдкреЗрд╕ рдШрдЯрдХрд╛рдЪреЗ рдореВрд▓реНрдп рдмрджрд▓рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ:

kubectl рдЕрдзрд┐рдХ рдкреНрд░рднрд╛рд╡реАрдкрдгреЗ рдХрд╕реЗ рд╡рд╛рдкрд░рд╛рд╡реЗ: рддрдкрд╢реАрд▓рд╡рд╛рд░ рдорд╛рд░реНрдЧрджрд░реНрд╢рдХ
рд╡рд░реАрд▓ рдЙрджрд╛рд╣рд░рдгрд╛рдд, kubectl рдлреЙрдХреНрд╕ рдХреНрд▓рд╕реНрдЯрд░рдЪреЗ рдкреНрд░реЙрдб рдиреЗрдорд╕реНрдкреЗрд╕ рд╡рд╛рдкрд░реЗрд▓ (рдкреВрд░реНрд╡реА рдЪрд╛рдЪрдгреА рдиреЗрдорд╕реНрдкреЗрд╕ рд╕реЗрдЯ рдХреЗрд▓реЗ рд╣реЛрддреЗ).

рд▓рдХреНрд╖рд╛рдд рдШреНрдпрд╛ рдХреА kubectl рджреЗрдЦреАрд▓ рдкрд░реНрдпрд╛рдп рдкреНрд░рджрд╛рди рдХрд░рддреЗ --cluster, --user, --namespace ╨╕ --context, рдЬреЗ рддреБрдореНрд╣рд╛рд▓рд╛ kubeconfig рдордзреНрдпреЗ рдХрд╛рдп рд╕реЗрдЯ рдХреЗрд▓реЗ рдЖрд╣реЗ рдпрд╛рдЪреА рдкрд░реНрд╡рд╛ рди рдХрд░рддрд╛, рд╡реИрдпрдХреНрддрд┐рдХ рдШрдЯрдХ рдЖрдгрд┐ рд╡рд░реНрддрдорд╛рди рд╕рдВрджрд░реНрдн рд╕реНрд╡рддрдГрдЪ рдЕрдзрд┐рд▓рд┐рдЦрд┐рдд рдХрд░рдгреНрдпрд╛рдЪреА рдкрд░рд╡рд╛рдирдЧреА рджреЗрддреЗ. рджрд┐рд╕рдд kubectl options.

рд╕рд┐рджреНрдзрд╛рдВрддрд╛рдиреБрд╕рд╛рд░, рдЖрдкрдг kubeconfig рдордзреАрд▓ рд╕реЗрдЯрд┐рдВрдЧреНрдЬ рд╡реНрдпрдХреНрддрд┐рдЪрд▓рд┐рддрдкрдгреЗ рдмрджрд▓реВ рд╢рдХрддрд╛. рдкрдг рдЧреИрд░рд╕реЛрдпреАрдЪреЗ рдЖрд╣реЗ. рдпрд╛ рдСрдкрд░реЗрд╢рдиреНрд╕ рд╕реБрд▓рдн рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рд╡рд┐рд╡рд┐рдз рдЙрдкрдпреБрдХреНрддрддрд╛ рдЖрд╣реЗрдд рдЬреНрдпрд╛ рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рд╕реНрд╡рдпрдВрдЪрд▓рд┐рддрдкрдгреЗ рдкреЕрд░рд╛рдореАрдЯрд░реНрд╕ рдмрджрд▓рдгреНрдпрд╛рдЪреА рдкрд░рд╡рд╛рдирдЧреА рджреЗрддрд╛рдд.

kubectx рд╡рд╛рдкрд░рд╛

рдХреНрд▓рд╕реНрдЯрд░ рдЖрдгрд┐ рдиреЗрдорд╕реНрдкреЗрд╕ рджрд░рдореНрдпрд╛рди рд╕реНрд╡рд┐рдЪ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдПрдХ рдЕрддрд┐рд╢рдп рд▓реЛрдХрдкреНрд░рд┐рдп рдЙрдкрдпреБрдХреНрддрддрд╛.

рдпреБрдЯрд┐рд▓рд┐рдЯреА рдХрдорд╛рдВрдб рдкреНрд░рджрд╛рди рдХрд░рддреЗ kubectx ╨╕ kubens рдХреНрд░рдорд╢рдГ рд╡рд░реНрддрдорд╛рди рд╕рдВрджрд░реНрдн рдЖрдгрд┐ рдиреЗрдорд╕реНрдкреЗрд╕ рдмрджрд▓рдгреНрдпрд╛рд╕рд╛рдареА.

рдирдореВрдж рдХреЗрд▓реНрдпрд╛рдкреНрд░рдорд╛рдгреЗ, рд╡рд░реНрддрдорд╛рди рд╕рдВрджрд░реНрдн рдмрджрд▓рдгреЗ рдореНрд╣рдгрдЬреЗ рдХреНрд▓рд╕реНрдЯрд░ рдмрджрд▓рдгреЗ рдЬрд░ рддреБрдордЪреНрдпрд╛рдХрдбреЗ рдкреНрд░рддрд┐ рдХреНрд▓рд╕реНрдЯрд░ рдлрдХреНрдд рдПрдХрдЪ рд╕рдВрджрд░реНрдн рдЕрд╕реЗрд▓.

рдпрд╛ рдЖрдЬреНрдЮрд╛ рдЪрд╛рд▓рд╡рдгреНрдпрд╛рдЪреЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдпреЗрдереЗ рдЖрд╣реЗ:

kubectl рдЕрдзрд┐рдХ рдкреНрд░рднрд╛рд╡реАрдкрдгреЗ рдХрд╕реЗ рд╡рд╛рдкрд░рд╛рд╡реЗ: рддрдкрд╢реАрд▓рд╡рд╛рд░ рдорд╛рд░реНрдЧрджрд░реНрд╢рдХ
рдореВрд▓рдд:, рдпрд╛ рдХрдорд╛рдВрдбреНрд╕ рд╡рд░ рд╡рд░реНрдгрди рдХреЗрд▓реНрдпрд╛рдкреНрд░рдорд╛рдгреЗ рдлрдХреНрдд kubeconfig рдлрд╛рдЗрд▓ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рддрд╛рдд.

рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА kubectx, рд╡рд░реАрд▓ рд╕реВрдЪрдирд╛рдВрдЪреЗ рдЕрдиреБрд╕рд░рдг рдХрд░рд╛ рдЬрд┐рдереВрдм

рджреЛрдиреНрд╣реА рдХрдорд╛рдВрдбреНрд╕ рд╕рдВрджрд░реНрдн рдЖрдгрд┐ рдиреЗрдорд╕реНрдкреЗрд╕ рдирд╛рд╡рд╛рдВрдЪреНрдпрд╛ рд╕реНрд╡рдпрдВрдкреВрд░реНрдгрддреЗрд▓рд╛ рд╕рдорд░реНрдерди рджреЗрддрд╛рдд, рдЬреНрдпрд╛рдореБрд│реЗ рддреНрдпрд╛рдВрдирд╛ рдкреВрд░реНрдгрдкрдгреЗ рдЯрд╛рдЗрдк рдХрд░рдгреНрдпрд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╛рд╣реАрд╢реА рд╣реЛрддреЗ. рд╕реНрд╡рдпрдВрдкреВрд░реНрдгрддрд╛ рд╕реЗрдЯ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╕реВрдЪрдирд╛ рдпреЗрдереЗ.

рдЖрдгрдЦреА рдПрдХ рдЙрдкрдпреБрдХреНрдд рд╡реИрд╢рд┐рд╖реНрдЯреНрдп kubectx рддреЛ рдЖрд╣реЗ рдкрд░рд╕реНрдкрд░рд╕рдВрд╡рд╛рджреА рдореЛрдб. рд╣реЗ рдпреБрдЯрд┐рд▓рд┐рдЯреАрдЪреНрдпрд╛ рд╕рдВрдпреЛрдЧрд╛рдиреЗ рдХрд╛рд░реНрдп рдХрд░рддреЗ fzf, рдЬреЗ рд╕реНрд╡рддрдВрддреНрд░рдкрдгреЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. fzf рд╕реНрдерд╛рдкрд┐рдд рдХреЗрд▓реНрдпрд╛рдиреЗ рдкрд░рд╕реНрдкрд░рд╕рдВрд╡рд╛рджреА рдореЛрдб рдЖрдкреЛрдЖрдк рдЙрдкрд▓рдмреНрдз рд╣реЛрддреЛ kubectx. рдкрд░рд╕реНрдкрд░рд╕рдВрд╡рд╛рджреАрдкрдгреЗ, fzf рджреНрд╡рд╛рд░реЗ рдкреНрд░рджрд╛рди рдХреЗрд▓реЗрд▓реНрдпрд╛ рдкрд░рд╕реНрдкрд░рд╕рдВрд╡рд╛рджреА рд╡рд┐рдирд╛рдореВрд▓реНрдп рд╢реЛрдз рдЗрдВрдЯрд░рдлреЗрд╕рджреНрд╡рд╛рд░реЗ рддреБрдореНрд╣реА рд╕рдВрджрд░реНрдн рдЖрдгрд┐ рдиреЗрдорд╕реНрдкреЗрд╕ рдирд┐рд╡рдбреВ рд╢рдХрддрд╛.

рд╢реЗрд▓ рдЙрдкрдирд╛рдо рд╡рд╛рдкрд░рдгреЗ

рд╡рд░реНрддрдорд╛рди рд╕рдВрджрд░реНрдн рдЖрдгрд┐ рдиреЗрдорд╕реНрдкреЗрд╕ рдмрджрд▓рдгреНрдпрд╛рд╕рд╛рдареА рддреБрдореНрд╣рд╛рд▓рд╛ рд╡реЗрдЧрд│реНрдпрд╛ рд╕рд╛рдзрдирд╛рдВрдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╛рд╣реА рдХрд╛рд░рдг kubectl рдпрд╛рд╕рд╛рдареА рдХрдорд╛рдВрдб рджреЗрдЦреАрд▓ рдкреНрд░рджрд╛рди рдХрд░рддреЗ. рд╣реЛрдп, рд╕рдВрдШ kubectl config kubeconfig рдлрд╛рдЗрд▓реНрд╕ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА subcommands рдкреБрд░рд╡рддреЗ.

рддреНрдпрд╛рдкреИрдХреА рдХрд╛рд╣реА рдЖрд╣реЗрдд:

  • 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-рдЙрдкрдирд╛рдо рдореВрд▓рднреВрдд kubectl рдХрдорд╛рдВрдбрд╕рд╛рдареА рд╕реБрдорд╛рд░реЗ 800 рд╢реЙрд░реНрдЯрдХрдЯ рдЖрд╣реЗрдд.

рддреБрдореНрд╣реА рдХрджрд╛рдЪрд┐рдд рд╡рд┐рдЪрд╛рд░ рдХрд░рдд рдЕрд╕рд╛рд▓ - рддреБрдореНрд╣рд╛рд▓рд╛ 800 рдЙрдкрдирд╛рдо рдХрд╕реЗ рдЖрдард╡рддрд╛рдд? рдкрд░рдВрддреБ рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рддреЗ рд╕рд░реНрд╡ рд▓рдХреНрд╖рд╛рдд рдареЗрд╡рдгреНрдпрд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╛рд╣реА, рдХрд╛рд░рдг рддреЗ рдПрдХрд╛ рд╕рд╛рдзреНрдпрд╛ рдпреЛрдЬрдиреЗрдиреБрд╕рд╛рд░ рддрдпрд╛рд░ рдХреЗрд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗрдд, рдЬреЗ рдЦрд╛рд▓реА рджрд┐рд▓реЗ рдЖрд╣реЗ:

kubectl рдЕрдзрд┐рдХ рдкреНрд░рднрд╛рд╡реАрдкрдгреЗ рдХрд╕реЗ рд╡рд╛рдкрд░рд╛рд╡реЗ: рддрдкрд╢реАрд▓рд╡рд╛рд░ рдорд╛рд░реНрдЧрджрд░реНрд╢рдХ
рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде:

  1. kgpooyaml - kubectl get pods oyaml
  2. ksysgsvcw тАФ kubectl -n kube-system рдЧреЗрдЯ svc w
  3. ksysrmcm -kubectl -n kube-рд╕рд┐рд╕реНрдЯрдо rm cm
  4. kgdepalsl - 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 рд╕рд╛рдареА, рджреБрд░реНрджреИрд╡рд╛рдиреЗ, рдХрд╛рд░реНрдп рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╕реНрд╡рдпрдВрдкреВрд░реНрдгрддрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдХрд╛рд╣реА рдХрд╛рд░реНрдп рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ.

рдмреЕрд╢рдордзреАрд▓ рдЙрдкрдирд╛рдорд╛рдВрд╕рд╛рдареА рд╕реНрд╡рдпрдВрдкреВрд░реНрдгрддрд╛ рд╕рдХреНрд╖рдо рдХрд░рдд рдЖрд╣реЗ

рдмреЕрд╢рдЪреА рд╕рдорд╕реНрдпрд╛ рдЕрд╢реА рдЖрд╣реЗ рдХреА рддреЗ рдЙрдкрдирд╛рд╡ рдкреВрд░реНрдг рдХрд░рдгреНрдпрд╛рдЪрд╛ (рдкреНрд░рддреНрдпреЗрдХ рд╡реЗрд│реА рддреБрдореНрд╣реА рдЯреЕрдм рджрд╛рдмрддрд╛) рдкреНрд░рдпрддреНрди рдХрд░рддреЗ, рдЙрдкрдирд╛рд╡рд╛рдиреЗ рд╕рдВрджрд░реНрднрд┐рдд рдХреЗрд▓реЗрд▓реА рдЖрдЬреНрдЮрд╛ рдирд╛рд╣реА (рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, Zsh рдХрд░рддреЗ). рддреБрдордЪреНрдпрд╛рдХрдбреЗ рд╕рд░реНрд╡ 800 рдЙрдкрдирд╛рдорд╛рдВрд╕рд╛рдареА рдкреВрд░реНрдг рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирд╕рд▓реНрдпрд╛рдореБрд│реЗ, рд╕реНрд╡рдпрдВрдкреВрд░реНрдгрддрд╛ рдХрд╛рд░реНрдп рдХрд░рдд рдирд╛рд╣реА.

рдкреНрд░рдХрд▓реНрдк рдкреВрд░реНрдг-рдЙрд░реНрдл рдпрд╛ рд╕рдорд╕реНрдпреЗрдЪреЗ рд╕рд╛рдорд╛рдиреНрдп рд╕рдорд╛рдзрд╛рди рдкреНрд░рджрд╛рди рдХрд░рддреЗ. рд╣реЗ рдЙрдкрдирд╛рд╡рд╛рдВрд╕рд╛рдареА рдкреВрд░реНрдгрддреНрд╡ рдпрдВрддреНрд░рдгреЗрд╢реА рдЬреЛрдбрддреЗ, рдЖрддреАрд▓ рдЙрдкрдирд╛рдо рдХрдорд╛рдВрдбрдордзреНрдпреЗ рд╡рд┐рд╕реНрддреГрдд рдХрд░рддреЗ рдЖрдгрд┐ рдкреВрд░реНрдг рдХреЗрд▓реЗрд▓реНрдпрд╛ рдХрдорд╛рдВрдбрд╕рд╛рдареА рдкреВрд░реНрдгрддрд╛ рдкрд░реНрдпрд╛рдп рдкрд░рдд рдХрд░рддреЗ. рдпрд╛рдЪрд╛ рдЕрд░реНрде рдЙрдкрдирд╛рдорд╛рд╕рд╛рдареА рдкреЕрдбрд┐рдВрдЧ рдкреВрд░реНрдг рдЖрджреЗрд╢рд╛рдкреНрд░рдорд╛рдгреЗрдЪ рд╡рд╛рдЧрддреЗ.

рдЦрд╛рд▓реАрд▓ рдордзреНрдпреЗ, рдореА рдкреНрд░рдердо рдкреВрд░реНрдг-рдЕрд▓рд┐рдпрд╛рд╕ рдХрд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рд╛рдпрдЪреЗ рдЖрдгрд┐ рдирдВрддрд░ рд╕рд░реНрд╡ kubectl рдЙрдкрдирд╛рдорд╛рдВрд╕рд╛рдареА рдкреВрд░реНрдгрддреНрд╡ рд╕рдХреНрд╖рдо рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рддреЗ рдХрд╕реЗ рдХреЙрдиреНрдлрд┐рдЧрд░ рдХрд░рд╛рдпрдЪреЗ рддреЗ рд╕реНрдкрд╖реНрдЯ рдХрд░реЗрди.

рдкреВрд░реНрдг рдЙрдкрдирд╛рдо рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдд рдЖрд╣реЗ

рд╕рд░реНрд╡ рдкреНрд░рдердо, рдкреВрд░реНрдг-рдЙрд░реНрдл рдЕрд╡рд▓рдВрдмреВрди рдЕрд╕рддреЗ bash-рдкреВрд░реНрдгрддрд╛. рдореНрд╣рдгреВрди, рдкреВрд░реНрдг рдЙрдкрдирд╛рдо рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдгреНрдпрд╛рдкреВрд░реНрд╡реА, рдЖрдкрдг bash-completion рд╕реНрдерд╛рдкрд┐рдд рдХреЗрд▓реЗ рдЖрд╣реЗ рдпрд╛рдЪреА рдЦрд╛рддреНрд░реА рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рд▓рд┐рдирдХреНрд╕ рдЖрдгрд┐ рдореЕрдХрдУрдПрд╕рд╕рд╛рдареА рдпрд╛рдкреВрд░реНрд╡реА рдЗрдиреНрд╕реНрдЯреЙрд▓реЗрд╢рди рд╕реВрдЪрдирд╛ рдкреНрд░рджрд╛рди рдХреЗрд▓реНрдпрд╛ рдЖрд╣реЗрдд.

MacOS рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдВрд╕рд╛рдареА рдорд╣рддреНрддреНрд╡рд╛рдЪреА рд╕реВрдЪрдирд╛: kubectl autocompletion рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреНрд░рдорд╛рдгреЗ, рдкреВрд░реНрдг-рдЕрд▓рд┐рдпрд╛рд╕ Bash 3.2 рд╕рд╣ рдХрд╛рд░реНрдп рдХрд░рдд рдирд╛рд╣реА, рдЬреЗ MacOS рд╡рд░ рдбреАрдлреЙрд▓реНрдЯ рдЖрд╣реЗ. рд╡рд┐рд╢реЗрд╖рддрдГ, рдкреВрд░реНрдг рдЙрдкрдирд╛рдо bash-completion v2 рд╡рд░ рдЕрд╡рд▓рдВрдмреВрди рдЖрд╣реЗ (brew install bash-completion@2), рдЬреНрдпрд╛рд╕рд╛рдареА рдХрд┐рдорд╛рди рдмреЕрд╢ 4.1 рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рдпрд╛рдЪрд╛ рдЕрд░реНрде MacOS рд╡рд░ рдкреВрд░реНрдг рдЙрдкрдирд╛рдо рд╡рд╛рдкрд░рдгреНрдпрд╛рд╕рд╛рдареА рддреБрдореНрд╣рд╛рд▓рд╛ Bash рдЪреА рдирд╡реАрди рдЖрд╡реГрддреНрддреА рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ.

рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдгреНрдпрд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЖрд╣реЗ bash_completion.sh рдкрд╛рд╕реВрди GitHub рднрд╛рдВрдбрд╛рд░ рдЖрдгрд┐ рддреЗ рддреБрдордЪреНрдпрд╛ рдлрд╛рдИрд▓рдордзреНрдпреЗ рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдХрд░рд╛ ~/.bashrc:

source ~/bash_completion.sh

рд╢реЗрд▓ рд░реАрдмреВрдЯ рдХреЗрд▓реНрдпрд╛рдирдВрддрд░, рдкреВрд░реНрдг рдЙрдкрдирд╛рд╡ рдкреВрд░реНрдгрдкрдгреЗ рд╕реНрдерд╛рдкрд┐рдд рдХреЗрд▓реЗ рдЬрд╛рдИрд▓.

kubectl рдЙрдкрдирд╛рдорд╛рдВрд╕рд╛рдареА рд╕реНрд╡рдпрдВрдкреВрд░реНрдгрддрд╛ рд╕рдХреНрд╖рдо рдХрд░рдд рдЖрд╣реЗ

рддрд╛рдВрддреНрд░рд┐рдХрджреГрд╖реНрдЯреНрдпрд╛ рдкреВрд░реНрдг-рдЙрд░реНрдл рд░реЕрдкрд░ рдлрдВрдХреНрд╢рди рдкреНрд░рджрд╛рди рдХрд░рддреЗ _complete_alias. рд╣реЗ рдлрдВрдХреНрд╢рди рдЙрдкрдирд╛рд╡ рддрдкрд╛рд╕рддреЗ рдЖрдгрд┐ рдЙрдкрдирд╛рдо рдХрдорд╛рдВрдбрд╕рд╛рдареА рдкреВрд░реНрдг рд╣реЛрдгреНрдпрд╛рдЪреЗ рд╕рдВрдХреЗрдд рджреЗрддреЗ.

рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрдкрдирд╛рдорд╛рд╕рд╣ рдлрдВрдХреНрд╢рди рд╕рдВрдмрджреНрдз рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рддреБрдореНрд╣рд╛рд▓рд╛ рдЕрдВрдЧрднреВрдд рдмреЕрд╢ рдпрдВрддреНрд░рдгрд╛ рд╡рд╛рдкрд░рдгреНрдпрд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЖрд╣реЗ рдкреВрд░реНрдг, рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА _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-aliases рд╕реЗрдЯ рдХреЗрд▓реЗ рдЕрд╕рд▓реНрдпрд╛рд╕, рдЦрд╛рд▓реАрд▓ рд╕реНрдирд┐рдкреЗрдЯ рд╣реЗрдЪ рдХрд░рддреЗ ~/.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 рд╕рдмрдХрдорд╛рдВрдб рдЬреЛ рддреБрдореНрд╣рд╛рд▓рд╛ рдкреНрд▓рдЧрдЗрди рдХреЙрд▓ рдХрд░рдгреНрдпрд╛рдЪреА рдкрд░рд╡рд╛рдирдЧреА рджреЗрддреЛ.

рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рд╣реЕрд▓реЛ рдкреНрд▓рдЧрдЗрди рдирд╛рд╡рд╛рдЪреА рдлрд╛рдИрд▓ рдореНрд╣рдгреВрди рд╡рд┐рддрд░рд┐рдд рдХреЗрд▓реЗ рдЬрд╛рдИрд▓ kubectl-hello.

рдкреНрд▓рдЧрдЗрди рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рдлрд╛рдЗрд▓ рдХреЙрдкреА рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ kubectl-x рддреБрдордЪреНрдпрд╛ PATH рдордзреАрд▓ рдХреЛрдгрддреНрдпрд╛рд╣реА рдирд┐рд░реНрджреЗрд╢рд┐рдХреЗрдд рдЖрдгрд┐ рддреЗ рдПрдХреНрдЭрд┐рдХреНрдпреБрдЯреЗрдмрд▓ рдмрдирд╡рд╛, рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде рд╕рд╣ chmod +x. рдпрд╛рдирдВрддрд░ рд▓рдЧреЗрдЪ рддреБрдореНрд╣реА рдкреНрд▓рдЧрдЗрдирд▓рд╛ рдХреЙрд▓ рдХрд░реВ рд╢рдХрддрд╛ kubectl x.

рддреБрдордЪреНрдпрд╛ рд╕рд┐рд╕реНрдЯрдорд╡рд░ рд╕рдзреНрдпрд╛ рдЗрдВрд╕реНрдЯреЙрд▓ рдХреЗрд▓реЗрд▓реНрдпрд╛ рд╕рд░реНрд╡ рдкреНрд▓рдЧрдЗрдиреНрд╕рдЪреА рдпрд╛рджреА рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рддреБрдореНрд╣реА рдЦрд╛рд▓реАрд▓ рдЖрджреЗрд╢ рд╡рд╛рдкрд░реВ рд╢рдХрддрд╛:

$ kubectl plugin list

рддреБрдордЪреНрдпрд╛рдХрдбреЗ рдПрдХрд╛рдЪ рдирд╛рд╡рд╛рдЪреЗ рдПрдХрд╛рдзрд┐рдХ рдкреНрд▓рдЧрдЗрди рдЕрд╕рд▓реНрдпрд╛рд╕ рдХрд┐рдВрд╡рд╛ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рдХрд░рдгреНрдпрд╛рдпреЛрдЧреНрдп рдирд╕рд▓реЗрд▓реА рдкреНрд▓рдЧрдЗрди рдлрд╛рдЗрд▓ рдЕрд╕рд▓реНрдпрд╛рд╕ рд╣реА рдХрдорд╛рдВрдб рдЪреЗрддрд╛рд╡рдгреА рджреЗрдЦреАрд▓ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрд▓.

Krew рд╡рд╛рдкрд░реВрди рдкреНрд▓рдЧрдЗрди рд╢реЛрдзрдгреЗ рдЖрдгрд┐ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдгреЗ

Kubectl рдкреНрд▓рдЧрдЗрдиреНрд╕ рд╕рд╛рдорд╛рдпрд┐рдХ рдХреЗрд▓реЗ рдЬрд╛рдК рд╢рдХрддрд╛рдд рдХрд┐рдВрд╡рд╛ рд╕реЙрдлреНрдЯрд╡реЗрдЕрд░ рдкреЕрдХреЗрдЬрдкреНрд░рдорд╛рдгреЗ рдкреБрдиреНрд╣рд╛ рд╡рд╛рдкрд░рд▓реЗ рдЬрд╛рдК рд╢рдХрддрд╛рдд. рдкрд░рдВрддреБ рдЗрддрд░рд╛рдВрдиреА рд╕рд╛рдорд╛рдпрд┐рдХ рдХреЗрд▓реЗрд▓реЗ рдкреНрд▓рдЧрдЗрди рдХреБрдареЗ рд╕рд╛рдкрдбрддреАрд▓?

рдкреНрд░рдХрд▓реНрдк рдХреНрд░реВ kubectl рдкреНрд▓рдЧрдЗрди рд╕рд╛рдорд╛рдпрд┐рдХ рдХрд░рдгреЗ, рд╢реЛрдзрдгреЗ, рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдгреЗ рдЖрдгрд┐ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдгреЗ рдпрд╛рд╕рд╛рдареА рдПрдХрддреНрд░рд┐рдд рд╕рдорд╛рдзрд╛рди рдкреНрд░рджрд╛рди рдХрд░рдгреНрдпрд╛рдЪреЗ рдЙрджреНрджрд┐рд╖реНрдЯ рдЖрд╣реЗ. рдкреНрд░рдХрд▓реНрдк рд╕реНрд╡рддрдГрд▓рд╛ "рдХреНрдпреВрдмреЗрдХреНрдЯрд▓ рдкреНрд▓рдЧрдЗрдиреНрд╕рд╕рд╛рдареА рдкреЕрдХреЗрдЬ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ" рдореНрд╣рдгрддреЛ (рдХреНрд░реВ рд╕рд╛рд░рдЦреЗ рдЖрд╣реЗ рдмреНрд░реВ).

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 рд╣рд╛ рдПрдХ рддрд░реБрдг рдкреНрд░рдХрд▓реНрдк рдЖрд╣реЗ, рдЬреЛ рд╕рдзреНрдпрд╛ рд╕реБрд░реВ рдЖрд╣реЗ рдпрд╛рджреА рдлрдХреНрдд рд╕реБрдорд╛рд░реЗ 30 рдкреНрд▓рдЧрдЗрди. рддреБрдореНрд╣рд╛рд▓рд╛ рдЬреЗ рд╣рд╡реЗ рдЖрд╣реЗ рддреЗ рддреБрдореНрд╣рд╛рд▓рд╛ рд╕рд╛рдкрдбрдд рдирд╕реЗрд▓, рддрд░ рддреБрдореНрд╣реА GitHub рд╕рд╛рд░рдЦреНрдпрд╛ рдЗрддрд░рддреНрд░ рдкреНрд▓рдЧрдЗрди рд╢реЛрдзреВ рд╢рдХрддрд╛.

рдореА рдЧрд┐рдЯрд╣рдм рд╡рд┐рднрд╛рдЧ рдкрд╛рд╣рдгреНрдпрд╛рдЪреА рд╢рд┐рдлрд╛рд░рд╕ рдХрд░рддреЛ kubectl-plugins. рддреЗрдереЗ рддреБрдореНрд╣рд╛рд▓рд╛ рдбрдЭрдирднрд░ рдЙрдкрд▓рдмреНрдз рдкреНрд▓рдЧрдЗрди рд╕рд╛рдкрдбрддреАрд▓ рдЬреЗ рддрдкрд╛рд╕рдгреНрдпрд╛рд╕рд╛рд░рдЦреЗ рдЖрд╣реЗрдд.

рдЖрдкрд▓реЗ рд╕реНрд╡рддрдГрдЪреЗ рдкреНрд▓рдЧрдЗрди рд▓рд┐рд╣рд┐рдд рдЖрд╣реЗ

рдЖрдкрдг рд╕реНрд╡рдд: рдХрд░реВ рд╢рдХрддрд╛ рдкреНрд▓рдЧрдЗрди рддрдпрд╛рд░ рдХрд░рд╛ - рд╣реЗ рдХрдареАрдг рдирд╛рд╣реА. рддреБрдореНрд╣рд╛рд▓рд╛ рдПрдХ рдПрдХреНрдЭрд┐рдХреНрдпреБрдЯреЗрдмрд▓ рддрдпрд╛рд░ рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ рдЬреЗ рддреБрдореНрд╣рд╛рд▓рд╛ рдЬреЗ рд╣рд╡реЗ рдЖрд╣реЗ рддреЗ рдХрд░рддреЗ, рддреНрдпрд╛рд▓рд╛ рдирд╛рд╡ рджреНрдпрд╛ kubectl-x рдЖрдгрд┐ рд╡рд░ рд╡рд░реНрдгрди рдХреЗрд▓реНрдпрд╛рдкреНрд░рдорд╛рдгреЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рд╛.

рдлрд╛рдЗрд▓ рдмреЕрд╢ рд╕реНрдХреНрд░рд┐рдкреНрдЯ, рдкрд╛рдпрдерди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд┐рдВрд╡рд╛ рд╕рдВрдХрд▓рд┐рдд 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 рдХреНрд▓рд╛рдпрдВрдЯ рд▓рд╛рдпрдмреНрд░рд░реА. рддреБрдореНрд╣реА рдЧреЛ рд╡рд╛рдкрд░рдд рдЕрд╕рд╛рд▓ рддрд░ рддреБрдореНрд╣реА рджреЗрдЦреАрд▓ рд╡рд╛рдкрд░реВ рд╢рдХрддрд╛ cli-рд░рдирдЯрд╛рдЗрдо рд▓рд╛рдпрдмреНрд░рд░реА, рдЬреЗ рд╡рд┐рд╢реЗрд╖рддрдГ kubectl рдкреНрд▓рдЧрдЗрди рд▓рд┐рд╣рд┐рдгреНрдпрд╛рд╕рд╛рдареА рдЕрд╕реНрддрд┐рддреНрд╡рд╛рдд рдЖрд╣реЗ.

рдЖрдкрд▓реЗ рдкреНрд▓рдЧрдЗрди рдХрд╕реЗ рд╕рд╛рдорд╛рдпрд┐рдХ рдХрд░рд╛рд╡реЗ

рддреБрдордЪреЗ рдкреНрд▓рдЧрдЗрди рдЗрддрд░рд╛рдВрд╕рд╛рдареА рдЙрдкрдпреБрдХреНрдд рдард░реВ рд╢рдХрддрд╛рдд рдЕрд╕реЗ рддреБрдореНрд╣рд╛рд▓рд╛ рд╡рд╛рдЯрдд рдЕрд╕рд▓реНрдпрд╛рд╕, рддреЗ GitHub рд╡рд░ рд╢реЗрдЕрд░ рдХрд░рдгреНрдпрд╛рд╕ рдореЛрдХрд│реНрдпрд╛ рдордирд╛рдиреЗ. рддреНрдпрд╛рдВрдирд╛ рд╡рд┐рд╖рдпрд╛рдд рдЬреЛрдбрдгреНрдпрд╛рдЪреА рдЦрд╛рддреНрд░реА рдХрд░рд╛ kubectl-plugins.

рдЖрдкрдг рдЖрдкрд▓реЗ рдкреНрд▓рдЧрдЗрди рдЬреЛрдбрд▓реЗ рдЬрд╛рд╡реЗ рдЕрд╢реА рд╡рд┐рдирдВрддреА рджреЗрдЦреАрд▓ рдХрд░реВ рд╢рдХрддрд╛ рдХреНрд░реВ рдпрд╛рджреА. рд╣реЗ рдХрд╕реЗ рдХрд░рд╛рд╡реЗ рдпрд╛рд╡рд░реАрд▓ рд╕реВрдЪрдирд╛ рдордзреНрдпреЗ рдЖрд╣реЗрдд GitHub рднрд╛рдВрдбрд╛рд░.

рдЖрджреЗрд╢ рдкреВрд░реНрдг

рдкреНрд▓рдЧрдЗрди рд╕рдзреНрдпрд╛ рд╕реНрд╡рдпрдВрдкреВрд░реНрдгрддреЗрд▓рд╛ рд╕рдорд░реНрдерди рджреЗрдд рдирд╛рд╣реАрдд. рдореНрд╣рдгрдЬреЗрдЪ, рддреБрдореНрд╣реА рдкреНрд▓рдЧрдЗрдирдЪреЗ рдкреВрд░реНрдг рдирд╛рд╡ рдЖрдгрд┐ рдпреБрдХреНрддрд┐рд╡рд╛рджрд╛рдВрдЪреА рдкреВрд░реНрдг рдирд╛рд╡реЗ рдкреНрд░рд╡рд┐рд╖реНрдЯ рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ.

рдпрд╛ рдХрд╛рд░реНрдпрд╛рд╕рд╛рдареА GitHub kubectl рднрд╛рдВрдбрд╛рд░ рдЖрд╣реЗ рдЦреБрд▓реА рд╡рд┐рдирдВрддреА. рддреНрдпрд╛рдореБрд│реЗ рд╣реЗ рд╡реИрд╢рд┐рд╖реНрдЯреНрдп рднрд╡рд┐рд╖реНрдпрд╛рдд рдХрдзреАрддрд░реА рд▓рд╛рдЧреВ рдХреЗрд▓реЗ рдЬрд╛рдгреНрдпрд╛рдЪреА рд╢рдХреНрдпрддрд╛ рдЖрд╣реЗ.

рд╢реБрднреЗрдЪреНрдЫрд╛!!!

рд╡рд┐рд╖рдпрд╛рд╡рд░ рдЕрдЬреВрди рдХрд╛рдп рд╡рд╛рдЪрд╛рдпрдЪреЗ:

  1. рдХреБрдмрд░реНрдиреЗрдЯреНрд╕рдордзреАрд▓ рдСрдЯреЛрд╕реНрдХреЗрд▓рд┐рдВрдЧрдЪреЗ рддреАрди рд╕реНрддрд░ рдЖрдгрд┐ рддреЗ рдкреНрд░рднрд╛рд╡реАрдкрдгреЗ рдХрд╕реЗ рд╡рд╛рдкрд░рд╛рдпрдЪреЗ.
  2. рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреАрд╕рд╛рдареА рдЯреЗрдореНрдкрд▓реЗрдЯрд╕рд╣ рдЪрд╛рдЪреЗрдЧрд┐рд░реАрдЪреНрдпрд╛ рднрд╛рд╡рдиреЗрдд рдХреБрдмрд░реНрдиреЗрдЯреНрд╕.
  3. рдЖрдордЪреЗ рдЪреЕрдиреЗрд▓ рдЕрд░рд╛рдЙрдВрдб рдХреБрдмрд░рдиреЗрдЯреЗрд╕ рдЯреЗрд▓реАрдЧреНрд░рд╛рдордордзреНрдпреЗ.

рд╕реНрддреНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛