Обновить
28.55

Говнокод

Код, за который должно быть стыдно

Сначала показывать
Порог рейтинга

Привет, меня наругали за использование "порно" гифки в ридми kui'я, поддался, заменил на нейтральное вот такое:

kubectl user interface
kubectl user interface

Теперь это sfw. Старую гифку можно посмотреть тут)

Творите, выдумывайте, пробуйте!)

Теги:
-8
Комментарии0

Привет, приятно когда kui увеличивается, даже если увеличился совсем чуть-чуть. Добавил команду helm uninstall.

helm uninstall
helm uninstall

Творите, выдумывайте, пробуйте!)

Теги:
0
Комментарии0

Участие в нескольких проектах снижает результаты работы — так ли это?

На одной из конференций прозвучал тезис: заказчику необходимо держать аутсорс-команду full-time. Потому что, работая на нескольких проектах одновременно, разработчики меньше погружаются в контекст каждой задачи, что в итоге сказывается на качестве кода и проекта в целом.

Была высказана и противоположная точка зрения, но хочется услышать мнение именно лидов и разработчиков, основанное на опыте.

Почему спрашиваю?

Люди, не связанные с разработкой, часто видят процессы иначе. Любой штатный сотрудник, например, в маркетинге или продукте, обычно ведёт несколько проектов и в день решает десятки разноплановых задач: от подготовки рекламной кампании и согласования креативов до контроля бюджета и аналитики. И сотрудники успешно справляются с этой нагрузкой, переключаясь между задачами.

Вопрос к сообществу:

Правда ли, что разработчик, участвующий в нескольких проектах part-time, будет менее эффективен, допустит больше багов и в целом ухудшит качество релизов? Или это миф, и всё зависит от процессов, коммуникации и личной организованности?

Теги:
+5
Комментарии17

Привет, по случаю прикрутил к kui'ю немного helm'а. Можно посмотреть статус, историю, манифест и откатить релиз.

Happy Helming!
Happy Helming!

Творите, выдумывайте, пробуйте!)

Теги:
Всего голосов 1: ↑1 и ↓0+1
Комментарии0

Привет, подкрутил немного свой kui. Добавил применение фильтра к подам в режиме подсматривания (watch it).

watch it
watch it

Теперь можно подсматривать только за интересными стрючками.

Творите, выдумывайте, пробуйте!)

Теги:
Всего голосов 2: ↑1 и ↓10
Комментарии0

Эгегей, kui еще немного окреп! Добавил команду 'rollout to revision'. Теперь можно откатывать деплои на определенную версию а не только на предыдущую.

rollout to revision
rollout to revision

Творите, выдумывайте, пробуйте!)

Теги:
Всего голосов 2: ↑1 и ↓10
Комментарии0

Привет, небольшой апдейт. Добавил еще один тип k8s объектов который теперь можно тыкать kui'ем - volumeattachment

volumeattachment
volumeattachment

Творите, выдумывайте, пробуйте!)

Теги:
Всего голосов 2: ↑1 и ↓10
Комментарии0

Привет, как узнать % использования PVC? Kui поможет! Добавил команду PVC Usage

PVC usage
PVC usage

PVC это абстракция поэтому прямого пути (команды) узнать использование PVC нет. Как сделано? Ищем стручек (pod) который использует искомый PVC:

pvc_used_in=$(
    kubectl -n $namespace get po -o \
    jsonpath='{range .items[*]}{.metadata.name}{" "}{range .spec.volumes[*]}{.name}{" "}{.persistentVolumeClaim.claimName}{" \n"}{end}{end}' | \
    grep " $pvc_name "
)
raw=($pvc_used_in)
pod_name=${raw[0]}
mnt_name=${raw[1]}

Находим точку g монтирования:

pod_mount_name=$(
    kubectl -n $namespace get po/$pod_name -o \
    jsonpath='{range .spec.containers[*]}{range .volumeMounts[*]}{.name}{" "}{.mountPath}{"\n"}{end}{end}' | \
    awk "/$mnt_name /"'{print $2}'
)

Проверяем использование диска (PVC):

pvc_usage=$(
    kubectl -n $namespace exec po/$pod_name -- df -h $pod_mount_name
)

Выводим результат:

echo "PVC capacity: $pvc_capacity"
echo "PVC used in:"; echo "$pvc_used_in"
echo "PVC usage:"  ; echo "$pvc_usage"
PVC capacity: 750Gi
PVC used in:
kafka-dev-broker-1 data data-kafka-dev-broker-1 
PVC usage:
Filesystem      Size  Used Avail Use% Mounted on
/dev/rbd4       738G   44G  695G   6% /bitnami/kafka

