Заметки в категории How To

Переключение языков в MacOS по CapsLock

Меня стала жутко бесить задержка при переключении языков в MacOS. Иногда оно срабатывает нормально, а иногда первая буква остается английской, а только потом идет переключение.

Когда ты набираешь текст быстро и переключаешься постоянно - выходить полная дичь и времени на правки уходит какое-то невероятное количество.

Пришлось разбираться, как же мне избавиться …

Проверка состояния кластера k8s

Новогодние праздники уже на носу и чтоб спокойно спать надо бы проверить как чувствует себя продакшн.

Если у вас все это завязано на Kubernetes, то попробуйте утилитку popeye.

Установка

Для MacOS установка проста как дверь:

brew install derailed/popeye/popeye

Для остальных систем смотрим официальную документацию и качаем готовые бинарники …

Защита SSH через port knocking

Иногда, по каким-то причинам необходимо закрыть какой-то порт так, чтоб к нему все же оставался доступ с любого IP адреса. Например, регулятор требует, чтоб SSH порт был закрыт для всего мира.

На выручку приходит port knocking.

Итак, поставим knockd и настроим его так, чтоб SSH был закрыт, но открывался при …

Не удаляется неймспейс в Kubernetes

После теста очередного софта в Kubernetes у меня не получилось удалить namespace этой утилиты.

Проблема была в том, что namespace оставался висеть в статусе Terminating. Пришлось разбираться почему и как его удалить.

Причина

При удалении неймспейса кубер проверяет специальное поле spec.finalizers в спецификации этого неймспейса. Если по какой-то причине …

Подпись git коммитов ssh ключом

Мы уже рассматривали зачем нужна подпись коммитов в одном из предыдущих постов.

Теперь же в git можно производить подпись коммитов и с помощью ssh ключа, чтоб не использовать gpg ключ, если он вам не нужен. Это отличная возможность, т.к. большинство людей используют SSH для доступа к репозиториям.

Подпись ключом …

Как подписывать коммиты в Git

Spoofing пользователей в GitHub

В github есть одна небольшая проблема. Мы можем выдать добавленный коммит за авторство любого другого человека. Для этого надо всего лишь выполнить несколько комманд:

$ git config user.name "John Doe"
$ git config user.email "[email protected]"
$ touch badcode.js
$ git add .
$ git commit -m 'add …

Ошибка HPA в k8s

После развертывания CronJob в кластере kubernetes столкнулся с проблемой. Перестал работать Horisontal Pod Autoscaler.

Ошибка при этом была следующей:

horizontal-pod-autoscaler missing request for cpu

Есть даже issue на GitHub, которое до сих пор открыто. Но решается эта проблема добавлением лимитов в контейнер CronJob:

              resources:
                requests:
                  memory: "32Mi"
                  cpu …

Периодический перезапуск pod'ов в k8s

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

Диспозиция

  1. Приложение надо периодически перезапускать
  2. Приложение задеплоено в kubernetes

Реализация

RBAC

Создаем сервисный аккаунт, роль и привязку:

---
kind: ServiceAccount
apiVersion: v1
metadata:
  name: test-restart
  namespace: test-ns …

NVM не может установить нужную версию NodeJS

В MacOS обнаружил, что Node Version Manager не может поставить нужную мне версию NodeJS. Как это было.

Ставлю NVM:

brew install nvm

И пытаюсь поставить ноду:

nvm install 12.16.1

Она начинает устанавливаться и падает с такой ошибкой:

 nvm install 12.16.1
Downloading and installing node v12.16 …

Как расширить root раздел под LVM

Для начала надо расширить сам раздел

growpart /dev/sda 3

Смотрим, что у нас получилось

fdisk -l

Если все прошло успешно, то увеличиваем место в физическом томе

pvresize /dev/sda3
pvdisplay

Дальше увеличиваем логический том

lvextend -l 100%FREE --resizefs /dev/ubuntu-vg/ubuntu-lv
vgdisplay

Иногда может понадобиться расширить файловую систему …