kubectl create secret generic openai-secret --from-literal=API_KEY=실제_API_KEY
import os
api_key = os.environ["OPENAI_API"]
docker build -t <username>/chatgpt-project:v1 .
docker push <username>/chatgpt-project:v1
👉 이번 강의는 Docker → Kubernetes 전환의 실전 단계를 보여주었으며, 실습 파일(deploy.yaml, Dockerfile, main.py)과 함께 보안·확장성·운영환경 고려가 중요한 배움의 포인트였습니다.
다음 중 Kubernetes에서 민감정보(API Key 등)를 안전하게 관리하기 위해 가장 적절한 방법은 무엇인가?
① Pod 내부에 하드코딩한다.
② ConfigMap에 평문으로 저장한다.
③ Secret 객체를 생성하여 환경변수로 주입한다.
④ Dockerfile 내부에 직접 작성한다.
정답: ③
해설: Kubernetes에서는 비밀번호·API Key와 같은 민감정보를 Secret으로 관리하고, Pod에 환경변수 또는 Volume으로 주입한다.
아래는 deploy.yaml의 일부이다. 빈칸 (A), (B)에 들어갈 올바른 값은?
env:
- name: (A)
valueFrom:
secretKeyRef:
name: openai-secret
key: (B)
① (A) OPENAI_API, (B) API_KEY
② (A) API_KEY, (B) OPENAI_API
③ (A) SECRET_KEY, (B) OPENAI_KEY
④ (A) OPENAI_SECRET, (B) API_SECRET
정답: ①
해설: deploy.yaml에서 환경변수명은 OPENAI_API, Secret 객체의 key는 API_KEY이다 .
다음 중 Kubernetes Deployment 객체에 대한 설명으로 옳지 않은 것은?
① Replica 수를 지정하여 Pod 복제본을 관리할 수 있다.
② Pod가 실패하면 자동으로 재시작된다.
③ 컨테이너 이미지 버전 관리가 가능하다.
④ Service를 반드시 함께 생성해야 Deployment가 동작한다.
정답: ④
해설: Deployment는 Service와 독립적으로 동작할 수 있다. 다만 외부 접근을 위해 Service가 필요할 뿐, 필수 조건은 아니다.
다음은 Kubernetes 배포 과정의 일부이다. 올바른 순서를 나열하시오.
ㄱ. docker build 명령어로 이미지 빌드
ㄴ. kubectl create secret generic 명령어로 Secret 생성
ㄷ. kubectl apply -f deploy.yaml 명령어 실행
ㄹ. docker push 명령어로 Docker Hub에 이미지 푸시
① ㄱ → ㄹ → ㄴ → ㄷ
② ㄱ → ㄷ → ㄹ → ㄴ
③ ㄴ → ㄱ → ㄹ → ㄷ
④ ㄹ → ㄱ → ㄷ → ㄴ
정답: ①
해설: 먼저 이미지를 빌드하고(ㄱ), 레지스트리에 푸시(ㄹ), API Key를 Secret에 등록(ㄴ), 마지막으로 deploy.yaml을 적용(ㄷ)한다.
다음 중 NodePort Service에 대한 설명으로 옳은 것을 모두 고르시오.
ㄱ. 클러스터 내부에서만 접근 가능하다.
ㄴ. 외부 클라이언트는 특정 Node IP와 NodePort를 통해 접근 가능하다.
ㄷ. NodePort는 기본적으로 30000–32767 범위의 포트를 사용한다.
ㄹ. NodePort는 클라우드 환경에서 LoadBalancer Service의 기반으로 사용될 수 있다.
① ㄱ, ㄴ
② ㄴ, ㄷ
③ ㄴ, ㄷ, ㄹ
④ ㄱ, ㄷ, ㄹ
정답: ③
해설: NodePort는 외부 접근을 가능하게 하고, 포트 범위는 30000~32767이다. 또한 LoadBalancer Service는 내부적으로 NodePort를 기반으로 동작한다.