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 ``` +image -`При необходимости прикрепитe сюда скриншоты -![Название скриншота 1](ссылка на скриншот 1)` - - ---- ### Задание 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" ``` +image -`При необходимости прикрепитe сюда скриншоты -![Название скриншота 2](ссылка на скриншот 2)` - - ---- +image ### Задание 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 сюда скриншоты -![Название скриншота](ссылка на скриншот)` +image 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: | + + + + ConfigMap Demo + + +

Hello from ConfigMap!

+

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')