Как эффСктивнСС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ 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-запросы ΠΊ API Kubernetes:

Как эффСктивнСС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ kubectl: ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ руководство
Kubernetes β€” ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ рСсурсно-ориСнтированная систСма. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π΅ состояниС рСсурсов, ΠΈ всС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Kubernetes ΡΠ²Π»ΡΡŽΡ‚ΡΡ опСрациями CRUD.

Π’Ρ‹ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ Kubernetes, управляя этими рСсурсами, ΠΈ Kubernetes выясняСт, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ, ΠΎΡΠ½ΠΎΠ²Ρ‹Π²Π°ΡΡΡŒ Π½Π° Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ состоянии рСсурсов. По этой ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅ ссылка Π½Π° API Kubernetes ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½Π° Π² Π²ΠΈΠ΄Π΅ списка Ρ‚ΠΈΠΏΠΎΠ² рСсурсов со связанными с Π½ΠΈΠΌΠΈ опСрациями.

Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€.

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ рСсурс ReplicaSet. Π§Ρ‚ΠΎΠ±Ρ‹ это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, Π²Ρ‹ описываСтС ReplicaSet Π² Ρ„Π°ΠΉΠ»Π΅ ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ replicaset.yaml, Π·Π°Ρ‚Π΅ΠΌ запускаСтС ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

$ kubectl create -f replicaset.yaml

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Π±ΡƒΠ΄Π΅Ρ‚ создан рСсурс ReplicaSet. Но Ρ‡Ρ‚ΠΎ происходит Π·Π° кулисами?

Π’ Kubernetes Π΅ΡΡ‚ΡŒ опСрация создания ReplicaSet. Как ΠΈ любая другая опСрация, ΠΎΠ½Π° прСдоставляСтся Π² качСствС ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ API. ΠšΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Π°Ρ конСчная Ρ‚ΠΎΡ‡ΠΊΠ° API для этой ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ выглядит Ρ‚Π°ΠΊ:

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

ΠšΠΎΠ½Π΅Ρ‡Π½Ρ‹Π΅ Ρ‚ΠΎΡ‡ΠΊΠΈ API всСх ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Kubernetes ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π² справочникС API (Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΡƒΠΊΠ°Π·Π°Π½Π½ΡƒΡŽ Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠ½Π΅Ρ‡Π½ΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΡƒ). Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ фактичСский запрос ΠΊ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠ΅, Π½Π°Π΄ΠΎ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ URL-адрСс сСрвСра API ΠΊ путям ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ пСрСчислСны Π² справочникС ΠΏΠΎ API.

Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ выполняСтС ΡƒΠΊΠ°Π·Π°Π½Π½ΡƒΡŽ Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ, kubectl отправляСт HTTP-запрос POST ΠΊ Π²Ρ‹ΡˆΠ΅ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠ΅ API. ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ReplicaSet, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π²Ρ‹ ΡƒΠΊΠ°Π·Π°Π»ΠΈ Π² Ρ„Π°ΠΉΠ»Π΅ replicaset.yaml, пСрСдаСтся Π² Ρ‚Π΅Π»Π΅ запроса.

ИмСнно Ρ‚Π°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ kubectl для всСх ΠΊΠΎΠΌΠ°Π½Π΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‚ с кластСром Kubernetes. Π’ΠΎ всСх этих случаях kubectl просто отправляСт HTTP-запросы ΠΊ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΌ Ρ‚ΠΎΡ‡ΠΊΠ°ΠΌ API Kubernetes.

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ Kubernetes с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ‚Π°ΠΊΠΎΠΉ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ ΠΊΠ°ΠΊ curl, Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ отправляя HTTP-запросы Π² API Kubernetes. Kubectl просто ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ использованиС API Kubernetes.

Π­Ρ‚ΠΎ основы Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ kubectl ΠΈ ΠΊΠ°ΠΊ ΠΎΠ½ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚. Но Π΅ΡΡ‚ΡŒ Π΅Ρ‰Π΅ ΠΊΠΎΠ΅-Ρ‡Ρ‚ΠΎ ΠΎΠ± API Kubernetes, Ρ‡Ρ‚ΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π½Π°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ kubectl. Π”Π°Π²Π°ΠΉΡ‚Π΅ ΠΊΡ€Π°Ρ‚ΠΊΠΎ окунСмся Π²ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ ΠΌΠΈΡ€ Kubernetes.

