
pii-shield v2.2.0
์ฝ๋ ์๋ K8s ์ฌ์ด๋์นด๋ก ๋ก๊ทธ๋ฅผ ์ ํํฉ๋๋ค. ์ํธ๋กํผ ๋ถ์์ ํตํด ๋น๋ฐ์ ๊ฐ์งํ๊ณ , JSON ๋ฌด๊ฒฐ์ฑ์ ์ ์งํ๋ฉฐ, PII๋ฅผ ๊ฒฐ์ ๋ก ์ ์ผ๋ก ๊ฐ๋ฆฝ๋๋ค. ๐ก๏ธ
PII-Shield ๐ก๏ธ
Kubernetes์ฉ ์ ๋ก์ฝ๋ ๋ก๊ทธ ์ ํ ์ฌ์ด๋์นด. ๋ก๊ทธ๊ฐ ํ๋๋ฅผ ๋ ๋๊ธฐ ์ ์ PII๋ฅผ ๋ง์คํนํ์ฌ ๋ฐ์ดํฐ ์ ์ถ(GDPR/SOC2)์ ๋ฐฉ์งํฉ๋๋ค.
PII-Shield๋ CLI, ์ฌ์ด๋์นด ๋๋ WASM์ผ๋ก ํ๋ก์ธ์ค ๋ด(in-process)์์ ์คํ๋ฉ๋๋ค. ํธ์คํ API๊ฐ ์์ผ๋ฉฐ ๋ฐ์ดํฐ๊ฐ ์ ์ก๋๋ ์๋ฒ๋ ์์ต๋๋ค.
"PII๊ฐ AI ๋ชจ๋ธ์ ์ค์ผ์ํค์ง ๋ง์ธ์." PII-Shield๋ ๋ฏผ๊ฐํ ๋ฐ์ดํฐ๊ฐ ํ์ต ๋ฐ์ดํฐ์ธํธ์ ๋๋ฌํ์ง ์๋๋ก ๋ณด์ฅํ์ฌ GDPR๋ก ์ธํ ๋ชจ๋ธ ์ฌํ์ต ๋ถ๋ด์ ๋์ด์ค๋๋ค.
[!WARNING] v2.0.0์ผ๋ก ์ ๊ทธ๋ ์ด๋ํ์๊ฒ ์ต๋๊น? ์ต์ข ์ฌ์ฉ์ ๋ฐฐํฌ๋ฅผ Helm ๊ธฐ๋ฐ ์ค์น ๋ฐ Distroless Native Sidecar๋ก ์ ํํ์ต๋๋ค. Kustomize๋ ๋ ์ด์ ํ๋ก๋์ ์ฌ์ฉ์๋ฅผ ์ํ ์ง์๋๋ ๋ฆด๋ฆฌ์ค ์ค์น ๊ฒฝ๋ก๊ฐ ์๋์ง๋ง, Operator ์ ์ฅ์๋ ๋ก์ปฌ ๊ฐ๋ฐ ๋ฐ ๋งค๋ํ์คํธ ์์ฑ์ ์ํด Kustomize ์ค์บํด๋ฉ์ ๊ณ์ ์ ์งํฉ๋๋ค. PII-Shield ์ฌ์ด๋์นด ๋ด๋ถ์
/bin/sh์ ๊ทผ์ ๋ ์ด์ ์ง์๋์ง ์์ต๋๋ค. ๋ง์ด๊ทธ๋ ์ด์ ๊ฐ์ด๋๋ฅผ ์ฝ์ด๋ณด์ธ์.
๋ ๊ฐ์ง ๋ฐฐํฌ ๋ชจ๋ธ
PII-Shield๋ ์คํ์ ํตํฉํ ์ ์๋ ๋ ๊ฐ์ง ๋๋ ทํ ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค:
- Kubernetes Operator (์ ๋ก์ฝ๋): ๋น์ฌ์ ๋ํ ๋ฐฐํฌ ๋ชจ๋ธ์ ๋๋ค. ์์ ์๋ํ๋ K8s Operator๊ฐ ํ๋์ ๊ณ ๋๋ก ์์ ํ Distroless Sidecar๋ฅผ ์ฃผ์ ํ์ฌ ๋ก๊ทธ๋ฅผ ์ค์๊ฐ์ผ๋ก ๊ฐ๋ก์ฑ๊ณ ์ ํํฉ๋๋ค.
- ํ๋ก์ธ์ค ๋ด WASM (ํต์ฌ ํตํฉ์ฉ): ๊ทนํ์ ์ฑ๋ฅ์ ์ํด ํต์ฌ ์์ง์ WASM์ ํตํด ์ง์ ์๋ฒ ๋ํ ์ ์์ผ๋ฉฐ, ๋คํธ์ํฌ ํ ์์ด
<1ms๋๊ธฐ ์๊ฐ์ ์ ๊ณตํฉ๋๋ค.
ํ๋ก์ ํธ ์ํ ๋ฐ ๋ก๋๋งต
PII-Shield๋ ํ๋ก๋์ ๊ฐํ ๋จ๊ณ์ ์๋ ํ๋ฐํ ๊ฐ๋ฐ ์ค์ธ ์คํ์์ค ๋ณด์ ๋๊ตฌ์ ๋๋ค. v2.x ๋ฆด๋ฆฌ์ค ๋ผ์ธ์ ์ฌ์ฉ ๊ฐ๋ฅํ CLI, ์ปจํ ์ด๋, Helm/Operator ๋ฐ WASM SDK ์ํฐํฉํธ๋ฅผ ์ ๊ณตํฉ๋๋ค. ํต์ฌ ๋ง์คํน ๊ฒฝ๋ก๋ ํต์ ๋ ๋ฐฐํฌ์ ๋๋น๋์ด ์์ผ๋ฉฐ, ์ผ๋ถ Kubernetes ๋ฐฐํฌ ๋ชจ๋์ ๊ณต๊ธ๋ง ๋ณด์ฆ์ ์์ง ์์ ํ ์ค์ ๋๋ค.
| ๊ตฌ์ฑ ์์ | ์ํ |
|---|---|
| ์ฝ์ด ์ค์บ๋ | ๋ฆด๋ฆฌ์ค / ํต์ ๋ ๋ฐฐํฌ |
| CLI ์ฌ์ด๋์นด | ๋ฆด๋ฆฌ์ค / ํต์ ๋ ๋ฐฐํฌ |
| Kubernetes Operator | ์์ ํ ๋จ๊ณ |
| WASM SDK | ๋ฒ ํ ๋ฆด๋ฆฌ์ค |
| Proxy-Wasm ๊ฒ์ดํธ์จ์ด ํตํฉ | ๊ณํ๋ R&D |
| Control Plane UI | ๊ณํ๋ R&D |
| eBPF ์ธํฐ์ ์ | ์คํ์ R&D |
ํ์ฌ ํ๋ก๋์ ๊ฐํ ๋ฒ์๋ KNOWN_LIMITATIONS.md๋ฅผ ์ฐธ์กฐํ์ธ์.
์ PII-Shield์ธ๊ฐ?
๊ฐ๋ฐ์๋ค์ ์ข ์ข ๋ฏผ๊ฐํ ๋ฐ์ดํฐ๋ฅผ ๋ง์คํนํ๋ ๊ฒ์ ์๊ณค ํฉ๋๋ค. Fluentd/Logstash์ ์ ํต์ ์ธ ์ ๊ท์ ํํฐ๋ ๋๋ฆฌ๊ณ ์ ์ง ๊ด๋ฆฌ๊ฐ ์ด๋ ค์ฐ๋ฉฐ ๋ก๊ทธ ์์ง๊ธฐ์์ ๊ฐ๋น์ผ CPU๋ฅผ ์๋ชจํฉ๋๋ค.
PII-Shield๋ ์ฑ ์ปจํ ์ด๋ ๋ฐ๋ก ์์ ์์นํฉ๋๋ค:
- ํ๋ก๋์ ๊ฐํ ์ฝ์ด ์์ง: ํซ ๊ฒฝ๋ก์์ ๋ฎ์ ๋ฉ๋ชจ๋ฆฌ ํ ๋น๊ณผ ๊ฒฐ์ ์ ์ ๊ท์ ๋งค์นญ์ ๊ฐ์ถ Kubernetes ์ฌ์ด๋์นด์ ์ต์ ํ๋์ด ์์ต๋๋ค.
- ์ปจํ
์คํธ ์ธ์ง ์ํธ๋กํผ ๋ถ์: ์ปจํ
์คํธ ํค์๋๋ฅผ ๋ถ์ํ์ฌ ํค ์์ด๋ ๋์ ์ํธ๋กํผ ๋น๋ฐ๊ฐ(์:
Error: ... 44saCk9...)์ ํ์งํฉ๋๋ค. - ์ฌ์ฉ์ ์ ์ ์ ๊ท์ ๊ท์น: ์๋ ค์ง ํจํด์ ๋ํ ์ํธ๋กํผ ๊ฒ์ฌ๋ฅผ ๋์ฒดํ๋ ๊ตฌ์กฐํ๋ ๋ฐ์ดํฐ(UUID, ID)์ ๊ฒฐ์ ์ ๋ง์คํน.
- ํ๊ท ๋ฐ ํผ์ฆ ์ปค๋ฒ๋ฆฌ์ง: ๋ฐ์ด๋๋ฆฌ ์ฐ๋ ๊ธฐ, JSON ์ค์ฒฉ, ๋ค๊ตญ์ด ๋ก๊ทธ ๋ฑ ์คํธ๋ ์ค ์ฌ๋ก์ ๋ํด ํ ์คํธ๋์์ต๋๋ค.
- ๊ฒฐ์ ์ ํด์ฑ: ๋น๋ฐ๊ฐ์ ๊ณ ์ ํด์(์:
[HIDDEN:a1b2c])๋ก ๋์ฒดํ์ฌ QA๊ฐ ์์ ๋ฐ์ดํฐ๋ฅผ ๋ณด์ง ์๊ณ ๋ ์ค๋ฅ๋ฅผ ์ฐ๊ด์ํฌ ์ ์๊ฒ ํฉ๋๋ค. - ๋๋กญ์ธ(Drop-in): ์ฝ๋ ๋ณ๊ฒฝ์ด ํ์ ์์ต๋๋ค. ๋ชจ๋ ์ธ์ด(Node, Python, Java, Go)์์ ์๋ํฉ๋๋ค.
- ํ์ดํธ๋ฆฌ์คํธ ์ง์:
PII_SAFE_REGEX_LIST๋ฅผ ์ฌ์ฉํ์ฌ ์์ ํ ํจํด(์: git ํด์, ์์คํ ID)์ ๋ช ์์ ์ผ๋ก ํ์ฉํ์ฌ ์คํ(false positive)์ ๋ฐฉ์งํฉ๋๋ค.
์์ญ ๊ฐ์ ํด๋ฌ์คํฐ์์ PII-Shield๋ฅผ ๊ด๋ฆฌํ๊ณ ๊ณ์ ๊ฐ์?
์ค์ ์ง์ค์ ๊ท์น ๊ด๋ฆฌ, Slack ์๋ฆผ, ๋ง์คํน ๋ถ์์ ๊ฐ์ถ ํธ์คํ
Control Plane์ ๊ตฌ์ถ ์ค์
๋๋ค.
ํตํฉ
PII-Shield์ ํ๋ก์ธ์ค ๋ด WASM ๋น๋๋ ์คํ์์ค AI ์ฝ๋ ๊ฑฐ๋ฒ๋์ค GitHub Action์ธ GuardSpine Code ๋ด๋ถ์ ํฌํจ๋์ด ์์ผ๋ฉฐ, ์ด ์ก์
์ ๋ฐ์ด๋๋ฆฌ๋ฅผ ๋ฒค๋๋งํ๊ณ NOTICE์ ๊ทธ ์ถ์ฒ๋ฅผ ๋ช
์ํฉ๋๋ค.
์ฑ๋ฅ ๊ณ ๋ ค ์ฌํญ
PII-Shield๋ ๊ณ ๋๋ก ์ต์ ํ๋์ด ์์ง๋ง, ๋ณต์กํ ๋ก๊ทธ์ ์ฌ์ธต ๊ฒ์ฌ์๋ ๊ตฌ์ฑ์ ๋ํ ์ธ์ฌํ ์ฃผ์๊ฐ ํ์ํฉ๋๋ค.
- ํ ์คํธ ๋ก๊ทธ: ๋งค์ฐ ๋น ๋ฆ(์ด๋น 100k์ค ์ด์).
- JSON ๋ก๊ทธ: ์ ๋ก ํ ๋น ํ์ฑ(
encoding/json์ค๋ฒํค๋ ์์). ์ค์บ๋๋ ๋ฉ๋ชจ๋ฆฌ ๊ธ์ฆ ์์ด ๋์ ์ฒ๋ฆฌ๋(์ฝ 7MB/s)์ ๋ณด์ฅํ๊ธฐ ์ํด JSON ๊ตฌ์กฐ๋ฅผ ์๋์ผ๋ก ํ์ฑํฉ๋๋ค. - ๊ถ์ฅ ์ฌํญ: ๋์ ์ฒ๋ฆฌ๋์์๋ ์์ ํ๊ฒ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๊น๊ฒ ์ค์ฒฉ๋ JSON์์ ์คํ ์ค๋ฒํ๋ก๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด ์ฌ๊ท ์์ ์ฅ์น๋ฅผ ์ฌ์ฉํฉ๋๋ค.
์ค์น
Helm ์ฐจํธ (Kubernetes Operator)
Kubernetes์์ PII-Shield๋ฅผ ๋ฐฐํฌํ๋ ๊ณต์์ ์ด๊ณ ๊ถ์ฅ๋๋ ๋ฐฉ๋ฒ์ ์์ ์๋ํ๋ Operator๋ฅผ ํตํ๋ ๊ฒ์ ๋๋ค:
helm repo add pii-shield https://pii-shield.github.io/pii-shield/
helm repo update
helm install pii-shield-operator pii-shield/pii-shield-operator -n operator-system --create-namespace
์ด ๋ช ๋ น์ ์ฝ๋๋ Dockerfile ๋ณ๊ฒฝ ์์ด ํ๋์ ๊ณ ๋๋ก ์์ ํ distroless ์ฌ์ด๋์นด๋ฅผ ์๋์ผ๋ก ์ฃผ์ ํ๋ PII-Shield Operator๋ฅผ ๋ฐฐํฌํฉ๋๋ค.
Docker
Docker Hub ๋๋ GHCR์์ ์ต์ ๊ฒฝ๋ ์ด๋ฏธ์ง๋ฅผ ๋ฐ์ผ์ธ์:
docker pull thelisdeep/pii-shield:2.2.0
# OR from GitHub Container Registry (Enterprise):
docker pull ghcr.io/pii-shield/pii-shield:2.2.0
์์ค์์ ๋น๋
์์ค ์ฝ๋์์ ์ง์ ๋ฐ์ด๋๋ฆฌ๋ฅผ ๋น๋ํ ์ ์์ต๋๋ค:
go build -o pii-shield ./cmd/cleaner/main.go
๊ตฌ์ฑ
์ ์ฒด ํ๊ฒฝ ๋ณ์ ๋ชฉ๋ก์ CONFIGURATION.md๋ฅผ ์ฐธ์กฐํ์ธ์. ๋ค์์ ํฌํจํฉ๋๋ค:
PII_SALT: ์ฌ์ฉ์ ์ ์ HMAC ์ํธ(ํ๋ก๋์ ์ ํ์).PII_ADAPTIVE_THRESHOLD: ๋์ ์ํธ๋กํผ ๊ธฐ์ค์ ํ์ฑํ.PII_DISABLE_BIGRAM_CHECK: ๋น์์ด ๋ก๊ทธ์ ์ต์ ํ.PII_CUSTOM_REGEX_LIST: ๊ฒฐ์ ์ ๋ง์คํน์ ์ํ ์ฌ์ฉ์ ์ ์ ์ ๊ท์ ๊ท์น.PII_SAFE_REGEX_LIST: ๋ฌด์ํ ํ์ดํธ๋ฆฌ์คํธ ์ ๊ท์ ๊ท์น(์ผ์น ํญ๋ชฉ์ ๊ทธ๋๋ก ๋ฐํ๋จ).
์ํธ๋กํผ ๋ฏผ๊ฐ๋ ํ (๊ธฐ๋ณธ ์๊ณ๊ฐ: 3.6)
| ์ํธ๋กํผ | ๋ฐ์ดํฐ ์ ํ | ์์ |
|---|---|---|
| 0.0 - 3.0 | ์ผ๋ฐ ๋จ์ด, ๋ฐ๋ณต | password, admin, 111111 |
| 3.0 - 3.6 | ์นด๋ฉ์ผ์ด์ค, ๋ถ๋ถ ํด์ | ProgramCampaignInstanceJob, 8f3a11b2c |
| 3.6 - 4.5 | ๊ฒฝ๋ก, UUID, ์ฝํ ๋น๋ฐ๋ฒํธ | /opt/application/runtime, P@ssw0rd2026! |
| 4.5 - 5.0 | ์ค๊ฐ ํ ํฐ | E8s9d_2kL1 |
| 5.0+ | ๋์ ์ํธ๋กํผ ํค | (SHA-256, API ํค) |
๋น ๋ฅธ ์์
- ๋ก์ปฌ ํ ์คํธ (CLI) ์ด๋ค ๋ก๊ทธ ์ถ๋ ฅ์ด๋ PII-Shield์ ํ์ดํํ์ฌ ์ฆ์ ๋์์ ํ์ธํ ์ ์์ต๋๋ค:
# Emulate a log with a sensitive password
echo "Error: User password=MySecretPass123! failed login" | docker run -i --rm ghcr.io/pii-shield/pii-shield:2.2.0
# Output: Error: User password=[HIDDEN:8f3a11] failed login
- Kubernetes (์๋ ์ฌ์ด๋์นด ์ฃผ์
)
PII-Shield Operator๊ฐ ์ค์น๋์ด ์์ผ๋ฉด,
PiiPolicy๋ฅผ ์์ฑํ๊ณ ํ๋์ ๋ ์ด๋ธ์ ์ง์ ํ๋ ๊ฒ๋ง์ผ๋ก ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ณดํธํ ์ ์์ต๋๋ค.
์ ์ฑ ์์ฑ:
apiVersion: core.pii-shield.io/v1alpha1
kind: PiiPolicy
metadata:
name: strict-policy
namespace: default
spec:
injectionMode: "file"
Deployment์ ๋ ์ด๋ธ ์ง์ :
apiVersion: apps/v1
kind: Deployment
metadata:
name: secure-app
spec:
template:
metadata:
labels:
pii-shield.io/inject: "true"
annotations:
pii-shield.io/policy: "strict-policy"
# ...
Operator๋ Native Sidecar ํจํด(K8s 1.28+)์ ์ฌ์ฉํ์ฌ pii-shield-agent๋ฅผ ์๋์ผ๋ก ์ฃผ์
ํ๊ณ ๋ชจ๋ ๋ก๊ทธ๋ฅผ ์์ ํ๊ฒ ๋ง์คํนํฉ๋๋ค!
๐ ๋ฌด๋ฃ: Kubernetes ๋ก๊ทธ PII ๊ฐ์ฌ ์ฒดํฌ๋ฆฌ์คํธ 25ํญ๋ชฉ โ ํ๋์์ PII๊ฐ ์ ์ถ๋๋ ์์น, ํํฐ๋ฅผ ์ฐํํ๋ ๋ก๊ทธ ๊ฒฝ๋ก, ๋ง์คํน์ด ์ค์ ๋ก ์๋ํ๋์ง ํ์ธํ๋ ๋ฐฉ๋ฒ. ์ฒดํฌ๋ฆฌ์คํธ ๋ฐ๊ธฐ โ
๐ฆ ์ปดํ๋ผ์ด์ธ์ค ํฉ(GDPR/HIPAA/PCI) ์ถ์ ์์ โ ์กฐ๊ธฐ ์ก์ธ์ค ์ ์ฒญ โ
๐ฌ PII-Shield๋ฅผ ์ฌ์ฉ ์ค์ด์ ๊ฐ์? ๋ฐฐํฌ ์ฌ๋ก๋ฅผ ์๋ ค์ฃผ์ธ์ โ โ 2๋ถ์ด๋ฉด ๋๋ฉฐ, ๋ค์์ ๊ตฌ์ถ๋ ๊ธฐ๋ฅ์ ๊ฒฐ์ ํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
๊ฒ์ฆ
์ด ํ๋ก์ ํธ๋ ํ๋ก๋์ ๊ฐํ ์ ์ ์ ๋ขฐ๋๋ฅผ ๋์ด๊ธฐ ์ํด ์ง์์ ์ผ๋ก ํ์ฅ๋๋ ํ ์คํธ ์ค์ํธ๋ก ๊ฒ์ฆ๋ฉ๋๋ค:
- ๋จ์ ํ ์คํธ: 85% ์ด์์ ์ปค๋ฒ๋ฆฌ์ง๋ก ์ฃ์ง ์ผ์ด์ค, ๋ค๊ตญ์ด ์ง์, JSON ๋ฌด๊ฒฐ์ฑ์ ๋ค๋ฃน๋๋ค.
- ํผ์ง: ๋ค์ดํฐ๋ธ Go ํผ์ง์ ํตํด ์๋ชป๋ ์ ๋ ฅ๊ณผ ๋ฌด์์ ๋ฐ์ด๋๋ฆฌ ์ ๋ ฅ์ ๋ํ ํฌ๋์ ์์ ์ฑ์ ๋ณด์ฅํฉ๋๋ค.
- ์ค๋ชจํฌ ํ
์คํธ:
./scripts/test-smoke.sh๊ฐ ํผํฉ ์ํฌ๋ก๋๋ฅผ ์คํํ๊ณ ํ์ง ์ ํ๋๋ฅผ ๋ณด๊ณ ํฉ๋๋ค. - ์๋ํฌ์๋(E2E) ํ
์คํธ:
operator/tests/run_e2e.sh์ค์ํธ๋ Minikube์ Helm์ ์ฌ์ฉํ์ฌ ์ ์ฒด ์คํ ๊ฒ์ฆ์ ์ํํฉ๋๋ค. ๋ก์ปฌ ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ๊ณ , cert-manager ์์ด Operator๋ฅผ ํ๋ก๋น์ ๋ํ๊ณ , ๋์ Job์ ๋ฐฐํฌํ ๋ค์, ์ฌ์ด๋์นด ์ถ๋ ฅ์ ๊ฐ๋ก์ฑ ์ค์ ๋ก๊ทธ ๋ง์คํน์ ๊ฒ์ฆํฉ๋๋ค.
์ฑ๋ฅ ๋ฒค์น๋งํฌ
ํ์ฌ ๋ธ๋์น์ ๊ธฐ์ค ref ๊ฐ์ ์๋ํฌ์๋ CLI ์ฒ๋ฆฌ๋์ ๋น๊ตํ๋ ค๋ฉด:
./benchmark/run_benchmarks.sh
๊ธฐ๋ณธ์ ์ผ๋ก ๋ฒค์น๋งํฌ๋ HEAD๋ฅผ origin/main๊ณผ ๋น๊ตํ๊ณ , origin/main์ ์๋ก ๊ณ ์น ๋ค์, ํผํฉ ๋ก๊ทธ ์ฝํผ์ค๋ฅผ ์์ฑํ๊ณ , ์ด์ /์ ๊ท ์คํ ์์๋ฅผ ๋ฒ๊ฐ์ ๊ฐ๋ฉฐ ์ค์๊ฐ, p95, ์ต์/์ต๋ ๋ฐ MiB/s๋ฅผ ๋ณด๊ณ ํฉ๋๋ค:
BASE_REF=origin/main RUNS=9 LINES=500000 ./benchmark/run_benchmarks.sh
์ด ๋ฒค์น๋งํฌ๋ ์ ์ฒด stdin-to-stdout CLI ๊ฒฝ๋ก๋ฅผ ์ธก์ ํฉ๋๋ค. ์ค์บ๋ ์ ์ฉ ๋ง์ดํฌ๋ก๋ฒค์น๋งํฌ๋ฅผ ์คํํ๋ ค๋ฉด:
go test -bench=. -benchmem ./pkg/scanner
Operator ํตํฉ ํ ์คํธ
Operator๋ ๋น ๋ฅธ ๋จ์ ํ ์คํธ๋ฅผ Kubernetes API ํตํฉ ํ ์คํธ์ ๋ถ๋ฆฌํ์ฌ ์ ์งํฉ๋๋ค. ์ผ๋ฐ Operator ํ ์คํธ๋ ๋ก์ปฌ API ์๋ฒ๋ฅผ ์์ํ์ง ์์ต๋๋ค:
cd operator
go test ./...
envtest ๊ธฐ๋ฐ ์ปจํธ๋กค๋ฌ ํตํฉ ์ค์ํธ๋ฅผ ์คํํ๋ ค๋ฉด:
./scripts/test-operator-integration.sh
์ด ํ
์คํธ๋ envtest๋ฅผ ํตํด ๋ก์ปฌ Kubernetes API ์๋ฒ์ etcd๋ฅผ ์์ํ๋ฏ๋ก 127.0.0.1์ ๋ฐ์ธ๋ฉํ ๊ถํ์ด ํ์ํฉ๋๋ค. ์ ํ๋ ์๋๋ฐ์ค์์๋ localhost ๋ฐ์ธ๋ฉ์ ํ์ฉํ๋ ๋ก์ปฌ ์
ธ, Docker ํ๊ฒฝ ๋๋ CI ๋ฌ๋์์ ์คํํ์ธ์.
์ง์
PII-Shield๋ ๊ฐ์ธ์ ๋ณด๋ฅผ ๋ณดํธํ๋ ๋ก๊ทธ๋ฅผ ์ํ ์คํ์์ค ์ธํ๋ผ์ ๋๋ค. ์ด ํ๋ก์ ํธ๊ฐ ๊ทํ ๋๋ ๊ทํ์ ์กฐ์ง์ ์ ์ฉํ๋ค๋ฉด GitHub Sponsors๋ฅผ ํตํด ๊ฐ๋ฐ์ ์ง์ํ ์ ์์ต๋๋ค.
๋ฆด๋ฆฌ์ค ๊ฒ์ฆ
๋ฆด๋ฆฌ์ค ์ฒดํฌ์ฌ ๋ฐ ์ด๋ฏธ์ง ๋ค์ด์ ์คํธ ๊ฒ์ฆ ์ง์นจ์ docs/release-verification.md์ ๋ฌธ์ํ๋์ด ์์ต๋๋ค. ์๋ช ๋ฐ ์ถ์ฒ(provenance) ๊ธฐ๋ฐ ๋ฆด๋ฆฌ์ค๋ ๊ณต๊ธ๋ง ๊ฐํ ๋ก๋๋งต์ ์ผ๋ถ๋ก ์ถ์ ๋ฉ๋๋ค.
๋ผ์ด์ ์ค
Apache 2.0 ๋ผ์ด์ ์ค๋ก ๋ฐฐํฌ๋ฉ๋๋ค. ์์ธํ ๋ด์ฉ์ LICENSE๋ฅผ ์ฐธ์กฐํ์ธ์.