Как Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ kubectl ΠΏΠΎ-Π΅Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎ: ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ Ρ€ΡŠΠΊΠΎΠ²ΠΎΠ΄ΡΡ‚Π²ΠΎ

Как Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ kubectl ΠΏΠΎ-Π΅Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎ: ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ Ρ€ΡŠΠΊΠΎΠ²ΠΎΠ΄ΡΡ‚Π²ΠΎ
Ако Ρ€Π°Π±ΠΎΡ‚ΠΈΡ‚Π΅ с Kubernetes, Ρ‚ΠΎΠ³Π°Π²Π° kubectl вСроятно Π΅ Π΅Π΄Π½Π° ΠΎΡ‚ ΠΏΠΎΠΌΠΎΡ‰Π½ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ Π½Π°ΠΉ-ΠΌΠ½ΠΎΠ³ΠΎ. И Π²ΠΈΠ½Π°Π³ΠΈ, ΠΊΠΎΠ³Π°Ρ‚ΠΎ ΠΏΡ€Π΅ΠΊΠ°Ρ€Π²Π°Ρ‚Π΅ ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π² Ρ€Π°Π±ΠΎΡ‚Π° с ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ инструмСнт, си струва Π΄Π° Π³ΠΎ ΠΏΡ€ΠΎΡƒΡ‡ΠΈΡ‚Π΅ Π΄ΠΎΠ±Ρ€Π΅ ΠΈ Π΄Π° сС Π½Π°ΡƒΡ‡ΠΈΡ‚Π΅ ΠΊΠ°ΠΊ Π΄Π° Π³ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ Π΅Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎ.

ΠžΡ‚Π±ΠΎΡ€ Kubernetes aaS ΠΎΡ‚ Mail.ru ΠΏΡ€Π΅Π²Π΅Π΄Π΅Ρ‚Π΅ статия ΠΎΡ‚ Daniel Weibel, Π² която Ρ‰Π΅ Π½Π°ΠΌΠ΅Ρ€ΠΈΡ‚Π΅ ΡΡŠΠ²Π΅Ρ‚ΠΈ ΠΈ Ρ‚Ρ€ΠΈΠΊΠΎΠ²Π΅ Π·Π° Π΅Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½Π° Ρ€Π°Π±ΠΎΡ‚Π° с kubectl. ОсвСн Ρ‚ΠΎΠ²Π° Ρ‰Π΅ Π²ΠΈ ΠΏΠΎΠΌΠΎΠ³Π½Π΅ Π΄Π° Ρ€Π°Π·Π±Π΅Ρ€Π΅Ρ‚Π΅ ΠΏΠΎ-Π·Π°Π΄ΡŠΠ»Π±ΠΎΡ‡Π΅Π½ΠΎ Kubernetes.

Π‘ΠΏΠΎΡ€Π΅Π΄ Π°Π²Ρ‚ΠΎΡ€Π°, Ρ†Π΅Π»Ρ‚Π° Π½Π° статията Π΅ Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈ Π΅ΠΆΠ΅Π΄Π½Π΅Π²Π½Π°Ρ‚Π° Π²ΠΈ Ρ€Π°Π±ΠΎΡ‚Π° с Kubernetes Π½Π΅ само ΠΏΠΎ-Π΅Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½Π°, Π½ΠΎ ΠΈ ΠΏΠΎ-приятна!

Π’ΡŠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅: Какво Π΅ kubectl

ΠŸΡ€Π΅Π΄ΠΈ Π΄Π° ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° сС Π½Π°ΡƒΡ‡ΠΈΡ‚Π΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ kubectl ΠΏΠΎ-Π΅Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎ, трябва Π΄Π° ΠΏΡ€ΠΈΠ΄ΠΎΠ±ΠΈΠ΅Ρ‚Π΅ основно Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ Π·Π° Ρ‚ΠΎΠ²Π° ΠΊΠ°ΠΊΠ²ΠΎ прСдставлява ΠΈ ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚ΠΈ.

ΠžΡ‚ Π³Π»Π΅Π΄Π½Π° Ρ‚ΠΎΡ‡ΠΊΠ° Π½Π° потрСбитСля kubectl Π΅ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅Π½ ΠΏΠ°Π½Π΅Π», ΠΊΠΎΠΉΡ‚ΠΎ Π²ΠΈ позволява Π΄Π° ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π°Ρ‚Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π° Kubernetes.

ВСхничСски ΠΏΠΎΠ³Π»Π΅Π΄Π½Π°Ρ‚ΠΎ, kubectl Π΅ API ΠΊΠ»ΠΈΠ΅Π½Ρ‚ Π½Π° Kubernetes.

Kubernetes API Π΅ HTTP REST API. Π’ΠΎΠ·ΠΈ API Π΅ истинският потрСбитСлски интСрфСйс Π½Π° Kubernetes, Ρ‡Ρ€Π΅Π· ΠΊΠΎΠΉΡ‚ΠΎ сС ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€Π° напълно. Π’ΠΎΠ²Π° ΠΎΠ·Π½Π°Ρ‡Π°Π²Π°, Ρ‡Π΅ всяка опСрация Π½Π° Kubernetes Π΅ ΠΈΠ·Π»ΠΎΠΆΠ΅Π½Π° ΠΊΠ°Ρ‚ΠΎ ΠΊΡ€Π°ΠΉΠ½Π° Ρ‚ΠΎΡ‡ΠΊΠ° Π½Π° API ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС Π½Π°ΠΏΡ€Π°Π²Π΅Π½Π° с HTTP заявка към Ρ‚Π°Π·ΠΈ ΠΊΡ€Π°ΠΉΠ½Π° Ρ‚ΠΎΡ‡ΠΊΠ°.

Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»Π½ΠΎ основната Ρ€Π°Π±ΠΎΡ‚Π° Π½Π° kubectl Π΅ Π΄Π° ΠΏΡ€Π°Π²ΠΈ HTTP заявки към Kubernetes API:

Как Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ 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 заявки към ΡΡŠΠΎΡ‚Π²Π΅Ρ‚Π½ΠΈΡ‚Π΅ ΠΊΡ€Π°ΠΉΠ½ΠΈ Ρ‚ΠΎΡ‡ΠΊΠΈ Π½Π° Kubernetes API.

Моля, ΠΈΠΌΠ°ΠΉΡ‚Π΅ ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄, Ρ‡Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ напълно Π΄Π° управляватС Kubernetes с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° ΠΏΠΎΠΌΠΎΡ‰Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ° ΠΊΠ°Ρ‚ΠΎ curlΡ‡Ρ€Π΅Π· Ρ€ΡŠΡ‡Π½ΠΎ ΠΈΠ·ΠΏΡ€Π°Ρ‰Π°Π½Π΅ Π½Π° HTTP заявки към Kubernetes API. Kubectl просто улСснява ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Kubernetes API.

Π’ΠΎΠ²Π° са основитС Π½Π° Ρ‚ΠΎΠ²Π° ΠΊΠ°ΠΊΠ²ΠΎ Π΅ kubectl ΠΈ ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚ΠΈ. Но ΠΈΠΌΠ° ΠΎΡ‰Π΅ Π½Π΅Ρ‰ΠΎ Π·Π° Kubernetes API, ΠΊΠΎΠ΅Ρ‚ΠΎ всСки ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π» Π½Π° kubectl трябва Π΄Π° Π·Π½Π°Π΅. НСка Π΄Π° Π½Π°Π΄Π½ΠΈΠΊΠ½Π΅ΠΌ Π½Π°Π±ΡŠΡ€Π·ΠΎ във Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½ΠΈΡ свят Π½Π° Kubernetes.

Π’ΡŠΡ‚Ρ€Π΅ΡˆΠ½ΠΈΡΡ‚ свят Π½Π° Kubernetes

Kubernetes сС ΡΡŠΡΡ‚ΠΎΠΈ ΠΎΡ‚ Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ нСзависими ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ сС ΠΈΠ·ΠΏΡŠΠ»Π½ΡΠ²Π°Ρ‚ ΠΊΠ°Ρ‚ΠΎ ΠΎΡ‚Π΄Π΅Π»Π½ΠΈ процСси Π² ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π½ΠΈ възли. Някои ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈ работят Π½Π° Π³Π»Π°Π²Π½ΠΈ възли, Π΄Ρ€ΡƒΠ³ΠΈ Π½Π° Ρ€Π°Π±ΠΎΡ‚Π½ΠΈ възли, ΠΊΠ°Ρ‚ΠΎ всСки ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ изпълнява своя спСцифична Π·Π°Π΄Π°Ρ‡Π°.

