Make. Build. Break. Reflect.
913 subscribers
116 photos
1 video
121 links
Полезные советы, всратые истории, странные шутки и заметки на полях от @kruchkov_alexandr
Download Telegram
"Вернись обратно"
Именно такую фразу я сказал на стриме своему интерну и он, само собой, её ни черта не понял.
Да чего я выделываюсь, я бы и сам её не понял без контекста😅

Переключиться в предыдущую рабочую директорию
cd -
Переключиться на предыдущий контекст Kubernetes
kubectx -
Переключиться на предыдущий namespace в Kubernetes
kubens -
Переключиться на предыдущую ветку в git
git checkout -

Возможно есть что-то ещё c похожим поведением, но я, в основном, использую только это в работе.

#devops #очевидное #вероятное
👍102
#devops

Когда есть частая задача быстро смотреть содержимое секретов кубера, например пароли:

~/.bashrc (или любой другой шелл)
function kvs() {
kubectl get secret "$1" -o json | jq '.data | map_values(@base64d)'
}


Пример использования:
> kvs grafana-monitoring

{
"admin-password": "pupupu",
"admin-user": "pupupu@pupupu.ded",
"ldap-toml": ""
}


Особенности:
- для тех, кто не любит тяжёлые плагины с kubectl или k9s
- эта функция-пример не учитывает неймспейс, но я всегда юзаю kubens и свичусь всегда, так что для меня ок

*kvs - kube view secret
👍10
#devops

Дотфайлы в репозитории: что, сколько?

В 2025 репо без дотфайлов - как микросервис без контейнера: не взлетает.
Они решают всё: от фильтра мусора до CI/CD и AI IDE.
Сколько их сейчас нужно для стандартного проекта?
5-10 - стандарт для микросервисов.
Меньше - тухло, больше 15 - безусловно перегиб.
Пробежимся по категориям.

1. Игнорирование: убираем мусор
.gitignore - Очевидно, без вопросов. Чистит node_modules, логи, .env. Все знают, что тут.
.dockerignore - Почти все проекты - контейнеры. Фильтрует контекст Docker, чтобы не тащить лишнего. Писал тут https://xn--r1a.website/makebreakreflect/84
.helmignore - Как .dockerignore, но для Helm-чартов. Нужен для репо с чартами или гетерогенных пайплайнов.
.npmignore - Чистит лишнее при публикации npm-пакетов. Только для пакетов.
2. Окружение: переменные
.env - Хранит DATABASE_URL, порты. В .gitignore, без вариантов.
.env.example/development/production - Шаблон(ы) .env для разных окружений.
3. Инструменты: линтеры, форматтеры, хуки
.eslintrc - Линтинг JS/TS. Без него в JS/TS никуда.
.yamllint - Линтинг YAML - K8s, CI/CD. Если YAML много, надо.
.tflint - Линтинг Terraform. Для Terraform-проектов.
.prettierrc - Форматирует код. Почти везде.
.nvmrc - Фиксирует версию Node.js. Для Node.
.huskyrc - Преккоммит-хуки. Автопроверки перед коммитом.
.lintstagedrc - Линтинг только изменённых файлов. Работает с Husky.
.pre-commit-config.yaml - Конфиг для pre-commit. Например запускает линтеры (tflint, ESLint, chehov) перед коммитом. Для автопроверок. Must have как по мне для всех.
5. CI/CD: автоматизация
.github/workflows/*.yml - Пайплайны GitHub Actions. Для GitHub CI/CD.
.gitlab-ci.yml - Пайплайны GitLab. Для GitLab.
6. Тесты и сборка
.jest.config.js - Конфиг Jest для тестов JS/TS.
.tsconfig.json - Конфиг TypeScript. Для TS.
.vite.config.js - Сборка фронта/бэка. Для сложных сборок.
7. IDE/AI IDE: редакторы
.editorconfig - Единые настройки редакторов. Для команд.
.cursorignore - Исключает файлы для AI в Cursor. Для Cursor. Например с локальным .env и паролями.
.cursorrules - правила Cursor IDE
.cursor/rules/*.mdc - Правила для AI Cursor - стиль кода, ограничения. Для Cursor.
.windsurfrules - Правила Windsurf, стиль, ограничения.
.idea/ - Конфиги IntelliJ. Для JetBrains

Так сколько же? Для бизнес аппликейшн среднее значение 6-8:
.gitignore, .dockerignore, .CICD.yaml, .editorconfig, .pre-commit-config.yaml, .IDE.yaml + для стека
Для helm chart 3+:
.gitignore, .helmignore, .pre-commit-config.yaml, .yamllint.yaml
Для terra*/инфры 5+:
.gitignore, .editorconfig, .pre-commit-config.yaml, .IDE.yaml, .tflint, yamllint.yaml

Бежать и пилить все недостающие файлы? Не, конечно не стоит.
Каждый сам должен для себя решить когда и что ему нужно в проектах и постепенно добавлять то, чего не хватает команде и бизнесу. Взросление не происходит мгновенно.
Если не знаете с чего начать, то спросите любую нейронку какие дотфайлы нужны вам для вашего проекта и какой пример содержимого.
В конце концов есть даже генераторы и готовые сборки, например:
https://github.com/PatrickJS/awesome-cursorrules
https://github.com/sanjeed5/awesome-cursor-rules-mdc/
https://github.com/github/gitignore
https://github.com/toptal/gitignore
(искать через "awesome .DOTFILENAME")

У нас уже почти стандарт 7 файлов по минималке везде, кроме хелм чарта.
В монолит монорепе аж 14 дотфайлов. Все в работе.

* Безусловно я мог пропустить часть дотфайлов, либо забыл, либо не работал с ними.
** .CICD.yaml = ямл для того CICD, который на проекте, от трависа до гитхаба/гитлаба.

Update: конечно я забыл про один из главных файлов .tool-versions - просто мастхэв.
Подробно писал про asdf тут https://xn--r1a.website/makebreakreflect/69
👍101😢1🤡1