Π’Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ ΠΌΠΈΡ€ Kubernetes

Kubernetes состоит ΠΈΠ· Π½Π°Π±ΠΎΡ€Π° нСзависимых ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ процСссы Π½Π° ΡƒΠ·Π»Π°Ρ… кластСра. НСкоторыС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π½Π° Π³Π»Π°Π²Π½Ρ‹Ρ… ΡƒΠ·Π»Π°Ρ…, Π΄Ρ€ΡƒΠ³ΠΈΠ΅ β€” Π½Π° Ρ€Π°Π±ΠΎΡ‡ΠΈΡ… ΡƒΠ·Π»Π°Ρ…, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ выполняСт свою ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΡƒΡŽ Π·Π°Π΄Π°Ρ‡Ρƒ.

Π’ΠΎΡ‚ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Π½Π° Π³Π»Π°Π²Π½Ρ‹Ρ… Π½ΠΎΠ΄Π°Ρ…:

  1. Π₯Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ β€” Ρ…Ρ€Π°Π½ΠΈΡ‚ опрСдСлСния рСсурсов (ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ это etcd).
  2. API сСрвСр β€” прСдоставляСт API ΠΈ управляСт Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ΠΌ.
  3. ДиспСтчСр ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠ² β€” Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ статусы рСсурсов ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ спСцификациям.
  4. ΠŸΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊ β€” ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΏΠΎΠ΄Ρ‹ Π½Π° Ρ€Π°Π±ΠΎΡ‡ΠΈΡ… ΡƒΠ·Π»Π°Ρ….

И Π²ΠΎΡ‚ ΠΎΠ΄ΠΈΠ½ самый Π²Π°ΠΆΠ½Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Π½Π° Ρ€Π°Π±ΠΎΡ‡ΠΈΡ… Π½ΠΎΠ΄Π°Ρ…:

  1. Kubelet β€” управляСт запуском ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² Π½Π° Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ Π½ΠΎΠ΄Π΅.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΊΠ°ΠΊ эти ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ вмСстС, рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€.

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Π²Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ»ΠΈ kubectl create -f replicaset.yaml, послС Ρ‡Π΅Π³ΠΎ kubectl сдСлал HTTP-запрос POST ΠΊ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠ΅ API-интСрфСйса ReplicaSet (пСрСдавая ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ рСсурса 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) ΠΈ сохраняСт ΠΈΡ… Π² Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½ΠΎΠ²Ρ‹Ρ… ΠΏΠΎΠ΄ΠΎΠ² запускаСт ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊ, ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ опрСдСлСния ΠΏΠΎΠ΄ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΅Ρ‰Π΅ Π½Π΅ Π·Π°ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ для Ρ€Π°Π±ΠΎΡ‡ΠΈΡ… Π½ΠΎΠ΄. ΠŸΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊ Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΡΡ‰ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‡ΡƒΡŽ Π½ΠΎΠ΄Ρƒ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Π° ΠΈ обновляСт опрСдСлСния ΠΏΠΎΠ΄Π° Π² Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅.

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π΄ΠΎ этого ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° Π½ΠΈΠ³Π΄Π΅ Π² кластСрС Π½Π΅ выполнялся ΠΊΠΎΠ΄ Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ. Всё, Ρ‡Ρ‚ΠΎ Π±Ρ‹Π»ΠΎ сдСлано Π΄ΠΎ сих ΠΏΠΎΡ€, β€” это созданиС ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ рСсурсов Π² Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ Π½Π° Π³Π»Π°Π²Π½ΠΎΠΌ ΡƒΠ·Π»Π΅.

ПослСднСС событиС запускаСт Kubelet, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ слСдят Π·Π° ΠΏΠΎΠ΄Π°ΠΌΠΈ, Π·Π°ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ для ΠΈΡ… Ρ€Π°Π±ΠΎΡ‡ΠΈΡ… Π½ΠΎΠ΄. Kubelet Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ Π½ΠΎΠ΄Ρ‹, для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ установлСны ваши ΠΏΠΎΠ΄Ρ‹ ReplicaSet, Π΄ΠΎΠ»ΠΆΠ΅Π½ Π΄Π°Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ срСдС выполнСния ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ², Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Docker, Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹Π΅ ΠΎΠ±Ρ€Π°Π·Ρ‹ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² ΠΈ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΈΡ….

