Выбираю платформу(мы) для стрима. Вы можете повлиять на выбор :)
Anonymous Poll
28%
ВК
33%
Telegram
22%
Twitch
44%
Youtube (Скорее всего только для записи)
Завтра стрим!
Как и договаривались - завтра будем проводить стрим. В 18 Мск.
Покажу на практике развертывание dev кластера k8s, покажу все то, что было уже описано в постах здесь, на канале.
В опросе победили две площадки - youtube и telegram. Поэтому будем стримить на них.
Сегодня будет несколько тестовых трансляций, заходить на них не нужно, это просто мои тесты.
Держите ссылочку на ютуб:
https://www.youtube.com/watch?v=dDfWQp3JRqg
Как и договаривались - завтра будем проводить стрим. В 18 Мск.
Покажу на практике развертывание dev кластера k8s, покажу все то, что было уже описано в постах здесь, на канале.
В опросе победили две площадки - youtube и telegram. Поэтому будем стримить на них.
Сегодня будет несколько тестовых трансляций, заходить на них не нужно, это просто мои тесты.
Держите ссылочку на ютуб:
https://www.youtube.com/watch?v=dDfWQp3JRqg
YouTube
Bootstrap dev k8s cluster
Покажу на практике все то, что уже было описано в постах в telegram канале
🔥9👍4🎉2
2024-12-15 18-57-49.mkv
471.3 MB
Запись стрима
Провели первый стрим. Вышло немного сумбурней, чем я планировал. Все таки экспромтом не всегда умею хорошо рассказать.
Тем не менее - вот вам запись. Также запись доступна на ютубе по ссылке постом выше.
Подняли и настроили кластер по мотивам прошедших постов в телеге.
Всем спасибо, кто пришел. И отдельное для тех, кто досмотрел до конца :)
Stay tuned!
Провели первый стрим. Вышло немного сумбурней, чем я планировал. Все таки экспромтом не всегда умею хорошо рассказать.
Тем не менее - вот вам запись. Также запись доступна на ютубе по ссылке постом выше.
Подняли и настроили кластер по мотивам прошедших постов в телеге.
Всем спасибо, кто пришел. И отдельное для тех, кто досмотрел до конца :)
Stay tuned!
👍13🎉3❤1
Forwarded from IT STAND
Live: Kubernetes 1.32
Эпичные изменения
В уходящий год дракона взлетел релиз K8S Пенелопа, и Кхал АлексейМамоа самоотверженно защищает ее безопасность перед лицом, столь же выдающимся, Георгом Гаалом.
О судьбе Пенелопы узнаете от венгерского рыцаря Георга и цифрового кочевника Алексея уже в эту пятницу в 20:00
- с Georg Gaal @gecube
- и Aleksey Fedulaev @int0x80h
Прямая трансляция: https://www.youtube.com/watch?v=PzDrJHZTTMY
с ответами на вопросы из чата YouTube
При поддержке:
@ever_secure
🔥IT STAND |FIDELINA.RU | Бот
Эпичные изменения
В уходящий год дракона взлетел релиз K8S Пенелопа, и Кхал Алексей
О судьбе Пенелопы узнаете от венгерского рыцаря Георга и цифрового кочевника Алексея уже в эту пятницу в 20:00
- с Georg Gaal @gecube
- и Aleksey Fedulaev @int0x80h
Прямая трансляция: https://www.youtube.com/watch?v=PzDrJHZTTMY
с ответами на вопросы из чата YouTube
При поддержке:
@ever_secure
🔥IT STAND |
👍2
Монтирование секретов при docker build
Сегодня занимался докеризацией одного проекта, где есть composer зависимости в приватном репозитории.
Я попробовал подсунуть переменную
Я загуглил этот варнинг и обнаружил, что в докере есть более крутой способ монтировать секреты для сборки образа.
Если бы я сделал как хотел, то секрет навсегда остался бы в докер образе после сборки. Умный докер подсказал, что я не прав.
И так, исправляемся, в докерфайле пишем:
А при сборке делаем вот так:
Вуаля, в нашем образе не осталось секретных данных, при этом мы получили нашу зависимость из приватной репы!
Сегодня занимался докеризацией одного проекта, где есть composer зависимости в приватном репозитории.
Я попробовал подсунуть переменную
COMPOSER_AUTH через ARG в докерфайле, на что докер мне заявил:1 warning found (use docker --debug to expand):
- SecretsUsedInArgOrEnv: Do not use ARG or ENV instructions for sensitive data (ARG "COMPOSER_AUTH") (line 8)
Я загуглил этот варнинг и обнаружил, что в докере есть более крутой способ монтировать секреты для сборки образа.
Если бы я сделал как хотел, то секрет навсегда остался бы в докер образе после сборки. Умный докер подсказал, что я не прав.
И так, исправляемся, в докерфайле пишем:
RUN \
--mount=type=secret,id=composer-auth,env=COMPOSER_AUTH \
composer install --no-dev --no-scripts --no-autoloader --prefer-dist --no-progress --no-interaction
А при сборке делаем вот так:
COMPOSER_AUTH='{"github-oauth": {"github.com": "очень-секретный-секрет"}}' docker build -f ./docker/php/Dockerfile --secret id=composer-auth,env=COMPOSER_AUTH -t my-awesome-project .Вуаля, в нашем образе не осталось секретных данных, при этом мы получили нашу зависимость из приватной репы!
👍12🔥9
Запись доклада с PHP Russia!
Хотел написать еще один пост о том, что обсуждали на стриме, но не успеваю до конца года уже.
Зато вот вам новогодний подарок - запись моего выступления на PHP Russia :)
Это последний технический пост в уходящем году, до встречи в 2025!
https://www.youtube.com/watch?v=puaANhjIs7M
Хотел написать еще один пост о том, что обсуждали на стриме, но не успеваю до конца года уже.
Зато вот вам новогодний подарок - запись моего выступления на PHP Russia :)
Это последний технический пост в уходящем году, до встречи в 2025!
https://www.youtube.com/watch?v=puaANhjIs7M
🔥20
FluxCD. Правильный порядок применения манифестов в кластере
На стриме рассказывал как обеспечить правильный порядок применения манифестов в кластере. Пришло время написать об этом пост.
В каталоге
1. Разделим установку и конфигурацию
2. Укажем, что ingress-nginx должен выполняться после того, как будет выполнен
3. Укажем, что app должен выполняться после того, как будет установлен
Готово! Пушим в репозиторий, проверяем статус с помощью
На стриме рассказывал как обеспечить правильный порядок применения манифестов в кластере. Пришло время написать об этом пост.
В каталоге
cluster у нас есть файлы, пронумерованные в том порядке, в котором мы хотим применять их в кластере. Но на деле сейчас ничего не применяется по порядку, все применяется одновременно. Чтобы обеспечить нужный нам порядок, в сущности Kustomization мы можем указать директиву dependsOn. Давайте реализуем это в нашем dev кластере:1. Разделим установку и конфигурацию
metallb на два этапа - metallb-install и metallb-config, при этом укажем, что config должен выполняться после install:dependsOn:
- name: metallb-install
2. Укажем, что ingress-nginx должен выполняться после того, как будет выполнен
metallb-config3. Укажем, что app должен выполняться после того, как будет установлен
ingress-nginxГотово! Пушим в репозиторий, проверяем статус с помощью
flux get all -A. Убеждаемся, что все применяется в нужном порядке👍6
Forwarded from Пых (Валентин Удальцов)
Пыхап 8 февраля!
Друзья, через 2.5 недели пройдёт второй Пыхап! В программе у нас 3 доклада и новая секция:
🤔 Шардирование в RabbitMQ
Антон Растрыгин расскажет, как разбирать очередь параллельно, но последовательно.
🤝 Гибкий проект с фича-флагами Unleash
Рустэм Ахметзянов объяснит, почему «друзья не позволяют друзьям делать самописную систему фича-флагов».
🤹 Реализация нейронной сети на PHP
Алексей Нечаев покажет, как создать нейронку, не написав ни строчки кода на Python!
🎤 Открытый микрофон (только офлайн)
В конце митапа любой участник сможет на 5-10 минут завладеть флипчартом и поделиться насущной проблемой, элегантным решением или историей про то, как уронил прод накануне в пятницу.
Пыхап пройдёт там же — в уютном лофте «Событие» на Таганке. В этот раз решили попробовать субботу, поэтому собираемся пораньше, в 16:30. Регистрация откроется на канале Пых в следующий понедельник в 15:00, не пропустите. Входной билет — 500₽. Ну и конечно же митап будет транслироваться на YouTube и VK Видео с записью.
Спонсор второго Пыхапа — PremiumBonus. PremiumBonus — эволюция управления клиентским опытом. Весь спектр цифровых маркетинговых инструментов для выстраивания эффективной коммуникации с клиентами. Уникальные продукты на основе самых актуальных современных трендов, таких как предиктивная аналитика и автоматизация маркетинговых акций с помощью ИИ.
Друзья, через 2.5 недели пройдёт второй Пыхап! В программе у нас 3 доклада и новая секция:
Антон Растрыгин расскажет, как разбирать очередь параллельно, но последовательно.
Рустэм Ахметзянов объяснит, почему «друзья не позволяют друзьям делать самописную систему фича-флагов».
Алексей Нечаев покажет, как создать нейронку, не написав ни строчки кода на Python!
В конце митапа любой участник сможет на 5-10 минут завладеть флипчартом и поделиться насущной проблемой, элегантным решением или историей про то, как уронил прод накануне в пятницу.
Пыхап пройдёт там же — в уютном лофте «Событие» на Таганке. В этот раз решили попробовать субботу, поэтому собираемся пораньше, в 16:30. Регистрация откроется на канале Пых в следующий понедельник в 15:00, не пропустите. Входной билет — 500₽. Ну и конечно же митап будет транслироваться на YouTube и VK Видео с записью.
Спонсор второго Пыхапа — PremiumBonus. PremiumBonus — эволюция управления клиентским опытом. Весь спектр цифровых маркетинговых инструментов для выстраивания эффективной коммуникации с клиентами. Уникальные продукты на основе самых актуальных современных трендов, таких как предиктивная аналитика и автоматизация маркетинговых акций с помощью ИИ.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7👍4🔥2
Работа с docker на удаленной машине через ssh
Пост про cert-manager в кубе немного застрял, поэтому сегодня будет пост про докер :)
Возможно не все знают, но можно управлять удаленным docker демоном через ssh. На днях попробовал этот способ. Это удобно во всяких CI системах для деплоя на сервер.
Как сделать:
1. Добавляем контекст
2. Запускаем
При этом
Также вы можете передать нужные ENVы и все прекрасно сработает. Мне кажется это очень удобно
Enjoy!
Пост про cert-manager в кубе немного застрял, поэтому сегодня будет пост про докер :)
Возможно не все знают, но можно управлять удаленным docker демоном через ssh. На днях попробовал этот способ. Это удобно во всяких CI системах для деплоя на сервер.
Как сделать:
1. Добавляем контекст
remotedocker context create remote --docker host=ssh://${SSH_USER}@${SSH_HOST}:${SSH_PORT}2. Запускаем
docker compose up на удаленной машине, находясь при этом у себя в локальном окружении билда в CIdocker --context remote compose -f docker-compose.prod.yaml up -dПри этом
compose файлик хранится у вас на gitlab-runner локально, его не нужно никуда копироватьТакже вы можете передать нужные ENVы и все прекрасно сработает. Мне кажется это очень удобно
Enjoy!
👍9🔥2
Получение SSL сертификата для нашего приложения в k8s с помощью cert-manager
И так. У нас есть задеплоенное в dev кластер куба приложение. Мы хотим его вывесить наружу и получить для него SSL сертификат.
Давайте приступим:
1. Устанавливаем в кластер компонент cert-manager:
В инфраструктурном репозитории, в каталоге
Добавляем в этот же каталог kustomization для
В
2. Теперь нам нужно создать такую сущность как
Добавим в каталог
В
ВАЖНО! Для тестов и во избежание временной блокировки со стороны lets encrypt в параметре
Когда сертификат будет успешно получен - можно заменить обратно на значение, которое приведено в issuer.yaml
3. В файле 06-app.yaml меняем зависимость c
4. Создаем файл cert.yaml в
5. Пушим всё в репозиторий, отслеживаем статус через
Вы должны увидеть следующую строку:
6. Осталось только поправить
Пушим в репозиторий приложения, дожидаемся деплоя и проверяем.
Теперь приложение должно открываться по адресу https://app-example.example.com и иметь действительный сертификат!
В след. посте начнем подключать БД к нашему приложению и устанавливать в кластер PostgreSQL (На тестовых средах это нормально. В проде не рекомендую дежрать БД в кластере)
И так. У нас есть задеплоенное в dev кластер куба приложение. Мы хотим его вывесить наружу и получить для него SSL сертификат.
Давайте приступим:
1. Устанавливаем в кластер компонент cert-manager:
В инфраструктурном репозитории, в каталоге
cluster, переименовываем 04-app.yaml в 06-app.yamlДобавляем в этот же каталог kustomization для
cert-manager, он будет устанавливаться после ingress-nginxВ
components создаем каталог cert-manager и добавляем туда namespace.yaml и hr-cert-manager.yaml2. Теперь нам нужно создать такую сущность как
ClusterIssuer, чтобы выпускать сертификаты с помощью Lets EncryptДобавим в каталог
cluster kustomization В
components создадим каталог letsencrypt и добавим туда issuer.yamlВАЖНО! Для тестов и во избежание временной блокировки со стороны lets encrypt в параметре
server: сначала лучше указать https://acme-staging-v02.api.letsencrypt.org/directoryКогда сертификат будет успешно получен - можно заменить обратно на значение, которое приведено в issuer.yaml
3. В файле 06-app.yaml меняем зависимость c
ingress-nginx на letsencrypt4. Создаем файл cert.yaml в
components/app-example. Это наш сертификат, который будет получен от Lets Encrypt. Он будет сохранен в k8s secret под названием app-example-tls5. Пушим всё в репозиторий, отслеживаем статус через
flux get all -A. Когда все пройдет успешно - проверим, что сертификат создан:kubectl get secret -n app-exampleВы должны увидеть следующую строку:
NAME TYPE DATA AGE
app-example-tls kubernetes.io/tls 2 5m6s
6. Осталось только поправить
ingress.yaml и values.yaml в helm чарте нашего приложения. Смотрите коммитПушим в репозиторий приложения, дожидаемся деплоя и проверяем.
Теперь приложение должно открываться по адресу https://app-example.example.com и иметь действительный сертификат!
В след. посте начнем подключать БД к нашему приложению и устанавливать в кластер PostgreSQL (На тестовых средах это нормально. В проде не рекомендую дежрать БД в кластере)
👍4🤔1
Добавляем в кластер поддержку хранения данных с помощью local-path-provisioner
Для нашего тестового приложения в dev кластере нам потребовалась БД.
Так как кластер тестовый - мы можем разместить СУБД прямо в кластере, а не где-то на серверах снаружи.
Чтобы СУБД было где хранить данные - мы сегодня займемся добавлением персистентного хранилища в наш кластер.
В кубе за хранение данных отвечают такие сущности как Storage Class, Persistent Volume и Persistent Volume Claim.
Также есть различный софт, который интегрирует разные системы хранения с вышеуказанными сущностями куба.
Мы воспользуемся одним из самых простых - local-path-provisioner. Данный софт просто создает папку на локальном диске, подключенном к ноде кластера и пишет данные туда. Не поддерживает ограничение размера запрошенного Persistent Volume, не умеет переевозить PV с ноды на ноду, но в тестовом кластере нам это не нужно.
Давайте приступать:
1. В каталоге
2. Добавим файл 06-local-path-provisioner.yaml в каталог
3. Внесем необходимые изменения в файл
4. В
5. Создадим Helm Release для
Тут есть одна хитрость. Helm chart лежит не где-то в репозитории чартов, а прямо в репозитории с исходным кодом.
Но это не проблема. FluxCD позволяет установить чарт в кластер и в этом случае. В документации описано как можно провернуть данную затею.
Создаем
В Helm Release ссылаемся на наш git репозиторий и указываем путь, где искать чарт.
6. Пушим все в репозиторий, дожидаемся синхронизации и проверяем, что все прошло успешно:
Выполняем
Должен появиться storage class с именем
Вот и всё! В следующем посте установим PostgreSQL в кластер и подключим базу к нашему приложению
Stay tuned!
Для нашего тестового приложения в dev кластере нам потребовалась БД.
Так как кластер тестовый - мы можем разместить СУБД прямо в кластере, а не где-то на серверах снаружи.
Чтобы СУБД было где хранить данные - мы сегодня займемся добавлением персистентного хранилища в наш кластер.
В кубе за хранение данных отвечают такие сущности как Storage Class, Persistent Volume и Persistent Volume Claim.
Также есть различный софт, который интегрирует разные системы хранения с вышеуказанными сущностями куба.
Мы воспользуемся одним из самых простых - local-path-provisioner. Данный софт просто создает папку на локальном диске, подключенном к ноде кластера и пишет данные туда. Не поддерживает ограничение размера запрошенного Persistent Volume, не умеет переевозить PV с ноды на ноду, но в тестовом кластере нам это не нужно.
Давайте приступать:
1. В каталоге
cluster снова переименуем 06-app.yaml в 07-app.yaml и поменяем там зависимость с letsencrypt на local-path-provisioner2. Добавим файл 06-local-path-provisioner.yaml в каталог
cluster3. Внесем необходимые изменения в файл
kustomization.yaml4. В
components создадим папку local-path-provisioner и добавим туда namespace.yaml5. Создадим Helm Release для
local-path-provisioner. Тут есть одна хитрость. Helm chart лежит не где-то в репозитории чартов, а прямо в репозитории с исходным кодом.
Но это не проблема. FluxCD позволяет установить чарт в кластер и в этом случае. В документации описано как можно провернуть данную затею.
Создаем
GitRepository и указываем, что Flux должен игнорировать все, кроме указанной папки в git репозитории.В Helm Release ссылаемся на наш git репозиторий и указываем путь, где искать чарт.
6. Пушим все в репозиторий, дожидаемся синхронизации и проверяем, что все прошло успешно:
Выполняем
kubectl get storageclassДолжен появиться storage class с именем
local-pathВот и всё! В следующем посте установим PostgreSQL в кластер и подключим базу к нашему приложению
Stay tuned!
👍7
Deptrac внезапно сменил репозиторий
Сегодня утром обнаружил, что инструмент
Насколько я понял репозиторий мигрировал целиком и скорее всего все хорошо. Но будьте бдительны, возможно это вредоносная активность.
На packagist пакет пока находится по старому имени, но устанавливается из нового репа.
Как разберусь с ситуацией подробнее - напишу
Сегодня утром обнаружил, что инструмент
deptrac внезапно и без каких-либо объявлений сменил репозиторий с https://github.com/qossmic/deptrac на https://github.com/deptrac/deptrac/Насколько я понял репозиторий мигрировал целиком и скорее всего все хорошо. Но будьте бдительны, возможно это вредоносная активность.
На packagist пакет пока находится по старому имени, но устанавливается из нового репа.
Как разберусь с ситуацией подробнее - напишу
GitHub
GitHub - opensoftwareconsulting/deptrac
Contribute to opensoftwareconsulting/deptrac development by creating an account on GitHub.
👍7
Deptrac в порядке
Я создал issue для того, чтобы разобраться в ситуации.
Еще один представитель организации qossmic (не связанный с тем, что осуществил перенос репозитория) ответил, что у компании ребрендинг и они решили выделить
Полагаю, что злонамеренных действий тут нет. У Qossmic действительно сейчас ребрендинг и их старый сайт ведет на сайт, который указан в комментарии к моему issue.
Ждем пока появится на packagist как
Я создал issue для того, чтобы разобраться в ситуации.
Еще один представитель организации qossmic (не связанный с тем, что осуществил перенос репозитория) ответил, что у компании ребрендинг и они решили выделить
deptrac в отдельную организацию. Полагаю, что злонамеренных действий тут нет. У Qossmic действительно сейчас ребрендинг и их старый сайт ведет на сайт, который указан в комментарии к моему issue.
Ждем пока появится на packagist как
deptrac/deptrac и можно обновлятьсяGitHub
The deptrac repository has been moved · Issue #1452 · deptrac/deptrac
What is the reason for moving the repository? There are no announcements anywhere, which suggests that this may be a malicious action
👍6