Π•Ρ‚ΠΎ Π½Π°ΠΉ-Π²Π°ΠΆΠ½ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈ Π½Π° основнитС възли:

  1. Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ - ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π° Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ†ΠΈΠΈ Π½Π° рСсурси (ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ Π΅ etcd).
  2. API ΡΡŠΡ€Π²ΡŠΡ€ β€” прСдоставя API ΠΈ управлява ΡΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅.
  3. ΠœΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€ Π½Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅Ρ€Π° β€” Π“Π°Ρ€Π°Π½Ρ‚ΠΈΡ€Π°, Ρ‡Π΅ статуситС Π½Π° рСсурситС отговарят Π½Π° спСцификациитС.
  4. ΠŸΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‡ΠΈΠΊ β€” ΠΏΠ»Π°Π½ΠΈΡ€Π° ΠΏΠΎΠ΄ΠΎΠ²Π΅ Π½Π° Ρ€Π°Π±ΠΎΡ‚Π½ΠΈ възли.

И Π΅Ρ‚ΠΎ Π΅Π΄ΠΈΠ½ Π½Π°ΠΉ-Π²Π°ΠΆΠ΅Π½ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Π½Π° Ρ€Π°Π±ΠΎΡ‚Π½ΠΈΡ‚Π΅ възли:

  1. ΠšΡƒΠ±Π΅Π»Π΅Ρ‚ β€” управлява стартиранСто Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ Π½Π° работния възСл.

Π—Π° Π΄Π° Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ ΠΊΠ°ΠΊ Ρ‚Π΅Π·ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈ работят Π·Π°Π΅Π΄Π½ΠΎ, Π½Π΅ΠΊΠ° Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ Π΅Π΄ΠΈΠ½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€.

Π”Π° ΠΏΡ€ΠΈΠ΅ΠΌΠ΅ΠΌ, Ρ‡Π΅ Ρ‚ΠΎΠΊΡƒ-Ρ‰ΠΎ стС Π·Π°Π²ΡŠΡ€ΡˆΠΈΠ»ΠΈ 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 създава дСфиниция Π½Π° pod Π·Π° всяка Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ° Π½Π° ReplicaSet (спорСд шаблона Π½Π° pod Π² дСфиницията Π½Π° ReplicaSet) ΠΈ Π³ΠΈ ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π° Π² Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅:

    Как Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ kubectl ΠΏΠΎ-Π΅Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎ: ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ Ρ€ΡŠΠΊΠΎΠ²ΠΎΠ΄ΡΡ‚Π²ΠΎ

  4. ΠŸΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‡ΠΈΠΊΡŠΡ‚ сС стартира, прослСдявайки ΠΌΠΎΠ΄ΡƒΠ»ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ всС ΠΎΡ‰Π΅ Π½Π΅ са присвоСни Π½Π° Ρ€Π°Π±ΠΎΡ‚Π½ΠΈ възли:

    Как Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ kubectl ΠΏΠΎ-Π΅Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎ: ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ Ρ€ΡŠΠΊΠΎΠ²ΠΎΠ΄ΡΡ‚Π²ΠΎ

  5. ΠŸΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‡ΠΈΠΊΡŠΡ‚ ΠΈΠ·Π±ΠΈΡ€Π° подходящ Ρ€Π°Π±ΠΎΡ‚Π΅Π½ възСл Π·Π° всСки pod ΠΈ добавя Ρ‚Π°Π·ΠΈ информация към дСфиницията Π½Π° pod Π² ΠΌΠ°Π³Π°Π·ΠΈΠ½Π°:

    Как Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ kubectl ΠΏΠΎ-Π΅Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎ: ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ Ρ€ΡŠΠΊΠΎΠ²ΠΎΠ΄ΡΡ‚Π²ΠΎ

  6. На работния възСл, към ΠΊΠΎΠΉΡ‚ΠΎ Π΅ присвоСн ΠΏΠΎΠ΄ΡŠΡ‚, Kubelet сС стартира, Ρ‚ΠΎΠΉ прослСдява ΠΏΠΎΠ΄ΠΎΠ²Π΅Ρ‚Π΅, присвоСни Π½Π° Ρ‚ΠΎΠ·ΠΈ възСл:

    Как Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ kubectl ΠΏΠΎ-Π΅Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎ: ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ Ρ€ΡŠΠΊΠΎΠ²ΠΎΠ΄ΡΡ‚Π²ΠΎ

  7. Kubelet Ρ‡Π΅Ρ‚Π΅ дСфиницията Π½Π° pod ΠΎΡ‚ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅Ρ‚ΠΎ ΠΈ инструктира срСда Π·Π° изпълнСниС Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€, ΠΊΠ°Ρ‚ΠΎ Docker, Π΄Π° стартира ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ Π½Π° възСла:

    Как Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ kubectl ΠΏΠΎ-Π΅Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎ: ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ Ρ€ΡŠΠΊΠΎΠ²ΠΎΠ΄ΡΡ‚Π²ΠΎ

По-Π΄ΠΎΠ»Ρƒ Π΅ тСкстова вСрсия Π½Π° Ρ‚ΠΎΠ²Π° описаниС.

API заявката към ΠΊΡ€Π°ΠΉΠ½Π°Ρ‚Π° Ρ‚ΠΎΡ‡ΠΊΠ° Π·Π° създаванС Π½Π° ReplicaSet сС ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π° ΠΎΡ‚ API ΡΡŠΡ€Π²ΡŠΡ€Π°. API ΡΡŠΡ€Π²ΡŠΡ€ΡŠΡ‚ удостовСрява заявката ΠΈ ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π° дСфиницията Π½Π° рСсурса ReplicaSet Π² Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅Ρ‚ΠΎ.

Π’ΠΎΠ²Π° ΡΡŠΠ±ΠΈΡ‚ΠΈΠ΅ стартира ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅Ρ€Π° ReplicaSet, ΠΊΠΎΠΉΡ‚ΠΎ Π΅ подпроцСс Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π½Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅Ρ€Π°. ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅Ρ€ΡŠΡ‚ ReplicaSet слСди ΡΡŠΠ·Π΄Π°Π²Π°Π½Π΅Ρ‚ΠΎ, Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ ΠΈ ΠΈΠ·Ρ‚Ρ€ΠΈΠ²Π°Π½Π΅Ρ‚ΠΎ Π½Π° рСсурси Π½Π° ReplicaSet Π² Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅Ρ‚ΠΎ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π° извСстиС Π·Π° ΡΡŠΠ±ΠΈΡ‚ΠΈΠ΅, ΠΊΠΎΠ³Π°Ρ‚ΠΎ Ρ‚ΠΎΠ²Π° сС случи.

Π—Π°Π΄Π°Ρ‡Π°Ρ‚Π° Π½Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅Ρ€Π° ReplicaSet Π΅ Π΄Π° Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€Π°, Ρ‡Π΅ ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π° нСобходимия Π±Ρ€ΠΎΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ReplicaSet. Π’ нашия ΠΏΡ€ΠΈΠΌΠ΅Ρ€ всС ΠΎΡ‰Π΅ Π½Π΅ ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Ρ‚ ΠΏΠΎΠ΄ΠΎΠ²Π΅, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅Ρ€ΡŠΡ‚ Π½Π° ReplicaSet създава Ρ‚Π΅Π·ΠΈ Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ†ΠΈΠΈ Π½Π° ΠΏΠΎΠ΄ (спорСд шаблона Π½Π° ΠΏΠΎΠ΄ Π² дСфиницията Π½Π° ReplicaSet) ΠΈ Π³ΠΈ ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π° Π² Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅.

Π‘ΡŠΠ·Π΄Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π½ΠΎΠ²ΠΈ ΠΏΠΎΠ΄ΠΎΠ²Π΅ сС задСйства ΠΎΡ‚ ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‡ΠΈΠΊ, ΠΊΠΎΠΉΡ‚ΠΎ слСди Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ†ΠΈΠΈ Π½Π° ΠΏΠΎΠ΄ΠΎΠ²Π΅, ΠΊΠΎΠΈΡ‚ΠΎ всС ΠΎΡ‰Π΅ Π½Π΅ са ΠΏΠ»Π°Π½ΠΈΡ€Π°Π½ΠΈ Π·Π° Ρ€Π°Π±ΠΎΡ‚Π½ΠΈ възли. ΠŸΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‡ΠΈΠΊΡŠΡ‚ ΠΈΠ·Π±ΠΈΡ€Π° подходящ Ρ€Π°Π±ΠΎΡ‚Π΅Π½ възСл Π·Π° всСки pod ΠΈ Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€Π° Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ†ΠΈΠΈΡ‚Π΅ Π½Π° pod Π² Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅Ρ‚ΠΎ.

