본문으로 건너뛰기

Environment Variable Management

애플리케이션의 환경 변수 정보는 YAML 파일에 하드코딩될 수 있지만, 재사용성이 부족합니다. 운영 관점에서 애플리케이션을 실행하는 코드와 애플리케이션에 주입되는 구성 코드를 분리하면 재사용성을 크게 향상시킬 수 있습니다. 애플리케이션의 이러한 내부 구성 값은 외부에서 관리되고 Kubernetes의 Secret ConfigMap 리소스를 사용하여 컨테이너에 주입될 수 있습니다.

노트

Secret는 비밀번호, API 키, SSH 키 등과 같은 보안 민감 정보를 컨테이너에 주입할 때 사용됩니다.

ConfigMap은 비민감 구성 정보를 컨테이너에 주입할 때 사용됩니다.

환경 변수 목록

이것은 애플리케이션의 환경 변수로 등록된 Secret 및 ConfigMap 정보를 관리하기 위한 인터페이스입니다:

① Env/Properties 구성 정보 목록.

  • Name: 환경 변수의 이름입니다.
  • Secret/ConfigMap Name: 환경 변수를 관리하는 Secret 또는 ConfigMap의 이름입니다. Kubernetes 환경에서 애플리케이션에서 사용되는 환경 변수는 Secret/ConfigMap으로 관리됩니다.
  • Type: 화면에 다음과 같이 표시됩니다:
    • ConfigMap인 경우, ConfigMap만 표시됩니다.
    • Secret인 경우, 특정 유형의 비밀이 표시됩니다 (dockerconfigjson, opaque, tls, service-account-token, basic-auth 등…)
      • Opaque (generic): ConfigMap과 동일한 용도로 사용할 수 있는 범용 비밀입니다. 민감한 데이터를 컨테이너에 전달하는 데에도 사용할 수 있습니다.
  • Dockerconfigjson: Docker 이미지 저장소에 접근하기 위한 인증 정보를 사용하는 데 사용됩니다. Kubernetes는 컨테이너를 관리하므로 이미지 저장소에 접근해야 하며, Docker Hub나 ECR과 같은 저장소의 개인 이미지에 대해서는 추가 인증이 필요합니다. dockerconfigjson은 이러한 개인 레지스트리에 접근하는 데 사용되는 비밀입니다.
  • tls: TLS 인증서를 비밀로 관리하는 데 도움을 줍니다. TLS 인증서 정보가 비밀에 저장되면, Pods나 Services와 같은 객체가 이를 암호화된 통신에 사용할 수 있습니다.
  • service-account-token: RBAC(역할 기반 접근 제어)를 위한 주요 Kubernetes API 리소스인 ServiceAccount와 관련이 있습니다. ServiceAccount는 Pod에 연결되어 권한을 설정합니다. ServiceAccount가 연결되면 인증 정보가 포함된 토큰이 자동으로 비밀로 생성됩니다.
  • basic-auth: 기본 인증을 위한 자격 증명을 저장하기 위해 제공되는 유형입니다.

이 비밀 유형을 사용할 때, 비밀의 데이터 필드에는 다음 두 키 중 하나가 포함되어야 합니다:

username: 인증을 위한 사용자 이름,

password: 인증을 위한 비밀번호 또는 토큰.

  • Namespace: Secret/Configmap이 배포된 클러스터 네임스페이스입니다.
  • Microservice: 현재 환경 변수를 사용하고 있는 마이크로서비스/애플리케이션의 이름입니다.
  • Action: 환경 변수 정보에 대한 추가 작업 버튼입니다.
    • Edit : 환경 변수의 편집 페이지로 이동합니다.
    • Delete : 환경 변수를 삭제합니다.

② ConfigMap 가져오기: Kubernetes에 배포된 Secrets/ConfigMaps에서 선택하고 등록할 수 있습니다.

③ 새로운 Secret/ConfigMap 리소스를 생성합니다.

④ Secret/ConfigMap 정보를 삭제합니다.

⑤ 이름 또는 네임스페이스와 관련하여 검색된 값으로 뷰를 필터링합니다.

환경 변수 생성

