Change some practice

This commit is contained in:
Marsel Ibraev
2021-09-27 16:59:35 +03:00
parent f44beb51a9
commit f41e7a6611
187 changed files with 33 additions and 72 deletions
+96
View File
@@ -0,0 +1,96 @@
# Local Development
## 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)
```
Дальше билдим образ
> ВАЖНО!!! нужно находиться в директории `~/slurm/practice/11.local-development/app/`
```bash
docker build . -t myapp:dev
```
После этого В ОТДЕЛЬНОЙ КОНСОЛИ запускаем команду для монтирования
локальной директории в minikube.
> ВАЖНО!!! нужно находиться в директории `~/slurm/practice/11.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
```
и можем проверить в браузере что изменения действительно применились
@@ -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