본문으로 건너뛰기

쿠버네티스 클러스터와 Object Storage 연동

쿠버네티스 클러스터와 Object Storage를 연동하여, 쿠버네티스 Pod에서 Object Storage에 데이터를 연동하는 방법을 학습합니다.

안내

시나리오 소개

이 시나리오에서는 쿠버네티스 클러스터와 카카오클라우드의 Object Storage를 연동하여 쿠버네티스 Pod에서 Object Storage를 활용하는 방법을 소개합니다. 이 과정을 통해 쿠버네티스 환경에서 대규모 데이터를 효율적으로 저장하고 사용할 수 있습니다.

주요 내용은 아래와 같습니다.

  • IAM 액세스 키를 사용하여 안전한 인증 및 접근 제어 설정
  • 쿠버네티스 클러스터와 Object Storage 연동 설정

시작하기 전에

Object Storage 연동을 위해 필요한 인증 토큰과 자격 증명(Credential)을 준비합니다. 아래 단계를 따라 설정을 완료하세요.

1. API 인증 토큰 발급

사전에 발급된 액세스 키를 이용해 API 인증 토큰을 생성합니다. API 인증 토큰은 카카오클라우드 계정 ID와 비밀번호를 대체하여 인증을 수행합니다. CLI나 API에서 API 인증 토큰을 사용하여 인증하고, 카카오클라우드 서비스를 이용할 수 있습니다.

액세스 키(Access key)로 API 인증 토큰 발급
curl -X POST -i -H "Content-Type: application/json"  https://iam.kakaocloud.com/identity/v3/auth/tokens -d @<(cat << EOF 
{
"auth": {
"identity": {
"methods": [
"application_credential"
],
"application_credential": {
"id": "${ACCESS_KEY}",
"secret": "${ACCESS_KEY_SECRET}"
}
}
}
}
EOF
) | grep -i X-Subject-Token

출력 결과에서 X-Subject-Token 값을 확인합니다.

설명
“X-Subject-Token”API 인증 토큰
정보

API 인증 토큰은 발급 후 12시간 동안 유효하며, 상황에 따라 12시간 이내라도 변경되거나 만료될 수 있습니다. 이 경우, 새로운 토큰을 발급받아야 합니다.

2. Credential 발급

S3 API를 사용하기 위한 자격 증명(Credential)을 발급받습니다. 이 자격 증명은 Object Storage와 안전하게 연동할 때 필요합니다.

필요한 정보

  • API 인증 토큰 : Step 1. API 인증 토큰 발급
  • 사용자 고유 ID: [콘솔] > [계정 정보]에서 확인
  • 프로젝트 ID: 콘솔 메인 화면에서 확인
Credential 발급
curl -s -X POST -i https://iam.kakaocloud.com/identity/v3/users/${USER_ID}/credentials/OS-EC2 \
-H "Content-Type: application/json" \
-H "X-Auth-Token: ${API_TOKEN}" -d \
'{
"tenant_id": "${PROJECT_ID}"
}'

출력 결과에서 access, secret 값을 확인합니다.

설명
“access”Credential
“secret”Credential Secret
주의

한번 발급 받은 Credential은 지속적으로 사용할 수 있으므로 안전한 장소에 저장하고, 보안을 위해 외부에 노출되지 않도록 별도로 관리하시기 바랍니다.

시작하기

쿠버네티스 클러스터와 Object Storage를 생성하고, 이를 연동하여 데이터를 저장하고 활용하는 단계별 실습을 시작합니다.

Step 1. 쿠버네티스 클러스터 생성

쿠버네티스 클러스터는 컨테이너화된 애플리케이션을 배포하고 관리하는 기본 단위입니다. 클러스터는 카카오클라우드에서 제공하는 Kubernetes Engine을 사용하여 생성할 수 있으며, 자세한 방법은 쿠버네티스 클러스터 생성 문서를 참고하여 진행합니다.

Step 2. Object Storage 생성

Object Storage는 대규모 데이터를 객체(Key-Value) 형태로 저장하고 관리하는 데 최적화된 서비스입니다. 특히 이미지, 비디오, 문서 등 비정형 데이터를 효율적으로 처리할 수 있습니다. Object Storage 생성 문서를 참고하여 카카오클라우드 콘솔 > Object Storage에서 버킷을 생성합니다.

Step 3. 쿠버네티스 클러스터에서 S3 Secret 생성하기

발급받은 Credential을 이용하여 쿠버네티스 클러스터에서 S3 Secret을 생성합니다. 생성된 S3 Secret은 Pod에서 환경 변수를 통해 안전하게 참조되며, Object Storage와 연동하는 데 필요한 인증 정보를 제공합니다. 2. Credential 발급 단계에서 발급받은 accesssecret 값을 입력합니다.

S3 Secret 생성
kubectl create secret generic s3-secret \
--from-literal=credential="${access}" \
--from-literal=credential-secret="${secret}" \
--from-literal=region="kr-central-2" \
--from-literal=endpoint-url="https://objectstorage.kr-central-2.kakaocloud.com"

Step 4. Pod 작성 및 배포

S3 Secret을 참조하는 Pod의 YAML 파일을 작성한 후, 이를 쿠버네티스 클러스터에 배포하여 Object Storage에 접근할 수 있는 환경을 설정합니다.

s3-pod.yaml
apiVersion: v1
kind: Pod
metadata:
name: s3-access-pod
spec:
containers:
- name: s3-container
image: ubuntu
env:
- name: AWS_ACCESS_KEY_ID
valueFrom:
secretKeyRef:
name: s3-secret
key: credential
- name: AWS_SECRET_ACCESS_KEY
valueFrom:
secretKeyRef:
name: s3-secret
key: credential-secret
- name: AWS_REGION
valueFrom:
secretKeyRef:
name: s3-secret
key: region
- name: AWS_ENDPOINT_URL
valueFrom:
secretKeyRef:
name: s3-secret
key: endpoint-url
command: ["/bin/sh", "-c"]
args:
- |
apt update && \
apt install -y curl unzip && \
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" && \
unzip awscliv2.zip && \
./aws/install && \
aws --version && \
sleep 3600
Pod 배포
kubectl apply -f s3-pod.yaml

Step 5. Object storage 접근 확인

배포된 Pod를 통해 Object Storage와의 연결 상태를 확인합니다.

Pod에서 Object Storage 연동 확인
kubectl exec -it s3-access-pod -- aws s3 ls

명령어 실행 후 Object Storage에 저장된 파일 또는 디렉터리 목록이 출력되면, 연결이 성공적으로 설정되었음을 의미합니다.