Add platform infrastructure configuration
This commit is contained in:
@@ -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
|
||||
@@ -0,0 +1,32 @@
|
||||
# CloudNativePG Operator
|
||||
|
||||
이 디렉터리는 Operator의 유일한 Kustomize 빌드 루트다. 공식
|
||||
`cloudnative-pg` Helm Chart를 복제하거나 수정하지 않고 렌더링한다. 홈 클러스터
|
||||
변경 사항은 `values/home.yaml`에 둔다.
|
||||
|
||||
## 고정된 원본
|
||||
|
||||
- Chart 저장소: <https://cloudnative-pg.github.io/charts>
|
||||
- Chart 버전: `0.29.0`
|
||||
- Operator 애플리케이션 버전: `1.30.0`
|
||||
- 공식 저장소 인덱스에 있는 Chart 패키지 SHA-256:
|
||||
`668e065ff53508d58238788fd35b355a925060843629a951df0e6a9362e6d32f`
|
||||
|
||||
Operator는 전체 클러스터를 감시하지만, 자체 namespace 리소스는 `cnpg-system`에서
|
||||
실행된다. CRD와 클러스터 RBAC은 Chart가 설치한다. 모니터링 스택과 관련 CRD가
|
||||
준비될 때까지 PodMonitor와 Grafana Dashboard 리소스는 비활성화한다.
|
||||
|
||||
저장소 공통 규칙에 따라 다음과 같이 렌더링한다.
|
||||
|
||||
```bash
|
||||
kubectl kustomize --enable-helm infrastructure/controllers/cloudnative-pg
|
||||
```
|
||||
|
||||
Kustomize는 Git에서 제외된 이 디렉터리의 `.helm/charts/` 아래에 Chart를 내려받는다.
|
||||
values 파일도 빌드 루트 아래에 있으므로 기본 `RootOnly` 로드 제한으로 충분하다.
|
||||
`--load-restrictor=LoadRestrictionsNone`는 사용하지 않는다.
|
||||
|
||||
## 공식 참고 문서
|
||||
|
||||
- <https://cloudnative-pg.io/docs/1.30/installation_upgrade/>
|
||||
- <https://github.com/cloudnative-pg/charts>
|
||||
@@ -0,0 +1,5 @@
|
||||
# 기본 확장 지점
|
||||
|
||||
업스트림 Operator는 컨트롤러 디렉터리 루트에 선언된 Helm Chart로 공급한다.
|
||||
Chart와 무관하고 환경에 종속되지 않는 보조 리소스가 실제로 필요할 때만 이곳에
|
||||
추가하며, Chart 템플릿을 저장소에 복제하지 않는다.
|
||||
@@ -0,0 +1,17 @@
|
||||
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||
kind: Kustomization
|
||||
|
||||
namespace: cnpg-system
|
||||
|
||||
helmGlobals:
|
||||
chartHome: .helm/charts
|
||||
|
||||
helmCharts:
|
||||
- name: cloudnative-pg
|
||||
repo: https://cloudnative-pg.github.io/charts
|
||||
version: 0.29.0
|
||||
releaseName: cloudnative-pg
|
||||
namespace: cnpg-system
|
||||
valuesFile: values/home.yaml
|
||||
includeCRDs: true
|
||||
skipTests: true
|
||||
@@ -0,0 +1,5 @@
|
||||
# 홈 환경 Overlay
|
||||
|
||||
현재 홈 클러스터용 Operator Overlay는 `../../values/home.yaml`의 Chart values
|
||||
파일로 표현한다. Helm values와 내려받은 Chart가 Kustomize의 기본 로드 제한 범위
|
||||
안에 있도록 컨트롤러 디렉터리를 빌드 루트로 유지한다.
|
||||
@@ -0,0 +1,31 @@
|
||||
# Home-cluster overrides for the official CloudNativePG operator chart.
|
||||
# Chart: cloudnative-pg 0.29.0 / appVersion 1.30.0
|
||||
replicaCount: 1
|
||||
|
||||
crds:
|
||||
create: true
|
||||
|
||||
config:
|
||||
create: true
|
||||
secret: false
|
||||
clusterWide: true
|
||||
|
||||
rbac:
|
||||
create: true
|
||||
aggregateClusterRoles: false
|
||||
|
||||
serviceAccount:
|
||||
create: true
|
||||
|
||||
monitoring:
|
||||
podMonitorEnabled: false
|
||||
grafanaDashboard:
|
||||
create: false
|
||||
|
||||
resources:
|
||||
requests:
|
||||
cpu: 50m
|
||||
memory: 100Mi
|
||||
limits:
|
||||
cpu: 500m
|
||||
memory: 256Mi
|
||||
@@ -0,0 +1,35 @@
|
||||
# Keycloak Operator
|
||||
|
||||
상태: `26.7.0` 실제 적용, Operator와 Keycloak Server 각각 `1/1` Ready
|
||||
namespace는 `baseline` enforce·`restricted` warn이다. 공식 Operator 적용 시
|
||||
restricted 필드 경고가 있었지만 baseline 정책에서 rollout은 성공했으므로 이를
|
||||
restricted 준수 완료로 표현하지 않는다.
|
||||
|
||||
이 디렉터리는 Keycloak Operator의 유일한 Kustomize 빌드 루트다. 공식 Keycloak
|
||||
Kubernetes 리소스를 직접 참조하며 업스트림 매니페스트를 복제하거나 수정하지
|
||||
않는다.
|
||||
|
||||
## 고정된 원본
|
||||
|
||||
- 저장소: <https://github.com/keycloak/keycloak-k8s-resources>
|
||||
- 리소스 경로: `kubernetes`
|
||||
- Keycloak 및 Operator 버전: `26.7.0`
|
||||
- 설치 모드: `keycloak` namespace 범위
|
||||
|
||||
업스트림 namespace 범위 Deployment는 각 컨트롤러의 감시 namespace를
|
||||
`JOSDK_WATCH_CURRENT`로 설정한다. 이 단일 인스턴스 홈 클러스터에서는 프리뷰
|
||||
상태인 `cluster-wide` Overlay로 전환하지 않는다.
|
||||
|
||||
이 디렉터리에서 다음과 같이 렌더링한다.
|
||||
|
||||
```bash
|
||||
kubectl kustomize infrastructure/controllers/keycloak-operator
|
||||
```
|
||||
|
||||
remote 참조가 Kustomize 캐시에 없으면 네트워크 접근이 필요하다. Argo CD가 고정된
|
||||
GitHub 원본을 가져올 수 있어야 한다.
|
||||
|
||||
## 공식 참고 문서
|
||||
|
||||
- <https://www.keycloak.org/operator/installation>
|
||||
- <https://github.com/keycloak/keycloak-k8s-resources/tree/26.7.0/kubernetes>
|
||||
@@ -0,0 +1,5 @@
|
||||
# 기본 확장 지점
|
||||
|
||||
공식 namespace 범위 Operator는 컨트롤러 디렉터리 루트의 Kustomization에서
|
||||
참조한다. 환경에 종속되지 않는 보조 리소스만 이곳에 추가하며, 생성된 CRD,
|
||||
RBAC 또는 Operator Deployment를 저장소에 복제하지 않는다.
|
||||
@@ -0,0 +1,12 @@
|
||||
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||
kind: Kustomization
|
||||
|
||||
namespace: keycloak
|
||||
|
||||
resources:
|
||||
- github.com/keycloak/keycloak-k8s-resources/kubernetes?ref=26.7.0
|
||||
|
||||
labels:
|
||||
- pairs:
|
||||
app.kubernetes.io/part-of: platform
|
||||
includeSelectors: false
|
||||
@@ -0,0 +1,5 @@
|
||||
# 홈 환경 Overlay 확장 지점
|
||||
|
||||
Keycloak Operator 26.7.0에는 홈 환경 전용 Patch가 필요하지 않다. 고정한 업스트림
|
||||
리소스를 로컬 Kustomize와 향후 Argo CD에서 일관되게 렌더링하도록 컨트롤러
|
||||
디렉터리를 유일한 빌드 루트로 유지한다.
|
||||
@@ -0,0 +1,5 @@
|
||||
# Prometheus Operator CRDs
|
||||
|
||||
`prometheus-operator-crds` chart `31.0.0`만 독립적으로 렌더한다. CRD는
|
||||
cluster-scoped API와 저장 객체의 스키마 경계이므로 workload 실패 시에도 자동 삭제하지
|
||||
않는다. `kube-prometheus-stack` 쪽에서는 CRD 생성을 별도로 비활성화한다.
|
||||
@@ -0,0 +1,15 @@
|
||||
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||
kind: Kustomization
|
||||
|
||||
helmGlobals:
|
||||
chartHome: .helm/charts
|
||||
|
||||
helmCharts:
|
||||
- name: prometheus-operator-crds
|
||||
repo: https://prometheus-community.github.io/helm-charts
|
||||
version: 31.0.0
|
||||
releaseName: prometheus-operator-crds
|
||||
namespace: observability
|
||||
valuesFile: values/home.yaml
|
||||
includeCRDs: true
|
||||
skipTests: true
|
||||
@@ -0,0 +1,22 @@
|
||||
crds:
|
||||
annotations: {}
|
||||
alertmanagerconfigs:
|
||||
enabled: true
|
||||
alertmanagers:
|
||||
enabled: true
|
||||
podmonitors:
|
||||
enabled: true
|
||||
probes:
|
||||
enabled: true
|
||||
prometheusagents:
|
||||
enabled: true
|
||||
prometheuses:
|
||||
enabled: true
|
||||
prometheusrules:
|
||||
enabled: true
|
||||
scrapeconfigs:
|
||||
enabled: true
|
||||
servicemonitors:
|
||||
enabled: true
|
||||
thanosrulers:
|
||||
enabled: true
|
||||
Reference in New Issue
Block a user