az postgres 만들고 deployment, service 생성
# 애저에서 postgres database 만든 상태에서
# postgres 로컬에서 확인하기 위한 pgadmin 띄움
# 이후 pgadmin 화면에서 Servers > register > Host name/address
# 만들어둔 db의 서버이름(ex. roomypg.postgres.database.azure.com) 지정
$ docker run -itd -p 80:80 -e TZ=Asia/Seoul -e PGADMIN_DEFAULT_EMAIL=admin@gmail.com -e PGADMIN_DEFAULT_PASSWORD=postgres --name pgadmin dpage/pgadmin4
# 미리 만들어둔 이미지의 태그를
# 보기 편하도록 컨테이너 레지스트리 이름으로 바꿔봄
$ docker tag kcdhbp/todoapi:latest roomycontainer.azurecr.io/todoapi:v1
# 애져 컨테이너 레지스트리 login
$ az acr login --name roomycontainer
# 미리 만둘어둔 gradle 빌드해놈
$ ./gradlew jibDockerBuild
# 애저로 이미지 올림 (로컬 대신 애져 acr 연결된 상태)
$ docker push roomycontainer.azurecr.io/todoapi:v1
# 아래 yaml파일로 deployment, service 생성
$ kubectl apply -f app.yml
apiVersion: apps/v1
kind: Deployment
metadata:
name: todo-api-deployment
spec:
replicas: 1
selector:
matchLabels:
app: todo-api
template:
metadata:
name: todo-api-pod
labels:
app: todo-api
spec:
containers:
- name: todo-api
image: roomycontainer.azurecr.io/todoapi:v1
ports:
- containerPort: 8080
protocol: TCP
env:
- name: SPRING_PROFILES_ACTIVE
value: production
- name: TODO_DATASOURCE
valueFrom:
configMapKeyRef:
name: todo-datasource-config
key: todo_datasource
- name: TODO_USER
valueFrom:
secretKeyRef:
name: todo-datasource-credentials
key: POSTGRES_USER
- name: TODO_PASSWORD
valueFrom:
secretKeyRef:
name: todo-datasource-credentials
key: POSTGRES_PASSWORD
---
apiVersion: v1
kind: Service
metadata:
name: todo-api
spec:
type: LoadBalancer
ports:
- port: 80
targetPort: 8080
selector:
app: todo-api
# 이제 todo-api는 external-ip로 접근 가능하다.
$ kubectl get service
configMap, kubernetes secret
apiVersion: v1
kind: ConfigMap
metadata:
name: todo-datasource-config
data:
todo_datasource: postgres:5432
apiVersion: v1
kind: Secret
metadata:
name: todo-datasource-credentials
type: Opaque
data:
POSTGRES_DB: dG9kbw==
POSTGRES_USER: dG9kbw==
POSTGRES_PASSWORD: dG9kbw==
- 공개되면 안되는 정보들을 설정하는 거라고 보면 된다.
적혀있는 password 같은 것들은 암호화된 것임
- 생성해둔 쿠버 클러스터 > 구성 > 맵/시크릿 > 만들기를 통해 설정한다.
- 위 yaml을 입력하면 알아서 이 클러스터를 사용하는 postgres:5432로 연결시킨다.