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

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

Команда Kubernetes aaS ΠΎΡ‚ Mail.ru Π’ΡƒΠΊ Ρ‰Π΅ Π½Π°ΠΌΠ΅Ρ€ΠΈΡ‚Π΅ статия, ΠΏΡ€Π΅Π²Π΅Π΄Π΅Π½Π° ΠΎΡ‚ Π”Π°Π½ΠΈΠ΅Π» Π’Π΅ΠΉΠ±Π΅Π», която ΠΏΡ€Π΅Π΄Π»Π°Π³Π° ΡΡŠΠ²Π΅Ρ‚ΠΈ ΠΈ Ρ‚Ρ€ΠΈΠΊΠΎΠ²Π΅ Π·Π° Π΅Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½Π° Ρ€Π°Π±ΠΎΡ‚Π° с kubectl. Вя ΡΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° Ρ‰Π΅ ΠΏΠΎΠΌΠΎΠ³Π½Π΅ Π΄Π° Ρ€Π°Π·Π±Π΅Ρ€Π΅Ρ‚Π΅ ΠΏΠΎ-Π΄ΠΎΠ±Ρ€Π΅ ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚ΠΈ Kubernetes.

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

Π’ΡŠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅: ΠΊΠ°ΠΊΠ²ΠΎ Π΅ kubectl

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

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

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

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

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

Как Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ kubectl ΠΏΠΎ-Π΅Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎ: ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π΅Π½ Π½Π°Ρ€ΡŠΡ‡Π½ΠΈΠΊ
Kubernetes Π΅ напълно рСсурсно-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€Π°Π½Π° систСма. Π’ΠΎΠ²Π° ΠΎΠ·Π½Π°Ρ‡Π°Π²Π°, Ρ‡Π΅ Ρ‚ΠΎΠΉ ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½ΠΎΡ‚ΠΎ ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅ Π½Π° рСсурситС ΠΈ всички ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с Kubernetes са CRUD ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ.

Π’ΠΈΠ΅ напълно ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€Π°Ρ‚Π΅ Kubernetes, управлявайки Ρ‚Π΅Π·ΠΈ рСсурси, Π° Kubernetes опрСдСля ΠΊΠ°ΠΊΠ²ΠΎ Π΄Π° ΠΏΡ€Π°Π²ΠΈ Π² зависимост ΠΎΡ‚ Ρ‚Π΅ΠΊΡƒΡ‰ΠΎΡ‚ΠΎ ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅ Π½Π° рСсурситС. ΠŸΠΎΡ€Π°Π΄ΠΈ Ρ‚Π°Π·ΠΈ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°, ΠΏΠΎΠ΄Π°Π΄Π΅Π½Π°Ρ‚Π° информация Π·Π° Kubernetes API Π΅ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΈΡ€Π°Π½Π° ΠΏΠΎ списък с Ρ‚ΠΈΠΏΠΎΠ²Π΅ рСсурси ΠΈ ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈΡ‚Π΅ с тях ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ.

НСка Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€.

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Π΅ искатС Π΄Π° ΡΡŠΠ·Π΄Π°Π΄Π΅Ρ‚Π΅ рСсурс ReplicaSet. Π—Π° Ρ†Π΅Π»Ρ‚Π° описватС ReplicaSet Π² Ρ„Π°ΠΉΠ» с ΠΈΠΌΠ΅Ρ‚ΠΎ replicaset.yaml, Π° слСд Ρ‚ΠΎΠ²Π° ΠΈΠ·ΠΏΡŠΠ»Π½ΡΠ²Π°Ρ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π°:

$ kubectl create -f replicaset.yaml

Π’ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ Π½Π° Ρ‚ΠΎΠ²Π° Ρ‰Π΅ бъдС създадСн рСсурс ReplicaSet. Но ΠΊΠ°ΠΊΠ²ΠΎ сС случва Π·Π°Π΄ кулиситС?

Π’ Kubernetes ΠΈΠΌΠ° опСрация Π·Π° създаванС Π½Π° ReplicaSet. ΠšΠ°ΠΊΡ‚ΠΎ всяка Π΄Ρ€ΡƒΠ³Π° опСрация, тя Π΅ прСдоставСна ΠΊΠ°Ρ‚ΠΎ ΠΊΡ€Π°ΠΉΠ½Π° Ρ‚ΠΎΡ‡ΠΊΠ° Π½Π° API. ΠšΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Π°Ρ‚Π° API ΠΊΡ€Π°ΠΉΠ½Π° Ρ‚ΠΎΡ‡ΠΊΠ° Π·Π° Ρ‚Π°Π·ΠΈ опСрация ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° Ρ‚Π°ΠΊΠ°:

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

