среда, 27 сентября 2023 г.

pip в защищённых контурах

 Если есть локальный прокси

python3 -m pip install --index-url http://my.package.repo/simple/ SomeProject

Если полностью изолированный контур, шагов будет больше
1) python -m pip download --destination-directory DIR -r requirements.txt
есть нюанс, читаем линк ниже, тогда:
python -m pip wheel --wheel-dir DIR -r requirements.txt

2) Переносим проект и DIR на изолированную машину

3) python -m pip install --no-index --find-links=DIR -r requirements.txt

Есть вариант через venv, но там много нюансов, начиная с того что с машины с маком на машину с убунтой - из коробки не заработает, там в том числе разные пути в bin и конфиге.

вторник, 26 сентября 2023 г.

apt: не очищать кэш пакетов

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

Но по умолчанию дебиан удаляет пакеты (с 2016 года) после установки.

echo 'Binary::apt::APT::Keep-Downloaded-Packages "true";' \

      > /etc/apt/apt.conf.d/01keep-debs

потом забирать в /var/cache/apt/...

воскресенье, 24 сентября 2023 г.

Yandex Cloud + ipv6

 Пользовательские ВМ в Yandex Cloud не поддерживают протокол IPv6, это является причиной ошибки "101: Network is unreachable".

Чтобы принудительно воспользоваться только IPv4 для APT, можно использовать такой параметр: -o Acquire::ForceIPv4=true

https://itisgood.ru/2018/09/19/kak-zastavit-dispetchera-paketov-apt-ispolzovat-ipv4-v-ubuntu-16-04/


Вариант 2:

sysctl -w net.ipv6.conf.all.disable_ipv6=1


среда, 20 сентября 2023 г.

Замена терраформу (реальная)

 После того, как HashiCorp перелицензировали свои продукты под Business Source License и они перестали соответствовать определению Open Source Definition, группа вендоров объединилась и создала свой форк Terraform. Сначала он назывался OpenTF, а потом его переименовали в OpenTofu.

Сегодня стало известно, что OpenTofu стал проектом Linux Foundation, а значит, пользователи могут быть уверены, что новый проект останется Open Source и не будет зависеть от одного вендора.


https://e42.link/3PKjYif

https://github.com/opentofu/opentofu

Терраформ вполне себе рип. Надеюсь, как и остальные продукты HashiCorp со временем.

пятница, 1 сентября 2023 г.

Crossplane как замена terraform

https://docs.crossplane.io/

 IaC — управление всей инфраструктуры через код. Это удобно для изменений, автоматизации, автодокументирования

Аналог terraform

Главное отличие Crossplane в основной идее проекта: создание центра управления инфраструктурой на базе Kubernetes. Состояние описывается именно в виде Custom Resources в Kubernetes, и Crossplane постоянно поддерживает его актуальность. Terraform, напротив, синхронизирует состояние только во время выполнения вышеупомянутых CLI-команд.

Пример под яндекс:

https://github.com/yandex-cloud/provider-jet-yc/blob/main/examples/storage/bucket.yaml


Как управлять инфраструктурой в GitOps с помощью Crossplane

helm хранилище секретов

Чтобы скрывать пароли из Git-репозитория, подключим инструмент Helm Secrets. Он позволяет зашифровывать чувствительную информацию с помощью различных методов и расшифровывать при применении.

  1. Устанавливаем helm-secrets через helm plugin:
helm plugin install https://github.com/jkroepke/helm-secrets --version v3.15.0 
  1. Устанавливаем зависимости:
  • Sops — утилита, которая умеет шифровать и дешифровывать конфигурационные файлы

  • Age — утилита для шифрования, которую уже использует Sops для работы с конфигурационными файлами

  1. Теперь подготовим ключ, с помощью которого будут зашифровываться values-файлы:
age-keygen -o key.txt 

💡 Частая ошибка. Обязательно добавляем key.txt в .gitignore, чтобы он не попал в Git

  1. Укажем для Sops путь до ключа шифрования:
export SOPS_AGE_KEY_FILE=$(pwd)/key.txt
export SOPS_AGE_RECIPIENTS=<публичный ключ, который распечатала команда выше> 

$(pwd) здесь указан специально. Используйте абсолютный путь, так шифрование и дешифрование будут работать правильно

  1. Зашифруем файл values/argocd.yaml:
helm secrets enc values/argocd.yaml 

(из яндекс.практикум, курс gitops)

Если надо расшифровать файл:

helm secrets dec values/argocd.yaml