📊 «Сделай красиво и чтоб работало – это вместо ТЗ». Что больше всего раздражает программистов на работе? Результаты опроса «Библиотеки программиста»
Отправь эту статью коллеге или руководителю. Может что-нибудь поменяется.
https://proglib.io/sh/RHx4fjPaLT
Отправь эту статью коллеге или руководителю. Может что-нибудь поменяется.
https://proglib.io/sh/RHx4fjPaLT
👍1👎1
Naml - это инструмент управления конфигурацией для описания конфигурации Kubernetes в Go. У него есть хороший инструмент для преобразования YAML в Go.
https://proglib.io/w/02c0e514
https://proglib.io/w/02c0e514
GitHub
GitHub - krisnova/naml: Convert Kubernetes YAML to Golang
Convert Kubernetes YAML to Golang. Contribute to krisnova/naml development by creating an account on GitHub.
#вопросы_с_собеседований
Напишите простой демон для systemd, который будет поддерживать работу процесса и перезапускаться в случае выхода из строя процесса.
Напишите простой демон для systemd, который будет поддерживать работу процесса и перезапускаться в случае выхода из строя процесса.
[Unit]
Description=Test_service
After=postgres.service
StartLimitBurst=5
StartLimitIntervalSec=10
[Service]
Type=simple
Restart=always
RestartSec=1
User=centos
ExecStart=/usr/bin/env python /app/server.py
[Install]
WantedBy=multi-user.target🔥19👎4
#вопросы_с_собеседований
Что такое inode в Linux?
Индексный дескриптор в файловой системе, который хранит метаданные о файлах, за исключением имени файла. В дескрипторе хранится: длина файла в байтах, id устройства с файлом, id пользователя владельца файла, id группы файла, режим файла (права доступа), timestamp последнего изменения файла, счётчик хардлинков, указатели на блоки файла.
Что такое inode в Linux?
Индексный дескриптор в файловой системе, который хранит метаданные о файлах, за исключением имени файла. В дескрипторе хранится: длина файла в байтах, id устройства с файлом, id пользователя владельца файла, id группы файла, режим файла (права доступа), timestamp последнего изменения файла, счётчик хардлинков, указатели на блоки файла.
🔥21❤1
#вопросы_с_собеседований
Напишите политику для AWS S3 бакета, которая разрешает доступ только с определенных IP адресов.
Напишите политику для 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 на примере пиццы.
На картинках варианты ответов.
Объясните паттерны IaaS/PaaS/SaaS на примере пиццы.
На картинках варианты ответов.
👍13👎1
Исправьте неправильно написанный Dockerfile
Есть условное Node.js приложение, и неправильно написанный Dockerfile, который не будет кэшироваться и будет занимать много места. Нужно переписать его в соответствии с best practices.
Вариант решения:
Есть условное 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 — произвольная текстовая запись в домене, часто используется для верификации принадлежности домена.
Приведите основные типы DNS записей и расскажите, для чего они используются.
A — запись соответствия с IPv4 адресом;
AAAA — запись соответствия с IPv6 адресом;
CNAME — запись соответствия другому доменному имени;
MX — адресная запись, указывающая на почтовый сервер домена;
NS — адресная запись указывающая на DNS-резолверы, отвечающие за данный домен;
TXT — произвольная текстовая запись в домене, часто используется для верификации принадлежности домена.
👍29👎1
Что такое POSIX?
Набор стандартов, описывающих интерфейсы между операционной системой и прикладной программой (системный API), библиотеку языка Cи и набор приложений и их интерфейсов. Создан для совместимости различных Unix-подобных дистрибутивов.
Набор стандартов, описывающих интерфейсы между операционной системой и прикладной программой (системный API), библиотеку языка Cи и набор приложений и их интерфейсов. Создан для совместимости различных Unix-подобных дистрибутивов.
👍10👎1
Сетевое взаимодействие в Kubernetes
С помощью чего можно ограничить в Kubernetes сетевое взаимодействие между подами? Приведите пример. Надо ли отдельно включать данный механизм?
Ответ:
С помощью Network Policy. В зависимости от сетевого плагина, но по большей части сетевые политики всегда выключены по умолчанию, так что надо.
С помощью чего можно ограничить в Kubernetes сетевое взаимодействие между подами? Приведите пример. Надо ли отдельно включать данный механизм?
Ответ:
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’а и опишите как переключать версии.
Сделайте реализацию 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
https://leebriggs.co.uk/blog/2022/06/21/devops-is-a-failure
lbr.
DevOps is a failure | lbr.
It’s probably difficult for most people to recall the first time they heard a word, but I remember hearing the word “DevOps” for the first time. I was having a
🤔5🤬2👍1
#вопросы_с_собеседований
Что такое CI/CD в двух словах?
Свод практик, направленный на автоматизацию тестирования и доставки новых компонент проекта заинтересованным сторонам (разработчики, аналитики, инженеры качества, конечные пользователи и др.).
Что такое CI/CD в двух словах?
Свод практик, направленный на автоматизацию тестирования и доставки новых компонент проекта заинтересованным сторонам (разработчики, аналитики, инженеры качества, конечные пользователи и др.).
👍15
Напоминание и введение в заблуждения распределенных системах, которые становятся все более важными в популярных современных архитектурах.
https://proglib.io/w/8fffba25
https://proglib.io/w/8fffba25
Architecture Notes
Fallacies of Distributed Systems
Fallacies of distributed systems are a set of assertions made by L Peter Deutsch and others at Sun Microsystems describing false assumptions that programmers new to distributed applications invariably make.