🤔 Как управлять в GitLab CI чувствительными данными и как их передаёте?
Для передачи чувствительных данных, таких как токены или ключи доступа, используются переменные окружения, которые можно задать в настройках проекта в GitLab. Эти данные защищены и не отображаются в логах выполнения pipeline.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
👍4
🤔 Как найти запущенный процесс?
В операционных системах на базе Unix и Linux для поиска запущенных процессов используются различные команды.
🟠Команда `ps`
Команда
🟠Команда `top`
Команда
🟠Команда `htop`
Команда
🟠Команда `pgrep`
Команда
Пример использования:
🟠Команда `pidof`
Команда
🟠Команда `ps` с фильтрацией
Для более точного поиска можно использовать команду
🟠Команда `lsof`
Команда
🚩Пример поиска конкретного процесса
Допустим, вам нужно найти процесс с именем
Использование
Использование
Использование
🚩Использование `top` или `htop`
Запустите
Ставь 👍 и забирай 📚 Базу знаний
В операционных системах на базе Unix и Linux для поиска запущенных процессов используются различные команды.
🟠Команда `ps`
Команда
ps отображает список текущих процессов. Часто используемые опции:ps aux: Показывает все процессы в системе.ps -ef: Альтернативный формат вывода всех процессов.ps aux | grep <имя_процесса>
🟠Команда `top`
Команда
top показывает список процессов в реальном времени, обновляя его каждые несколько секунд. Это удобно для мониторинга системы и поиска процессов с высокой загрузкой CPU или памяти.top
🟠Команда `htop`
Команда
htop — это улучшенная версия top, предоставляющая более удобный интерфейс для мониторинга процессов. Она должна быть установлена отдельно.sudo apt-get install htop
htop
🟠Команда `pgrep`
Команда
pgrep используется для поиска процессов по имени. Она возвращает идентификаторы (PID) процессов, соответствующих критериям поиска.Пример использования:
pgrep <имя_процесса>
🟠Команда `pidof`
Команда
pidof возвращает идентификаторы (PID) процессов с указанным именем.pidof <имя_процесса>
🟠Команда `ps` с фильтрацией
Для более точного поиска можно использовать команду
ps с фильтрацией через grep.ps aux | grep <имя_процесса> | grep -v grep
🟠Команда `lsof`
Команда
lsof отображает список открытых файлов и может использоваться для поиска процессов, открывающих определенные файлы.sudo lsof -i :<номер_порта>
🚩Пример поиска конкретного процесса
Допустим, вам нужно найти процесс с именем
nginx. Вот несколько способов сделать этоИспользование
psps aux | grep nginx | grep -v grep
Использование
pgreppgrep nginx
Использование
pidofpidof nginx
🚩Использование `top` или `htop`
Запустите
top или htop и найдите процесс nginx в интерактивном режиме.Ставь 👍 и забирай 📚 Базу знаний
👍2
🤔 Что будет со стейтом PersistentVolume после убийства пода?
- Если PVC/Pod удалён, но политика Retain, то PV остаётся.
- Если политика Delete, то PV и физическое хранилище удаляются.
- При Recycle (устаревшая) — том очищается и повторно используется.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
- Если PVC/Pod удалён, но политика Retain, то PV остаётся.
- Если политика Delete, то PV и физическое хранилище удаляются.
- При Recycle (устаревшая) — том очищается и повторно используется.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
🔥3
🤔 Как оптимизировать имедж?
Оптимизация Docker-имеджа (или другого контейнерного имеджа) необходима для уменьшения его размера, ускорения сборки, повышения безопасности и повышения производительности контейнеров.
🟠Используйте минимальную базовую ОС
Почему: Базовый образ сильно влияет на размер. Например,
Как: Замените базовый образ:
🟠Удаляйте ненужные файлы
Почему: Временные файлы, кэш или артефакты сборки занимают место.
Как: Добавьте команды для очистки временных данных:
🟠Используйте многоэтапную сборку (multi-stage builds)
Почему: Стадия сборки может содержать инструменты, которые не нужны в финальном образе.
Как
🟠Минимизируйте количество слоёв
Почему: Каждый
Как: Объединяйте команды:
🟠Не сохраняйте секреты
Почему: Переменные окружения с паролями или токенами могут быть случайно унаследованы.
Как: Используйте Docker secrets или
🟠Кэшируйте зависимости
Почему: Частое скачивание зависимостей замедляет сборку.
Как: Переносите команды загрузки зависимостей ближе к началу:
🟠Проверяйте зависимости
Почему: Устаревшие или ненужные зависимости увеличивают размер и могут содержать уязвимости.
Как: Используйте сканеры вроде Trivy или Docker Scan для анализа.
🚩Пример полного Dockerfile
Ставь 👍 и забирай 📚 Базу знаний
Оптимизация Docker-имеджа (или другого контейнерного имеджа) необходима для уменьшения его размера, ускорения сборки, повышения безопасности и повышения производительности контейнеров.
🟠Используйте минимальную базовую ОС
Почему: Базовый образ сильно влияет на размер. Например,
alpine занимает ~5 МБ, в то время как ubuntu или debian могут превышать сотни мегабайт.Как: Замените базовый образ:
FROM alpine:latest
🟠Удаляйте ненужные файлы
Почему: Временные файлы, кэш или артефакты сборки занимают место.
Как: Добавьте команды для очистки временных данных:
RUN apt-get update && apt-get install -y curl \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
🟠Используйте многоэтапную сборку (multi-stage builds)
Почему: Стадия сборки может содержать инструменты, которые не нужны в финальном образе.
Как
# Стадия сборки
FROM golang:1.20 as builder
WORKDIR /app
COPY . .
RUN go build -o app .
# Финальный образ
FROM alpine:latest
WORKDIR /app
COPY --from=builder /app/app .
CMD ["./app"]
🟠Минимизируйте количество слоёв
Почему: Каждый
RUN, COPY, ADD создаёт новый слой. Слишком много слоёв увеличивают размер образа.Как: Объединяйте команды:
RUN apt-get update && apt-get install -y curl wget \
&& apt-get clean && rm -rf /var/lib/apt/lists/*
🟠Не сохраняйте секреты
Почему: Переменные окружения с паролями или токенами могут быть случайно унаследованы.
Как: Используйте Docker secrets или
.env-файлы и исключайте их из COPYENV APP_ENV=production
🟠Кэшируйте зависимости
Почему: Частое скачивание зависимостей замедляет сборку.
Как: Переносите команды загрузки зависимостей ближе к началу:
COPY go.mod go.sum ./
RUN go mod download
🟠Проверяйте зависимости
Почему: Устаревшие или ненужные зависимости увеличивают размер и могут содержать уязвимости.
Как: Используйте сканеры вроде Trivy или Docker Scan для анализа.
trivy image myimage:latest
🚩Пример полного Dockerfile
# 1. Используем минимальный базовый образ
FROM node:20-alpine as builder
# 2. Устанавливаем зависимости
WORKDIR /app
COPY package*.json ./
RUN npm install
# 3. Копируем код
COPY . .
# 4. Собираем проект
RUN npm run build
# Финальный минимальный образ
FROM nginx:alpine
COPY --from=builder /app/build /usr/share/nginx/html
CMD ["nginx", "-g", "daemon off;"]
Ставь 👍 и забирай 📚 Базу знаний
🤔 Во сколько зонах можно включить репликацию в RDS Aurora?
Aurora поддерживает до 5 read-replicas в разных зонах/регионах с высокой доступностью и кросс-региональным фейловером.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Aurora поддерживает до 5 read-replicas в разных зонах/регионах с высокой доступностью и кросс-региональным фейловером.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
🔥1
🤔 В чём преимущество Kubernetes как платформы?
Это платформа для оркестрации контейнеров, которая упрощает развертывание, управление и масштабирование приложений. Она имеет ряд ключевых преимуществ, которые делают её популярной в DevOps и облачных решениях.
🚩Основные плюсы
➕Автоматизация управления приложениями
Kubernetes автоматически запускает, останавливает и перезапускает контейнеры при сбоях. Поддерживает заданное число экземпляров (реплик) приложений, перезапуская или создавая их при необходимости.
➕Масштабирование (горизонтальное и вертикальное)
Ручное: Легко увеличить или уменьшить количество контейнеров (поды) для приложения. Автоматическое: Используя Horizontal Pod Autoscaler (HPA), Kubernetes добавляет ресурсы при увеличении нагрузки.
➕Высокая доступность (HA)
Kubernetes поддерживает отказоустойчивость: Если один узел (node) выходит из строя, поды перемещаются на другие узлы. Внутренний балансировщик нагрузки распределяет трафик между подами.
➕Платформонезависимость
Kubernetes работает в любых средах: Локальных (например, Minikube). В публичных облаках (AWS, Google Cloud, Azure). В гибридных и on-premise инфраструктурах.
➕Управление конфигурацией и секретами
Kubernetes упрощает работу с настройками: ConfigMaps: Для управления конфигурационными данными.
Secrets: Для безопасного хранения конфиденциальной информации, например, ключей API или паролей.
➕Эффективное использование ресурсов
Kubernetes помогает оптимизировать потребление CPU и памяти: Устанавливая минимальные и максимальные лимиты ресурсов для каждого приложения. Перераспределяя ресурсы между приложениями.
➕Расширяемость
Kubernetes поддерживает плагины и кастомизацию: Сетевые плагины (Calico, Flannel) для настройки сети. Системы мониторинга (Prometheus, Grafana). Операторы для автоматизации сложных задач.
➕Сообщество и экосистема
Kubernetes поддерживается большинством крупных облачных провайдеров. Обширная экосистема инструментов: Helm для управления шаблонами, ArgoCD для GitOps, Istio для сетевых взаимодействий.
🚩Когда особенно полезен?
Разработка микросервисных архитектур. Частые релизы и автоматизация CI/CD. Работа с масштабируемыми приложениями. Использование гибридных или мультиоблачных решений.
Ставь 👍 и забирай 📚 Базу знаний
Это платформа для оркестрации контейнеров, которая упрощает развертывание, управление и масштабирование приложений. Она имеет ряд ключевых преимуществ, которые делают её популярной в DevOps и облачных решениях.
🚩Основные плюсы
➕Автоматизация управления приложениями
Kubernetes автоматически запускает, останавливает и перезапускает контейнеры при сбоях. Поддерживает заданное число экземпляров (реплик) приложений, перезапуская или создавая их при необходимости.
➕Масштабирование (горизонтальное и вертикальное)
Ручное: Легко увеличить или уменьшить количество контейнеров (поды) для приложения. Автоматическое: Используя Horizontal Pod Autoscaler (HPA), Kubernetes добавляет ресурсы при увеличении нагрузки.
➕Высокая доступность (HA)
Kubernetes поддерживает отказоустойчивость: Если один узел (node) выходит из строя, поды перемещаются на другие узлы. Внутренний балансировщик нагрузки распределяет трафик между подами.
➕Платформонезависимость
Kubernetes работает в любых средах: Локальных (например, Minikube). В публичных облаках (AWS, Google Cloud, Azure). В гибридных и on-premise инфраструктурах.
➕Управление конфигурацией и секретами
Kubernetes упрощает работу с настройками: ConfigMaps: Для управления конфигурационными данными.
Secrets: Для безопасного хранения конфиденциальной информации, например, ключей API или паролей.
➕Эффективное использование ресурсов
Kubernetes помогает оптимизировать потребление CPU и памяти: Устанавливая минимальные и максимальные лимиты ресурсов для каждого приложения. Перераспределяя ресурсы между приложениями.
➕Расширяемость
Kubernetes поддерживает плагины и кастомизацию: Сетевые плагины (Calico, Flannel) для настройки сети. Системы мониторинга (Prometheus, Grafana). Операторы для автоматизации сложных задач.
➕Сообщество и экосистема
Kubernetes поддерживается большинством крупных облачных провайдеров. Обширная экосистема инструментов: Helm для управления шаблонами, ArgoCD для GitOps, Istio для сетевых взаимодействий.
🚩Когда особенно полезен?
Разработка микросервисных архитектур. Частые релизы и автоматизация CI/CD. Работа с масштабируемыми приложениями. Использование гибридных или мультиоблачных решений.
Ставь 👍 и забирай 📚 Базу знаний
🤔 Что в Terraform пишут в манифест?
- В .tf-файлах описывают:
- provider — с какой платформой работать;
- resource — что создать (VM, bucket, сеть);
- variable — параметры;
- output — что вернуть;
- module — переиспользуемые блоки.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
- В .tf-файлах описывают:
- provider — с какой платформой работать;
- resource — что создать (VM, bucket, сеть);
- variable — параметры;
- output — что вернуть;
- module — переиспользуемые блоки.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
👍1🔥1
🤔 Какие есть лучшие практики в использовании инструкции add и copy?
🚩Лучшие практики по использованию `COPY` и `ADD`
🟠Используйте `COPY` вместо `ADD`, если не нужно распаковывать архивы
Плохо (избыточное использование
Хорошо (явное распаковывание в
🟠Минимизируйте число `COPY` и `ADD`, чтобы уменьшить размер образа
Плохо (копируем всё без исключений)
Хорошо (копируем только нужные файлы)
Добавьте
🟠Копируйте только изменяемые файлы, чтобы ускорить кэширование
Плохо (изменение кода приводит к пересборке зависимостей)**
Хорошо (сначала зависимости, потом код)
🟠Не используйте `ADD` для загрузки файлов из интернета
Плохо (
🟠Хорошо (используем
Ставь 👍 и забирай 📚 Базу знаний
ADD и COPY — это инструкции Dockerfile, которые копируют файлы в контейнер. Их использование влияет на размер образа, безопасность и производительность сборки. 🚩Лучшие практики по использованию `COPY` и `ADD`
🟠Используйте `COPY` вместо `ADD`, если не нужно распаковывать архивы
Плохо (избыточное использование
ADD) ADD app.tar.gz /app/
Хорошо (явное распаковывание в
RUN) COPY app.tar.gz /tmp/
RUN tar -xzf /tmp/app.tar.gz -C /app && rm /tmp/app.tar.gz
🟠Минимизируйте число `COPY` и `ADD`, чтобы уменьшить размер образа
Плохо (копируем всё без исключений)
COPY . /app
Хорошо (копируем только нужные файлы)
COPY src/ /app/src/
COPY requirements.txt /app/
Добавьте
.dockerignore.git
node_modules
__pycache__
*.log
🟠Копируйте только изменяемые файлы, чтобы ускорить кэширование
Плохо (изменение кода приводит к пересборке зависимостей)**
COPY . /app
RUN pip install -r /app/requirements.txt
Хорошо (сначала зависимости, потом код)
COPY requirements.txt /app/
RUN pip install -r /app/requirements.txt
COPY src/ /app/src/
🟠Не используйте `ADD` для загрузки файлов из интернета
Плохо (
ADD загружает файл, но не кэшируется) ADD https://example.com/file.tar.gz /tmp/
🟠Хорошо (используем
RUN curl + COPY) RUN curl -L -o /tmp/file.tar.gz https://example.com/file.tar.gz
COPY file.tar.gz /app/
Ставь 👍 и забирай 📚 Базу знаний
🤔 Что такое producer в Kafka?
Producer — это отправитель сообщений.
Он:
- сериализует данные;
- определяет топик и партицию;
- отправляет сообщения в Kafka брокер.
Producer может быть синхронным или асинхронным.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Producer — это отправитель сообщений.
Он:
- сериализует данные;
- определяет топик и партицию;
- отправляет сообщения в Kafka брокер.
Producer может быть синхронным или асинхронным.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
🤔 Какие есть три вида монтирования в докере?
В Docker есть три типа монтирования данных в контейнеры:
Volumes (Тома) – рекомендуемый способ хранения данных
Bind Mounts (Привязанные тома) – монтирование локальных файлов/папок
Tmpfs (Временное хранилище в RAM) – для быстрого доступа без записи на диск
🚩Volumes (Тома) – лучший вариант хранения данных
Данные хранятся внутри Docker (
Можно использовать в нескольких контейнерах
Не зависят от файловой системы хоста
Удаление тома (только если он не используется)
🚩Bind Mounts (Привязанные тома) – монтирование папок с хоста
Монтирует директорию с хоста в контейнер
Изменения сразу видны на хосте
Зависит от структуры файлов на хосте
🚩Tmpfs (Временное хранилище в RAM) – быстрый, но не сохраняющийся вариант
Хранит данные в оперативной памяти (RAM)
Очень быстрое чтение/запись
Пропадает при перезапуске контейнера
Пример: создать
Ставь 👍 и забирай 📚 Базу знаний
В Docker есть три типа монтирования данных в контейнеры:
Volumes (Тома) – рекомендуемый способ хранения данных
Bind Mounts (Привязанные тома) – монтирование локальных файлов/папок
Tmpfs (Временное хранилище в RAM) – для быстрого доступа без записи на диск
🚩Volumes (Тома) – лучший вариант хранения данных
Данные хранятся внутри Docker (
/var/lib/docker/volumes) Можно использовать в нескольких контейнерах
Не зависят от файловой системы хоста
sh
docker volume create mydata
docker run -d -v mydata:/app/data --name mycontainer ubuntu
Удаление тома (только если он не используется)
sh
docker volume rm mydata
🚩Bind Mounts (Привязанные тома) – монтирование папок с хоста
Монтирует директорию с хоста в контейнер
Изменения сразу видны на хосте
Зависит от структуры файлов на хосте
sh
docker run -d -v /home/user/logs:/app/logs --name mycontainer ubuntu
🚩Tmpfs (Временное хранилище в RAM) – быстрый, но не сохраняющийся вариант
Хранит данные в оперативной памяти (RAM)
Очень быстрое чтение/запись
Пропадает при перезапуске контейнера
Пример: создать
tmpfs-монтирование для /app/cache sh
docker run -d --tmpfs /app/cache:size=100m --name mycontainer ubuntu
Ставь 👍 и забирай 📚 Базу знаний
👍1
🤔 Какие бывают виды дополнительных контейнеров в поде?
Дополнительные контейнеры включают init-контейнеры для подготовки среды и sidecar-контейнеры для дополнительных задач, таких как логирование или прокси.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
👍1