teleport-cluster
Helm 차트는 Kubernetes에 Teleport 클러스터를 배포합니다.
여기에는 프록시, 인증 서버, 및 kubernetes-access를 배포하는 것이 포함됩니다.
자세한 내용은 Teleport HA 아키텍처 페이지를 참조하십시오.
소스를 GitHub에서 탐색할 수 있습니다.
teleport-cluster
차트는 두 개의 파드 세트로 나누어진 세 개의 Teleport 서비스를 실행합니다:
Teleport 서비스 | 실행 위치 | 용도 | 문서 |
---|---|---|---|
auth_service | auth Deployment | 사용자를 인증하고 인증서를 발급합니다. | 인증 문서 |
kubernetes_service | auth Deployment | Teleport 클러스터가 호스팅된 Kubernetes 클러스터에 안전하게 액세스할 수 있도록 제공합니다. | Kubernetes Access 문서 |
proxy_service | proxy Deployment | 웹 UI, SSH 프록시 및 리버스 터널 서비스와 같은 Teleport 클러스터의 외부-facing 부분을 실행합니다. | 프록시 문서 |
데이터베이스, 애플리케이션 또는 Teleport 클러스터를 호스팅하는 다른 Kubernetes 클러스터와 같은 리소스에 대한 액세스를 제공하려면
teleport-kube-agent
Helm 차트를 사용해야 합니다.
teleport-cluster
는 Teleport 클러스터를 호스팅하며, 하나만 필요합니다.teleport-kube-agent
는 기존 Teleport 클러스터에 연결하고 구성된 리소스를 노출합니다.
이 참조는 teleport-cluster
차트에 대해 사용할 수 있는 값을 상세히 설명합니다.
teleport-cluster
차트는 네 가지 다른 모드에서 배포될 수 있습니다.
각 모드에 대한 가이드를 시작하려면 다음을 참조하십시오:
chartMode | 용도 | 가이드 |
---|---|---|
standalone | Kubernetes 리소스만 활용하여 실행됩니다. | 시작하기 - Kubernetes |
aws | AWS 관리 서비스를 활용하여 데이터를 저장합니다. | AWS EKS 클러스터를 이용한 HA Teleport 클러스터 실행 |
gcp | GCP 관리 서비스를 활용하여 데이터를 저장합니다. | Google Cloud GKE 클러스터를 이용한 HA Teleport 클러스터 실행 |
azure | Azure 관리 서비스를 활용하여 데이터를 저장합니다. | Microsoft Azure AKS 클러스터를 이용한 HA Teleport 클러스터 실행 |
scratch (버전 12 이상) | 빈 Teleport 구성을 생성합니다. 사용자가 자신의 구성을 제공해야 합니다. 이는 권장되지 않으며, auth.teleportConfig 및 proxy.teleportConfig 를 사용하여 standalone 모드를 사용하는 것이 좋습니다. | 사용자 정의 구성을 이용한 Teleport 클러스터 실행 |
custom
모드는 Teleport 버전 12에서 제거되었습니다. 자세한 내용은 버전 12 마이그레이션 가이드를 참조하십시오.
차트는 Teleport와 함께 버전 관리됩니다. 새로운 차트와 이전의 주요 Teleport 버전 간에 호환성 보장은 제공되지 않습니다.
Helm 차트와 동일한 주요 버전의 Teleport 버전을 항상 배포하는 것이 강력히 권장됩니다.
프로덕션 인스턴스, 환경 및/또는 설정을 영구적으로 수정하기 전에 백업하는 것이 모범 사례로 권장됩니다. 이렇게 하면 필요할 경우 기존 상태로 롤백할 수 있습니다.
clusterName
유형 | 기본값 | 필수? | teleport.yaml 에 대응하는 항목 |
---|---|---|---|
string | nil | 예 | auth_service.cluster_name , proxy_service.public_addr |
clusterName
은 Teleport 클러스터를 참조하는 데 사용되는 이름과 클러스터에 접근하기 위한 외부 노출 주소를 제어합니다.
대부분의 설정에서 이는 완전한 도메인 이름이어야 합니다 (예: teleport.example.com
),
이 값은 기본적으로 클러스터의 공용 주소로 사용됩니다.
clusterName
으로 완전한 도메인 이름을 사용하는 경우, 해당 도메인의 DNS 제공자를 구성해야 외부 로드 밸런서의 IP 주소를 가리켜야 합니다.
IP 주소 또는 호스트 이름이 로드 밸런서를 위한 외부 주소로 제공되는지는 공급자에 따라 다릅니다.
EKS는 호스트 이름을 사용합니다:
kubectl --namespace teleport-cluster get service/teleport -o jsonpath='{.status.loadBalancer.ingress[*].hostname}'a5f22a02798f541e58c6641c1b158ea3-1989279894.us-east-1.elb.amazonaws.com
GKE는 IP 주소를 사용합니다:
kubectl --namespace teleport-cluster get service/teleport -o jsonpath='{.status.loadBalancer.ingress[*].ip}'35.203.56.38
DNS A 레코드를 수동으로 추가하여 teleport.example.com
을 IP로 지정하거나 혹은 Kubernetes 로드 밸런서의 호스트 이름을 가리키는 CNAME 레코드를 추가해야 합니다.
Teleport은 애플리케이션 접근을 위해 구성한 각 애플리케이션에 서브도메인을 할당합니다. 예를 들어, Grafana를 리소스로 등록하면 Teleport은 리소스를 grafana.teleport.example.com
서브도메인에 할당합니다.
Teleport 클러스터를 자체 네트워크에서 호스팅하는 경우, 애플리케이션 서브도메인을 반영하도록 DNS 구성을 업데이트해야 합니다.
DNS를 업데이트하는 방법은 두 가지가 있습니다:
- 서브도메인 이름에 대한 와일드카드 치환을 사용하여 단일 DNS 주소(A) 또는 정식 이름(CNAME) 레코드를 생성합니다. 예를 들어,
*.teleport.example.com
이라는 이름으로 DNS 레코드를 생성합니다. - 각 애플리케이션 서브도메인에 대해 별도의 DNS 주소(A) 또는 정식 이름(CNAME) 레코드를 생성합니다.
DNS 수정은 인증 기관(예: Let's Encrypt)이 각 서브도메인에 대해 인증서를 발급할 수 있도록 하며, 클라이언트가 접근하는 애플리케이션에 관계없이 Teleport 호스트를 확인할 수 있도록 합니다.
Teleport 클라우드 플랫폼을 사용하는 경우, DNS 업데이트가 필요하지 않습니다. 왜냐하면 Teleport 클러스터가 자동으로 서브도메인과 서명된 TLS 인증서를 제공하기 때문입니다.
clusterName
은 Teleport 클러스터의 생애 주기 동안 변경할 수 없습니다.
변경해야 하는 경우, 완전히 새로운 클러스터를 재배포해야 합니다.
kubeClusterName
유형 | 기본값 | 필수? | teleport.yaml 에 대응하는 항목 |
---|---|---|---|
string | clusterName 값 | 아니요 | kubernetes_service.kube_cluster_name |
kubeClusterName
은 Kubernetes 접근을 위한 이름을 설정합니다.
이 이름은 Kubernetes 클러스터에 연결하는 Teleport 사용자에게 표시됩니다.
auth
유형 | 기본값 | 필수? |
---|---|---|
object | 아니요 |
teleport-cluster
차트는 Auth 서비스와 Proxy 서비스에 대해 두 개의 파드 세트를 배포합니다.
auth
는 Teleport Auth 서비스와 관련된 Kubernetes 리소스에 대해서만 차트 값을 설정할 수 있습니다.
이는 차트 범위 값과 병합되어 충돌이 발생할 경우 우선권을 가집니다.
예를 들어, 오직 auth 파드에 대해 postStart
값을 재정의하려면:
# 기본적으로 모든 파드의 postStart 명령은 "echo starting"입니다.
postStart: ["echo", "starting"]
auth:
# 그러나 우리는 오직 auth 파드에 대한 `postStart` 값을 재정의합니다.
postStart: ["curl", "http://hook"]
imagePullPolicy: Always
proxyProtocol
구성 요소 | 유형 | 기본값 | 필수? | teleport.yaml 에 대응하는 항목 |
---|---|---|---|---|
proxy | string | null | 아니요 | proxy_service.proxy_protocol |
proxyProtocol
값은 프록시 파드가 L4 로드 밸런서 뒤에 있을 때 클라이언트의 IP 주소가 포함된 PROXY 라인을 수락할지를 제어합니다.
L4 LBs는 클라이언트의 IP 주소를 보존하지 않기 때문에 Teleport가 클라이언트의 IP 주소를 적절히 감사할 수 있도록 PROXY 프로토콜이 필요합니다.
Teleport 파드가 PROXY 프로토콜이 활성화된 L4 LB 뒤에 있지 않은 경우, 이 값은 Teleport가 신뢰할 수 없는 소스의 PROXY 헤더를 수락하지 않도록 off
로 설정해야 합니다.
가능한 값은 다음과 같습니다:
on
: 모든 연결을 위한 PROXY 프로토콜을 활성화하고 L4 LB가 PROXY 헤더를 보낼 것을 요구합니다.off
: 모든 연결에 대해 PROXY 프로토콜을 비활성화하고 PROXY 헤더로 접두사된 모든 연결을 거부합니다.
proxyProtocol
이 지정되지 않은 경우, Teleport는 연결에 대해 PROXY 헤더를 요구하지 않지만, 있으면 수락합니다.
이 모드는 안전하지 않으며 테스트 용도로만 사용해야 합니다.
자세한 내용은 PROXY 프로토콜 보안 섹션을 참조하십시오.
auth.teleportConfig
유형 | 기본값 | 필수? |
---|---|---|
object | 아니요 |
auth.teleportConfig
는 auth 파드에 대한 YAML teleport 구성을 포함합니다.
이 구성은 차트에서 생성된 구성과 병합되며 충돌 시 우선권을 가집니다. 이 필드는 teleport.yaml
의 구성의 사용자 정의/재정의를 가능하게 합니다
스크래치 차트 모드를 사용하지 않고도.
병합 로직은 다음과 같습니다:
- 객체 필드는 재귀적으로 병합됩니다.
- 목록은 대체됩니다.
- 값(문자열, 정수, 불리언 등)은 교체됩니다.
- 필드는
null
또는~
로 설정하여 설정할 수 있습니다.
지원되는 필드 목록은 Teleport 구성 참조를 참조하십시오.
auth:
teleportConfig:
teleport:
cache:
enabled: false
auth_service:
client_idle_timeout: 2h
client_idle_timeout_message: "활동 없이 2시간 후에 연결이 종료되었습니다"
proxy
유형 | 기본값 | 필수? |
---|---|---|
object | 아니요 |
teleport-cluster
차트는 인증 서비스와 프록시 서비스를 위한 두 세트의 파드를 배포합니다.
proxy
는 Teleport 프록시 서비스와 관련된 Kubernetes 리소스에 대해서만 차트 값을 설정할 수 있게 해줍니다.
이는 차트 범위 값과 병합되어 충돌이 발생할 경우 우선권을 가집니다.
예를 들어, Teleport 프록시 서비스 파드에 대해 오직 postStart
값을 재정의하고,
Teleport 프록시 서비스에 대해 배포된 Kubernetes 서비스에 주석을 추가하려면:
# 기본적으로 모든 파드의 postStart 명령은 "echo starting"입니다.
postStart: ["echo", "starting"]
proxy:
# 그러나 우리는 오직 프록시 파드에 대한 `postStart` 값을 재정의합니다.
postStart: ["curl", "http://hook"]
imagePullPolicy: Always
# 우리는 또한 프록시 서비스 파드로 트래픽을 보내는 Kubernetes 서비스에 주석을 추가합니다.
annotations:
service:
external-dns.alpha.kubernetes.io/hostname: "teleport.example.com"
proxy.teleportConfig
유형 | 기본값 | 필수? |
---|---|---|
object | 아니요 |
proxy.teleportConfig
는 프록시 파드에 대한 YAML teleport 구성을 포함합니다.
이 구성은 차트에서 생성된 구성과 병합되며 충돌 시 우선권을 가집니다. 이 필드는 teleport.yaml
의
구성의 사용자 정의/재정의를 가능하게 합니다.
병합 로직은 다음과 같습니다:
- 객체 필드는 재귀적으로 병합됩니다.
- 목록은 대체됩니다.
- 값(문자열, 정수, 불리언 등)은 교체됩니다.
- 필드는
null
또는~
로 설정하여 설정할 수 있습니다.
자세한 내용은 Teleport 구성 참조를 참조하십시오.
proxy:
teleportConfig:
teleport:
cache:
enabled: false
proxy_service:
https_keypairs:
- key_file: /my-custom-mount/key.pem
cert_file: /my-custom-mount/cert.pem
authentication
authentication.type
유형 | 기본값 | 필수? | teleport.yaml 에 대응하는 항목 |
---|---|---|---|
string | local | 예 | auth_service.authentication.type |
authentication.type
은 Teleport에서 사용하는 인증 체계를 제어합니다.
가능한 값은 Teleport 커뮤니티 에디션의 경우 local
과 github
, 엔터프라이즈의 경우 oidc
및 saml
입니다.
authentication.connectorName
유형 | 기본값 | 필수? | teleport.yaml 에 대응하는 항목 |
---|---|---|---|
string | "" | 아니요 | auth_service.authentication.connector_name |
authentication.connectorName
은 기본 인증 커넥터를 설정합니다.
SSO 문서는 일반적인 ID 공급자에 대한 인증 커넥터를 만드는 방법을 설명합니다.
SSO 커넥터 이름 외에 이와 같은 내장 커넥터가 지원됩니다:
local
: 로컬 사용자passwordless
: 기본적으로 비밀번호 없는 인증을 활성화합니다.
기본적으로 local
입니다.
authentication.localAuth
유형 | 기본값 | 필수? | teleport.yaml 에 대응하는 항목 |
---|---|---|---|
bool | true | 아니요 | auth_service.authentication.local_auth |
authentication.localAuth
는 로컬 인증이 활성화될지를 제어합니다.
비활성화하면 사용자는 saml
, oidc
또는 github
와 같은 인증 커넥터를 통해서만 로그인할 수 있습니다.
로컬 인증 비활성화는 FedRAMP / FIPS에 필요합니다.
authentication.lockingMode
유형 | 기본값 | 필수? | teleport.yaml 에 대응하는 항목 |
---|---|---|---|
string | "" | 아니요 | auth_service.authentication.locking_mode |
authentication.lockingMode
는 클러스터 전체의 잠금 모드를 제어합니다. 가능 값은 best_effort
및 strict
입니다.
자세한 내용은 잠금 모드 문서를 참조하십시오.
기본적으로 비어 있는 경우 Teleport의 이진 기본값인 best_effort
가 사용됩니다.
authentication.passwordless
유형 | 기본값 | 필수? | teleport.yaml 에 대응하는 항목 |
---|---|---|---|
bool | nil | 아니요 | auth_service.authentication.passwordless |
authentication.passwordless
는 비밀번호 없는 인증이 활성화될지를 제어합니다.
클러스터에 대한 비밀번호 없는 액세스를 금지하는 데 사용될 수 있습니다.
authentication.secondFactor
유형 | 기본값 | 필수? | teleport.yaml 에 대응하는 항목 |
---|---|---|---|
string | otp | 예 | auth_service.authentication.second_factor |
authentication.secondFactor
는 로컬 사용자 인증에 사용되는 두 번째 요인을 제어합니다.
이 차트에서 지원되는 가능한 값은 on
, otp
, 및 webauthn
입니다.
on
또는 webauthn
으로 설정 시, authenticationSecondFactor.webauthn
섹션도 사용할 수 있습니다.
구성된 rp_id
의 기본값은 clusterName
입니다.
사용자가 clusterName
과 다른 도메인에서 클러스터에 접근할 수 있도록 publicAddr
를 설정한 경우,
웹 인증신뢰할 수 있는 당사자 식별자(RP ID)를 수동으로 설정해야 합니다.
그렇지 않으면 RP ID는 clusterName
의 기본값이 되어 사용자가 두 번째 요소를 등록하는 데 실패합니다.
이 값을 설정하여 auth.teleportConfig.auth_service.authentication.webauthn.rp_id
로 설정할 수 있습니다.
RP ID는 유효한 도메인이어야 하며 사용자가 연결하는 전체 도메인의 일부여야 합니다.
예를 들어, 사용자가 "teleport.example.com" 도메인으로 클러스터에 접근하는 경우, RP ID는 "teleport.example.com" 또는 "example.com"이 될 수 있습니다.
RP ID를 변경하면 이미 등록된 모든 웹 인증 두 번째 요소가 무효화됩니다.
authentication.webauthn
자세한 내용은 두 번째 요소 - WebAuthn를 참조하십시오.
authentication.webauthn.attestationAllowedCas
유형 | 기본값 | 필수? | teleport.yaml 에 대응하는 항목 |
---|---|---|---|
array | [] | 아니요 | auth_service.authentication.webauthn.attestation_allowed_cas |
authentication.webauthn.attestationAllowedCas
는 장치 검증을 위해
허용된 인증 기관의 선택적 허용 목록입니다(로컬 파일 경로 또는 인라인 PEM 인증서 문자열).
이 필드는 신뢰하는 장치 모델과 공급자를 제한하는 데 사용할 수 있습니다.
목록 외부의 장치는 등록 시 거부됩니다. 기본적으로 모든 장치가 허용됩니다.
authentication.webauthn.attestationDeniedCas
유형 | 기본값 | 필수? | teleport.yaml 에 대응하는 항목 |
---|---|---|---|
array | [] | 아니요 | auth_service.authentication.webauthn.attestation_denied_cas |
authentication.webauthn.attestationDeniedCas
는
장치 검증을 위해
특정 장치 모델 및 공급자를 금지하는 선택적 거부 목록입니다(로컬 파일 경로 또는 인라인 PEM 인증서 문자열).
이 필드는 등록 시 특정 장치 모델 및 공급자를 금지하면서 모두(허용 목록을 통과한 경우)는 허용하도록 하는 데 사용할 수 있습니다.
이 목록 내의 장치는 등록 시 거부됩니다. 기본적으로 어떤 장치도 금지되지 않습니다.
proxyListenerMode
유형 | 기본값 | 필수? | teleport.yaml 에 대응하는 항목 |
---|---|---|---|
string | nil | 아니요 | auth_service.proxy_listener_mode |
proxyListenerMode
는 Teleport에서 사용되는 프록시 TLS 라우팅을 제어합니다.
가능한 값은 multiplex
, separate
입니다.
values.yaml
예시:
proxyListenerMode: multiplex
sessionRecording
유형 | 기본값 | 필수? | teleport.yaml 에 대응하는 항목 |
---|---|---|---|
string | "" | 아니요 | auth_service.session_recording |
sessionRecording
은 teleport.yaml
구성에서 session_recording
필드를 제어합니다.
이는 구성에서 있는 그대로 전달됩니다. 가능한 값은 Teleport 구성 참조를 참조하십시오.
values.yaml
예시:
sessionRecording: proxy
separatePostgresListener
유형 | 기본값 | 필수? | teleport.yaml 에 대응하는 항목 |
---|---|---|---|
bool | false | 아니요 | proxy_service.postgres_listen_addr |
separatePostgresListener
는 Teleport가 PostgreSQL 트래픽을 Teleport 웹 UI에 대해 별도의 TLS 수신기를 통해 멀티플렉싱할지를 제어합니다.
separatePostgresListener
가 false
(기본값)인 경우, PostgreSQL 트래픽은 포트 443(기본 Teleport 웹 UI 포트)으로 향합니다.
이는 Teleport가 자신의 TLS 트래픽을 종료할 때 즉, LetsEncrypt의 인증서를 사용할 때 정상적으로 작동합니다
또는 Teleport의 proxy_service.https_keypairs
구성을 통해 인증서/개인 키 쌍을 제공할 때 작동합니다.
separatePostgresListener
가 true
인 경우, PostgreSQL 트래픽은 포트 5432의 별도의 Postgres 전용 수신기로 향하게 됩니다.
이것은 차트가 생성하는 Service
에 포트를 추가합니다. 이는 AWS ACM을 사용할 때와 같이 Teleport 앞에 로드 밸런서에서 TLS를 종료할 때 유용합니다.
이 설정은 proxyListenerMode
가 multiplex
로 설정되어 있을 경우 적용되지 않습니다.
values.yaml
예시:
separatePostgresListener: true
separateMongoListener
유형 | 기본값 | 필수? | teleport.yaml 에 대응하는 항목 |
---|---|---|---|
bool | false | 아니요 | proxy_service.mongo_listen_addr |
separateMongoListener
는 Teleport가 PostgreSQL 트래픽을 Teleport 웹 UI에 대해 별도의 TLS 수신기를 통해 멀티플렉싱할지를 제어합니다.
separateMongoListener
가 false
(기본값)인 경우, MongoDB 트래픽은 포트 443(기본 Teleport 웹 UI 포트)으로 향합니다.
이는 Teleport가 자신의 TLS 트래픽을 종료할 때 즉, LetsEncrypt의 인증서를 사용할 때 정상적으로 작동합니다
또는 Teleport의 proxy_service.https_keypairs
구성을 통해 인증서/개인 키 쌍을 제공할 때 작동합니다.
separateMongoListener
가 true
인 경우, MongoDB 트래픽은 포트 27017의 별도의 Mongo 전용 수신기로 향하게 됩니다.
이것은 차트가 생성하는 Service
에 포트를 추가합니다. 이는 AWS ACM을 사용할 때와 같이 Teleport 앞에 로드 밸런서에서 TLS를 종료할 때 유용합니다.
이 설정은 proxyListenerMode
가 multiplex
로 설정되어 있을 경우 적용되지 않습니다.
values.yaml
예시:
separateMongoListener: true
publicAddr
유형 | 기본값 | 필수? | teleport.yaml 에 대응하는 항목 |
---|---|---|---|
list[string] | [] | 아니요 | proxy_service.public_addr |
publicAddr
는 TLS 연결을 위한 광고된 주소를 제어합니다.
publicAddr
가 설정되어 있지 않은 경우, 사용되는 주소는 clusterName
과 포트 443입니다.
사용자가 clusterName
과 다른 도메인에서 클러스터에 접근할 수 있도록 publicAddr
를 설정한 경우,
웹 인증신뢰할 수 있는 당사자 식별자(RP ID)를 수동으로 설정해야 합니다.
그렇지 않으면 RP ID는 clusterName
의 기본값이 되어 사용자가 두 번째 요소를 등록하는 데 실패합니다.
이 값을 설정하여 auth.teleportConfig.auth_service.authentication.webauthn.rp_id
로 설정할 수 있습니다.
RP ID는 유효한 도메인이어야 하며 사용자가 연결하는 전체 도메인의 일부여야 합니다.
예를 들어, 사용자가 "teleport.example.com" 도메인으로 클러스터에 접근하는 경우, RP ID는 "teleport.example.com" 또는 "example.com"이 될 수 있습니다.
RP ID를 변경하면 이미 등록된 모든 웹 인증 두 번째 요소가 무효화됩니다.
values.yaml
예시:
publicAddr: ["loadbalancer.example.com:443"]
kubePublicAddr
유형 | 기본값 | 필수? | teleport.yaml 에 대응하는 항목 |
---|---|---|---|
list[string] | [] | 아니요 | proxy_service.kube_public_addr |
kubePublicAddr
는 Kubernetes 프록시를 위한 광고된 주소를 제어합니다.
이 설정은 proxyListenerMode
가 multiplex
로 설정되어 있는 경우 적용되지 않습니다.
kubePublicAddr
가 설정되어 있지 않은 경우, 주소는 설정된 경우 publicAddr
에서 유추되며, 설정되어 있지 않으면 clusterName
이 사용됩니다.
기본 포트는 3026입니다.
values.yaml
예시:
kubePublicAddr: ["loadbalancer.example.com:3026"]
mongoPublicAddr
유형 | 기본값 | 필수? | teleport.yaml 에 대응하는 항목 |
---|---|---|---|
list[string] | [] | 아니요 | proxy_service.mongo_public_addr |
mongoPublicAddr
는 MongoDB 클라이언트를 위한 광고된 주소를 제어합니다.
이 설정은 proxyListenerMode
가 multiplex
로 설정되어 있을 경우 적용되지 않으며,
separateMongoListener
활성화가 필요합니다.
mongoPublicAddr
가 설정되어 있지 않은 경우, 주소는 clusterName
에서 유추됩니다.
기본 포트는 27017입니다.
values.yaml
예시:
mongoPublicAddr: ["loadbalancer.example.com:27017"]
mysqlPublicAddr
유형 | 기본값 | 필수? | teleport.yaml 에 대응하는 항목 |
---|---|---|---|
list[string] | [] | 아니요 | proxy_service.mysql_public_addr |
mysqlPublicAddr
는 MySQL 프록시를 위한 광고된 주소를 제어합니다.
이 설정은 proxyListenerMode
가 multiplex
로 설정되어 있을 경우 적용되지 않습니다.
mysqlPublicAddr
가 설정되어 있지 않은 경우, 주소는 설정된 경우 publicAddr
에서 유추되며, 설정되어 있지 않으면 clusterName
에서 유추됩니다.
기본 포트는 3036입니다.
values.yaml
예시:
mysqlPublicAddr: ["loadbalancer.example.com:3036"]
postgresPublicAddr
유형 | 기본값 | 필수? | teleport.yaml 에 대응하는 항목 |
---|---|---|---|
list[string] | [] | 아니요 | proxy_service.postgres_public_addr |
postgresPublicAddr
는 PostgreSQL 클라이언트를 위한 광고된 주소를 제어합니다.
이 설정은 proxyListenerMode
가 multiplex
로 설정되어 있을 경우 적용되지 않으며,
separatePostgresListener
활성화가 필요합니다.
postgresPublicAddr
가 설정되어 있지 않은 경우, 주소는 설정된 경우 publicAddr
에서 유추되며, 설정되어 있지 않으면 clusterName
에서 유추됩니다.
기본 포트는 5432입니다.
values.yaml
예시:
postgresPublicAddr: ["loadbalancer.example.com:5432"]
sshPublicAddr
유형 | 기본값 | 필수? | teleport.yaml 에 대응하는 항목 |
---|---|---|---|
list[string] | [] | 아니요 | proxy_service.ssh_public_addr |
sshPublicAddr
는 SSH 클라이언트를 위한 광고된 주소를 제어합니다.
이 주소는 tsh
클라이언트에 의해 사용됩니다.
이 설정은 proxyListenerMode
가 multiplex
로 설정되어 있을 경우 적용되지 않습니다.
sshPublicAddr
가 설정되어 있지 않은 경우, 주소는 설정된 경우 publicAddr
에서 유추되며, 설정되어 있지 않으면 clusterName
에서 유추됩니다.
기본 포트는 3023입니다.
values.yaml
예시:
sshPublicAddr: ["loadbalancer.example.com:3023"]
tunnelPublicAddr
유형 | 기본값 | 필수? | teleport.yaml 에 대응하는 항목 |
---|---|---|---|
list[string] | [] | 아니요 | proxy_service.tunnel_public_addr |
tunnelPublicAddr
는 신뢰할 수 있는 클러스터 또는 노드가 노드 터널링을 통해 조인하는 데 사용하는 광고된 주소를 제어합니다.
이 설정은 proxyListenerMode
가 multiplex
로 설정되어 있을 경우 적용되지 않습니다.
tunnelPublicAddr
가 설정되어 있지 않은 경우, 주소는 설정된 경우 publicAddr
에서 유추되며, 설정되어 있지 않으면 clusterName
에서 유추됩니다.
기본 포트는 3024입니다.
values.yaml
예시:
tunnelPublicAddr: ["loadbalancer.example.com:3024"]
enterprise
유형 | 기본값 |
---|---|
bool | false |
enterprise
는 Teleport 커뮤니티 에디션 또는 Teleport 엔터프라이즈를 사용할지를 제어합니다.
enterprise
를 true
로 설정하면 Teleport 엔터프라이즈 이미지가 사용됩니다.
또한 이를 사용하기 위해 Teleport 대시보드에서 Enterprise 라이센스를 다운로드하여 Kubernetes 비밀로 추가해야 합니다:
kubectl --namespace teleport create secret generic license --from-file=/path/to/downloaded/license.pem
Teleport 차트를 특정 네임스페이스에 설치한 경우, 생성한 license
비밀은 동일한 네임스페이스에도 추가해야 합니다.
비밀에 추가할 파일은 license.pem
이라는 이름을 가져야 합니다.
이름을 변경한 경우, 비밀 생성 명령에서 사용할 파일 이름을 지정할 수 있습니다:
kubectl --namespace teleport create secret generic license --from-file=license.pem=/path/to/downloaded/this-is-my-teleport-license.pem
values.yaml
예시:
enterprise: true
installCRDs
유형 | 기본값 |
---|---|
bool | false |
CRD는 네임스페이스 범위가 없는 리소스입니다 - 클러스터에 한 번만 설치할 수 있습니다.
CRD는 Teleport Kubernetes Operator에서 필요하며, operator.enabled
가 true
인 경우 기본적으로 설치됩니다.
installCRDs
는 이를 재정의하여 사용자가 Teleport CRD를 배포할지를 나타낼 수 있게 합니다.
같은 Kubernetes 클러스터에 여러 개의 teleport-cluster
차트를 배포하는 경우,
하나의 릴리스만 installCRDs
를 활성화해야 합니다. Teleport CRDs를 직접 설치할 경우가 아니라면
이 값을 설정할 필요가 없습니다.
values.yaml
예시:
installCRDs: true
operator
operator.enabled
유형 | 기본값 |
---|---|
bool | false |
operator.enabled
는 Teleport Kubernetes Operator를 사이드카로 배포할지를 제어합니다.
오프를 활성화하면 Teleport CRD가 Kubernetes 클러스터에 배포됩니다.
동일한 클러스터에서 Helm 차트를 여러 번 배포하는 경우, installCRDs
로 이 동작을 재정의할 수 있습니다.
values.yaml
예시:
operator:
enabled: true
operator.image
유형 | 기본값 |
---|---|
string | public.ecr.aws/gravitational/teleport-operator |
operator.image
는 클러스터의 Teleport 파드를 위한 Teleport Kubernetes Operator 컨테이너 이미지 설정합니다.
이 설정은 오프될 경우 사용할 자체 Teleport Operator 이미지를 사용하도록 재정의할 수 있습니다.
values.yaml
예시:
operator:
image: my.docker.registry/teleport-operator-image-name
operator.resources
유형 | 기본값 |
---|---|
object | {} |
Kubernetes 리소스에 대한 문서를 참조하십시오.
각 컨테이너에 대해 관찰된 사용량에 따라 리소스 요청/제한을 설정하는 것이 권장됩니다.
values.yaml
예시:
operator:
resources:
requests:
cpu: 1
memory: 2Gi
global
global.clusterDomain
유형 | 기본값 |
---|---|
string | cluster.local |
global.clusterDomain
은 Kubernetes DNS 서비스에서 사용되는 도메인 접미사를 설정합니다.
이는 클러스터 내의 서비스 이름을 해석하는 데 사용됩니다.
values.yaml
예시:
global:
clusterDomain: custom-domain.org
teleportVersionOverride
유형 | 기본값 |
---|---|
string | nil |
일반적으로 사용되는 Teleport 버전은 설치되는 차트의 버전과 일치합니다.
차트 버전 10.0.0을 설치하면 Teleport 10.0.0을 사용합니다.
Helm 차트를 업그레이드하면 리포지토리의 최신 버전에 따라 업그레이드됩니다.
특정 다른 Teleport Docker 이미지 태그(예: 10.1.2
또는 11
)를 사용하기 위해 이를 선택적을 재정의할 수 있습니다.
teleportVersionOverride
는 Teleport 버전을 제어하는 데 사용되어서는 안 됩니다.
이 차트는 특정 Teleport 버전에서 실행되도록 설계되었습니다.
이를 사용하려고 할 경우 호환성 문제가 발생할 수 있습니다.
Teleport 버전 X.Y.Z
를 실행하려면 helm --version X.Y.Z
를 사용해야 합니다.
자세한 내용은 설치 가이드를 참조하여 Docker 이미지 버전을 확인하십시오.
values.yaml
예시:
teleportVersionOverride: "11"
acme
유형 | 기본값 | teleport.yaml 에 대응하는 항목 |
---|---|---|
bool | false | proxy_service.acme.enabled |
ACME는 웹 X.509 인증서를 가져오는 프로토콜입니다.
acme
를 true
로 설정하면 ACME 프로토콜이 활성화되고 Let's Encrypt로부터 무료 TLS 인증서를 얻으려 할 것입니다.
acme
를 false
로 설정하면(기본값) Teleport는 자체 서명된 인증서를 생성하고 웹 UI에 사용합니다.
ACME는 단일 파드 클러스터에만 사용할 수 있습니다. 고가용성 구성에 적합하지 않습니다.
자체 서명된 TLS 인증서를 사용하고 TLS 검증을 활성화하는 것은
테스트에 적합하지만, 프로덕션 Teleport 클러스터를 실행하려면 실용적이지 않습니다.
프로덕션 워크로드에 대해 유효한 TLS 인증서를 Teleport 클러스터에 구성해야 합니다.
한 가지 옵션은 Teleport의 내장 ACME 지원을 사용하는 것이거나
cert-manager 지원을 활성화하는 것입니다.
acmeEmail
유형 | 기본값 | teleport.yaml 에 대응하는 항목 |
---|---|---|
string | nil | proxy_service.acme.email |
acmeEmail
은 인증서 등록 중 제공해야 할 이메일 주소입니다(이는 Let's Encrypt의 요구사항입니다).
acmeURI
유형 | 기본값 | teleport.yaml 에 대응하는 항목 |
---|---|---|
string | Let's Encrypt 프로덕션 서버 | proxy_service.acme.uri |
acmeURI
는 인증서를 받기 위해 사용할 ACME 서버입니다.
예를 들어, 테스트를 위해 Let's Encrypt staging 서버를 사용할 수 있습니다.
또한 ACME 호환 서버를 사용할 수 있습니다.
values.yaml
예시:
acme: true
acmeEmail: user@email.com
acmeURI: https://acme-staging-v02.api.letsencrypt.org/directory
podSecurityPolicy
podSecurityPolicy.enabled
유형 | 기본값 |
---|---|
bool | true (1.22 이하) 및 false (1.23 이상) |
기본적으로 Teleport 차트는 PodSecurityPolicy를 설치하는 데 사용됩니다.
PodSecurityPolicy 리소스는 Kubernetes 1.25에서 제거되었으며,
1.23 이후 PodSecurityAdmission으로 대체되었습니다.
Kubernetes 1.23 이상에서 실행하는 경우 PSP 생성 비활성화를 권장합니다.
이 단계들은 PSP 제거 가이드에 문서화되어 있습니다.
PSP 생성을 비활성화하려면 enabled
를 false
로 설정할 수 있습니다.
values.yaml
예시:
podSecurityPolicy:
enabled: false
labels
유형 | 기본값 |
---|---|
object | {} |
labels
를 사용하여 배포되는 Teleport 클러스터와 관련된 키-값 쌍의 맵을 추가할 수 있습니다.
이 레이블은 이후 Teleport의 RBAC 정책과 함께 사용되어 클러스터에 대한 액세스 규칙을 정의하는 데 사용될 수 있습니다.
이는 Teleport 전용 RBAC 레이블이며, Kubernetes 레이블이 아닙니다.
Kubernetes 리소스에 추가 레이블을 설정하려면 extraLabels
를 참조하세요.
values.yaml
예시:
labels:
environment: production
region: us-east
chartMode
유형 | 기본값 |
---|---|
string | standalone |
chartMode
는 차트의 동작 모드를 구성하는 데 사용됩니다. 각 모드에 대한 자세한 내용은 해당 특정 가이드 페이지에서 확인할 수 있습니다:
scratch
차트 모드는 사용이 권장되지 않습니다.
정확한 차트 및 Teleport 지식이 있어야 완전히 작동하는 클러스터 구성을 작성할 수 있습니다.
작동하는 클러스터를 원하거나 사용자 정의 구성 블록을 원할 경우, 다른 모드를 사용하고
auth.teleportConfig
및 proxy.teleportConfig
를 사용하여 사용자 정의 구성을 주입할 것을 권장합니다.
podMonitor
podMonitor
는 PodMonitor CR (from monitoring.coreos.com/v1)
차트를 통해 배포된 Auth 및 Proxy 서비스를 모니터링합니다.
이 사용자 정의 리소스는 Prometheus를 구성하고 Teleport 메트릭스를 스크랩하도록 설정합니다.
CRD는 prometheus-operator에 의해 배포되며 워크로드를 모니터링할 수 있게 해줍니다.
podMonitor
섹션을 구성하기 전에 클러스터 내에 prometheus-operator
를 배포해야 합니다.
설치 지침은 prometheus-operator 문서를 참조하십시오.
podMonitor.enabled
유형 | 기본값 |
---|---|
bool | false |
차트를 통해 PodMonitor
리소스를 배포해야 하는지 여부입니다.
기본적으로 비활성화되어 있으며, PodMonitor
CRD가 클러스터에 설치되어 있어야 활성화할 수 있습니다.
podMonitor.additionalLabels
유형 | 기본값 |
---|---|
object[string]string | {"prometheus":"default"} |
생성된 PodMonitor 리소스에 추가할 레이블입니다.
이 레이블은 특정 Prometheus 인스턴스에 의해 선택되는데 사용됩니다.
podMonitor.interval
유형 | 기본값 |
---|---|
string | 30s |
interval
은 Prometheus에 의해 두 메트릭 스크랩 간의 간격입니다.
persistence
Kubernetes 1.23+의 변경 사항으로 인해
영구 볼륨은 추가 구성 없이 AWS EKS 클러스터에서 자동으로 프로비저닝되지 않습니다.
자세한 내용은 EBS CSI 드라이버에 대한 AWS 문서를 참조하십시오.
이 드라이버 추가 기능은 Kubernetes 1.23 이후 EKS 클러스터에서 영구 볼륨을 사용하기 위해 구성되어야 합니다.
persistence.enabled
유형 | 기본값 |
---|---|
bool | true |
persistence.enabled
는 새 PersistentVolumeClaim을 사용하여 데이터 영속성을 활성화 또는 기존 PersistentVolumeClaim을 사용할 수 있습니다.
values.yaml
예시:
persistence:
enabled: true
persistence.existingClaimName
유형 | 기본값 |
---|---|
string | nil |
persistence.existingClaimName
는 필요 시 사용할 기존 PersistentVolumeClaim
의 이름을 제공하는 데 사용될 수 있습니다.
기본적으로 비워두면 자동으로 standalone
또는 scratch
모드에서 Teleport 저장소를 사용하기 위해 PersistentVolumeClaim
이 생성됩니다.
values.yaml
예시:
persistence:
existingClaimName: my-existing-pvc-name
persistence.storageClassName
유형 | 기본값 |
---|---|
string | nil |
persistence.storageClassName
는 PersistentVolumeClaim
의 저장소 클래스를 설정하는 데 사용될 수 있습니다.
values.yaml
예시:
persistence:
storageClassName: ebs-ssd
persistence.volumeSize
유형 | 기본값 |
---|---|
string | 10Gi |
volumeSize
를 설정하여 standalone
또는 scratch
모드에서 Teleport 차트를 설치할 때
영속적 볼륨의 크기를 다르게 요청할 수 있습니다.
volumeSize
는 existingClaimName
이 설정된 경우 무시됩니다.
values.yaml
예시:
persistence:
volumeSize: 50Gi
aws
aws
설정은 AWS 가이드에 설명되어 있습니다: AWS EKS 클러스터를 이용한 HA Teleport 클러스터 실행
aws.region
aws.region
은 DynamoDB 테이블이 위치한 AWS 지역입니다.
aws.backendTable
aws.backendTable
은 백엔드 저장소에 사용할 DynamoDB 테이블의 이름입니다.
Teleport는 자동으로 이 테이블을 생성하려고 시도할 것입니다.
컨테이너는 DynamoDB 테이블을 생성하기 위한 권한이 있는 적절히 프로비전된 IAM 역할이 필요합니다.
aws.auditLogTable
aws.auditLogTable
은 감사 로그 저장소에 사용할 DynamoDB 테이블의 이름입니다.
Teleport는 자동으로 이 테이블을 생성하려고 시도할 것입니다.
컨테이너는 DynamoDB 테이블을 생성하기 위한 권한이 있는 적절히 프로비전된 IAM 역할이 필요합니다.
이 테이블은 aws.backendTable
과 다른 이름이어야 합니다. 스키마가 다르기 때문입니다.
Athena 백엔드를 사용하는 경우 이 값을 설정할 필요가 없습니다.
이 값을 설정하면 감사 로그가 Athena와 DynamoDB 백엔드로 모두 전송됩니다.
이는 백엔드를 마이그레이션할 때 유용합니다.
aws.athenaURL
및 aws.auditLogTable
(DynamoDB)가 모두 설정된 경우,
aws.auditLogPrimaryBackend
값이 쿼리 실행에 사용되는 백엔드를 구성합니다.
Teleport는 감사 백엔드를 쿼리하여 감사 로그를 웹 UI에 표시하거나 감사 로그 수집기를 통해 이벤트를 내보내거나
과거 감사 이벤트를 검사해야 하는 모든 작업을 수행합니다.
aws.auditLogMirrorOnStdout
aws.auditLogMirrorOnStdout
는 감사 로그 항목을 JSON 형식으로 stdout에 미러링할지를 제어합니다(외부 로그 수집기에 유용함).
기본값은 false
입니다.
aws.auditLogPrimaryBackend
auditLogPrimaryBackend
는 여러 감사 백엔드가 활성화된 경우 쿼리에 사용되는 백엔드를 제어합니다.
이 설정은 단일 감사 로그 백엔드가 활성화된 경우에는 영향을 주지 않습니다.
이 설정은 DynamoDB에서 Athena로 마이그레이션할 때 사용됩니다.
가능한 값은 dynamo
및 athena
입니다.
aws.athenaURL
athenaURL
은 Athena 감사 로그 백엔드 구성입니다.
이 값이 설정되면 Teleport는 Athena 감사 백엔드에 이벤트를 내보냅니다.
Athena 감사 백엔드를 사용하려면 필요한 인프라를 설정해야 합니다(S3 버킷, SQS 큐, AthenaDB, IAM 역할 및 권한 등).
요구 사항은 Athena 백엔드 문서에서 설명합니다.
aws.athenaURL
과 aws.auditLogTable
(DynamoDB)를 모두 설정하면,
aws.auditLogPrimaryBackend
값이 쿼리에 사용되는 백엔드를 구성합니다.
aws.sessionRecordingBucket
aws.sessionRecordingBucket
은 기록된 세션 저장소에 사용할 S3 버킷의 이름입니다.
Teleport는 자동으로 이 버킷을 생성하려고 시도할 것입니다.
컨테이너는 S3 버킷을 생성하기 위한 권한이 있는 적절히 프로비전된 IAM 역할이 필요합니다.
aws.backups
aws.backups
는 Teleport가 DynamoDB 백엔드를 구성할 때 백업이 활성화되어야 하는지 여부를 제어합니다.
aws.dynamoAutoScaling
Teleport가 DynamoDB의 자동 확장을 구성해야 할지 여부입니다. 기본값은 false
입니다.
DynamoDB 자동 확장은 더 이상 권장되지 않습니다.
Teleport는 이제 "on demand" DynamoDB 청구기 설정으로 기본값을 제공하며, 이 설정이 더 신뢰할 수 있는 성능을 제공합니다.
aws.accessMonitoring
aws.accessMonitoring
는 Auth 서비스의 액세스 모니터링 기능을 구성합니다.
이 기능을 사용하려면 액세스 모니터링 구성 섹션에서 설명하는 특정 AWS 인프라를 설정해야 합니다.
Terraform 예제 코드는 이 섹션에 대한 차트 값을 출력합니다.
aws.accessMonitoring.enabled
aws.accessMonitoring.enabled
는 액세스 모니터링을 활성화합니다. 이는
aws.athenaURL
이 설정되어 있어야 합니다.
aws.accessMonitoring.reportResults
aws.accessMonitoring.reportResults
는 쿼리 결과가 보고되는 버킷 URI입니다.
예: s3://example-athena-long-term/report_results
.
aws.accessMonitoring.roleARN
aws.accessMonitoring.roleARN
는 보고서를 실행할 때 사용되는 역할의 ARN입니다.
aws.accessMonitoring.workgroup
aws.accessMonitoring.workgroup
는 Teleport가 쿼리를 실행하는 Athena 작업 그룹입니다.
gcp
gcp
설정은 GCP 가이드에 설명되어 있습니다: Google Cloud GKE 클러스터를 이용한 HA Teleport 클러스터 실행
azure
azure
설정은 Azure 가이드에 설명되어 있습니다: Microsoft Azure AKS 클러스터를 이용한 HA Teleport 클러스터 실행
highAvailability
highAvailability
는 Teleport 파드가 복제 및 스케줄되는 방식을 제어하는 설정을 포함합니다.
이를 통해 Teleport는 고가용성으로 실행될 수 있습니다: Teleport는 서비스 중단 없이 머신의 충돌/손실을 견뎌야 합니다.
Auth 파드를 위한 경우
standalone
또는 scratch
모드를 사용할 경우,
여러 개의 복제를 지원하기 위해서는 고가용성 저장소(etcd, DynamoDB 또는 Firestore)를 사용해야 합니다.
NFS 기반 저장소 또는 ReadWriteMany 볼륨 청구를 수동적으로 구성하는 것은 지원되지 않으며 오류가 발생합니다.
여러 복제를 사용할 때 Teleport의 내장 ACME 클라이언트를 사용하는 것은 지원되지 않습니다.
Proxy 파드를 위한 경우
프록시 파드는 복제를 위해 인증서를 제공해야 하며,
이에 대해 tls.existingSecretName
또는 highAvailability.certManager
를 사용해야 합니다.
프록시 파드가 복제 가능할 경우, 기본적으로 2개의 복제본이 제공됩니다.
이 경우 highAvailability.replicaCount
가 1일지라도 기본값이 2로 설정됩니다.
프록시 복제본을 강제로 하나로 유지하려면 proxy.highAvailability.replicaCount: 1
로 설정합니다.
highAvailability.replicaCount
유형 | 기본값 |
---|---|
int | 1 |
파드 복제 수를 제어합니다.
highAvailability
섹션에서는 복제 요구 사항을 설명합니다.
값이 1보다 큰 경우, 필수적으로 위에 설명된 복제 기준을 충족해야 합니다.
이를 어기면 오류 및 불일치하는 데이터가 발생할 수 있습니다.
highAvailability.requireAntiAffinity
유형 | 기본값 |
---|---|
bool | false |
highAvailability.requireAntiAffinity
를 true
로 설정하면,
requiredDuringSchedulingIgnoredDuringExecution
를 사용하여 여러 Teleport 파드가 동일한 물리적 호스트에 배치되지 않도록 요구합니다.
이는 매우 작은 클러스터에서 또는 노드 다운타임 동안 Teleport 파드가 스케줄링되지 않게 될 수 있는 위험이 있으므로 주의하고 사용해야 합니다.
highAvailability.requireAntiAffinity
를 false
로 설정하는 경우(기본값),
노드 반대 친화력이 부드러운 요구 사항으로 정의됩니다.
이 설정은 highAvailability.replicaCount
가 1보다 클 때만 영향을 줍니다.
values.yaml
예시:
highAvailability:
requireAntiAffinity: true
highAvailability.podDisruptionBudget
highAvailability.podDisruptionBudget.enabled
유형 | 기본값 |
---|---|
bool | false |
Teleport 파드에 대한 Pod Disruption Budget을 활성화하여 자발적인 중단 동안 HA를 보장합니다.
values.yaml
예시:
highAvailability:
podDisruptionBudget:
enabled: true
highAvailability.podDisruptionBudget.minAvailable
유형 | 기본값 |
---|---|
int | 1 |
자발적인 중단 동안 사용 가능한 이 수의 복제본을 보장합니다.
복제본 수 또는 백분율일 수 있습니다.
values.yaml
예시:
highAvailability:
podDisruptionBudget:
minAvailable: 1
highAvailability.certManager
자세한 내용은 cert-manager 문서를 참조하십시오.
highAvailability.certManager.enabled
유형 | 기본값 | teleport.yaml 에 대응하는 항목 |
---|---|---|
bool | false | proxy_service.https_keypairs (인증서를 제공하기 위해) |
highAvailability.certManager.enabled
를 true
로 설정하면
HA 모드에서 배포된 Teleport 클러스터의 TLS 인증서를 프로비저닝하기 위해 cert-manager
를 사용합니다.
Kubernetes 클러스터 내에 cert-manager
를 직접 설치하고 구성해야 합니다.
cert-manager Helm 설치 지침 및
AWS와 GCP 가이드의 관련 섹션을 참조하여 자세한 내용을 확인하십시오.
highAvailability.certManager.addCommonName
유형 | 기본값 | teleport.yaml 에 대응하는 항목 |
---|---|---|
bool | false | proxy_service.https_keypairs (인증서를 제공하기 위해) |
highAvailability.certManager.addCommonName
를 true
로 설정하면
cert-manager
는 인증서 서명 요청의 commonName 필드를 발급 CA로 설정하도록 지시합니다.
Kubernetes 클러스터 내에 적절한 Issuer
를 설치하고 구성해야 합니다.
적절한 DNS01 챌린지를 지원하는 Issuer
를 구성하는 방법은 cert-manager DNS01 문서를 참조하십시오.
AWS 및 GCP 가이드의 관련 섹션도 참조하십시오.
values.yaml
예시:
highAvailability:
certManager:
enabled: true
addCommonName: true
issuerName: letsencrypt-production
highAvailability.certManager.addPublicAddrs
유형 | 기본값 | teleport.yaml 에 대응하는 항목 |
---|---|---|
bool | false | proxy_service.https_keypairs (인증서를 제공하기 위해) |
highAvailability.certManager.addPublicAddrs
를 true
로 설정하면
cert-manager
는 추가 주소를 인증서 서명 요청 시 발급 CA에 추가하도록 지시합니다.
values.yaml
예시:
publicAddr: ['teleport.example.com:443']
highAvailability:
certManager:
enabled: true
addPublicAddrs: true
issuerName: letsencrypt-production
highAvailability.certManager.issuerName
유형 | 기본값 | teleport.yaml 에 대응하는 항목 |
---|---|---|
string | nil | 없음 |
발급 인증서를 발급시키기 위해 사용할 cert-manager
의 Issuer
또는 ClusterIssuer
의 이름을 설정합니다.
사용자가 DNS01 챌린지를 지원하는 적절한 Issuer
를 설정해야 합니다.
cert-manager
문서에서 DNS01 챌린지에 대한 내용을 확인하십시오.
AWS 및 GCP 가이드의 관련 섹션이나 Terraform 예제도 확인하십시오.
values.yaml
예시:
highAvailability:
certManager:
enabled: true
issuerName: letsencrypt-production
highAvailability.certManager.issuerKind
유형 | 기본값 | teleport.yaml 에 대응하는 항목 |
---|---|---|
string | Issuer | 없음 |
발급 인증서를 발급하기 위해 사용할 인증서의 Issuer
유형을 설정합니다.
기본적으로 Issuer
로 설정되어 있어 단일 네임스페이스로 권한이 제한됩니다.
values.yaml
예시:
highAvailability:
certManager:
issuerKind: ClusterIssuer
highAvailability.certManager.issuerGroup
유형 | 기본값 |
---|---|
string | cert-manager.io |
인증서 발급 시 사용할 Issuer
의 Group
을 설정합니다.
기본적으로 내장 발급자를 사용하기 위해 cert-manager.io
로 설정되어 있습니다.
values.yaml
예시:
highAvailability:
certManager:
issuerGroup: cert-manager.io
highAvailability.minReadySeconds
| 유형 | 기본값 |
|------------|---------------|
| `integer` | `15` |
포드 롤아웃 중 다음 포드로 이동하기 전에 기다릴 시간.
[쿠버네티스 문서 보기](https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#min-ready-seconds).
이는 롤아웃을 계속하기 전에 에이전트가 새롭게 생성된 포드에 다시 연결할 수 있는 시간을 제공하는 데 사용됩니다.
`values.yaml` 예시:
```yaml
highAvailability:
minReadySeconds: 15
tls.existingSecretName
유형 | 기본값 | teleport.yaml 해당 항목 |
---|---|---|
string | "" | proxy_service.https_keypairs |
tls.existingSecretName
은 Teleport에게 HTTPS를 사용하여 웹 UI를 보호하기 위해 기존의 쿠버네티스 TLS 비밀을 사용하도록 지시합니다. 이는 Let's Encrypt와 같은 공공 CA가 아닌 신뢰할 수 있는 내부 CA가 발급한 TLS 인증서를 사용하도록 설정할 수 있습니다.
다음과 같은 명령어를 사용하여 Teleport와 같은 네임스페이스에서 비밀을 생성해야 합니다:
kubectl create secret tls my-tls-secret --cert=/path/to/cert/file --key=/path/to/key/file
자세한 정보는 쿠버네티스 비밀 문서 보기를 참조하세요.
values.yaml
예시:
tls:
existingSecretName: my-tls-secret
tls.existingCASecretName
유형 | 기본값 |
---|---|
string | "" |
tls.existingCASecretName
은 SSL_CERT_FILE
환경 변수를 설정하여 Teleport 포드에 신뢰할 수 있는 CA 또는 PEM 형식의 번들을 로드합니다. 이는 Teleport가 시작 시 전체 신뢰 체인을 구축할 수 있도록 루트 및/또는 중간 CA를 주입하는 데 사용될 수 있습니다.
OIDC 공급자, S3 호환 백엔드 또는 Teleport 기본 이미지를 수정하지 않고 외부 서비스와 통신할 때 개인 CA를 신뢰하는 데 사용할 수 있습니다.
이는 tls.existingSecretName
이 설정되었을 때 포드 로그에 사용자 메시지: HTTPS 인증서 체인을 확인할 수 없습니다
오류가 발생할 경우 필요할 수 있습니다.
다음과 같은 명령어를 사용하여 Teleport와 같은 네임스페이스에서 비밀을 생성해야 합니다:
kubectl create secret generic my-root-ca --from-file=ca.pem=/path/to/root-ca.pem
비밀에 사용되는 루트 CA의 파일 이름은 ca.pem
이어야 합니다.
values.yaml
예시:
tls:
existingCASecretName: my-root-ca
image
유형 | 기본값 |
---|---|
string | public.ecr.aws/gravitational/teleport |
image
는 클러스터 내 Teleport 커뮤니티 포드에 사용되는 Teleport 컨테이너 이미지를 설정합니다.
이를 통해 Teleport에서 제공하는 이미지를 대신하여 자신의 Teleport 커뮤니티 이미지를 사용할 수 있습니다.
values.yaml
예시:
image: my.docker.registry/teleport-community-image-name
enterpriseImage
유형 | 기본값 |
---|---|
string | public.ecr.aws/gravitational/teleport-ent |
enterpriseImage
는 클러스터 내 Teleport 엔터프라이즈 포드에 사용되는 컨테이너 이미지를 설정합니다.
이를 통해 Teleport에서 제공하는 이미지를 대신하여 자신의 Teleport 엔터프라이즈 이미지를 사용할 수 있습니다.
values.yaml
예시:
enterpriseImage: my.docker.registry/teleport-enterprise-image-name
log
log.level
이 필드는 이전에 logLevel
이라고 불렸습니다. 이전 호환성을 위해 이 이름을 여전히 사용할 수 있지만, 값 파일을 log.level
사용으로 변경하는 것이 좋습니다.
유형 | 기본값 | teleport.yaml 해당 항목 |
---|---|---|
string | INFO | teleport.log.severity |
log.level
은 Teleport 프로세스에 사용되는 로그 수준을 설정합니다.
사용 가능한 로그 수준(가장 상세한 것부터 가장 적은 것까지): DEBUG
, INFO
, WARNING
, ERROR
.
기본 값은 프로덕션에서 권장되는 INFO
입니다.
DEBUG
는 처음 설정할 때 유용하거나 디버깅을 위한 보다 자세한 로그를 보는 데 유용합니다.
values.yaml
예시:
log:
level: DEBUG
log.output
유형 | 기본값 | teleport.yaml 해당 항목 |
---|---|---|
string | stderr | teleport.log.output |
log.output
은 Teleport 프로세스에 대한 출력 대상을 설정합니다.
이는 기본 제공 값인 stdout
, stderr
또는 syslog
중 하나로 설정할 수 있습니다.
값은 출력을 파일 경로(예: /var/log/teleport.log
)로 설정하여 로그를 파일에 쓸 수 있습니다. 몇 가지 서비스 시작 메시지는 여전히 복원성을 위해 stderr
로 전송됩니다.
values.yaml
예시:
log:
output: stderr
log.format
유형 | 기본값 | teleport.yaml 해당 항목 |
---|---|---|
string | text | teleport.log.format.output |
log.format
은 Teleport 프로세스에 대한 출력 유형을 설정합니다.
가능한 값은 text
(기본값) 또는 json
입니다.
values.yaml
예시:
log:
format: json
log.extraFields
유형 | 기본값 | teleport.yaml 해당 항목 |
---|---|---|
list | ["timestamp", "level", "component", "caller"] | teleport.log.format.extra_fields |
log.extraFields
는 Teleport 프로세스의 로그에 사용할 필드를 설정합니다.
extra_fields
에 대한 가능한 값에 대한 자세한 내용은 Teleport 구성 파일 참조를 참조하세요.
values.yaml
예시:
log:
extraFields: ["timestamp", "level"]
nodeSelector
유형 | 기본값 |
---|---|
object | {} |
nodeSelector
는 Teleport 포드가 실행될 노드를 제약하기 위해 키-값 쌍의 맵을 추가하는 데 사용할 수 있습니다.
values.yaml
예시:
nodeSelector:
role: bastion
environment: security
affinity
유형 | 기본값 |
---|---|
object | {} |
쿠버네티스가 포드 할당을 위해 설정해야 하는 친화도.
affinity
와 highAvailability.requireAntiAffinity
를 동시에 설정할 수 없습니다. 서로 충돌하므로 하나만 설정해야 합니다.
values.yaml
예시:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: gravitational.io/dedicated
operator: In
values:
- teleport
annotations
annotations.config
유형 | 기본값 | teleport.yaml 해당 항목 |
---|---|---|
object | {} | 없음 |
차트에 의해 생성된 ConfigMap
에 적용해야 하는 쿠버네티스 주석.
values.yaml
예시:
annotations:
config:
kubernetes.io/annotation: value
annotations.deployment
유형 | 기본값 |
---|---|
object | {} |
차트에 의해 생성된 Deployment
에 적용해야 하는 쿠버네티스 주석.
values.yaml
예시:
annotations:
deployment:
kubernetes.io/annotation: value
annotations.pod
유형 | 기본값 |
---|---|
object | {} |
차트에 의해 생성된 각 Pod
에 적용해야 하는 쿠버네티스 주석.
values.yaml
예시:
annotations:
pod:
kubernetes.io/annotation: value
annotations.service
유형 | 기본값 |
---|---|
object | {} |
차트에 의해 생성된 Service
에 적용해야 하는 쿠버네티스 주석.
values.yaml
예시:
annotations:
service:
kubernetes.io/annotation: value
annotations.serviceAccount
유형 | 기본값 |
---|---|
object | {} |
차트에 의해 생성된 serviceAccount에 적용해야 하는 쿠버네티스 주석.
values.yaml
예시:
annotations:
serviceAccount:
kubernetes.io/annotation: value
annotations.certSecret
유형 | 기본값 |
---|---|
object | {} |
차트에 의해 생성된 certificate
에서 cert-manager
가 생성하는 secret
에 적용해야 하는 쿠버네티스 주석. 이는 highAvailability.certManager.enabled
가 true
로 설정될 때만 유효하며 cert-manager
v1.5.0+를 요구합니다.
values.yaml
예시:
annotations:
certSecret:
kubernetes.io/annotation: value
annotations.ingress
유형 | 기본값 |
---|---|
object | {} |
차트에 의해 생성된 Ingress
에 적용해야 하는 쿠버네티스 주석.
values.yaml
예시:
annotations:
ingress:
alb.ingress.kubernetes.io/target-type: ip
alb.ingress.kubernetes.io/backend-protocol: HTTPS
extraLabels
extraLabels
는 차트에 의해 생성된 리소스에 적용할 추가 쿠버네티스 레이블을 포함합니다.
레퍼런스에 대한 자세한 정보는 쿠버네티스 레이블 문서 보기를 참조하세요.
참고: PodMonitor 레이블은 대신 podMonitor.additionalLabels
를 참조하세요.
extraLabels.certSecret
유형 | 기본값 |
---|---|
object | {} |
extraLabels.certSecret
는 highAvailability.certManager.enabled
가 true일 때 cert-manager v1.5+에 의해 생성된 인증서 비밀에 설정할 레이블입니다.
extraLabels.clusterRole
유형 | 기본값 |
---|---|
object | {} |
extraLabels.clusterRole
는 ClusterRole에 설정할 레이블입니다.
extraLabels.clusterRoleBinding
유형 | 기본값 |
---|---|
object | {} |
extraLabels.clusterRoleBinding
는 ClusterRoleBinding에 설정할 레이블입니다.
extraLabels.role
유형 | 기본값 |
---|---|
object | {} |
extraLabels.role
는 Role에 설정할 레이블입니다.
extraLabels.deployment
유형 | 기본값 |
---|---|
object | {} |
extraLabels.deployment
는 Deployment에 설정할 레이블입니다.
extraLabels.ingress
유형 | 기본값 |
---|---|
object | {} |
extraLabels.ingress
는 Ingress에 설정할 레이블입니다.
extraLabels.job
유형 | 기본값 |
---|---|
object | {} |
extraLabels.job
는 Helm hook에 의해 실행되는 Job에 설정할 레이블입니다.
extraLabels.persistentVolumeClaim
유형 | 기본값 |
---|---|
object | {} |
extraLabels.persistentVolumeClaim
는 PersistentVolumeClaim에 설정할 레이블입니다.
extraLabels.pod
유형 | 기본값 |
---|---|
object | {} |
extraLabels.pod
는 Deployment에 의해 생성되는 Pods에 설정할 레이블입니다.
extraLabels.podDisruptionBudget
유형 | 기본값 |
---|---|
object | {} |
extraLabels.podDisruptionBudget
는 podDisruptionBudget에 설정할 레이블입니다.
extraLabels.secret
유형 | 기본값 |
---|---|
object | {} |
extraLabels.secret
는 Secret에 설정할 레이블입니다.
extraLabels.service
유형 | 기본값 |
---|---|
object | {} |
extraLabels.service
는 Service에 설정할 레이블입니다.
extraLabels.serviceAccount
유형 | 기본값 |
---|---|
object | {} |
extraLabels.serviceAccount
는 ServiceAccount에 설정할 레이블입니다.
serviceAccount.create
유형 | 기본값 | 필수? |
---|---|---|
boolean | true | 아니오 |
서비스 계정을 생성할지 여부를 지정하는 부울 값입니다.
serviceAccount.name
유형 | 기본값 | 필수? |
---|---|---|
string | "" | 아니오 |
teleport 서비스 계정에 사용할 이름.
serviceAccount.create
가 false인 경우, 이 이름으로 현재 네임스페이스에 서비스 계정을 설치하기 전에 생성해야 합니다.
service.type
유형 | 기본값 | 필수? |
---|---|---|
string | LoadBalancer | 예 |
서비스 유형을 지정할 수 있습니다.
values.yaml
예시:
service:
type: LoadBalancer
service.spec.loadBalancerIP
유형 | 기본값 | 필수? |
---|---|---|
string | nil | 아니오 |
loadBalancerIP
을 지정할 수 있습니다.
values.yaml
예시:
service:
spec:
loadBalancerIP: 1.2.3.4
ingress.enabled
유형 | 기본값 | 필수? |
---|---|---|
boolean | false | 아니오 |
Teleport 배포에 대한 쿠버네티스 Ingress
를 생성할지 여부를 지정하는 부울 값입니다.
values.yaml
예시:
ingress:
enabled: true
ingress.useExisting
유형 | 기본값 | 필수? |
---|---|---|
boolean | false | 아니오 |
ingress.useExisting
는 차트에게 현재 자신의 ingress(또는 HTTPRoute, 또는 TLS를 종료하는 다른 LoadBalancing 방법)를 관리하고 있음을 알립니다.
차트는 Teleport가 ingress 뒤에서 실행되는 것처럼 구성하지만 ingress 리소스는 생성하지 않습니다. ingress는 사용자가 생성하고 관리해야 합니다.
values.yaml
예시:
ingress:
enabled: true
useExisting: true
ingress.suppressAutomaticWildcards
유형 | 기본값 | 필수? |
---|---|---|
boolean | false | 아니오 |
suppressAutomaticWildcards
를 true로 설정하면 Ingress에서 자동으로 *.<clusterName>
을 호스트 이름으로 추가하지 않습니다.
이는 Teleport 애플리케이션 액세스 기능을 사용하지 않거나 애플리케이션에 대한 개별 공용 주소를 구성하려는 경우 바람직할 수 있습니다.
values.yaml
예시:
ingress:
enabled: true
suppressAutomaticWildcards: true
ingress.spec
유형 | 기본값 | 필수? |
---|---|---|
object | {} | 아니오 |
설정된 Ingress에 대한 추가 속성을 정의하는 데 사용할 수 있는 객체 값.
예를 들어, 여기서 ingressClassName
을 설정할 수 있습니다:
values.yaml
예시:
ingress:
enabled: true
spec:
ingressClassName: alb
extraArgs
유형 | 기본값 |
---|---|
list | [] |
Teleport Pod를 실행할 때 teleport start
명령에 전달할 추가 인수 목록입니다.
values.yaml
예시:
extraArgs:
- "--bootstrap=/etc/teleport-bootstrap/roles.yaml"
extraEnv
유형 | 기본값 |
---|---|
list | [] |
주요 Teleport 컨테이너에 설정할 추가 환경 변수 목록입니다.
values.yaml
예시:
extraEnv:
- name: MY_ENV
value: my-value
extraVolumes
유형 | 기본값 |
---|---|
list | [] |
차트가 생성하는 모든 Pod
에서 사용할 수 있는 추가 쿠버네티스 Volume
목록입니다. 이러한 볼륨은 또한 차트가 구성한 모든 initContainers
에서 사용할 수 있습니다.
values.yaml
예시:
extraVolumes:
- name: myvolume
secret:
secretName: mysecret
extraVolumeMounts
유형 | 기본값 |
---|---|
list | [] |
차트가 생성하는 모든 Pod
에 마운트할 추가 쿠버네티스 볼륨 마운트 목록입니다. 이러한 볼륨 마운트는 또한 차트에 의해 구성된 모든 initContainers
에 마운트됩니다.
values.yaml
예시:
extraVolumeMounts:
- name: myvolume
mountPath: /path/to/mount/volume
imagePullPolicy
유형 | 기본값 |
---|---|
string | IfNotPresent |
차트에 의해 생성된 모든 포드에 대한 imagePullPolicy
를 재정의할 수 있습니다.
values.yaml
예시:
imagePullPolicy: Always
imagePullSecrets
유형 | 기본값 |
---|---|
list | [] |
비공식 도커 레지스트리에 접근하기 위해 선택적으로 사용할 수 있는 인증 토큰이 포함된 비밀 목록입니다.
values.yaml
예시:
imagePullSecrets:
- name: my-docker-registry-key
initContainers
유형 | 기본값 |
---|---|
list | [] |
차트에 의해 생성된 모든 포드에서 주요 Teleport 컨테이너 이전에 실행될 initContainers
목록입니다.
values.yaml
예시:
initContainers:
- name: teleport-init
image: alpine
args: ['echo test']
postStart
유형 | 기본값 |
---|---|
object | {} |
주요 Teleport 컨테이너에서 구성할 postStart
생애주기 핸들러입니다.
values.yaml
예시:
postStart:
command:
- echo
- foo
resources
유형 | 기본값 |
---|---|
object | {} |
Teleport 컨테이너에 설정해야 할 리소스 요청/제한입니다. 이러한 리소스 제한은 initContainers
에도 적용됩니다.
CPU 제한을 설정하는 것은 안티 패턴이며 대부분의 경우 유해합니다. 정적 CPU 관리 정책을 활성화하지 않는 한, CPU 제한이 있는 멀티스레드 워크로드는 CPU 제한 근처에서 예상치 못한 방식으로 동작할 것입니다.
스로틀링이 시작되면 Teleport는 불안정해질 것입니다. 다음을 참조하여 CPU 제한을 설정하지 않는 것이 좋습니다. GitHub PR에서 기술적인 세부사항을 설명합니다.
values.yaml
예시:
resources:
requests:
cpu: 1
memory: 2Gi
podSecurityContext
유형 | 기본값 |
---|---|
object | {} |
주요 Teleport 포드에 적용되는 podSecurityContext
입니다.
values.yaml
예시:
podSecurityContext:
fsGroup: 65532
securityContext
유형 | 기본값 |
---|---|
object | {} |
주요 Teleport 컨테이너에 적용되는 securityContext
입니다.
values.yaml
예시:
securityContext:
runAsUser: 99
tolerations
유형 | 기본값 |
---|---|
list | [] |
포드 할당을 위한 쿠버네티스 내성이 설정됩니다.
values.yaml
예시:
tolerations:
- key: "dedicated"
operator: "Equal"
value: "teleport"
effect: "NoSchedule"
priorityClassName
유형 | 기본값 |
---|---|
string | "" |
포드에 대해 설정할 쿠버네티스 PriorityClass입니다.
values.yaml
예시:
priorityClassName: "system-cluster-critical"
probeTimeoutSeconds
유형 | 기본값 |
---|---|
integer | 1 |
활성 상태 및 준비 상태 프로브에 대한 쿠버네티스 시간 초과 설정입니다.
values.yaml
예시:
probeTimeoutSeconds: 5