DevOps | Вопросы собесов
5.28K subscribers
27 photos
894 links
Download Telegram
🤔 Как будут называться поды в ReplicaSet и в StatefulSet?

Поды ReplicaSet получают случайное имя с хешем — например, myapp-6c79f8fd58-k9xpf. А поды StatefulSet получают предсказуемые имена — например, db-0, db-1, db-2, где номер отражает порядок.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥1
🤔 Как разделять элементы CI и CD в jenkins?

В Jenkins CI (Continuous Integration) и CD (Continuous Delivery/Deployment) можно разделять на разные стадии (stages) или отдельные пайплайны. Это повышает гибкость, упрощает отладку и делает процесс масштабируемым.

🚩Разделение CI и CD внутри одного `Jenkinsfile`

Можно использовать разные стадии (stages) в Jenkinsfile:
Пример:
pipeline {
agent any

stages {
stage('CI: Build & Test') {
steps {
echo "📦 Сборка и тестирование кода"
sh 'mvn clean package' // Сборка
sh 'mvn test' // Юнит-тесты
}
}

stage('CI: Code Analysis') {
steps {
echo "🧐 Анализ кода (SonarQube)"
sh 'sonar-scanner'
}
}

stage('CD: Staging Deployment') {
steps {
echo "🚀 Деплой на стейджинг"
sh 'kubectl apply -f k8s/staging.yaml'
}
}

stage('CD: Production Deployment') {
when {
branch 'main' // Только для main-ветки
}
steps {
echo "🔥 Деплой в прод"
sh 'kubectl apply -f k8s/production.yaml'
}
}
}
}


🚩Отдельные пайплайны для CI и CD

Можно разделить CI и CD на разные пайплайны, используя Jenkins Multibranch Pipeline.
CI-пайплайн (Jenkinsfile.ci)
pipeline {
agent any
stages {
stage('Build') {
steps {
sh 'mvn clean package'
}
}
stage('Test') {
steps {
sh 'mvn test'
}
}
}
post {
success {
archiveArtifacts artifacts: '**/target/*.jar'
build job: 'CD-Pipeline', wait: false // Запуск CD после успешного CI
}
}
}


CD-пайплайн (Jenkinsfile.cd)
pipeline {
agent any
stages {
stage('Deploy to Staging') {
steps {
sh 'kubectl apply -f k8s/staging.yaml'
}
}
stage('Manual Approval') {
steps {
input message: "Deploy to Production?"
}
}
stage('Deploy to Production') {
steps {
sh 'kubectl apply -f k8s/production.yaml'
}
}
}
}


🚩Использование `Jenkins Shared Library` для разделения логики

Если много пайплайнов, лучше вынести CI/CD-логику в общую библиотеку (vars/ci.groovy, vars/cd.groovy).
Пример CI (vars/ci.groovy)
def call() {
pipeline {
agent any
stages {
stage('Build & Test') {
steps {
sh 'mvn clean package && mvn test'
}
}
}
}
}


Пример CD (vars/cd.groovy)
def call() {
pipeline {
agent any
stages {
stage('Deploy') {
steps {
sh 'kubectl apply -f k8s/production.yaml'
}
}
}
}
}


Jenkinsfile с использованием библиотек
@Library('my-shared-library') _

ci() // Запуск CI
cd() // Запуск CD


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
💊1
🤔 Как получить body запрос?

Если используется Flask, тело запроса можно получить с помощью request.get_json() — если это JSON-запрос,
request.data — если нужны байты тела, или request.form — если данные отправлены в формате формы. Всё зависит от Content-Type запроса. Для чтения обычного тела можно также использовать request.get_data().

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