ΠšΡ€Π°ΠΉΠ½ΠΈΡ‚Π΅ Ρ‚ΠΎΡ‡ΠΊΠΈ Π½Π° API Π·Π° всички ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с Kubernetes ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ Π½Π°ΠΌΠ΅Ρ€Π΅Π½ΠΈ Π² API справочника Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ посочСната ΠΏΠΎ-Π³ΠΎΡ€Π΅ ΠΊΡ€Π°ΠΉΠ½Π° Ρ‚ΠΎΡ‡ΠΊΠ°). Π—Π° Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ дСйствитСлна заявка към ΠΊΡ€Π°ΠΉΠ½Π° Ρ‚ΠΎΡ‡ΠΊΠ°, ΠΏΡŠΡ€Π²ΠΎ трябва Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΡ‚Π΅ 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. Π”Π²Π° Π·Π°Π±Π΅Π»Π΅ΠΆΠΈΡ‚Π΅Π»Π½ΠΈ измСнСния Π² ΠΏΠ»Π°Π½ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ (ΠΈ Π΄Π²Π΅Ρ‚Π΅ Π² Π°Π»Ρ„Π° вСрсия): β€” ΠΏΠ»Π°Π½ΠΈΡ€Π° pods Π½Π° Ρ€Π°Π±ΠΎΡ‚Π½ΠΈΡ‚Π΅ възли.

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

  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 създава ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° pod Π·Π° всяка Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ° Π½Π° ReplicaSet (Π² ΡΡŠΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΈΠ΅ с шаблона Π½Π° pod Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° 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 с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚ΡŠΡ€Π° 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\n[[ -r "\/usr\/local\/etc\/profile.d\/bash_completion.sh" ]] && . \n"\/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\n>\/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\ncompinit

2. Π‘ΡŠΡ€Π· ΠΏΡ€Π΅Π³Π»Π΅Π΄ Π½Π° спСцификациитС Π½Π° рСсурситС

ΠšΠΎΠ³Π°Ρ‚ΠΎ ΡΡŠΠ·Π΄Π°Π²Π°Ρ‚Π΅ опрСдСлСния Π½Π° рСсурси YAML, трябва Π΄Π° Π·Π½Π°Π΅Ρ‚Π΅ ΠΏΠΎΠ»Π΅Ρ‚Π°Ρ‚Π° ΠΈ тяхната стойност Π·Π° Ρ‚Π΅Π·ΠΈ рСсурси. Π•Π΄Π½ΠΎ ΠΎΡ‚ мСстата Π·Π° Ρ‚ΡŠΡ€ΡΠ΅Π½Π΅ Π½Π° Ρ‚Π°Π·ΠΈ информация Π΅ ΡΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊΡŠΡ‚ ΠΏΠΎ API, ΠΊΠΎΠΉΡ‚ΠΎ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ° пълни спСцификации Π½Π° всички рСсурси.

Π’Π΅ΠΌ Π½Π΅ ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ, ΠΏΡ€Π΅ΠΌΠΈΠ½Π°Π²Π°Π½Π΅Ρ‚ΠΎ към ΡƒΠ΅Π± Π±Ρ€Π°ΡƒΠ·ΡŠΡ€ всСки ΠΏΡŠΡ‚, ΠΊΠΎΠ³Π°Ρ‚ΠΎ трябва Π΄Π° Ρ‚ΡŠΡ€ΡΠΈΡ‚Π΅ Π½Π΅Ρ‰ΠΎ, Π΅ нСумСстно. Π—Π°Ρ‚ΠΎΠ²Π° kubectl прСдоставя ΠΊΠΎΠΌΠ°Π½Π΄Π° kubectl explain, която ΠΏΠΎΠΊΠ°Π·Π²Π° спСцификациитС Π½Π° всички рСсурси Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ във вашия Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π».

Π€ΠΎΡ€ΠΌΠ°Ρ‚ΡŠΡ‚ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° Π΅ слСдният:

$ kubectl explain resource[.field]...

Π•ΠΊΠΈΠΏΡŠΡ‚ Ρ‰Π΅ ΠΈΠ·Π²Π΅Π΄Π΅ спСцификация Π½Π° поискания рСсурс ΠΈΠ»ΠΈ ΠΏΠΎΠ»Π΅. Π˜Π·Π²Π΅Π΄Π΅Π½Π°Ρ‚Π° информация Π΅ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½Π° Π½Π° Ρ‚Π°Π·ΠΈ, която сС ΡΡŠΠ΄ΡŠΡ€ΠΆΠ° Π² Ρ€ΡŠΠΊΠΎΠ²ΠΎΠ΄ΡΡ‚Π²ΠΎΡ‚ΠΎ Π·Π° API.

По ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ kubectl explain ΠΏΠΎΠΊΠ°Π·Π²Π° само ΠΏΡŠΡ€Π²ΠΎΡ‚ΠΎ Π½ΠΈΠ²ΠΎ Π½Π° влоТСност Π½Π° ΠΏΠΎΠ»Π΅Ρ‚Π°.

Π’ΠΈΠΆΡ‚Π΅ ΠΊΠ°ΠΊ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° ΠΌΠΎΠΆΠ΅ Ρ‚ΡƒΠΊ.

МоТС Π΄Π° сС ΠΈΠ·Π²Π΅Π΄Π΅ цялото Π΄ΡŠΡ€Π²ΠΎ, Π°ΠΊΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚Π΅ опцията --recursive:

$ kubectl explain deployment.spec --recursive

Ако Π½Π΅ Π·Π½Π°Π΅Ρ‚Π΅ Ρ‚ΠΎΡ‡Π½ΠΎ ΠΊΠ°ΠΊΠ²ΠΈ рСсурси са Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΈ, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π³ΠΈ ΠΈΠ·Π²Π΅Π΄Π΅Ρ‚Π΅ всички с слСдната ΠΊΠΎΠΌΠ°Π½Π΄Π°:

$ kubectl api-resources

Π’Π°Π·ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΈΠ·Π²Π΅Π΄Π΅ ΠΈΠΌΠ΅Π½Π°Ρ‚Π° Π½Π° рСсурситС Π² мноТСствСно число, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ€Π°Π·Π³Ρ€ΡŠΡ‰Π°Π½ΠΈΡ вмСсто 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=
:[,
:]...

ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚Π΅ всяка ΠΊΠΎΠ»ΠΎΠ½Π° Π½Π° ΠΈΠ·Ρ…ΠΎΠ΄Π° с Π΄Π²ΠΎΠΉΠΊΠ°

:, ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ
β€” Π·Π°Π³Π»Π°Π²ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΊΠΎΠ»ΠΎΠ½Π°Ρ‚Π°, Π° <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. ВсСки алиас ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠΌΠ° Π΅Π΄ΠΈΠ½ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Π·Π° основната ΠΊΠΎΠΌΠ°Π½Π΄Π°, опСрация ΠΈ рСсурс, ΠΈ няколко ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° Π·Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ. Π’ΠΈΠ΅ просто "ΠΏΠΎΠΏΡŠΠ»Π²Π°Ρ‚Π΅" Ρ‚Π΅Π·ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈ отляво надясно Π² ΡΡŠΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΈΠ΅ с горСпосочСната схСма.

Π’Π΅ΠΊΡƒΡ‰Π°Ρ‚Π° ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π° схСма сС Π½Π°ΠΌΠΈΡ€Π° Π½Π° 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.

ΠŸΠΎΡ€Π°Π΄ΠΈ Ρ‚ΠΎΠ²Π°, Ρ‡Π΅ част ΠΎΡ‚ алиаситС изискват Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΈ, алиаситС 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 ΠΏΡ€Π΅Π΄Π»Π°Π³Π° ΠΎΠ±Ρ‰ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π½Π° Ρ‚ΠΎΠ·ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ. Π’ΠΎΠΉ сС ΡΠ²ΡŠΡ€Π·Π²Π° с ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° Π·Π° Π·Π°Π²ΡŠΡ€ΡˆΠ²Π°Π½Π΅ Π·Π° алиаси, Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½ΠΎ Π·Π°Π²ΡŠΡ€ΡˆΠ²Π° алиаса Π΄ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° ΠΈ Π²Ρ€ΡŠΡ‰Π° ΠΎΠΏΡ†ΠΈΠΈΡ‚Π΅ Π·Π° Π·Π°Π²ΡŠΡ€ΡˆΠ²Π°Π½Π΅ Π·Π° Π·Π°Π²ΡŠΡ€ΡˆΠ΅Π½Π°Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°. Π’ΠΎΠ²Π° ΠΎΠ·Π½Π°Ρ‡Π°Π²Π°, Ρ‡Π΅ Π·Π°Π²ΡŠΡ€ΡˆΠ²Π°Π½Π΅Ρ‚ΠΎ Π·Π° алиаса Ρ€Π°Π±ΠΎΡ‚ΠΈ Ρ‚ΠΎΡ‡Π½ΠΎ ΠΏΠΎ ΡΡŠΡ‰ΠΈΡ Π½Π°Ρ‡ΠΈΠ½, ΠΊΠ°ΠΊΡ‚ΠΎ Π·Π° ΠΏΡŠΠ»Π½Π°Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°.

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

Π˜Π½ΡΡ‚Π°Π»ΠΈΡ€Π°Π½Π΅ Π½Π° complete-alias

ΠŸΡ€Π΅Π΄ΠΈ всичко, complete-alias зависи ΠΎΡ‚ bash-completion. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»Π½ΠΎ, ΠΏΡ€Π΅Π΄ΠΈ Π΄Π° инсталиратС 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. Π’ΠΎΠ²Π° ΠΎΠ·Π½Π°Ρ‡Π°Π²Π°, Ρ‡Π΅ Π·Π° Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ 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); \ndo\n  complete -F _complete_alias "$_a"\ndone

Π’ΠΎΠ·ΠΈ ΠΊΠΎΠ΄ трябва Π΄Π° бъдС поставСн Π² вашия ~/.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

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster