DevOps | Вопросы собесов
5.2K subscribers
34 photos
824 links
Cайт easyoffer.ru
Реклама @easyoffer_adv
ВП @easyoffer_vp

Тесты t.me/+2P7cpjeyfDVlZjcy
Вакансии t.me/+i5KFWEWJ21hhYWEy
Download Telegram
🤔 Зачем эта работа?

Этот вопрос может иметь различные ответы в зависимости от контекста. Если речь идет о DevOps, то такая работа нужна для упрощения процессов разработки, тестирования, развертывания и мониторинга приложений, что в конечном итоге увеличивает скорость и качество выпуска продуктов, а также повышает удовлетворенность и продуктивность команды.

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10👍41
🤔 Как решить конфликты в гите?

Конфликты в Git возникают, когда два или более коммитов изменяют одну и ту же часть файла по-разному, и система контроля версий не может автоматически объединить эти изменения. Решение конфликтов требует ручного вмешательства.

🚩Шаги для разрешения конфликтов

1⃣Идентификация конфликтов
Когда возникает конфликт, Git сообщает о конфликтных файлах после выполнения команды слияния (git merge) или ребейза (git rebase).
git merge feature-branch


Вывод:
Auto-merging filename
CONFLICT (content): Merge conflict in filename
Automatic merge failed; fix conflicts and then commit the result.


2⃣Разрешение конфликтов вручную
Откройте конфликтный файл в текстовом редакторе. Конфликтные изменения помечены специальными маркерами. Удалите маркеры и решите, какие изменения сохранить. Это может быть одно из изменений или комбинация обоих.
<<<<<<< HEAD
# Изменения из текущей ветки
=======
# Изменения из сливаемой ветки
>>>>>>> feature-branch


Пример разрешения конфликта:
# До разрешения конфликта
<<<<<<< HEAD
Старый текст из текущей ветки
=======
Новый текст из feature-branch
>>>>>>> feature-branch

# После разрешения конфликта
Старый текст из текущей ветки
Новый текст из feature-branch


3⃣Добавление исправленных файлов в индекс
После разрешения конфликтов сохраните изменения и добавьте исправленные файлы в индекс:
git add filename


4⃣Завершение слияния или ребейза

🟠Завершение слияния
После добавления исправленных файлов в индекс завершите слияние, выполнив коммит:
git commit


🟠Завершение ребейза
Если вы выполняли ребейз, завершите процесс
git rebase --continue


Если необходимо прервать процесс ребейза
git rebase --abort


🚩Инструменты для упрощения разрешения конфликтов

🟠Встроенные инструменты редакторов
Многие текстовые редакторы, такие как Visual Studio Code, имеют встроенные инструменты для разрешения конфликтов, которые делают процесс более визуальным и удобным.

🟠Инструменты визуального сравнения (Merge tools)
KDiff3, Meld, Beyond Compare и другие инструменты могут помочь визуально сравнить и разрешить конфликты. Установка и настройка инструмента для слияния
git config --global merge.tool meld   


Запуск инструмента для разрешения конфликтов
git mergetool   


🚩Примеры

1⃣Идентификация конфликта
git merge feature-branch   


Вывод
Auto-merging filename
CONFLICT (content): Merge conflict in filename
Automatic merge failed; fix conflicts and then commit the result.


2⃣Откройте файл filename в текстовом редакторе и разрешите конфликт:
# До разрешения конфликта
<<<<<<< HEAD
Старый текст из текущей ветки
=======
Новый текст из feature-branch
>>>>>>> feature-branch

# После разрешения конфликта
Старый текст из текущей ветки
Новый текст из feature-branch


3⃣Добавление исправленного файла в индекс
git add filename   


4⃣Завершение слияния
git commit   


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8
🤔 Что такое Helm и Helm Charts?

Helm — это менеджер пакетов для Kubernetes, который упрощает развертывание и управление приложениями в кластерах. Helm Charts — это пакеты, содержащие все необходимые ресурсы и конфигурации для развертывания приложений в Kubernetes. Они позволяют параметризовать установку и обеспечивать повторное использование конфигураций через шаблоны.

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚Базу Знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16🔥3
Forwarded from Идущий к IT
Твое резюме на HeadHunter — ОК, если ты видишь это.

HeadHunter сравнивает ключевые навыки в твоем резюме и в вакансии и в момент отклика отображает, насколько % ты соответствуешь требованиям.

Специальный бейджик «Подходит по навыкам на 100%» отображается, если соответствие составляет более 60%.

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

Это важный параметр, так как рекрутерам чаще показываются резюме с лучшим соответствием.

О том, как правильно указывать ключевые навыки и оптимизировать свое резюме я уже рассказывал в этом видео
👍1
🤔 Где можно указать переменные в ролях?

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

🟠defaults/main.yml
Переменные, определенные здесь, имеют самый низкий приоритет. Обычно используются для определения значений по умолчанию.
# roles/role_name/defaults/main.yml
some_variable: "default_value"


🟠vars/main.yml
Переменные, определенные здесь, имеют более высокий приоритет, чем переменные из defaults/main.yml. Используются для переменных, которые не должны быть изменены пользователем.
# roles/role_name/vars/main.yml
some_variable: "fixed_value"


🟠tasks/main.yml
Переменные могут быть определены непосредственно в задачах. Переменные, определенные таким образом, будут видны только в контексте этой задачи.
# roles/role_name/tasks/main.yml
- name: Set a variable
set_fact:
temporary_variable: "value"


🟠meta/main.yml
В файле метаданных можно определять зависимости ролей и использовать переменные для их настройки.
# roles/role_name/meta/main.yml
dependencies:
- role: dependency_role
some_variable: "value"


🟠templates/
Переменные могут использоваться в шаблонах Jinja2.
# roles/role_name/templates/template.j2
The value of some_variable is {{ some_variable }}


🟠handlers/main.yml
Переменные могут использоваться в хендлерах для настройки условий запуска.
# roles/role_name/handlers/main.yml
- name: restart service
service:
name: "{{ service_name }}"
state: restarted


🟠files/
В файлах, используемых в задачах копирования или шаблонизации, можно использовать переменные для указания пути к файлам или другим параметрам.

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

defaults/main.yml
# roles/nginx/defaults/main.yml
nginx_port: 80


vars/main.yml
# roles/nginx/vars/main.yml
nginx_user: "www-data"


tasks/main.yml
 # roles/nginx/tasks/main.yml
- name: Install Nginx
apt:
name: nginx
state: present

- name: Configure Nginx
template:
src: nginx.conf.j2
dest: /etc/nginx/nginx.conf

- name: Start Nginx
service:
name: nginx
state: started
enabled: true


templates/nginx.conf.j2
# roles/nginx/templates/nginx.conf.j2
user {{ nginx_user }};
worker_processes auto;

events {
worker_connections 1024;
}

http {
server {
listen {{ nginx_port }};
server_name localhost;

location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
}
}


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9
🤔 Чем отличаются HTTP и HTTPS

HTTP (HyperText Transfer Protocol) передаёт данные без шифрования, что делает соединение уязвимым для перехвата. HTTPS (HyperText Transfer Protocol Secure) использует SSL/TLS для шифрования данных, обеспечивая защиту конфиденциальной информации. Таким образом, HTTPS более безопасен и предпочтителен для передачи чувствительных данных, например, паролей и финансовой информации.

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍19
🤔 Какая иерархия переменных в ролях?

🚩Иерархия переменных в ролях

🟠defaults/main.yml
Переменные с самым низким приоритетом. Используются для значений по умолчанию, которые могут быть переопределены.
🟠vars/main.yml
Переменные с более высоким приоритетом, чем defaults. Используются для значений, которые не должны быть легко изменены пользователем.
🟠Переменные в задачах (tasks)
Переменные, заданные с помощью set_fact в задачах, имеют более высокий приоритет. Также переменные, определенные в локальном контексте задачи.

🚩Общая иерархия переменных

🟠Переменные из роли
defaults/main.yml в роли.
🟠Переменные плейбука
Переменные из vars плейбука.
🟠Переменные инвентаря
Переменные из статического или динамического инвентаря.
🟠Факты Ansible (gathered facts)
Динамически собранные данные о хостах.
🟠Переменные командной строки
Переменные, переданные через командную строку с помощью флага -e.

🚩Пример

defaults/main.yml
# roles/example/defaults/main.yml
example_variable: "default_value"


vars/main.yml
# roles/example/vars/main.yml
example_variable: "vars_value"


Переменная в плейбуке
# playbook.yml
- hosts: all
roles:
- role: example
example_variable: "playbook_value"


Переменная командной строки
ansible-playbook playbook.yml -e "example_variable=command_line_value"


🚩Приоритет переменных

1⃣defaults/main.yml задает example_variable как "default_value".
2⃣vars/main.yml переопределяет это значение на "vars_value".
3⃣Переменная, указанная в плейбуке, переопределяет это значение на "playbook_value".
4⃣Переменная командной строки, переданная при запуске плейбука, переопределяет все предыдущие значения на "command_line_value".

Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7
🤔 Что такое ELK?

ELK — это стек программ, состоящий из Elasticsearch, Logstash и Kibana, предназначенный для сбора, хранения и визуализации логов. Elasticsearch хранит и индексирует данные, Logstash собирает и обрабатывает их, а Kibana позволяет визуализировать и анализировать. ELK часто используется для мониторинга и анализа больших объемов данных в реальном времени.

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚Базу Знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍19🔥3
🤔 Из чего состоит роль из каких папок из каких файлов?

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

🚩Описание каждой папки и файла

🟠defaults/main.yml
Содержит переменные по умолчанию для роли.
# roles/role_name/defaults/main.yml
some_default_variable: "default_value"


🟠files/
Содержит статические файлы, которые можно копировать на удаленные хосты. Пример: roles/role_name/files/myfile.conf

🟠handlers/main.yml
Содержит хендлеры, которые можно вызывать для выполнения действий, таких как перезапуск службы.
# roles/role_name/handlers/main.yml
- name: restart nginx
service:
name: nginx
state: restarted


🟠meta/main.yml
Содержит метаинформацию о роли, такую как зависимости от других ролей.
# roles/role_name/meta/main.yml
dependencies:
- role: another_role


🟠tasks/main.yml
Содержит основной список задач, которые выполняются при использовании роли.
# roles/role_name/tasks/main.yml
- name: Install nginx
apt:
name: nginx
state: present


🟠templates/
Содержит шаблоны Jinja2, которые могут быть использованы для создания конфигурационных файлов с динамическими значениями.
# roles/role_name/templates/nginx.conf.j2
server {
listen 80;
server_name {{ nginx_server_name }};
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
}


🟠tests/
Содержит файлы для тестирования роли.
# roles/role_name/tests/test.yml
- hosts: localhost
roles:
- role_name


🟠vars/main.yml
Содержит переменные с высоким приоритетом, используемые в роли.
# roles/role_name/vars/main.yml
some_variable: "value"


🟠README.md
Документация роли, содержащая информацию о том, как использовать роль, примеры и описание переменных.

🚩Пример структуры роли

defaults/main.yml
# roles/nginx/defaults/main.yml
nginx_port: 80


vars/main.yml
# roles/nginx/vars/main.yml
nginx_user: "www-data"


tasks/main.yml
# roles/nginx/tasks/main.yml
- name: Install Nginx
apt:
name: nginx
state: present

- name: Configure Nginx
template:
src: nginx.conf.j2
dest: /etc/nginx/nginx.conf

- name: Start Nginx
service:
name: nginx
state: started
enabled: true


templates/nginx.conf.j2
# roles/nginx/templates/nginx.conf.j2
user {{ nginx_user }};
worker_processes auto;

events {
worker_connections 1024;
}

http {
server {
listen {{ nginx_port }};
server_name localhost;

location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
}
}


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍91
🤔 Что такое и нужен ли swap

Swap — это область диска, которую операционная система использует как виртуальную память, расширяя возможности оперативной памяти. Он помогает системе работать стабильно, когда физической памяти не хватает, перенося неактивные данные из RAM на диск. Swap полезен для поддержания работы системы под нагрузкой, но его чрезмерное использование может замедлить производительность из-за более медленного доступа к данным на диске.

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15🔥6
🤔Что такое системные вызовы и системные сигналы?

🚩Системные вызовы

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

🚩Зачем нужны системные вызовы?

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

🚩Примеры системных вызовов

open - Открытие файла.
read - Чтение данных из файла или устройства.
write - Запись данных в файл или устройство.
fork - Создание нового процесса.
exec - Выполнение программы.
kill - Отправка сигнала процессу.
wait - Ожидание завершения дочернего процесса.

#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>

int main() {
int fd = open("example.txt", O_RDONLY);
if (fd == -1) {
perror("open");
return 1;
}

char buffer[100];
ssize_t bytesRead = read(fd, buffer, sizeof(buffer));
if (bytesRead == -1) {
perror("read");
return 1;
}

write(STDOUT_FILENO, buffer, bytesRead);
close(fd);
return 0;
}


🚩Системные сигналы

Это механизмы, используемые в Unix-подобных операционных системах для уведомления процессов о различных событиях. Сигналы могут быть отправлены процессом, ядром ОС или пользователем для уведомления о системных событиях или управления процессами.

🚩Зачем нужны системные сигналы?

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

🚩Примеры системных сигналов

SIGINT (2) - Прерывание (обычно отправляется при нажатии Ctrl+C в терминале).
SIGTERM (15) - Завершение процесса.
SIGKILL (9) - Немедленное завершение процесса.
SIGSTOP (19)- Приостановка процесса.
SIGCONT (18) - Возобновление приостановленного процесса.
SIGSEGV (11) - Сегментационная ошибка (доступ к несуществующей памяти).

#include <stdio.h>
#include <signal.h>
#include <unistd.h>

void handle_signal(int signal) {
if (signal == SIGINT) {
printf("Caught SIGINT, exiting...\n");
_exit(0);
}
}

int main() {
signal(SIGINT, handle_signal);

while (1) {
printf("Running...\n");
sleep(1);
}

return 0;
}


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8👍2
🤔 В чём разница между TCP и UDP

TCP — это протокол с установлением соединения, который гарантирует надежную доставку данных с подтверждением и контролем последовательности. UDP — это протокол без установления соединения, передающий данные быстрее, но без гарантии доставки и контроля порядка. TCP подходит для приложений, требующих надежности (например, HTTP), тогда как UDP используется для быстрой передачи данных, где небольшая потеря пакетов допустима (например, видео- и аудиопотоки).

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18
🤔 На каких ключевых особенностях базируется докер?

🟠Контейнеризация:
Контейнеры Docker предоставляют легковесную и изолированную среду для выполнения приложений. Контейнеры включают все необходимые для работы приложения зависимости и библиотеки, обеспечивая портативность и консистентность между различными средами (разработка, тестирование, производство).

🟠Образы (Images):
Docker образы представляют собой неизменяемые шаблоны, содержащие все, что необходимо для запуска приложения: код, библиотеки, конфигурационные файлы, настройки среды и т.д. Образы можно легко версионировать, передавать и повторно использовать.

🟠Регистры (Registries):
Docker использует регистры для хранения и распространения образов. Docker Hub — это публичный регистр, предоставляемый Docker, но также можно создавать собственные приватные регистры. Это упрощает совместное использование и управление образами.

🟠Изоляция и безопасность:
Docker использует пространства имен (namespaces) и контрольные группы (cgroups) для изоляции процессов и управления ресурсами. Это обеспечивает контейнерам высокий уровень безопасности и предотвращает конфликт между приложениями, работающими в разных контейнерах.

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

🟠Масштабируемость и оркестрация:
Docker предоставляет инструменты для управления контейнерами в масштабе, такие как Docker Swarm и интеграция с Kubernetes. Эти инструменты позволяют автоматизировать развертывание, управление, масштабирование и мониторинг контейнеров в распределенных системах.

🟠Управление жизненным циклом приложений:
Docker упрощает создание, тестирование и развертывание приложений через контейнеры. Это способствует интеграции и непрерывной доставке (CI/CD), так как контейнеры гарантируют, что приложение будет работать одинаково во всех средах.

🚩Создание образа и запуска контейнера

1⃣Dockerfile
# Используем базовый образ
FROM ubuntu:latest

# Устанавливаем необходимые пакеты
RUN apt-get update && apt-get install -y python3

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

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

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


2⃣Сборка образа:
docker build -t my-python-app .


3⃣Запуск контейнера:
docker run -d --name python-app-container my-python-app


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12
🤔 Без какой инструкции не может существовать докер файл?

FROM — это ключевая инструкция в Dockerfile, без которой файл не может существовать. Она указывает базовый образ, от которого начинается сборка контейнера. Любой Dockerfile должен начинаться с этой инструкции.

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12🤔1
🤔 Разница между докером и kubernetes?

🟠Назначение:
Docker: Создание и запуск контейнеров.
Kubernetes: Оркестрация и управление кластерами контейнеров.

🟠Уровень абстракции:
Docker: Работает с контейнерами и образами.
Kubernetes: Работает с подами, службами и другими абстракциями для управления контейнерами.

🟠Масштабируемость:
Docker: Локальное масштабирование контейнеров.
Kubernetes: Автоматическое масштабирование и управление контейнерами на кластерах.

🟠Управление состоянием:
Docker: Не отслеживает состояние контейнеров.
Kubernetes: Автоматически восстанавливает и управляет состоянием контейнеров.

Ставь
👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11
🤔 Зачем нужен OOM

OOM (Out Of Memory) — это механизм, срабатывающий, когда системе не хватает памяти для работы, что приводит к завершению процессов с высокой нагрузкой. Он защищает систему от полного исчерпания памяти, освобождая ресурсы, чтобы другие процессы могли продолжать работать. OOM-killer используется для выбора и завершения наименее критичных процессов, предотвращая полное зависание системы.

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥13👍5
🤔 Как прикрутить авторизацию кластеру?

Для настройки авторизации в кластере Kubernetes можно использовать несколько механизмов, включая роль RBAC (Role-Based Access Control), аутентификацию с использованием токенов, сертификатов, и интеграцию с внешними системами аутентификации, такими как OpenID Connect (OIDC). Рассмотрим основные шаги для настройки RBAC и аутентификации с помощью токенов.

🚩Настройка RBAC (Role-Based Access Control)

1⃣Создание роли (Role) или кластерной роли (ClusterRole)
Роли определяют, какие действия разрешены над какими ресурсами в определенном namespace (Role) или во всем кластере (ClusterRole).
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: read-pods
rules:
- apiGroups: [""]
resources: ["pods"]
verbs: ["get", "list", "watch"]


2⃣Создание роли связывания (RoleBinding) или кластерного связывания роли (ClusterRoleBinding)
Связывание роли привязывает роль к конкретному пользователю, группе или субъекту службы (ServiceAccount).
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: read-pods-binding
subjects:
- kind: User
name: jane
apiGroup: rbac.authorization.k8s.io
roleRef:
kind: ClusterRole
name: read-pods
apiGroup: rbac.authorization.k8s.io


🚩Настройка аутентификации с использованием токенов

Kubernetes поддерживает несколько методов аутентификации, включая использование токенов. Один из способов — использование токенов ServiceAccount.

1⃣Создание ServiceAccount
apiVersion: v1
kind: ServiceAccount
metadata:
name: my-service-account
namespace: default


