Переключение языков в 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 для доступа к репозиториям.

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

k8s кластер из одной ноды

Для начала необходимо установить Docker:

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
sudo apt update && sudo apt install docker-ce

На данный момент kubernetes не поддерживает работу систем …

CoreDNS CrashLoopBackOff

После установки k8s иногда бывает, что kubectl get pods дает список подов, где coredns падает при запуске с ошибкой:

NAME                              READY   STATUS             RESTARTS   AGE
coredns-5c98db65d4-gz6bt          0/1     CrashLoopBackOff   114        10h
coredns-5c98db65d4-tkgxt          0/1     CrashLoopBackOff   114        10h
etcd-kmaster                      1/1     Running            0          10h
kube-apiserver-kmaster            1/1     Running            0          10h
kube-controller-manager-kmaster   1 …

Как подписывать коммиты в 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 …

Docker login в Kubernetes

Довольно часто требуется организовать получение образов контейнеров из приватных репозиториев. В случае прямой работы с docker мы просто используем команду docker login и все работает.

Но вот в kubernetes мы не работаем с docker напрямую и тут сразу возникает вопрос - как залогиниться в наш приватный репозиторий.

Делается это довольно просто …

Ошибка HPA в k8s

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

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

horizontal-pod-autoscaler missing request for cpu

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

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