Библиотека девопса | DevOps, SRE, Sysadmin
10.3K subscribers
1.38K photos
71 videos
4 files
2.59K links
Все самое полезное для девопсера в одном канале.

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/25874ec4

Для обратной связи: @proglibrary_feeedback_bot

РКН: https://gosuslugi.ru/snet/6798b4e4509aba565
Download Telegram
#вопросы_с_собеседований
Что такое inode в Linux?

Индексный дескриптор в файловой системе, который хранит метаданные о файлах, за исключением имени файла. В дескрипторе хранится: длина файла в байтах, id устройства с файлом, id пользователя владельца файла, id группы файла, режим файла (права доступа), timestamp последнего изменения файла, счётчик хардлинков, указатели на блоки файла.
🔥211
#вопросы_с_собеседований
Напишите политику для AWS S3 бакета, которая разрешает доступ только с определенных IP адресов.

{
"Id": "AllowFromSourceIP",
"Version": "2012-10-17",
"Statement": [
{
"Sid": "SourceIP",
"Action": "s3:*",
"Effect": "Deny",
"Resource": [
"arn:aws:s3:::demo-bucket",
"arn:aws:s3:::demo-bucket/*"
],
"Condition": {
"NotIpAddress": {
"aws:SourceIp": [
"11.11.11.11/32",
"22.22.22.22/32"
]
}
},
"Principal": "*"
}
]
}
👎7👍3
#вопросы_с_собеседований
Объясните паттерны IaaS/PaaS/SaaS на примере пиццы.

На картинках варианты ответов.
👍13👎1
Исправьте неправильно написанный Dockerfile

Есть условное Node.js приложение, и неправильно написанный Dockerfile, который не будет кэшироваться и будет занимать много места. Нужно переписать его в соответствии с best practices.

#плохой файл
FROM ubuntu:18.04
COPY ./src /app
RUN apt-get update -y
RUN apt-get install -y nodejs
RUN npm install
ENTRYPOINT ["npm"]
CMD ["run", "prod"]


Вариант решения:
FROM node:14.15.4-buster as BUILDER
COPY ./src /build
RUN npm install
FROM node:14.15.4-alpine3.12
WORKDIR /app
COPY --from=BUILDER /build/out /app
CMD ["server.js"]
🔥16👎5🤔5👍1
#вопросы_с_собеседований
Приведите основные типы DNS записей и расскажите, для чего они используются.

A — запись соответствия с IPv4 адресом;
AAAA — запись соответствия с IPv6 адресом;
CNAME — запись соответствия другому доменному имени;
MX — адресная запись, указывающая на почтовый сервер домена;
NS — адресная запись указывающая на DNS-резолверы, отвечающие за данный домен;
TXT — произвольная текстовая запись в домене, часто используется для верификации принадлежности домена.
👍29👎1
Что такое POSIX?

Набор стандартов, описывающих интерфейсы между операционной системой и прикладной программой (системный API), библиотеку языка Cи и набор приложений и их интерфейсов. Создан для совместимости различных Unix-подобных дистрибутивов.
👍10👎1
Сетевое взаимодействие в Kubernetes

С помощью чего можно ограничить в Kubernetes сетевое взаимодействие между подами? Приведите пример. Надо ли отдельно включать данный механизм?

Ответ:
С помощью Network Policy. В зависимости от сетевого плагина, но по большей части сетевые политики всегда выключены по умолчанию, так что надо.

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: demo-network-policy
namespace: default
spec:
podSelector:
matchLabels:
role: db
policyTypes:
- Ingress
- Egress
ingress:
- from:
- ipBlock:
cidr: 172.16.0.0/16
except:
- 172.16.1.0/24
- namespaceSelector:
matchLabels:
project: demo
- podSelector:
matchLabels:
role: frontend
ports:
- protocol: TCP
port: 8080
egress:
- to:
- ipBlock:
cidr: 10.0.0.0/24
ports:
- protocol: TCP
port: 5432
👍11👏2
Стратегии деплоймента

Сделайте реализацию blue/green стратегии деплоймента для Kubernetes на основе деплойментов, сервиса и ingress’а и опишите как переключать версии.

### Конфигурация ingress'а
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: app-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: / spec:
rules:
- http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: app-service
port:
number: 80

### Сервис
apiVersion: v1
kind: Service
metadata:
name: app-service
spec:
selector:
app: app
color: blue
ports:
- protocol: TCP
port: 80
targetPort: 8080

### Деплоймент синей версии
apiVersion: apps/v1
kind: Deployment
metadata:
name: app-blue
labels:
app: app
color: blue
spec:
replicas: 1
selector:
matchLabels:
app: app
color: blue
template:
metadata:
labels:
app: app
color: blue
spec:
containers:
- name: app
image: docker.registry.io/app:1.0.0
ports:
- containerPort: 8080

### Деплоймент зелёной версии
apiVersion: apps/v1
kind: Deployment
metadata:
name: app-green
labels:
app: app
color: green
spec:
replicas: 1
selector:
matchLabels:
app: app
color: green
template:
metadata:
labels:
app: app
color: green
spec:
containers:
- name: app
image: docker.registry.io/app:1.0.0
ports:
- containerPort: 8080
### Переключение версий осуществляется путём изменения селекторов в сервисе
👍24
Аргумент о том, что devops (или, по крайней мере, некоторые подходы к улучшению сотрудничества между операторами и разработчиками) потерпел неудачу.

https://leebriggs.co.uk/blog/2022/06/21/devops-is-a-failure
🤔5🤬2👍1
#вопросы_с_собеседований
Что такое CI/CD в двух словах?

Свод практик, направленный на автоматизацию тестирования и доставки новых компонент проекта заинтересованным сторонам (разработчики, аналитики, инженеры качества, конечные пользователи и др.).
👍15
Напоминание и введение в заблуждения распределенных системах, которые становятся все более важными в популярных современных архитектурах.

https://proglib.io/w/8fffba25
Хорошее введение в ebpf с краткими примерами, помогающими понять, как он работает для захвата трафика.

https://www.seekret.io/blog/a-practical-guide-to-capturing-production-traffic-with-ebpf/
👍2
Пост с информацией, собранной из публично открытых кластеров Kubernetes, и несколько советов по лучшей защите кластеров.

https://raesene.github.io/blog/2022/07/03/lets-talk-about-kubernetes-on-the-internet/