DevOps | Вопросы собесов

channel icon
Сайт: easyoffer.ru

Условия размещения

Цена за 48 часов в ленте 3350,00
Цена за 1 час закрепления N/A
Взаимопиар Нет
Дополнительные условия рекламы Отсутствуют
+11
4 551
подписчиков
+7
~1.1k
охват 1 публикации
0
~3
постов / день
+0,1%
24,2%
ERR % ?

Статистика

Последние публикации

DevOps | Вопросы собесов
20 января 2025 г. 19:10
🤔🤔 Что такое Kubernetes — Open Standards (OCI, CRI, CNI, CSI, SMI, CPI)?

1. OCI (Open Container Initiative): стандарты для контейнеров и их выполнения.
2. CRI (Container Runtime Interface): интерфейс взаимодействия Kubernetes с контейнерными движками.
3. CNI (Container Network Interface): стандарты сетевой интеграции контейнеров.
4. CSI (Container Storage Interface): интерфейс для подключения различных систем хранения данных.
5. SMI (Service Mesh Interface): стандарт взаимодействия между сервисами в сетях.
6. CPI (Cloud Provider Interface): взаимодействие Kubernetes с облачными провайдерами.

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 📚 Базу знанийБазу знаний
DevOps | Вопросы собесов
20 января 2025 г. 12:10
🤔 Как бы вы настроили уведомления для сервисов которые находятся без интернета полностью локализованы закрыты от всего извне?Как бы вы настроили уведомления для сервисов которые находятся без интернета полностью локализованы закрыты от всего извне?

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

🚩Локальный почтовый сервер (SMTP)

1⃣Установка
sudo apt update
sudo apt install postfix


2⃣Настройка
Отредактируйте /etc/postfix/main.cf
myhostname = local.example.com
mydomain = example.com
myorigin = $mydomain
inet_interfaces = all
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
relay_domains = $mydestination


3⃣Перезапуск Postfix
sudo systemctl restart postfix   


4⃣Проверка
echo "Test email" | mail -s "Test Subject" user@example.com


🚩Локальный мессенджер (Mattermost)