From the Environment Variables List screen, click on button “Add new” to create a new Secret/ConfigMap.

ConfigMap 생성 (파일 유형)

이것은 ConfigMap 생성 페이지의 각 항목에 대한 자세한 설명입니다.

① 유형: 환경 변수를 저장하기 위해 ConfigMap과 Secret 유형 중에서 선택합니다.

② 이름: 애플리케이션의 구성 정보를 관리할 ConfigMap의 이름입니다.

③ 네임스페이스: 프로필에 등록된 네임스페이스 목록에서 ConfigMap을 사용할 네임스페이스를 선택합니다.

④ ConfigMap 유형: ConfigMap은 Property 및 File 형식을 모두 지원합니다. 세부 사항은 다음과 같습니다:

  • Property: 구성 정보를 Key/Value 형식으로 등록할 수 있는 유형입니다.
  • File: 기존 구성 파일을 등록할 수 있는 유형입니다. 예를 들어, SpringBoot 애플리케이션의 application.yaml 파일을 별도로 관리하려면 File 유형을 사용합니다.

⑤ 마운트 경로: File 유형을 선택할 때, 파일이 애플리케이션에 주입되고 마운트될 경로를 입력합니다.

⑥ 파일 추가: 여러 파일을 입력할 수 있으며, 추가 파일마다 추가 버튼을 클릭합니다.

⑦ 삭제 버튼: 추가된 파일 정보를 삭제합니다.

⑧ 취소: ConfigMap 생성 페이지에서 취소합니다.

⑨ 저장: 입력한 정보를 저장하여 ConfigMap을 생성합니다.

ConfigMap 생성 (속성 유형)

① 유형: 환경 변수를 저장하기 위해 ConfigMap과 Secret 유형 중에서 선택합니다.

② 이름: 애플리케이션의 구성 정보를 관리할 ConfigMap의 이름입니다.

③ 네임스페이스: 프로필에 등록된 네임스페이스 목록에서 ConfigMap을 사용할 네임스페이스를 선택합니다.

④ ConfigMap 유형: 적절한 Property를 선택합니다:

  • 속성: 구성 정보를 Key/Value 형식으로 등록할 수 있는 유형입니다.
  • 파일: 기존 구성 파일의 등록을 허용하는 유형입니다. 예를 들어, SpringBoot 애플리케이션의 application.yaml 파일을 별도로 관리하려면 파일 유형을 사용하십시오.

⑤ 데이터 (데이터 등록): 애플리케이션의 구성 정보를 다음과 같이 입력합니다:

  • 키: 환경 변수의 키입니다.
  • 값: 환경 변수의 값입니다.
  • 환경 변수: 실제 애플리케이션에서 주입되어 사용될 수 있는 env 이름입니다.
  • Spring 속성 (선택 사항): application.yaml 파일의 속성과 매핑되는 변수 이름을 입력합니다.

⑥ 추가 버튼: 추가 버튼을 클릭하여 새로운 구성 정보를 추가할 수 있습니다. 이 페이지에서는 여러 구성 정보를 생성할 수 있습니다.

⑦ 삭제 버튼: 추가된 구성 정보를 삭제할 수 있습니다.

⑧ 저장: 입력한 정보를 저장하여 ConfigMap을 생성합니다.

비밀 생성 (불투명 유형)

비밀 생성 페이지의 각 항목에 대한 자세한 설명입니다.

① 유형: 비밀의 유형을 선택합니다. 비밀은 비밀번호, API 키, SSH 키 등과 같은 민감한 정보를 컨테이너에 주입해야 할 때 사용됩니다.

② 이름: 비밀의 이름을 입력합니다.

③ 네임스페이스: 프로필에 등록된 네임스페이스 목록에서 비밀의 네임스페이스를 선택합니다.

④ 비밀 유형: Secrets support 두 가지 Opaquekubernetes.io/dockerconfigjson 형식입니다.

  • Opaque: Key/Value 형식으로 구성 정보를 등록하는 방법입니다. (자세한 설명은 환경 변수 목록 섹션에서 확인할 수 있습니다).
  • kubernetes.io/dockerconfigjson: 이미지를 등록하기 위해 인증 정보를 등록하는 방법입니다. (자세한 설명은 환경 변수 목록 섹션에서 확인할 수 있습니다).

