K8s 환경변수 (Secret)

Yuno·2025년 4월 6일

쿠버네티스 K8s

목록 보기
7/7

🚀 K8s 의 환경변수

개념설명
ConfigMap설정 파일이나 환경 변수처럼 민감하지 않은 값 저장
Secret비밀번호, API 키 등 민감한 정보 저장 (암호화됨)
  • Pod 가 이 값들을 환경변수로 주입받아 실행되는 방법

🚀 Secret 실습해보기

🛠️ Step 1: Spring Boot 코드 수정

✅ application.properties 에 설정 추가

secret.token=${MY_SECRET_TOKEN:default-secret}

✅ 기존 컨트롤러 수정

package com.springk8sdemo;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {

  @Value("${secret.token}")
  private String secretToken;

  @GetMapping("/secret")
  public String secret() {
    return "🔐 Secret Token: " + secretToken;
  }
}

🛠️ Step 2: Docker 이미지 빌드

./gradlew build
docker build -t spring-k8s-demo:secret .

🛠️ Step 3: Secret 만들기

✅ Secret 키 Base64 로 암호화 하기

  • https://www.base64encode.org/ 에서 간단히 암호화 하기
  • 암호화 하려는 값 : springboot-my-secret-key
  • 인코딩된 값 : c3ByaW5nYm9vdC1teS1zZWNyZXQta2V5

✅ secret.yaml 파일 생성

apiVersion: v1
kind: Secret
metadata:
  name: my-secret
type: Opaque
data:
  MY_SECRET_TOKEN: c3ByaW5nYm9vdC1teS1zZWNyZXQta2V5

✅ 적용하기

kubectl apply -f secret.yaml

🛠️ Step 4: Deployment 에 Secret 연결

✅ spring-k8s-deployment.yaml 수정

containers:
  - name: spring-k8s-demo
	image: spring-k8s-demo:secret
	imagePullPolicy: Never
	ports:
	  - containerPort: 8080
	env:
	  - name: MY_SECRET_TOKEN
		valueFrom:
		  secretKeyRef:
			key: MY_SECRET_TOKEN
			name: my-secret

✅ 적용하기

kubectl apply -f spring-k8s-deployment.yaml

🛠️ Step 5: 결과 확인

minikube service spring-k8s-service

→ 반환

|-----------|--------------------|-------------|---------------------------|
| NAMESPACE |        NAME        | TARGET PORT |            URL            |
|-----------|--------------------|-------------|---------------------------|
| default   | spring-k8s-service |        8080 | http://192.168.49.2:30080 |
|-----------|--------------------|-------------|---------------------------|
🏃  spring-k8s-service 서비스의 터널을 시작하는 중
|-----------|--------------------|-------------|------------------------|
| NAMESPACE |        NAME        | TARGET PORT |          URL           |
|-----------|--------------------|-------------|------------------------|
| default   | spring-k8s-service |             | http://127.0.0.1:63101 |
|-----------|--------------------|-------------|------------------------|
🎉  Opening service default/spring-k8s-service in default browser...
❗  darwin 에서 Docker 드라이버를 사용하고 있기 때문에, 터미널을 열어야 실행할 수 있습니다

👉 제공받은 http://127.0.0.1:63101/secret 로 브라우저에서 접근

profile
Hello World

0개의 댓글