7746570ec0
images/·scripts/build/build-hardened-image.sh·suggest-go-upgrades.py·
build-image.yml·.claude/image-authoring.md·이미지 ADR(0001·0002·0004)을 삭제했다 —
전부 별도 public 레포 security-images 로 이미 이관됐다.
카탈로그 쪽에는 "무엇을 배포 중인가"를 아는 부분만 남긴다:
- catalog/image-map/<image>.env — 옛 catalog.env 의 카탈로그 레이아웃 정보만 뗀 것
- scripts/build/check-rebuild-needed.py — 드리프트 탐지(A 파트)만 남기고 핀 판단
(B 파트: pin_changes/apply_changes/parse_module_specs)은 제거
- scripts/build/apply-published-tags.py(신규) — security-images 의 published.json
을 읽어 카탈로그 values 를 패치
- .github/workflows/{self-build-drift-check,catalog-tag-update}.yml(신규) — 각각
드리프트 스캔+트리거, 발행 태그 반영
effective_severity 를 cve-gate.py 로 옮겼다 — check-rebuild-needed.py 가 핀 도구를
거치지 않고 게이트를 직접 로드하게 하기 위한 선행 작업이다.
두 레포의 계약은 published.json 스키마 하나뿐이다 — security-images 는 이 카탈로그를
모른다(단방향 의존). 이관 배경·결합점 전체는
doc/migrations/self-build-images-to-security-images.md.
부수 수정: 자체 빌드 이미지를 참조하는 차트 values/README 의 죽은 링크(images/**,
doc/decisions/000{1,2,4}, .claude/image-authoring.md)를 security-images 레포를
가리키는 서술로 교체. deploy-test 스크립트·CUSTOM-README 의 개인 Docker Hub 계정
(docker.io/wbsong111) 을 docker.io/paasup 로 교체.
pitfalls.md 의 "스캐너 결과를 그대로 믿지 말 것" 절은 sbom-cve-gate skill 이 차트
축 설명에 실제로 참조하고 있어 남겼다 — "이미지 태그의 베이스 OS" 절만 제거했다
(다른 참조 없음, security-images 문서로 이관 완료).
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
80 lines
3.7 KiB
YAML
80 lines
3.7 KiB
YAML
# PaaSup 배포 기준 오버라이드.
|
|
#
|
|
# 실제 배포 값 주입은 dipup 의 pkg/assets/helm/values/argo-cd-values.yaml.tpl 이 담당한다.
|
|
# 이 파일은 "PaaSup 이 실제로 어떤 key 를 쓰는가"의 기준이며(Breaking Change 판정 근거),
|
|
# 도메인·시크릿 같은 환경별 값은 placeholder 로 둔다. 비밀값을 커밋하지 않는다.
|
|
|
|
global:
|
|
image:
|
|
# 자체 빌드(대응 우선순위 c) — 업스트림 v3.5.1 의 차단 CVE 대부분이 바이너리에 정적
|
|
# 링크된 Go 모듈이라 상위 태그 교체·베이스 OS 교체로 해소되지 않았다. 번들 도구
|
|
# (helm/kustomize/git-lfs)까지 최신 툴체인으로 다시 컴파일했다.
|
|
# 빌드 정의·근거는 별도 레포 security-images 의 images/argocd/(이 레포에는 없다).
|
|
# 상위 태그가 이 문제를 해결하면(대응 우선순위 a) 업스트림으로 되돌리는 것이 우선이다.
|
|
#
|
|
# 이 값은 argocd 바이너리를 쓰는 5개 컴포넌트(server/repo-server/application-controller/
|
|
# applicationset/notifications)가 공유한다 — 컴포넌트별 image 블록이 비면 global 을
|
|
# 상속한다. dex·redis 는 각자 별도 이미지라 영향받지 않는다.
|
|
repository: docker.io/paasup/argocd
|
|
tag: "3.5.1-security-hardened-20260819"
|
|
|
|
configs:
|
|
params:
|
|
# ArgoCD v3.0 부터 리소스 health 를 Application CR 에 저장하지 않는다(기본 false).
|
|
# dip-console-api 의 analyzeApplicationIssues 가 .status.resources[].health 를 읽으므로
|
|
# 켜두지 않으면 카탈로그 오류 상세에서 리소스 이슈가 비어 나온다.
|
|
controller.resource.health.persist: "true"
|
|
|
|
cm:
|
|
create: true
|
|
url: https://argocd.example.org
|
|
# Keycloak OIDC 연동.
|
|
# issuer/clientSecret/rootCA 는 환경별 값이라 배포 시 주입한다 — dipup 의
|
|
# argo-cd-values.yaml.tpl 이 리터럴로 채운다. 아래 `$oidc.keycloak.clientSecret` 은
|
|
# argocd-secret 의 동명 key 를 참조하는 ArgoCD 표기로, 값을 파일에 남기지 않으려면
|
|
# 이 형태를 쓴다.
|
|
oidc.config: |
|
|
name: Keycloak
|
|
issuer: https://keycloak.example.org/realms/paasup
|
|
clientID: argocd
|
|
clientSecret: $oidc.keycloak.clientSecret
|
|
requestedScopes: ["openid", "profile", "email", "groups"]
|
|
# 사설 CA 를 쓰는 Keycloak 이면 rootCA 를 함께 넣는다.
|
|
# rootCA: |
|
|
# -----BEGIN CERTIFICATE-----
|
|
|
|
rbac:
|
|
create: true
|
|
policy.csv: |
|
|
g, paasup, role:admin
|
|
|
|
dex:
|
|
# PaaSup 은 configs.cm.oidc.config 로 Keycloak 에 직접 연결하므로 dex 를 거치지 않는다.
|
|
# ArgoCD 는 oidc.config 가 있으면 dex 를 우회하고, dex.config 를 쓸 때만 dex 가 관여한다.
|
|
# 차트 기본값이 true 라 그동안 쓰이지도 않는 dex 파드가 떠 있었고, CVE 게이트에서
|
|
# 차단 57 건(argo-cd 10.4.0 전체 98 건의 58%)을 혼자 만들고 있었다.
|
|
# dex 기반 SSO 로 전환하려면 이 값을 true 로 되돌리고 configs.cm.dex.config 를 채운다.
|
|
enabled: false
|
|
|
|
server:
|
|
# apisix 가 TLS 를 종료하고 백엔드로 평문을 보내므로 서버는 평문으로 띄운다.
|
|
# 지정하지 않으면 리다이렉트 루프가 발생한다.
|
|
extraArgs:
|
|
- --insecure
|
|
|
|
ingress:
|
|
enabled: true
|
|
annotations:
|
|
# apisix ingress controller — https 리다이렉트 플러그인
|
|
k8s.apisix.apache.org/plugin-config-name: https-redirect
|
|
# cert-manager 설정
|
|
cert-manager.io/cluster-issuer: "selfsigned-issuer"
|
|
cert-manager.io/duration: 8760h
|
|
cert-manager.io/renew-before: 720h
|
|
hostname: argocd.example.org
|
|
ingressClassName: "apisix"
|
|
extraTls:
|
|
- hosts:
|
|
- argocd.example.org
|
|
secretName: argocd-tls
|