쿠버네티스(kubernetes)

쿠버네티스 Secret 사용방법

토끼C 2024. 6. 24. 18:15
반응형

 

 쿠버네티스에서 Secret은 암호, 토큰 또는 키와 같은 소량의 중요한 데이터를 포함하는 오브젝트이다. POD로 배포할 애플리케이션에서 사용하는 비밀번호, 암호, 토큰과 같은 주요 데이터가 직접 노출되는 것을 방지하기 위해 주로 사용한다.

 secret은 사용되는 목적에 따라서 종류가 다양하다. secret의 종류와 종류별 생성 방법은  https://kubernetes.io/ko/docs/concepts/configuration/secret/#secret-types에서 확인할 수 있다.

 

시크릿(Secret)

시크릿은 암호, 토큰 또는 키와 같은 소량의 중요한 데이터를 포함하는 오브젝트이다. 이를 사용하지 않으면 중요한 정보가 파드 명세나 컨테이너 이미지에 포함될 수 있다. 시크릿을 사용한다

kubernetes.io

 

 

다음은 secret을 생성하고, deployment 에서 env 값으로 설정하는 예제이다.

  1. base64 인코딩echo
    [LYJ@worker nexus]$ echo  c2VjcmV0MTIzCg== |base64 --decode
    secret123
    - 인코딩 할 문자열| base64 명령어를 사용하여 'c2VjcmV0MTIzCg==’ 와 같이 인코딩된 값을 얻을 수 있다.

    참고로 디코딩 하는 방법은 다음과 같다.
    [LYJ@worker nexus]$ echo  c2VjcmV0MTIzCg== |base64 --decode
    secret123​
     
     
  2. secret 오브젝트 생성하기kubectl apply -f secret.yaml 수행하여 secret 생성
    # secret.yaml
    
    apiVersion: v1
    kind: Secret
    metadata:
      name: test-secret
    type: Opaque  //임의의 사용자 정의 데이터를 나타낼 때 사용하는 타입이다.
    data:
      password: c2VjcmV0MTIzCg==​
    - kubectl apply -f secret.yaml 수행하여 secret 생성


  3. POD에서 시크릿을 환경 변수 형태로 사용하기|
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: test-deployment
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: test
      template:
        metadata:
          labels:
            app: test
        spec:
          containers:
          - name: nexus
            image: test-image
            ports:
            - containerPort: 8081
            env:
            - name: ADMIN_PASSWORD #사용할 env명
              valueFrom:
                secretKeyRef: #이 부분이 중요함
                  name: test-secret #위에서 생성한 secret 이름
                  key: password
    
    - kubectl apply -f deployment.yaml 수행하여 POD배포

  4. secret 적용 확인
    kubectl exec -it bash POD명 수행하여 컨테이너 접속
    [root@test-deployment-699b5ddcfc-v4tlp /]# env
    ADMIN_PASSWORD=secret123
    - 컨테이너 내부에 접속하여 환경변수 확인

 

반응형