Π’ этот ΠΌΠΎΠΌΠ΅Π½Ρ‚, Π½Π°ΠΊΠΎΠ½Π΅Ρ†, вашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ReplicaSet Π·Π°ΠΏΡƒΡ‰Π΅Π½ΠΎ!

Роль API Kubernetes

Как Π²Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Π»ΠΈ Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Kubernetes (Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ сСрвСра API ΠΈ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°) смотрят Π·Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ рСсурсов Π² Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‚ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ рСсурсах Π² Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅.

ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, эти ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Π½Π΅ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‚ с Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ΠΌ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ, Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Π΅Ρ€Π΅Π· Kubernetes API.

Рассмотрим ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹:

  1. ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ ReplicaSet ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΊΠΎΠ½Π΅Ρ‡Π½ΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΡƒ API list ReplicaSets c ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ watch для наблюдСния Π·Π° измСнСниями рСсурсов ReplicaSet.
  2. ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ ReplicaSet ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΊΠΎΠ½Π΅Ρ‡Π½ΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΡƒ API create Pod (ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΠΎΠ΄) для создания ΠΏΠΎΠ΄ΠΎΠ².
  3. ΠŸΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΊΠΎΠ½Π΅Ρ‡Π½ΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΡƒ API patch Pod (ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΏΠΎΠ΄) для обновлСния ΠΏΠΎΠ΄ΠΎΠ² с ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ ΠΎ Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ Π½ΠΎΠ΄Π΅.

Как Π²Ρ‹ Π²ΠΈΠ΄ΠΈΡ‚Π΅, это Ρ‚ΠΎ ΠΆΠ΅ самоС API, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ обращаСтся kubectl. ИспользованиС ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ API для Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² ΠΈ Π²Π½Π΅ΡˆΠ½ΠΈΡ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ являСтся Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½ΠΎΠΉ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠ΅ΠΉ Π΄ΠΈΠ·Π°ΠΉΠ½Π° Kubernetes.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Kubernetes:

  1. Π₯Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ сохраняСт состояниС, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ рСсурсы Kubernetes.
  2. API сСрвСр прСдоставляСт интСрфСйс ΠΊ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Ρƒ Π² Π²ΠΈΠ΄Π΅ Kubernetes API.
  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 (Π²ΠΊΠ»ΡŽΡ‡Π°Ρ различия ΠΌΠ΅ΠΆΠ΄Ρƒ Linux ΠΈ MacOS) ΠΈ Zsh. НиТС ΠΌΡ‹ рассмотрим всС эти Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹.

Bash Π² Linux

Π‘ΠΊΡ€ΠΈΠΏΡ‚ дополнСния для 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-completion.

Оба Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΡ‹.

ПослС ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ Π°Π²Ρ‚ΠΎΠ΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄ kubectl Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ.

Bash Π² MacOS

Π’ MacOS настройка нСсколько слоТнСС. Π”Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π² MacOS стоит Bash вСрсии 3.2, Π° скрипт автодополнСния kubectl Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ вСрсии Bash Π½Π΅ Π½ΠΈΠΆΠ΅ 4.1 ΠΈ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² Bash 3.2.

ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠ΅ΠΉ вСрсии Bash Π² MacOS связано с вопросами лицСнзирования. Bash вСрсии 4 распространяСтся ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ GPLv3, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Apple.

Для настройки автодополнСния kubectl Π² MacOS Π½ΡƒΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ ΡΠ²Π΅ΠΆΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ Bash. Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π½Ρ‹ΠΉ Bash ΠΊΠ°ΠΊ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡƒΡŽ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΡƒ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, Ρ‡Ρ‚ΠΎ ΡƒΠ±Π΅Ρ€Π΅ΠΆΠ΅Ρ‚ Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ ΠΎΡ‚ массы ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ. Π­Ρ‚ΠΎ нСслоТно, Π΄Π΅Ρ‚Π°Π»ΠΈ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅ «ОбновлСниС Bash Π² MacOSΒ».

ΠŸΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ, ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ ΡΠ²Π΅ΠΆΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ Bash (ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ Π²Ρ‹Π²ΠΎΠ΄ bash --version).

Π‘ΠΊΡ€ΠΈΠΏΡ‚ автодополнСния Π² Bash зависит ΠΎΡ‚ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° bash-completion, поэтому Π²Π½Π°Ρ‡Π°Π»Π΅ Π½ΡƒΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ.

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ bash-completion ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Homebrew:

$ brew install bash-completion@2

Π—Π΄Π΅ΡΡŒ @2 ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ bash-completion вСрсии 2. АвтодополнСниС kubectl Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ 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

Если Π² Π²Ρ‹Π²ΠΎΠ΄Π΅ Π²Ρ‹ Π²ΠΈΠ΄ΠΈΡ‚Π΅ shell-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, Ρ‚ΠΎ всС настроСно ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π½ΡƒΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π°Π²Ρ‚ΠΎΠ΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ 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 ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

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. Π­Ρ‚ΠΎ ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ имя ΠΏΠΎΠ΄Π° опрСдСляСтся Π² Π΄ΠΎΡ‡Π΅Ρ€Π½Π΅ΠΌ ΠΏΠΎΠ»Π΅ 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 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 выполняСт запрос ΠΊ Kubernetes API, ΠΏΠ΅Ρ€Π΅Π΄ этим ΠΎΠ½ Ρ‡ΠΈΡ‚Π°Π΅Ρ‚ Ρ„Π°ΠΉΠ» kubeconfig, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ всС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ для ΠΊΠΎΠ½Π½Π΅ΠΊΡ‚Π°.

По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Ρ„Π°ΠΉΠ» kubeconfig β€” это ~/.kube/config. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ этот Ρ„Π°ΠΉΠ» создаСтся ΠΈΠ»ΠΈ обновляСтся особой ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ.

Когда Π²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ с нСсколькими кластСрами, ваш Ρ„Π°ΠΉΠ» kubeconfig содСрТит ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΊΠΎ всСм этим кластСрам. Π’Π°ΠΌ Π½ΡƒΠΆΠ΅Π½ способ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ kubectl, с ΠΊΠ°ΠΊΠΈΠΌ ΠΈΠΌΠ΅Π½Π½ΠΎ кластСром Π²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅.

Π’Π½ΡƒΡ‚Ρ€ΠΈ кластСра Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ нСсколько пространств ΠΈΠΌΠ΅Π½ β€” Ρ€Π°Π·Π½ΠΎΠ²ΠΈΠ΄Π½ΠΎΡΡ‚ΡŒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ кластСра Π²Π½ΡƒΡ‚Ρ€ΠΈ физичСского кластСра. Kubectl опрСдСляСт, ΠΊΠ°ΠΊΠΎΠ΅ пространство ΠΈΠΌΠ΅Π½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎ Π΄Π°Π½Π½Ρ‹ΠΌ Ρ„Π°ΠΉΠ»Π° kubeconfig. Π—Π½Π°Ρ‡ΠΈΡ‚, Π²Π°ΠΌ Ρ‚Π°ΠΊΠΆΠ΅ Π½ΡƒΠΆΠ΅Π½ способ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ kubectl, с ΠΊΠ°ΠΊΠΈΠΌ пространством ΠΈΠΌΠ΅Π½ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ.

Π’ этой Π³Π»Π°Π²Π΅ ΠΌΡ‹ расскаТСм, ΠΊΠ°ΠΊ это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΈ ΠΊΠ°ΠΊ Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ эффСктивной Ρ€Π°Π±ΠΎΡ‚Ρ‹.

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Ρƒ вас ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ нСсколько Ρ„Π°ΠΉΠ»ΠΎΠ² kubeconfig, пСрСчислСнных Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ срСды KUBECONFIG. Π’ этом случаС всС эти Ρ„Π°ΠΉΠ»Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½Π΅Π½Ρ‹ Π² ΠΎΠ΄Π½Ρƒ ΠΎΠ±Ρ‰ΡƒΡŽ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ Π²ΠΎ врСмя выполнСния. Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ примСняСмый ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Ρ„Π°ΠΉΠ» kubeconfig, запуская kubectl с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ --kubeconfig. Π‘ΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΡƒΡŽ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ.

