diff --git a/README.md b/README.md
index 64ef33813a..7089b437d5 100644
--- a/README.md
+++ b/README.md
@@ -1,117 +1,50 @@
-# Домашнее задание к занятию "`Название занятия`" - `Фамилия и имя студента`
+# Домашнее задание к занятию "Как работает сеть в K8s" - `Молоствов Андрей`
-### Инструкция по выполнению домашнего задания
-
- 1. Сделайте `fork` данного репозитория к себе в Github и переименуйте его по названию или номеру занятия, например, https://github.com/имя-вашего-репозитория/git-hw или https://github.com/имя-вашего-репозитория/7-1-ansible-hw).
- 2. Выполните клонирование данного репозитория к себе на ПК с помощью команды `git clone`.
- 3. Выполните домашнее задание и заполните у себя локально этот файл README.md:
- - впишите вверху название занятия и вашу фамилию и имя
- - в каждом задании добавьте решение в требуемом виде (текст/код/скриншоты/ссылка)
- - для корректного добавления скриншотов воспользуйтесь [инструкцией "Как вставить скриншот в шаблон с решением](https://github.com/netology-code/sys-pattern-homework/blob/main/screen-instruction.md)
- - при оформлении используйте возможности языка разметки md (коротко об этом можно посмотреть в [инструкции по MarkDown](https://github.com/netology-code/sys-pattern-homework/blob/main/md-instruction.md))
- 4. После завершения работы над домашним заданием сделайте коммит (`git commit -m "comment"`) и отправьте его на Github (`git push origin`);
- 5. Для проверки домашнего задания преподавателем в личном кабинете прикрепите и отправьте ссылку на решение в виде md-файла в вашем Github.
- 6. Любые вопросы по выполнению заданий спрашивайте в чате учебной группы и/или в разделе “Вопросы по заданию” в личном кабинете.
-
-Желаем успехов в выполнении домашнего задания!
-
-### Дополнительные материалы, которые могут быть полезны для выполнения задания
-
-1. [Руководство по оформлению Markdown файлов](https://gist.github.com/Jekins/2bf2d0638163f1294637#Code)
-
----
-
-### Задание 1
-
-`Приведите ответ в свободной форме........`
-
-1. `Заполните здесь этапы выполнения, если требуется ....`
-2. `Заполните здесь этапы выполнения, если требуется ....`
-3. `Заполните здесь этапы выполнения, если требуется ....`
-4. `Заполните здесь этапы выполнения, если требуется ....`
-5. `Заполните здесь этапы выполнения, если требуется ....`
-6.
-
-```
-Поле для вставки кода...
-....
-....
-....
-....
-```
-
-`При необходимости прикрепитe сюда скриншоты
-`
-
-
----
-
-### Задание 2
-
-`Приведите ответ в свободной форме........`
-
-1. `Заполните здесь этапы выполнения, если требуется ....`
-2. `Заполните здесь этапы выполнения, если требуется ....`
-3. `Заполните здесь этапы выполнения, если требуется ....`
-4. `Заполните здесь этапы выполнения, если требуется ....`
-5. `Заполните здесь этапы выполнения, если требуется ....`
-6.
+### Задание
```
-Поле для вставки кода...
-....
-....
-....
-....
+kubectl create namespace app
+nano frontend.yaml
+nano backend.yaml
+nano cache.yaml
+kubectl apply -f frontend.yaml
+kubectl apply -f backend.yaml
+kubectl apply -f cache.yaml
+kubectl expose deployment frontend -n app --port=80 --target-port=80
+kubectl expose deployment backend -n app --port=80 --target-port=80
+kubectl expose deployment cache -n app --port=80 --target-port=80
+nano default-deny.yaml
+nano frontend-to-backend.yaml
+nano backend-to-cache.yaml
+nano allow-dns.yaml
+kubectl apply -f default-deny.yaml
+kubectl apply -f frontend-to-backend.yaml
+kubectl apply -f backend-to-cache.yaml
+kubectl apply -f allow-dns.yaml
+FRONTEND_POD=$(kubectl get pods -n app -l app=frontend -o jsonpath='{.items[0].metadata.name}')
+BACKEND_POD=$(kubectl get pods -n app -l app=backend -o jsonpath='{.items[0].metadata.name}')
+CACHE_POD=$(kubectl get pods -n app -l app=cache -o jsonpath='{.items[0].metadata.name}')
+nano frontend-egress.yaml
+nano backend-egress.yaml
+kubectl apply -f frontend-egress.yaml
+kubectl apply -f backend-egress.yaml
+kubectl exec -n app $FRONTEND_POD -- curl -v http://backend.app.svc.cluster.local
+kubectl exec -n app $BACKEND_POD -- curl -v http://cache.app.svc.cluster.local
+kubectl exec -n app $BACKEND_POD -- timeout 3 curl -v http://frontend.app.svc.cluster.local
+kubectl exec -n app $FRONTEND_POD -- timeout 3 curl -v http://cache.app.svc.cluster.local
```
-`При необходимости прикрепитe сюда скриншоты
-`
-
-
----
-
-### Задание 3
+### Тестируем разрешенные соединения
+
-`Приведите ответ в свободной форме........`
+
-1. `Заполните здесь этапы выполнения, если требуется ....`
-2. `Заполните здесь этапы выполнения, если требуется ....`
-3. `Заполните здесь этапы выполнения, если требуется ....`
-4. `Заполните здесь этапы выполнения, если требуется ....`
-5. `Заполните здесь этапы выполнения, если требуется ....`
-6.
-```
-Поле для вставки кода...
-....
-....
-....
-....
-```
-
-`При необходимости прикрепитe сюда скриншоты
-`
+### Тестируем запрещенные соединения
-### Задание 4
+
-`Приведите ответ в свободной форме........`
+
-1. `Заполните здесь этапы выполнения, если требуется ....`
-2. `Заполните здесь этапы выполнения, если требуется ....`
-3. `Заполните здесь этапы выполнения, если требуется ....`
-4. `Заполните здесь этапы выполнения, если требуется ....`
-5. `Заполните здесь этапы выполнения, если требуется ....`
-6.
-
-```
-Поле для вставки кода...
-....
-....
-....
-....
-```
-`При необходимости прикрепитe сюда скриншоты
-`
diff --git a/allow-dns.yaml b/allow-dns.yaml
new file mode 100644
index 0000000000..f05cdf18ec
--- /dev/null
+++ b/allow-dns.yaml
@@ -0,0 +1,17 @@
+apiVersion: networking.k8s.io/v1
+kind: NetworkPolicy
+metadata:
+ name: allow-dns
+ namespace: app
+spec:
+ podSelector: {}
+ egress:
+ - to:
+ - namespaceSelector: {}
+ ports:
+ - protocol: UDP
+ port: 53
+ - protocol: TCP
+ port: 53
+ policyTypes:
+ - Egress
diff --git a/backend-egress.yaml b/backend-egress.yaml
new file mode 100644
index 0000000000..2cbf55202a
--- /dev/null
+++ b/backend-egress.yaml
@@ -0,0 +1,19 @@
+apiVersion: networking.k8s.io/v1
+kind: NetworkPolicy
+metadata:
+ name: backend-egress
+ namespace: app
+spec:
+ podSelector:
+ matchLabels:
+ app: backend
+ policyTypes:
+ - Egress
+ egress:
+ - to:
+ - podSelector:
+ matchLabels:
+ app: cache
+ ports:
+ - protocol: TCP
+ port: 80
diff --git a/backend-to-cache.yaml b/backend-to-cache.yaml
new file mode 100644
index 0000000000..d8ab1a75be
--- /dev/null
+++ b/backend-to-cache.yaml
@@ -0,0 +1,19 @@
+apiVersion: networking.k8s.io/v1
+kind: NetworkPolicy
+metadata:
+ name: backend-to-cache
+ namespace: app
+spec:
+ podSelector:
+ matchLabels:
+ app: cache
+ policyTypes:
+ - Ingress
+ ingress:
+ - from:
+ - podSelector:
+ matchLabels:
+ app: backend
+ ports:
+ - protocol: TCP
+ port: 80
diff --git a/backend.yaml b/backend.yaml
new file mode 100644
index 0000000000..4c4e49ba44
--- /dev/null
+++ b/backend.yaml
@@ -0,0 +1,19 @@
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ name: backend
+ namespace: app
+spec:
+ replicas: 2
+ selector:
+ matchLabels:
+ app: backend
+ template:
+ metadata:
+ labels:
+ app: backend
+ spec:
+ containers:
+ - name: multitool
+ image: wbitt/network-multitool
+ command: ["sleep", "infinity"]
diff --git a/cache.yaml b/cache.yaml
new file mode 100644
index 0000000000..f88eb017f3
--- /dev/null
+++ b/cache.yaml
@@ -0,0 +1,19 @@
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ name: cache
+ namespace: app
+spec:
+ replicas: 2
+ selector:
+ matchLabels:
+ app: cache
+ template:
+ metadata:
+ labels:
+ app: cache
+ spec:
+ containers:
+ - name: multitool
+ image: wbitt/network-multitool
+ command: ["sleep", "infinity"]
diff --git a/default-deny.yaml b/default-deny.yaml
new file mode 100644
index 0000000000..d7111f2628
--- /dev/null
+++ b/default-deny.yaml
@@ -0,0 +1,10 @@
+apiVersion: networking.k8s.io/v1
+kind: NetworkPolicy
+metadata:
+ name: default-deny-all
+ namespace: app
+spec:
+ podSelector: {}
+ policyTypes:
+ - Ingress
+ - Egress
diff --git a/frontend-egress.yaml b/frontend-egress.yaml
new file mode 100644
index 0000000000..546509bb80
--- /dev/null
+++ b/frontend-egress.yaml
@@ -0,0 +1,19 @@
+apiVersion: networking.k8s.io/v1
+kind: NetworkPolicy
+metadata:
+ name: frontend-egress
+ namespace: app
+spec:
+ podSelector:
+ matchLabels:
+ app: frontend
+ policyTypes:
+ - Egress
+ egress:
+ - to:
+ - podSelector:
+ matchLabels:
+ app: backend
+ ports:
+ - protocol: TCP
+ port: 80
diff --git a/frontend-to-backend.yaml b/frontend-to-backend.yaml
new file mode 100644
index 0000000000..e866f34544
--- /dev/null
+++ b/frontend-to-backend.yaml
@@ -0,0 +1,19 @@
+apiVersion: networking.k8s.io/v1
+kind: NetworkPolicy
+metadata:
+ name: frontend-to-backend
+ namespace: app
+spec:
+ podSelector:
+ matchLabels:
+ app: backend
+ policyTypes:
+ - Ingress
+ ingress:
+ - from:
+ - podSelector:
+ matchLabels:
+ app: frontend
+ ports:
+ - protocol: TCP
+ port: 80
diff --git a/frontend.yaml b/frontend.yaml
new file mode 100644
index 0000000000..bd88de9eb3
--- /dev/null
+++ b/frontend.yaml
@@ -0,0 +1,19 @@
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ name: frontend
+ namespace: app
+spec:
+ replicas: 2
+ selector:
+ matchLabels:
+ app: frontend
+ template:
+ metadata:
+ labels:
+ app: frontend
+ spec:
+ containers:
+ - name: multitool
+ image: wbitt/network-multitool
+ command: ["sleep", "infinity"]
diff --git a/img/1.jpg b/img/1.jpg
new file mode 100644
index 0000000000..98079eb6dd
Binary files /dev/null and b/img/1.jpg differ
diff --git a/img/2.jpg b/img/2.jpg
new file mode 100644
index 0000000000..617cf5e28f
Binary files /dev/null and b/img/2.jpg differ
diff --git a/img/3.jpg b/img/3.jpg
new file mode 100644
index 0000000000..01676978f7
Binary files /dev/null and b/img/3.jpg differ
diff --git a/img/4.jpg b/img/4.jpg
new file mode 100644
index 0000000000..7b9fa8a61d
Binary files /dev/null and b/img/4.jpg differ