Add kong custom-values.yaml, CUSTOM-README.md
This commit is contained in:
@@ -0,0 +1,199 @@
|
|||||||
|
|
||||||
|
# Kong Ingress Controller 배포
|
||||||
|
|
||||||
|
## 1. 배포 방법
|
||||||
|
|
||||||
|
### 1) 배포시 주의 사항
|
||||||
|
|
||||||
|
- 배포 전 k8s service의 LoadBalancer를 사용할 수 있는지 확인 필요.
|
||||||
|
- cert-manager가 배포되었는지 확인 필요
|
||||||
|
|
||||||
|
### 2) 배포 방법
|
||||||
|
|
||||||
|
``` sh
|
||||||
|
git clone https://github.com/paasup/dip-catalog.git
|
||||||
|
cd charts/kong
|
||||||
|
helm upgrade kong ./ -f custom-values.yaml --install -n kong --create-namespace
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## 2. custom-values.yaml 설명
|
||||||
|
|
||||||
|
### 1) Pod 설정
|
||||||
|
|
||||||
|
|
||||||
|
| Name | 설명 | 기본값 |
|
||||||
|
| ---------------------- | ------------------------------------------------------------ | ------ |
|
||||||
|
| `image.repository` |이미지 설정. 커스텀 플러그인이 설치된 이미지를 사용.|`"paasup/kong-oidc-keycloak-authz"`|
|
||||||
|
| `image.tag` | 이미지 태그 설정 | "3.4.0-0.1.0" |
|
||||||
|
| `deployment.kong.enabled` | Kong의 사용 여부 설정. <br />'false'로 설정 시 `ingressController.enable=ture`로 설정해야함 | 'true' |
|
||||||
|
| `deployment.daemonset` | 배포되는 kong의 리소스 타입을 설정.<br />'true' : daemonset, 'false': deployment | "false" |
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
- `proxy` 컨테이너의 TimeZone 설정
|
||||||
|
|
||||||
|
``` yaml
|
||||||
|
deployment:
|
||||||
|
# proxy 컨테이너의 timezone 설정
|
||||||
|
# pod가 배포될 노드의 localtime 정보를 마운트, 노드의 해당 경로에 파일이 있는지 확인 필요.
|
||||||
|
userDefinedVolumeMounts:
|
||||||
|
- name: tz-config
|
||||||
|
mountPath: /etc/localtime
|
||||||
|
userDefinedVolumes:
|
||||||
|
- name: tz-config
|
||||||
|
hostPath:
|
||||||
|
path: /usr/share/zoneinfo/Asia/Seoul
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
### 2) Kong 서비스 설정
|
||||||
|
|
||||||
|
- `admin`, `manager`의 ingress 설정에 domain 정보 변경이 필요하다.
|
||||||
|
`admin`, `manager`는 같은 도메인을 사용하고 path로 서비스를 구분한다.
|
||||||
|
|
||||||
|
``` yaml
|
||||||
|
# Kong proxy 서비스 설정
|
||||||
|
proxy:
|
||||||
|
enabled: true
|
||||||
|
type: LoadBalancer
|
||||||
|
ingress:
|
||||||
|
enable: false
|
||||||
|
|
||||||
|
# Kong admin API 서비스 설정
|
||||||
|
admin:
|
||||||
|
annotations:
|
||||||
|
konghq.com/protocol: https
|
||||||
|
enabled: true
|
||||||
|
type: ClusterIP
|
||||||
|
ingress:
|
||||||
|
enabled: true
|
||||||
|
annotations:
|
||||||
|
konghq.com/https-redirect-status-code: "301"
|
||||||
|
konghq.com/protocols: https
|
||||||
|
konghq.com/strip-path: "true""
|
||||||
|
hostname: kong.example.org # 도메인 변경 필요
|
||||||
|
ingressClassName: kong
|
||||||
|
path: /api
|
||||||
|
# certificate 설정을 이용해 생성된 tls secret 이름을 설정
|
||||||
|
tls: kong-kong-admin-cert
|
||||||
|
|
||||||
|
# Kong Manager(UI) 서비스 설정
|
||||||
|
manager:
|
||||||
|
enabled: true
|
||||||
|
type: ClusterIP
|
||||||
|
annotations:
|
||||||
|
konghq.com/protocol: https
|
||||||
|
http:
|
||||||
|
enabled: false
|
||||||
|
ingress:
|
||||||
|
enabled: true
|
||||||
|
annotations:
|
||||||
|
konghq.com/https-redirect-status-code: "301"
|
||||||
|
hostname: kong.example.org # 도메인 변경 필요
|
||||||
|
ingressClassName: kong
|
||||||
|
path: /
|
||||||
|
# certificate 설정을 이용해 생성된 tls secret 이름을 설정
|
||||||
|
tls: kong-kong-admin-cert
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
### 3) 인증서 생성 설정
|
||||||
|
|
||||||
|
- Cert-manager가 설치되어 있어야 사용 가능하다.
|
||||||
|
|
||||||
|
- Ingress가 배포되는 서비스의 Ingress를 생성한다.
|
||||||
|
|
||||||
|
- 인증서는 `kong admin`과 `kong manager`에서 사용하고 있고 admin 인증서를 생성하여 같이 사용한다.
|
||||||
|
|
||||||
|
``` yaml
|
||||||
|
certificates:
|
||||||
|
enabled: true
|
||||||
|
clusterIssuer: selfsigned-issuer #
|
||||||
|
admin:
|
||||||
|
enabled: true
|
||||||
|
commonName: kong.example.org # 도메인 변경 필요
|
||||||
|
portal:
|
||||||
|
enabled: false
|
||||||
|
proxy:
|
||||||
|
enabled: false
|
||||||
|
cluster:
|
||||||
|
enabled: false
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
### 4) Kong Configuration 설정
|
||||||
|
|
||||||
|
- Kong configuration은 환경변수를 추가하여 설정한다.
|
||||||
|
- 내장 DB 설정에 맞춰 설정해야 한다.
|
||||||
|
외장 DB를 사용할 경우 설정 변경이 필요하다.
|
||||||
|
|
||||||
|
``` yaml
|
||||||
|
env:
|
||||||
|
admin_error_log: /dev/stdout
|
||||||
|
admin_gui_access_log: /dev/stdout
|
||||||
|
admin_gui_error_log: /dev/stdout
|
||||||
|
admin_access_log: /dev/stdout
|
||||||
|
cluster_data_plane_purge_delay: 60
|
||||||
|
cluster_listen: 0.0.0.0:8005
|
||||||
|
cluster_telemetry_listen: 0.0.0.0:8006
|
||||||
|
log_level: info
|
||||||
|
lua_package_path: /opt/?.lua;;
|
||||||
|
nginx_worker_processes: "2"
|
||||||
|
database: postgres
|
||||||
|
pg_database: kong
|
||||||
|
pg_host: kong-postgresql.kong.svc.cluster.local
|
||||||
|
pg_ssl: "off"
|
||||||
|
pg_ssl_verify: "off"
|
||||||
|
pg_user: kong
|
||||||
|
pg_password: password # kong에서 사용할 db 사용자의 패스워드로 변경.
|
||||||
|
plugins: bundled, oidc, keycloak-authz
|
||||||
|
prefix: /kong_prefix/
|
||||||
|
proxy_access_log: /dev/stdout
|
||||||
|
proxy_error_log: /dev/stdout
|
||||||
|
proxy_stream_access_log: /dev/stdout
|
||||||
|
proxy_stream_error_log: /dev/stdout
|
||||||
|
status_listen: 0.0.0.0:8100
|
||||||
|
trusted_ips: 0.0.0.0/0,::/0
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
### 5) Ingress Controller 설정
|
||||||
|
|
||||||
|
``` yaml
|
||||||
|
ingressController:
|
||||||
|
enabled: true
|
||||||
|
image:
|
||||||
|
repository: kong/kubernetes-ingress-controller
|
||||||
|
tag: "3.3" # kong 3.4 버전을 지원하는 최신 ingress conroller 버전
|
||||||
|
env:
|
||||||
|
kong_admin_filter_tag: ingress_controller_kong
|
||||||
|
kong_admin_tls_skip_verify: true
|
||||||
|
kong_admin_url: https://localhost:8444
|
||||||
|
publish_service: kong/kong-kong-proxy # {namespace}/{kong-proxy-service}으로 변경
|
||||||
|
|
||||||
|
# ingress-controller 컨테이너의 timezone 설정
|
||||||
|
customEnv:
|
||||||
|
TZ: "Asia/Seoul"
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
### 6) 내장 postgresql
|
||||||
|
|
||||||
|
- 해당 설정에 따라서 `env`에 postgresql 연결정보를 수정해야 한다.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
postgresql:
|
||||||
|
enabled: true
|
||||||
|
auth:
|
||||||
|
database: kong
|
||||||
|
username: kong
|
||||||
|
password: password
|
||||||
|
```
|
||||||
|
|
||||||
@@ -0,0 +1,154 @@
|
|||||||
|
image:
|
||||||
|
repository: paasup/kong-oidc-keycloak-authz
|
||||||
|
tag: 3.4.0-0.1.0
|
||||||
|
|
||||||
|
deployment:
|
||||||
|
kong:
|
||||||
|
enabled: true
|
||||||
|
daemonset: false
|
||||||
|
|
||||||
|
# proxy 컨테이너의 timezone 설정
|
||||||
|
userDefinedVolumeMounts:
|
||||||
|
- name: tz-config
|
||||||
|
mountPath: /etc/localtime
|
||||||
|
userDefinedVolumes:
|
||||||
|
- name: tz-config
|
||||||
|
hostPath:
|
||||||
|
path: /usr/share/zoneinfo/Asia/Seoul
|
||||||
|
|
||||||
|
# Kong proxy 서비스 설정
|
||||||
|
proxy:
|
||||||
|
enabled: true
|
||||||
|
type: LoadBalancer
|
||||||
|
ingress:
|
||||||
|
enable: false
|
||||||
|
|
||||||
|
# Kong admin API 서비스 설정
|
||||||
|
admin:
|
||||||
|
annotations:
|
||||||
|
konghq.com/protocol: https
|
||||||
|
enabled: true
|
||||||
|
type: ClusterIP
|
||||||
|
ingress:
|
||||||
|
enabled: true
|
||||||
|
annotations:
|
||||||
|
konghq.com/https-redirect-status-code: "301"
|
||||||
|
konghq.com/protocols: https
|
||||||
|
konghq.com/strip-path: "true"
|
||||||
|
hostname: kong.example.org
|
||||||
|
ingressClassName: kong
|
||||||
|
path: /api
|
||||||
|
# certificate를 사용하여 추가시 해당 이름으로 생성됨
|
||||||
|
# (helm release는 kong으로 배포해야함)
|
||||||
|
tls: kong-kong-admin-cert
|
||||||
|
|
||||||
|
manager:
|
||||||
|
enabled: true
|
||||||
|
type: ClusterIP
|
||||||
|
annotations:
|
||||||
|
konghq.com/protocol: https
|
||||||
|
http:
|
||||||
|
enabled: false
|
||||||
|
ingress:
|
||||||
|
enabled: true
|
||||||
|
annotations:
|
||||||
|
konghq.com/https-redirect-status-code: "301"
|
||||||
|
nginx.ingress.kubernetes.io/backend-protocol: HTTPS
|
||||||
|
hostname: kong.example.org
|
||||||
|
ingressClassName: kong
|
||||||
|
path: /
|
||||||
|
tls: kong-kong-admin-cert
|
||||||
|
|
||||||
|
# cluster:
|
||||||
|
# enabled: false
|
||||||
|
# type: ClusterIP
|
||||||
|
# tls:
|
||||||
|
# enabled: true
|
||||||
|
# labels:
|
||||||
|
# konghq.com/service: cluster
|
||||||
|
|
||||||
|
# Enterprise 영역 비활성화
|
||||||
|
enterprise:
|
||||||
|
enabled: false
|
||||||
|
portal:
|
||||||
|
enabled: false
|
||||||
|
portalapi:
|
||||||
|
enabled: false
|
||||||
|
clustertelemetry:
|
||||||
|
enabled: false
|
||||||
|
|
||||||
|
# cert-manager를 통한 인증서 생성 설정
|
||||||
|
certificates:
|
||||||
|
enabled: true
|
||||||
|
clusterIssuer: selfsigned-issuer
|
||||||
|
admin:
|
||||||
|
enabled: true
|
||||||
|
commonName: kong.example.org
|
||||||
|
portal:
|
||||||
|
enabled: false
|
||||||
|
proxy:
|
||||||
|
enabled: false
|
||||||
|
cluster:
|
||||||
|
enabled: false
|
||||||
|
|
||||||
|
# Kong의 Conriguration 설정
|
||||||
|
env:
|
||||||
|
#admin_gui_url: https://kong.example.org/ # kong manager의 URL 주소
|
||||||
|
#admin_gui_api_url: https://kong.example.org/api #
|
||||||
|
admin_access_log: /dev/stdout
|
||||||
|
admin_error_log: /dev/stdout
|
||||||
|
admin_gui_access_log: /dev/stdout
|
||||||
|
admin_gui_error_log: /dev/stdout
|
||||||
|
cluster_data_plane_purge_delay: 60
|
||||||
|
cluster_listen: 0.0.0.0:8005
|
||||||
|
cluster_telemetry_listen: 0.0.0.0:8006
|
||||||
|
log_level: info
|
||||||
|
lua_package_path: /opt/?.lua;;
|
||||||
|
nginx_worker_processes: "2"
|
||||||
|
database: postgres
|
||||||
|
pg_database: kong
|
||||||
|
pg_host: kong-postgresql.kong.svc.cluster.local
|
||||||
|
pg_ssl: "off"
|
||||||
|
pg_ssl_verify: "off"
|
||||||
|
pg_user: kong
|
||||||
|
pg_password: paasadm1234!
|
||||||
|
plugins: bundled, oidc, keycloak-authz
|
||||||
|
prefix: /kong_prefix/
|
||||||
|
proxy_access_log: /dev/stdout
|
||||||
|
proxy_error_log: /dev/stdout
|
||||||
|
proxy_stream_access_log: /dev/stdout
|
||||||
|
proxy_stream_error_log: /dev/stdout
|
||||||
|
status_listen: 0.0.0.0:8100
|
||||||
|
trusted_ips: 0.0.0.0/0,::/0
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# Ingress Controller 설정
|
||||||
|
ingressController:
|
||||||
|
enabled: true
|
||||||
|
image:
|
||||||
|
repository: kong/kubernetes-ingress-controller
|
||||||
|
tag: "3.3"
|
||||||
|
env:
|
||||||
|
kong_admin_filter_tag: ingress_controller_kong
|
||||||
|
kong_admin_tls_skip_verify: true
|
||||||
|
kong_admin_url: https://localhost:8444
|
||||||
|
publish_service: kong/kong-kong-proxy
|
||||||
|
|
||||||
|
# ingress-controller 컨테이너의 timezone 설정
|
||||||
|
customEnv:
|
||||||
|
TZ: "Asia/Seoul"
|
||||||
|
|
||||||
|
migrations:
|
||||||
|
enabled: true
|
||||||
|
postUpgrade: true
|
||||||
|
preUpgrade: true
|
||||||
|
|
||||||
|
|
||||||
|
# sub-chart postgres
|
||||||
|
postgresql:
|
||||||
|
enabled: true
|
||||||
|
auth:
|
||||||
|
database: kong
|
||||||
|
username: kong
|
||||||
|
password: paasadm1234!
|
||||||
Reference in New Issue
Block a user