Бонусом добавил возможность прибивать PVCишки kui'ем, добавил команды Delete и Terminate.

Творите, выдумывайте, пробуйте!)

Теги:
Всего голосов 4: ↑3 и ↓1+3
Комментарии0

Эгегей! Радость, kui снова подрос! Добавлена команда 'SSL update' для обновления сертификатов и ключей в секретах типа 'kubernetes.io/tls'. Как это работает?

  • Кладете в какую-нибудь папку новый сертификай, файл должен называться tls.crt и ключ с именем tls.key

  • Запускаете kui в этой папке, находите секрет с сертификатом который необходимо обновить

  • Обновляете через 'SSL update'

SSL update
SSL update

Под капотом, обновление выполняется вот такой командой:

printf -v ssl_patch_data '{"data": {"tls.crt": "%s", "tls.key": "%s"}}' "$(base64 -w0 tls.crt)" "$(base64 -w0 tls.key)"
kubectl patch secret/<secret_name> -n <namespace> --patch="$ssl_patch_data"

Творите, выдумывайте, пробуйте!)

Теги:
Всего голосов 5: ↑4 и ↓1+5
Комментарии1

Привет, потенциал kui еще немного увеличился! Случилось то что случилось, в продской cronjoпеb'е что-то застряло. Добавил в kui ручной запуск кронжоб и kui'ем протолкнул застрявшее в кронжобе ...

manual run cronjob
manual run cronjob

Творите, выдумывайте, пробуйте!)

Теги:
Всего голосов 2: ↑1 и ↓10
Комментарии0

Привет, смотрите че наговнокодил, вот такую вот проверку конфига для haproxy

if check '/etc/haproxy/haproxy.cfg'; then
red='\e[91m'
ylw='\e[93m'
DEF='\e[0m'
/usr/sbin/haproxy -c -f /etc/haproxy/haproxy.cfg || printf "
${red}WARNING!
${red}Haproxy config has errors!
${ylw} __
${ylw}|  \_____${red}︹${DEF}
${ylw}\        ${red}\ \ ${DEF}
${ylw}/  ______${red}/ / ${DEF}
${ylw}|__/     ${red}︺ ${DEF}
"
fi

Выглядит вот так:

ох..ая ошибка
ох..ая ошибка

Как вам?)

Творите, выдумывайте, пробуйте!)

Теги:
Всего голосов 31: ↑6 и ↓25-19
Комментарии11

Привет, малюсенькое увеличение потенциала kui'я, добавил pv и pvc в список просмотра.

pv and pvc
pv and pvc

Творите, выдумывайте, пробуйте!)

Теги:
Всего голосов 2: ↑2 и ↓0+3
Комментарии0

Ближайшие события

Как немножко хакнуть Мосрег⁠⁠

Всем привет!

При оформлении заявлений в детский сад на детей на uslugi.mosreg.ru столкнулся с тем, что если ранее было подано заявление и нужно какие-то данные в нём поправить, то выбрать год зачисления ребёнка в ДС можно только следующий. То есть, мы подали в 2024, а теперь можно выбрать только 2026 год, потому что текущий нельзя.

Мне показалось это не очень удобным, решил немножко изучить фронтенд сайта и обнаружил, что валидации на простановку года нет :)

В видео подробнее, как обойти ограничение

P.S. На записи не видно контекстного меню в браузере, когда нажимаешь ПКМ, нас интересует последний пункт "Просмотреть код"

Теги:
Всего голосов 2: ↑1 и ↓10
Комментарии2

Я устал от форматирования JSON файлов

Я много и часто просматриваю JSON-файлы: от конфигураций сервисов до API ответов и логов. Каждый раз, открывая очередной файл, я форматирую содержимое, чтобы было удобнее читать (ведь JSON не только machine-readable, но и human-readable). И каждый раз я грущу, что все сервисы (онлайн, встроенные средства IDE и даже плагины) предоставляют лишь две крайности: форматировать всё или ничего (минифицировать в одну строку).

Но что, если я хочу отформатировать JSON лишь до определённого уровня? Что, если у меня есть огромный список словарей (возможно, даже глубоких), который при форматировании выглядит как-то так:

