인포레터에서 최신 DevOps 트렌드를 격주로 만나보세요!
teleport-cluster 차트 참조
teleport-cluster
Helm 차트는 Kubernetes에서 Teleport 클러스터를 배포합니다.
여기에는 프록시, 인증 서버 및 kubernetes-access 배포가 포함됩니다.
자세한 내용은 Teleport HA 아키텍처 페이지 를 참조하십시오.
teleport-cluster
차트는 두 세트의 파드로 나뉘어 세 개의 Teleport 서비스를 실행합니다.
Teleport 서비스 | 실행 위치 | 목적 | 문서 |
---|---|---|---|
auth_service | auth 배포 | 사용자 및 호스트를 인증하고 인증서를 발급합니다. | 인증 문서 |
kubernetes_service | auth 배포 | Teleport 클러스터가 호스팅되는 Kubernetes 클러스터에 대한 안전한 액세스를 제공합니다. | Kubernetes 액세스 문서 |
proxy_service | proxy 배포 | 웹 UI, SSH 프록시 및 리버스 터널 서비스와 같은 Teleport 클러스터의 외부 부분을 실행합니다. | 프록시 문서 |
추가 Kubernetes 클러스터 및 Teleport 서비스
기존 Teleport 클러스터가 호스팅하지 않는 Databases, Applications 또는 기타 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 (v12 및 이후) | 빈 Teleport 구성 파일을 생성합니다. 사용자는 자신의 구성을 전달해야 합니다. 이는 권장되지 않으며, 대신 auth.teleportConfig 및 proxy.teleportConfig 와 함께 standalone 모드를 사용하십시오. | 사용자 정의 구성으로 Teleport 클러스터 실행 |
사용자 정의 모드 제거
custom
모드는 Teleport 버전 12에서 제거되었습니다. 자세한 정보는 버전 12
마이그레이션
가이드를
참조하십시오.
버전 호환성
차트는 Teleport와 함께 버전 관리됩니다. 새로운 차트와 이전 주요 Teleport 버전 간의 호환성 보장은 이루어지지 않습니다. Helm 차트와 동일한 주요 버전의 Teleport 버전을 항상 배포하는 것이 강력히 권장됩니다.
경고
운영 인스턴스, 환경 및/또는 설정을 영구 수정하기 전에 백업하는 것은 모범 사례로 권장됩니다. 이를 통해 필요할 경우 기존 상태로 롤백할 수 있습니다.
clusterName
Type | Default value | Required? | teleport.yaml equivalent |
---|---|---|---|
string | nil | 예 | auth_service.cluster_name , proxy_service.public_addr |
clusterName
은 Teleport 클러스터를 참조하는 데 사용되는 이름과 이를 액세스하는 데 사용되는 외부 공개 주소를 제어합니다. 대부분의 설정에서 이 값은 기본적으로 클러스터의 공개 주소로 사용되므로 완전한 도메인 이름이어야 합니다 (예: teleport.example.com
).
Note
clusterName
으로 완전한 도메인 이름을 사용할 경우, 해당 도메인에 대한 DNS 공급자를 구성하여 Teleport 클러스터의 외부 로드 밸런서 주소를 가리키도록 해야 합니다.
로드 밸런서에 대한 외부 주소로 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
teleport.example.com
을 IP로 가리키는 DNS A 레코드를 수동으로 추가하거나, Kubernetes 로드 밸런서의 호스트 이름을 가리키는 CNAME 레코드를 추가해야 합니다.
Teleport는 Application Access에 대해 구성하는 각 애플리케이션에 서브도메인을 할당합니다. 예를 들어, 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 클라우드 플랫폼을 사용하는 경우, 서브도메인과 애플리케이션에 대한 서명된 TLS 인증서를 자동으로 제공하므로 DNS 업데이트가 필요하지 않습니다.
Warning
clusterName
은 Teleport 클러스터의 수명 동안 변경할 수 없습니다. 변경해야
하는 경우, 완전히 새로운 클러스터를 다시 배포해야 합니다.
kubeClusterName
Type | Default value | Required? | teleport.yaml equivalent |
---|---|---|---|
string | clusterName 값 | 아니오 | kubernetes_service.kube_cluster_name |
kubeClusterName
은 Kubernetes 접근에 사용될 이름을 설정합니다.
이 이름은 Kubernetes 클러스터에 연결하는 Teleport 사용자에게 표시됩니다.
auth
Type | Default value | Required? |
---|---|---|
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
Component | Type | Default value | Required? | teleport.yaml equivalent |
---|---|---|---|---|
proxy | string | null | 아니오 | proxy_service.proxy_protocol |
proxyProtocol
값은 L4 로드 밸런서 (예: AWS ELB, GCP L4 LB 등) 뒤에 있을 때 Proxy 팟이 클라이언트의 IP 주소와 함께 PROXY 라인을 수락할지를 제어합니다. L4 LB는 클라이언트의 IP 주소를 보존하지 않기 때문에 Teleport가 클라이언트의 IP 주소를 올바르게 감사하기 위해 PROXY 프로토콜이 필요합니다.
Teleport 팟이 PROXY 프로토콜이 활성화된 L4 LB 뒤에 있지 않은 경우, 이 값은 Teleport가 신뢰할 수 없는 소스에서 PROXY 헤더를 수락하지 않도록 off
로 설정해야 합니다.
가능한 값은 다음과 같습니다:
on
: 모든 연결에 대해 PROXY 프로토콜을 활성화하며 L4 LB가 PROXY 헤더를 전송해야 합니다.off
: 모든 연결에 대해 PROXY 프로토콜을 비활성화하며 PROXY 헤더가 앞에 붙은 모든 연결을 거부합니다.
proxyProtocol
이 지정되지 않으면, Teleport는 연결에 대해 PROXY 헤더를 요구하지 않지만, 존재하는 경우 수락합니다. 이 모드는 안전하지 않은 것으로 간주되며 테스트 용도로만 사용해야 합니다.
자세한 내용은 PROXY Protocol 보안 섹션 을 참조하십시오.
auth.teleportConfig
유형 | 기본 값 | 필수 여부 |
---|---|---|
객체 | 아니오 |
auth.teleportConfig
는 auth pod를 위한 YAML teleport 구성을 포함합니다.
구성은 차트에서 생성된 구성과 병합되며, 충돌 시 우선권을 가집니다. 이 필드는
teleport.yaml
의 구성 어떤 부분을 자유롭게 사용자화하거나 재정의할 수 있도록 허용합니다
스cratch 차트 모드를 사용하지 않고도 가능합니다.
병합 로직은 다음과 같습니다:
- 객체 필드는 재귀적으로 병합됩니다.
- 리스트는 교체됩니다.
- 값(문자열, 정수, 불리언 등)은 교체됩니다.
- 필드는
null
또는~
로 설정하여 해제할 수 있습니다.
지원되는 필드 목록은 Teleport Configuration Reference를 참조하세요.
auth:
teleportConfig:
teleport:
cache:
enabled: false
auth_service:
client_idle_timeout: 2h
client_idle_timeout_message: "활동 없이 2시간 후 연결 종료"
proxy
유형 | 기본 값 | 필수 여부 |
---|---|---|
객체 | 아니오 |
teleport-cluster
차트는 Auth 서비스용과 Proxy 서비스용으로 두 세트의 pods를 배포합니다.
proxy
는 Teleport Proxy 서비스와 관련된 Kubernetes 리소스에 대해 차트 값을 설정할 수 있게 합니다.
이는 차트 범위의 값과 병합되며, 충돌 시 우선권을 가집니다.
예를 들어, Teleport Proxy 서비스 pods에 대해 postStart
값을 재정의하고
Teleport Proxy 서비스에 배포된 Kubernetes Service를 주석 달려면:
# 기본적으로 모든 pods의 postStart 명령은 "echo starting"이어야 합니다.
postStart: ["echo", "starting"]
proxy:
# 하지만 proxy pods에 대한 `postStart` 값을 특정하게 재정의합니다.
postStart: ["curl", "http://hook"]
imagePullPolicy: Always
# Proxy 서비스 pods에 트래픽을 보내는 Kubernetes Service에만 주석을 추가합니다.
annotations:
service:
external-dns.alpha.kubernetes.io/hostname: "teleport.example.com"
proxy.teleportConfig
유형 | 기본 값 | 필수 여부 |
---|---|---|
객체 | 아니오 |
proxy.teleportConfig
는 proxy pods를 위한 YAML teleport 구성을 포함합니다.
구성은 차트에서 생성된 구성과 병합되며, 충돌 시 우선권을 가집니다. 이 필드는
teleport.yaml
의 구성 어떤 부분을 자유롭게 사용자화하거나 재정의할 수 있도록 허용합니다
스cratch 차트 모드를 사용하지 않고도 가능합니다.
병합 로직은 다음과 같습니다:
- 객체 필드는 재귀적으로 병합됩니다.
- 리스트는 교체됩니다.
- 값(문자열, 정수, 불리언 등)은 교체됩니다.
- 필드는
null
또는~
로 설정하여 해제할 수 있습니다.
지원되는 필드 목록은 Teleport Configuration Reference를 참조하세요.
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 의 동등 값 |
---|---|---|---|
문자열 | local | 예 | auth_service.authentication.type |
authentication.type
는 Teleport에서 사용하는 인증 방식을 제어합니다.
가능한 값은 local
및 Teleport Community Edition의 github
, 추가로 Enterprise의 경우 oidc
및 saml
이 있습니다.
authentication.connectorName
Type | Default value | Required? | teleport.yaml equivalent |
---|---|---|---|
string | "" | 아니오 | auth_service.authentication.connector_name |
authentication.connectorName
은 기본 인증 커넥터를 설정합니다.
SSO 문서는 일반 ID 공급자에 대한 인증 커넥터를 만드는 방법을 설명합니다.
SSO 커넥터 이름 외에도 다음의 내장 커넥터가 지원됩니다:
local
로컬 사용자용passwordless
기본적으로 비밀번호 없는 인증을 활성화하기 위해.
기본값은 local
입니다.
authentication.localAuth
Type | Default value | Required? | teleport.yaml equivalent |
---|---|---|---|
bool | true | 아니오 | auth_service.authentication.local_auth |
authentication.localAuth
는 로컬 인증이 활성화되어 있는지를 제어합니다.
비활성화된 경우, 사용자는 saml
, oidc
또는 github
와 같은 인증 커넥터를 통해서만 로그인할 수 있습니다.
로컬 인증을 비활성화하는 것은 FedRAMP / FIPS에 필요합니다.
authentication.lockingMode
Type | Default value | Required? | teleport.yaml equivalent |
---|---|---|---|
string | "" | 아니오 | auth_service.authentication.locking_mode |
authentication.lockingMode
는 클러스터 전체의 잠금 모드를 제어합니다. 가능한 값은 best_effort
및 strict
입니다.
잠금 모드 문서를 참조하여 더 많은 세부정보를 확인하십시오.
빈 경우 Teleport의 이진 기본값에 기본 설정: best_effort
.
authentication.passwordless
Type | Default value | Required? | teleport.yaml equivalent |
---|---|---|---|
bool | nil | 아니오 | auth_service.authentication.passwordless |
authentication.passwordless
는 비밀번호 없는 인증이 활성화되어 있는지를 제어합니다.
클러스터에 대한 비밀번호 없는 접근을 금지하는 데 사용할 수 있습니다.
authentication.secondFactor
Type | Default value | Required? | teleport.yaml equivalent |
---|---|---|---|
string | otp | 예 | auth_service.authentication.second_factor |
authentication.secondFactor
는 로컬 사용자 인증에 사용되는 두 번째 요소를 제어합니다. 이 차트에서 지원하는 가능한 값은 on
, otp
, 및 webauthn
입니다.
on
또는 webauthn
으로 설정된 경우, authenticationSecondFactor.webauthn
섹션도 사용할 수 있습니다.
구성된 rp_id
는 기본적으로 clusterName
입니다.
Warning
사용자가 다른 도메인에서 클러스터에 접근할 수 있도록 publicAddr
를 설정하는 경우, clusterName
과 다른 도메인 아래의 경우에는 웹 인증 Relying Party Identifier (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
자세한 내용은 Second Factor - WebAuthn을 참조하십시오.
authentication.webauthn.attestationAllowedCas
유형 | 기본값 | 필수 여부 | teleport.yaml 동등한 항목 |
---|---|---|---|
배열 | [] | 아니요 | auth_service.authentication.webauthn.attestation_allowed_cas |
authentication.webauthn.attestationAllowedCas
는 디바이스 검증을 위한 인증 기관의 선택적 허용 목록입니다 (로컬 파일 경로 또는 인라인 PEM 인증서 문자열로).
이 필드는 신뢰하는 디바이스 모델과 공급업체를 제한할 수 있게 해줍니다.
목록에 없는 디바이스는 등록 중에 거부됩니다.
기본적으로 모든 디바이스가 허용됩니다.
authentication.webauthn.attestationDeniedCas
유형 | 기본값 | 필수 여부 | teleport.yaml 동등한 항목 |
---|---|---|---|
배열 | [] | 아니요 | auth_service.authentication.webauthn.attestation_denied_cas |
authentication.webauthn.attestationDeniedCas
는 디바이스 검증을 위한 인증 기관의 선택적 거부 목록입니다 (로컬 파일 경로 또는 인라인 PEM 인증서 문자열로).
이 필드는 특정 디바이스 모델과 공급업체를 금지하면서 다른 모든 디바이스를 허용할 수 있게 해줍니다 (이들이 attestation_allowed_cas를 통과할 경우).
목록에 포함된 디바이스는 등록 중에 거부됩니다.
기본적으로 금지된 디바이스는 없습니다.
proxyListenerMode
유형 | 기본값 | 필수 여부 | teleport.yaml 동등한 항목 |
---|---|---|---|
문자열 | nil | 아니요 | auth_service.proxy_listener_mode |
proxyListenerMode
는 Teleport에서 사용하는 프록시 TLS 라우팅을 제어합니다. 가능한 값은 multiplex
, separate
입니다.
values.yaml
예시:
proxyListenerMode: multiplex
sessionRecording
유형 | 기본값 | 필수 여부 | teleport.yaml 동등한 항목 |
---|---|---|---|
문자열 | "" | 아니요 | auth_service.session_recording |
sessionRecording
은 teleport.yaml
구성의 session_recording
필드를 제어합니다.
구성에서 그대로 전달됩니다.
가능한 값에 대한 내용은 Teleport 구성 참조를 참조하십시오.
values.yaml
예시:
sessionRecording: proxy
separatePostgresListener
유형 | 기본값 | 필수 여부 | teleport.yaml 동등한 항목 |
---|---|---|---|
부울 | false | 아니요 | proxy_service.postgres_listen_addr |
separatePostgresListener
는 Teleport가 Teleport 데이터베이스 서비스의 PostgreSQL 트래픽을 Teleport의 웹 UI에 대한 별도의 TLS 리스너를 통해 다중화할지를 제어합니다.
separatePostgresListener
가 false
(기본값)인 경우, PostgreSQL 트래픽은 포트 443 (Teleport 웹 UI의 기본 포트)로 전송됩니다. 이는 Teleport가 자체 TLS 트래픽을 종료하는 상황에서 작동합니다. 즉, LetsEncrypt의 인증서를 사용하거나 Teleport의 proxy_service.https_keypairs
설정을 통해 인증서/개인 키 쌍을 제공할 때입니다.
separatePostgresListener
가 true
인 경우, PostgreSQL 트래픽은 포트 5432의 PostgreSQL 전용 리스너로 전송됩니다.
이것은 차트가 생성하는 Service
에 포트를 추가합니다. 이는 AWS ACM을 사용하여 Teleport 앞에서 TLS를 종료할 때 유용합니다.
이 설정은 proxyListenerMode
가 multiplex
로 설정된 경우에는 적용되지 않습니다.
values.yaml
예시:
separatePostgresListener: true
separateMongoListener
유형 | 기본값 | 필수 여부 | teleport.yaml 동등한 항목 |
---|---|---|---|
bool | false | 아니오 | proxy_service.mongo_listen_addr |
separateMongoListener
는 Teleport가 Teleport 데이터베이스 서비스의 PostgreSQL 트래픽을
별도의 TLS 리스너를 통해 Teleport의 웹 UI로 멀티플렉스할지를 제어합니다.
separateMongoListener
가 false
(기본값)인 경우, MongoDB 트래픽은 포트 443 (기본 Teleport 웹
UI 포트)로 전송됩니다. 이는 Teleport가 자체 TLS 트래픽을 종료하는 상황에서 작동합니다. 즉, LetsEncrypt의 인증서를 사용하거나 Teleport의 proxy_service.https_keypairs
구성으로 인증서/비공개 키 쌍을 제공하는 경우입니다.
separateMongoListener
가 true
인 경우, MongoDB 트래픽은 포트 27017에서 별도의 Mongo 전용 리스너로 전송됩니다. 이는 차트가 생성하는 Service
에 포트를 추가합니다. 이는 AWS ACM과 같은 로드 밸런서에서 TLS를 종료할 때 유용합니다.
이 설정은 proxyListenerMode
가 multiplex
로 설정된 경우 적용되지 않습니다.
values.yaml
예:
separateMongoListener: true
publicAddr
유형 | 기본값 | 필수 여부 | teleport.yaml 동등한 항목 |
---|---|---|---|
list[string] | [] | 아니오 | proxy_service.public_addr |
publicAddr
는 TLS 연결을 위한 광고 주소를 제어합니다.
publicAddr
가 설정되지 않은 경우, 사용되는 주소는 clusterName
에서 포트 443을 사용합니다.
Warning
publicAddr
를 설정하여 사용자가 clusterName
과 다른 도메인에서 클러스터에 접근하게 하려면,
웹 인증 신뢰할 수 있는 당사자 식별자 (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
Type | Default value | Required? | teleport.yaml equivalent |
---|---|---|---|
list[string] | [] | 아니요 | proxy_service.mongo_public_addr |
mongoPublicAddr
는 MongoDB 클라이언트에 광고되는 주소를 제어합니다.
이 설정은 proxyListenerMode
가 multiplex
로 설정된 경우 적용되지 않으며,
separateMongoListener
가 활성화되어야 합니다.
mongoPublicAddr
가 설정되지 않은 경우, 주소는 clusterName
에서 유추됩니다.
기본 포트는 27017입니다.
values.yaml
예시:
mongoPublicAddr: ["loadbalancer.example.com:27017"]
mysqlPublicAddr
Type | Default value | Required? | teleport.yaml equivalent |
---|---|---|---|
list[string] | [] | 아니요 | proxy_service.mysql_public_addr |
mysqlPublicAddr
는 MySQL 프록시에 광고되는 주소를 제어합니다.
이 설정은 proxyListenerMode
가 multiplex
로 설정된 경우 적용되지 않습니다.
mysqlPublicAddr
가 설정되지 않은 경우, 주소는 publicAddr
에서 유추되며, 설정되지 않은 경우
clusterName
에서 사용됩니다. 기본 포트는 3036입니다.
values.yaml
예시:
mysqlPublicAddr: ["loadbalancer.example.com:3036"]
postgresPublicAddr
Type | Default value | Required? | teleport.yaml equivalent |
---|---|---|---|
list[string] | [] | 아니요 | proxy_service.postgres_public_addr |
postgresPublicAddr
는 postgres 클라이언트에 광고되는 주소를 제어합니다.
이 설정은 proxyListenerMode
가 multiplex
로 설정된 경우 적용되지 않으며,
separatePostgresListener
가 활성화되어야 합니다.
postgresPublicAddr
가 설정되지 않은 경우, 주소는 publicAddr
에서 유추되며, 설정되지 않은 경우
clusterName
에서 사용됩니다. 기본 포트는 5432입니다.
values.yaml
예시:
postgresPublicAddr: ["loadbalancer.example.com:5432"]
sshPublicAddr
Type | Default value | Required? | teleport.yaml equivalent |
---|---|---|---|
list[string] | [] | 아니요 | proxy_service.ssh_public_addr |
sshPublicAddr
는 SSH 클라이언트에 광고되는 주소를 제어합니다. 이는 tsh
클라이언트에서도 사용됩니다.
이 설정은 proxyListenerMode
가 multiplex
로 설정된 경우 적용되지 않습니다.
sshPublicAddr
가 설정되지 않은 경우, 주소는 publicAddr
에서 유추되며, 설정되지 않은 경우
clusterName
에서 사용됩니다. 기본 포트는 3023입니다.
values.yaml
예시:
sshPublicAddr: ["loadbalancer.example.com:3023"]
tunnelPublicAddr
Type | Default value | Required? | teleport.yaml equivalent |
---|---|---|---|
list[string] | [] | 아니요 | proxy_service.tunnel_public_addr |
tunnelPublicAddr
는 노드 터널링을 통해 신뢰할 수 있는 클러스터 또는 노드에 광고되는 주소를 제어합니다.
이 설정은 proxyListenerMode
가 multiplex
로 설정된 경우 적용되지 않습니다.
tunnelPublicAddr
가 설정되지 않은 경우, 주소는 publicAddr
에서 유추되며, 설정되지 않은 경우
clusterName
에서 사용됩니다. 기본 포트는 3024입니다.
values.yaml
예시:
tunnelPublicAddr: ["loadbalancer.example.com:3024"]
enterprise
Type | Default value |
---|---|
bool | false |
enterprise
는 Teleport Community Edition 또는 Teleport Enterprise를 사용할지 여부를 제어합니다.
enterprise
를 true
로 설정하면 Teleport Enterprise 이미지를 사용하게 됩니다.
이것을 사용하려면 Teleport 대시보드에서 Enterprise 라이센스를 다운로드하고 이를 Kubernetes 비밀로 추가해야 합니다:
kubectl --namespace teleport create secret generic license --from-file=/path/to/downloaded/license.pem
Tip
특정 네임스페이스에 Teleport 차트를 설치한 경우, 생성한 license
비밀도
동일한 네임스페이스에 추가해야 합니다.
Note
비밀에 추가된 파일은 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
licenseSecretName
Type | Default value |
---|---|
string | license |
licenseSecretName
는 Enterprise 라이센스를 위한 Kubernetes 비밀 이름을 제어합니다.
이 값을 사용하면 사용자 정의 이름을 사용하여 비밀 기반의 볼륨을 컨테이너에 마운트하기 위해 Kubernetes 볼륨 사양을 업데이트할 수 있습니다.
values.yaml
예시:
licenseSecretName: enterprise-license
installCRDs
Type | Default value |
---|---|
bool | false |
CRD는 네임스페이스 범위의 리소스가 아니며 - 클러스터에서 한 번만 설치할 수 있습니다.
CRD는 Teleport Kubernetes Operator에 필요하며 operator.enabled
가 true일 때 기본적으로 설치됩니다.
installCRDs
는 이 동작을 재정의하고 사용자가 Teleport CRD를 배포할지 여부를 나타낼 수 있게 합니다.
같은 Kubernetes 클러스터에 여러 teleport-cluster
차트를 배포하는 경우,
오직 하나의 릴리스만 installCRDs
가 활성화되어야 합니다.
여러 teleport-cluster
Helm 릴리스를 동일한 Kubernetes 클러스터에 배포하거나
자신이 CRD를 설치하지 않는 한 이 값을 설정할 필요는 없습니다.
values.yaml
예시:
installCRDs: true
operator
operator.enabled
Type | Default value |
---|---|
bool | false |
operator.enabled
는 Teleport Kubernetes Operator를 사이드카로 배포할지 여부를 제어합니다.
Operator를 활성화하면 Kubernetes 클러스터에 Teleport CRD도 배포됩니다.
같은 클러스터에 Helm 차트의 여러 릴리스를 배포하는 경우 installCRDs
로 이 동작을 재정의할 수 있습니다.
values.yaml
예시:
operator:
enabled: true
operator.image
Type | Default value |
---|---|
string | public.ecr.aws/gravitational/teleport-operator |
operator.image
는 클러스터 내에서 Teleport 팟에 사용될 Teleport Kubernetes Operator 컨테이너 이미지를 설정합니다.
이 설정을 재정의하여 Teleport에서 제공된 이미지 대신 자신의 Teleport Operator 이미지를 사용할 수 있습니다.
이 설정은 operator.enabled
가 필요합니다.
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 차트를 업그레이드하면 저장소의 최신 버전을 사용합니다.
선택적으로 이를 덮어써서 10.1.2
또는 11
과 같은 다른 게시된 Teleport Docker 이미지 태그를 사용할 수 있습니다.
Danger
teleportVersionOverride
는 Teleport 버전을 제어하는 데 사용되어서는 안 됩니다.
이 차트는 특정 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는 Web X.509 인증서를 받기 위한 프로토콜입니다.
acme를 true
로 설정하면 ACME 프로토콜이 활성화되고 Let's Encrypt에서 무료 TLS 인증서를 받으려고 시도합니다.
acme를 false
로 설정하면 (기본값) Teleport는 자체 서명된 인증서를 생성하고 웹 UI에 사용합니다.
Note
ACME는 단일 팟 클러스터에서만 사용할 수 있습니다. HA 구성에서는 적합하지 않습니다.
Warning
자체 서명된 TLS 인증서를 사용하고 TLS 검증을 비활성화하는 것은 테스트 용도로 괜찮지만, 운영 Teleport 클러스터를 실행할 때는 적절하지 않습니다. 이는 보안을 크게 감소시킵니다.
운영 작업을 위해서는 Teleport 클러스터에 유효한 TLS 인증서를 구성해야 합니다.
한 가지 옵션은 Teleport의 내장 ACME 지원을 사용하거나 cert-manager 지원을 활성화하는 것입니다.
acmeEmail
유형 | 기본값 | teleport.yaml 동등한 값 |
---|---|---|
string | nil | proxy_service.acme.email |
acmeEmail
은 인증서 등록 중에 제공할 이메일 주소입니다(이는 Let's Encrypt의 요구 사항입니다).
acmeURI
Type | Default value | teleport.yaml equivalent |
---|---|---|
string | Let's Encrypt 프로덕션 서버 | proxy_service.acme.uri |
acmeURI
는 인증서를 얻기 위해 사용할 ACME 서버입니다.
예를 들어, 테스트를 위해 Let's Encrypt 스테이징 서버를 사용하도록 재정의할 수 있습니다.
다른 ACME 호환 서버를 사용할 수도 있습니다.
values.yaml
예시:
acme: true
acmeEmail: user@email.com
acmeURI: https://acme-staging-v02.api.letsencrypt.org/directory
podSecurityPolicy
podSecurityPolicy.enabled
Type | Default value |
---|---|
bool | 1.22 이하에서는 true , 1.23 이상에서는 false |
기본적으로 Teleport 차트는 podSecurityPolicy
를 설치하는 데 사용됩니다.
PodSecurityPolicy 리소스는 Kubernetes 1.25에서 제거되었으며 1.23부터는 PodSecurityAdmission으로 대체되었습니다. Kubernetes 1.23 이상에서 실행 중인 경우 PSP를 비활성화하고 PSA를 사용하는 것이 좋습니다. 단계는 PSP 제거 가이드 문서에 설명되어 있습니다.
PSP 생성을 비활성화하려면 enabled
를 false
로 설정하면 됩니다.
values.yaml
예시:
podSecurityPolicy:
enabled: false
labels
Type | Default value |
---|---|
object | {} |
labels
는 배포 중인 Teleport 클러스터와 관련된 키-값 쌍의 맵을 추가하는 데 사용될 수 있습니다. 이러한 레이블은 Teleport의 RBAC 정책과 함께 사용되어 클러스터에 대한 접근 규칙을 정의하는 데 사용될 수 있습니다.
Note
이러한 것은 Kubernetes 레이블이 아닌 Teleport 전용 RBAC 레이블입니다.
Kubernetes 리소스에 추가 레이블을 설정하려면 extraLabels
를
참조하십시오.
values.yaml
예시:
labels:
environment: production
region: us-east
chartMode
Type | Default value |
---|---|
string | standalone |
chartMode
는 차트의 운영 모드를 구성하는 데 사용됩니다. 각 모드에 대한 자세한 정보는 해당 가이드 페이지에서 확인할 수 있습니다:
Warning
scratch
차트 모드를 사용하는 것은 권장하지 않습니다. 완전한 클러스터 구성을 작성하려면 정확한 차트 및 Teleport 지식이 필요합니다.
맞춤형 구성이 포함된 작동 클러스터를 원하시는 경우, 다른 모드를 사용하고 auth.teleportConfig
및 proxy.teleportConfig
를 활용하여 맞춤형 구성을 주입하는 것이 좋습니다.
podMonitor
podMonitor
는 차트에 의해 배포된 워크로드(Auth 및 Proxy Services)를 모니터링하는
PodMonitor CR (from monitoring.coreos.com/v1)입니다.
이 사용자 정의 리소스는 Prometheus를 구성하고 Teleport 메트릭을 스크랩하도록 합니다.
CRD는 prometheus-operator에 의해 배포되며 워크로드를 모니터링할 수 있도록 합니다.
podMonitor
섹션을 구성하기 전에 클러스터에 prometheus-operator
를 배포해야 합니다.
설치 지침은 prometheus-operator 문서를 참조하세요.
podMonitor.enabled
Type | Default value |
---|---|
bool | false |
차트가 PodMonitor
리소스를 배포해야 하는지 여부입니다.
기본적으로 비활성화되어 있으며, 클러스터에 PodMonitor
CRD가 설치되어 있어야 합니다.
podMonitor.additionalLabels
Type | Default value |
---|---|
object[string]string | {"prometheus":"default"} |
생성된 PodMonitor 리소스에 추가할 레이블입니다.
이 레이블은 특정 Prometheus 인스턴스에 의해 선택하는 데 사용됩니다.
podMonitor.interval
Type | Default value |
---|---|
string | 30s |
interval
은 Prometheus에 의해 두 메트릭 스크랩 사이의 간격입니다.
persistence
Kubernetes 1.23+의 변경 사항으로 인해 추가 구성 없이는 AWS EKS 클러스터에서 영구 볼륨이 자동으로 프로비저닝되지 않습니다.
자세한 사항은 AWS EBS CSI 드라이버 문서를 참조하세요.
이 드라이버 애드온은 Kubernetes 1.23 이후 EKS 클러스터에서 영구 볼륨을 사용하도록 구성해야 합니다.
persistence.enabled
Type | Default value |
---|---|
bool | true |
persistence.enabled
는 새로 생성된 PersistentVolumeClaim
또는 기존의 것을 사용하여 데이터 지속성을
활성화하는 데 사용할 수 있습니다.
values.yaml
예시:
persistence:
enabled: true
persistence.existingClaimName
Type | Default value |
---|---|
string | nil |
persistence.existingClaimName
는 사용할 기존의 PersistentVolumeClaim
의 이름을 제공하는 데 사용할 수 있습니다.
기본값은 비워 두어 Teleport 저장소용으로 자동으로 PersistentVolumeClaim
을 생성합니다('standalone' 또는 'scratch' 모드에서).
values.yaml
예시:
persistence:
existingClaimName: my-existing-pvc-name
persistence.storageClassName
Type | Default value |
---|---|
string | nil |
persistence.storageClassName
는 PersistentVolumeClaim
의 스토리지 클래스를 설정하는 데 사용할 수 있습니다.
values.yaml
예시:
persistence:
storageClassName: ebs-ssd
persistence.volumeSize
Type | Default value |
---|---|
string | 10Gi |
volumeSize
를 설정하여 'standalone' 또는 'scratch' 모드에서 Teleport 차트를 설치할 때
다른 크기의 영구 볼륨을 요청할 수 있습니다.
Note
existingClaimName
이 설정된 경우 volumeSize
는 무시됩니다.
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가 Dynamo 백엔드를 구성할 때 DynamoDB 백업이 활성화되는지를 제어합니다.
aws.dynamoAutoScaling
Teleport가 DynamoDB의 자동 확장을 구성해야 하는지 여부입니다. 기본값은 false
입니다.
Warning
DynamoDB 자동 확장은 더 이상 권장되지 않습니다. Teleport는 이제 더 안정적인 성능을 제공하는 "온디맨드" DynamoDB 요금제로 기본 설정됩니다.
aws.accessMonitoring
aws.accessMonitoring
는 Auth Service의 Access Monitoring 기능을 구성합니다.
이 기능을 사용하려면 AccessMonitoring 구성 섹션에 설명된 특정 AWS 인프라를 설정해야 합니다.
Terraform 예제 코드는 이 섹션의 차트 값을 출력합니다.
aws.accessMonitoring.enabled
aws.accessMonitoring.enabled
는 Access Monitoring을 활성화합니다.
이를 위해서는 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 가이드에 설명되어 있습니다: 구글 클라우드 GKE 클러스터를 사용하여 HA Teleport 클러스터 실행하기
azure
azure
설정은 Azure 가이드에 설명되어 있습니다: 마이크로소프트 Azure AKS 클러스터를 사용하여 HA Teleport 클러스터 실행하기
highAvailability
highAvailability
는 Teleport 포드가 복제 및 예약되는 방법을 제어하는 설정을 포함합니다.
이를 통해 Teleport는 고가용성 방식으로 실행할 수 있으며, Teleport는 머신의 충돌/손실 없이 서비스 중단이 없도록 유지되어야 합니다.
인증 포드용
"standalone" 또는 "scratch" 모드를 사용할 때, 여러 복제를 지원하려면 고가용성 스토리지(etcd, DynamoDB 또는 Firestore)를 사용해야 합니다.
NFS 기반 스토리지 또는 ReadWriteMany 볼륨 클레임을 수동으로 구성하는 것은 지원되지 않으며 오류가 발생합니다. 여러 복제와 함께 Teleport의 내장 ACME 클라이언트를 사용하는 것은(cert-manager를 사용하거나 인증서를 보안 비밀번호를 통해 전달하는 것은) 지원되지 않습니다.
프록시 포드용
프록시 포드는 (tls.existingSecretName 또는 highAvailability.certManager를 통해) 복제할 수 있는 인증서를 제공받아야 하며
또는 인그레스를 통해 노출되어야 합니다(ingress.enabled
).
프록시 포드가 복제 가능할 경우 기본값은 2개의 복제본이 되며, highAvailability.replicaCount
가 1일 경우에도 적용됩니다.
단일 프록시 복제를 강제하려면 proxy.highAvailability.replicaCount: 1
을 설정하세요.
highAvailability.replicaCount
Type | Default value |
---|---|
int | 1 |
포드 복제본의 수를 제어합니다. highAvailability
섹션은 복제 요구 사항을 설명합니다.
버전 호환성
1보다 큰 값을 설정하는 경우, 위에 설명된 복제 기준을 충족해야 합니다. 이를 충족하지 않으면 오류 및 불일치하는 데이터가 발생합니다.
highAvailability.requireAntiAffinity
Type | Default value |
---|---|
bool | false |
highAvailability.requireAntiAffinity
를 true
로 설정하면 requiredDuringSchedulingIgnoredDuringExecution
를 사용하여 여러 Teleport 포드가 동일한 물리적 호스트에서 예약되지 않도록 요구합니다.
Warning
이는 매우 작은 클러스터 또는 노드 다운타임 중에 Teleport 포드가 스케줄링되지 않을 수 있으므로 주의해서 사용해야 합니다.
highAvailability.requireAntiAffinity
를 false
(기본값)로 설정하면 preferredDuringSchedulingIgnoredDuringExecution
를 사용하여 노드 반대 집합을 소프트 요구 사항으로 만듭니다.
Note
이 설정은 highAvailability.replicaCount
가 1보다 클 때만 효과가 있습니다.
values.yaml
예시:
highAvailability:
requireAntiAffinity: true
highAvailability.podDisruptionBudget
highAvailability.podDisruptionBudget.enabled
Type | Default value |
---|---|
bool | false |
Teleport Pod에 대한 Pod Disruption Budget을 활성화하여 자발적인 중단 중에 HA를 보장합니다.
values.yaml
예:
highAvailability:
podDisruptionBudget:
enabled: true
highAvailability.podDisruptionBudget.minAvailable
Type | Default value |
---|---|
int | 1 |
자발적인 중단 동안 이 수의 레플리카가 사용 가능하도록 보장하며, 레플리카 수 또는 백분율이 될 수 있습니다.
values.yaml
예:
highAvailability:
podDisruptionBudget:
minAvailable: 1
highAvailability.certManager
cert-manager 문서에서 자세한 정보를 확인하세요.
highAvailability.certManager.enabled
Type | Default value | teleport.yaml equivalent |
---|---|---|
bool | false | proxy_service.https_keypairs (자체 인증서를 제공하기 위해) |
highAvailability.certManager.enabled
를 true
로 설정하면 cert-manager
를 사용하여 HA 모드로 배포된 Teleport 클러스터에 대한 TLS 인증서를 프로비저닝합니다.
cert-manager 설치하기
Kubernetes 클러스터에 cert-manager
를 직접 설치하고 구성해야 합니다.
cert-manager Helm 설치 지침 및 AWS 및 GCP 가이드의 관련 섹션에서 자세한 정보를 확인하세요.
highAvailability.certManager.addCommonName
Type | Default value | teleport.yaml equivalent |
---|---|---|
bool | false | proxy_service.https_keypairs (자체 인증서를 제공하기 위해) |
highAvailability.certManager.addCommonName
를 true
로 설정하면 cert-manager
가 인증서 서명 요청의 commonName 필드를 발급 CA로 설정하도록 지시합니다.
common name 필드 활성화하기
Kubernetes 클러스터에 cert-manager
를 직접 설치하고 구성해야 합니다.
cert-manager Helm 설치 지침 및 AWS 및 GCP 가이드의 관련 섹션에서 자세한 정보를 확인하세요.
values.yaml
예:
highAvailability:
certManager:
enabled: true
addCommonName: true
issuerName: letsencrypt-production
highAvailability.certManager.addPublicAddrs
Type | Default value | teleport.yaml equivalent |
---|---|---|
bool | false | proxy_service.https_keypairs (자체 인증서 제공) |
highAvailability.certManager.addPublicAddrs
를 true
로 설정하면 cert-manager
에게 publicAddr
차트 값 아래에 구성된 추가 주소를 인증서 서명 요청의 발급 CA에 추가하도록 지시합니다.
values.yaml
예제:
publicAddr: ["teleport.example.com:443"]
highAvailability:
certManager:
enabled: true
addPublicAddrs: true
issuerName: letsencrypt-production
highAvailability.certManager.issuerName
Type | Default value | teleport.yaml equivalent |
---|---|---|
string | nil | 없음 |
인증서를 발급하는 데 사용할 cert-manager
Issuer
또는 ClusterIssuer
의 이름을 설정합니다.
Issuer 구성
적절한 DNS01 챌린지를 지원하는 Issuer
를 직접 구성해야 합니다.
추가 정보는 cert-manager DNS01 문서 및 AWS와 GCP 가이드의 관련 섹션을 참조하십시오.
values.yaml
예제:
highAvailability:
certManager:
enabled: true
issuerName: letsencrypt-production
highAvailability.certManager.issuerKind
Type | Default value | teleport.yaml equivalent |
---|---|---|
string | Issuer | 없음 |
인증서를 발급할 때 사용할 Issuer
의 Kind
를 설정합니다. 기본값은 Issuer
로 설정되어 권한을 단일 네임스페이스로 한정합니다.
values.yaml
예제:
highAvailability:
certManager:
issuerKind: ClusterIssuer
highAvailability.certManager.issuerGroup
Type | Default value |
---|---|
string | cert-manager.io |
인증서를 발급할 때 사용할 Issuer
의 Group
을 설정합니다. 기본값은 내장 발급자를 사용하기 위해 cert-manager.io
로 설정되어 있습니다.
values.yaml
예제:
highAvailability:
certManager:
issuerGroup: cert-manager.io
highAvailability.minReadySeconds
Type | Default value |
---|---|
integer | 15 |
다음 팟으로 이동하기 전에 팟 롤아웃 중 대기할 시간입니다.
쿠버네티스 문서 참조.
이는 에이전트가 새로운 팟에 다시 연결할 시간을 제공하는 데 사용됩니다.
values.yaml
예제:
highAvailability:
minReadySeconds: 15
tls.existingSecretName
Type | Default value | teleport.yaml equivalent |
---|---|---|
string | "" | proxy_service.https_keypairs |
tls.existingSecretName
은 Teleport가 HTTPS를 사용하여 웹 UI를 보호하기 위해 기존의 Kubernetes 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
자세한 내용은 https://kubernetes.io/docs/concepts/configuration/secret/#tls-secrets 를 참조하십시오.
values.yaml
예제:
tls:
existingSecretName: my-tls-secret
tls.existingCASecretName
Type | Default value |
---|---|
string | "" |
tls.existingCASecretName
은 Teleport 포드에 신뢰할 수 있는 CA 또는 PEM 형식의 번들을 로드하기 위해 SSL_CERT_FILE
환경 변수를 설정합니다.
이를 통해 Teleport가 시작할 때 전체 신뢰 체인을 구축할 수 있도록 루트 및/또는 중간 CA를 주입할 수 있습니다.
또한 Teleport 기본 이미지를 수정하지 않고 OIDC 공급자, S3 호환 백엔드 또는 외부 서비스에 접속할 때 개인 CA를 신뢰하는 데에도 사용할 수 있습니다.
이는 tls.existingSecretName
이 설정된 경우 User Message: unable to verify HTTPS certificate chain
오류가 발생하여 Teleport가 시작되지 않는 경우 필요할 가능성이 높습니다.
다음과 같은 명령어를 사용하여 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
Type | Default value |
---|---|
string | public.ecr.aws/gravitational/teleport |
image
는 클러스터 내 Teleport Community 포드에 사용되는 Teleport 컨테이너 이미지를 설정합니다.
이를 통해 Teleport가 게시한 이미지가 아닌 자신만의 Teleport Community 이미지를 사용할 수 있습니다.
values.yaml
예시:
image: my.docker.registry/teleport-community-image-name
enterpriseImage
Type | Default value |
---|---|
string | public.ecr.aws/gravitational/teleport-ent |
enterpriseImage
는 클러스터 내 Teleport Enterprise 포드에 사용되는 컨테이너 이미지를 설정합니다.
이를 통해 Teleport가 게시한 이미지가 아닌 자신만의 Teleport Enterprise 이미지를 사용할 수 있습니다.
values.yaml
예시:
enterpriseImage: my.docker.registry/teleport-enterprise-image-name
log
log.level
Note
이 필드는 이전에 logLevel
이라고 불렸습니다. 호환성을 위해 여전히 이 이름을
사용할 수 있지만, log.level
을 사용하는 것으로 값 파일을 변경하는 것을
권장합니다.
Type | Default value | teleport.yaml equivalent |
---|---|---|
string | INFO | teleport.log.severity |
log.level
은 Teleport 프로세스에 사용되는 로그 수준을 설정합니다.
사용 가능한 로그 수준(가장 자세한 것부터 가장 간단한 순서)은 다음과 같습니다: DEBUG
, INFO
, WARNING
, ERROR
.
기본값은 INFO
로, 운영 환경에서 권장됩니다.
DEBUG
는 처음 설정 시 유용하거나 디버깅을 위해 더 자세한 로그를 보기 위해 유용합니다.
values.yaml
예시:
log:
level: DEBUG
log.output
Type | Default value | teleport.yaml equivalent |
---|---|---|
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 프로세스의 로깅에 사용되는 필드를 설정합니다.
가능한 값에 대한 자세한 내용은 Teleport 구성 파일 참조를 참조하십시오.
values.yaml
예시:
log:
extraFields: ["timestamp", "level"]
nodeSelector
유형 | 기본값 |
---|---|
object | {} |
nodeSelector
를 사용하여 Teleport 포드가 실행될 노드를 제약할 수 있는 키-값 쌍의 맵을 추가할 수 있습니다.
values.yaml
예시:
nodeSelector:
role: bastion
environment: security
affinity
유형 | 기본값 |
---|---|
object | {} |
포드 할당을 위한 Kubernetes 친화성 설정.
Note
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
에 적용되어야 하는 Kubernetes 주석.
values.yaml
예시:
annotations:
config:
kubernetes.io/annotation: value
annotations.deployment
유형 | 기본값 |
---|---|
object | {} |
차트에 의해 생성된 Deployment
에 적용되어야 하는 Kubernetes 주석.
values.yaml
예시:
annotations:
deployment:
kubernetes.io/annotation: value
annotations.pod
유형 | 기본값 |
---|---|
object | {} |
차트에 의해 생성된 각 Pod
에 적용되어야 하는 Kubernetes 주석.
values.yaml
예시:
annotations:
pod:
kubernetes.io/annotation: value
annotations.service
유형 | 기본값 |
---|---|
object | {} |
차트에 의해 생성된 Service
에 적용될 Kubernetes 주석입니다.
values.yaml
예제:
annotations:
service:
kubernetes.io/annotation: value
annotations.serviceAccount
유형 | 기본값 |
---|---|
object | {} |
차트에 의해 생성된 serviceAccount
에 적용될 Kubernetes 주석입니다.
values.yaml
예제:
annotations:
serviceAccount:
kubernetes.io/annotation: value
annotations.certSecret
유형 | 기본값 |
---|---|
object | {} |
차트에 의해 생성된 certificate
에서 cert-manager
에 의해 생성된 secret
에 적용될 Kubernetes 주석입니다. highAvailability.certManager.enabled
가 true
로 설정되었을 때만 유효하며 cert-manager
v1.5.0+가 필요합니다.
values.yaml
예제:
annotations:
certSecret:
kubernetes.io/annotation: value
annotations.ingress
유형 | 기본값 |
---|---|
object | {} |
차트에 의해 생성된 Ingress
에 적용될 Kubernetes 주석입니다.
values.yaml
예제:
annotations:
ingress:
alb.ingress.kubernetes.io/target-type: ip
alb.ingress.kubernetes.io/backend-protocol: HTTPS
extraLabels
extraLabels
는 차트에 의해 생성된 리소스에 적용할 추가 Kubernetes 레이블을 포함합니다.
자세한 내용은 Kubernetes 레이블 문서를 참조하십시오.
참고: 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 훅에 의해 실행되는 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인 경우, Helm 차트를 설치하기 전에 현재 네임스페이스에 이 이름의 서비스 계정을 생성해야 합니다.
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 배포를 위해 Kubernetes Ingress
를 생성할지 여부를 지정하는 부울 값입니다.
values.yaml
예:
ingress:
enabled: true
ingress.useExisting
유형 | 기본값 | 필수 여부 |
---|---|---|
boolean | false | 아니오 |
ingress.useExisting
는 사용자가 자신의 ingress(또는 HTTPRoute, 또는 TLS를 종료하는 다른 LoadBalancing 방법)를 관리하고 있음을 차트에 나타냅니다. 차트는 ingress 뒤에서 실행되는 것처럼 Teleport를 구성하지만 ingress 리소스를 생성하지는 않습니다. ingress를 생성하고 관리하는 것은 귀하의 책임입니다.
values.yaml
예시:
ingress:
enabled: true
useExisting: true
ingress.suppressAutomaticWildcards
유형 | 기본값 | 필수 여부 |
---|---|---|
boolean | false | 아니오 |
suppressAutomaticWildcards
를 true로 설정하면 *.<clusterName>
을 Ingress에 의해 제공되는 호스트 이름으로 자동 추가하지 않습니다. 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
에서 사용할 수 있어야 하는 추가 Kubernetes Volumes
목록입니다. 이러한 볼륨은 차트에 의해 구성된 모든 initContainers
에서도 사용 가능합니다.
values.yaml
예시:
extraVolumes:
- name: myvolume
secret:
secretName: mysecret
extraVolumeMounts
유형 | 기본값 |
---|---|
list | [] |
차트에 의해 생성되는 모든 Pod
에 장착되어야 하는 추가 Kubernetes 볼륨 장착 목록입니다. 이러한 장착은 차트에 의해 구성된 모든 initContainers
에도 장착됩니다.
values.yaml
예시:
extraVolumeMounts:
- name: myvolume
mountPath: /path/to/mount/volume
imagePullPolicy
유형 | 기본값 |
---|---|
string | IfNotPresent |
차트에 의해 생성된 모든 파드의 imagePullPolicy
를 재정의할 수 있습니다.
values.yaml
예시:
imagePullPolicy: Always
imagePullSecrets
유형 | 기본값 |
---|---|
list | [] |
개인 Docker 레지스트리에 접근하기 위해 선택적으로 사용할 수 있는 인증 토큰이 포함된 비밀 목록입니다.
values.yaml
예시:
imagePullSecrets:
- name: my-docker-registry-key
initContainers
유형 | 기본값 |
---|---|
list | [] |
차트에 의해 생성된 모든 파드에서 main 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
에도 적용됩니다.
Danger
CPU 제한을 설정하는 것은 안티 패턴이며 대부분의 경우 해롭습니다. 정적 CPU 관리 정책을 활성화하지 않는 한, CPU 제한이 있는 멀티스레드 워크로드는 CPU 제한에 근접할 때 예상한 대로 동작하지 않을 가능성이 매우 높습니다.
스로틀링이 시작되면 Teleport는 불안정해질 것입니다. CPU 제한을 설정하지 않을 것을 권장합니다. 기술 세부정보는 GitHub PR를 참조하십시오.
values.yaml
예시:
resources:
requests:
cpu: 1
memory: 2Gi
podSecurityContext
유형 | 기본값 |
---|---|
object | {} |
podSecurityContext
는 주요 Teleport 파드에 적용됩니다.
values.yaml
예시:
podSecurityContext:
fsGroup: 65532
securityContext
유형 | 기본값 |
---|---|
object | {} |
securityContext
는 주요 Teleport 컨테이너에 적용됩니다.
values.yaml
예시:
securityContext:
runAsUser: 99
tolerations
유형 | 기본 값 |
---|---|
list | [] |
포드 할당을 위해 설정할 Kubernetes Tolerations.
values.yaml
예시:
tolerations:
- key: "dedicated"
operator: "Equal"
value: "teleport"
effect: "NoSchedule"
priorityClassName
유형 | 기본 값 |
---|---|
string | "" |
포드의 Kubernetes PriorityClass.
values.yaml
예시:
priorityClassName: "system-cluster-critical"
probeTimeoutSeconds
유형 | 기본 값 |
---|---|
integer | 1 |
생명 상태 및 준비 상태 프로브에 대한 Kubernetes 타임아웃.
values.yaml
예시:
probeTimeoutSeconds: 5