1⃣Установка Mattermost
Следуйте [документации](https://docs.mattermost.com/install/self-managed-install.html).

2⃣Настройка
Создайте каналы и пользователей.

3⃣Интеграция с мониторингом
Используйте веб-хуки Mattermost для уведомлений.

🚩Системы управления инцидентами (Zabbix)

1⃣Установка Zabbix
Следуйте [документации](https://www.zabbix.com/download).

2⃣Настройка
Настройте хосты, триггеры и действия.

3⃣Настройка уведомлений
Медиатипы: Настройте Email и SMS. Пользователи: Создайте пользователей и уведомления.

🚩Локальный стек мониторинга (Prometheus, Alertmanager)

1⃣Установка Prometheus
wget https://github.com/prometheus/prometheus/releases/download/v2.26.0/prometheus-2.26.0.linux-amd64.tar.gz
tar xvf prometheus-2.26.0.linux-amd64.tar.gz
cd prometheus-2.26.0.linux-amd64
./prometheus --config.file=prometheus.yml


2⃣Установка Alertmanager
wget https://github.com/prometheus/alertmanager/releases/download/v0.21.0/alertmanager-0.21.0.linux-amd64.tar.gz
tar xvf alertmanager-0.21.0.linux-amd64.tar.gz
cd alertmanager-0.21.0.linux-amd64
./alertmanager --config.file=alertmanager.yml


3⃣Настройка алертинга в Prometheus
groups:
- name: example-alerts
rules:
- alert: HighCPUUsage
expr: avg_over_time(node_cpu_seconds_total{mode="idle"}[5m]) < 20
for: 2m
labels:
severity: critical
annotations:
summary: "High CPU usage detected"
description: "CPU usage is above 80% for more than 2 minutes"


4⃣Настройка Alertmanager
global:
smtp_smarthost: 'localhost:25'
smtp_from: 'alertmanager@local.example.com'
route:
receiver: 'email-notifications'
receivers:
- name: 'email-notifications'
email_configs:
- to: 'admin@local.example.com'
send_resolved: true


Ставь 👍👍 и забирай 📚 📚 Базу знанийБазу знаний
DevOps | Вопросы собесов
20 января 2025 г. 11:00
DevOps | Вопросы собесов
20 января 2025 г. 11:00
💣 Хардкорный тест для ДевОпсов!Хардкорный тест для ДевОпсов!

➡️Пройдите полный тест из 25 вопросов и узнайте, сможете ли вы осилить онлайн-курс «DevOps практики и инструменты» от OTUS (четверть абитуриентов не могут пройти тест).

💻 В программе курса — все актуальные инструменты, необходимые для роста до ДевОпса. Работодатели - партнёры OTUS уже ждут выпускников!

➡️ ПРОЙТИ ТЕСТПРОЙТИ ТЕСТ

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
DevOps | Вопросы собесов
19 января 2025 г. 19:10
🤔🤔 Сколько мастеров в Kubernetes должно быть и почему?

Минимум три мастера для обеспечения высокой доступности (HA).
1. Три мастера позволяют достичь кворума в распределённой системе хранения данных (etcd).
2. Это защищает от сбоев одного или двух мастеров и гарантирует стабильность кластера.

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 📚 Базу знанийБазу знаний
DevOps | Вопросы собесов
19 января 2025 г. 12:10
🤔 Как осуществляли деплой на kubernetes?Как осуществляли деплой на kubernetes?

Развертывание приложения на Kubernetes включает несколько шагов, таких как подготовка конфигурационных файлов, настройка окружения и выполнение команд для развертывания.

🚩Шаги для деплоя

1⃣Подготовка Docker-образа
Первый шаг — подготовить Docker-образ приложения. Пример Dockerfile
# Используем официальный образ Python
FROM python:3.8-slim

# Устанавливаем рабочую директорию
WORKDIR /app

# Копируем все файлы в контейнер
COPY . /app

# Устанавливаем зависимости
RUN pip install --no-cache-dir -r requirements.txt

# Определяем команду запуска
CMD ["python", "app.py"]


Создание и загрузка Docker-образа в Docker Hub
docker build -t username/myapp:latest .
docker push username/myapp:latest


2⃣Создание конфигурационных файлов Kubernetes
Для развертывания приложения на Kubernetes, необходимо создать манифесты для деплоя (Deployment), сервиса (Service) и других необходимых ресурсов. Deployment
apiVersion: apps/v1
kind: Deployment
metadata:
name: myapp-deployment
spec:
replicas: 3
selector:
matchLabels:
app: myapp
template:
metadata:
labels:
app: myapp
spec:
containers:
- name: myapp
image: username/myapp:latest
ports:
- containerPort: 80


Service
apiVersion: v1
kind: Service
metadata:
name: myapp-service
spec:
type: LoadBalancer
selector:
app: myapp
ports:
- protocol: TCP
port: 80
targetPort: 80


3⃣Применение конфигураций
Применение манифестов для создания ресурсов в кластере Kubernetes:
kubectl apply -f deployment.yaml
kubectl apply -f service.yaml


4⃣Проверка статуса
Проверка статуса развертывания и сервисов:
kubectl get deployments
kubectl get services
kubectl get pods


5⃣Настройка автоскейлинга (по желанию)
Для обеспечения высокой доступности и масштабируемости можно настроить горизонтальное авто-масштабирование:
kubectl autoscale deployment myapp-deployment --cpu-percent=50 --min=1 --max=10


6⃣Обновление приложения
Для обновления приложения необходимо изменить образ в деплойменте и применить изменения:
Обновление Docker-образа
docker build -t username/myapp:v2 .
docker push username/myapp:v2


Обновление манифеста Deployment
spec:
template:
spec:
containers:
- name: myapp
image: username/myapp:v2


Применение изменений
kubectl apply -f deployment.yaml


🚩Пример полного пайплайна

Пример .gitlab-ci.yml для автоматизации деплоя
stages:
- build
- push
- deploy

variables:
DOCKER_IMAGE: $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG

build:
stage: build
script:
- docker build -t $DOCKER_IMAGE .
only:
- main

push:
stage: push
script:
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
- docker push $DOCKER_IMAGE
only:
- main

deploy:
stage: deploy
script:
- kubectl apply -f deployment.yaml
- kubectl apply -f service.yaml
only:
- main


Ставь 👍👍 и забирай 📚 📚 Базу знанийБазу знаний
DevOps | Вопросы собесов
18 января 2025 г. 19:10
🤔🤔 Чем отличается Docker от KVM?

1. Docker: контейнеризация, обеспечивающая изоляцию на уровне ОС, с минимальным оверхедом.
2. KVM: гипервизор, обеспечивающий изоляцию на уровне аппаратного обеспечения через полные виртуальные машины.
3. Docker быстрее, а KVM обеспечивает более строгую изоляцию и подходит для более сложных сред.

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 📚 Базу знанийБазу знаний
DevOps | Вопросы собесов
18 января 2025 г. 12:10
🤔 Что нужно сделать чтобы после того как вы создали репозиторий с этим репозиторием можно было работать?Что нужно сделать чтобы после того как вы создали репозиторий с этим репозиторием можно было работать?

После создания нового репозитория, будь то локальный или удаленный, необходимо выполнить несколько шагов для начала полноценной работы с ним. Эти шаги включают инициализацию репозитория, настройку удаленного репозитория, добавление файлов, коммит и настройку синхронизации с удаленным репозиторием.

🚩Основные шаги

1⃣Создание нового репозитория
Перейдите на GitHub и войдите в свой аккаунт. Нажмите на кнопку "New" для создания нового репозитория. Введите имя репозитория, описание (опционально), выберите публичный или приватный доступ, инициализируйте с README (если нужно). Нажмите "Create repository".

2⃣Клонирование или инициализация репозитория
Если репозиторий уже существует на GitHub
git clone https://github.com/yourusername/your-repository.git
cd your-repository


Если вы создаете новый локальный репозиторий
mkdir your-repository
cd your-repository
git init


3⃣Добавление файлов и коммит начального состояния
Создайте или добавьте файлы
echo "# Your Repository" > README.md   


Добавьте файлы в индекс
git add README.md   


Сделайте первый коммит
git commit -m "Initial commit"   


4⃣Настройка удаленного репозитория
Если вы инициализировали локальный репозиторий, вам нужно настроить удаленный репозиторий.
git remote add origin https://github.com/yourusername/your-repository.git


5⃣Пуш изменений в удаленный репозиторий
Отправьте ваши изменения в удаленный репозиторий
git push -u origin master


🚩Дополнительные шаги для совместной работы

1⃣Создание веток
Для разработки новых функций или исправлений багов рекомендуется создавать отдельные ветки
git checkout -b feature-branch   


2⃣Создание Pull Request (PR)
После завершения работы в ветке создайте Pull Request на GitHub для обзора и слияния.

3⃣Настройка файлов `.gitignore`
Добавьте файл .gitignore для исключения ненужных файлов из коммитов.
echo "node_modules/" > .gitignore
git add .gitignore
git commit -m "Add .gitignore"


4⃣4⃣Настройка CI/CD
Подключите сервисы Continuous Integration/Continuous Deployment, такие как GitHub Actions, Travis CI или Jenkins, для автоматизации тестирования и развертывания.
# Пример файла .github/workflows/ci.yml для GitHub Actions
name: CI

on: [push, pull_request]

jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up Node.js
uses: actions/setup-node@v2
with:
node-version: '14'
- run: npm install
- run: npm test


Ставь 👍👍 и забирай 📚 📚 Базу знанийБазу знаний
DevOps | Вопросы собесов
17 января 2025 г. 19:10
🤔 Как посчитать размер ноды в Kubernetes?

1. Используйте команду kubectl describe node для просмотра доступной памяти и CPU.
2. Ресурсы также можно получить через метрики (kubectl top nodes).

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 📚 Базу знанийБазу знаний
DevOps | Вопросы собесов
17 января 2025 г. 12:10
🤔 Удалил файлы, но место не очищается, в чем дело?Удалил файлы, но место не очищается, в чем дело?

Если вы удалили файлы, но место на диске не освободилось, это может происходить по нескольким причинам.

🚩Файл все еще используется процессом

Если файл удален, но он открыт каким-либо процессом, его содержимое остается в памяти или файловой системе до завершения работы этого процесса. Это называется "удаление с дескриптором".

🟠Как проверить:
Используйте команду lsof (list open files), чтобы найти процессы, удерживающие файл
lsof | grep deleted


🟠Как исправить
Перезапустите процесс или завершите его с помощью kill:
kill -9 


🚩Файл удален, но он находился в другом файловом пространстве

Например:
- Файл был удален внутри Docker-контейнера, но место занято в образе.
- Файл находился на смонтированном диске, и удаление произошло в другом контексте.

🟠Как проверить
Убедитесь, что вы работаете в правильной файловой системе:
df -h


🟠Как исправить
Убедитесь, что удаление происходит в нужной директории или файловой системе.

🚩Файл был удален из директории, но находится в другой ссылке (hard link)

Если файл имеет несколько жестких ссылок, удаление одного из них не освободит место до тех пор, пока не удалены все ссылки.

🟠Как проверить
Используйте команду find, чтобы найти оставшиеся ссылки:
find / -samefile <имя_файла>


🟠Как исправить
Удалите все ссылки на файл.

🚩Файл был удален, но находился в файловой системе с квотой

Если используется файловая система с ограничением (например, квоты пользователей или групп), возможно, квота пользователя исчерпана, и это мешает очистке.

🟠Как проверить
Проверьте квоты:
quota -u 


🟠Как исправить
Убедитесь, что квоты настроены правильно, или освободите больше места.

🚩Кэшированные данные или временные файлы

Иногда удаленные файлы остаются в виде кэша, временных данных или не удаляются из корзины.

🟠Как проверить
Очистите кэш или проверьте корзину. Например, для очистки временных файлов
sudo du -sh /tmp
sudo rm -rf /tmp/*


🟠Как исправить
Удалите временные файлы, очистите кэш:
sudo sync && sudo echo 3 > /proc/sys/vm/drop_caches


Ставь 👍👍 и забирай 📚 📚 Базу знанийБазу знаний
DevOps | Вопросы собесов
16 января 2025 г. 19:10
🤔🤔 Как выглядит идеальный конвейер?

1. CI/CD: автоматизация сборки, тестирования, деплоя.
2. Тесты: юнит, интеграционные и end-to-end тесты.
3. Мониторинг: проверка производительности и логов после релиза.
4. Масштабируемость: возможность быстрого изменения и расширения инфраструктуры.

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 📚 Базу знанийБазу знаний
DevOps | Вопросы собесов
16 января 2025 г. 12:10
🤔 Когда вы создаёте файл какие права создаются по умолчанию?Когда вы создаёте файл какие права создаются по умолчанию?

Права доступа по умолчанию зависят от базовых прав доступа и значения umask. Базовые права доступа — это значения, которые система использует для определения разрешений перед применением маски umask.

🟠Файлы: 666 (rw-rw-rw-)
Это означает, что по умолчанию все пользователи могут читать и записывать в файл.

🟠Каталоги: 777 (rwxrwxrwx)
Это означает, что по умолчанию все пользователи могут читать, записывать и выполнять (заходить) в каталог.

🚩Значение umask: 022

Это маска, которая определяет, какие права будут отключены при создании нового файла или каталога. Значение umask указывается в восьмеричной системе счисления.

🟠Создание файла
Базовые права доступа: 666
Значение umask: 022
Окончательные права доступа: 666 - 022 = 644 (rw-r--r--)

🟠Создание каталога
Базовые права доступа: 777
Значение umask: 022
Окончательные права доступа: 777 - 022 = 755 (rwxr-xr-x)

🚩Создание файла с umask 0022

1⃣Установка umask
umask 0022   


2⃣Создание файла
touch myfile   


3⃣Проверка прав доступа
ls -l myfile   


Вывод
Права доступа: 644 (rw-r--r--)
-rw-r--r-- 1 user user 0 Jul 26 12:00 myfile    


🚩Создание каталога с umask 0027

1⃣Установка umask
umask 0027   


2⃣Создание каталога
mkdir mydir   


3⃣Проверка прав доступа
ls -ld mydir   


Вывод
Права доступа: 750 (rwxr-x---)
drwxr-x--- 2 user user 4096 Jul 26 12:00 mydir     


🚩Дополнительные замечания

🟠umask в скриптах
Вы можете установить umask в скрипте для задания прав доступа по умолчанию для всех создаваемых файлов и каталогов.
#!/bin/bash
umask 027
touch file1
mkdir dir1


🟠Проверка прав доступа в разных ситуациях
Для файлов: По умолчанию права доступа 666 минус umask.
Для каталогов: По умолчанию права доступа 777 минус umask.

Ставь 👍👍 и забирай 📚 📚 Базу знанийБазу знаний
DevOps | Вопросы собесов
15 января 2025 г. 19:10
🤔🤔 Этапы загрузки в Linux и загрузчики:

1. BIOS/UEFI: выполняет начальную инициализацию оборудования.
2. Загрузчик (GRUB, LILO): выбирает и загружает ядро ОС.
3. Ядро Linux: инициализирует устройства, монтирует корневую файловую систему.
4. Init/Systemd: запускает пользовательские процессы и сервисы.

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 📚 Базу знанийБазу знаний
DevOps | Вопросы собесов
15 января 2025 г. 12:10
🤔🤔 В чем разница между IaaS, PaaS и SaaS? В чем разница между IaaS, PaaS и SaaS?

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

🚩IaaS (Infrastructure as a Service)

IaaS предоставляет инфраструктуру как услугу. Пользователь получает доступ к виртуализированным вычислительным ресурсам, таким как серверы, хранилища, сети и операционные системы.

🟠Что предоставляет
Виртуальные машины, диски, сетевые ресурсы и другие элементы инфраструктуры.

🟠Примеры провайдеров
AWS EC2, Google Compute Engine, Microsoft Azure VMs.

🟠Что делает пользователь
Настраивает операционные системы, устанавливает ПО, управляет сетью и обеспечивает безопасность.

🟠Пример использования
Компания разворачивает свои приложения в облаке, используя виртуальные машины и настройку сети по своим потребностям.

🚩🚩Плюсы и минусы

➕Высокая гибкость и контроль.
➕Подходит для создания кастомных решений.
➖Требуется больше времени и усилий на настройку и управление.

🚩PaaS (Platform as a Service)

PaaS предоставляет платформу для разработки, тестирования и развертывания приложений. Провайдер управляет инфраструктурой, а пользователь сосредотачивается на написании и запуске приложений.

🟠Что предоставляет
Среду для разработки, включая операционную систему, базы данных, серверы приложений, инструменты разработки и т. д.

🟠Примеры провайдеров
AWS Elastic Beanstalk, Google App Engine, Heroku, Microsoft Azure App Service.

🟠Что делает пользователь
Пишет код, тестирует приложения и развертывает их на платформе.

- Пример использования:
Разработчики используют платформу для быстрого развертывания веб-приложений без необходимости управления серверами и сетями.

🚩🚩Плюсы и минусы

➕Быстрое развертывание приложений.
➕Не нужно беспокоиться об управлении инфраструктурой.
➖Ограниченная гибкость по сравнению с IaaS.
➖Зависимость от поставщика платформы.

🚩SaaS (Software as a Service)

SaaS предоставляет готовые приложения как услугу. Пользователь просто использует программное обеспечение через интернет.

🟠Что предоставляет
Полностью готовое приложение, доступное через браузер или клиентскую программу.

🟠Примеры провайдеров
Gmail, Microsoft 365, Google Drive, Salesforce, Slack.

🟠Что делает пользователь
Пользуется функциональностью приложения, не заботясь о технической стороне.

🟠Пример использования
Организация использует Google Workspace для корпоративной электронной почты и совместной работы.

🚩🚩Плюсы и минусы

➕Простота использования.
➕Не требуется установка и управление ПО.
➖Ограниченная кастомизация.
➖Данные находятся на стороне провайдера.

Ставь 👍👍 и забирай 📚 📚 Базу знанийБазу знаний
DevOps | Вопросы собесов
14 января 2025 г. 19:10
🤔 В чем разница между PVC и Full Stack?

1. PVC (Persistent Volume Claim): запрос на выделение хранилища в Kubernetes, связанный с конкретным подом.
2. Full Stack: общий термин, описывающий весь стек технологий разработки, включая фронтенд, бэкенд и инфраструктуру.

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 📚 Базу знанийБазу знаний
DevOps | Вопросы собесов
14 января 2025 г. 12:10
🤔🤔🤔 Сколько часов живёт один вал Prometeus CICD? Сколько часов живёт один вал Prometeus CICD?

Вал (или "валидность данных") в Prometheus определяется настройками временного диапазона хранения данных. Обычно данные в Prometheus живут столько, сколько задано в параметре --storage.tsdb.retention.time, который устанавливает период хранения временных рядов.

🟠По умолчанию
Если не указать параметр --storage.tsdb.retention.time, данные хранятся 15 дней. Это соответствует 360 часам.

🟠Как изменить время жизни данных
Вы можете настроить период хранения данных, передав значение параметра при запуске Prometheus:

CLI-параметр:
prometheus --storage.tsdb.retention.time=30d


🟠Конфигурационный файл
Если Prometheus запускается как часть системы CI/CD через Docker Compose, Kubernetes или другой инструмент, параметр указывается в соответствующем разделе.
services:
prometheus:
image: prom/prometheus
command:
- '--storage.tsdb.retention.time=7d' # 7 дней (168 часов)


🚩Почему это важно?

🟠Оптимизация дискового пространства
Большие периоды хранения требуют больше дискового пространства. Если валидация данных больше не нужна, лучше очищать старые временные ряды.
🟠Баланс производительности
Длительное хранение может замедлить обработку запросов, особенно если используемые метрики застарелые или редко запрашиваются.
🟠Потребности CI/CD
Для CI/CD-пайплайнов обычно достаточно короткого периода (например, 7–15 дней), чтобы сохранять данные релевантными и свежими.

🟠Пример настройки в CI/CD контексте
Если вы хотите, чтобы метрики для CI/CD жили 12 часов (подходящий срок для проверки тестов и сборок), настройте
prometheus:
image: prom/prometheus
command:
- '--storage.tsdb.retention.time=12h'


🚩**Как проверить текущий срок хранения?**

🟠В интерфейсе Prometheus
Перейдите на страницу /status/status/flags, где можно увидеть значение параметра --storage.tsdb.retention.time.
🟠Через командную строку
Проверьте журнал запуска Prometheus или конфигурационный файл.

Ставь 👍👍 и забирай 📚 📚 Базу знанийБазу знаний
DevOps | Вопросы собесов
13 января 2025 г. 19:10
🤔🤔 Что за компонент kubelet?

Это агент, работающий на каждой ноде Kubernetes.
1. Он управляет запуском, мониторингом и завершением контейнеров через взаимодействие с контейнерным рантаймом.
2. Также отвечает за регистрацию ноды в кластере и выполнение инструкций от мастера.

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 📚 Базу знанийБазу знаний
DevOps | Вопросы собесов
13 января 2025 г. 12:10
🤔🤔🤔 Как в docker compose вместо yaml файла использовать json файл? Как в docker compose вместо yaml файла использовать json файл?

Docker Compose поддерживает использование JSON-файлов вместо стандартного YAML-файла. Формат JSON полностью совместим с YAML, так как YAML является надмножеством JSON. Для этого достаточно создать JSON-файл с описанием конфигурации контейнеров и передать его с помощью опции -f.

🚩Шаги по использованию

🟠Создайте JSON-файл конфигурации
Файл должен содержать описание сервисов в формате JSON. Например, вместо YAML
version: "3.9"
services:
web:
image: nginx
ports:
- "80:80"


В формате JSON будет так
{
"version": "3.9",
"services": {
"web": {
"image": "nginx",
"ports": ["80:80"]
}
}
}


🟠Запустите Docker Compose с этим файлом
Используйте флаг -f, чтобы указать Docker Compose, какой файл использовать
docker-compose -f docker-compose.json up


🟠Проверка работы
Вы можете проверить статус контейнеров, как обычно:
docker-compose -f docker-compose.json ps


🚩Почему использовать JSON?

🟠Совместимость
JSON часто используется в API, CI/CD-пайплайнах и других инструментах, которые могут генерировать конфигурации автоматически.
🟠Простота обработки
JSON легко парсить программно, что может быть полезно в скриптах и интеграциях.
🟠Стандартизация
Некоторые команды и проекты могут предпочитать JSON как более строгий и распространенный формат.

🚩Пример использования

1⃣Создайте файл docker-compose.json
{
"version": "3.8",
"services": {
"app": {
"image": "python:3.9",
"volumes": ["./app:/app"],
"working_dir": "/app",
"command": "python app.py"
}
}
}


2⃣Запустите
docker-compose -f docker-compose.json up


Ставь 👍👍 и забирай 📚 📚 Базу знанийБазу знаний
DevOps | Вопросы собесов
12 января 2025 г. 19:10
🤔🤔 Чем контейнер отличается от пода?

1. Контейнер: единичная изолированная среда с приложением и его зависимостями.
2. Под (Pod): минимальная единица деплоя в Kubernetes, содержащая один или несколько контейнеров, которые разделяют сетевые и хранилищные ресурсы.

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 📚 Базу знанийБазу знаний
DevOps | Вопросы собесов
12 января 2025 г. 12:10
🤔🤔🤔 Что возвращает функция в bash? Что возвращает функция в bash?

В Bash функция возвращает код завершения (exit status), который представляет собой числовое значение от 0 до 255. Это значение используется для указания успешного или неуспешного выполнения функции. По умолчанию, если явно не указано возвращаемое значение, функция возвращает код завершения последней выполненной команды внутри нее.

🚩Как возвращать значения из функции?

🟠Код завершения (exit status)
Чтобы явно задать код завершения функции, используется команда return.
my_function() {
if [[ $1 -gt 0 ]]; then
return 0 # Успех
else
return 1 # Ошибка
fi
}

my_function 5
echo $? # Выведет 0 (успех)


🟠Вывод данных через `echo`
Для передачи данных из функции (например, строки или числа) можно использовать echo. Вывод можно перехватить через подстановку команд $()
my_function() {
echo "Hello, $1!"
}

result=$(my_function "world")
echo "$result" # Выведет "Hello, world!"


🟠Изменение глобальных переменных
Функция может менять значения глобальных переменных, которые затем используются за ее пределами
my_function() {
result=$(( $1 + $2 ))
}

my_function 3 7
echo $result # Выведет 10


🚩Почему это важно?

🟠Код завершения
Используется в сценариях для проверки, выполнилась ли функция успешно. Значение 0 обычно означает успех, а любое другое число — ошибку.

🟠Вывод через `echo`
Удобен для передачи данных из функции.

🟠Изменение переменных
Полезно, если функция должна сохранять данные для дальнейшей обработки.

# Функция проверки файла
check_file() {
if [[ -f $1 ]]; then
echo "Файл $1 существует."
return 0
else
echo "Файл $1 не найден."
return 1
fi
}

# Вызов функции
check_file "/etc/passwd"
status=$? # Сохраняем код завершения
if [[ $status -eq 0 ]]; then
echo "Продолжаем работу..."
else
echo "Останавливаемся из-за ошибки."
fi


Ставь 👍👍 и забирай 📚 📚 Базу знанийБазу знаний