⑤ 데이터 (데이터 등록): 구성 데이터를 입력하는 것과 유사하게 데이터를 입력합니다.

  • 키: 환경 변수의 키입니다.
  • 값: 환경 변수의 값입니다.
  • 환경 변수: 실제 애플리케이션에서 주입되어 사용될 수 있는 env 이름입니다.
  • 스프링 속성 (선택 사항): application.yaml 파일의 속성과 매핑되는 변수 이름을 입력합니다.

⑥ 추가 버튼: 여러 개의 키-값 데이터 쌍을 입력할 수 있으며, 각 새 항목에 대해 추가 버튼을 클릭합니다.

⑦ 삭제 버튼: 특정 키-값 데이터를 삭제합니다.

⑧ 저장: 입력한 정보를 저장하여 비밀을 생성합니다.

비밀 생성 (kubernetes.io/dockerconfigjson 유형)

이 섹션은 dockerconfigjson 유형의 비밀 생성 페이지에 있는 각 항목에 대한 자세한 설명을 제공합니다.

① 유형: ConfigMap 또는 Secret을 생성하는지 선택합니다.

② 이름: 비밀의 이름을 입력합니다.

③ 네임스페이스: 프로필에 등록된 네임스페이스 목록에서 비밀의 네임스페이스를 선택합니다.

④ 비밀 유형: 비밀은 Opaquekubernetes.io/dockerconfigjson 형식을 모두 지원합니다.

  • Opaque: 키/값 형식으로 구성 정보를 등록하는 방법입니다. (자세한 설명은 환경 변수 목록 섹션에서 확인할 수 있습니다.)
  • kubernetes.io/dockerconfigjson: 이미지를 등록하기 위해 인증 정보를 등록하는 방법입니다. (자세한 설명은 환경 변수 목록 섹션에서 확인할 수 있습니다.) ⑤ 이미지 레지스트리: 이는 프로젝트 설정에 등록된 이미지 레지스트리 목록입니다. 생성 중인 비밀을 사용하여 인증할 이미지 레지스트리를 선택하십시오.

⑥ 저장 버튼: 입력한 정보를 저장하여 비밀을 생성합니다.

환경 변수 가져오기

환경 변수 목록에서 비밀/구성 맵을 가져오기 위해 파일 가져오기 버튼을 클릭하십시오.

구성 맵 가져오기 (속성 유형)

이 섹션에서는 속성 유형의 기존 구성 맵을 가져오는 방법을 설명합니다:

① 유형: 구성 맵 또는 비밀을 가져오는지 선택하십시오.

② 이름: 구성 맵의 이름을 입력하십시오.

③ 네임스페이스: 프로필에 등록된 네임스페이스 목록에서 구성 맵의 네임스페이스를 선택하십시오.

④ 구성 맵 유형: 구성 맵은 속성 및 파일 형식을 모두 지원합니다.

  • 속성: 구성 정보가 키/값 형식으로 등록되는 형식입니다.
  • 파일: 기존 구성 파일을 등록하는 형식입니다. 예를 들어, SpringBoot 애플리케이션의 application.yaml 파일을 별도로 관리하려면 파일 유형을 사용해야 합니다.

⑤ 구성 맵: 이는 ③에서 선택한 네임스페이스에 배포된 구성 맵 목록을 표시합니다. 가져오려는 구성 맵을 선택하십시오.

⑥ 데이터 (데이터 등록): 선택한 구성 맵의 키-값 데이터를 표시합니다. 가져오는 동안 이 키-값 정보를 수정할 수 없습니다.

⑦ 저장 버튼: 입력한 정보를 저장합니다.

구성 맵 가져오기 (파일 유형)

이 섹션에서는 파일 유형의 구성 맵 가져오기 페이지의 각 항목에 대한 자세한 설명을 제공합니다:

유형, 이름 및 네임스페이스 정보는 이전에 설정한 것과 동일합니다. ① ConfigMap 유형: ConfigMaps는 속성 및 파일 형식을 지원합니다. 속성: 구성 정보가 키/값 형식으로 등록되는 형식입니다. 파일: 기존 구성 파일을 등록하는 형식입니다. 예를 들어, SpringBoot application.yaml 파일을 분리하고 관리하는 데 사용합니다.

② ConfigMaps: 선택한 네임스페이스에 배포된 ConfigMap 목록을 표시합니다. 가져오려는 ConfigMap을 선택합니다.

③ 마운트 경로: 파일 형식이 선택된 경우, 파일이 애플리케이션에 마운트될 경로를 입력합니다.

④ 파일 등록: 선택한 ConfigMap의 구성 데이터를 표시합니다.

⑤ 저장 버튼: 입력한 정보를 저장합니다.

비밀 가져오기 (Env)

이 섹션에서는 환경 변수를 위한 기존 비밀을 가져오는 방법을 설명합니다.

유형, 이름 및 네임스페이스 정보는 이전에 설정한 것과 동일합니다. ① 비밀: 선택한 네임스페이스에 배포된 비밀 목록을 표시합니다. 가져오려는 비밀을 선택합니다.

② 비밀 유형: 선택한 비밀의 특정 유형을 표시합니다. 이 항목은 수정할 수 없습니다.

③ 데이터 (데이터 등록): 선택한 비밀의 상세 데이터를 표시합니다.

④ 저장 버튼: 입력한 정보를 저장합니다.

비밀 가져오기 (파일)

이 섹션에서는 파일 기반 구성을 위한 기존 비밀을 가져오는 방법을 설명합니다.

유형, 이름 및 네임스페이스 정보는 이전에 설정한 것과 동일합니다. ① 비밀: 선택한 네임스페이스에 배포된 비밀 목록을 표시합니다. 가져오려는 비밀을 선택합니다.

② 비밀 유형: 선택한 비밀의 특정 유형을 표시합니다. 이 항목은 수정할 수 없습니다.

③ 마운트 경로: 비밀 데이터가 애플리케이션에 마운트될 경로입니다. ④ readOnly: 마운트된 Secret이 읽기 전용인지 설정합니다.

⑤ 저장 버튼: 입력한 정보를 저장합니다.

환경 변수 편집

ConfigMap 편집 (파일)

이 섹션은 파일 유형의 ConfigMap 편집 페이지에 있는 각 항목에 대한 자세한 설명을 제공합니다.

① 마운트 경로: 파일 형식이 선택된 경우, 애플리케이션에 파일이 마운트될 경로를 입력합니다.

② 파일 등록: 새로운 구성 파일을 추가하거나 기존 파일을 수정합니다.

③ 저장 버튼: 입력한 정보를 저장합니다.

ConfigMap 편집 (속성)

이 섹션은 속성 유형의 ConfigMap 편집 페이지에 있는 각 항목에 대한 자세한 설명을 제공합니다.

① 데이터 (데이터 등록): 선택한 Secret의 자세한 데이터를 표시합니다.

② 저장 버튼: 입력한 정보를 저장합니다.

Secret 편집 (kubernetes.io/dockerconfigjson)

dockerconfigjson 유형의 Secret은 편집할 수 없습니다.

Secret 편집 (Opaque)

이 섹션은 Opaque 유형의 Secret 편집 페이지에 있는 각 항목에 대한 자세한 설명을 제공합니다.

① 데이터 (데이터 등록): 선택한 Secret의 자세한 데이터를 표시합니다.

② 저장 버튼: 입력한 정보를 저장합니다.

Secret 편집 (파일)

이 섹션은 자세한 설명을 제공합니다.

① 마운트 경로: 파일 형식이 선택된 경우, 애플리케이션에서 파일이 마운트될 경로를 입력합니다.

② 파일 등록: 새로운 구성 파일을 추가하거나 기존 파일을 수정합니다.

비밀 편집 (기타 유형 - 토큰 유형)

① 데이터 (데이터 등록): 선택한 비밀의 상세 데이터를 표시합니다.

② 저장 버튼: 입력한 정보를 저장합니다.