ΠžΠ±ΡŠΡ€Π½Π΅Ρ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Π΅ Π΄ΠΎ Ρ‚ΠΎΠ·ΠΈ ΠΌΠΎΠΌΠ΅Π½Ρ‚ никъдС Π² ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π° Π½Π΅ сС изпълнявашС ΠΊΠΎΠ΄ Π·Π° Ρ€Π°Π±ΠΎΡ‚Π½ΠΎ Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅. Всичко, ΠΊΠΎΠ΅Ρ‚ΠΎ Π΅ Π½Π°ΠΏΡ€Π°Π²Π΅Π½ΠΎ Π΄ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° - Ρ‚ΠΎΠ²Π° Π΅ ΡΡŠΠ·Π΄Π°Π²Π°Π½Π΅Ρ‚ΠΎ ΠΈ Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° рСсурси Π² Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅Ρ‚ΠΎ Π½Π° главния възСл.

ΠŸΠΎΡΠ»Π΅Π΄Π½ΠΎΡ‚ΠΎ ΡΡŠΠ±ΠΈΡ‚ΠΈΠ΅ задСйства Kubelets, ΠΊΠΎΠΈΡ‚ΠΎ Π½Π°Π±Π»ΡŽΠ΄Π°Π²Π°Ρ‚ ΠΌΠΎΠ΄ΡƒΠ»ΠΈΡ‚Π΅, ΠΏΠ»Π°Π½ΠΈΡ€Π°Π½ΠΈ Π·Π° Ρ‚Π΅Ρ…Π½ΠΈΡ‚Π΅ Ρ€Π°Π±ΠΎΡ‚Π½ΠΈ възли. Kubelet Π½Π° работния възСл, Π½Π° ΠΊΠΎΠΉΡ‚ΠΎ са инсталирани Π²Π°ΡˆΠΈΡ‚Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ReplicaSet, трябва Π΄Π° инструктира срСдата Π·Π° изпълнСниС Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°, ΠΊΠ°Ρ‚ΠΎ Docker, Π΄Π° ΠΈΠ·Ρ‚Π΅Π³Π»ΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΈΡ‚Π΅ изобраТСния Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° ΠΈ Π΄Π° Π³ΠΈ стартира.

Π’ Ρ‚ΠΎΠ·ΠΈ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Π°ΡˆΠ΅Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ReplicaSet Π½Π°ΠΉ-накрая Ρ€Π°Π±ΠΎΡ‚ΠΈ!

Роля на Kubernetes API

ΠšΠ°ΠΊΡ‚ΠΎ видяхтС Π² ΠΏΡ€Π΅Π΄ΠΈΡˆΠ½ΠΈΡ ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈΡ‚Π΅ Π½Π° Kubernetes (с ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π½Π° API ΡΡŠΡ€Π²ΡŠΡ€Π° ΠΈ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅Ρ‚ΠΎ) слСдят Π·Π° ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ Π² рСсурситС Π² Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅Ρ‚ΠΎ ΠΈ промСнят информацията Π·Π° рСсурситС Π² Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅Ρ‚ΠΎ.

Π Π°Π·Π±ΠΈΡ€Π° сС, Ρ‚Π΅Π·ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈ Π½Π΅ взаимодСйстват Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ със ΡΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ, Π° само Ρ‡Ρ€Π΅Π· Kubernetes API.

Π Π°Π·Π³Π»Π΅Π΄Π°ΠΉΡ‚Π΅ слСднитС ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΈ:

  1. ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅Ρ€ΡŠΡ‚ ReplicaSet ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΊΡ€Π°ΠΉΠ½Π°Ρ‚Π° Ρ‚ΠΎΡ‡ΠΊΠ° Π½Π° API списък ReplicaSets с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚ΡŠΡ€ watch Π·Π° наблюдСниС Π½Π° ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅ Π² рСсурситС Π½Π° ReplicaSet.
  2. ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅Ρ€ΡŠΡ‚ ReplicaSet ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΊΡ€Π°ΠΉΠ½Π°Ρ‚Π° Ρ‚ΠΎΡ‡ΠΊΠ° Π½Π° API ΡΡŠΠ·Π΄Π°ΠΉΡ‚Π΅ Pod (създаванС Π½Π° ΠΏΠΎΠ΄), Π·Π° Π΄Π° ΡΡŠΠ·Π΄Π°Π΄Π΅Ρ‚Π΅ ΠΏΠΎΠ΄.
  3. ΠŸΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‡ΠΈΠΊΡŠΡ‚ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΊΡ€Π°ΠΉΠ½Π° Ρ‚ΠΎΡ‡ΠΊΠ° Π½Π° API ΠΊΡ€ΡŠΠΏΠΊΠ° ΠΏΠΎΠ΄ (edit pod), Π·Π° Π΄Π° Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€Π°Ρ‚Π΅ pods с информация Π·Π° избрания Ρ€Π°Π±ΠΎΡ‚Π΅Π½ възСл.

ΠšΠ°ΠΊΡ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π²ΠΈΠ΄ΠΈΡ‚Π΅, Ρ‚ΠΎΠ²Π° Π΅ ΡΡŠΡ‰ΠΈΡΡ‚ 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, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ ΠΏΡŠΡ€Π²ΠΎ трябва Π΄Π° Π³ΠΎ инсталиратС:

$ sudo apt-get install bash-completion

Или:

$ yum install bash-completion

ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚Π΅ Π΄Π°Π»ΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚ΡŠΡ‚ Π΅ инсталиран ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ, ΠΊΠ°Ρ‚ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ слСдната ΠΊΠΎΠΌΠ°Π½Π΄Π°:

$ type _init_completion

Ако Ρ‚ΠΎΠ²Π° ΠΈΠ·Π²Π΅ΠΆΠ΄Π° ΠΊΠΎΠ΄ Π½Π° функцията Π½Π° ΠΎΠ±Π²ΠΈΠ²ΠΊΠ°Ρ‚Π°, Ρ‚ΠΎΠ³Π°Π²Π° bash-Π·Π°Π²ΡŠΡ€ΡˆΠ²Π°Π½Π΅Ρ‚ΠΎ Π΅ инсталирано ΠΏΡ€Π°Π²ΠΈΠ»Π½ΠΎ. Ако ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° Π΄Π°Π²Π° Π³Ρ€Π΅ΡˆΠΊΠ° β€žΠΠ΅ Π΅ Π½Π°ΠΌΠ΅Ρ€Π΅Π½ΠΎβ€œ, трябва Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΡ‚Π΅ слСдния Ρ€Π΅Π΄ към вашия Ρ„Π°ΠΉΠ» ~ / .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-Π·Π°Π²ΡŠΡ€ΡˆΠ²Π°Π½Π΅, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ ΠΏΡŠΡ€Π²ΠΎ трябва Π΄Π° Π³ΠΎ инсталиратС.

ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° инсталиратС bash-completion с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Homebrew:

$ brew install bash-completion@2

Π’ΡƒΠΊ @2 ΠΎΠ·Π½Π°Ρ‡Π°Π²Π° bash-completion вСрсия 2. kubectl autocompletion изисква bash-completion v2, Π° bash-completion v2 изисква ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ Bash вСрсия 4.1.

КомандСн ΠΈΠ·Ρ…ΠΎΠ΄ brew-install ΡΡŠΠ΄ΡŠΡ€ΠΆΠ° Ρ€Π°Π·Π΄Π΅Π» ΠŸΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΡ, ΠΊΠΎΠΉΡ‚ΠΎ ΡƒΠΊΠ°Π·Π²Π° ΠΊΠ°ΠΊΠ²ΠΎ трябва Π΄Π° сС Π΄ΠΎΠ±Π°Π²ΠΈ към Ρ„Π°ΠΉΠ»Π° ~/.bash_profile:

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

Π’ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‚ΠΎΠ²Π° ΠΏΡ€Π΅ΠΏΠΎΡ€ΡŠΡ‡Π²Π°ΠΌ Π΄Π° Π½Π΅ добавятС Ρ‚Π΅Π·ΠΈ Ρ€Π΅Π΄ΠΎΠ²Π΅ към ~/.bash_profileИ Π² ~/.bashrc. Π’ Ρ‚ΠΎΠ·ΠΈ случай Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎΡ‚ΠΎ Π΄ΠΎΠ²ΡŠΡ€ΡˆΠ²Π°Π½Π΅ Ρ‰Π΅ бъдС Π΄ΠΎΡΡ‚ΡŠΠΏΠ½ΠΎ Π½Π΅ само Π² Π³Π»Π°Π²Π½ΠΈΡ‚Π΅, Π½ΠΎ ΠΈ Π² Π΄ΡŠΡ‰Π΅Ρ€Π½ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΈ Ρ‡Π΅Ρ€ΡƒΠΏΠΊΠΈ.

