
# open-webui 배포

## 1. 배포 전 사전 필요 사항
- SSO 연동을 위해서는gitea가 배포될 **네임스페이스**에 keycloak 인증서가 secret으로 존재해야 한다.


## 2. custom-values.yaml 설명
- custom-values.yaml에 정의된 값에 대한 설명이다.

### ollama 설정
| Name | Description | Default |
|------|-------------|---------|
| ollama.enabled | ollama 배포여부 | false |

### tika 설정
| Name | Description | Default |
|------|-------------|---------|
| tika.enabled | tika 배포여부 | false |

### tika 설정
| Name | Description | Default |
|------|-------------|---------|
| tika.enabled | tika 배포여부 | false |

### websocket 설정
| Name | Description | Default |
|------|-------------|---------|
| websocket.enabled | websocket 배포여부 | false |

### redis-cluster 설정
| Name | Description | Default |
|------|-------------|---------|
| redis-cluster.enabled | websocket 배포여부 | false |

### persistence 설정
| Name | Description | Default |
|------|-------------|---------|
| persistencer.enabled | persistence 사용 | true |
| persistencer.size | persistence 용량 | 2Gi |

### Ingress 설정
Cert-manager를 통하여 Ingress를 생성하기 때문에 별도로 tls secret을 생성하지 않아도된다.
- host명 정의 필요.
```
ingress:
  enabled: true
  annotations:
    cert-manager.io/cluster-issuer: "root-ca-issuer"
  host: "open-webui.example.com"
  tls: true
  existingSecret: "open-webui-tls-secret"
```

### Keycloak SSO 연동
- Keycloak을 연동하기 위해서는 Keycloak에 Client가 생성되어 있어야 한다.
- 아래는 open-webui 라는 Client가 생성되었을 경우를 가정한다.
```
extraEnvVars:
  - name: OPENAI_API_KEY
    value: "0p3n-w3bu!"
  - name: OAUTH_CLIENT_ID
    value: open-webui
  - name: OAUTH_CLIENT_SECRET
    value: UXVwsmPSbWZ0pZkxwdgeY88vl9JJZJLQ
  - name: OPENID_PROVIDER_URL
    value: https://keycloak.example.com/auth/realms/paasup/.well-known/openid-configuration
  - name: OAUTH_PROVIDER_NAME
    value: paasup
  - name: OAUTH_SCOPES
    value: 'openid email profile'
  - name: ENABLE_LOGIN_FORM
    value: 'false'
  - name: SSL_CERT_FILE
    value: '/etc/ssl/certs/keycloak/ca.crt'
  - name: ENABLE_OAUTH_SIGNUP
    value: 'true'
  - name: OAUTH_MERGE_ACCOUNTS_BY_EMAIL
    value: 'true'
```
- open-webui가 배포되는 환경에 keycloak의 tls secret이 배포되어 있어야 한다.
```
volumeMounts:
  initContainer: []
  container:
  - name: "keycloak-tls"
    mountPath: "/etc/ssl/certs/keycloak"

volumes:
- name: "keycloak-tls"
  secret:
    secretName: keycloak-tls-secret
```
