Files
service-catalog/charts/gitea/CUSTOM-README.md
T
2024-11-14 13:13:56 +09:00

6.6 KiB

Postgresql-HA 배포

1. 배포 전 사전 필요 사항

  • ingress 배포를 위해서는 인증서가 secret으로 배포되어있어야 한다.
  • gitea가 배포될 네임스페이스에 postgresql이 배포되어 있어야 한다.

2.custom-values.yaml 설명

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

1) 전역 설정

  • private 환경 배포시 사용한다.
Name 설명 기본값
global.imageRegistry 오프라인 설치 시에 설정.
paasup 설치시에는 "paasup.io"으로 설정
""

2) Pod 설정

Name 설명 기본값
replicaCount gitea pod의 replicas 설정. "1"
tolerations gitea pod의 toleration 설정. []
nodeSelector gitea pod의 nodeSelector 설정. {}
resources.request.cpu Gitea pod의 cpu requst 설정. "100m"
resources.request.memory Gitea pod의 memory requst 설정. "300Mi"
resources.limits.cpu Gitea pod의 cpu limits 설정. "300m"
resources.limits.memory Gitea pod의 memory limits 설정. 500Mi
persistence.enable Gitea pod에 Persistence 생성 여부. "ture"
persistence.size 생성할 Persistent Volume 사이즈. 10Gi
persistence.storageClass Storage Class 설정. ""

3) gitea 설정

  • Gitea의 계정 설정과 app.ini에서 작성되는 기본 설정, 외부 DB 설정 등을 작성한다.
Name 설명 기본값
gitea.admin.username 관리자 계정 이름. "sudouser"
gitea.admin.password 관리자 계정 비밀번호. "password"
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"

3. Ingress 설정

  • gitea에서 ingress 사용을 위해서는 다음과 같이 설정할 수 있다.
# 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
  • ingress 사용을 위해서는 인증서를 secret으로 제공해야한다. 로컬 파일을 이용해 secret을 생성하는 방법은 다음과 같다.

    kubectl create secret tls platform --cert=<path-to-cert-file> --key=<path-to-key-file> -n <namespace>
    

4. lifecycleHook을 이용한 Keycloak SSO 연동

  • keycloak
  • keycloak 대상의 SSO 연동 설정 시 아래 설정을 custom-values.yaml에 작성한다.
  • KEYCLOAK_URL에 있는 정보를 keyclok에서 사용하는 도메인으로 수정이 필요하다.
  • 사설 인증서 사용시 4. 사설 인증서extraVolumesextraContainerVolumeMounts이 포함되어야 한다.
extraVolumes:
 - name: gitea-tls
   secret:
     secretName: platform

extraContainerVolumeMounts:
  - name: gitea-tls
    mountPath: /data/gitea/https
    
lifecycleHooks:
  postStart:
    exec:
      command: 
      - "/bin/sh"
      -  "-c"
      - |
        /bin/bash <<'EOF' > /tmp/post_start.log
        cp /data/gitea/https/tls.crt /usr/local/share/ca-certificates/ # 사설 인증서 사용시에만 추가
        update-ca-certificates  # 사설 인증서 사용시에만 추가
        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"
        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 "gitea" --name "keycloak" --provider "openidConnect" --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 "gitea" --name "keycloak" --provider "openidConnect" --secret "" 
          echo '...sync settings done.'
        fi
        EOF