Π‘Π»Π΅Π΄ ΠΊΠ°Ρ‚ΠΎ рСстартиратС ΠΊΠΎΠΌΠ°Π½Π΄Π½Π°Ρ‚Π° ΠΎΠ±Π²ΠΈΠ²ΠΊΠ°, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚Π΅ Π΄Π°Π»ΠΈ инсталацията Π΅ ΠΏΡ€Π°Π²ΠΈΠ»Π½Π°, ΠΊΠ°Ρ‚ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ слСдната ΠΊΠΎΠΌΠ°Π½Π΄Π°:

$ type _init_completion

Ако Π²ΠΈΠ΄ΠΈΡ‚Π΅ функция Π½Π° ΠΎΠ±Π²ΠΈΠ²ΠΊΠ°Ρ‚Π° Π² ΠΈΠ·Ρ…ΠΎΠ΄Π°, Ρ‚ΠΎΠ³Π°Π²Π° всичко Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Π½ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»Π½ΠΎ.

Π‘Π΅Π³Π° трябва Π΄Π° сС ΡƒΠ²Π΅Ρ€ΠΈΠΌ, Ρ‡Π΅ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎΡ‚ΠΎ Π΄ΠΎΠ²ΡŠΡ€ΡˆΠ²Π°Π½Π΅ Π½Π° kubectl Π΅ Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½ΠΎ във всички сСсии.

Π•Π΄ΠΈΠ½ ΠΎΡ‚ Π½Π°Ρ‡ΠΈΠ½ΠΈΡ‚Π΅ Π΅ Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΡ‚Π΅ слСдния Ρ€Π΅Π΄ към вашия ~/.bashrc:

source <(kubectl completion bash)

Вторият Π½Π°Ρ‡ΠΈΠ½ Π΅ Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΡ‚Π΅ скрипт Π·Π° Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ Π΄ΠΎΠ²ΡŠΡ€ΡˆΠ²Π°Π½Π΅ към ΠΏΠ°ΠΏΠΊΠ°Ρ‚Π° /usr/local/etc/bash_completion.d:

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

Π’ΠΎΠ·ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ Ρ‰Π΅ Ρ€Π°Π±ΠΎΡ‚ΠΈ само Π°ΠΊΠΎ стС инсталирали bash-completion с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Homebrew. Π’ Ρ‚ΠΎΠ·ΠΈ случай bash-completion Π·Π°Ρ€Π΅ΠΆΠ΄Π° всички скриптовС ΠΎΡ‚ Ρ‚Π°Π·ΠΈ дирСктория.

Ако стС инсталирали kubectl с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Homebrew, Ρ‚ΠΎΠ³Π°Π²Π° няма Π½ΡƒΠΆΠ΄Π° Π΄Π° ΠΈΠ·ΠΏΡŠΠ»Π½ΡΠ²Π°Ρ‚Π΅ ΠΏΡ€Π΅Π΄ΠΈΡˆΠ½Π°Ρ‚Π° ΡΡ‚ΡŠΠΏΠΊΠ°, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ ΡΠΊΡ€ΠΈΠΏΡ‚ΡŠΡ‚ Π·Π° Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ Π΄ΠΎΠ²ΡŠΡ€ΡˆΠ²Π°Π½Π΅ Ρ‰Π΅ бъдС Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ поставСн Π² ΠΏΠ°ΠΏΠΊΠ°Ρ‚Π° /usr/local/etc/bash_completion.d ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° ΠΌΠΎΠ½Ρ‚Π°ΠΆΠ°. Π’ Ρ‚ΠΎΠ·ΠΈ случай Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎΡ‚ΠΎ Π΄ΠΎΠ²ΡŠΡ€ΡˆΠ²Π°Π½Π΅ Π½Π° kubectl Ρ‰Π΅ Π·Π°ΠΏΠΎΡ‡Π½Π΅ Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ Π²Π΅Π΄Π½Π°Π³Π° слСд ΠΊΠ°Ρ‚ΠΎ инсталиратС bash-completion.

Π’ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ Π½Π° Ρ‚ΠΎΠ²Π° всички Ρ‚Π΅Π·ΠΈ ΠΎΠΏΡ†ΠΈΠΈ са Π΅ΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½Ρ‚Π½ΠΈ.

Zsh

Π‘ΠΊΡ€ΠΈΠΏΡ‚ΠΎΠ²Π΅Ρ‚Π΅ Π·Π° Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ Π΄ΠΎΠ²ΡŠΡ€ΡˆΠ²Π°Π½Π΅ Π·Π° Zsh Π½Π΅ изискват Π½ΠΈΠΊΠ°ΠΊΠ²ΠΈ зависимости. Всичко, ΠΊΠΎΠ΅Ρ‚ΠΎ трябва Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅, Π΅ Π΄Π° Π³ΠΈ Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Ρ‚Π΅, ΠΊΠΎΠ³Π°Ρ‚ΠΎ Π·Π°Ρ€Π΅Π΄ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π½Π°Ρ‚Π° ΠΎΠ±Π²ΠΈΠ²ΠΊΠ°.

ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ Ρ‚ΠΎΠ²Π°, ΠΊΠ°Ρ‚ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚Π΅ Ρ€Π΅Π΄ към вашия ~/.zshrc Ρ„Π°ΠΉΠ»:

source <(kubectl completion zsh)

Ако ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ Π³Ρ€Π΅ΡˆΠΊΠ° not found: compdef слСд ΠΊΠ°Ρ‚ΠΎ рСстартиратС Π²Π°ΡˆΠ°Ρ‚Π° ΠΎΠ±Π²ΠΈΠ²ΠΊΠ°, трябва Π΄Π° Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Ρ‚Π΅ Π²Π³Ρ€Π°Π΄Π΅Π½Π°Ρ‚Π° функция compdef. ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π³ΠΎ Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Ρ‚Π΅, ΠΊΠ°Ρ‚ΠΎ Π³ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚Π΅ Π² Π½Π°Ρ‡Π°Π»ΠΎΡ‚ΠΎ Π½Π° вашия Ρ„Π°ΠΉΠ» ~/.zshrc слСдното:

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.

Π‘Π΅Π³Π° Π΄Π° ΠΊΠ°ΠΆΠ΅ΠΌ, Ρ‡Π΅ искатС Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΡ‚Π΅ Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½Π° ΠΊΠΎΠ»ΠΎΠ½Π° към ΠΈΠ·Ρ…ΠΎΠ΄Π°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΠΎΠΊΠ°Π·Π²Π°Ρ‰Π° възСла, Π½Π° ΠΊΠΎΠΉΡ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚ΠΈ всСки pod. Π—Π° Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ Ρ‚ΠΎΠ²Π°, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ просто Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΡ‚Π΅ подходящата спСцификация Π½Π° ΠΊΠΎΠ»ΠΎΠ½Π° към опцията Π·Π° пСрсонализирани ΠΊΠΎΠ»ΠΎΠ½ΠΈ:

$ 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 спСцификация Π½Π° рСсурса Π½Π° pod. По-ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π° информация ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π½Π°ΠΌΠ΅Ρ€ΠΈΡ‚Π΅ Π² ΠΈΠ·Ρ…ΠΎΠ΄Π° 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 ΡΡŠΠ΄ΡŠΡ€ΠΆΠ° Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ контСксти. ΠšΠΎΠ½Ρ‚Π΅ΠΊΡΡ‚ΡŠΡ‚ сС ΡΡŠΡΡ‚ΠΎΠΈ ΠΎΡ‚ Ρ‚Ρ€ΠΈ Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚Π°:

  • ΠšΠ»ΡŠΡΡ‚Π΅Ρ€ β€” API URL Π½Π° ΡΡŠΡ€Π²ΡŠΡ€Π° Π½Π° ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π°.
  • ΠŸΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π» - потрСбитСлски ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΎΠ½Π½ΠΈ Π΄Π°Π½Π½ΠΈ Π·Π° удостовСряванС Π² ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π°.
  • ΠŸΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚Π²ΠΎ ΠΎΡ‚ ΠΈΠΌΠ΅Π½Π° - пространството ΠΎΡ‚ ΠΈΠΌΠ΅Π½Π°, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΎ ΠΏΡ€ΠΈ ΠΏΡ€ΠΈΡΡŠΠ΅Π΄ΠΈΠ½ΡΠ²Π°Π½Π΅ към ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π°.

На ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° Ρ‚Π΅ чСсто ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ Π΅Π΄ΠΈΠ½ контСкст Π½Π° ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ Π² своя kubeconfig. ΠœΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠ±Π°Ρ‡Π΅ Π΄Π° ΠΈΠΌΠ°Ρ‚Π΅ мноТСство контСксти Π½Π° ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€, Π΄ΠΈΡ„Π΅Ρ€Π΅Π½Ρ†ΠΈΡ€Π°Π½ΠΈ ΠΏΠΎ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π» ΠΈΠ»ΠΈ пространство ΠΎΡ‚ ΠΈΠΌΠ΅Π½Π°. Π’ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‚ΠΎΠ²Π°, Ρ‚Π°Π·ΠΈ многоконтСкстна конфигурация Π΅ Π½Π΅ΠΎΠ±ΠΈΡ‡Π°ΠΉΠ½Π°, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ ΠΈΠΌΠ° ΡΡŠΠΏΠΎΡΡ‚Π°Π²ΡΠ½Π΅ Π΅Π΄Π½ΠΎ към Π΅Π΄Π½ΠΎ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ΠΈ ΠΈ контСксти.

Π’ΡŠΠ² всСки Π΅Π΄ΠΈΠ½ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π΅Π΄ΠΈΠ½ ΠΎΡ‚ контСкститС Π΅ Π°ΠΊΡ‚ΡƒΠ°Π»Π΅Π½:

Как Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ kubectl ΠΏΠΎ-Π΅Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎ: ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ Ρ€ΡŠΠΊΠΎΠ²ΠΎΠ΄ΡΡ‚Π²ΠΎ
ΠšΠΎΠ³Π°Ρ‚ΠΎ kubectl Ρ‡Π΅Ρ‚Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π΅Π½ Ρ„Π°ΠΉΠ», Ρ‚ΠΎΠΉ Π²ΠΈΠ½Π°Π³ΠΈ Π²Π·Π΅ΠΌΠ° информация ΠΎΡ‚ тСкущия контСкст. Π’ горния ΠΏΡ€ΠΈΠΌΠ΅Ρ€ kubectl Ρ‰Π΅ сС ΡΠ²ΡŠΡ€ΠΆΠ΅ с ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π° Hare.

Π‘ΡŠΠΎΡ‚Π²Π΅Ρ‚Π½ΠΎ, Π·Π° Π΄Π° ΠΏΡ€Π΅Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ към Π΄Ρ€ΡƒΠ³ ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€, трябва Π΄Π° ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅ тСкущия контСкст във Ρ„Π°ΠΉΠ»Π° kubeconfig:

Как Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ kubectl ΠΏΠΎ-Π΅Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎ: ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ Ρ€ΡŠΠΊΠΎΠ²ΠΎΠ΄ΡΡ‚Π²ΠΎ
Π‘Π΅Π³Π° kubectl Ρ‰Π΅ сС ΡΠ²ΡŠΡ€ΠΆΠ΅ с ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π° Fox.

Π—Π° Π΄Π° ΠΏΡ€Π΅Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ към Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΎ пространство ΠΎΡ‚ ΠΈΠΌΠ΅Π½Π° Π² ΡΡŠΡ‰ΠΈΡ ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€, трябва Π΄Π° ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅ стойността Π½Π° Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚Π° ΠΎΡ‚ пространство ΠΎΡ‚ ΠΈΠΌΠ΅Π½Π° Π·Π° тСкущия контСкст:

Как Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ 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Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ Ρ‚Π΅Π·ΠΈ псСвдоними.

Π—Π° Π΄Π° инсталиратС плъгини, трябва Π΄Π° ΠΈΠ·Ρ‚Π΅Π³Π»ΠΈΡ‚Π΅ shell скриптовС Π½Π° ΠΈΠΌΠ΅ kubectl-ctx ΠΈ kubectl-ns към всяка дирСктория във Π²Π°ΡˆΠ°Ρ‚Π° ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° PATH ΠΈ Π³ΠΈ Π½Π°ΠΏΡ€Π°Π²Π΅Ρ‚Π΅ изпълними с Π½Π°ΠΏΡ€. chmod +x. Π’Π΅Π΄Π½Π°Π³Π° слСд Ρ‚ΠΎΠ²Π° Ρ‰Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ kubectl ctx ΠΈ kubectl ns.

5. НамалСтС Π²ΡŠΠ²Π΅ΠΆΠ΄Π°Π½Π΅Ρ‚ΠΎ с Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΈ псСвдоними

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

Моля, ΠΎΠ±ΡŠΡ€Π½Π΅Ρ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Π΅ някои псСвдоними изискват Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ ΠΎΡ‚ командния Ρ€Π΅Π΄. НапримСр псСвдоним kgpol срСдства kubectl get pods -l. опция -l изисква Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ - спСцификация Π½Π° Π΅Ρ‚ΠΈΠΊΠ΅Ρ‚. Ако ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ псСвдоним, Ρ‰Π΅ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° Ρ‚Π°ΠΊΠ° kgpol app=ui.

Въй ΠΊΠ°Ρ‚ΠΎ някои псСвдоними изискват Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΈ, псСвдонимитС a, f ΠΈ l трябва Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ послСдни.

ΠšΠ°Ρ‚ΠΎ цяло, слСд ΠΊΠ°Ρ‚ΠΎ схванСтС Ρ‚Π°Π·ΠΈ схСма, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ½Ρ‚ΡƒΠΈΡ‚ΠΈΠ²Π½ΠΎ Π΄Π° ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Ρ‚Π΅ псСвдоними ΠΎΡ‚ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈΡ‚Π΅, ΠΊΠΎΠΈΡ‚ΠΎ искатС Π΄Π° ΠΈΠ·ΠΏΡŠΠ»Π½ΠΈΡ‚Π΅, ΠΈ Π΄Π° спСститС ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π·Π° писанС.

ΠΌΠΎΠ½Ρ‚Π°ΠΆ

Π—Π° Π΄Π° инсталиратС kubectl-aliases, трябва Π΄Π° ΠΈΠ·Ρ‚Π΅Π³Π»ΠΈΡ‚Π΅ Ρ„Π°ΠΉΠ»Π° .kubectl_aliases ΠΎΡ‚ GitHub ΠΈ Π³ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π΅Ρ‚Π΅ във Ρ„Π°ΠΉΠ»Π° ~/.bashrc ΠΈΠ»ΠΈ ~/.zshrc:

source ~/.kubectl_aliases

Автоматично Π΄ΠΎΠ²ΡŠΡ€ΡˆΠ²Π°Π½Π΅

ΠšΠ°ΠΊΡ‚ΠΎ ΠΊΠ°Π·Π°Ρ…ΠΌΠ΅ ΠΏΡ€Π΅Π΄ΠΈ, чСсто добавятС Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΈ Π΄ΡƒΠΌΠΈ към псСвдоним Π² командния Ρ€Π΅Π΄. НапримСр:

$ kgpooyaml test-pod-d4b77b989

Ако ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ Π΄ΠΎΠ²ΡŠΡ€ΡˆΠ²Π°Π½Π΅ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° kubectl, вСроятно стС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π»ΠΈ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ Π΄ΠΎΠ²ΡŠΡ€ΡˆΠ²Π°Π½Π΅ Π·Π° Π½Π΅Ρ‰Π° ΠΊΠ°Ρ‚ΠΎ ΠΈΠΌΠ΅Π½Π° Π½Π° рСсурси. Но ΠΌΠΎΠΆΠ΅ Π»ΠΈ Ρ‚ΠΎΠ²Π° Π΄Π° сС Π½Π°ΠΏΡ€Π°Π²ΠΈ, ΠΊΠΎΠ³Π°Ρ‚ΠΎ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ псСвдоними?

Π’ΠΎΠ²Π° Π΅ ΠΌΠ½ΠΎΠ³ΠΎ Π²Π°ΠΆΠ΅Π½ Π²ΡŠΠΏΡ€ΠΎΡ, Π·Π°Ρ‰ΠΎΡ‚ΠΎ Π°ΠΊΠΎ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎΡ‚ΠΎ Π΄ΠΎΠ²ΡŠΡ€ΡˆΠ²Π°Π½Π΅ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚ΠΈ, Ρ‰Π΅ Π·Π°Π³ΡƒΠ±ΠΈΡ‚Π΅ някои ΠΎΡ‚ прСдимствата Π½Π° псСвдонимитС.

ΠžΡ‚Π³ΠΎΠ²ΠΎΡ€ΡŠΡ‚ зависи ΠΎΡ‚ Ρ‚ΠΎΠ²Π° коя ΠΎΠ±Π²ΠΈΠ²ΠΊΠ° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅:

  1. Π—Π° Zsh Π·Π°Π²ΡŠΡ€ΡˆΠ²Π°Π½Π΅Ρ‚ΠΎ Π½Π° псСвдоними Ρ€Π°Π±ΠΎΡ‚ΠΈ Π²Π΅Π΄Π½Π°Π³Π°.
  2. Π—Π° Bash, Π·Π° съТалСниС, Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ° извСстна Ρ€Π°Π±ΠΎΡ‚Π°, Π·Π° Π΄Π° ΠΌΠΎΠΆΠ΅ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎΡ‚ΠΎ Π΄ΠΎΠ²ΡŠΡ€ΡˆΠ²Π°Π½Π΅ Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ.

