
ΠΠΊΠΎ ΡΠ°Π±ΠΎΡΠΈΡΠ΅ Ρ Kubernetes, Π²Π΅ΡΠΎΡΡΠ½ΠΎ kubectl Π΅ Π΅Π΄Π½Π° ΠΎΡ Π½Π°ΠΉ-ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈΡΠ΅ ΠΎΡ Π²Π°Ρ ΡΡΠΈΠ»ΠΈΡΠΈ. Π Π²ΡΠ΅ΠΊΠΈ ΠΏΡΡ, ΠΊΠΎΠ³Π°ΡΠΎ ΠΏΡΠ΅ΠΊΠ°ΡΠ²Π°ΡΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅ Π² ΡΠ°Π±ΠΎΡΠ° Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ, Π΅ ΡΠ°Π·ΡΠΌΠ½ΠΎ Π΄Π° Π³ΠΎ ΠΈΠ·ΡΡΠΈΡΠ΅ Π΄ΠΎΠ±ΡΠ΅ ΠΈ Π΄Π° Π½Π°ΡΡΠΈΡΠ΅ ΠΊΠ°ΠΊ Π΄Π° Π³ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ.
ΠΠΎΠΌΠ°Π½Π΄Π° Π’ΡΠΊ ΡΠ΅ Π½Π°ΠΌΠ΅ΡΠΈΡΠ΅ ΡΡΠ°ΡΠΈΡ, ΠΏΡΠ΅Π²Π΅Π΄Π΅Π½Π° ΠΎΡ ΠΠ°Π½ΠΈΠ΅Π» ΠΠ΅ΠΉΠ±Π΅Π», ΠΊΠΎΡΡΠΎ ΠΏΡΠ΅Π΄Π»Π°Π³Π° ΡΡΠ²Π΅ΡΠΈ ΠΈ ΡΡΠΈΠΊΠΎΠ²Π΅ Π·Π° Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½Π° ΡΠ°Π±ΠΎΡΠ° Ρ kubectl. Π’Ρ ΡΡΡΠΎ ΡΠ°ΠΊΠ° ΡΠ΅ ΠΏΠΎΠΌΠΎΠ³Π½Π΅ Π΄Π° ΡΠ°Π·Π±Π΅ΡΠ΅ΡΠ΅ ΠΏΠΎ-Π΄ΠΎΠ±ΡΠ΅ ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠΈ Kubernetes.
Π‘ΠΏΠΎΡΠ΅Π΄ Π°Π²ΡΠΎΡΠ° ΡΠ΅Π»ΡΠ° Π½Π° ΡΡΠ°ΡΠΈΡΡΠ° Π΅ Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈ Π΅ΠΆΠ΅Π΄Π½Π΅Π²Π½Π°ΡΠ° Π²ΠΈ ΡΠ°Π±ΠΎΡΠ° Ρ Kubernetes Π½Π΅ ΡΠ°ΠΌΠΎ ΠΏΠΎ-Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½Π°, Π½ΠΎ ΠΈ ΠΏΠΎ-ΠΏΡΠΈΡΡΠ½Π°!
ΠΡΠ²Π΅Π΄Π΅Π½ΠΈΠ΅: ΠΊΠ°ΠΊΠ²ΠΎ Π΅ kubectl
ΠΡΠ΅Π΄ΠΈ Π΄Π° Π½Π°ΡΡΠΈΡΠ΅ ΠΊΠ°ΠΊ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ kubectl ΠΏΠΎ-Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ, ΡΡΡΠ±Π²Π° Π΄Π° ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ ΠΎΡΠ½ΠΎΠ²Π½ΠΎ ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ Π·Π° ΡΠΎΠ²Π° ΠΊΠ°ΠΊΠ²ΠΎ Π΅ ΠΈ ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠΈ.
ΠΡ Π³Π»Π΅Π΄Π½Π° ΡΠΎΡΠΊΠ° Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ, kubectl Π΅ ΡΠΏΡΠ°Π²Π»ΡΠ²Π°ΡΠ° ΠΊΠΎΠ½Π·ΠΎΠ»Π°, ΠΊΠΎΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Ρ Kubernetes.
ΠΡ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠ° Π³Π»Π΅Π΄Π½Π° ΡΠΎΡΠΊΠ°, kubectl Π΅ ΠΊΠ»ΠΈΠ΅Π½Ρ Π½Π° Kubernetes API.
Kubernetes API Π΅ HTTP REST API. Π’ΠΎΠ·ΠΈ API Π΅ ΠΈΡΡΠΈΠ½ΡΠΊΠΈΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ Π½Π° Kubernetes, ΡΡΠ΅Π· ΠΊΠΎΠΉΡΠΎ ΡΠΎΠΉ ΡΠ΅ ΡΠΏΡΠ°Π²Π»ΡΠ²Π° Π½Π°ΠΏΡΠ»Π½ΠΎ. Π’ΠΎΠ²Π° ΠΎΠ·Π½Π°ΡΠ°Π²Π°, ΡΠ΅ Π²ΡΡΠΊΠ° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ Ρ Kubernetes ΡΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Ρ ΠΊΠ°ΡΠΎ ΠΊΡΠ°ΠΉΠ½Π° ΡΠΎΡΠΊΠ° Π½Π° API ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΠΈΠ·Π²ΡΡΡΠ΅Π½Π° ΡΡΠ΅Π· HTTP Π·Π°ΡΠ²ΠΊΠ° ΠΊΡΠΌ ΡΠ°Π·ΠΈ ΠΊΡΠ°ΠΉΠ½Π° ΡΠΎΡΠΊΠ°.
Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎ ΠΎΡΠ½ΠΎΠ²Π½Π°ΡΠ° Π·Π°Π΄Π°ΡΠ° Π½Π° kubectl Π΅ Π΄Π° ΠΈΠ·Π²ΡΡΡΠ²Π° HTTP Π·Π°ΡΠ²ΠΊΠΈ ΠΊΡΠΌ Kubernetes API:

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 ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ Π½Π°ΠΌΠ΅ΡΠ΅Π½ΠΈ Π² Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ ). ΠΠ° Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»Π½Π° Π·Π°ΡΠ²ΠΊΠ° ΠΊΡΠΌ ΠΊΡΠ°ΠΉΠ½Π° ΡΠΎΡΠΊΠ°, ΠΏΡΡΠ²ΠΎ ΡΡΡΠ±Π²Π° Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΡΠ΅ 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 ΡΠ΅ ΡΡΡΡΠΎΠΈ ΠΎΡ Π½Π°Π±ΠΎΡ ΠΎΡ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ, ΠΊΠΎΠΈΡΠΎ ΡΠ°Π±ΠΎΡΡΡ ΠΊΠ°ΡΠΎ ΠΎΡΠ΄Π΅Π»Π½ΠΈ ΠΏΡΠΎΡΠ΅ΡΠΈ Π½Π° Π²ΡΠ·Π»ΠΈΡΠ΅ Π½Π° ΠΊΠ»ΡΡΡΠ΅ΡΠ°. ΠΡΠΊΠΎΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ ΡΠ°Π±ΠΎΡΡΡ Π½Π° Π³Π»Π°Π²Π½ΠΈΡΠ΅ Π²ΡΠ·Π»ΠΈ, Π΄ΡΡΠ³ΠΈ - Π½Π° ΡΠ°Π±ΠΎΡΠ½ΠΈΡΠ΅ Π²ΡΠ·Π»ΠΈ, Π²ΡΠ΅ΠΊΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π° ΡΠ²ΠΎΡΡΠ° ΡΠΏΠ΅ΡΠΈΠ°Π»Π½Π° Π·Π°Π΄Π°ΡΠ°.
ΠΡΠΎ Π½Π°ΠΉ-Π²Π°ΠΆΠ½ΠΈΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ Π½Π° Π³Π»Π°Π²Π½ΠΈΡΠ΅ Π²ΡΠ·Π»ΠΈ:
- Π₯ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ β ΡΡΡ ΡΠ°Π½ΡΠ²Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡΡΠ° Π½Π° ΡΠ΅ΡΡΡΡΠΈΡΠ΅ ().
- API ΡΡΡΠ²ΡΡ β ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ API ΠΈ ΡΠΏΡΠ°Π²Π»ΡΠ²Π° Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ.
- ΠΠΈΡΠΏΠ΅ΡΡΠ΅Ρ Π½Π° ΠΊΠΎΠ½ΡΡΠΎΠ»Π΅ΡΠΈΡΠ΅ β Π³Π°ΡΠ°Π½ΡΠΈΡΠ°, ΡΠ΅ ΡΡΠ°ΡΡΡΠΈΡΠ΅ Π½Π° ΡΠ΅ΡΡΡΡΠΈΡΠ΅ ΠΎΡΠ³ΠΎΠ²Π°ΡΡΡ Π½Π° ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈΡΠ΅.
- ΠΠ²Π° Π·Π°Π±Π΅Π»Π΅ΠΆΠΈΡΠ΅Π»Π½ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΠΏΠ»Π°Π½ΠΈΡΠ°Π½Π΅ΡΠΎ (ΠΈ Π΄Π²Π΅ΡΠ΅ Π² Π°Π»ΡΠ° Π²Π΅ΡΡΠΈΡ): β ΠΏΠ»Π°Π½ΠΈΡΠ° pods Π½Π° ΡΠ°Π±ΠΎΡΠ½ΠΈΡΠ΅ Π²ΡΠ·Π»ΠΈ.
Π Π²ΠΎΡ Π΅Π΄ΠΈΠ½ ΠΎΡ Π½Π°ΠΉ-Π²Π°ΠΆΠ½ΠΈΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ Π½Π° ΡΠ°Π±ΠΎΡΠ½ΠΈΡΠ΅ Π²ΡΠ·Π»ΠΈ:
- Kubelet β ΡΠΏΡΠ°Π²Π»ΡΠ²Π° ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ Π½Π° ΡΠ°Π±ΠΎΡΠ½ΠΈΡ Π²ΡΠ·Π΅Π».
ΠΠ° Π΄Π° ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌ ΠΊΠ°ΠΊ ΡΠ΅Π·ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ ΡΠ°Π±ΠΎΡΡΡ Π·Π°Π΅Π΄Π½ΠΎ, Π½Π΅ΠΊΠ° ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΠΏΡΠΈΠΌΠ΅Ρ.
ΠΠ° ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΡΠΎΠΊΡ-ΡΠΎ ΡΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½ΠΈΠ»ΠΈ kubectl create -f replicaset.yaml, ΡΠ»Π΅Π΄ ΠΊΠΎΠ΅ΡΠΎ kubectl Π΅ Π½Π°ΠΏΡΠ°Π²ΠΈΠ» HTTP POST Π·Π°ΡΠ²ΠΊΠ° ΠΊΡΠΌ (ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΠΉΠΊΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΡΠ΅ΡΡΡΡΠ° ReplicaSet).
ΠΠ°ΠΊΠ²ΠΎ ΡΠ΅ ΡΠ»ΡΡΠ²Π° Π² ΠΊΠ»ΡΡΡΠ΅ΡΠ°?
- Π‘Π»Π΅Π΄ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π°
kubectl create -f replicaset.yamlAPI ΡΡΡΠ²ΡΡΡΡ Π·Π°ΠΏΠ°Π·Π²Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° Π²Π°ΡΠΈΡ ΡΠ΅ΡΡΡΡ ReplicaSet Π² Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ:
- Π‘Π»Π΅Π΄ ΡΠΎΠ²Π° ΠΊΠΎΠ½ΡΡΠΎΠ»Π΅ΡΡΡ Π½Π° ReplicaSet Π² Π΄ΠΈΡΠΏΠ΅ΡΡΠ΅ΡΠ° Π½Π° ΠΊΠΎΠ½ΡΡΠΎΠ»Π΅ΡΠΈΡΠ΅ ΡΠ΅ Π°ΠΊΡΠΈΠ²ΠΈΡΠ°, ΠΊΠΎΠΉΡΠΎ ΡΠΏΡΠ°Π²Π»ΡΠ²Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ΡΠΎ, ΠΏΡΠΎΠΌΡΠ½Π°ΡΠ° ΠΈ ΠΈΠ·ΡΡΠΈΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠ΅ΡΡΡΡΠΈΡΠ΅ Π½Π° ReplicaSet:

- ΠΠΎΠ½ΡΡΠΎΠ»Π΅ΡΡΡ Π½Π° ReplicaSet ΡΡΠ·Π΄Π°Π²Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° pod Π·Π° Π²ΡΡΠΊΠ° ΡΠ΅ΠΏΠ»ΠΈΠΊΠ° Π½Π° ReplicaSet (Π² ΡΡΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ Ρ ΡΠ°Π±Π»ΠΎΠ½Π° Π½Π° pod Π² ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ReplicaSet) ΠΈ Π³ΠΈ Π·Π°ΠΏΠ°Π·Π²Π° Π² Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ:

- Π‘ΡΠ°ΡΡΠΈΡΠ° ΠΏΠ»Π°Π½ΠΈΡΠ°Ρ, ΠΊΠΎΠΉΡΠΎ ΠΏΡΠΎΡΠ»Π΅Π΄ΡΠ²Π° ΠΏΠΎΠ΄ΠΎΠ²Π΅ΡΠ΅, ΠΊΠΎΠΈΡΠΎ Π²ΡΠ΅ ΠΎΡΠ΅ Π½Π΅ ΡΠ° Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈ Π½Π° Π½ΠΎΠ΄:

- ΠΠ»Π°Π½ΠΈΡΠ°ΡΡΡ ΠΈΠ·Π±ΠΈΡΠ° ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ΡΡΠ° ΡΠ°Π±ΠΎΡΠ½Π° Π½ΠΎΠ΄Π° Π·Π° Π²ΡΠ΅ΠΊΠΈ ΠΏΠΎΠ΄ ΠΈ Π΄ΠΎΠ±Π°Π²Ρ ΡΠ°Π·ΠΈ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π² Π΄Π΅ΡΠΈΠ½ΠΈΡΠΈΡΡΠ° Π½Π° ΠΏΠΎΠ΄Π° Π² Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ:

- ΠΠ° ΡΠ°Π±ΠΎΡΠ½Π°ΡΠ° Π½ΠΎΠ΄Π°, Π½Π° ΠΊΠΎΡΡΠΎ Π΅ Π½Π°Π·Π½Π°ΡΠ΅Π½ ΠΏΠΎΠ΄ΡΡ, ΡΠ΅ ΡΡΠ°ΡΡΠΈΡΠ° Kubelet, ΠΊΠΎΠΉΡΠΎ ΠΏΡΠΎΡΠ»Π΅Π΄ΡΠ²Π° ΠΏΠΎΠ΄ΠΎΠ²Π΅ΡΠ΅, Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈ Π½Π° ΡΠ°Π·ΠΈ Π½ΠΎΠ΄Π°:

- Kubelet ΡΠ΅ΡΠ΅ Π΄Π΅ΡΠΈΠ½ΠΈΡΠΈΡΡΠ° Π½Π° ΠΏΠΎΠ΄Π° ΠΎΡ Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ ΠΈ Π΄Π°Π²Π° ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ Π½Π° ΡΡΠ΅Π΄Π°ΡΠ° Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Docker, Π·Π° ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ Π½Π° Π½ΠΎΠ΄:

