fix numeration

This commit is contained in:
Sergey Bondarev
2021-11-02 14:17:38 +03:00
parent 22b0b17016
commit f990be6d7e
34 changed files with 21 additions and 21 deletions
+108
View File
@@ -0,0 +1,108 @@
# Local Development
[Ссылка](https://kubernetes.io/ru/docs/tasks/tools/install-minikube/) на скачивание\как установить minikube
В среде Windows, рекомендуем выполнять команды в [Git Bash](https://git-scm.com/downloads)
[Описание и решение](https://github.com/Slurmio/school-dev-k8s/blob/main/practice/8.local-development/problems_window.md) возможных проблем на платформе Windows.
## 1. Запускаем minikube
Для этого выполняем команду:
```bash
minikube start
```
И ждем завершения выполнения. После этого можем проверить что все работает:
```bash
kubectl get po -A
```
Должно вернуть что то типа:
```bash
kube-system coredns-66bff467f8-mwqh4 1/1 Running 0 5m
kube-system etcd-minikube 1/1 Running 0 5m
kube-system kube-apiserver-minikube 1/1 Running 0 5m
kube-system kube-controller-manager-minikube 1/1 Running 0 5m
kube-system kube-proxy-mq6g6 1/1 Running 0 5m
kube-system kube-scheduler-minikube 1/1 Running 0 5m
kube-system storage-provisioner 1/1 Running 0 5m
```
## 2. Запускаем приложение
Сначала нужно подключиться к докеру в minikube. Для этого выполним команду:
```bash
eval $(minikube docker-env)
```
Дальше билдим образ
> ВАЖНО!!! нужно находиться в директории `~/school-dev-k8s/practice/8.local-development/app/`
```bash
docker build . -t myapp:dev
```
После этого В ОТДЕЛЬНОЙ КОНСОЛИ запускаем команду для монтирования
локальной директории в minikube.
> ВАЖНО!!! нужно находиться в директории `~/school-dev-k8s/practice/8.local-development/app/`
```bash
minikube mount .:/app
```
и оставляем ее висеть
Дальше возвращаемся в первую консоль и там аплаим манифесты
```bash
kubectl apply -f kube/
```
Проверяем что приложение запустилось
```bash
kubectl get po
```
и можем открыть его в браузере. Для этого можно просто выполнить команду:
```bash
minikube service myapp
```
## 3. Вносим изменения в код
Открываем файл app.py
и меняем строку
```diff
- return "Hello, World!"
+ return "Hello, Updated!"
```
Проверяем что приложение зарелоадилось
```bash
kubectl logs <pod_name>
```
Должно быть такое:
```bash
* Detected change in '/app/app.py', reloading
* Restarting with stat
```
и можем проверить в браузере что изменения действительно применились
## 4. Запускаем dashboard
```bash
minikube dashboard
```
@@ -0,0 +1,8 @@
FROM python:3.6.8
COPY requirements.txt /app/requirements.txt
RUN pip install -r /app/requirements.txt
COPY . /app
ENTRYPOINT python /app/app.py
+26
View File
@@ -0,0 +1,26 @@
#!/usr/bin/env python
import os
from flask import Flask
from flask import request
config = {
"port": os.environ.get('PORT', 8000),
"debug": os.environ.get('DEBUG', False)
}
app = Flask(__name__)
@app.route("/")
def hello():
return "Hello, Updated!"
@app.route("/api/sum")
def sum():
a = request.args.get('a')
b = request.args.get('b')
return "{0}+{1}={2}".format(a, b, int(a)+int(b))
if __name__ == "__main__":
app.run(host="0.0.0.0", port=config["port"], debug=config["debug"])
@@ -0,0 +1,31 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: myapp
spec:
replicas: 1
selector:
matchLabels:
app: myapp
template:
metadata:
labels:
app: myapp
spec:
containers:
- name: api
image: myapp:dev
env:
- name: PYTHONUNBUFFERD
value: "1"
- name: DEBUG
value: "True"
ports:
- containerPort: 8000
volumeMounts:
- name: code
mountPath: /app
volumes:
- name: code
hostPath:
path: /app
@@ -0,0 +1,11 @@
apiVersion: v1
kind: Service
metadata:
name: myapp
spec:
type: LoadBalancer
selector:
app: myapp
ports:
- port: 8000
targetPort: 8000
@@ -0,0 +1,5 @@
Flask==1.1.2
itsdangerous==1.1.0
Jinja2==2.11.2
MarkupSafe==1.1.1
Werkzeug==1.0.1
@@ -0,0 +1,46 @@
## Не запускается minikube - minikube start
Возможно вам надо включить Hyper-V. Запускаем PowerShell с админскими правами.
Включаем
```
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-All
```
После проделанной работы отключаем
```
Disable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-All
```
## Не монитруется локальная директория в minikube - minikube mount .:/app
Ошибка `X Exiting due to HOST_PATH_MISSING: Cannot find directory .;C for mount`
Нужно указать абсолютный путь. Указываем свое имя профиля - `<ваше имя профиля>`
```
minikube mount "C:\Users\<ваше имя профиля>\devk8s\practice\12.local-development\app:/app"
```
или
```
minikube mount C:\\Users\\<ваше имя профиля>\\devk8s\\practice\\12.local-development\\app:/app
```
## Всё равно не монтирует директорию в minikube
Ошибка
```
Process exited with status 32
stdout:
stderr:
mount: /app: mount(2) system call failed: Connection timed out.
```
Нужно отключить брандмауэр Windows
Или задать правила в брандмауэр Windows. Создать два правила (UDP/TCP протоколов) для - Правила для входящих подключений. Задать в поле `Программа` путь, где лежит программа `C:\Program Files\Kubernetes\Minikube\minikube.exe`. В поле `Локальный адрес` задать IP диапазон из 1-ого и 2-ого октета в 16-ой маски `172.25.0.0./16`. Остальные поля `Любой`.
Узнаем свой IP диапазон, где работает minikube.
```
$ minikube ip
172.25.46.107
```