본문 바로가기
서버구축 (WEB,DB)

Docker Swarm 클러스터 환경변수(configs)와 시크릿(secrets) 정보 관리

by 날으는물고기 2024. 1. 21.

Docker Swarm 클러스터 환경변수(configs)와 시크릿(secrets) 정보 관리

Docker에서는 configssecrets를 사용하여 설정 데이터 및 민감한 정보를 관리할 수 있습니다. 이들은 Swarm 모드에서 사용되며, 일반적으로 docker-compose.yml 파일을 사용하여 구성됩니다.

Docker Configs

  • configs는 설정 데이터를 관리하는 데 사용됩니다. 예를 들어, Nginx 설정 파일, Apache 설정 파일 등을 configs로 관리할 수 있습니다.
  • docker config 명령을 사용하여 config를 만들고 관리할 수 있습니다.
  • Docker Swarm 모드에서만 사용 가능하며, 각 서비스에서 해당 설정을 사용할 수 있습니다.

예:

version: '3.8'

services:
  web:
    image: nginx:latest
    configs:
      - source: my_config
        target: /etc/nginx/nginx.conf
        mode: 0440
        uid: "101"
        gid: "101"
# Docker Config 생성
docker config create my_config /path/to/nginx.conf

# Docker 서비스 배포
docker stack deploy -c docker-compose.yml my_stack

Docker Secrets

  • secrets는 민감한 정보를 안전하게 저장하고 관리하는 데 사용됩니다. 예를 들어, 데이터베이스 비밀번호, API 키 등을 secrets로 저장할 수 있습니다.
  • docker secret 명령을 사용하여 secret을 만들고 관리할 수 있습니다.
  • Docker Swarm 모드에서만 사용 가능하며, 각 서비스에서 해당 비밀 정보를 사용할 수 있습니다.

예:

version: '3.8'

services:
  db:
    image: postgres:latest
    environment:
      POSTGRES_DB: my_database
      POSTGRES_USER_FILE: /run/secrets/db_user
      POSTGRES_PASSWORD_FILE: /run/secrets/db_password
    secrets:
      - db_user
      - db_password

secrets:
  db_user:
    external: true
  db_password:
    external: true
# Docker Secret 생성
echo "my_db_user" | docker secret create db_user -
echo "my_db_password" | docker secret create db_password -

# Docker 서비스 배포
docker stack deploy -c docker-compose.yml my_stack

위 예제에서 docker-compose.yml 파일의 secrets 섹션에서 외부로 생성된 시크릿을 참조하고 있습니다.

 

이렇게 생성된 configs 및 secrets는 Swarm 클러스터에서 안전하게 분배되며, 서비스는 각각의 설정과 비밀 정보에 접근할 수 있습니다. 이를 통해 보안을 강화하고 유지 관리를 더욱 편리하게 할 수 있습니다.

 

Docker Swarm의 configssecrets는 각각 별도의 위치에서 보관되고 관리됩니다.

Docker Configs

configs는 Docker Swarm의 관리된 서비스에서 사용됩니다. 이러한 설정은 Swarm의 데이터 저장소 내에서 안전하게 저장됩니다. 기본적으로 /var/lib/docker/swarm/configs 디렉토리에 저장되며, 이 디렉토리는 Docker에 의해 관리됩니다. 직접적으로 이 디렉토리를 수정하거나 삭제하는 것은 권장되지 않습니다.

Docker Secrets

secrets 또한 Docker Swarm의 데이터 저장소에서 안전하게 저장됩니다. 기본적으로 /var/lib/docker/swarm/secrets 디렉토리에 저장되며, Docker에 의해 관리됩니다. 직접적으로 이 디렉토리를 수정하거나 삭제하는 것은 권장되지 않습니다.

변경 및 업데이트

일반적으로 docker-compose.yml 파일을 수정하고 변경된 설정을 적용하는 방법을 사용합니다. 변경된 설정을 적용하려면 다음과 같은 단계를 따릅니다.

  1. Compose 파일 수정
    docker-compose.yml 파일을 편집하여 변경된 값을 업데이트합니다.
  2. 서비스 재시작 또는 재배포
    변경된 docker-compose.yml 파일을 사용하여 서비스를 다시 시작하거나 재배포합니다. 아래와 같은 명령어를 사용할 수 있습니다.
    docker-compose up -d
    또는 개별 서비스에 대한 경우:
    docker stack deploy -c docker-compose.yml my_stack
  3. 자동 갱신
    Swarm에서는 설정이나 시크릿이 변경되면 자동으로 갱신되지 않습니다. 따라서 서비스가 재시작되거나 재배포되어야 새로운 설정이나 시크릿이 반영됩니다.
  4. External 설정 또는 시크릿 사용
    변경 가능한 값들은 외부에서 관리되는 설정 파일이나 시크릿을 사용하여 설정할 수 있습니다. 이렇게 하면 변경이 필요할 때 외부에서 수정하고 Swarm 클러스터에 자동으로 적용됩니다.

주의: Swarm 모드에서만 configssecrets가 사용 가능하므로, 일반적인 Docker Compose 환경에서는 이러한 기능을 사용할 수 없습니다.

728x90

댓글