ΠΠΎ-Π΄ΠΎΠ»Ρ Π΅ ΡΠ΅ΠΊΡΡΠΎΠ²Π°ΡΠ° Π²Π΅ΡΡΠΈΡ Π½Π° ΡΠΎΠ²Π° ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅.
API Π·Π°ΡΠ²ΠΊΠ° ΠΊΡΠΌ ΠΊΡΠ°ΠΉΠ½Π° ΡΠΎΡΠΊΠ° Π·Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° ReplicaSet ΡΠ΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π° ΠΎΡ API ΡΡΡΠ²ΡΡ. API ΡΡΡΠ²ΡΡΡΡ ΡΠ΄ΠΎΡΡΠΎΠ²Π΅ΡΡΠ²Π° Π·Π°ΡΠ²ΠΊΠ°ΡΠ° ΠΈ Π·Π°ΠΏΠ°Π·Π²Π° Π΄Π΅ΡΠΈΠ½ΠΈΡΠΈΡΡΠ° Π½Π° ΡΠ΅ΡΡΡΡΠ° ReplicaSet Π² Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ.
Π’ΠΎΠ²Π° ΡΡΠ±ΠΈΡΠΈΠ΅ ΡΡΠ°ΡΡΠΈΡΠ° ΠΊΠΎΠ½ΡΡΠΎΠ»Π΅ΡΠ° ReplicaSet, ΠΊΠΎΠΉΡΠΎ Π΅ ΠΏΠΎΠ΄ΠΏΡΠΎΡΠ΅Ρ Π½Π° Π΄ΠΈΡΠΏΠ΅ΡΡΠ΅ΡΠ° Π½Π° ΠΊΠΎΠ½ΡΡΠΎΠ»Π΅ΡΠΈ. ΠΠΎΠ½ΡΡΠΎΠ»Π΅ΡΡΡ ReplicaSet ΡΠ»Π΅Π΄ΠΈ Π·Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ΡΠΎ, ΠΎΠ±Π½ΠΎΠ²ΡΠ²Π°Π½Π΅ΡΠΎ ΠΈ ΠΈΠ·ΡΡΠΈΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠ΅ΡΡΡΡΠΈ ReplicaSet Π² Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ ΠΈ ΠΏΠΎΠ»ΡΡΠ°Π²Π° ΠΈΠ·Π²Π΅ΡΡΠΈΠ΅ Π·Π° ΡΡΠ±ΠΈΡΠΈΠ΅ΡΠΎ, ΠΊΠΎΠ³Π°ΡΠΎ ΡΠΎΠ²Π° ΡΠ΅ ΡΠ»ΡΡΠΈ.
ΠΠ°Π΄Π°ΡΠ°ΡΠ° Π½Π° ΠΊΠΎΠ½ΡΡΠΎΠ»Π΅ΡΠ° ReplicaSet Π΅ Π΄Π° ΡΠ΅ ΡΠ²Π΅ΡΠΈ, ΡΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ΅ΠΏΠ»ΠΈΠΊΠΈ Π½Π° ΠΏΠΎΠ΄ΠΎΠ²Π΅ΡΠ΅ Π½Π° ReplicaSet. Π Π½Π°ΡΠΈΡ ΠΏΡΠΈΠΌΠ΅Ρ Π²ΡΠ΅ ΠΎΡΠ΅ Π½ΡΠΌΠ° ΠΏΠΎΠ΄ΠΎΠ²Π΅, Π·Π°ΡΠΎΠ²Π° ΠΊΠΎΠ½ΡΡΠΎΠ»Π΅ΡΡΡ ReplicaSet ΡΡΠ·Π΄Π°Π²Π° ΡΠ΅Π·ΠΈ Π΄Π΅ΡΠΈΠ½ΠΈΡΠΈΠΈ Π½Π° ΠΏΠΎΠ΄ΠΎΠ²Π΅ (Π² ΡΡΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ Ρ ΡΠ°Π±Π»ΠΎΠ½Π° Π½Π° ΠΏΠΎΠ΄Π° Π² Π΄Π΅ΡΠΈΠ½ΠΈΡΠΈΡΡΠ° Π½Π° ReplicaSet) ΠΈ Π³ΠΈ Π·Π°ΠΏΠ°Π·Π²Π° Π² Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ.
Π‘ΡΠ·Π΄Π°Π²Π°Π½Π΅ΡΠΎ Π½Π° Π½ΠΎΠ²ΠΈ ΠΏΠΎΠ΄ΠΎΠ²Π΅ ΡΡΠ°ΡΡΠΈΡΠ° ΠΏΠ»Π°Π½ΠΈΡΠ°Ρ, ΠΊΠΎΠΉΡΠΎ ΠΏΡΠΎΡΠ»Π΅Π΄ΡΠ²Π° Π΄Π΅ΡΠΈΠ½ΠΈΡΠΈΠΈΡΠ΅ Π½Π° ΠΏΠΎΠ΄ΠΎΠ²Π΅, ΠΊΠΎΠΈΡΠΎ Π²ΡΠ΅ ΠΎΡΠ΅ Π½Π΅ ΡΠ° ΠΏΠ»Π°Π½ΠΈΡΠ°Π½ΠΈ Π·Π° ΡΠ°Π±ΠΎΡΠ½ΠΈ Π½ΠΎΠ΄ΠΈ. ΠΠ»Π°Π½ΠΈΡΠ°ΡΡΡ ΠΈΠ·Π±ΠΈΡΠ° ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠ° ΡΠ°Π±ΠΎΡΠ½Π° Π½ΠΎΠ΄Π° Π·Π° Π²ΡΠ΅ΠΊΠΈ ΠΏΠΎΠ΄ ΠΈ Π°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ° Π΄Π΅ΡΠΈΠ½ΠΈΡΠΈΠΈΡΠ΅ Π½Π° ΠΏΠΎΠ΄ΠΎΠ²Π΅ΡΠ΅ Π² Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ.
ΠΠ±ΡΡΠ½Π΅ΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΠ΅ Π΄ΠΎ ΡΠΎΠ·ΠΈ ΠΌΠΎΠΌΠ΅Π½Ρ Π½ΠΈΠΊΡΠ΄Π΅ Π² ΠΊΠ»ΡΡΡΠ΅ΡΠ° Π½Π΅ Π΅ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°Π½ ΠΊΠΎΠ΄ Π½Π° ΡΠ°Π±ΠΎΡΠ½ΠΎ Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅. ΠΡΠΈΡΠΊΠΎ, ΠΊΠΎΠ΅ΡΠΎ Π΅ Π½Π°ΠΏΡΠ°Π²Π΅Π½ΠΎ Π΄ΠΎ ΠΌΠΎΠΌΠ΅Π½ΡΠ°, β Π΅ ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ΡΠΎ ΠΈ ΠΎΠ±Π½ΠΎΠ²ΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠ΅ΡΡΡΡΠΈ Π² Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ Π½Π° Π³Π»Π°Π²Π½ΠΈΡ ΡΠ·Π΅Π».
ΠΠΎΡΠ»Π΅Π΄Π½ΠΎΡΠΎ ΡΡΠ±ΠΈΡΠΈΠ΅ ΡΡΠ°ΡΡΠΈΡΠ° Kubelet, ΠΊΠΎΠΉΡΠΎ ΠΏΡΠΎΡΠ»Π΅Π΄ΡΠ²Π° ΠΏΠΎΠ΄ΠΎΠ²Π΅ΡΠ΅, ΠΏΠ»Π°Π½ΠΈΡΠ°Π½ΠΈ Π·Π° ΡΠ΅Ρ Π½ΠΈΡΠ΅ ΡΠ°Π±ΠΎΡΠ½ΠΈ Π½ΠΎΠ΄ΠΈ. Kubelet Π½Π° ΡΠ°Π±ΠΎΡΠ½Π°ΡΠ° Π½ΠΎΠ΄Π°, Π·Π° ΠΊΠΎΡΡΠΎ ΡΠ° Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈ Π²Π°ΡΠΈΡΠ΅ ΠΏΠΎΠ΄ΠΎΠ²Π΅ ReplicaSet, ΡΡΡΠ±Π²Π° Π΄Π° Π΄Π°Π²Π° ΡΠΊΠ°Π·Π°Π½ΠΈΡ Π½Π° ΡΡΠ΅Π΄Π°ΡΠ° Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Docker, Π΄Π° ΠΈΠ·ΡΠ΅Π³Π»ΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΈΡΠ΅ ΠΎΠ±ΡΠ°Π·ΠΈ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ ΠΈ Π΄Π° Π³ΠΈ ΡΡΠ°ΡΡΠΈΡΠ°.
Π ΡΠΎΠ·ΠΈ ΠΌΠΎΠΌΠ΅Π½Ρ, Π½Π°ΠΉ-Π½Π°ΠΊΡΠ°Ρ, Π²Π°ΡΠ΅ΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ReplicaSet Π΅ ΡΡΠ°ΡΡΠΈΡΠ°Π½ΠΎ!
Π ΠΎΠ»ΡΡΠ° Π½Π° API Kubernetes
ΠΠ°ΠΊΡΠΎ Π²ΠΈΠ΄ΡΡ ΡΠ΅ Π² ΠΏΡΠ΅Π΄ΠΈΡΠ½ΠΈΡ ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈΡΠ΅ Π½Π° Kubernetes (Ρ ΠΈΠ·ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π½Π° API ΡΡΡΠ²ΡΡΠ° ΠΈ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ) ΡΠ»Π΅Π΄ΡΡ Π·Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ Π² ΡΠ΅ΡΡΡΡΠΈΡΠ΅ Π² Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ ΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡΡΠ° Π·Π° ΡΠ΅ΡΡΡΡΠΈΡΠ΅ Π² Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ.
Π Π°Π·Π±ΠΈΡΠ° ΡΠ΅, ΡΠ΅Π·ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ Π½Π΅ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²Π°Ρ Ρ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ, Π° ΡΠ°ΠΌΠΎ ΠΏΡΠ΅Π· Kubernetes API.
ΠΠ΅ΠΊΠ° ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΡΠ»Π΅Π΄Π½ΠΈΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠΈ:
- ΠΠΎΠ½ΡΡΠΎΠ»Π΅ΡΡΡ ReplicaSet ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΊΠΎΠ½Π΅ΡΠ½Π°ΡΠ° ΡΠΎΡΠΊΠ° Π½Π° API Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡΠ°
watchΠ·Π° Π½Π°Π±Π»ΡΠ΄Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ Π² ΡΠ΅ΡΡΡΡΠΈΡΠ΅ Π½Π° ReplicaSet. - ΠΠΎΠ½ΡΡΠΎΠ»Π΅ΡΡΡ ReplicaSet ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΊΠΎΠ½Π΅ΡΠ½Π°ΡΠ° ΡΠΎΡΠΊΠ° Π½Π° API (ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° ΠΏΠΎΠ΄) Π·Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° ΠΏΠΎΠ΄ΠΎΠ²Π΅.
- ΠΠ»Π°Π½ΠΈΡΠ°ΡΠΈΡΡ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΊΠΎΠ½Π΅ΡΠ½Π°ΡΠ° ΡΠΎΡΠΊΠ° Π½Π° API (ΠΏΡΠΎΠΌΡΠ½Π° Π½Π° ΠΏΠΎΠ΄) Π·Π° Π°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΠΎΠ΄ΠΎΠ²Π΅ΡΠ΅ Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° ΠΈΠ·Π±ΡΠ°Π½Π°ΡΠ° ΡΠ°Π±ΠΎΡΠ½Π° Π½ΠΎΠ΄Π°.
ΠΠ°ΠΊΡΠΎ Π²ΠΈΠΆΠ΄Π°ΡΠ΅, ΡΠΎΠ²Π° Π΅ ΡΡΡΠΎΡΠΎ API, Π΄ΠΎ ΠΊΠΎΠ΅ΡΠΎ ΡΠ΅ ΠΎΠ±ΡΡΡΠ° kubectl. ΠΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΡΡΡΠΎΡΠΎ API Π·Π° ΡΠ°Π±ΠΎΡΠ° Π½Π° Π²ΡΡΡΠ΅ΡΠ½ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ ΠΈ Π²ΡΠ½ΡΠ½ΠΈ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈ Π΅ ΠΎΡΠ½ΠΎΠ²Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡ Π² Π΄ΠΈΠ·Π°ΠΉΠ½Π° Π½Π° Kubernetes.
Π‘Π΅Π³Π° ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΎΠ±ΠΎΠ±ΡΠΈΠΌ ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠΈ Kubernetes:
- Π₯ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ Π·Π°ΠΏΠ°Π·Π²Π° ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ΡΠΎ, Ρ.Π΅. ΡΠ΅ΡΡΡΡΠΈΡΠ΅ Π½Π° Kubernetes.
- API ΡΡΡΠ²ΡΡΡΡ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΊΡΠΌ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ ΠΏΠΎΠ΄ ΡΠΎΡΠΌΠ°ΡΠ° Π½Π° Kubernetes API.
- ΠΡΠΈΡΠΊΠΈ ΠΎΡΡΠ°Π½Π°Π»ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ ΠΈ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈ Π½Π° Kubernetes ΡΠ΅ΡΠ°Ρ, Π½Π°Π±Π»ΡΠ΄Π°Π²Π°Ρ ΠΈ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΠΈΡΠ°Ρ ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ΡΠΎ (ΡΠ΅ΡΡΡΡΠΈΡΠ΅) Π½Π° Kubernetes ΡΡΠ΅Π· API.
ΠΠ½Π°Π½ΠΈΠ΅ΡΠΎ Π·Π° ΡΠ΅Π·ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΠΈ ΡΠ΅ ΠΏΠΎΠΌΠΎΠ³Π½Π΅ Π΄Π° ΡΠ°Π·Π±Π΅ΡΠ΅ΡΠ΅ ΠΏΠΎ-Π΄ΠΎΠ±ΡΠ΅ kubectl ΠΈ Π΄Π° Π³ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»Π½ΠΎ.
Π‘Π΅Π³Π° Π½Π΅ΠΊΠ° Π΄Π° ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΡΠ΅Π΄ΠΈΡΠ° ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΈ ΡΡΠ²Π΅ΡΠΈ ΠΈ ΡΡΠΈΠΊΠΎΠ²Π΅, ΠΊΠΎΠΈΡΠΎ ΡΠ΅ ΠΏΠΎΠΌΠΎΠ³Π½Π°Ρ Π·Π° ΠΏΠΎΠ²ΠΈΡΠ°Π²Π°Π½Π΅ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ° ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ° Ρ kubectl.
1. Π£ΡΠΊΠΎΡΡΠ²Π°Π½Π΅ Π½Π° Π²ΡΠ²Π΅ΠΆΠ΄Π°Π½Π΅ΡΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° Π΄ΠΎΠΏΡΠ»Π²Π°Π½Π΅ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄ΠΈΡΠ΅
ΠΠ΄ΠΈΠ½ ΠΎΡ Π½Π°ΠΉ-ΠΏΠΎΠ»Π΅Π·Π½ΠΈΡΠ΅, Π½ΠΎ ΡΠ΅ΡΡΠΎ ΠΏΡΠ΅Π½Π΅Π±ΡΠ΅Π³Π²Π°Π½ΠΈ ΡΡΠΈΠΊΠΎΠ²Π΅ Π·Π° ΠΏΠΎΠ²ΠΈΡΠ°Π²Π°Π½Π΅ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ° ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ° Ρ kubectl Π΅ Π΄ΠΎΠΏΡΠ»Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄ΠΈΡΠ΅.
ΠΠΎΠΏΡΠ»Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄ΠΈΡΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ ΠΏΠΎΠΏΡΠ»Π²Π°Π½Π΅ Π½Π° ΠΎΡΠ΄Π΅Π»Π½ΠΈ ΡΠ°ΡΡΠΈ ΠΎΡ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈΡΠ΅ Π½Π° kubectl Ρ ΠΊΠ»Π°Π²ΠΈΡΠ° Tab. Π’ΠΎ ΡΠ°Π±ΠΎΡΠΈ Π·Π° ΠΏΠΎΠ΄ΠΏΠΎΡΡΡΠΊΠΈ, ΠΎΠΏΡΠΈΠΈ ΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΈ, Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ Π·Π° ΠΏΠΎ-ΡΠ»ΠΎΠΆΠ½ΠΈ, ΠΊΠ°ΡΠΎ ΠΈΠΌΠ΅Π½Π°ΡΠ° Π½Π° ΡΠ΅ΡΡΡΡΠΈΡΠ΅.
ΠΠΈΠΆΡΠ΅ ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠΈ Π΄ΠΎΠΏΡΠ»Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄ΠΈΡΠ΅ Π½Π° 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 (ΠΏΡΠΎΠ²Π΅ΡΠ΅ΡΠ΅ ΠΈΠ·Ρ
ΠΎΠ΄Π° bash --version).
Π‘ΠΊΡΠΈΠΏΡΡΡ Π·Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ Π΄ΠΎΠΏΡΠ»Π²Π°Π½Π΅ Π² Bash Π·Π°Π²ΠΈΡΠΈ ΠΎΡ ΠΏΡΠΎΠ΅ΠΊΡΠ° , Π·Π°ΡΠΎΠ²Π° ΠΏΡΡΠ²ΠΎ ΡΡΡΠ±Π²Π° Π΄Π° Π³ΠΎ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΠ΅.
ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΠ΅ bash-completion Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° :
$ 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 Π·Π°ΡΠ΅ΠΆΠ΄Π° Π²ΡΠΈΡΠΊΠΈ ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅ ΠΎΡ ΡΠ°Π·ΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ.
ΠΠΊΠΎ ΡΡΠ΅ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π»ΠΈ , ΡΠΎ Π½Π΅ Π΅ Π½ΡΠΆΠ½ΠΎ Π΄Π° ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°ΡΠ΅ ΠΏΡΠ΅Π΄ΠΈΡΠ½Π°ΡΠ° ΡΡΡΠΏΠΊΠ°, ΡΡΠΉ ΠΊΠ°ΡΠΎ ΡΠΊΡΠΈΠΏΡΡΡ Π·Π° Π°Π²ΡΠΎΠ΄ΠΎΠ²ΡΡΡΠ²Π°Π½Π΅ ΡΠ΅ Π±ΡΠ΄Π΅ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ ΡΠ°Π·ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ Π² ΠΏΠ°ΠΏΠΊΠ°ΡΠ° /usr/local/etc/bash_completion.d ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΠΈΠ½ΡΡΠ°Π»Π°ΡΠΈΡΡΠ°. Π ΡΠΎΠ·ΠΈ ΡΠ»ΡΡΠ°ΠΉ Π°Π²ΡΠΎΠ΄ΠΎΠ²ΡΡΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° kubectl ΡΠ΅ Π·Π°ΠΏΠΎΡΠ½Π΅ Π΄Π° ΡΠ°Π±ΠΎΡΠΈ Π²Π΅Π΄Π½Π°Π³Π° ΡΠ»Π΅Π΄ ΠΊΠ°ΡΠΎ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΠ΅ bash-completion.
Π ΠΊΡΠ°ΠΉΠ½Π° ΡΠΌΠ΅ΡΠΊΠ° Π²ΡΠΈΡΠΊΠΈ ΡΠ΅Π·ΠΈ ΠΎΠΏΡΠΈΠΈ ΡΠ° Π΅ΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½ΠΈ.
Zsh
Π‘ΠΊΡΠΈΠΏΡΠΎΠ²Π΅ΡΠ΅ Π·Π° Π°Π²ΡΠΎΠ΄ΠΎΠ²ΡΡΡΠ²Π°Π½Π΅ Π·Π° Zsh Π½Π΅ ΠΈΠ·ΠΈΡΠΊΠ²Π°Ρ Π½ΠΈΠΊΠ°ΠΊΠ²ΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ. ΠΡΠΈΡΠΊΠΎ, ΠΊΠΎΠ΅ΡΠΎ Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ, Π΅ Π΄Π° Π³ΠΈ Π°ΠΊΡΠΈΠ²ΠΈΡΠ°ΡΠ΅ ΠΏΡΠΈ Π·Π°ΡΠ΅ΠΆΠ΄Π°Π½Π΅ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π½Π°ΡΠ° ΠΎΠ±Π²ΠΈΠ²ΠΊΠ°.
ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ ΡΠΎΠ²Π°, Π΄ΠΎΠ±Π°Π²ΡΠΉΠΊΠΈ ΡΠ΅Π΄ Π² ΡΠ²ΠΎΡ ~/.zshrc ΡΠ°ΠΉΠ»:
source <(kubectl completion zsh) ΠΠΊΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ Π³ΡΠ΅ΡΠΊΠ° not found: compdef ΡΠ»Π΅Π΄ ΡΠ΅ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° Π²Π°ΡΠ°ΡΠ° ΠΎΠ±Π²ΠΈΠ²ΠΊΠ°, ΡΡΡΠ±Π²Π° Π΄Π° Π°ΠΊΡΠΈΠ²ΠΈΡΠ°ΡΠ΅ Π²Π³ΡΠ°Π΄Π΅Π½Π°ΡΠ° ΡΡΠ½ΠΊΡΠΈΡ compdef. ΠΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½Π°, Π΄ΠΎΠ±Π°Π²ΡΠΉΠΊΠΈ Π² Π½Π°ΡΠ°Π»ΠΎΡΠΎ Π½Π° Π²Π°ΡΠΈΡ ΡΠ°ΠΉΠ» ~/.zshrc ΡΠ»Π΅Π΄Π½ΠΎΡΠΎ:
autoload -Uz compinit\ncompinit2. ΠΡΡΠ· ΠΏΡΠ΅Π³Π»Π΅Π΄ Π½Π° ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈΡΠ΅ Π½Π° ΡΠ΅ΡΡΡΡΠΈΡΠ΅
ΠΠΎΠ³Π°ΡΠΎ ΡΡΠ·Π΄Π°Π²Π°ΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π½Π° ΡΠ΅ΡΡΡΡΠΈ 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.spec3. ΠΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅ ΠΏΠ΅ΡΡΠΎΠ½Π°Π»ΠΈΠ·ΠΈΡΠ°Π½ ΡΠΎΡΠΌΠ°Ρ Π½Π° ΠΈΠ·Ρ ΠΎΠ΄Π½ΠΈΡΠ΅ ΠΊΠΎΠ»ΠΎΠ½ΠΈ
ΠΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ ΡΠΎΡΠΌΠ°ΡΡΡ Π½Π° ΠΈΠ·Ρ
ΠΎΠ΄Π° Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° 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 Π² ΡΠ΅ΡΡΡΡΠ½ΠΎΡΠΎ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π½Π° ΠΏΠΎΠ΄Π°. ΠΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΠΈ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π½Π°ΠΌΠ΅ΡΠΈΡΠ΅ Π² ΠΈΠ»ΠΈ Π΄Π° Π½Π°ΠΏΠΈΡΠ΅ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° 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 Π΅ Π΅Π·ΠΈΠΊ Π·Π° ΠΈΠ·Π²Π»ΠΈΡΠ°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ ΠΎΡ 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 ΡΠ° ΡΠΏΠΈΡΡΡΠΈ, Π° ΡΠΎΠ·ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΡΠ΅ ΠΈΠ·Π±ΠΈΡΠ°Ρ Π΅Π»Π΅ΠΌΠ΅Π½ΡΠΈ ΠΎΡ ΡΠ΅Π·ΠΈ ΡΠΏΠΈΡΡΡΠΈ. Π§Π΅ΡΡΠΎ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Ρ Π·Π°ΠΌΠ΅ΡΡΠ²Π°Ρ Π·Π½Π°ΠΊ ΠΊΠ°ΡΠΎ [*], Π·Π° Π΄Π° ΠΈΠ·Π±Π΅ΡΠ΅ Π²ΡΠΈΡΠΊΠΈ Π΅Π»Π΅ΠΌΠ΅Π½ΡΠΈ ΠΎΡ ΡΠΏΠΈΡΡΠΊΠ°.
ΠΡΠΈΠΌΠ΅ΡΠΈ Π·Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅
ΠΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈΡΠ΅ Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΊΠΈ ΡΠΎΡΠΌΠ°Ρ Π½Π° ΠΈΠ·Ρ ΠΎΠ΄Π½ΠΈΡΠ΅ ΠΊΠΎΠ»ΠΎΠ½ΠΈ ΡΠ° Π±Π΅Π·Π³ΡΠ°Π½ΠΈΡΠ½ΠΈ, ΡΡΠΉ ΠΊΠ°ΡΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΠΎΠΊΠ°ΠΆΠ΅ΡΠ΅ Π²ΡΡΠΊΠΎ ΠΏΠΎΠ»Π΅ ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡ ΠΎΡ ΠΏΠΎΠ»Π΅ΡΠ° Π½Π° ΡΠ΅ΡΡΡΡΠ° Π² ΠΈΠ·Ρ ΠΎΠ΄Π°. ΠΡΠΎ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ° Π·Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π½ΠΎ Π½Π΅ ΡΠ΅ ΠΊΠΎΠ»Π΅Π±Π°ΠΉΡΠ΅ Π΄Π° Π³ΠΈ ΠΈΠ·ΡΠ»Π΅Π΄Π²Π°ΡΠ΅ ΡΠ°ΠΌΠΈ ΠΈ Π΄Π° Π½Π°ΠΌΠ΅ΡΠΈΡΠ΅ ΠΏΠΎΠ»Π΅Π·Π½ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π·Π° Π²Π°Ρ.
- ΠΠΎΠΊΠ°Π·Π²Π°Π½Π΅ Π½Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ Π·Π° ΠΏΠΎΠ΄ΠΎΠ²Π΅ΡΠ΅:
$ 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Π’Π°Π·ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΏΠΎΠΊΠ°Π·Π²Π° ΠΈΠΌΠ΅Π½Π°ΡΠ° Π½Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡΡΠ° Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈΡΠ΅ Π·Π° Π²ΡΠ΅ΠΊΠΈ ΠΏΠΎΠ΄.
ΠΠΎΠΌΠ½Π΅ΡΠ΅, ΡΠ΅ ΠΏΠΎΠ΄ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΡΠ΄ΡΡΠΆΠ° Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ, ΡΠ°ΠΊΠ° ΡΠ΅ ΠΈΠΌΠ΅Π½Π°ΡΠ° Π½Π° ΠΎΠ±ΡΠ°Π·ΠΈΡΠ΅ ΡΠ΅ Π±ΡΠ΄Π°Ρ ΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈ Π² Π΅Π΄Π½Π° ΡΠ΅Π΄ΠΈΡΠ°, ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈ Ρ Π·Π°ΠΏΠ΅ΡΠ°Ρ.
- ΠΠΎΠΊΠ°Π·Π²Π°Π½Π΅ Π½Π° Π·ΠΎΠ½ΠΈ Π·Π° Π΄ΠΎΡΡΡΠΏ Π½Π° Π½ΠΎΠ΄ΠΎΠ²Π΅ΡΠ΅:
$ 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Π’Π°Π·ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π° Π΅ ΡΠ΄ΠΎΠ±Π½Π°, Π°ΠΊΠΎ Π²Π°ΡΠΈΡΡ ΠΊΠ»Π°ΡΡΠ΅Ρ Π΅ ΡΠ°Π·ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ Π² ΠΏΡΠ±Π»ΠΈΡΠ½ΠΎ ΠΎΠ±Π»Π°ΠΊΠΎ. Π’Ρ ΠΏΠΎΠΊΠ°Π·Π²Π° Π·ΠΎΠ½Π°ΡΠ° Π½Π° Π΄ΠΎΡΡΡΠΏ Π·Π° Π²ΡΠ΅ΠΊΠΈ Π½ΠΎΠ΄.
ΠΠΎΠ½Π° Π½Π° Π΄ΠΎΡΡΡΠΏ Π΅ ΠΎΠ±Π»Π°ΡΠ½Π° ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡ, ΠΊΠΎΡΡΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ°Π²Π° Π·ΠΎΠ½Π°ΡΠ° Π½Π° ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡ Π΄ΠΎ Π³Π΅ΠΎΠ³ΡΠ°ΡΡΠΊΠΈ ΡΠ΅Π³ΠΈΠΎΠ½.
ΠΠΎΠ½ΠΈΡΠ΅ Π½Π° Π΄ΠΎΡΡΡΠΏ Π·Π° Π²ΡΠ΅ΠΊΠΈ Π½ΠΎΠ΄ ΡΠ΅ ΠΏΠΎΠ»ΡΡΠ°Π²Π°Ρ ΡΡΠ΅Π· ΡΠΏΠ΅ΡΠΈΠ°Π»Π΅Π½ Π΅ΡΠΈΠΊΠ΅Ρ β . ΠΠΊΠΎ ΠΊΠ»Π°ΡΡΠ΅ΡΡΡ ΡΠ°Π±ΠΎΡΠΈ Π² ΠΏΡΠ±Π»ΠΈΡΠ½ΠΎ ΠΎΠ±Π»Π°ΠΊΠΎ, ΡΠΎΠ·ΠΈ Π΅ΡΠΈΠΊΠ΅Ρ ΡΠ΅ ΡΡΠ·Π΄Π°Π²Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ ΠΈ ΡΠ΅ Π·Π°ΠΏΡΠ»Π²Π° Ρ ΠΈΠΌΠ΅Π½Π°ΡΠ° Π½Π° Π·ΠΎΠ½ΠΈΡΠ΅ Π½Π° Π΄ΠΎΡΡΡΠΏ Π·Π° Π²ΡΠ΅ΠΊΠΈ Π½ΠΎΠ΄.
ΠΡΠΈΠΊΠ΅ΡΠΈΡΠ΅ Π½Π΅ ΡΠ° ΡΠ°ΡΡ ΠΎΡ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈΡΠ΅ Π½Π° ΡΠ΅ΡΡΡΡΠΈΡΠ΅ Π½Π° Kubernetes, ΡΠ°ΠΊΠ° ΡΠ΅ Π½ΡΠΌΠ° Π΄Π° Π½Π°ΠΌΠ΅ΡΠΈΡΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° ΡΡΡ Π² . ΠΡΠΏΡΠ΅ΠΊΠΈ ΡΠΎΠ²Π°, ΡΠ΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ Π²ΠΈΠ΄ΡΡ (ΠΊΠ°ΠΊΡΠΎ ΠΈ Π²ΡΠΈΡΠΊΠΈ Π΄ΡΡΠ³ΠΈ Π΅ΡΠΈΠΊΠ΅ΡΠΈ), Π°ΠΊΠΎ ΠΏΠΎΠΈΡΠΊΠ°ΡΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° Π½ΠΎΠ΄ΠΎΠ²Π΅ΡΠ΅ Π² ΡΠΎΡΠΌΠ°Ρ 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 ΡΠ°ΠΉΠ»Π°:

ΠΠ°ΠΊΡΠΎ Π²ΠΈΠΆΠ΄Π°ΡΠ΅, kubeconfig ΡΠ°ΠΉΠ»ΡΡ ΡΡΠ΄ΡΡΠΆΠ° Π½Π°Π±ΠΎΡ ΠΎΡ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠΈ. ΠΠΎΠ½ΡΠ΅ΠΊΡΡΡΡ ΡΠ΅ ΡΡΡΡΠΎΠΈ ΠΎΡ ΡΡΠΈ Π΅Π»Π΅ΠΌΠ΅Π½ΡΠ°:
- Cluster β URL Π½Π° API ΡΡΡΠ²ΡΡΠ° Π½Π° ΠΊΠ»ΡΡΡΠ΅ΡΠ°.
- User β ΡΠ΄ΠΎΡΡΠΎΠ²Π΅ΡΠΈΡΠ΅Π»Π½ΠΈ Π΄Π°Π½Π½ΠΈ Π·Π° Π°Π²ΡΠ΅Π½ΡΠΈΠΊΠ°ΡΠΈΡ Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ Π² ΠΊΠ»ΡΡΡΠ΅ΡΠ°.
- Namespace β ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎΡΠΎ Π½Π° ΠΈΠΌΠ΅Π½Π°ΡΠ°, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΎ ΠΏΡΠΈ ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ Ρ ΠΊΠ»ΡΡΡΠ΅ΡΠ°.
ΠΠ° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ°, ΡΠ΅ΡΡΠΎ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π΅Π΄ΠΈΠ½ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ Π½Π° ΠΊΠ»ΡΡΡΠ΅Ρ Π² ΡΠ²ΠΎΡ kubeconfig ΡΠ°ΠΉΠ». ΠΡΠΏΡΠ΅ΠΊΠΈ ΡΠΎΠ²Π°, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΈΠΌΠ°ΡΠ΅ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° Π½Π° ΠΊΠ»ΡΡΡΠ΅ΡΠ°, ΠΊΠΎΠΈΡΠΎ ΡΠ΅ ΡΠ°Π·Π»ΠΈΡΠ°Π²Π°Ρ ΠΏΠΎ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π» ΠΈΠ»ΠΈ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ Π½Π° ΠΈΠΌΠ΅Π½Π°ΡΠ°. Π’Π°Π·ΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠΈ ΠΎΠ±Π°ΡΠ΅ Π½Π΅ Π΅ ΡΠ΅ΡΡΠ°, ΡΠ°ΠΊΠ° ΡΠ΅ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π° Π²Π·Π°ΠΈΠΌΠ½ΠΎ-Π΅Π΄Π½ΠΎΠ·Π½Π°ΡΠ½ΠΎ ΡΡΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠ»ΡΡΡΠ΅ΡΠΈΡΠ΅ ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠΈΡΠ΅.
Π Π²ΡΠ΅ΠΊΠΈ ΠΌΠΎΠΌΠ΅Π½Ρ Π΅Π΄ΠΈΠ½ ΠΎΡ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠΈΡΠ΅ Π΅ ΡΠ΅ΠΊΡΡ:

ΠΠΎΠ³Π°ΡΠΎ kubectl ΡΠ΅ΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΈΡ ΡΠ°ΠΉΠ», ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡΡΠ° Π²ΠΈΠ½Π°Π³ΠΈ ΡΠ΅ Π²Π·Π΅ΠΌΠ° ΠΎΡ ΡΠ΅ΠΊΡΡΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ. Π ΠΏΡΠΈΠΌΠ΅ΡΠ° ΠΏΠΎ-Π³ΠΎΡΠ΅ kubectl ΡΠ΅ ΡΠ΅ ΡΠ²ΡΡΠ·Π²Π° Ρ ΠΊΠ»ΡΡΡΠ΅ΡΠ° Hare.
Π‘ΡΠΎΡΠ²Π΅ΡΠ½ΠΎ, Π·Π° Π΄Π° ΠΏΡΠ΅Π²ΠΊΠ»ΡΡΠΈΡΠ΅ Π½Π° Π΄ΡΡΠ³ ΠΊΠ»ΡΡΡΠ΅Ρ, ΡΡΡΠ±Π²Π° Π΄Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ ΡΠ΅ΠΊΡΡΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ Π² kubeconfig ΡΠ°ΠΉΠ»Π°:

Π‘Π΅Π³Π° kubectl ΡΠ΅ ΡΠ΅ ΡΠ²ΡΡΠ·Π²Π° Ρ ΠΊΠ»ΡΡΡΠ΅ΡΠ° Fox.
ΠΠ° Π΄Π° ΠΏΡΠ΅Π²ΠΊΠ»ΡΡΠΈΡΠ΅ Π½Π° Π΄ΡΡΠ³ΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ Π½Π° ΠΈΠΌΠ΅Π½Π°ΡΠ° Π² ΡΡΡΠΈΡ ΠΊΠ»ΡΡΡΠ΅Ρ, ΡΡΡΠ±Π²Π° Π΄Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ ΡΡΠΎΠΉΠ½ΠΎΡΡΡΠ° Π½Π° Π΅Π»Π΅ΠΌΠ΅Π½ΡΠ° namespace Π·Π° ΡΠ΅ΠΊΡΡΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ:

Π ΠΏΠΎΡΠΎΡΠ΅Π½ΠΈΡ ΠΏΠΎ-Π³ΠΎΡΠ΅ ΠΏΡΠΈΠΌΠ΅Ρ kubectl ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎΡΠΎ Π½Π° ΠΈΠΌΠ΅Π½Π°ΡΠ° Prod Π½Π° ΠΊΠ»ΡΡΡΠ΅ΡΠ° Fox (ΠΏΡΠ΅Π΄ΠΈΡΠ½ΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ Π½Π° ΠΈΠΌΠ΅Π½Π°ΡΠ° Π΅ Π±ΠΈΠ»ΠΎ Test).
ΠΠ±ΡΡΠ½Π΅ΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΠ΅ kubectl ΡΡΡΠΎ ΠΏΡΠ΅Π΄Π»Π°Π³Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ --cluster, --user, --namespace ΠΈ --context, ΠΊΠΎΠΈΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°Ρ Π΄Π° ΡΠ΅ ΠΏΡΠ΅Π·Π°ΠΏΠΈΡΠ²Π°Ρ ΠΎΡΠ΄Π΅Π»Π½ΠΈ Π΅Π»Π΅ΠΌΠ΅Π½ΡΠΈ ΠΈ ΡΠ°ΠΌΠΈΡΡ ΡΠ΅ΠΊΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ, Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΡΠΎΠ²Π°, ΠΊΠΎΠ΅ΡΠΎ Π΅ Π·Π°Π΄Π°Π΄Π΅Π½ΠΎ Π² kubeconfig ΡΠ°ΠΉΠ»Π°. ΠΠΈΠΆΡΠ΅ kubectl options.
Π’Π΅ΠΎΡΠ΅ΡΠΈΡΠ½ΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΡΡΠ½ΠΎ Π΄Π° ΠΏΡΠΎΠΌΠ΅Π½ΡΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΡΠ΅ Π² kubeconfig ΡΠ°ΠΉΠ»Π°. ΠΠΎ ΡΠΎΠ²Π° Π΅ Π½Π΅ΡΠ΄ΠΎΠ±Π½ΠΎ. ΠΠ° ΡΠ»Π΅ΡΠ½ΡΠ²Π°Π½Π΅ Π½Π° ΡΠ΅Π·ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°Ρ ΡΠ°Π·Π½ΠΎΠΎΠ±ΡΠ°Π·Π½ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°Ρ Π΄Π° ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΡΠ΅ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ.
ΠΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅ kubectx
ΠΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠΏΡΠ»ΡΡΠ΅Π½ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π·Π° ΠΏΡΠ΅Π²ΠΊΠ»ΡΡΠ²Π°Π½Π΅ ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠ»ΡΡΡΠ΅ΡΠΈ ΠΈ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° Π½Π° ΠΈΠΌΠ΅Π½Π°ΡΠ°.
Π£ΡΠΈΠ»ΠΈΡΠ°ΡΠ° ΠΏΡΠ΅Π΄Π»Π°Π³Π° ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ kubectx ΠΈ kubens Π·Π° ΠΏΡΠΎΠΌΡΠ½Π° Π½Π° ΡΠ΅ΠΊΡΡΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ ΠΈ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ Π½Π° ΠΈΠΌΠ΅Π½Π°ΡΠ° ΡΡΠΎΡΠ²Π΅ΡΠ½ΠΎ.
ΠΠ°ΠΊΡΠΎ Π²Π΅ΡΠ΅ Π±Π΅ΡΠ΅ ΡΠΏΠΎΠΌΠ΅Π½Π°ΡΠΎ, ΠΏΡΠΎΠΌΡΠ½Π°ΡΠ° Π½Π° ΡΠ΅ΠΊΡΡΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ ΠΎΠ·Π½Π°ΡΠ°Π²Π° ΠΏΡΠΎΠΌΡΠ½Π° Π½Π° ΠΊΠ»ΡΡΡΠ΅ΡΠ°, Π°ΠΊΠΎ ΠΈΠΌΠ°ΡΠ΅ ΡΠ°ΠΌΠΎ Π΅Π΄ΠΈΠ½ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ Π·Π° ΠΊΠ»ΡΡΡΠ΅ΡΠ°.
ΠΡΠΎ ΠΏΡΠΈΠΌΠ΅Ρ Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΡΠ΅Π·ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ:

ΠΡΡΡΠ½ΠΎΡΡ, ΡΠ΅Π·ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ ΠΏΡΠΎΡΡΠΎ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠ°Ρ ΡΠ°ΠΉΠ»Π° kubeconfig, ΠΊΠ°ΠΊΡΠΎ Π±Π΅ΡΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΎ ΠΏΠΎ-Π³ΠΎΡΠ΅.
ΠΠ° Π΄Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΠ΅ kubectx, ΡΠ»Π΅Π΄Π²Π°ΠΉΡΠ΅ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈΡΠ΅ Π½Π°
Π Π΄Π²Π΅ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ Π΄ΠΎΠΏΡΠ»Π²Π°Π½Π΅ Π½Π° ΠΈΠΌΠ΅Π½Π°ΡΠ° Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠΈΡΠ΅ ΠΈ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π°ΡΠ° Π½Π° ΠΈΠΌΠ΅Π½Π°ΡΠ°, ΠΊΠΎΠ΅ΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° Π½Π΅ Π³ΠΈ Π²ΡΠ²Π΅ΠΆΠ΄Π°ΡΠ΅ ΠΈΠ·ΡΡΠ»ΠΎ. ΠΠ½ΡΡΡΡΠΊΡΠΈΠΈ Π·Π° Π½Π°ΡΡΡΠΎΠΉΠΊΠ° Π½Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎΡΠΎ Π΄ΠΎΠΏΡΠ»Π²Π°Π½Π΅ .
ΠΡΡΠ³Π° ΠΏΠΎΠ»Π΅Π·Π½Π° ΡΡΠ½ΠΊΡΠΈΡ kubectx Π΅ . Π’ΠΎΠΉ ΡΠ°Π±ΠΎΡΠΈ ΡΡΠ²ΠΌΠ΅ΡΡΠ½ΠΎ Ρ ΡΡΠΈΠ»ΠΈΡΠ°ΡΠ° , ΠΊΠΎΡΡΠΎ ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π΅ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π° ΠΎΡΠ΄Π΅Π»Π½ΠΎ. ΠΠ½ΡΡΠ°Π»Π°ΡΠΈΡΡΠ° Π½Π° fzf Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ ΠΏΡΠ°Π²ΠΈ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΈΡ ΡΠ΅ΠΆΠΈΠΌ Π΄ΠΎΡΡΡΠΏΠ΅Π½ Π² kubectx. Π ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΈΡ ΡΠ΅ΠΆΠΈΠΌ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΈΠ·Π±ΠΈΡΠ°ΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° ΠΈ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎΡΠΎ Π½Π° ΠΈΠΌΠ΅Π½Π°ΡΠ° ΡΡΠ΅Π· ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π΅Π½ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π·Π° ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΎ ΡΡΡΡΠ΅Π½Π΅, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π΅Π½ ΠΎΡ fzf.
ΠΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Π°Π»ΠΈΠ°ΡΠΈ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΈΡ ΡΠ΅Π΄
ΠΠ΅ Π²ΠΈ ΡΡΡΠ±Π²Π°Ρ ΠΎΡΠ΄Π΅Π»Π½ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ Π·Π° ΠΏΡΠΎΠΌΡΠ½Π° Π½Π° ΡΠ΅ΠΊΡΡΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ ΠΈ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎΡΠΎ Π½Π° ΠΈΠΌΠ΅Π½Π°ΡΠ°, Π·Π°ΡΠΎΡΠΎ kubectl ΡΡΡΠΎ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ Π·Π° ΡΠΎΠ²Π°. Π’Π°ΠΊΠ°, ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° kubectl config ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ ΠΏΠΎΠ΄ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ Π·Π° ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ kubeconfig.
ΠΡΠΎ Π½ΡΠΊΠΎΠΈ ΠΎΡ ΡΡΡ :
kubectl config get-contexts: ΠΈΠ·Π²Π΅ΠΆΠ΄Π° Π²ΡΠΈΡΠΊΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠΈ;kubectl config current-context: ΠΏΠΎΠ»ΡΡΠ°Π²Π° ΡΠ΅ΠΊΡΡΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ;kubectl config use-context: ΠΏΡΠΎΠΌΠ΅Π½Ρ ΡΠ΅ΠΊΡΡΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ;kubectl config set-context: ΠΏΡΠΎΠΌΠ΅Π½Ρ Π΅Π»Π΅ΠΌΠ΅Π½ΡΠ° Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ°.
ΠΡΠΏΡΠ΅ΠΊΠΈ ΡΠΎΠ²Π°, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠ΅Π·ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ Π½Π΅ Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ΄ΠΎΠ±Π½ΠΎ, ΡΡΠΉ ΠΊΠ°ΡΠΎ ΡΠ° Π΄ΡΠ»Π³ΠΈ. ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ Π°Π»ΠΈΠ°ΡΠΈ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΈΡ ΡΠ΅Π΄ Π·Π° ΡΡΡ , ΠΊΠΎΠΈΡΠΎ Π»Π΅ΡΠ½ΠΎ Π΄Π° ΠΈΠ·ΠΏΡΠ»Π½ΠΈΡΠ΅.
Π‘ΡΠ·Π΄Π°Π΄ΠΎΡ Π½Π°Π±ΠΎΡ ΠΎΡ Π°Π»ΠΈΠ°ΡΠΈ, Π±Π°Π·ΠΈΡΠ°Π½ΠΈ Π½Π° ΡΠ΅Π·ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡ, ΠΏΠΎΠ΄ΠΎΠ±Π½Π° Π½Π° kubectx. Π’ΡΠΊ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π²ΠΈΠ΄ΠΈΡΠ΅ ΡΡΡ Π½ΠΎΡΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅:

ΠΠ±ΡΡΠ½Π΅ΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΠ΅ Π°Π»ΠΈΠ°ΡΠΈΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ fzf Π·Π° ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΡΠ½Π΅ Π½Π° ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π΅Π½ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π·Π° ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΎ ΡΡΡΡΠ΅Π½Π΅ (ΠΊΠ°ΠΊΡΠΎ Π² ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΈΡ ΡΠ΅ΠΆΠΈΠΌ Π½Π° kubectx). Π’ΠΎΠ²Π° ΠΎΠ·Π½Π°ΡΠ°Π²Π°, ΡΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° , Π·Π° Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ ΡΠ΅Π·ΠΈ Π°Π»ΠΈΠ°ΡΠΈ.
ΠΡΠΎ ΡΠ°ΠΌΠΈΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π½Π° Π°Π»ΠΈΠ°ΡΠΈΡΠ΅:
# ΠΠΎΠ»ΡΡΠΈΡΡ ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ
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 Π·Π° ΡΠΌΡΠ½Π° Π½Π° ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎΡΠΎ Π·Π° ΠΈΠΌΠ΅Π½Π°.
ΠΠ°ΠΏΠΈΡΠ°Ρ Π΄Π²Π° ΠΏΠ»ΡΠ³ΠΈΠ½Π°, ΠΊΠΎΠΈΡΠΎ ΠΏΡΠ°Π²ΡΡ ΡΠΎΠ²Π°:
Π Π°Π±ΠΎΡΠ°ΡΠ° Π½Π° ΠΏΠ»ΡΠ³ΠΈΠ½ΠΈΡΠ΅ ΡΠ΅ ΠΎΡΠ½ΠΎΠ²Π°Π²Π° Π½Π° Π°Π»ΠΈΠ°ΡΠΈΡΠ΅ ΠΎΡ ΠΏΡΠ΅Π΄ΠΈΡΠ½ΠΈΡ ΡΠ°Π·Π΄Π΅Π».
ΠΡΠΎ ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΡΡ:

