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 сюда скриншоты -![Название скриншота 1](ссылка на скриншот 1)` - - ---- - -### Задание 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 сюда скриншоты -![Название скриншота 2](ссылка на скриншот 2)` - - ---- - -### Задание 3 +### Тестируем разрешенные соединения +image -`Приведите ответ в свободной форме........` +image -1. `Заполните здесь этапы выполнения, если требуется ....` -2. `Заполните здесь этапы выполнения, если требуется ....` -3. `Заполните здесь этапы выполнения, если требуется ....` -4. `Заполните здесь этапы выполнения, если требуется ....` -5. `Заполните здесь этапы выполнения, если требуется ....` -6. -``` -Поле для вставки кода... -.... -.... -.... -.... -``` - -`При необходимости прикрепитe сюда скриншоты -![Название скриншота](ссылка на скриншот)` +### Тестируем запрещенные соединения -### Задание 4 +image -`Приведите ответ в свободной форме........` +image -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