apiVersion: v1
kind: Service
metadata:
name: nginx-svc
spec:
selector:
type: frontend
ports:
- port: 80
targetPort: 80
type: LoadBalancer
apiVersion: v1
kind: Service
metadata:
name: mysql-svc
spec:
selector:
type: db
ports:
- port: 3306
targetPort: 3306
type: LoadBalancer
FROM httpd:latest
RUN apt -y update
RUN apt -y install -y apache2 apache2-dev python3-pip libjpeg-dev python3.9-dev python3.9-distutils libmariadb-dev
#libmysqldb-dev가 다운이 안되서 마리아디비사용 문제 없다!
WORKDIR /web
COPY . /web
RUN pip install mod-wsgi
# 아파치가 설치된 후에 설치가 가능!
RUN pip install -r requirements.txt
COPY ./httpd.conf /usr/local/apache2/conf/httpd.conf
# httpd.conf 파일이 복사될 곳을 잘 설정해줘야한다. docker 홈페이지에 나와있다.
CMD httpd-foreground
apiVersion: v1
kind: Pod
metadata:
name: httpd-01
labels:
type: httpd
spec:
containers:
- name: container
image: gugucone/httpd:1.3
envFrom:
- configMapRef:
name: backend-cm
수정정정
파드가 있을 때 하나씩 버전을 업그레이드, 수동으로
라벨을 사용하지 않고 생성 작동 확인 후 라벨을 추가
why? 컨테이너가 실행 된다고 실행이 되는 것이 아니니깐!실행되는지 확인 후 라벨 추가
1.3에서 httpd-04은 원래 있었는데 1.4에서 httpd-01-v.14가 잘 작동되면 1.3에 httpd-04를 지워주면서 추가하고 실행확인하고 삭제하고 점진적으로 업데이트하는 방식이다!
컨트롤러에서 자동으로 설정할 수 있다.
수정정정 가입입입
블루그룹과 그린그룹으로 나눈다.
파드를 미리 다 만들어 놓고, 서비스에 연결되지 않도록 다른 라벨에 연결을 시켜 놓는다.
업데이트 된 파드가 잘 작동하면 서비스에서 기존 셀렉터를 지우고 새롭게 만든 셀렉터(파드에서는 라벨!)를 넣어준다.
키-값 은 다른 형태로 저장해줘야 한다.
두가지 방식으 차이는 파드 4개를 유지하고 있다. 자원이 넉넉하면 블루그린배포 방식으로 파드를 생성한 후에 배포를 해준다.(최대 8개 파드) 하지만 4개만을 유지해야한다. 그러면 롤릴업데이트 방식을 사용해야만 한다.(최대 5개 파드)
#!/bin/bash
while true; do
curl 192.168.181.100 | grep -e 회원가입 -e 가입입입
sleep 1
done