# Kubeflow DIP용 Knative Serving 구성

이 디렉토리는 Kubeflow DIP(Data Intelligence Platform) 배포의 일부로 사용되는 Knative Serving의 Kustomization 구성을 포함합니다.

## 개요

이 구성은 DIP 환경에 맞춤화된 사용자 정의 패치를 통해 기본 Knative Serving 설치를 확장합니다. 공통 Knative Serving 기본 구성을 참조하고 배포를 사용자 정의하기 위해 여러 패치를 적용합니다.

## 구조

```
knative-serving/
├── kustomization.yaml          # 메인 Kustomization 구성
├── patches/                    # 사용자 정의 패치 디렉토리
│   ├── config-deployment.yaml  # 배포 리소스 구성
│   ├── config-feature.yaml     # 기능 플래그 구성
│   ├── config-domain.yaml      # 도메인 구성
│   ├── config-network.yaml     # 네트워크 구성
│   ├── gateway-selector-in-knative-serving.yaml  # knative-serving 네임스페이스용 게이트웨이 구성
│   └── gateway-selector-in-istio-system.yaml     # istio-system 네임스페이스용 서비스 구성
└── README.md                   # 이 파일
```

## 구성 세부사항

### 기본 리소스
- **기본 경로**: `../../../common/knative/knative-serving/base`
- Kubeflow 배포 전반에서 공유되는 공통 Knative Serving 기본 구성을 참조

### 적용된 패치

#### 1. 배포 구성 (`config-deployment.yaml`)
- **목적**: 큐 사이드카 컨테이너의 리소스 요청 구성
- **설정**:
  - 큐 사이드카 CPU 요청: `25m`
  - 큐 사이드카 메모리 요청: `400Mi`

#### 2. 기능 구성 (`config-feature.yaml`)
- **목적**: 특정 Knative Serving 기능 활성화
- **설정**:
  - 런타임 클래스 지원을 위한 `kubernetes.podspec-runtimeclassname` 기능 활성화

#### 3. 도메인 구성 (`config-domain.yaml`)
- **목적**: 사용자 정의 도메인 구성 설정
- **설정**:
  - `hopt.paasup.io`를 기본 도메인으로 구성

#### 4. 네트워크 구성 (`config-network.yaml`)
- **목적**: 네트워크 라우팅 및 도메인 템플릿 정의
- **설정**:
  - 도메인 템플릿: `{{.Name}}.{{.Namespace}}.{{.Domain}}`
  - 이는 `서비스명.네임스페이스.도메인` 형식의 URL을 생성

#### 5. 게이트웨이 구성 (`gateway-selector-in-knative-serving.yaml`)
- **목적**: 로컬 클러스터 액세스를 위한 Istio 게이트웨이 구성
- **네임스페이스**: `knative-serving`
- **설정**:
  - 게이트웨이 이름: `knative-local-gateway`
  - 셀렉터 레이블: `app: cluster-local-gateway`, `istio: cluster-local-gateway`

#### 6. 서비스 구성 (`gateway-selector-in-istio-system.yaml`)
- **목적**: 게이트웨이 라우팅을 위한 istio-system 네임스페이스의 서비스 구성
- **네임스페이스**: `istio-system`
- **설정**:
  - 서비스 이름: `knative-local-gateway`
  - 셀렉터 레이블: `app: cluster-local-gateway`, `istio: cluster-local-gateway`

## 사용법

이 구성은 Kubeflow DIP 스택을 배포할 때 자동으로 적용됩니다. 패치는 다음을 보장합니다:

1. **리소스 최적화**: 큐 사이드카가 적절한 리소스 요청을 사용
2. **기능 활성화**: 향상된 보안을 위한 런타임 클래스 이름 지원
3. **도메인 관리**: 사용자 정의 도메인 라우팅이 적절히 구성
4. **네트워크 라우팅**: 구성된 도메인 템플릿을 통해 서비스에 액세스 가능
5. **Istio 통합**: Istio 메시를 위한 적절한 게이트웨이 및 서비스 구성

## 의존성

- Knative Serving 기본 설치
- Istio 서비스 메시
- 적절한 RBAC 권한을 가진 Kubernetes 클러스터

## 참고사항

- `hopt.paasup.io` 도메인이 DNS 설정에서 적절히 구성되어야 함
- Istio cluster-local-gateway가 배포되고 실행 중인지 확인
- 큐 사이드카의 리소스 요청은 일반적인 DIP 워크로드에 최적화됨