ΠΠ±ΡΡΠ½Π΅ΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΠ΅ ΠΏΠ»ΡΠ³ΠΈΠ½ΠΈΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ fzf Π·Π° ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΡΠ½Π΅ Π½Π° ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π΅Π½ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π·Π° ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΎ ΡΡΡΡΠ΅Π½Π΅ (ΠΊΠ°ΠΊΡΠΎ Π² ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΈΡ ΡΠ΅ΠΆΠΈΠΌ Π½Π° kubectx). Π’ΠΎΠ²Π° ΠΎΠ·Π½Π°ΡΠ°Π²Π°, ΡΠ΅ ΡΡΡΠ±Π²Π°, Π·Π° Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ ΡΠ΅Π·ΠΈ Π°Π»ΠΈΠ°ΡΠΈ.
ΠΠ° Π΄Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΠ΅ ΠΏΠ»ΡΠ³ΠΈΠ½ΠΈ, ΡΡΡΠ±Π²Π° Π΄Π° ΠΈΠ·ΡΠ΅Π³Π»ΠΈΡΠ΅ ΡΡΠ΅Π½Π°ΡΠΈΠΈ Π½Π° ΠΎΠ±Π²ΠΈΠ²ΠΊΠ° Ρ ΠΈΠΌΠ΅Π½Π° ΠΈ Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π° Π½Π° Π²Π°ΡΠ°ΡΠ° ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° PATH ΠΈ Π΄Π° Π³ΠΈ Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½ΠΈΠΌΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° chmod +x. ΠΠ΅Π΄Π½Π°Π³Π° ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° ΡΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ kubectl ctx ΠΈ kubectl ns.
5. Π‘ΡΠΊΡΠ°ΡΠ΅Π½ΠΎ Π²ΡΠ²Π΅ΠΆΠ΄Π°Π½Π΅ Ρ Π°Π²ΡΠΎΠ°Π»ΠΈΠ°ΡΠΈ
ΠΠ»ΠΈΠ°ΡΠΈΡΠ΅ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΈΡ ΡΠ΅Π΄ ΡΠ° ΡΡΠ΄Π΅ΡΠ΅Π½ Π½Π°ΡΠΈΠ½ Π΄Π° ΡΡΠΊΠΎΡΠΈΡΠ΅ Π²ΡΠ²Π΅ΠΆΠ΄Π°Π½Π΅ΡΠΎ. ΠΡΠΎΠ΅ΠΊΡΡΡ ΡΡΠ΄ΡΡΠΆΠ° ΠΎΠΊΠΎΠ»ΠΎ 800 ΡΡΠΊΡΠ°ΡΠ΅Π½ΠΈΡ Π·Π° ΠΎΡΠ½ΠΎΠ²Π½ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ kubectl.
ΠΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ Π·Π°ΠΏΠΈΡΠ°ΡΠ΅ β ΠΊΠ°ΠΊ Π΄Π° Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡΠ΅ 800 Π°Π»ΠΈΠ°ΡΠ°? ΠΠΎ Π½Π΅ Π΅ Π½ΡΠΆΠ½ΠΎ Π΄Π° Π³ΠΈ ΠΏΠΎΠΌΠ½ΠΈΡΠ΅ Π²ΡΠΈΡΠΊΠΈ, ΡΡΠΉ ΠΊΠ°ΡΠΎ ΡΠ΅ ΡΠ΅ ΡΡΠ·Π΄Π°Π²Π°Ρ ΠΏΠΎ ΠΏΡΠΎΡΡΠ° ΡΡ Π΅ΠΌΠ°, ΠΏΠΎΠΊΠ°Π·Π°Π½Π° ΠΏΠΎ-Π΄ΠΎΠ»Ρ:

ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
- kgpooyaml β kubectl get pods oyaml
- ksysgsvcw β kubectl -n kube-system get svc w
- ksysrmcm β kubectl -n kube-system rm cm
- kgdepallsl β kubectl get deployment all sl
ΠΠ°ΠΊΡΠΎ Π²ΠΈΠΆΠ΄Π°ΡΠ΅, Π°Π»ΠΈΠ°ΡΠΈΡΠ΅ ΡΠ΅ ΡΡΡΡΠΎΡΡ ΠΎΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ, Π²ΡΠ΅ΠΊΠΈ ΠΎΡ ΠΊΠΎΠΈΡΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ²Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ Π΅Π»Π΅ΠΌΠ΅Π½Ρ ΠΎΡ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° kubectl. ΠΡΠ΅ΠΊΠΈ Π°Π»ΠΈΠ°Ρ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠΌΠ° Π΅Π΄ΠΈΠ½ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Π·Π° ΠΎΡΠ½ΠΎΠ²Π½Π°ΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π°, ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΠΈ ΡΠ΅ΡΡΡΡ, ΠΈ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° Π·Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ. ΠΠΈΠ΅ ΠΏΡΠΎΡΡΠΎ "ΠΏΠΎΠΏΡΠ»Π²Π°ΡΠ΅" ΡΠ΅Π·ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ ΠΎΡΠ»ΡΠ²ΠΎ Π½Π°Π΄ΡΡΠ½ΠΎ Π² ΡΡΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ Ρ Π³ΠΎΡΠ΅ΠΏΠΎΡΠΎΡΠ΅Π½Π°ΡΠ° ΡΡ Π΅ΠΌΠ°.
Π’Π΅ΠΊΡΡΠ°ΡΠ° ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π° ΡΡ Π΅ΠΌΠ° ΡΠ΅ Π½Π°ΠΌΠΈΡΠ° Π½Π° . Π’Π°ΠΌ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π½Π°ΠΌΠ΅ΡΠΈΡΠ΅ ΠΈ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π°Π»ΠΈΠ°ΡΡΡ kgpooyamlall Π΅ ΡΠ°Π²Π΅Π½ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° kubectl get pods -o yaml --all-namespaces.
ΠΡΠ½ΠΎΡΠΈΡΠ΅Π»Π½ΠΈΡΡ ΡΠ΅Π΄ Π½Π° ΠΎΠΏΡΠΈΠΈ Π½Π΅ Π΅ Π²Π°ΠΆΠ΅Π½: ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° kgpooyamlall Π΅ ΡΠ°Π²Π½Π° Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° kgpoalloyaml.
ΠΠ΅ Π΅ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ Π²ΡΠΈΡΠΊΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ ΠΊΠ°ΡΠΎ Π°Π»ΠΈΠ°ΡΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ k, kg, klo, ksys, kgpo ΡΡΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°. ΠΡΠ²Π΅Π½ ΡΠΎΠ²Π°, Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΈΡ ΡΠ΅Π΄ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠ°ΡΠ΅ Π°Π»ΠΈΠ°ΡΠΈ ΠΈ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ ΠΈΠ»ΠΈ ΠΎΠΏΡΠΈΠΈ:
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
- ΠΠΌΠ΅ΡΡΠΎ
kubectl proxyΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ Π½Π°ΠΏΠΈΡΠ°Π½ΠΎk proxy. - ΠΠΌΠ΅ΡΡΠΎ
kubectl get rolesΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ Π½Π°ΠΏΠΈΡΠ°Π½ΠΎkg roles(Π² ΠΌΠΎΠΌΠ΅Π½ΡΠ° Π½ΡΠΌΠ° Π°Π»ΠΈΠ°Ρ Π·Π° ΡΠ΅ΡΡΡΡΠ° Roles). - ΠΠ° Π΄Π° ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ΅Π½ ΠΏΠΎΠ΄, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ°
kgpo my-pod β kubectl get pod my-pod.
ΠΠΌΠ°ΠΉΡΠ΅ ΠΏΡΠ΅Π΄Π²ΠΈΠ΄, ΡΠ΅ Π½ΡΠΊΠΎΠΈ Π°Π»ΠΈΠ°ΡΠΈ ΠΈΠ·ΠΈΡΠΊΠ²Π°Ρ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΈΡ ΡΠ΅Π΄. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π°Π»ΠΈΠ°Ρ kgpol ΠΎΠ·Π½Π°ΡΠ°Π²Π° kubectl get pods -l. ΠΠΏΡΠΈΡΡΠ° -l ΠΈΠ·ΠΈΡΠΊΠ²Π° Π°ΡΠ³ΡΠΌΠ΅Π½Ρ β ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ Π½Π° Π΅ΡΠΈΠΊΠ΅ΡΠ°. ΠΠΊΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ Π°Π»ΠΈΠ°Ρ, ΡΠΎΠΉ ΡΠ΅ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° ΠΊΠ°ΡΠΎ kgpol app=ui.
ΠΠΎΡΠ°Π΄ΠΈ ΡΠΎΠ²Π°, ΡΠ΅ ΡΠ°ΡΡ ΠΎΡ Π°Π»ΠΈΠ°ΡΠΈΡΠ΅ ΠΈΠ·ΠΈΡΠΊΠ²Π°Ρ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΈ, Π°Π»ΠΈΠ°ΡΠΈΡΠ΅ a, f ΠΈ l ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈ.
ΠΠ±ΡΠΎ ΠΊΠ°Π·Π°Π½ΠΎ, Π²Π΅Π΄Π½ΡΠΆ ΡΠΎΠΌ ΠΎΠ²Π»Π°Π΄Π΅Π΅ΡΠ΅ ΡΠ°Π·ΠΈ ΡΡ Π΅ΠΌΠ°, ΡΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΠ½ΡΡΠΈΡΠΈΠ²Π½ΠΎ Π΄Π° ΠΈΠ·Π²Π΅ΠΆΠ΄Π°ΡΠ΅ Π°Π»ΠΈΠ°ΡΠΈ ΠΎΡ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈΡΠ΅, ΠΊΠΎΠΈΡΠΎ ΠΈΡΠΊΠ°ΡΠ΅ Π΄Π° ΠΈΠ·ΠΏΡΠ»Π½ΠΈΡΠ΅, ΠΈ Π΄Π° ΡΠΏΠ΅ΡΡΠΈΡΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅ ΠΏΡΠΈ Π²ΡΠ²Π΅ΠΆΠ΄Π°Π½Π΅ΡΠΎ.
ΠΠ½ΡΡΠ°Π»Π°ΡΠΈΡ
ΠΠ° Π΄Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΠ΅ kubectl-aliases, ΡΡΡΠ±Π²Π° Π΄Π° ΠΈΠ·ΡΠ΅Π³Π»ΠΈΡΠ΅ ΡΠ°ΠΉΠ»Π° ΠΎΡ GitHub ΠΈ Π΄Π° Π³ΠΎ Π²ΠΊΠ»ΡΡΠΈΡΠ΅ Π² ΡΠ°ΠΉΠ»Π° ~/.bashrc ΠΈΠ»ΠΈ ~/.zshrc:
source ~/.kubectl_aliasesΠΠ²ΡΠΎΠ·Π°Π²ΡΡΡΠ²Π°Π½Π΅
ΠΠ°ΠΊΡΠΎ Π²Π΅ΡΠ΅ ΡΠΏΠΎΠΌΠ΅Π½Π°Ρ ΠΌΠ΅, ΡΠ΅ΡΡΠΎ Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈ Π΄ΡΠΌΠΈ ΠΊΡΠΌ Π°Π»ΠΈΠ°ΡΠ° Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΈΡ ΡΠ΅Π΄. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
$ kgpooyaml test-pod-d4b77b989ΠΠΊΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ Π°Π²ΡΠΎΠ·Π°Π²ΡΡΡΠ²Π°Π½Π΅ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° kubectl, Π²Π΅ΡΠΎΡΡΠ½ΠΎ ΡΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π»ΠΈ Π°Π²ΡΠΎΠ·Π°Π²ΡΡΡΠ²Π°Π½Π΅ Π·Π° ΡΠ°ΠΊΠΈΠ²Π° Π½Π΅ΡΠ°, ΠΊΠ°ΡΠΎ ΠΈΠΌΠ΅Π½Π° Π½Π° ΡΠ΅ΡΡΡΡΠΈ. ΠΠΎ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ Π΅ Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ ΡΠΎΠ²Π°, ΠΊΠΎΠ³Π°ΡΠΎ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Π°Π»ΠΈΠ°ΡΠΈ?
Π’ΠΎΠ²Π° Π΅ ΠΌΠ½ΠΎΠ³ΠΎ Π²Π°ΠΆΠ΅Π½ Π²ΡΠΏΡΠΎΡ, Π·Π°ΡΠΎΡΠΎ Π°ΠΊΠΎ Π°Π²ΡΠΎΠ·Π°Π²ΡΡΡΠ²Π°Π½Π΅ΡΠΎ Π½Π΅ ΡΠ°Π±ΠΎΡΠΈ, ΡΠ΅ Π·Π°Π³ΡΠ±ΠΈΡΠ΅ ΡΠ°ΡΡ ΠΎΡ ΠΏΡΠ΅Π΄ΠΈΠΌΡΡΠ²Π°ΡΠ° Π½Π° Π°Π»ΠΈΠ°ΡΠΈΡΠ΅.
ΠΡΠ³ΠΎΠ²ΠΎΡΡΡ Π·Π°Π²ΠΈΡΠΈ ΠΎΡ ΡΠΎΠ²Π°, ΠΊΠ°ΠΊΠ²Π° ΠΊΠΎΠΌΠ°Π½Π΄Π½Π° ΠΎΠ±Π²ΠΈΠ²ΠΊΠ° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅:
- ΠΠ° Zsh Π°Π²ΡΠΎΠ·Π°Π²ΡΡΡΠ²Π°Π½Π΅ΡΠΎ Π·Π° Π°Π»ΠΈΠ°ΡΠΈ ΡΠ°Π±ΠΎΡΠΈ Β«ΠΈΠ·Π²ΡΠ½ ΠΊΡΡΠΈΡΡΠ°Β».
- ΠΠ° Bash, Π·Π° ΡΡΠΆΠ°Π»Π΅Π½ΠΈΠ΅, ΡΠ° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΈ Π½ΡΠΊΠΎΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ, Π·Π° Π΄Π° Π½Π°ΠΊΠ°ΡΠ°ΡΠ΅ Π°Π²ΡΠΎΠ·Π°Π²ΡΡΡΠ²Π°Π½Π΅ΡΠΎ Π΄Π° ΡΠ°Π±ΠΎΡΠΈ.
ΠΠΊΡΠΈΠ²ΠΈΡΠ°Π½Π΅ Π½Π° Π°Π²ΡΠΎΠ·Π°Π²ΡΡΡΠ²Π°Π½Π΅ Π·Π° Π°Π»ΠΈΠ°ΡΠΈ Π² Bash
ΠΡΠΎΠ±Π»Π΅ΠΌΡΡ Ρ Bash Π΅, ΡΠ΅ ΡΠΎΠΉ ΡΠ΅ ΠΎΠΏΠΈΡΠ²Π° Π΄Π° Π·Π°Π²ΡΡΡΠΈ (Π²ΡΠ΅ΠΊΠΈ ΠΏΡΡ, ΠΊΠΎΠ³Π°ΡΠΎ Π½Π°ΡΠΈΡΠΊΠ°ΡΠ΅ Tab) Π°Π»ΠΈΠ°Ρ, Π° Π½Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ°, Π½Π° ΠΊΠΎΡΡΠΎ ΡΠ΅ ΠΏΠΎΠ·ΠΎΠ²Π°Π²Π° Π°Π»ΠΈΠ°ΡΡΡ (ΠΊΠ°ΠΊΡΠΎ ΠΏΡΠ°Π²ΠΈ Zsh). Π’ΡΠΉ ΠΊΠ°ΡΠΎ Π½ΡΠΌΠ°ΡΠ΅ ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅ Π·Π° Π·Π°Π²ΡΡΡΠ²Π°Π½Π΅ Π·Π° Π²ΡΠΈΡΠΊΠΈ 800 ΠΏΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌΠ°, Π°Π²ΡΠΎΠ·Π°Π²ΡΡΡΠ²Π°Π½Π΅ΡΠΎ Π½Π΅ ΡΠ°Π±ΠΎΡΠΈ.
ΠΡΠΎΠ΅ΠΊΡ ΠΏΡΠ΅Π΄Π»Π°Π³Π° ΠΎΠ±ΡΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π½Π° ΡΠΎΠ·ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌ. Π’ΠΎΠΉ ΡΠ΅ ΡΠ²ΡΡΠ·Π²Π° Ρ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ° Π·Π° Π·Π°Π²ΡΡΡΠ²Π°Π½Π΅ Π·Π° Π°Π»ΠΈΠ°ΡΠΈ, Π²ΡΡΡΠ΅ΡΠ½ΠΎ Π·Π°Π²ΡΡΡΠ²Π° Π°Π»ΠΈΠ°ΡΠ° Π΄ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° ΠΈ Π²ΡΡΡΠ° ΠΎΠΏΡΠΈΠΈΡΠ΅ Π·Π° Π·Π°Π²ΡΡΡΠ²Π°Π½Π΅ Π·Π° Π·Π°Π²ΡΡΡΠ΅Π½Π°ΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π°. Π’ΠΎΠ²Π° ΠΎΠ·Π½Π°ΡΠ°Π²Π°, ΡΠ΅ Π·Π°Π²ΡΡΡΠ²Π°Π½Π΅ΡΠΎ Π·Π° Π°Π»ΠΈΠ°ΡΠ° ΡΠ°Π±ΠΎΡΠΈ ΡΠΎΡΠ½ΠΎ ΠΏΠΎ ΡΡΡΠΈΡ Π½Π°ΡΠΈΠ½, ΠΊΠ°ΠΊΡΠΎ Π·Π° ΠΏΡΠ»Π½Π°ΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π°.
ΠΠΎ-Π½Π°ΡΠ°ΡΡΠΊ ΠΏΡΡΠ²ΠΎ ΡΠ΅ ΠΎΠ±ΡΡΠ½Ρ ΠΊΠ°ΠΊ Π΄Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΠ΅ complete-alias, Π° ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° β ΠΊΠ°ΠΊ Π΄Π° Π³ΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°ΡΠ΅, Π·Π° Π΄Π° Π²ΠΊΠ»ΡΡΠΈΡΠ΅ Π·Π°Π²ΡΡΡΠ²Π°Π½Π΅ΡΠΎ Π·Π° Π²ΡΠΈΡΠΊΠΈ ΠΏΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌΠΈ Π½Π° kubectl.
ΠΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π΅ Π½Π° complete-alias
ΠΡΠ΅Π΄ΠΈ Π²ΡΠΈΡΠΊΠΎ, complete-alias Π·Π°Π²ΠΈΡΠΈ ΠΎΡ . Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎ, ΠΏΡΠ΅Π΄ΠΈ Π΄Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΠ΅ 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.
Π’ΡΡΠ±Π²Π° Π΄Π° ΠΈΠ·ΡΠ΅Π³Π»ΠΈΡΠ΅ ΡΠΊΡΠΈΠΏΡΠ° ΠΎΡ ΠΈ Π΄Π° Π³ΠΎ Π²ΠΊΠ»ΡΡΠΈΡΠ΅ Π² ΡΠ²ΠΎΡ ΡΠ°ΠΉΠ» ~/.bashrc:
source ~\/bash_completion.shΠ‘Π»Π΅Π΄ ΡΠ΅ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΊΠΎΠ½ΡΠΎΠ»Π½Π°ΡΠ° ΡΡΠ΅Π΄Π°, complete-alias ΡΠ΅ Π±ΡΠ΄Π΅ Π½Π°ΠΏΡΠ»Π½ΠΎ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½.
ΠΠΊΡΠΈΠ²ΠΈΡΠ°Π½Π΅ Π½Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ Π΄ΠΎΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π·Π° Π°Π»ΠΈΠ°ΡΠΈΡΠ΅ Π½Π° kubectl
Π’Π΅Ρ
Π½ΠΈΡΠ΅ΡΠΊΠΈ complete-alias ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ ΡΡΠ½ΠΊΡΠΈΡ Π½Π° ΡΠ΅ΡΡΠΏΠΊΠ°ΡΠ° _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.
ΠΠ±ΡΡΠ½Π΅ΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ 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 ΡΡΠ΅Π· ΠΏΠ»ΡΠ³ΠΈΠ½ΠΈ
ΠΠ°ΠΏΠΎΡΠ²Π°ΠΉΠΊΠΈ ΠΎΡ , kubectl ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° , ΠΊΠΎΠΈΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°Ρ Π΄Π° ΡΠ°Π·ΡΠΈΡΠΈΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈΡΠ΅ ΠΌΡ Ρ Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ.
ΠΠΊΠΎ ΡΡΠ΅ Π·Π°ΠΏΠΎΠ·Π½Π°ΡΠΈ Ρ , ΠΏΠ»ΡΠ³ΠΈΠ½ΠΈΡΠ΅ Π½Π° 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. ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π½Π°ΠΌΠ΅ΡΠΈΡΠ΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΈ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ Π½Π° .
ΠΠ°ΠΉ-Π²Π°ΠΆΠ½ΠΈΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ Π½Π° 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-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 ΠΎΡ ΠΏΠ»ΡΠ³ΠΈΠ½Π°. ΠΡΠΏΡΠ΅ΠΊΠΈ ΡΠΎΠ²Π°, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΠΈΡΠ΅ΡΠ΅ ΠΏΠΎ-ΡΠ»ΠΎΠΆΠ½ΠΈ ΠΏΠ»ΡΠ³ΠΈΠ½ΠΈ Π½Π° ΡΠ΅Π°Π»Π½ΠΈ Π΅Π·ΠΈΡΠΈ Π·Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°Π½Π΅, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ . ΠΠΊΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ Go, ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΡΡΠΎ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ , ΠΊΠΎΡΡΠΎ ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π° ΡΠΏΠ΅ΡΠΈΠ°Π»Π½ΠΎ Π·Π° Π½Π°ΠΏΠΈΡΠ²Π°Π½Π΅ Π½Π° ΠΏΠ»ΡΠ³ΠΈΠ½ΠΈ Π·Π° kubectl.
ΠΠ°ΠΊ Π΄Π° ΡΠΏΠΎΠ΄Π΅Π»ΠΈΡΠ΅ Π²Π°ΡΠΈΡΠ΅ ΠΏΠ»ΡΠ³ΠΈΠ½ΠΈ
ΠΠΊΠΎ ΡΠΌΡΡΠ°ΡΠ΅, ΡΠ΅ Π²Π°ΡΠΈΡΠ΅ ΠΏΠ»ΡΠ³ΠΈΠ½ΠΈ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ ΠΏΠΎΠ»Π΅Π·Π½ΠΈ Π·Π° Π΄ΡΡΠ³ΠΈΡΠ΅, Π½Π΅ ΡΠ΅ ΠΊΠΎΠ»Π΅Π±Π°ΠΉΡΠ΅ Π΄Π° Π³ΠΈ ΡΠΏΠΎΠ΄Π΅Π»ΠΈΡΠ΅ Π² GitHub. ΠΠ΅ Π·Π°Π±ΡΠ°Π²ΡΠΉΡΠ΅ Π΄Π° Π³ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡΠ΅ Π² ΡΠ΅ΠΌΠ°ΡΠ° .
ΠΠΎΠΆΠ΅ΡΠ΅ ΡΡΡΠΎ Π΄Π° ΠΏΠΎΠΈΡΠΊΠ°ΡΠ΅ Π΄ΠΎΠ±Π°Π²ΡΠ½Π΅ΡΠΎ Π½Π° Π²Π°ΡΠΈΡ ΠΏΠ»ΡΠ³ΠΈΠ½ Π² . ΠΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΠΊΠ°ΠΊ Π΄Π° Π³ΠΎ Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π½Π°ΠΌΠ΅ΡΠΈΡΠ΅ Π² .
ΠΠ²ΡΠΎΠ΄ΠΎΠ²ΡΡΡΠ²Π°Π½Π΅ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ
Π ΠΌΠΎΠΌΠ΅Π½ΡΠ° ΠΏΠ»ΡΠ³ΠΈΠ½ΠΈΡΠ΅ Π½Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Ρ Π°Π²ΡΠΎΠ΄ΠΎΠ²ΡΡΡΠ²Π°Π½Π΅. Π’ΠΎΠ΅ΡΡ, ΡΡΡΠ±Π²Π° Π΄Π° Π²ΡΠ²Π΅ΠΆΠ΄Π°ΡΠ΅ ΠΏΡΠ»Π½ΠΎΡΠΎ ΠΈΠΌΠ΅ Π½Π° ΠΏΠ»ΡΠ³ΠΈΠ½Π° ΠΈ ΠΏΡΠ»Π½ΠΈΡΠ΅ ΠΈΠΌΠ΅Π½Π° Π½Π° Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΈΡΠ΅.
Π GitHub ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ Π½Π° kubectl Π·Π° ΡΠ°Π·ΠΈ ΡΡΠ½ΠΊΡΠΈΡ ΠΈΠΌΠ° . Π’Π°ΠΊΠ° ΡΠ΅, Π΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°Π·ΠΈ ΡΡΠ½ΠΊΡΠΈΡ Π΄Π° Π±ΡΠ΄Π΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π° Π½ΡΠΊΠΎΠ³Π° Π² Π±ΡΠ΄Π΅ΡΠ΅.
Π£ΡΠΏΠ΅Ρ !!!
ΠΠ°ΠΊΠ²ΠΎ ΠΎΡΠ΅ Π΄Π° ΠΏΡΠΎΡΠ΅ΡΠ΅ΡΠ΅ ΠΏΠΎ ΡΠ΅ΠΌΠ°ΡΠ°:
- .
- .
- .
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: habr.com