Π€Π°ΠΉΠ»Ρ‹ kubeconfig

Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим, Ρ‡Ρ‚ΠΎ ΠΆΠ΅ ΠΈΠΌΠ΅Π½Π½ΠΎ содСрТит Ρ„Π°ΠΉΠ» kubeconfig:

Как эффСктивнСС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ kubectl: ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ руководство
Как Π²Ρ‹ Π²ΠΈΠ΄ΠΈΡ‚Π΅, Ρ„Π°ΠΉΠ» kubeconfig содСрТит Π½Π°Π±ΠΎΡ€ контСкстов. ΠšΠΎΠ½Ρ‚Π΅ΠΊΡΡ‚ состоит ΠΈΠ· Ρ‚Ρ€Π΅Ρ… элСмСнтов:

  • Cluster β€” URL API сСрвСра кластСра.
  • User β€” ΡƒΡ‡Π΅Ρ‚Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π² кластСрС.
  • Namespace β€” пространство ΠΈΠΌΠ΅Π½, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ΅ ΠΏΡ€ΠΈ присоСдинСнии ΠΊ кластСру.

На ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΎΠ΄ΠΈΠ½ контСкст Π½Π° кластСр Π² своСм Ρ„Π°ΠΉΠ»Π΅ kubeconfig. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ Ρƒ вас ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ нСсколько контСкстов Π½Π° кластСр, Ρ€Π°Π·Π»ΠΈΡ‡Π°ΡŽΡ‰ΠΈΡ…ΡΡ ΠΏΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ ΠΈΠ»ΠΈ пространству ΠΈΠΌΠ΅Π½. Однако такая конфигурация с нСсколькими контСкстами встрСчаСтся нСчасто, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ сущСствуСт Π²Π·Π°ΠΈΠΌΠ½ΠΎ-ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎΠ΅ сопоставлСниС ΠΌΠ΅ΠΆΠ΄Ρƒ кластСрами ΠΈ контСкстами.

Π’ любой ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· контСкстов являСтся Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΌ:

Как эффСктивнСС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ kubectl: ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ руководство
Когда kubectl Ρ‡ΠΈΡ‚Π°Π΅Ρ‚ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ», Ρ‚ΠΎ всСгда бСрСтся информация ΠΈΠ· Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ контСкста. Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π²Ρ‹ΡˆΠ΅ kubectl Π±ΡƒΠ΄Π΅Ρ‚ ΠΊΠΎΠ½Π½Π΅ΠΊΡ‚ΠΈΡ‚ΡŒΡΡ ΠΊ кластСру Hare.

БоотвСтствСнно, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒΡΡ Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ кластСр, Π½ΡƒΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ контСкст Π² Ρ„Π°ΠΉΠ»Π΅ kubeconfig:

Как эффСктивнСС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ kubectl: ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ руководство
Π’Π΅ΠΏΠ΅Ρ€ΡŒ kubectl Π±ΡƒΠ΄Π΅Ρ‚ ΠΊΠΎΠ½Π½Π΅ΠΊΡ‚ΠΈΡ‚ΡŒΡΡ ΠΊ кластСру Fox.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒΡΡ Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠ΅ пространство ΠΈΠΌΠ΅Π½ Π² Ρ‚ΠΎΠΌ ΠΆΠ΅ самом кластСрС, Π½ΡƒΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ элСмСнта namespace для Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ контСкста:

Как эффСктивнСС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ kubectl: ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ руководство
Π’ Π²Ρ‹ΡˆΠ΅ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ kubectl Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ пространство ΠΈΠΌΠ΅Π½ Prod кластСра Fox (Ρ€Π°Π½Π΅Π΅ Π±Ρ‹Π»ΠΎ установлСно пространство ΠΈΠΌΠ΅Π½ Test).

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ kubectl Ρ‚Π°ΠΊΠΆΠ΅ прСдоставляСт ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ --cluster, --user, --namespace ΠΈ --context, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ элСмСнты ΠΈ сам Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ контСкст, нСзависимо ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ установлСно Π² Ρ„Π°ΠΉΠ»Π΅ kubeconfig. Π‘ΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ kubectl options.

