From 09d0d4e59d62837d844e6febd2014a125ab92ad3 Mon Sep 17 00:00:00 2001 From: wbsong111 Date: Mon, 31 Aug 2026 09:13:57 +0900 Subject: [PATCH] =?UTF-8?q?secrets-operator=20v0.10.33=20=E2=86=92=200.11.?= =?UTF-8?q?8=20(#59)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * chart_version_detector: repo가 이미 등록돼 있으면 update를 건너뛰던 버그를 고친다 repo alias가 이미 helm repo list에 있으면 add/update를 통째로 건너뛰어, 로컬에 예전에 캐시된 index.yaml을 그대로 썼다 — latest_version이 조용히 낡은 값으로 나온다(실측: secrets-operator에서 실제 최신 0.11.8 대신 0.11.4가 나왔다). repo 등록 여부와 무관하게 update는 항상 호출하도록 고친다. Co-Authored-By: Claude Sonnet 5 * secrets-operator v0.10.33 → 0.11.8 호환성: breaking_change_check 결과 breaking=false(이 차트는 custom-values.yaml이 없어 오버라이드 충돌 자체가 불가능). CVE: infisical/kubernetes-operator 이미지를 trivy+CoverageProbe로 실측한 결과 실효 HIGH 차단이 34→10건으로 줄었다(CRITICAL은 둘 다 0, 둘 다 CoverageProbe: ok로 측정 신뢰 가능). 신규 CRD 3개 (InfisicalAuth·InfisicalConnection·InfisicalStaticSecret) 추가 — 상세는 CUSTOM-README.md. 기존 v0.10.33 디렉토리는 카탈로그 정책대로 동결 보관한다(삭제하지 않음). Co-Authored-By: Claude Sonnet 5 * secrets-operator 자체 빌드 이미지 배포 테스트 오버라이드 추가 dev 클러스터에서 hardened-containers 자체 빌드 이미지(v0.11.8-security-hardened)로 실제 업그레이드·CRD 적용·Infisical 시크릿 동기화까지 검증할 때 쓴 오버라이드. 카탈로그 값(이 차트는 애초에 custom-values.yaml 없음)은 건드리지 않는다. Co-Authored-By: Claude Sonnet 5 --------- Co-authored-by: Claude Sonnet 5 --- .../update_catalog/chart_version_detector.py | 12 +- .../helm/secrets-operator/0.11.8/.helmignore | 23 + .../secrets-operator/0.11.8/BUILD-README.md | 78 +++ .../secrets-operator/0.11.8/CUSTOM-README.md | 53 ++ .../helm/secrets-operator/0.11.8/Chart.yaml | 6 + .../helm/secrets-operator/0.11.8/README.md | 99 +++ .../secrets-operator/0.11.8/ci/ci-values.yaml | 9 + .../0.11.8/ci/minimal-rbac.yaml | 219 ++++++ .../0.11.8/templates/_helpers.tpl | 98 +++ .../templates/clustergenerator-crd.yaml | 104 +++ .../0.11.8/templates/deployment.yaml | 90 +++ .../0.11.8/templates/infisicalauth-crd.yaml | 373 +++++++++++ .../templates/infisicalconnection-crd.yaml | 151 +++++ .../templates/infisicaldynamicsecret-crd.yaml | 356 ++++++++++ .../templates/infisicalpushsecret-crd.yaml | 351 ++++++++++ .../0.11.8/templates/infisicalsecret-crd.yaml | 627 ++++++++++++++++++ .../templates/infisicalstaticsecret-crd.yaml | 234 +++++++ .../templates/leader-election-rbac.yaml | 53 ++ .../0.11.8/templates/manager-rbac.yaml | 152 +++++ .../0.11.8/templates/metrics-auth-rbac.yaml | 53 ++ .../0.11.8/templates/metrics-reader-rbac.yaml | 14 + .../0.11.8/templates/metrics-service.yaml | 14 + .../templates/prometheus-servicemonitor.yaml | 32 + .../0.11.8/templates/serviceaccount.yaml | 14 + .../0.11.8/templates/user-rbac.yaml | 35 + .../helm/secrets-operator/0.11.8/values.yaml | 87 +++ ...secrets-operator-self-build-overrides.yaml | 12 + 27 files changed, 3344 insertions(+), 5 deletions(-) create mode 100644 manifests/helm/secrets-operator/0.11.8/.helmignore create mode 100644 manifests/helm/secrets-operator/0.11.8/BUILD-README.md create mode 100644 manifests/helm/secrets-operator/0.11.8/CUSTOM-README.md create mode 100644 manifests/helm/secrets-operator/0.11.8/Chart.yaml create mode 100644 manifests/helm/secrets-operator/0.11.8/README.md create mode 100644 manifests/helm/secrets-operator/0.11.8/ci/ci-values.yaml create mode 100644 manifests/helm/secrets-operator/0.11.8/ci/minimal-rbac.yaml create mode 100644 manifests/helm/secrets-operator/0.11.8/templates/_helpers.tpl create mode 100644 manifests/helm/secrets-operator/0.11.8/templates/clustergenerator-crd.yaml create mode 100644 manifests/helm/secrets-operator/0.11.8/templates/deployment.yaml create mode 100644 manifests/helm/secrets-operator/0.11.8/templates/infisicalauth-crd.yaml create mode 100644 manifests/helm/secrets-operator/0.11.8/templates/infisicalconnection-crd.yaml create mode 100644 manifests/helm/secrets-operator/0.11.8/templates/infisicaldynamicsecret-crd.yaml create mode 100644 manifests/helm/secrets-operator/0.11.8/templates/infisicalpushsecret-crd.yaml create mode 100644 manifests/helm/secrets-operator/0.11.8/templates/infisicalsecret-crd.yaml create mode 100644 manifests/helm/secrets-operator/0.11.8/templates/infisicalstaticsecret-crd.yaml create mode 100644 manifests/helm/secrets-operator/0.11.8/templates/leader-election-rbac.yaml create mode 100644 manifests/helm/secrets-operator/0.11.8/templates/manager-rbac.yaml create mode 100644 manifests/helm/secrets-operator/0.11.8/templates/metrics-auth-rbac.yaml create mode 100644 manifests/helm/secrets-operator/0.11.8/templates/metrics-reader-rbac.yaml create mode 100644 manifests/helm/secrets-operator/0.11.8/templates/metrics-service.yaml create mode 100644 manifests/helm/secrets-operator/0.11.8/templates/prometheus-servicemonitor.yaml create mode 100644 manifests/helm/secrets-operator/0.11.8/templates/serviceaccount.yaml create mode 100644 manifests/helm/secrets-operator/0.11.8/templates/user-rbac.yaml create mode 100644 manifests/helm/secrets-operator/0.11.8/values.yaml create mode 100644 scripts/deploy-test/fixtures/secrets-operator-self-build-overrides.yaml diff --git a/agent/update_catalog/skills/chart_version_detector/scripts/update_catalog/chart_version_detector.py b/agent/update_catalog/skills/chart_version_detector/scripts/update_catalog/chart_version_detector.py index e643c60..a124018 100644 --- a/agent/update_catalog/skills/chart_version_detector/scripts/update_catalog/chart_version_detector.py +++ b/agent/update_catalog/skills/chart_version_detector/scripts/update_catalog/chart_version_detector.py @@ -63,14 +63,16 @@ def _parse_repo_from_build_readme(path: Path) -> Tuple[Optional[str], Optional[s def _ensure_repo(repo: str, url: str) -> None: + # repo가 이미 등록돼 있어도 update는 항상 호출한다 — 등록만 하고 갱신을 건너뛰면 + # 로컬에 예전에 캐시된 index.yaml을 그대로 써서 latest_version이 조용히 낡은 값으로 + # 나온다(실측: secrets-operator에서 0.11.8이 나와야 할 자리에 0.11.4가 나왔다). try: out = _run(["helm", "repo", "list"]) - if repo in out: - return + if repo not in out: + _run(["helm", "repo", "add", repo, url]) except Exception: - pass - _run(["helm", "repo", "add", repo, url]) - _run(["helm", "repo", "update"]) + _run(["helm", "repo", "add", repo, url]) + _run(["helm", "repo", "update", repo]) def _latest_version(repo: str, chart: str) -> Optional[str]: diff --git a/manifests/helm/secrets-operator/0.11.8/.helmignore b/manifests/helm/secrets-operator/0.11.8/.helmignore new file mode 100644 index 0000000..0e8a0eb --- /dev/null +++ b/manifests/helm/secrets-operator/0.11.8/.helmignore @@ -0,0 +1,23 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*.orig +*~ +# Various IDEs +.project +.idea/ +*.tmproj +.vscode/ diff --git a/manifests/helm/secrets-operator/0.11.8/BUILD-README.md b/manifests/helm/secrets-operator/0.11.8/BUILD-README.md new file mode 100644 index 0000000..81b634a --- /dev/null +++ b/manifests/helm/secrets-operator/0.11.8/BUILD-README.md @@ -0,0 +1,78 @@ +# secrets-operator 버전 갱신 가이드 + +## 1. git 작업 환경 구성 + +- DIP 카탈로그 git 다운로드 +```sh +git clone https://github.com/paasup/dip-catalog.git +``` + +- 작업 브랜치로 체크아웃 +```sh +git checkout -b update-secrets-operator/0.11.8 +``` + +## 2. helm 차트 버전 업데이트 + +- BUILD-README.md, CUSTOM-README.md, custom-values.yaml을 제외한 파일 삭제 +```sh +# chart 디렉토리로 이동 +cd ~/dip-catalog/manifests/helm/secrets-operator/0.11.8 + +# 삭제할 파일 목록 확인 +find . -mindepth 1 \( -name "CUSTOM-README.md" -o -name "BUILD-README.md" -o -name "custom-values.yaml" \) -prune -o -print + +# 파일 삭제 +find . -mindepth 1 \( -name "CUSTOM-README.md" -o -name "BUILD-README.md" -o -name "custom-values.yaml" \) -prune -o -exec rm -rf {} + +``` + +- secrets-operator 차트 다운로드 +```sh +# manifests/helm/secrets-operator 디렉토리로 이동 +cd ~/dip-catalog/manifests/helm/secrets-operator + +# helm repo 추가 +helm repo add infisical-helm-charts https://dl.cloudsmith.io/public/infisical/helm-charts/helm/charts/ +helm repo update + +# helm 차트 pull +helm pull infisical-helm-charts/secrets-operator --version="0.11.8" + +# 차트 압축 해제 +tar xzvf secrets-operator-0.11.8.tgz + +# 압축 파일 삭제 +rm secrets-operator-0.11.8.tgz +``` + +## 3. git push 및 tag 추가 + +- 갱신작업 진행 후 commit +```sh +git add . +git commit -m "update secrets-operator/0.11.8" +``` + +- main 브랜치에 체크아웃 후 merge +```sh +git checkout main +git merge update-secrets-operator/0.11.8 +``` + +- git에 push 후 작업 브랜치 삭제 +```sh +git push -u origin main +git branch -d update-secrets-operator/0.11.8 +``` + +- git tag 추가 후 push +```sh +git tag secrets-operator/0.11.8 +git push origin secrets-operator/0.11.8 +``` + +## 4. 차트 버전 정보 + +- secrets-operator/0.11.8 (app version: 0.11.8) + - Infisical Secrets Operator (InfisicalSecret CRD 로 시크릿을 클러스터에 동기화) + - infisical-standalone 과 짝을 이루어 설치한다. diff --git a/manifests/helm/secrets-operator/0.11.8/CUSTOM-README.md b/manifests/helm/secrets-operator/0.11.8/CUSTOM-README.md new file mode 100644 index 0000000..0123ffc --- /dev/null +++ b/manifests/helm/secrets-operator/0.11.8/CUSTOM-README.md @@ -0,0 +1,53 @@ +# Upgrade History + +## v0.10.33 → 0.11.8 +### 변경 요약 +- from_version: v0.10.33 +- to_version: 0.11.8 +- Chart `secrets-operator` v0.10.33 → 0.11.8 업데이트 +- Values: +0 / -0 / ~1 / type~0 +- Templates: +3 / -0 +- Dependencies: +0 / -0 / ~0 + +### custom-values.yaml 수정 필요 항목 +없음 (이 차트는 애초에 custom-values.yaml이 없다 — 차트 기본값만 씀) + +### CVE 실측 (업그레이드 트리거) +이미지 `infisical/kubernetes-operator`를 trivy(+CoverageProbe 자가진단)로 직접 스캔한 결과: + +| 버전 | OS | 커버리지 | 실효 HIGH(차단) | +|---|---|---|---:| +| v0.10.33 | debian 13.4 | ✅ ok | 34 | +| v0.11.8 | debian 13.6 | ✅ ok | 10 | + +CRITICAL은 둘 다 0건. 34건 중 24건이 해소됨(대부분 stdlib·golang.org/x/net·x/crypto — +빌더 Go 툴체인이 올라가며 해소된 것으로 보임). 둘 다 `CoverageProbe: ok`라 이 수치는 +실측이지 데이터 부재로 인한 거짓 clean이 아니다. + +### 신규 CRD 3개 — `⚠️ 업그레이드 시 helm이 CRD를 자동 적용하지 않을 수 있다` +`InfisicalAuth`·`InfisicalConnection`·`InfisicalStaticSecret`가 새로 추가됐다 +(`infisicalauths.secrets.infisical.com` 등). helm은 기존 릴리스 업그레이드 시 CRD를 +자동으로 설치/갱신하지 않는 경우가 있다(helm 자체의 알려진 제약) — 업그레이드 후 +`kubectl get crd | grep infisical`로 3개가 실제로 생겼는지 반드시 확인한다. + +### 참고 +- severity: warning +- breaking: false + +# secrets-operator 배포 가이드 + +## 개요 + +Infisical Secrets Operator. `InfisicalSecret` CRD 를 감시해 Infisical 에 저장된 시크릿을 +클러스터 Secret 으로 동기화한다. `infisical-standalone` 과 짝을 이루어 설치한다. + +## custom-values + +없다 — 차트 기본값을 그대로 쓴다. + +## 주의사항 + +- 설치 순서: `infisical-standalone` 이 먼저 떠 있어야 오퍼레이터가 인증에 성공한다. +- 인증에는 Universal Auth(machine identity) 또는 Kubernetes Auth 를 쓴다. 사설 클러스터에서 + Kubernetes Auth 를 등록하려면 백엔드 쪽에 `ALLOW_INTERNAL_IP_CONNECTIONS=true` 가 필요하다 + (infisical-standalone 의 CUSTOM-README 참고). diff --git a/manifests/helm/secrets-operator/0.11.8/Chart.yaml b/manifests/helm/secrets-operator/0.11.8/Chart.yaml new file mode 100644 index 0000000..75e43ae --- /dev/null +++ b/manifests/helm/secrets-operator/0.11.8/Chart.yaml @@ -0,0 +1,6 @@ +apiVersion: v2 +appVersion: v0.11.8 +description: A Helm chart for Infisical secrets +name: secrets-operator +type: application +version: v0.11.8 diff --git a/manifests/helm/secrets-operator/0.11.8/README.md b/manifests/helm/secrets-operator/0.11.8/README.md new file mode 100644 index 0000000..6886706 --- /dev/null +++ b/manifests/helm/secrets-operator/0.11.8/README.md @@ -0,0 +1,99 @@ +# Infisical Helm Chart + +This is the Infisical Secrets Operator Helm chart. Find the integration documentation [here](https://infisical.com/docs/integrations/platforms/kubernetes) + +## Installation + +To install the chart, run the following : + +```sh +# Add the Infisical repository +helm repo add infisical 'https://dl.cloudsmith.io/public/infisical/helm-charts/helm/charts/' && helm repo update + +# Install Infisical Secrets Operator (with default values) +helm upgrade --install --atomic \ + -n infisical-dev --create-namespace \ + infisical-secrets-operator infisical/secrets-operator + +# Install Infisical Secrets Operator (with custom inline values, replace with your own values) +helm upgrade --install --atomic \ + -n infisical-dev --create-namespace \ + --set controllerManager.replicas=3 \ + infisical-secrets-operator infisical/secrets-operator + +# Install Infisical Secrets Operator (with custom values file, replace with your own values file) +helm upgrade --install --atomic \ + -n infisical-dev --create-namespace \ + -f custom-values.yaml \ + infisical-secrets-operator infisical/secrets-operator +``` + +## Synchronization + +To sync your secrets from Infisical (or from your own instance), create the below resources : + +```sh +# Create the tokenSecretReference (replace with your own token) +kubectl create secret generic infisical-example-service-token \ + --from-literal=infisicalToken="" + +# Create the InfisicalSecret +cat <