Исправьте неправильно написанный 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.
Библиотека девопса | DevOps, SRE, Sysadmin pinned Deleted message
Ультимативный гайд по собеседованию DevOps-инженеров — что спрашивать и к чему готовиться.
https://habr.com/ru/company/rebrainme/blog/527782/
https://habr.com/ru/company/rebrainme/blog/527782/
Хабр
Ультимативный гайд по собеседованию DevOps-инженеров — что спрашивать и к чему готовиться
Я начал заниматься сетями еще в школе, а работаю за деньги больше 16 лет. Я много куда устраивался, в большие компании и маленькие, потом открыл свой бизнес и регулярно сам нанимаю людей. С годами и...
👍8😁1
Хорошее введение в ebpf с краткими примерами, помогающими понять, как он работает для захвата трафика.
https://www.seekret.io/blog/a-practical-guide-to-capturing-production-traffic-with-ebpf/
https://www.seekret.io/blog/a-practical-guide-to-capturing-production-traffic-with-ebpf/
Datadog
A practical guide to capturing production traffic with eBPF | Datadog
Learn how to use eBPF to create an HTTP protocol tracer.
👍2
Пост с информацией, собранной из публично открытых кластеров Kubernetes, и несколько советов по лучшей защите кластеров.
https://raesene.github.io/blog/2022/07/03/lets-talk-about-kubernetes-on-the-internet/
https://raesene.github.io/blog/2022/07/03/lets-talk-about-kubernetes-on-the-internet/
raesene.github.io
Let's talk about Kubernetes on the Internet
Что нужно знать специалистам, работающим с Kubernetes.
https://habr.com/ru/company/southbridge/blog/676256/
https://habr.com/ru/company/southbridge/blog/676256/
Хабр
Что нужно знать специалистам, работающим с Kubernetes
Что нужно знать для продвинутой работы с Kubernetes Привет, Хабр! Мы в Слёрме помогаем IT-специалистам повысить квалификацию и использовать IT-инструменты более эффективно. Три года назад мы...
🔥4
Хорошие советы по ошибкам, которых следует избегать на самых первых этапах работы с инцидентом.
https://firehydrant.com/blog/3-mistakes-ive-made-at-the-beginning-of-an-incident-and-how-not-to-make-them/
https://firehydrant.com/blog/3-mistakes-ive-made-at-the-beginning-of-an-incident-and-how-not-to-make-them/
FireHydrant
3 mistakes I’ve made at the beginning of an incident (and how not to make them)
Let’s look at three mistakes I’ve made during those stressful moments during the beginning of an incident — and discuss how you can avoid making them.
Пост, посвященный всему, что связано с логами PostgreSQL. Как их найти, какую информацию они содержат, типы логов и многое другое.
https://sematext.com/blog/postgresql-logs/
https://sematext.com/blog/postgresql-logs/
Sematext
PostgreSQL Logs: How to Enable Logging [Config Tutorial]
Read about PostgreSQL log file format, location, log levels, and more. Best practices on how to enable query logging for faster database troubleshooting.
👍4
Что вам следует и (вероятно) не следует пробовать из SRE.
https://www.equalexperts.com/blog/our-thinking/what-you-should-and-probably-shouldnt-try-from-sre/
https://www.equalexperts.com/blog/our-thinking/what-you-should-and-probably-shouldnt-try-from-sre/
Equal Experts
What you should and (probably) shouldn’t try from SRE
We’ll recommend the bits you should try in your organisation, mention some bits you (probably) shouldn’t try, and explain how SRE is linked to operability.
#вопросы_с_собеседований
Что такое маршрутизатор?
Маршрутизатор — это физическое или виртуальное устройство, которое передает информацию между двумя или более компьютерными сетями с коммутацией пакетов. Маршрутизатор проверяет адрес Интернет-протокола назначения данного пакета данных (IP-адрес), вычисляет наилучший способ его достижения и затем соответствующим образом пересылает его.
Что такое маршрутизатор?
Маршрутизатор — это физическое или виртуальное устройство, которое передает информацию между двумя или более компьютерными сетями с коммутацией пакетов. Маршрутизатор проверяет адрес Интернет-протокола назначения данного пакета данных (IP-адрес), вычисляет наилучший способ его достижения и затем соответствующим образом пересылает его.
👍11