Привет, развил тему пропихивания стручков (pod'ов) в кубернетис, добавил в меню выбора типа объектов команду apply. Теперь kui'ем можно приклеивать мYAMLики, создавая любые типы объектов. По умолчанию предлагает создать стручок:
создай свой стручок
Но с помощью кнопки edit можно изменить мямлик, изменения сохранятся в файл ~/.kyml.
С удивлением обнаружил что хаб Кодобред переименован в Говнокод О_о Чтож, так даже интереснее.
Привет, приспичило создать тестовый стручек (pod), проверить кое-что. Создал и добавил это в kui, в секцию "быстрых" команд:
добавь свой стручек
Тестовый стручек создается вот такой командой:
kube run $quick_pod_name $ns --image=$quick_pod_image --command -- $quick_pod_command 2>&1
Для изменения названия, образа или команды стручка подредактируйте вот эти переменные в начале скрипта:
quick_pod_name=busytest # Pod name for simple test pod
quick_pod_image=busybox:1.32 # Pod image for simple test pod
quick_pod_command="sleep 3600" # Pod command for simple test pod
Привет, зачастую после тыкания в какой-нибудь стручок (pod) приходится подниматься на уровень выше в деплой, стейтфулсет или даемонсет. Для этого в kui надо было сначала посмотреть чем контролируется стручок, сделав describe, потом сменить тип объекта, найти нужный... Хватить теребонькать эти стручки! Добавил для стручков команду Controlled by, она сразу тыкает kui в нужное место!
Привет, долгожданные новости из мира кубернетиса. Иногда надо посмотреть за подиками, как они там живут поживают, все ли (ре)стартанули или кто завис. В kui для этого сделана кнопка RELOAD. Но постоянно жмякать кнопку это же дро...во какое-то правда? Хватит это терпеть! Добавил команду watch it, теперь можно залипнуть на какое-то время, глядя как подики ползают туда-сюда.
watch it
Оно будет с паузой в 3 секунды (+ время на обновление) постоянно показывать вывод kubectl get ...
NAME READY STATUS RESTARTS AGE
chi-cluster-dev01-0-0-0 2/2 Running 0 23d
chi-cluster-dev01-0-1-0 2/2 Running 0 23d
chi-cluster-dev01-0-2-0 2/2 Running 0 23d
Press x to stop watching this...
Привет, все знают(?) что данные в скрипт можно передать через аргументы, как-то так:
$ cat test
#!/bin/bash
var=$1
echo $var
$ ./test bla
bla
Но в какой-то момент аргументов становится слишком много, а так чешется всунуть что-то еще) Куда всунуть? Как? В каком порядке? Сначала сунуть это, потом то? Городить гетопс? В этом случае бывает удобно использовать переменные окружения!
$ cat test
#!/bin/bash
var1=$1
var2=$2
var3=$3
var4=$4
var5=$5
echo $var1 $var2 $var3 $var4 $var5 $one_more_var
$ one_more_var=ble ./test
ble
Привет, иногда хочется утащить из скрипта переменные или функции. Это можно легко сделать используя source. Но есть заковыка. Скрипт-источник будет выполнен, что не всегда удобно. Пример:
$ cat test
#!/bin/bash
var1=bim
var2=bom
echo you should not see this $var1 $var2
Пробуем засорсить:
$ var1= var2=; . ./test; echo $var1 $var2
you should not see this bim bom
bim bom
Мы получили вожделенные переменные но при этом выполнился нежелательный код. Как этого избежать? Можно немного модифицировать скрипт:
$ cat test
#!/bin/bash
var1=bim
var2=bom
[[ $1 == only_vars ]] && return
echo you should not see this $var1 $var2
Теперь если сорсить скрипт с параметром only_vars, нежелательный код будет опущен, пробуем:
Привет! Подкрутил немного анимацию spinner'а, теперь выглядит так:
бынь-бынь
Spinner - это небольшой скриптик чтобы заполнить пустоту экранного пространства во время работы какого-нибудь долгого процасса, не выводящего ничего. Работает как-то так:
Пятница, вечер, а я все продолжаю тыкать свой kui в ноды кубернетиса.
Node pods
Натыкал такое, добавил две новые команды: Node pods и Top node pods. Первая позволяет посмотреть все поды ноды. А вторая сделать топ поды ноды.
И если поды ноды kubectl умеет показывать из коробки, как-то так:
kubectl get po -A --field-selector spec.nodeName=<node_name>
То с топами подов нодов пришлось немного повозиться, kubectl не может сам сделать топ поды ноды, говорит такое:
kubectl top po -A --field-selector spec.nodeName=<node_name>
Error from server (BadRequest): "spec.nodeName" is not a known field selector: only "metadata.name", "metadata.namespace"
Пришлось ему немного помочь, сначала я запомнил поды ноды в переменную np
np=$(
kubectl get po -A --field-selector spec.nodeName=<node_name> | \
awk '{print $2}'
)
Потом сделал топ всех подов и грепнул поды ноды
kubectl top po -A | grep -F "$np"
И еще там были сопутствующие изменения и вот это вот все.
Позанимался немного с нодами и подумал что удобно было бы выбирать ноды из вывода kubectl top no, добавил это. Команда (top) доступна на первом шаге (выбор кластера) и через "быстрые команды".
Использую такую штуку в терминале info-bar о которой я писал тут, инфо бар показывает git status, если $PWD содержит папку .git. Сегодня занимался с репами, крутил вертел по разному, в какой-то момент вкладка терминала зафризилфсь. Оказалось что info-bar плохо переносит большое количество информации от git status'а
$ git status -sb | wc -l
9451
Пришлось ограничить вывод 50 строками, теперь так:
git_sts_depth=50
...
git -c color.ui=always status -sb | head -$git_sts_depth
Заодно смердил в мастер новую версию в которой глаза заменены на, эм, ну увидите)
Песня "3-е сентября" стала знаковым культурно-социальным явлением, на юбилей песни решил добавить в piu-piu знаменитый куплет целиком. Пришлось немного повозиться c переделкой но в итоге получилось добавить новый функционал не сломав старый. Теперь текст для рекламных самолетов можно задать как переменной так и массивом. Каждый следующий самолет будет выводить новую строку текста из массива по кругу. Я календарь переверну...
Буквально за 15 минут собрал демку для просмотра алертов tenis'а с помощью bashui. Я использовал "быструю" функцию для создания меню (таблиц). Подробней про эту функцию можно почитать тут. Кнопки бутафорские просто для иллюстрации)