# 실험대의 구성 ## Alternative text test-server 호스트의 nginx 가 kc-lab-1 의 traefik 으로 프록시하고, 그 아래 두 VM 에 Keycloak 과 데이터 저장소가 나뉘어 있는 구성. ## Long description 베어메탈 test-server 위에 VM 두 대를 올렸다. kc-lab-1 이 k3s server 이자 컨트롤 플레인이고 keycloak-1 이 여기 있다. kc-lab-2 는 agent 이며 keycloak-0 과 PostgreSQL, Redis 가 함께 있다. 저장소가 한 노드에 몰려 있어 그 노드를 잃으면 DB 도 같이 잃는다. 호스트 nginx 가 Let's Encrypt 인증서로 TLS 를 끝내고 traefik 으로 넘기며, 인증서 하나에 auth·app1·app2 세 이름이 SAN 으로 들어 있다. ## Elements and evidence - **호스트 nginx** (gateway): Let's Encrypt 인증서로 TLS 를 끝내고 traefik 으로 넘긴다. Evidence: L88–L92. - **traefik (kc-lab-1)** (gateway): k3s 의 인그레스. 호스트 이름으로 서비스를 고른다. Evidence: L85–L87. - **keycloak-1** (service): 컨트롤 플레인 노드에 있다. Evidence: L85–L86. - **keycloak-0** (service): 저장소와 같은 노드에 있다. Evidence: L86–L87. - **PostgreSQL · Redis** (datastore): 둘 다 kc-lab-2 에 있다. 이 노드를 잃으면 저장소도 같이 잃는다. Evidence: L86–L87. ## Relationships - **keycloak-0 → PostgreSQL · Redis:** 같은 노드. Evidence: L86–L87. - **호스트 nginx → traefik (kc-lab-1):** TLS 종단. Evidence: L88–L92. - **traefik (kc-lab-1) → keycloak-0:** 라우팅. Evidence: L85–L87. - **traefik (kc-lab-1) → keycloak-1:** 라우팅. Evidence: L85–L87.