2⃣Создание связывания роли для ServiceAccount
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: read-pods-binding
namespace: default
subjects:
- kind: ServiceAccount
name: my-service-account
namespace: default
roleRef:
kind: Role
name: read-pods
apiGroup: rbac.authorization.k8s.io


3⃣Получение токена ServiceAccount
kubectl get secret $(kubectl get serviceaccount my-service-account -o jsonpath='{.secrets[0].name}') -o jsonpath='{.data.token}' | base64 --decode


🚩Интеграция с внешними системами аутентификации (OIDC)

Для интеграции с внешними системами аутентификации, такими как OpenID Connect (OIDC), нужно настроить параметры API-сервера Kubernetes.

Настройка API-сервера
Добавьте параметры конфигурации OIDC в команду запуска kube-apiserver
--oidc-issuer-url=https://accounts.google.com \
--oidc-client-id=<client-id> \
--oidc-username-claim=email \
--oidc-groups-claim=groups


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍171
🤔 Какие существуют Probe?

В Kubernetes существуют три типа Probe: `Liveness Probe`, `Readiness Probe` и `Startup Probe`.
`Liveness Probe` проверяет, жив ли контейнер и работает ли он корректно, перезапуская его при необходимости.
`Readiness Probe` определяет, готов ли контейнер обрабатывать запросы, и управляет включением/выключением его из баланса нагрузки.
`Startup Probe` используется для проверки успешного старта контейнера перед выполнением других Probe.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17🔥9
🤔 Как реализовать идеальный деплой кода в production с помощью argocd?

Argo CD — это инструмент для непрерывной доставки (CD) на основе GitOps, который автоматизирует развертывание приложений в Kubernetes. Он позволяет синхронизировать состояние кластера с состоянием в репозитории Git, что обеспечивает декларативное управление инфраструктурой и приложениями.

🚩Настройки идеального деплоя кода в production

1⃣Установка Argo CD
Первым шагом является установка Argo CD в ваш Kubernetes кластер.
kubectl create namespace argocd
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml


2⃣Доступ к интерфейсу Argo CD
После установки необходимо настроить доступ к интерфейсу Argo CD. Вы можете использовать kubectl port-forward для локального доступа:
kubectl port-forward svc/argocd-server -n argocd 8080:443


3⃣Настройка аутентификации
Получите начальный пароль для пользователя admin:
kubectl get pods -n argocd -l app.kubernetes.io/name=argocd-server -o name | cut -d'/' -f 2


4⃣Создание приложения Argo CD
Создайте репозиторий в Git, который будет содержать манифесты Kubernetes для вашего приложения. Репозиторий должен содержать все необходимые файлы для развертывания приложения (например, файлы Deployment, Service, ConfigMap и т.д.).

5⃣Добавление приложения в Argo CD
Используйте веб-интерфейс или командную строку для создания нового приложения в Argo CD, которое будет синхронизироваться с вашим Git-репозиторием.

6⃣Синхронизация и развертывание
Argo CD автоматически синхронизирует состояние вашего кластера с состоянием в Git-репозитории. Если вы включили автоматическую синхронизацию, изменения в репозитории будут автоматически развернуты в кластере.

7⃣Настройка уведомлений
Argo CD можно настроить для отправки уведомлений о статусе развертываний через интеграции с такими инструментами, как Slack, email, или вебхуками.

8⃣Мониторинг и обратная связь
Используйте веб-интерфейс Argo CD для мониторинга состояния приложений и синхронизации. Также можно настроить метрики и мониторинг через Prometheus и Grafana для более глубокого анализа.

Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11
🤔 Что порождает init процесс?

`init` — это первый процесс, который запускается ядром операционной системы после её загрузки.
Он порождается непосредственно ядром как процесс с идентификатором PID 1 и отвечает за инициализацию системы, запуск всех остальных процессов и управление ними.
`init` остаётся родительским процессом для всех орфанных процессов, обеспечивая их завершение или управление.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14🔥7