ВСорСтичСски Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π² Ρ„Π°ΠΉΠ»Π΅ kubeconfig. Но это Π½Π΅ΡƒΠ΄ΠΎΠ±Π½ΠΎ. Для упрощСния этих ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Ρ€Π°Π·Π½ΠΎΠΎΠ±Ρ€Π°Π·Π½Ρ‹Π΅ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π² автоматичСском Ρ€Π΅ΠΆΠΈΠΌΠ΅.

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ kubectx

ΠžΡ‡Π΅Π½ΡŒ популярная ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° для ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρƒ кластСрами ΠΈ пространствами ΠΈΠΌΠ΅Π½.

Π£Ρ‚ΠΈΠ»ΠΈΡ‚Π° прСдоставляСт ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ kubectx ΠΈ kubens для измСнСния Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ контСкста ΠΈ пространства ΠΈΠΌΠ΅Π½ соотвСтствСнно.

Как ΡƒΠΆΠ΅ ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΎΡΡŒ, ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ контСкста ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ кластСра, Ссли Ρƒ вас Π΅ΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ контСкст Π½Π° кластСр.

Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ выполнСния этих ΠΊΠΎΠΌΠ°Π½Π΄:

Как эффСктивнСС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ kubectl: ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ руководство
По сути, эти ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ просто Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΡƒΡŽΡ‚ Ρ„Π°ΠΉΠ» kubeconfig, ΠΊΠ°ΠΊ Π±Ρ‹Π»ΠΎ описано Π²Ρ‹ΡˆΠ΅.

Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ kubectx, слСдуйтС инструкциям Π½Π° Github.

ОбС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ Π°Π²Ρ‚ΠΎΠ΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π½ контСкстов ΠΈ пространств ΠΈΠΌΠ΅Π½, Ρ‡Ρ‚ΠΎ позволяСт Π½Π΅ Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΈΡ… ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ. Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΠΈ ΠΏΠΎ настройкС автодополнСния Ρ‚ΡƒΡ‚.

Π”Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ 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-aliases содСрТит ΠΎΠΊΠΎΠ»ΠΎ 800 сокращСний для основных ΠΊΠΎΠΌΠ°Π½Π΄ kubectl.

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ΄ΠΈΠ²ΠΈΡ‚ΡŒΡΡ β€” ΠΊΠ°ΠΊ Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ 800 алиасов? Но Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ ΠΈΡ… всС, вСдь ΠΎΠ½ΠΈ строятся ΠΏΠΎ простой схСмС, которая ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π° Π½ΠΈΠΆΠ΅:

Как эффСктивнСС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ kubectl: ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ руководство
НапримСр:

  1. kgpooyaml β€” kubectl get pods oyaml
  2. ksysgsvcw β€” kubectl -n kube-system get svc w
  3. ksysrmcm β€” kubectl -n kube-system rm cm
  4. kgdepallsl β€” kubectl get deployment all sl

Как Π²Ρ‹ Π²ΠΈΠ΄ΠΈΡ‚Π΅, алиасы состоят ΠΈΠ· ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ элСмСнт ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ kubectl. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ алиас ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ для Π±Π°Π·ΠΎΠ²ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΈ рСсурса ΠΈ нСсколько ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² для ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ². Π’Ρ‹ просто «заполняСтС» эти ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ слСва Π½Π°ΠΏΡ€Π°Π²ΠΎ Π² соотвСтствии с ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ Π²Ρ‹ΡˆΠ΅ схСмой.

TСкущая подробная схСма находится Π½Π° 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 (Π² настоящСС врСмя Π½Π΅ сущСствуСт алиаса для рСсурса Roles).
  3. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌΡƒ ΠΏΠΎΠ΄Ρƒ, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ kgpo my-pod β€” kubectl get pod my-pod.

Π£Ρ‡Ρ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ алиасы Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС. НапримСр, алиас kgpol ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ kubectl get pods -l. ΠžΠΏΡ†ΠΈΡ -l Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ β€” ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ ΠΌΠ΅Ρ‚ΠΊΠΈ. Если Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ алиас, Ρ‚ΠΎ ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΠΊΠ°ΠΊ kgpol app=ui.