[
    {
        "id": 1,
        "name": "Alice",
        "birthday": {
            "day": 5,
            "month": 4,
            "year": 1983
        }
    },
    {
        "id": 2,
        "name": "Bob",
        "birthday": {
            "day": 6,
            "month": 2,
            "year": 1945
        }
    },
    {
        "id": 3,
        "name": "Eve",
        "birthday": {
            "day": 10,
            "month": 11,
            "year": 1978
        }
    }
]

Что, если я хочу оставить каждый словарь в более компактном (не совсем минифицированном) виде? Например, таком:

[
    {"id": 1, "name": "Alice", "birthday": {"day": 5, "month": 4, "year": 1983}},
    {"id": 2, "name": "Bob", "birthday": {"day": 6, "month": 2, "year": 1945}},
    {"id": 3, "name": "Eve", "birthday": {"day": 10, "month": 11, "year": 1978}}
]

Или я хочу, чтобы в каждом словаре развёрнуты были только внешние ключи?

[
    {
        "id": 1,
        "name": "Alice",
        "birthday": {"day": 5, "month": 4, "year": 1983}
    },
    {
        "id": 2,
        "name": "Bob",
        "birthday": {"day": 6, "month": 2, "year": 1945}
    },
    {
        "id": 3,
        "name": "Eve",
        "birthday": {"day": 10, "month": 11, "year": 1978}
    }
]

Да, многие текстовые редакторы вроде Sublime Text или VS Code дают возможность свернуть контент до определённого уровня. Но что, если я хочу оставить файл в этом промежуточном виде и просматривать его прямо в терминале, подключившись по ssh? Или я хочу посмотреть файл на гитхабе с телефона? Да, возможно, мои вкусы весьма специфичны, но в существующих реалиях я вынужден грустно довольствоваться лишь полностью развёрнутым вариантом (или делать это вручную). Встроенные средства форматирования JSON в JS или Python также не предоставляют простой возможности ограничить глубину (либо я так и не научился их готовить).

Поэтому я собрался с силами и написал свой форматтер с возможностью ограничить глубину. Помимо базового функционала вроде валидации, минификации и настройки количества отступов, в нём есть настройка максимальной глубины (по умолчанию она равна нулю, что соответствует привычному форматированию без ограничений).

Да, он вряд ли подойдёт, чтобы редактировать на лету гигантские JSON файлы. И он уж точно не пытается стать убийцей какого-либо из существующих онлайн сервисов. В первую очередь он призван решить мою проблему: сделать форматирование JSON чуточку более управляемым. А если и вы сталкивались с подобной проблемой, буду рад, если сервис поможет и вам!

Теги:
Всего голосов 7: ↑7 и ↓0+7
Комментарии0

Привет, развил тему пропихивания стручков (pod'ов) в кубернетис, добавил в меню выбора типа объектов команду apply. Теперь kui'ем можно приколачивать мYAMLики, создавая любые типы объектов. По умолчанию предлагает создать стручок:

создай свой стручок
создай свой стручок

Но с помощью кнопки edit можно изменить мямлик, изменения сохранятся в файл ~/.kyml.

С удивлением обнаружил что хаб Кодобред переименован в Говнокод О_о Чтож, так даже интереснее.

Творите, выдумывайте, пробуйте!)

Теги:
Рейтинг0
Комментарии0

Привет, приспичило создать тестовый стручек (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

Творите, выдумывайте, пробуйте!)

Теги:
Рейтинг0
Комментарии0

Привет, зачастую после тыкания в какой-нибудь стручок (pod) приходится подниматься на уровень выше в деплой, стейтфулсет или даемонсет. Для этого в kui надо было сначала посмотреть чем контролируется стручок, сделав describe, потом сменить тип объекта, найти нужный... Хватить теребонькать эти стручки! Добавил для стручков команду Controlled by, она сразу тыкает kui в нужное место!

controlled by
controlled by

Творите, выдумывайте, пробуйте!)

Теги:
Рейтинг0
Комментарии0

Привет, долгожданные новости из мира кубернетиса. Иногда надо посмотреть за подиками, как они там живут поживают, все ли (ре)стартанули или кто завис. В kui для этого сделана кнопка RELOAD. Но постоянно жмякать кнопку это же дро...во какое-то правда? Хватит это терпеть! Добавил команду watch it, теперь можно залипнуть на какое-то время, глядя как подики ползают туда-сюда.

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...

Нажмите x когда надоест.

Творите, выдумывайте, пробуйте!)

Теги:
Рейтинг0
Комментарии0
1