소개
이 랩에서는 Docker Swarm 의 설정을 관리하고 수정하는 방법을 배우게 됩니다. 먼저, 머신에서 Docker Swarm 을 초기화하여 스웜 매니저 (swarm manager) 로 만들 것입니다.
초기화 후, docker swarm inspect 명령을 사용하여 현재 스웜의 구성을 확인하는 방법을 살펴보겠습니다. 이를 통해 기본 설정을 확인할 수 있습니다. 그런 다음, 이 랩에서는 docker swarm update 명령을 사용하여 주요 스웜 파라미터, 특히 노드 인증서 만료 기간과 작업 기록 보존 제한을 업데이트하는 과정을 안내합니다. 마지막으로, 스웜 설정을 다시 검사하여 변경 사항이 성공적으로 적용되었는지 확인합니다.
Docker Swarm 초기화
이 단계에서는 Docker Swarm 을 초기화하는 방법을 배우게 됩니다. Docker Swarm 은 Docker 를 실행하는 머신 그룹으로, 클러스터로 결합됩니다. 스웜에 가입한 후에는 익숙한 Docker 명령을 계속 실행할 수 있으며, 스웜은 이를 클러스터에 분산시킵니다.
스웜을 초기화하려면 docker swarm init 명령을 사용합니다. 이 명령은 현재 머신을 스웜 매니저 (swarm manager) 로 만듭니다.
터미널을 열고 다음 명령을 실행하여 Docker Swarm 을 초기화합니다.
docker swarm init
다음과 유사한 출력이 표시되어 스웜이 초기화되었음을 나타내며, 이 스웜에 다른 노드를 가입시키는 명령을 제공합니다.
Swarm initialized: current node (xxxxxxxxxxxx) is now a manager.
To add a worker to this swarm, run the following command:
docker swarm join --token SWMTKN-1-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 192.168.99.100:2377
To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
이 명령은 현재 머신을 스웜 매니저로 만듭니다. 실제 시나리오에서는 고가용성을 위해 일반적으로 여러 매니저를 사용하지만, 이 랩에서는 하나의 매니저로 충분합니다.
현재 스웜 설정 보기
이 단계에서는 Docker Swarm 의 현재 설정을 보는 방법을 배우게 됩니다. 이는 현재 구성을 이해하고 설정을 업데이트한 후 변경 사항을 확인하는 데 유용합니다.
스웜 설정을 보려면 docker swarm inspect 명령을 사용합니다. 이 명령은 스웜 ID, 생성 날짜 및 다양한 구성 설정을 포함하여 스웜에 대한 자세한 정보를 제공합니다.
터미널을 열고 다음 명령을 실행하여 Docker Swarm 을 검사합니다.
docker swarm inspect
출력은 스웜 구성을 포함하는 JSON 객체입니다. 구성 가능한 설정을 포함하는 Spec 섹션을 찾습니다. 작업 기록 및 노드 인증서와 관련된 설정을 포함하는 Orchestration 및 Dispatcher 필드에 주의하십시오.
예를 들어, 다음과 유사한 출력을 볼 수 있습니다 (정확한 값은 다를 수 있습니다).
[
{
"ID": "xxxxxxxxxxxx",
"Version": {
"Index": 10
},
"CreatedAt": "2023-10-27T10:00:00.000000000Z",
"UpdatedAt": "2023-10-27T10:00:00.000000000Z",
"Spec": {
"Orchestration": {
"TaskHistoryRetentionLimit": 5
},
"Raft": {
"SnapshotInterval": 10000,
"KeepOldSnapshots": 0,
"LogEntriesForSlowFollowers": 500,
"ElectionTick": 3,
"HeartbeatTick": 1
},
"Dispatcher": {
"HeartbeatPeriod": 5000000000
},
"CAConfig": {
"NodeCertExpiry": 7776000000000000,
"ExternalCAs": null,
"SigningCACert": "...",
"SigningCAKey": "...",
"ForceRotate": 0
},
"TaskDefaults": {
"LogDriver": null
}
},
"TLSInfo": {
"TrustRoot": "...",
"CertIssuerSubject": "CN=swarm-ca",
"CertIssuerPublicKey": "..."
},
"RootRotationInProgress": false
}
]
Spec 섹션에서 Orchestration 아래의 TaskHistoryRetentionLimit와 CAConfig 아래의 NodeCertExpiry를 찾을 수 있습니다. 이는 다음 단계에서 수정할 설정입니다.
노드 인증서 만료 기간 업데이트
이 단계에서는 Docker Swarm 에서 노드 인증서의 만료 기간을 업데이트하는 방법을 배우게 됩니다. 노드 인증서는 스웜 노드 간의 안전한 통신에 사용됩니다. 기본적으로 이러한 인증서는 3 개월 후에 만료됩니다. 보안 정책 및 운영 요구 사항에 따라 이 기간을 조정할 수 있습니다.
노드 인증서 만료 기간을 업데이트하려면 --cert-expiry 플래그와 함께 docker swarm update 명령을 사용합니다. --cert-expiry의 값은 기간 문자열입니다. 예를 들어, 24 시간은 24h, 30 일 (720 시간) 은 720h, 만료를 비활성화하려면 0을 사용합니다 (프로덕션 환경에서는 권장하지 않음).
노드 인증서 만료 기간을 30 일 (720 시간) 으로 업데이트해 보겠습니다. 터미널을 열고 다음 명령을 실행합니다.
docker swarm update --cert-expiry 720h
업데이트를 확인하는 출력을 볼 수 있습니다.
Swarm updated.
이 명령은 새로운 인증서 만료 기간을 설정하도록 스웜 구성을 업데이트합니다. 이 업데이트 이후에 발급된 새로운 노드 인증서는 새로운 만료 기간을 갖게 됩니다. 기존 인증서는 인증서 회전을 강제하지 않는 한, 원래 발급 날짜와 이전 만료 설정에 따라 계속 만료됩니다.
작업 기록 보존 제한 업데이트
이 단계에서는 Docker Swarm 에서 작업 기록 보존 제한을 업데이트하는 방법을 배우게 됩니다. 작업 기록 보존 제한은 스웜의 기록에 보관되는 완료되거나 실패한 작업의 수를 결정합니다. 작업 기록을 유지하는 것은 디버깅 및 모니터링에 도움이 될 수 있지만, 너무 많은 기록을 유지하면 과도한 리소스를 소비할 수 있습니다.
작업 기록 보존 제한을 업데이트하려면 --task-history-limit 플래그와 함께 docker swarm update 명령을 사용합니다. --task-history-limit의 값은 보존할 작업 수를 나타내는 정수입니다.
작업 기록 보존 제한을 10 으로 업데이트해 보겠습니다. 터미널을 열고 다음 명령을 실행합니다.
docker swarm update --task-history-limit 10
업데이트를 확인하는 출력을 볼 수 있습니다.
Swarm updated.
이 명령은 마지막 10 개의 완료되거나 실패한 작업의 기록을 보존하도록 스웜 구성을 업데이트합니다.
업데이트된 Swarm 설정 확인
이 마지막 단계에서는 이전 단계에서 업데이트한 스웜 설정이 성공적으로 적용되었는지 확인합니다. docker swarm inspect 명령을 다시 사용하고 NodeCertExpiry 및 TaskHistoryRetentionLimit의 값을 확인합니다.
터미널을 열고 다음 명령을 실행하여 Docker Swarm 을 검사합니다.
docker swarm inspect
출력된 JSON 을 검토합니다. Spec 섹션을 찾은 다음, CAConfig 아래에서 NodeCertExpiry의 값과 Orchestration 아래에서 TaskHistoryRetentionLimit의 값을 확인합니다.
NodeCertExpiry가 이제 2592000000000000 (나노초 단위로 30 일을 나타냄) 으로 설정되어 있고 TaskHistoryRetentionLimit가 10으로 설정되어 있는지 확인해야 합니다.
예를 들어, 출력의 관련 부분은 다음과 같이 표시됩니다.
[
{
...
"Spec": {
"Orchestration": {
"TaskHistoryRetentionLimit": 10
},
...
"CAConfig": {
"NodeCertExpiry": 2592000000000000,
...
},
...
},
...
}
]
스웜 구성을 검사하여 업데이트가 성공했는지 확인할 수 있습니다.
요약
이 랩에서는 docker swarm init 명령을 사용하여 Docker Swarm 을 초기화하고 현재 머신을 스웜 매니저로 만드는 방법을 배웠습니다. 그런 다음 docker swarm inspect 명령을 사용하여 현재 스웜 설정을 확인하는 방법을 살펴보았습니다. 이 명령은 구성 가능한 설정이 포함된 Spec 섹션을 포함하여 스웜 구성에 대한 자세한 JSON 출력을 제공합니다.
초기화 및 검사 후, 특정 스웜 설정을 업데이트하는 연습을 했습니다. docker swarm update 명령을 사용하여 노드 인증서 만료 기간과 작업 기록 보존 제한을 수정하는 방법을 배웠습니다. 마지막으로, docker swarm inspect 명령을 다시 사용하고 출력에서 업데이트된 구성을 검사하여 이러한 변경 사항이 성공적으로 적용되었는지 확인했습니다.