АктивиранС Π½Π° Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ Π΄ΠΎΠ²ΡŠΡ€ΡˆΠ²Π°Π½Π΅ Π·Π° псСвдоними Π² Bash

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡŠΡ‚ с Bash Π΅, Ρ‡Π΅ сС ΠΎΠΏΠΈΡ‚Π²Π° Π΄Π° Π·Π°Π²ΡŠΡ€ΡˆΠΈ (всСки ΠΏΡŠΡ‚, ΠΊΠΎΠ³Π°Ρ‚ΠΎ натиснСтС Tab) псСвдонима, Π° Π½Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π°, към която сС отнася ΠΏΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌΡŠΡ‚ (ΠΊΠ°ΠΊΡ‚ΠΎ ΠΏΡ€Π°Π²ΠΈ Zsh Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€). Въй ΠΊΠ°Ρ‚ΠΎ няматС скриптовС Π·Π° Π·Π°Π²ΡŠΡ€ΡˆΠ²Π°Π½Π΅ Π·Π° всичкитС 800 псСвдонима, Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎΡ‚ΠΎ Π΄ΠΎΠ²ΡŠΡ€ΡˆΠ²Π°Π½Π΅ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚ΠΈ.

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ пълСн псСвдоним ΠΏΡ€Π΅Π΄Π»Π°Π³Π° ΠΎΠ±Ρ‰ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π½Π° Ρ‚ΠΎΠ·ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ. Π’ΠΎΠΉ сС ΡΠ²ΡŠΡ€Π·Π²Π° с ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° Π·Π° Π·Π°Π²ΡŠΡ€ΡˆΠ²Π°Π½Π΅ Π½Π° псСвдоними, Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½ΠΎ Ρ€Π°Π·ΡˆΠΈΡ€ΡΠ²Π° псСвдонима Π΄ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΈ Π²Ρ€ΡŠΡ‰Π° ΠΎΠΏΡ†ΠΈΠΈ Π·Π° Π·Π°Π²ΡŠΡ€ΡˆΠ²Π°Π½Π΅ Π·Π° Π·Π°Π²ΡŠΡ€ΡˆΠ΅Π½Π°Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°. Π’ΠΎΠ²Π° ΠΎΠ·Π½Π°Ρ‡Π°Π²Π°, Ρ‡Π΅ ΠΏΠΎΠ΄Π»ΠΎΠΆΠΊΠ°Ρ‚Π° Π·Π° псСвдоним сС Π΄ΡŠΡ€ΠΆΠΈ Ρ‚ΠΎΡ‡Π½ΠΎ ΠΊΠ°ΠΊΡ‚ΠΎ Π·Π° пълна ΠΊΠΎΠΌΠ°Π½Π΄Π°.

По-Π΄ΠΎΠ»Ρƒ ΠΏΡŠΡ€Π²ΠΎ Ρ‰Π΅ обясня ΠΊΠ°ΠΊ Π΄Π° инсталирам complete-alias ΠΈ слСд Ρ‚ΠΎΠ²Π° ΠΊΠ°ΠΊ Π΄Π° Π³ΠΎ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°ΠΌ, Π·Π° Π΄Π° Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°ΠΌ Π·Π°Π²ΡŠΡ€ΡˆΠ²Π°Π½Π΅ Π·Π° всички kubectl псСвдоними.

Π˜Π½ΡΡ‚Π°Π»ΠΈΡ€Π°Π½Π΅ Π½Π° пълСн псСвдоним

На ΠΏΡŠΡ€Π²ΠΎ място, ΠΏΡŠΠ»Π½ΠΈΡΡ‚ псСвдоним зависи ΠΎΡ‚ bash-Π·Π°Π²ΡŠΡ€ΡˆΠ²Π°Π½Π΅. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»Π½ΠΎ, ΠΏΡ€Π΅Π΄ΠΈ Π΄Π° инсталиратС complete-alias, трябва Π΄Π° сС ΡƒΠ²Π΅Ρ€ΠΈΡ‚Π΅, Ρ‡Π΅ bash-completion Π΅ инсталиран. Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΠΈΡ‚Π΅ Π·Π° инсталиранС са прСдоставСни ΠΏΠΎ-Ρ€Π°Π½ΠΎ Π·Π° Linux ΠΈ MacOS.

Π’Π°ΠΆΠ½Π° Π·Π°Π±Π΅Π»Π΅ΠΆΠΊΠ° Π·Π° ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈΡ‚Π΅ Π½Π° MacOS: Подобно Π½Π° скрипта Π·Π° Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ Π΄ΠΎΠ²ΡŠΡ€ΡˆΠ²Π°Π½Π΅ kubectl, complete-alias Π½Π΅ Ρ€Π°Π±ΠΎΡ‚ΠΈ с Bash 3.2, ΠΊΠΎΠ΅Ρ‚ΠΎ Π΅ ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ Π² MacOS. По-спСциално, complete-alias зависи ΠΎΡ‚ bash-completion v2 (brew install bash-completion@2), ΠΊΠΎΠ΅Ρ‚ΠΎ изисква ΠΏΠΎΠ½Π΅ Bash 4.1. Π’ΠΎΠ²Π° ΠΎΠ·Π½Π°Ρ‡Π°Π²Π°, Ρ‡Π΅ Π·Π° Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ пълСн псСвдоним Π½Π° MacOS, трябва Π΄Π° инсталиратС ΠΏΠΎ-Π½ΠΎΠ²Π° вСрсия Π½Π° Bash.

Врябва Π΄Π° ΠΈΠ·Ρ‚Π΅Π³Π»ΠΈΡ‚Π΅ скрипта bash_completion.sh Π½Π° GitHub Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ ΠΈ Π³ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π΅Ρ‚Π΅ във вашия Ρ„Π°ΠΉΠ» ~/.bashrc:

source ~/bash_completion.sh

Π‘Π»Π΅Π΄ рСстартиранС Π½Π° ΠΎΠ±Π²ΠΈΠ²ΠΊΠ°Ρ‚Π°, complete-alias Ρ‰Π΅ бъдС напълно инсталиран.

АктивиранС Π½Π° Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ Π΄ΠΎΠ²ΡŠΡ€ΡˆΠ²Π°Π½Π΅ Π·Π° псСвдоними kubectl

ВСхничСски Π·Π°Π²ΡŠΡ€ΡˆΠ΅Π½ΠΈΡΡ‚ псСвдоним осигурява функция Π·Π° ΠΎΠ±Π²ΠΈΠ²ΠΊΠ° _complete_alias. Π’Π°Π·ΠΈ функция провСрява псСвдонима ΠΈ Π²Ρ€ΡŠΡ‰Π° подсказки Π·Π° Π·Π°Π²ΡŠΡ€ΡˆΠ²Π°Π½Π΅ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° Π·Π° псСвдоним.

Π—Π° Π΄Π° ΡΠ²ΡŠΡ€ΠΆΠ΅Ρ‚Π΅ функция с ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π΅Π½ псСвдоним, трябва Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ вградСния ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΡŠΠΌ Bash Π·Π°Π²ΡŠΡ€ΡˆΠΈ, Π΄Π° ΠΈΠ½ΡΡ‚Π°Π»ΠΈΡ€Π°Ρˆ _complete_alias ΠΊΠ°Ρ‚ΠΎ функция Π·Π° допълванС Π½Π° псСвдоним.

ΠšΠ°Ρ‚ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½Π΅ΠΊΠ° Π²Π·Π΅ΠΌΠ΅ΠΌ псСвдонима k, ΠΊΠΎΠΉΡ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π²Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° kubectl. Π΄Π° ΠΈΠ½ΡΡ‚Π°Π»ΠΈΡ€Π°Ρˆ _complete_alias ΠšΠ°Ρ‚ΠΎ Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½Π° функция Π·Π° Ρ‚ΠΎΠ·ΠΈ псСвдоним трябва Π΄Π° ΠΈΠ·ΠΏΡŠΠ»Π½ΠΈΡ‚Π΅ слСдната ΠΊΠΎΠΌΠ°Π½Π΄Π°:

$ complete -F _complete_alias k

