Kubernetes tips and tricks: ΠΊΠ°ΠΊ ΠΏΠΎΠ²Ρ‹ΡΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ

Kubernetes tips and tricks: ΠΊΠ°ΠΊ ΠΏΠΎΠ²Ρ‹ΡΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ

KubectlΒ β€” это эффСктивный инструмСнт ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки Kubernetes ΠΈ для Kubernetes, ΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ ΠΌΡ‹ ΠΈΠΌ Π΅ΠΆΠ΅Π΄Π½Π΅Π²Π½ΠΎ. Π£ Π½Π΅Π³ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΈ с Π½ΠΈΠΌ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ систСму Kubernetes ΠΈΠ»ΠΈ Π΅Π³ΠΎ Π±Π°Π·ΠΎΠ²Ρ‹Π΅ Ρ„ΠΈΡ‡ΠΈ.

Π’ΠΎΡ‚ Π²Π°ΠΌ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Π΅ совСты, ΠΊΠ°ΠΊ быстрСС ΠΊΠΎΠ΄ΠΈΡ‚ΡŒ ΠΈ Π΄Π΅ΠΏΠ»ΠΎΠΈΡ‚ΡŒ Π² Kubernetes.

АвтозаполнСниС kubectl

Kubectl Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ постоянно, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ с Π°Π²Ρ‚ΠΎΠ·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ Π½Π΅ придСтся лишний Ρ€Π°Π· ΡΡ‚ΡƒΡ‡Π°Ρ‚ΡŒ ΠΏΠΎ клавишам.

Π‘Π½Π°Ρ‡Π°Π»Π° установитС ΠΏΠ°ΠΊΠ΅Ρ‚ bash-completion (ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΎΠ½ Π½Π΅ установлСн).

  • Linux

## Install
apt-get install bash-completion
## Bash
echo 'source <(kubectl completion bash)' >>~/.bashrc
## Zsh
source <(kubectl completion zsh)

  • MacOS

## Install
brew install bash-completion@2

Как Π²ΠΈΠ΄Π½ΠΎ Π² Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… brew install (Ρ€Π°Π·Π΄Π΅Π» Caveats), Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ строки Π² Ρ„Π°ΠΉΠ» ~/.bashrc ΠΈΠ»ΠΈ ~/.bash_profile:

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

Алиасы kubectl

Когда Π½Π°Ρ‡ΠΈΠ½Π°Π΅ΡˆΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ kubectl, самоС приятноС — это ΡƒΠΉΠΌΠ° алиасов, начиная Π²ΠΎΡ‚ с этого:

alias k='kubectl'

