정의 : Sidecar 패턴은 마이크로서비스 아키텍처에서 주요 서비스 컨테이너와 별개로 실행되는 작은 보조 컨테이너를 가리킵니다. 이 보조 컨테이너는 주요 서비스 컨테이너와 함께 동일한 파드 내에서 실행되며, 주로 서비스에 추가 기능을 제공하거나 특정 기능을 분리합니다.
용도
정의 : Sidecar 컨테이너는 주요 서비스 컨테이너와 동일한 파드 내에서 실행되는 보조 컨테이너로, 주로 특정 기능을 제공하기 위해 사용됩니다.
용도
hyunsoolee0506/pyspark-jupyter:3.5.0
를 사용할 것이다.apiVersion: apps/v1
kind: Deployment
metadata:
name: jupyter-deployment
spec:
selector:
matchLabels:
app: jupyter
replicas: 1
template:
metadata:
labels:
app: jupyter
spec:
containers:
- name: jupyter-container
image: hyunsoolee0506/pyspark-jupyter:3.5.0
ports:
- containerPort: 8888
volumeMounts:
- name: s3-data
mountPath: /home/jovyan/work
volumes:
- name: s3-data
emptyDir: {}
---
apiVersion: v1
kind: Service
metadata:
name: jupyter-service
labels:
app: jupyter
spec:
type: LoadBalancer
selector:
app: jupyter
ports:
- protocol: TCP
port: 8888
targetPort: 8888
apiVersion: v1
kind: Secret
metadata:
name: aws-secret-key
stringData:
AWS_ACCESS_KEY_ID: [KEY_ID]
AWS_SECRET_ACCESS_KEY: [KEY_SECRET]
amazon/aws-cli
Docker Image는 AWS CLI를 실행하기 위한 Docker 컨테이너 이미지로 AWS CLI와 관련된 모든 종속성을 포함하고 있으며, 사용자가 Docker를 통해 컨테이너로 실행할 수 있도록 편리하게 패키지된 환경을 제공해준다.aws s3 sync
명령을 함으로써 데이터가 지속되고 연동가능하도록 할 수 있다.jupyter-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: jupyter-deployment
spec:
selector:
matchLabels:
app: jupyter
replicas: 1
template:
metadata:
labels:
app: jupyter
spec:
containers:
- name: jupyter-container
image: hyunsoolee0506/pyspark-jupyter:3.5.0
ports:
- containerPort: 8888
volumeMounts:
- name: s3-data
mountPath: /home/jovyan/work
########################### sidecar container 추가된 부분 ############################
- name: s3-sync
image: amazon/aws-cli
envFrom:
- secretRef:
name: aws-secret-key
command: ["/bin/sh"]
args:
- "-c"
- |
while true; do
aws s3 sync [S3 경로] [컨테이너 내부 경로]
sleep 5;
aws s3 sync [컨테이너 내부 경로] [S3 경로]
sleep 3600;
done
volumeMounts:
- name: s3-data
mountPath: /home/jovyan/work
####################################################################################
volumes:
- name: s3-data
emptyDir: {}
kubectl apply -f jupyter-deployment.yaml