Π Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΡŠΡ‚ ΠΎΡ‚ Ρ‚ΠΎΠ²Π° Π΅, Ρ‡Π΅ Π²ΠΈΠ½Π°Π³ΠΈ ΠΊΠΎΠ³Π°Ρ‚ΠΎ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ Π΄ΠΎΠ²ΡŠΡ€ΡˆΠ²Π°Ρ‚Π΅ псСвдоним k, функцията сС ΠΈΠ·Π²ΠΈΠΊΠ²Π° _complete_alias, ΠΊΠΎΠΉΡ‚ΠΎ провСрява псСвдонима ΠΈ Π²Ρ€ΡŠΡ‰Π° подсказки Π·Π° Π·Π°Π²ΡŠΡ€ΡˆΠ²Π°Π½Π΅ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° kubectl.

ΠšΠ°Ρ‚ΠΎ Π²Ρ‚ΠΎΡ€ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½Π΅ΠΊΠ° Π²Π·Π΅ΠΌΠ΅ΠΌ псСвдонима kg, ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π²Π° kubectl get:

$ complete -F _complete_alias kg

Π’ΠΎΡ‡Π½ΠΎ ΠΊΠ°ΠΊΡ‚ΠΎ Π² ΠΏΡ€Π΅Π΄ΠΈΡˆΠ½ΠΈΡ ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠΎΠ³Π°Ρ‚ΠΎ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ Π΄ΠΎΠ²ΡŠΡ€ΡˆΠ²Π°Ρ‚Π΅ 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, която Π²ΠΈ позволява Π΄Π° ΠΈΠ·Π²ΠΈΠΊΠ°Ρ‚Π΅ приставката.

НапримСр приставката hello Ρ‰Π΅ бъдС разпространСна ΠΊΠ°Ρ‚ΠΎ Ρ„Π°ΠΉΠ», Π½Π°Ρ€Π΅Ρ‡Π΅Π½ kubectl-hello.

Π—Π° Π΄Π° инсталиратС плъгина, трябва Π΄Π° ΠΊΠΎΠΏΠΈΡ€Π°Ρ‚Π΅ Ρ„Π°ΠΉΠ»Π° kubectl-x към всяка дирСктория във вашия PATH ΠΈ я Π½Π°ΠΏΡ€Π°Π²Π΅Ρ‚Π΅ изпълнима, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ с chmod +x. Π’Π΅Π΄Π½Π°Π³Π° слСд Ρ‚ΠΎΠ²Π° ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΈΠ·Π²ΠΈΠΊΠ°Ρ‚Π΅ приставката с kubectl x.

ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ слСдната ΠΊΠΎΠΌΠ°Π½Π΄Π°, Π·Π° Π΄Π° ΠΈΠ·Π±Ρ€ΠΎΠΈΡ‚Π΅ всички Π΄ΠΎΠ±Π°Π²ΠΊΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° са инсталирани Π½Π° Π²Π°ΡˆΠ°Ρ‚Π° систСма:

$ kubectl plugin list

Π’Π°Π·ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π° ΡΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° Ρ‰Π΅ ΠΏΠΎΠΊΠ°ΠΆΠ΅ прСдупрСТдСния, Π°ΠΊΠΎ ΠΈΠΌΠ°Ρ‚Π΅ няколко Π΄ΠΎΠ±Π°Π²ΠΊΠΈ с Π΅Π΄Π½ΠΎ ΠΈ ΡΡŠΡ‰ΠΎ ΠΈΠΌΠ΅ ΠΈΠ»ΠΈ Π°ΠΊΠΎ ΠΈΠΌΠ° Ρ„Π°ΠΉΠ» с Π΄ΠΎΠ±Π°Π²ΠΊΠΈ, ΠΊΠΎΠΉΡ‚ΠΎ Π½Π΅ Π΅ изпълним.

НамиранС ΠΈ инсталиранС Π½Π° Π΄ΠΎΠ±Π°Π²ΠΊΠΈ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Krew

ΠŸΡ€ΠΈΡΡ‚Π°Π²ΠΊΠΈΡ‚Π΅ Kubectl ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° сС сподСлят ΠΈΠ»ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΊΠ°Ρ‚ΠΎ софтуСрни ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ. Но къдС ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π½Π°ΠΌΠ΅Ρ€ΠΈΡ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΊΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΈ са сподСлили?

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ ΠšΡ€ΡŽ ΠΈΠΌΠ° Π·Π° Ρ†Π΅Π» Π΄Π° прСдостави ΡƒΠ½ΠΈΡ„ΠΈΡ†ΠΈΡ€Π°Π½ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π·Π° сподСлянС, Ρ‚ΡŠΡ€ΡΠ΅Π½Π΅, инсталиранС ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° приставки kubectl. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ΡŠΡ‚ Π½Π°Ρ€ΠΈΡ‡Π° сСбС си β€žΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€ Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ Π·Π° приставки kubectlβ€œ (Krew Π΅ ΠΏΠΎΠ΄ΠΎΠ±Π΅Π½ Π½Π° варя).

Krew Π΅ списък с Π΄ΠΎΠ±Π°Π²ΠΊΠΈ Π·Π° kubectl, ΠΊΠΎΠΈΡ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΈΠ·Π±Π΅Ρ€Π΅Ρ‚Π΅ ΠΈ инсталиратС. Π’ ΡΡŠΡ‰ΠΎΡ‚ΠΎ Π²Ρ€Π΅ΠΌΠ΅ Krew ΡΡŠΡ‰ΠΎ Π΅ плъгин Π·Π° kubectl.

Π’ΠΎΠ²Π° ΠΎΠ·Π½Π°Ρ‡Π°Π²Π°, Ρ‡Π΅ инсталиранСто Π½Π° Krew Ρ€Π°Π±ΠΎΡ‚ΠΈ ΠΏΠΎ ΡΡŠΡ‰Π΅ΡΡ‚Π²ΠΎ ΠΊΠ°Ρ‚ΠΎ инсталиранСто Π½Π° всСки Π΄Ρ€ΡƒΠ³ плъгин kubectl. ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π½Π°ΠΌΠ΅Ρ€ΠΈΡ‚Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΈ инструкции Π½Π° Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° Π½Π° GitHub.

Най-Π²Π°ΠΆΠ½ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ Π½Π° Krew са:

# Поиск в спискС плагинов
$ kubectl krew search [<query>]
# ΠŸΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ ΠΏΠ»Π°Π³ΠΈΠ½Π΅
$ kubectl krew info <plugin>
# Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΠ»Π°Π³ΠΈΠ½
$ kubectl krew install <plugin>
# ΠžΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ всС ΠΏΠ»Π°Π³ΠΈΠ½Ρ‹ Π΄ΠΎ послСднСй вСрсии
$ kubectl krew upgrade
# ΠŸΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ всС ΠΏΠ»Π°Π³ΠΈΠ½Ρ‹, установлСнныС Ρ‡Π΅Ρ€Π΅Π· Krew
$ kubectl krew list
# Π”Π΅ΠΈΠ½ΡΡ‚Π°Π»Π»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ»Π°Π³ΠΈΠ½
$ kubectl krew remove <plugin>

Моля, ΠΎΠ±ΡŠΡ€Π½Π΅Ρ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Π΅ инсталиранСто Π½Π° Π΄ΠΎΠ±Π°Π²ΠΊΠΈ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Krew Π½Π΅ ΠΏΡ€Π΅Ρ‡ΠΈ Π½Π° инсталиранСто Π½Π° Π΄ΠΎΠ±Π°Π²ΠΊΠΈ Ρ‡Ρ€Π΅Π· стандартния ΠΌΠ΅Ρ‚ΠΎΠ΄, описан ΠΏΠΎ-Π³ΠΎΡ€Π΅.

Моля, ΠΎΠ±ΡŠΡ€Π½Π΅Ρ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° kubectl krew list ΠΏΠΎΠΊΠ°Π·Π²Π° само Π΄ΠΎΠ±Π°Π²ΠΊΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ са инсталирани с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Krew, Π΄ΠΎΠΊΠ°Ρ‚ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° kubectl plugin list изброява всички Π΄ΠΎΠ±Π°Π²ΠΊΠΈ, тоСст Ρ‚Π΅Π·ΠΈ, инсталирани с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Krew, ΠΈ Ρ‚Π΅Π·ΠΈ, инсталирани ΠΏΠΎ Π΄Ρ€ΡƒΠ³ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈ.

НамиранС Π½Π° плъгини Π΄Ρ€ΡƒΠ³Π°Π΄Π΅

Krew Π΅ ΠΌΠ»Π°Π΄ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, ΠΊΠΎΠΉΡ‚ΠΎ Π΅ Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° Π‘ΠΏΠΈΡΡŠΠΊΡŠΡ‚ само ΠΎΠΊΠΎΠ»ΠΎ 30 Π΄ΠΎΠ±Π°Π²ΠΊΠΈ. Ако Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π½Π°ΠΌΠ΅Ρ€ΠΈΡ‚Π΅ Ρ‚ΠΎΠ²Π°, ΠΎΡ‚ ΠΊΠΎΠ΅Ρ‚ΠΎ сС Π½ΡƒΠΆΠ΄Π°Π΅Ρ‚Π΅, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π½Π°ΠΌΠ΅Ρ€ΠΈΡ‚Π΅ плъгини Π΄Ρ€ΡƒΠ³Π°Π΄Π΅, ΠΊΠ°Ρ‚ΠΎ Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ GitHub.

ΠŸΡ€Π΅ΠΏΠΎΡ€ΡŠΡ‡Π²Π°ΠΌ Π²ΠΈ Π΄Π° Ρ€Π°Π·Π³Π»Π΅Π΄Π°Ρ‚Π΅ сСкцията GitHub kubectl-плъгини. Π’Π°ΠΌ Ρ‰Π΅ Π½Π°ΠΌΠ΅Ρ€ΠΈΡ‚Π΅ дСсСтки Π½Π°Π»ΠΈΡ‡Π½ΠΈ плъгини, ΠΊΠΎΠΈΡ‚ΠΎ си струва Π΄Π° Ρ€Π°Π·Π³Π»Π΅Π΄Π°Ρ‚Π΅.

ПисанС Π½Π° ваши собствСни Π΄ΠΎΠ±Π°Π²ΠΊΠΈ

моТСш сам създаванС Π½Π° Π΄ΠΎΠ±Π°Π²ΠΊΠΈ - НС Π΅ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ. Врябва Π΄Π° ΡΡŠΠ·Π΄Π°Π΄Π΅Ρ‚Π΅ изпълним Ρ„Π°ΠΉΠ», ΠΊΠΎΠΉΡ‚ΠΎ ΠΏΡ€Π°Π²ΠΈ Ρ‚ΠΎΠ²Π°, ΠΎΡ‚ ΠΊΠΎΠ΅Ρ‚ΠΎ сС Π½ΡƒΠΆΠ΄Π°Π΅Ρ‚Π΅, Π½Π°ΠΈΠΌΠ΅Π½ΡƒΠ²Π°ΠΉΡ‚Π΅ Π³ΠΎ Ρ‚Π°ΠΊΠ° kubectl-x ΠΈ инсталирайтС, ΠΊΠ°ΠΊΡ‚ΠΎ Π΅ описано ΠΏΠΎ-Π³ΠΎΡ€Π΅.

Π€Π°ΠΉΠ»ΡŠΡ‚ ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС bash скрипт, скрипт Π½Π° python ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°Π½ΠΎ GO ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ - няма Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. ЕдинствСното условиС Π΅ Π΄Π° ΠΌΠΎΠΆΠ΅ Π΄Π° сС изпълнява Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Π°Ρ‚Π° систСма.

НСка сСга създадСм ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅Π½ плъгин. Π’ ΠΏΡ€Π΅Π΄ΠΈΡˆΠ½ΠΈΡ Ρ€Π°Π·Π΄Π΅Π» ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ…Ρ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° kubectl, Π·Π° Π΄Π° ΠΈΠ·Π±Ρ€ΠΎΠΈΡ‚Π΅ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈΡ‚Π΅ Π·Π° всСки pod. ЛСсно Π΅ Π΄Π° ΠΏΡ€Π΅Π²ΡŠΡ€Π½Π΅Ρ‚Π΅ Ρ‚Π°Π·ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π° Π² плъгин, ΠΊΠΎΠΉΡ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΈΠ·Π²ΠΈΠΊΠ°Ρ‚Π΅ с Π½Π°ΠΏΡ€. 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 ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ написани Π½Π° всСки Π΅Π·ΠΈΠΊ Π·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°Π½Π΅ ΠΈΠ»ΠΈ скриптовС. Ако ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ shell скриптовС, прСдимството Π΅ Π΄Π° ΠΌΠΎΠΆΠ΅Ρ‚Π΅ лСсно Π΄Π° ΠΈΠ·Π²ΠΈΠΊΠ²Π°Ρ‚Π΅ kubectl ΠΎΡ‚ плъгина. ΠœΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠ±Π°Ρ‡Π΅ Π΄Π° ΠΏΠΈΡˆΠ΅Ρ‚Π΅ ΠΏΠΎ-слоТни плъгини Π² Ρ€Π΅Π°Π»Π½ΠΈ Π΅Π·ΠΈΡ†ΠΈ Π·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°Π½Π΅, ΠΊΠ°Ρ‚ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ ΠšΠ»ΠΈΠ΅Π½Ρ‚ΡΠΊΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π½Π° Kubernetes. Ако ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ Go, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΡŠΡ‰ΠΎ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π·Π° изпълнСниС Π½Π° cli, ΠΊΠΎΠΉΡ‚ΠΎ ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π° спСциално Π·Π° писанС Π½Π° kubectl Π΄ΠΎΠ±Π°Π²ΠΊΠΈ.

Как Π΄Π° сподСлятС своитС Π΄ΠΎΠ±Π°Π²ΠΊΠΈ

Ако смятатС, Ρ‡Π΅ Π²Π°ΡˆΠΈΡ‚Π΅ приставки ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ ΠΏΠΎΠ»Π΅Π·Π½ΠΈ Π·Π° Π΄Ρ€ΡƒΠ³ΠΈ, Π½Π΅ сС ΠΊΠΎΠ»Π΅Π±Π°ΠΉΡ‚Π΅ Π΄Π° Π³ΠΈ сподСлитС Π² GitHub. НС пропускайтС Π΄Π° Π³ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚Π΅ към Ρ‚Π΅ΠΌΠ°Ρ‚Π° kubectl-плъгини.

ΠœΠΎΠΆΠ΅Ρ‚Π΅ ΡΡŠΡ‰ΠΎ Π΄Π° поискатС Π²Π°ΡˆΠΈΡΡ‚ плъгин Π΄Π° бъдС Π΄ΠΎΠ±Π°Π²Π΅Π½ към Бписък Π½Π° ΠšΡ€ΡŽ. Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΠΈ ΠΊΠ°ΠΊ Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ Ρ‚ΠΎΠ²Π° са Π² Π₯Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° Π½Π° GitHub.

Π—Π°Π²ΡŠΡ€ΡˆΠ²Π°Π½Π΅ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π°

ΠŸΠΎΠ½Π°ΡΡ‚ΠΎΡΡ‰Π΅ΠΌ Π΄ΠΎΠ±Π°Π²ΠΊΠΈΡ‚Π΅ Π½Π΅ ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Ρ‚ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ Π΄ΠΎΠ²ΡŠΡ€ΡˆΠ²Π°Π½Π΅. ВоСст трябва Π΄Π° Π²ΡŠΠ²Π΅Π΄Π΅Ρ‚Π΅ ΠΏΡŠΠ»Π½ΠΎΡ‚ΠΎ ΠΈΠΌΠ΅ Π½Π° плъгина ΠΈ ΠΏΡŠΠ»Π½ΠΈΡ‚Π΅ ΠΈΠΌΠ΅Π½Π° Π½Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ‚Π΅.

Π₯Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅Ρ‚ΠΎ kubectl Π½Π° GitHub Π·Π° Ρ‚Π°Π·ΠΈ функция ΠΈΠΌΠ° ΠΎΡ‚Π²ΠΎΡ€Π΅Π½Π° заявка. Π’Π°ΠΊΠ° Ρ‡Π΅ Π΅ възмоТно Ρ‚Π°Π·ΠΈ функция Π΄Π° бъдС Π²Π½Π΅Π΄Ρ€Π΅Π½Π° някъдС Π² Π±ΡŠΠ΄Π΅Ρ‰Π΅.

УспСх !!!

Какво ΠΎΡ‰Π΅ Π΄Π° ΠΏΡ€ΠΎΡ‡Π΅Ρ‚Π΅Ρ‚Π΅ ΠΏΠΎ Ρ‚Π΅ΠΌΠ°Ρ‚Π°:

  1. Π’Ρ€ΠΈ Π½ΠΈΠ²Π° Π½Π° Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ ΠΌΠ°Ρ‰Π°Π±ΠΈΡ€Π°Π½Π΅ Π² Kubernetes ΠΈ ΠΊΠ°ΠΊ Π΄Π° Π³ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ Π΅Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎ.
  2. Kubernetes Π² Π΄ΡƒΡ…Π° Π½Π° пиратството с шаблон Π·Π° внСдряванС.
  3. ΠΠ°ΡˆΠΈΡΡ‚ ΠΊΠ°Π½Π°Π» Около Kubernetes Π² Telegram.

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

ДобавянС Π½Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€