Π”ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ Π΅Π³ΠΎ β€” Π±Π΅Ρ€ΠΈΡ‚Π΅ΡΡŒ ΠΏΠΎΡ‚ΠΎΠΌ Π·Π° kubectl-aliases Π½Π° Github. АхмСт Алп Π‘Π°Π»ΠΊΠ°Π½ (Ahmet Alp Balkan) (https://twitter.com/ahmetb) ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π² Π½ΠΈΡ… Ρ‚ΠΎΠ»ΠΊ, ΡƒΠ·Π½Π°ΠΉΡ‚Π΅ большС ΠΎ Π΅Π³ΠΎ алиасах Π½Π° github

Kubernetes tips and tricks: ΠΊΠ°ΠΊ ΠΏΠΎΠ²Ρ‹ΡΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ

Волько Π½Π΅ устанавливайтС алиас kubectl для Π½ΠΎΠ²ΠΈΡ‡ΠΊΠ°, ΠΈΠ½Π°Ρ‡Π΅ ΠΎΠ½ Π² ΠΆΠΈΠ·Π½ΠΈ Π½Π΅ разбСрСтся со всСми ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ. ΠŸΡƒΡΡ‚ΡŒ сначала попрактикуСтся Π½Π΅Π΄Π΅Π»ΡŒΠΊΡƒ-Π΄Ρ€ΡƒΠ³ΡƒΡŽ.

Kubernetes + Helm-Ρ‡Π°Ρ€Ρ‚Ρ‹

Β«HelmΒ β€” это Π»ΡƒΡ‡ΡˆΠΈΠΉ способ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ, Ρ€Π°ΡΠΏΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚ΡŒ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ПО, созданноС для KubernetesΒ».

Когда Ρƒ вас заводится ΠΊΡƒΡ‡Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Kubernetes, ΠΈΡ… Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ прСвращаСтся Π² ΠΌΡƒΠΊΡƒ, особСнно Ссли Π½ΡƒΠΆΠ½ΠΎ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ‚Π΅Π³ docker-ΠΎΠ±Ρ€Π°Π·Π° Π΄ΠΎ развСртывания. Helm-Ρ‡Π°Ρ€Ρ‚Ρ‹ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ, ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ прилоТСния ΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ΠΈ Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ Π½Π° кластСрС систСмой Ρ€Π΅Π»ΠΈΠ·ΠΎΠ².

Kubernetes tips and tricks: ΠΊΠ°ΠΊ ΠΏΠΎΠ²Ρ‹ΡΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ

ΠŸΠ°ΠΊΠ΅Ρ‚ Kubernetes Π² Helm называСтся Ρ‡Π°Ρ€Ρ‚ΠΎΠΌ ΠΈ содСрТит ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ создаСтся экзСмпляр Kubernetes.

ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ»Π΅Π·Π½Π°: ΠΎΠ½Π° содСрТит динамичСскиС свСдСния ΠΎ настройкС Ρ‡Π°Ρ€Ρ‚Π°. Π Π΅Π»ΠΈΠ·Β β€” это ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ экзСмпляр Π² кластСрС Π² сочСтании с ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠ΅ΠΉ.

Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ apt ΠΈΠ»ΠΈ yum, Helm-Ρ‡Π°Ρ€Ρ‚Ρ‹ (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹) ΡΠΎΠ±ΠΈΡ€Π°ΡŽΡ‚ΡΡ ΠΏΠΎΠ²Π΅Ρ€Ρ… Kubernetes ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ всС прСимущСства Π΅Π³ΠΎ кластСрной Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹, ΠΈ самоС классноС ΠΈΠ· Π½ΠΈΡ…Β β€” Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚ΡŒ с самого Π½Π°Ρ‡Π°Π»Π°. Π§Π°Ρ€Ρ‚Ρ‹ всСх ΠΎΠ±Ρ€Π°Π·ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Helm, хранятся Π² рССстрС ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Helm Workspace. ПослС развСртывания ваши ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ DevOps смогут Π² Π΄Π²Π° счСта Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ Ρ‡Π°Ρ€Ρ‚Ρ‹ ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ ΠΈΡ… Π² свои ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹.

Helm ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ способами:

  • Snap / Linux :

sudo snap install helm --classic

  • Homebrew / macOS :

brew install kubernetes-helm

  • Π‘ΠΊΡ€ΠΈΠΏΡ‚:

curl -L https://git.io/get_helm.sh | bash

  • Π€Π°ΠΉΠ»:

https://github.com/helm/helm/releases

  • Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Helm ΠΈ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Tiller Π² кластСрС:

helm init --history-max 200

  • Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ‡Π°Ρ€Ρ‚Π°:

helm repo update
helm install --name releasemysql stable/mysql

Π­Ρ‚ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ рСлизят Ρ‡Π°Ρ€Ρ‚ stable/mysql, Π° Ρ€Π΅Π»ΠΈΠ· называСтся releasemysql.
ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ Ρ€Π΅Π»ΠΈΠ· helm с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ helm list.

  • НаконСц, Ρ€Π΅Π»ΠΈΠ· ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ:

helm delete --purge releasemysql

Π‘Π»Π΅Π΄ΡƒΠΉΡ‚Π΅ этим совСтам, ΠΈ Ρ€Π°Π±ΠΎΡ‚Π° с Kubernetes ΠΏΠΎΠΉΠ΄Π΅Ρ‚ ΠΆΠΈΠ²Π΅Π΅. ОсвободившССся врСмя посвятитС Π³Π»Π°Π²Π½ΠΎΠΉ Ρ†Π΅Π»ΠΈ своих ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Kubernetes Π² кластСрС. Если Π΅ΡΡ‚ΡŒ вопросы ΠΎ Kubernetes ΠΈΠ»ΠΈ Helm, Π½Π°ΠΏΠΈΡˆΠΈΡ‚Π΅ Π½Π°ΠΌ.

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