Update infra docs: MetalLB IP allocation, Traefik LB, ServiceLB disable, new certs, HAProxy changes
This commit is contained in:
@@ -5,7 +5,7 @@ updated: 2026-03-26
|
||||
|
||||
## 아키텍처
|
||||
|
||||
서울 K3s 클러스터 구성: 고객 도메인 → [[cloudflare]](DNS) → OpenWrt HAProxy (80/443) → APISIX hostNetwork (9080/9443, 3노드) → K3s 서비스 → pods
|
||||
서울 K3s 클러스터 구성: 고객 도메인 → [[cloudflare]](DNS) → OpenWrt HAProxy (80/443) → Traefik MetalLB 192.168.9.53 → K3s 서비스 → pods
|
||||
|
||||
오사카 구성: 고객 도메인 → [[cloudflare]](DNS) → [[crowdsec-safeline|SafeLine WAF]] → APISIX(라우팅) → 고객 오리진
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
---
|
||||
title: cert-manager SSL 인증서 관리
|
||||
updated: 2026-03-12
|
||||
updated: 2026-03-26
|
||||
---
|
||||
|
||||
## 인증
|
||||
@@ -38,3 +38,26 @@ it.com은 TLD(도메인 레지스트리)이며 kaffa가 소유한 zone이 아님
|
||||
## kr 도메인
|
||||
|
||||
*.kr.inouter.com → kr1만
|
||||
|
||||
## K3s cert-manager (Google Trust Services)
|
||||
|
||||
ClusterIssuer: `google-trust-prod`, DNS-01 챌린지 (Cloudflare API).
|
||||
Secret: `cloudflare-api-token` (cert-manager 네임스페이스).
|
||||
reflector로 전체 네임스페이스에 TLS 시크릿 자동 복제.
|
||||
|
||||
### 와일드카드 인증서 목록
|
||||
|
||||
| Certificate | Secret | 도메인 |
|
||||
|------------|--------|--------|
|
||||
| wildcard-inouter | wildcard-inouter-tls | *.inouter.com |
|
||||
| wildcard-anvil-it-com | wildcard-anvil-it-com-tls | *.anvil.it.com |
|
||||
| wildcard-actions-it-com | wildcard-actions-it-com-tls | *.actions.it.com |
|
||||
| wildcard-ironclad-it-com | wildcard-ironclad-it-com-tls | *.ironclad.it.com |
|
||||
| wildcard-keepanker-cv | wildcard-keepanker-cv-tls | *.keepanker.cv |
|
||||
| wildcard-servidor-it-com | wildcard-servidor-it-com-tls | *.servidor.it.com |
|
||||
| wildcard-api-inouter | wildcard-api-inouter-tls | *.api.inouter.com |
|
||||
| wildcard-mcp-inouter | wildcard-mcp-inouter-tls | *.mcp.inouter.com |
|
||||
|
||||
### Traefik Gateway 등록 인증서
|
||||
|
||||
websecure 리스너에 등록: wildcard-inouter-tls, wildcard-anvil-it-com-tls, wildcard-actions-it-com-tls, wildcard-api-inouter-tls, wildcard-mcp-inouter-tls
|
||||
|
||||
@@ -17,10 +17,10 @@ K3s 메인 라우팅을 Traefik이 담당 (2026-03-25 APISIX에서 전환).
|
||||
## Traefik 배포 (새 클러스터)
|
||||
|
||||
- **DaemonSet** (kube-system 네임스페이스)
|
||||
- hostPort: 80 (HTTP), 443 (HTTPS)
|
||||
- LoadBalancer 192.168.9.53 (MetalLB, 이전 hostPort 80/443에서 전환)
|
||||
- Gateway API provider 활성화
|
||||
- TLSStore CRD로 와일드카드 인증서 기본 로드
|
||||
- 와일드카드 인증서: *.inouter.com, *.anvil.it.com, *.actions.it.com, *.ironclad.it.com, *.keepanker.com, *.servidor.it.com
|
||||
- 와일드카드 인증서: *.inouter.com, *.anvil.it.com, *.actions.it.com, *.api.inouter.com, *.mcp.inouter.com
|
||||
|
||||
## Gateway
|
||||
|
||||
|
||||
@@ -8,6 +8,7 @@ tags: [infra, k3s, metallb, networking]
|
||||
|
||||
K3s 클러스터에 LoadBalancer 타입 서비스를 제공하는 베어메탈 로드밸런서.
|
||||
NodePort 난립 문제를 해결하기 위해 도입 (2026-03-26).
|
||||
K3s 내장 ServiceLB(Klipper)는 비활성화 (`--disable servicelb`, kr2/kr1 config.yaml).
|
||||
|
||||
## 배포 정보
|
||||
|
||||
@@ -28,11 +29,16 @@ NodePort 난립 문제를 해결하기 위해 도입 (2026-03-26).
|
||||
| 192.168.9.50 | apisix-gateway | apisix | 80, 443 |
|
||||
| 192.168.9.51 | sshpiper | sshpiper | 2222 |
|
||||
| 192.168.9.52 | teleport-cluster | teleport | 443 |
|
||||
| 192.168.9.53 | traefik | kube-system | 80, 443 |
|
||||
|
||||
## DNS 매핑
|
||||
|
||||
- `k3s.inouter.com` → 192.168.9.53 (Traefik LB, 이전 3노드 IP에서 변경)
|
||||
- `teleport.inouter.com` → 52.79.45.166 (relay4wd 경유)
|
||||
|
||||
## 설정
|
||||
|
||||
```yaml
|
||||
# IPAddressPool
|
||||
apiVersion: metallb.io/v1beta1
|
||||
kind: IPAddressPool
|
||||
metadata:
|
||||
@@ -41,8 +47,7 @@ metadata:
|
||||
spec:
|
||||
addresses:
|
||||
- 192.168.9.50-192.168.9.59
|
||||
|
||||
# L2Advertisement
|
||||
---
|
||||
apiVersion: metallb.io/v1beta1
|
||||
kind: L2Advertisement
|
||||
metadata:
|
||||
@@ -61,16 +66,16 @@ kubectl get l2advertisement -n metallb-system # L2 광고 확인
|
||||
kubectl get svc --all-namespaces -o wide | grep LoadBalancer # LB 서비스 목록
|
||||
```
|
||||
|
||||
## NodePort → LoadBalancer 이전 기록 (2026-03-26)
|
||||
## 이전 기록 (2026-03-26)
|
||||
|
||||
| Service | Before (NodePort) | After (LoadBalancer) |
|
||||
|---------|-------------------|---------------------|
|
||||
| apisix-gateway | 30233, 31137 | 192.168.9.50 (80/443) |
|
||||
| sshpiper | 31840 | 192.168.9.51 (2222) |
|
||||
| teleport-cluster | ClusterIP → LB | 192.168.9.52 (443) |
|
||||
| argocd-server | 30080, 30443 | ClusterIP (Traefik Ingress) |
|
||||
| anvil/ssh-server | 30023 | ClusterIP (추후 통합) |
|
||||
| ironclad/ssh-server | 30022 | ClusterIP (추후 통합) |
|
||||
| ironclad/nginx | 30297 | ClusterIP (추후 Traefik) |
|
||||
| Service | Before | After |
|
||||
|---------|--------|-------|
|
||||
| traefik | hostPort 80/443 | LoadBalancer 192.168.9.53 |
|
||||
| apisix-gateway | NodePort 30233/31137 | LoadBalancer 192.168.9.50 |
|
||||
| sshpiper | NodePort 31840 | LoadBalancer 192.168.9.51 |
|
||||
| teleport-cluster | ClusterIP | LoadBalancer 192.168.9.52 |
|
||||
| argocd-server | NodePort 30080/30443 | ClusterIP (Traefik Ingress) |
|
||||
| ironclad/* | NodePort | 삭제 (오사카에서 서빙) |
|
||||
| anvil/* | NodePort | 삭제 |
|
||||
|
||||
HAProxy 백엔드도 NodePort → MetalLB IP로 변경 완료.
|
||||
HAProxy 백엔드: 3노드 roundrobin → MetalLB IP 단일 엔드포인트로 변경.
|
||||
|
||||
@@ -25,12 +25,12 @@ maxconn: 20000
|
||||
|
||||
| Frontend | Port | Backend | 대상 | 용도 |
|
||||
|----------|------|---------|------|------|
|
||||
| ft_http | :80 | bk_traefik_http | 3노드 :80 roundrobin | Traefik 메인 라우팅 |
|
||||
| ft_https | :443 | bk_traefik_https | 3노드 :443 roundrobin | Traefik 메인 라우팅 |
|
||||
| ft_http | :80 | bk_traefik_http | MetalLB 192.168.9.53:80 | Traefik 메인 라우팅 |
|
||||
| ft_https | :443 | bk_traefik_https | MetalLB 192.168.9.53:443 | Traefik 메인 라우팅 |
|
||||
| ft_apisix_http | :9080 | bk_apisix_http | MetalLB 192.168.9.50:80 | APISIX SafeLine WAF |
|
||||
| ft_apisix_https | :9443 | bk_apisix_https | MetalLB 192.168.9.50:443 | APISIX SafeLine WAF |
|
||||
|
||||
백엔드 노드: incus-kr2(192.168.9.135), incus-kr1(192.168.9.214), incus-hp2(192.168.9.134)
|
||||
백엔드: 전부 MetalLB IP 단일 엔드포인트 (2026-03-26 이전 완료, 이전에는 3노드 roundrobin)
|
||||
|
||||
## nftables 방화벽
|
||||
|
||||
|
||||
Reference in New Issue
Block a user