diff --git a/README.md b/README.md
index 64ef33813a..d9e70ab19c 100644
--- a/README.md
+++ b/README.md
@@ -1,117 +1,45 @@
-# Домашнее задание к занятию "`Название занятия`" - `Фамилия и имя студента`
-
-
-### Инструкция по выполнению домашнего задания
-
- 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)
+# Домашнее задание к занятию "Настройка приложений и управление доступом в Kubernetes" - `Молоствов Андрей`
---
### Задание 1
-`Приведите ответ в свободной форме........`
-
-1. `Заполните здесь этапы выполнения, если требуется ....`
-2. `Заполните здесь этапы выполнения, если требуется ....`
-3. `Заполните здесь этапы выполнения, если требуется ....`
-4. `Заполните здесь этапы выполнения, если требуется ....`
-5. `Заполните здесь этапы выполнения, если требуется ....`
-6.
-
```
-Поле для вставки кода...
-....
-....
-....
-....
+nano configmap-web.yaml
+nano deployment.yaml
+kubectl apply -f configmap-web.yaml
+kubectl apply -f deployment.yaml
+kubectl port-forward service/web-app 8080:80
```
+
-`При необходимости прикрепитe сюда скриншоты
-`
-
-
----
### Задание 2
-`Приведите ответ в свободной форме........`
-
-1. `Заполните здесь этапы выполнения, если требуется ....`
-2. `Заполните здесь этапы выполнения, если требуется ....`
-3. `Заполните здесь этапы выполнения, если требуется ....`
-4. `Заполните здесь этапы выполнения, если требуется ....`
-5. `Заполните здесь этапы выполнения, если требуется ....`
-6.
-
```
-Поле для вставки кода...
-....
-....
-....
-....
+openssl req -x509 -nodes -days 365 -newkey rsa:2048 \ -keyout tls.key -out tls.crt -subj "/CN=myapp.example.com"
+nano secret-tls.yaml
+minikube addons enable ingress
+nano ingress-tls.yaml
+kubectl apply -f ingress-tls.yaml
+kubectl port-forward -n ingress-nginx service/ingress-nginx-controller 8443:443
+curl -k https://localhost:8443 -H "Host: myapp.example.com"
```
+
-`При необходимости прикрепитe сюда скриншоты
-`
-
-
----
+
### Задание 3
-`Приведите ответ в свободной форме........`
-
-1. `Заполните здесь этапы выполнения, если требуется ....`
-2. `Заполните здесь этапы выполнения, если требуется ....`
-3. `Заполните здесь этапы выполнения, если требуется ....`
-4. `Заполните здесь этапы выполнения, если требуется ....`
-5. `Заполните здесь этапы выполнения, если требуется ....`
-6.
-
-```
-Поле для вставки кода...
-....
-....
-....
-....
-```
-
-`При необходимости прикрепитe сюда скриншоты
-`
-
-### Задание 4
-
-`Приведите ответ в свободной форме........`
-
-1. `Заполните здесь этапы выполнения, если требуется ....`
-2. `Заполните здесь этапы выполнения, если требуется ....`
-3. `Заполните здесь этапы выполнения, если требуется ....`
-4. `Заполните здесь этапы выполнения, если требуется ....`
-5. `Заполните здесь этапы выполнения, если требуется ....`
-6.
-
```
-Поле для вставки кода...
-....
-....
-....
-....
+openssl genrsa -out developer.key 2048
+openssl req -new -key developer.key -out developer.csr -subj "/CN=developer"
+minikube ssh "sudo cat /var/lib/minikube/certs/ca.crt" > ca.crt
+minikube ssh "sudo cat /var/lib/minikube/certs/ca.key" > ca.key
+openssl x509 -req -in developer.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out developer.crt -days 365
+nano role-pod-reader.yaml
+nano rolebinding-developer.yaml
+kubectl apply -f role-pod-reader.yaml
+kubectl apply -f rolebinding-developer.yaml
```
-
-`При необходимости прикрепитe сюда скриншоты
-`
+
diff --git a/configmap-web.yaml b/configmap-web.yaml
new file mode 100644
index 0000000000..ec59524a27
--- /dev/null
+++ b/configmap-web.yaml
@@ -0,0 +1,26 @@
+apiVersion: v1
+kind: ConfigMap
+metadata:
+ name: web-content
+data:
+ index.html: |
+
+
+
This page is served from ConfigMap
+ + + nginx-config.conf: | + server { + listen 80; + root /usr/share/nginx/html; + index index.html; + + location / { + try_files $uri $uri/ =404; + } + } diff --git a/deployment.yaml b/deployment.yaml new file mode 100644 index 0000000000..df8de53f80 --- /dev/null +++ b/deployment.yaml @@ -0,0 +1,40 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: web-app +spec: + replicas: 1 + selector: + matchLabels: + app: web-app + template: + metadata: + labels: + app: web-app + spec: + containers: + - name: nginx + image: nginx:alpine + ports: + - containerPort: 80 + volumeMounts: + - name: html-content + mountPath: /usr/share/nginx/html + - name: nginx-config + mountPath: /etc/nginx/conf.d + - name: multitool + image: wbitt/network-multitool:alpine-extra + command: ["sleep", "infinity"] + volumes: + - name: html-content + configMap: + name: web-content + items: + - key: index.html + path: index.html + - name: nginx-config + configMap: + name: web-content + items: + - key: nginx-config.conf + path: default.conf 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 diff --git a/ingress-tls.yaml b/ingress-tls.yaml new file mode 100644 index 0000000000..1b6771e71f --- /dev/null +++ b/ingress-tls.yaml @@ -0,0 +1,20 @@ +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: tls-ingress +spec: + tls: + - hosts: + - myapp.example.com + secretName: tls-secret + rules: + - host: myapp.example.com + http: + paths: + - path: / + pathType: Prefix + backend: + service: + name: web-app + port: + number: 80 diff --git a/role-pod-reader.yaml b/role-pod-reader.yaml new file mode 100644 index 0000000000..f8af74185e --- /dev/null +++ b/role-pod-reader.yaml @@ -0,0 +1,9 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + name: pod-viewer + namespace: default +rules: +- apiGroups: [""] + resources: ["pods", "pods/log"] + verbs: ["get", "list", "watch"] diff --git a/rolebinding-developer.yaml b/rolebinding-developer.yaml new file mode 100644 index 0000000000..dffedfe1f5 --- /dev/null +++ b/rolebinding-developer.yaml @@ -0,0 +1,13 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + name: developer-binding + namespace: default +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: pod-viewer +subjects: +- kind: User + name: developer + apiGroup: rbac.authorization.k8s.io diff --git a/secret-tls.yaml b/secret-tls.yaml new file mode 100644 index 0000000000..ee5b0f6820 --- /dev/null +++ b/secret-tls.yaml @@ -0,0 +1,8 @@ +apiVersion: v1 +kind: Secret +metadata: + name: tls-secret +type: kubernetes.io/tls +data: + tls.crt: $(cat tls.crt | base64 | tr -d '\n') + tls.key: $(cat tls.key | base64 | tr -d '\n')