Из-Π·Π° Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Ρ‡Π°ΡΡ‚ΡŒ алиасов Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹, алиасы Π°, 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 прСдоставляСт ΠΎΠ±Ρ‰Π΅Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹. Он ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ ΠΊ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡƒ дополнСния для алиасов, Π²Π½ΡƒΡ‚Ρ€ΠΈ дополняСт алиас Π΄ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ дополнСния для Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ для алиаса Π²Π΅Π΄Π΅Ρ‚ сСбя Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ для ΠΏΠΎΠ»Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹.

Π”Π°Π»Π΅Π΅ я сначала объясню, ΠΊΠ°ΠΊ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ complete-alias, Π° Π·Π°Ρ‚Π΅ΠΌ β€” ΠΊΠ°ΠΊ Π΅Π³ΠΎ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ для всСх псСвдонимов kubectl.

Установка complete-alias

ΠŸΡ€Π΅ΠΆΠ΄Π΅ всСго, complete-alias зависит ΠΎΡ‚ bash-completion. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΏΠ΅Ρ€Π΅Π΄ установкой complete-alias Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ bash-completion установлСн. Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΠΈ ΠΏΠΎ установкС Π±Ρ‹Π»ΠΈ Π΄Π°Π½Ρ‹ Ρ€Π°Π½Π΅Π΅ для Linux ΠΈ MacOS.

Π’Π°ΠΆΠ½ΠΎΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅ для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ MacOS: ΠΊΠ°ΠΊ ΠΈ скрипт автодополнСния kubectl, сomplete-alias Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с Bash 3.2, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² MacOS. Π’ частности, complete-alias зависит ΠΎΡ‚ bash-completion v2 (brew install bash-completion@2), для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ трСбуСтся ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ Bash 4.1. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ для использования complete-alias Π² MacOS Π½ΡƒΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ Π½ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ Bash.

Π’Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ скрипт bash_completion.sh ΠΈΠ· рСпозитория GitHub ΠΈ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π² своСм Ρ„Π°ΠΉΠ»Π΅ ~/.bashrc:

source ~/bash_completion.sh

ПослС ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ complete-alias Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ установлСн.

Π’ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ автодополнСния для алиасов kubectl

ВСхничСски complete-alias прСдоставляСт Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ _complete_alias. Π­Ρ‚Π° функция провСряСт алиас ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ подсказки дополнСния для ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ алиаса.

Для связывания Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ с ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ алиасом Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ встроСнный ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ Bash complete, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ _complete_alias ΠΊΠ°ΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ дополнСния алиаса.

Π’ качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° возьмСм алиас k, ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ kubectl. Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ _complete_alias Π² качСствС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ дополнСния для этого алиаса, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

$ complete -F _complete_alias k

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ этого являСтся Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ всякий Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ автодополняСтС алиас k, вызываСтся функция _complete_alias, которая провСряСт алиас ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ подсказки дополнСния для ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ kubectl.

Π’ качСствС Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Π΄Π°Π²Π°ΠΉΡ‚Π΅ возьмСм алиас kg, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ kubectl get:

$ complete -F _complete_alias kg

Π’ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ автодополняСтС kg, Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚Π΅ Ρ‚Π΅ ΠΆΠ΅ самыС подсказки дополнСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ Π±Ρ‹ для kubectl get.

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ complete-alias для любого алиаса Π² вашСй систСмС.

Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π°Π²Ρ‚ΠΎΠ΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ для всСх алиасов 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, которая позволяСт Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΠ»Π°Π³ΠΈΠ½.

НапримСр, ΠΏΠ»Π°Π³ΠΈΠ½ hello Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°ΡΠΏΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚ΡŒΡΡ Π² Π²ΠΈΠ΄Π΅ Ρ„Π°ΠΉΠ»Π° с ΠΈΠΌΠ΅Π½Π΅ΠΌ kubectl-hello.

Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΠ»Π°Π³ΠΈΠ½, Π½ΡƒΠΆΠ½ΠΎ ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ» kubectl-x Π² любой ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ Π² вашСй ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ PATH ΠΈ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π΅Π³ΠΎ исполняСмым, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ chmod +x. Π‘Ρ€Π°Π·Ρƒ послС этого Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΏΠ»Π°Π³ΠΈΠ½ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ kubectl x.

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ для Π²Ρ‹Π²ΠΎΠ΄Π° списка всСх ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π² настоящСС врСмя установлСны Π² вашСй систСмС:

$ kubectl plugin list

Π­Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ прСдупрСТдСния, Ссли Ρƒ вас Π΅ΡΡ‚ΡŒ нСсколько ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ² с ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌΠΈ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ, ΠΈΠ»ΠΈ Ссли Π΅ΡΡ‚ΡŒ Ρ„Π°ΠΉΠ» ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ являСтся исполняСмым.

Поиск ΠΈ инсталляция ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ² ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Krew

ΠŸΠ»Π°Π³ΠΈΠ½Ρ‹ Kubectl ΠΏΡ€ΠΈΠ³ΠΎΠ΄Π½Ρ‹ для совмСстного ΠΈΠ»ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ использования ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΌ ΠΏΠ°ΠΊΠ΅Ρ‚Π°ΠΌ. Но Π³Π΄Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ ΠΏΠ»Π°Π³ΠΈΠ½Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ подСлились Π΄Ρ€ΡƒΠ³ΠΈΠ΅?

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ Krew Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ Π½Π° прСдоставлСниС ΡƒΠ½ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ для совмСстного использования, поиска, установки ΠΈ управлСния ΠΏΠ»Π°Π³ΠΈΠ½Π°ΠΌΠΈ kubectl. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ Π½Π°Π·Ρ‹Π²Π°Π΅Ρ‚ сСбя Β«ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ΠΎΠΌ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² для ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ² kubectlΒ» (Krew ΠΏΠΎΡ…ΠΎΠΆ Π½Π° Brew).

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-runtime, которая сущСствуСт ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ для написания ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ² kubectl.

Как ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ своими ΠΏΠ»Π°Π³ΠΈΠ½Π°ΠΌΠΈ

Если Π²Ρ‹ считаСтС, Ρ‡Ρ‚ΠΎ ваши ΠΏΠ»Π°Π³ΠΈΠ½Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ для Π΄Ρ€ΡƒΠ³ΠΈΡ…, Π½Π΅ ΡΡ‚Π΅ΡΠ½ΡΠΉΡ‚Π΅ΡΡŒ Π΄Π΅Π»ΠΈΡ‚ΡŒΡΡ ΠΈΠΌ Π½Π° GitHub. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΠΈΡ… Π² Ρ‚Π΅ΠΌΡƒ kubectl-plugins.

Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°ΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ вашСго ΠΏΠ»Π°Π³ΠΈΠ½Π° Π² список Krew. Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΠΈ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, Π΅ΡΡ‚ΡŒ Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ GitHub.

АвтодополнСниС ΠΊΠΎΠΌΠ°Π½Π΄

Π’ настоящСС врСмя ΠΏΠ»Π°Π³ΠΈΠ½Ρ‹ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ Π°Π²Ρ‚ΠΎΠ΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅. Π’ΠΎ Π΅ΡΡ‚ΡŒ Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΏΠΎΠ»Π½ΠΎΠ΅ имя ΠΏΠ»Π°Π³ΠΈΠ½Π° ΠΈ ΠΏΠΎΠ»Π½Ρ‹Π΅ ΠΈΠΌΠ΅Π½Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ².

Π’ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ GitHub kubectl для этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π΅ΡΡ‚ΡŒ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ запрос. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎ эта функция Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΠΊΠΎΠ³Π΄Π°-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ.

Π£Π΄Π°Ρ‡ΠΈ!!!

Π§Ρ‚ΠΎ Π΅Ρ‰Π΅ ΠΏΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅:

  1. Π’Ρ€ΠΈ уровня Π°Π²Ρ‚ΠΎΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ Π² Kubernetes ΠΈ ΠΊΠ°ΠΊ ΠΈΡ… эффСктивно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ.
  2. Kubernetes Π² Π΄ΡƒΡ…Π΅ пиратства с шаблоном ΠΏΠΎ Π²Π½Π΅Π΄Ρ€Π΅Π½ΠΈΡŽ.
  3. Наш ΠΊΠ°Π½Π°Π» Π’ΠΎΠΊΡ€ΡƒΠ³ Kubernetes Π² Π’Π΅Π»Π΅Π³Ρ€Π°ΠΌΠ΅.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