From 01c572290cba78a5459fe020116154a8477831f0 Mon Sep 17 00:00:00 2001 From: wbsong111 Date: Mon, 24 Nov 2025 10:46:43 +0900 Subject: [PATCH] Update custom files --- charts/gitea/CUSTOM-README.md | 131 +++++++++++++++---------- charts/gitea/custom-values.yaml | 102 +++++++------------ charts/gitea/tenant-custom-values.yaml | 74 ++++++++++++++ 3 files changed, 189 insertions(+), 118 deletions(-) create mode 100644 charts/gitea/tenant-custom-values.yaml diff --git a/charts/gitea/CUSTOM-README.md b/charts/gitea/CUSTOM-README.md index 751157f..0db0533 100644 --- a/charts/gitea/CUSTOM-README.md +++ b/charts/gitea/CUSTOM-README.md @@ -48,17 +48,26 @@ | Name | 설명 | 기본값 | | ---------------------------------------- | ------------------------------------------------------------ | -------------------------------------------- | -| `gitea.admin.username` | 관리자 계정 이름. | `"sudouser"` | +| `gitea.admin.email` | 관리자 계정 이메일. | `"sudouser@cro.com"` | +| `gitea.admin.username` | 관리자 계정 사용자명. | `"sudouser"` | | `gitea.admin.password` | 관리자 계정 비밀번호. | `"password"` | +| `gitea.config.APP_NAME` | Gitea 애플리케이션 이름. | `"paasup git"` | +| `gitea.config.RUN_MODE` | Gitea 실행 모드. | `"prod"` | +| `gitea.config.server.ROOT_URL` | Gitea 서버의 루트 URL. | `"https://gitea.example.org"` | | `gitea.config.database.DB_TYPE` | 사용할 DB의 종류. | `"postgres"` | | `gitea.config.database.HOST` | DB 접속을 위한 hostname. | `"postgresql-postgresql-ha-postgresql:5432"` | -| `gitea.config.database.NAME` | 사용할 Database 이름. | `"postgres"` | -| `gitea.config.database.USER` | DB 접속 시 사용할 계정. | `"postgres"` | -| `gitea.config.database.PASSWD` | DB 접속 시 사용할 계정의 비밀번호. | `"postgres"` | -| `gitea.config.database.SCHEMA` | DB에서 사용할 스키마. | `"pulic"` | -| `gitea.config.session.PROVIDER` | session engine provider 설정 | | -| `gitea.config.session.PROVIDER_CONFIG` | session engine provider 접속 설정.
비어있을 시 db 설정을 사용한다. | `""` | -| `gitea.config.repository.DEFAULT_BRANCH` | gitea의 repository에서 사용할 기본 브랜치 이름 | `"master"` | +| `gitea.config.database.NAME` | 사용할 Database 이름. | `"gitea"` | +| `gitea.config.database.USER` | DB 접속 시 사용할 계정. | `"gitea"` | +| `gitea.config.database.PASSWD` | DB 접속 시 사용할 계정의 비밀번호. | `"gitea"` | +| `gitea.config.database.CHARSET` | DB 문자셋 설정. | `"utf8"` | +| `gitea.config.database.SCHEMA` | DB에서 사용할 스키마. | `"gitea"` | +| `gitea.config.database.SSL_MODE` | DB SSL 모드 설정. | `"disable"` | +| `gitea.config.session.PROVIDER` | session engine provider 설정. | `"postgres"` | +| `gitea.config.session.PROVIDER_CONFIG` | session engine provider 접속 설정. | `"user=gitea password=gitea host=postgresql-postgresql-ha-postgresql port=5432 dbname=gitea_session sslmode=disable"` | +| `gitea.config.session.COOKIE_NAME` | 세션 쿠키 이름. | `"i_hate_gitea"` | +| `gitea.config.service.DEFAULT_ALLOW_CREATE_ORGANIZATION` | 조직 생성 허용 여부. | `true` | +| `gitea.config.repository.DEFAULT_BRANCH` | gitea의 repository에서 사용할 기본 브랜치 이름. | `"master"` | +| `gitea.oauth` | OAuth 설정 목록 (Keycloak SSO 연동). | 아래 참조 | @@ -86,13 +95,13 @@ ingress: tls: - hosts: host: gitea.example.org # 도메인 수정 필요 - secretName: platform + secretName: gitea-tls-secret ``` - ingress 사용을 위해서는 인증서를 secret으로 제공해야한다. 로컬 파일을 이용해 secret을 생성하는 방법은 다음과 같다. ``` sh - kubectl create secret tls platform --cert= --key= -n + kubectl create secret tls gitea-tls-secret --cert= --key= -n ``` ### 2) cert-manager 사용방법 @@ -133,64 +142,73 @@ ingress: ## 4. Keycloak SSO 연동 -- keycloak 대상의 SSO 연동 설정 시 아래 설정을 `custom-values.yaml` 또는 `argo-values.yaml`에 추가한다. -- keycloak이 사설 인증서를 사용할 시 keycloak의 ca.crt를 secret으로 배포하고 아래와 같이 pod에 마운트한다. -- `KEYCLOAK_URL`에 있는 정보를 keyclok에서 사용하는 도메인으로 수정이 필요하다. -- `REALM`에 있는 정보를 keycloak에서 사용할 realm으로 수정이 필요하다.. -- `KEYCLOAK_CLIENT_ID`에 있는 정보를 kecloak의 client id로 수정이 필요하다. -- `KEYCLOAK_SECRET`에 있는 정보를 client id의 credential secret으로 수정이 필요하다. +- Keycloak과의 SSO 연동은 `gitea.oauth` 설정을 통해 구성한다. +- 사설 인증서를 사용하는 경우 TLS 인증서를 마운트해야 한다. +### 4-1) OAuth 설정 ``` yaml +gitea: + oauth: + - autoDiscoverUrl: http://keycloak/realms/paasup/.well-known/openid-configuration + key: gitea # Keycloak에서 설정한 Client ID + name: Keycloak # OAuth 제공자 표시 이름 + provider: openidConnect # OAuth 제공자 타입 + secret: VWIjYDNosSlPseEo5Uo8nkP3OHO4MigA # Keycloak Client Secret +``` + +### 4-2) 사설 인증서 사용 시 추가 설정 + +``` yaml +# 사설 인증서를 사용 시 아래 내용 추가 extraVolumes: - - name: gitea-tls - secret: - ## 직접 생성하거니 같은 인증서를 사용할 때 - secretName: platform - ## cert-manganager 사용시 - # secretName: keycloak-tls-secret + - name: gitea-tls + secret: + secretName: gitea-tls-secret extraContainerVolumeMounts: - name: gitea-tls mountPath: /etc/ssl/certs/ca.crt - subPath: ca.crt - -lifecycleHooks: - postStart: - exec: - command: - - "/bin/sh" - - "-c" - - | - /bin/bash <<'EOF' > /tmp/post_start.log - su git - OAUTH_NAME='keycloak' - AUTH_ID=$(gitea admin auth list --vertical-bars | grep -E "\|${OAUTH_NAME}\s+\|" | grep -iE '\|OAuth2\s+\|' | awk -F " " "{print \$1}") - KEYCLOAK_URL="https://keycloak.example.org" - KEYCLOAK_CLIENT_ID="keycloak" - KEYCLOAK_SECRET="" - REALM=paasup - if [[ -z "${AUTH_ID}" ]]; then - echo "No oauth configuration found with name '${OAUTH_NAME}'. Installing it now..." - gitea admin auth add-oauth --auto-discover-url "${KEYCLOAK_URL}/auth/realms/${REALM}/.well-known/openid-configuration" --key "${KEYCLOAK_CLIENT_ID}" --name "keycloak" --provider "openidConnect" --secret "{$KEYCLOAK_SECRET}" - echo '...installed.' - else - echo "Existing oauth configuration with name '${OAUTH_NAME}': '${AUTH_ID}'. Running update to sync settings..." - gitea admin auth update-oauth --id "${AUTH_ID}" --auto-discover-url "${KEYCLOAK_URL}/auth/realms/${REALM}/.well-known/openid-configuration" --key"${KEYCLOAK_CLIENT_ID}" --name "keycloak" --provider "openidConnect" --secret "{$KEYCLOAK_SECRET}" - echo '...sync settings done.' - fi - EOF + subPath: ca.crt ``` +### 4-3) OAuth 설정 파라미터 -## 5. 테넌트 배포 +| Name | 설명 | 기본값 | +| ------------------- | ------------------------------------------------------- | ---------------------------------------------------------------- | +| `autoDiscoverUrl` | Keycloak OpenID Connect 자동 검색 URL | `"http://keycloak/realms/paasup/.well-known/openid-configuration"` | +| `key` | Keycloak에서 설정한 Client ID | `"gitea"` | +| `name` | OAuth 제공자 표시 이름 | `"Keycloak"` | +| `provider` | OAuth 제공자 타입 | `"openidConnect"` | +| `secret` | Keycloak Client Secret | `"VWIjYDNosSlPseEo5Uo8nkP3OHO4MigA"` | + + +## 5. 의존성 설정 +- 현재 custom-values.yaml에서는 외부 PostgreSQL을 사용하도록 설정. +- 차트에 포함된 PostgreSQL과 Valkey는 비활성화. + +``` yaml +# Postgresql 비활성화 (외부 PostgreSQL 사용) +postgresql: + enabled: false +postgresql-ha: + enabled: false + +# valkey 비활성화 +valkey: + enabled: false +valkey-cluster: + enabled: false +``` + +### 5-1) 테넌트 배포 (내장 PostgreSQL 사용) - 테넌트 배포를 위하여 차트에 포함된 postgresql를 포함하여 배포하기 위한 설정이다. -- 전체 내용은 argo-values.yaml 참조한다. ``` yaml gitea: - admin: + admin: + existingSecret: username: sudouser password: password email: "sudouser@cro.com" @@ -214,6 +232,15 @@ postgresql: persistence: size: 5Gi # storageClass: "" # 생성할 볼륨의 storageClass를 설정한다. +postgresql-ha: + enabled: false +valkey: + enabled: true + primary: + persistence: + size: 8Gi +valkey-cluster: + enabled: false ``` diff --git a/charts/gitea/custom-values.yaml b/charts/gitea/custom-values.yaml index ce9f0f3..e5f025f 100644 --- a/charts/gitea/custom-values.yaml +++ b/charts/gitea/custom-values.yaml @@ -1,28 +1,6 @@ global: imageRegistry: "" -# # ingress 배포 전 인증서 secret 배포 필요(secret 이름은 platform) -# ingress: -# enabled: true -# annotations: -# kubernetes.io/ingress.class: nginx -# nginx.ingress.kubernetes.io/proxy-body-size: 200m -# hosts: -# - host: gitea.example.org -# paths: -# - path: / -# pathType: Prefix -# tls: -# - hosts: -# host: gitea.example.org -# secretName: platform - -# # 사설 인증서를 사용 시 아래 내용 추가 -# extraVolumes: -# - name: gitea-tls -# secret: -# secretName: platform - # ingress 배포 전 인증서 secret 배포 필요(secret 이름은 platform) ingress: enabled: true @@ -54,32 +32,6 @@ extraContainerVolumeMounts: mountPath: /etc/ssl/certs/ca.crt subPath: ca.crt -# lifecycleHooks: -# postStart: -# exec: -# command: -# - "/bin/sh" -# - "-c" -# - | -# /bin/bash <<'EOF' > /tmp/post_start.log -# su git -# OAUTH_NAME='keycloak' -# AUTH_ID=$(gitea admin auth list --vertical-bars | grep -E "\|${OAUTH_NAME}\s+\|" | grep -iE '\|OAuth2\s+\|' | awk -F " " "{print \$1}") -# KEYCLOAK_URL="https://keycloak.example.org" -# KEYCLOAK_CLIENT_ID="keycloak" -# KEYCLOAK_SECRET="" -# REALM=paasup -# if [[ -z "${AUTH_ID}" ]]; then -# echo "No oauth configuration found with name '${OAUTH_NAME}'. Installing it now..." -# gitea admin auth add-oauth --auto-discover-url "${KEYCLOAK_URL}/auth/realms/${REALM}/.well-known/openid-configuration" --key "${KEYCLOAK_CLIENT_ID}" --name "keycloak" --provider "openidConnect" --secret "{$KEYCLOAK_SECRET}" -# echo '...installed.' -# else -# echo "Existing oauth configuration with name '${OAUTH_NAME}': '${AUTH_ID}'. Running update to sync settings..." -# gitea admin auth update-oauth --id "${AUTH_ID}" --auto-discover-url "${KEYCLOAK_URL}/auth/realms/${REALM}/.well-known/openid-configuration" --key"${KEYCLOAK_CLIENT_ID}" --name "keycloak" --provider "openidConnect" --secret "{$KEYCLOAK_SECRET}" -# echo '...sync settings done.' -# fi -# EOF - ## pod 설정 replicaCount: 1 @@ -103,29 +55,47 @@ persistence: ## 같은 네임스페이스에 postgresql 배포 가정 gitea: admin: - existingSecret: gitea-user-secret - email: "tech@paasup.io" + email: sudouser@cro.com + username: sudouser + password: password config: APP_NAME: paasup git RUN_MODE: prod - server: - ROOT_URL: https://gitea.example.org database: - DB_TYPE: postgres - # HOST: postgresql-postgresql-ha-pgpool:5432 - HOST: postgresql-postgresql-ha-postgresql:5432 - NAME: postgres # database name - USER: postgres # username - PASSWD: postgres # user password CHARSET: utf8 - SCHEMA: public + DB_TYPE: postgres + HOST: postgresql-postgresql-ha-postgresql:5432 + NAME: gitea + USER: gitea + PASSWD: gitea + SCHEMA: gitea SSL_MODE: disable - session: - PROVIDER: postgres - # PROVIDER_CONFIG: user=gitea password=gitea host=postgresql-postgresql-ha-pgpool port=5432 dbname=gitea_session sslmode=disable - PROVIDER_CONFIG: user=postgres password=postgres host=postgresql-postgresql-ha-postgresql port=5432 dbname=postgres sslmode=disable - COOKIE_NAME: i_hate_gitea - service: - DEFAULT_ALLOW_CREATE_ORGANIZATION: true repository: DEFAULT_BRANCH: master + server: + ROOT_URL: https://gitea.example.org + service: + DEFAULT_ALLOW_CREATE_ORGANIZATION: true + session: + COOKIE_NAME: i_hate_gitea + PROVIDER: postgres + PROVIDER_CONFIG: user=gitea password=gitea host=postgresql-postgresql-ha-postgresql + port=5432 dbname=gitea_session sslmode=disable + oauth: + - autoDiscoverUrl: http://keycloak/realms/paasup/.well-known/openid-configuration + key: gitea + name: Keycloak + provider: openidConnect + secret: VWIjYDNosSlPseEo5Uo8nkP3OHO4MigA + +# Postgresql 비활성화 +postgresql: + enabled: false +postgresql-ha: + enabled: false + +# valkey 비활성화 +valkey: + enabled: false +valkey-cluster: + enabled: false \ No newline at end of file diff --git a/charts/gitea/tenant-custom-values.yaml b/charts/gitea/tenant-custom-values.yaml new file mode 100644 index 0000000..5e602bb --- /dev/null +++ b/charts/gitea/tenant-custom-values.yaml @@ -0,0 +1,74 @@ +global: + imageRegistry: "" + + +ingress: + enabled: true + annotations: + cert-manager.io/cluster-issuer: "root-ca-issuer" + cert-manager.io/duration: 8760h + cert-manager.io/renew-before: 720h + konghq.com/protocols: https + konghq.com/https-redirect-status-code: "301" + + hosts: + - host: gitea-test.example.org + paths: + - path: / + pathType: Prefix + tls: + - hosts: + host: gitea-test.example.org + secretName: gitea-tls + +## pod 설정 +replicaCount: 1 +resources: + requests: + cpu: 100m + memory: 300Mi + limits: + cpu: 300m + memory: 500Mi + +persistence: + enabled: true + storageClass: "" + size: "10Gi" + + +## 같은 네임스페이스에 postgresql 배포 가정 +gitea: + admin: + username: sudouser + password: password + email: "sudouser@cro.com" + config: + APP_NAME: paasup git + RUN_MODE: prod + server: + ROOT_URL: https://gitea.example.org + service: + DEFAULT_ALLOW_CREATE_ORGANIZATION: true + repository: + DEFAULT_BRANCH: master + +postgresql: + enabled: true + global: + postgresql: + postgresqlDatabase: gitea # 데이터베이스 이름 설정 + postgresqlUsername: gitea # 데이터베이스 사용자 이름 설정 + postgresqlPassword: gitea # 데이터베이스 사용자 비밀번호 설정 + persistence: + size: 5Gi + # storageClass: "" # 생성할 볼륨의 storageClass를 설정한다. +postgresql-ha: + enabled: false +valkey: + enabled: true + primary: + persistence: + size: 8Gi +valkey-cluster: + enabled: false \ No newline at end of file