본문으로 건너뛰기

Kubernetes Engine과 Object Storage 연동

쿠버네티스 클러스터와 카카오클라우드 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 인증 토큰 : API 인증 토큰 발급
  • 사용자 UUID: [콘솔] > [계정 정보]에서 확인
  • 프로젝트 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 생성 문서를 참고하여 카카오클라우드 콘솔 > Storage > Object Storage에서 버킷을 생성합니다.

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

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

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에 저장된 파일 또는 디렉터리 목록이 출력되면, 연결이 성공적으로 설정되었음을 의미합니다.