Add platform infrastructure configuration

This commit is contained in:
donghyeon-ka
2026-08-28 17:35:41 +09:00
parent fa76531e5b
commit 16c337bcc9
302 changed files with 83259 additions and 1 deletions
@@ -0,0 +1,56 @@
# AIStor Operator
상태(2026-07-23): 실제 클러스터 적용 완료. ObjectStore Operator, AdminJob
Operator와 admission webhook이 모두 Ready `1/1`이며 단일 ObjectStore를
`Initialized/green`으로 관리한다.
이 디렉터리는 AIStor Operator의 유일한 Kustomize 빌드 루트다. 업스트림 템플릿을
복제하거나 수정하지 않고 공식 Chart를 렌더링한다. 홈 클러스터용 재정의 값은
`values/home.yaml`에 둔다.
## 고정된 원본
| 항목 | 값 |
| --- | --- |
| Chart 저장소 | `https://helm.min.io/` |
| Chart | `aistor-operator` |
| Chart 버전 | `5.10.0` |
| 애플리케이션 버전 | `v20260721224148.0.0` |
| Chart 패키지 SHA-256 | `e5534f5ae4f6f12a3528a8cda5954d73280cba1a8e979e1628fbf3aac76babd1` |
Chart 캐시는 Git에서 제외된 `.helm/charts/` 아래에 작성된다. 모든 입력 파일이 이
빌드 루트 아래에 있으므로 Kustomize의 기본 `RootOnly` 로드 제한으로 충분하다.
## 라이선스 계약
Chart 값 `license`는 빈 문자열로 유지해야 한다. 이 빌드 루트를 적용하기 전에
`aistor` namespace에 다음 키를 가진 `Secret/minio-license`를 생성한다.
| Secret | 유형 | 필수 키 |
| --- | --- | --- |
| `aistor/minio-license` | `Opaque` | `minio.license` |
라이선스 본문을 Git, values 파일, Shell 기록 또는 렌더링 산출물에 절대 남기지
않는다. 이 값을 비워 두면 Chart는 미리 생성한 Secret을 참조하지만 라이선스
Secret 자체를 렌더링하지 않는다.
Operator, admin-job Operator와 admission webhook은 각각
`donghyeon-system-product-name`에서 1 replica로 시작한다. 더 이상 권장되지 않는
AIHub, Prompt 및 Warp는 비활성화한다. TokenReview는 Chart의 표준 Kubernetes 인증
방식이므로 활성 상태를 유지한다.
Helm으로 직접 설치하지 않고 Kustomize 렌더와 보호 스크립트로만 적용한다.
```sh
kubectl kustomize --enable-helm infrastructure/controllers/aistor-operator
```
공식 Chart가 webhook `caBundle`을 렌더하지만 실행 중인 Operator가 이 값을
주입·회전한다. 재적용 때 server-side apply 소유권 충돌이 발생하지 않도록
`kustomization.yaml`에서 초기 빈 `caBundle` 필드를 제거한다. 실제 적용과
readiness 재검증은 `scripts/bootstrap/apply-aistor.sh --execute`가 수행한다.
## 공식 참고 문서
- <https://docs.min.io/aistor/reference/kubernetes/object-store-operator-helm-chart/>
- <https://docs.min.io/aistor/installation/kubernetes/install/deploy-aistor-on-kubernetes/>
@@ -0,0 +1,5 @@
# 기본 확장 지점
업스트림 리소스는 컨트롤러 디렉터리 루트에 선언된 Helm Chart에서 가져온다.
Chart와 무관하고 환경에 종속되지 않는 보조 리소스가 필요할 때만 이곳에 추가하며,
Chart 템플릿을 저장소에 복제하지 않는다.
@@ -0,0 +1,29 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: aistor
helmGlobals:
chartHome: .helm/charts
helmCharts:
- name: aistor-operator
repo: https://helm.min.io/
version: 5.10.0
releaseName: aistor
namespace: aistor
valuesFile: values/home.yaml
includeCRDs: true
skipTests: true
# The Operator injects and rotates this runtime CA. Do not let the Helm render
# claim field ownership with an empty value, which would break idempotent SSA.
patches:
- target:
group: admissionregistration.k8s.io
version: v1
kind: MutatingWebhookConfiguration
name: object-store-operator-webhook
patch: |-
- op: remove
path: /webhooks/0/clientConfig/caBundle
@@ -0,0 +1,4 @@
# 홈 환경 Overlay 확장 지점
홈 클러스터 Chart 설정은 `../../values/home.yaml`에 둔다. 업스트림 Chart 값으로
표현할 수 없는 Kustomize Patch만 이 디렉터리에 둔다.
@@ -0,0 +1,37 @@
# The official chart always looks for Secret/aistor/minio-license and mounts the
# minio.license key. Keep this empty so Helm never renders the license into Git.
license: ""
global:
fipsMode: false
clusterDomain: cluster.local
operator:
replicas: 1
nodeSelector:
kubernetes.io/hostname: donghyeon-system-product-name
resources:
requests:
cpu: 100m
memory: 128Mi
ephemeral-storage: 100Mi
limits:
cpu: 500m
memory: 512Mi
ephemeral-storage: 1Gi
operators:
adminjob:
disabled: false
aihub:
disabled: true
object-store:
disabled: false
replicas: 1
tokenValidation: TokenReview
webhook:
enabled: true
replicas: 1
prompt:
disabled: true
warp:
disabled: true