3.Deployment Pod들이 늘어났다가 줄어들 떄
오늘 사용한 파일들
#azApod.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
annotations:
topology.kubernetes.io/zone: A
spec:
replicas: 1
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80
#config.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: flask-app-config
data:
app.py: |
from flask import Flask
import os
app = Flask(__name__)
@app.route('/')
def home():
# 환경변수 AVAILABILITY_ZONE을 가져와서 출력
availability_zone = os.getenv('AVAILABILITY_ZONE', '알 수 없음')
return f'<h1>현재 가용영역: {availability_zone}</h1>'
if __name__ == '__main__':
app.run(host='0.0.0.0', port=80)
requirements.txt: |
flask
#deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: flask-web
spec:
replicas: 3
selector:
matchLabels:
app: flask-web
template:
metadata:
labels:
app: flask-web
spec:
containers:
- name: flask-container
image: python:3.9-slim # python 이미지를 그대로 사용
ports:
- containerPort: 80
volumeMounts:
- name: flask-app-volume
mountPath: /app.py
subPath: app.py
- name: flask-requirements
mountPath: /requirements.txt
subPath: requirements.txt
env:
- name: AVAILABILITY_ZONE
valueFrom:
fieldRef:
fieldPath: spec.nodeName
command: ["sh", "-c", "pip install -r /requirements.txt && python /app.py"]
volumes:
- name: flask-app-volume
configMap:
name: flask-app-config
- name: flask-requirements
configMap:
name: flask-app-config
---
apiVersion: v1
kind: Service
metadata:
name: flask-web-service
annotations:
service.kubernetes.io/topology-mode: auto
spec:
selector:
app: flask-web
ports:
- protocol: TCP
port: 80
targetPort: 80
type: LoadBalancer
#저번주차 과제 yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx
labels:
app: nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: nginx-sevice
annotations:
service.beta.kubernetes.io/aws-load-balancer-type: "nlb"
service.kubernetes.io/topology-mode: auto
spec:
type: LoadBalancer
selector:
app: nginx
ports:
- protocol: TCP
port: 80
targetPort: 80