## ArgoCD 배포 설정 가이드 ### Ingress Enable시 사전 필요사항 - 특정 도메인에 대한 TLS 인증서를 사용한 Ingress 배포시 해당 Namespace에 tls secret이 생성되어 있어야 합니다. - 생성가이드 ``` $ kubectl create secret tls ${TLS_NAME} --cert=tls.crt --key=tls.key -n ${NAMESPACE} ``` - cert-manager를 사용하여 tls를 발급할 경우 - custom-values.yaml 설정 ``` ingress: enabled: true annotations: cert-manager.io/cluster-issuer: "letsencrypt-prod" hosts: - host: argocd.example.com paths: - / tls: - secretName: ${TLS_NAME} hosts: - argocd.example.com ``` ### custom-values.yaml #### Global Configs | Key | Type | Default | Description | |-----|------|---------|-------------| | global.domain | string | `"argocd.example.com"` | ArgoCD에서 사용할 호스트네임을 지정합니다.| #### ArgoCD Server Ingress | Key | Type | Default | Description | |-----|------|---------|-------------| | server.ingress.annotations | object | `{}` | ingress의 annotations 설정합니다. | | server.ingress.enabled | bool | `false` | Ingress의 사용여부를 결정합니다. | | server.ingress.extraTls | list | `[]` | Ingress의 TLS를 설정합니다. | | server.ingress.hostname | string | `""` (defaults to global.domain) | ArgoCD의 호스트네임을 설정합니다. | | server.ingress.ingressClassName | string | `""` | Ingress 리소스를 구현할 컨트롤러를 정의합니다.| | server.ingress.labels | object | `{}` | Ingress에 추가할 Label을 정의합니다. | | server.ingress.path | string | `"/"` | The path to Argo CD server | | server.ingress.pathType | string | `"Prefix"` | Ingress path type. One of `Exact`, `Prefix` or `ImplementationSpecific` | #### Kong Ingress Controller 사용 시 필요 설정 - argocd를 배포할 때, kong ingress controller를 사용하면 다음과 같은 kong의 설정이 필요합니다. ``` yaml server: ingress: enabled: true annotations: # kong ingress controller 설정 konghq.com/https-redirect-status-code: "301" konghq.com/preserve-host: "true" konghq.com/protocols: https hostname: argocd.example.org ingressClassName: "kong" extraTls: - hosts: - argocd.example.org secretName: argocd-tls service: annotations: # argocd에서 발생하는 too many redirect 발생 방지를 위해 추가 konghq.com/protocol: https ```