teleport-kube-agent 차트 레퍼런스
Teleport v18.9teleport-kube-agent Helm 차트는 원격 Kubernetes 클러스터에서 실행하여 인프라의 리소스에 대한 액세스를 제공하는 Teleport Agent를 구성하는 데 사용됩니다. GitHub에서 소스를 탐색할 수 있습니다.
teleport-kube-agent Helm 차트는 원격 Kubernetes 클러스터에서 실행하여 인프라의 리소스에 대한 액세스를 제공하는 Teleport Agent를 구성하는 데 사용됩니다.
이 레퍼런스는 teleport-kube-agent 차트에서 사용 가능한 값들을 자세히 설명합니다.
영구적인 수정을 가하기 전에 프로덕션 인스턴스, 환경 및/또는 설정을 백업하는 것을 모범 사례로 권장합니다. 이렇게 하면 필요한 경우 기존 상태로 롤백할 수 있습니다.
차트가 배포하는 것#
Teleport 서비스#
teleport-kube-agent 차트는 세 가지 Teleport 서비스 중 하나 또는 모두를 실행할 수 있습니다:
| Teleport 서비스 | roles 및 tctl tokens add의 이름 |
목적 |
|---|---|---|
kubernetes_service |
kube |
Teleport를 사용하여 Kubernetes 클러스터에 대한 인증 처리 와 프록시 액세스 |
application_service |
app |
Teleport를 사용하여 웹 기반 애플리케이션에 대한 인증 처리 와 프록시 액세스 |
database_service |
db |
Teleport를 사용하여 데이터베이스에 대한 인증 처리 와 프록시 액세스 |
discovery_service |
discovery |
Teleport를 사용하여 새 리소스를 발견 하고 클러스터에 동적으로 추가 |
jamf_service |
jamf |
Teleport를 사용하여 Jamf Pro와 통합 하고 Device Trust 인벤토리와 장치 동기화 |
Kubernetes 리소스#
teleport-kube-agent 차트는 다음 Kubernetes 리소스를 배포합니다:
| 종류 | 기본 이름 | 설명 | 배포 시점 |
|---|---|---|---|
StatefulSet |
릴리즈 이름 | 사용자가 구성한 Teleport 파드를 실행합니다. | 항상. |
Secret |
joinTokenSecret.name (기본값: teleport-kube-agent-join-token) |
Teleport 파드의 상태 관리에 사용됩니다. | joinTokenSecret.secret이 true인 경우. |
Secret |
jamfCredentialsSecret.name (기본값: teleport-jamf-api-credentials) |
Jamf Prod를 Teleport와 통합하는 데 사용됩니다(jamf_service). |
jamfCredentialsSecret.create가 true인 경우 |
Deployment |
릴리즈 이름 | 사용자가 구성한 Teleport 파드를 실행합니다. | storage.enabled가 false이고 차트가 업그레이드 중인 경우. 신규 설치 시에는 StatefulSet을 대신 배포합니다. |
Role |
제공된 경우 roleName 옵션, 아니면 릴리즈 이름. |
Kubernetes 시크릿을 통해 Teleport 파드의 상태를 관리하는 데 사용됩니다. | 항상. |
ClusterRole |
제공된 경우 clusterRoleName, 아니면 릴리즈 이름. |
사용자, 그룹, 서비스 계정을 가장하고, 파드를 가져오고, SelfSubjectAccessReview를 생성하여 Teleport 파드가 Kubernetes 클러스터의 리소스에 대한 액세스를 관리할 수 있도록 합니다. |
항상. |
ClusterRoleBinding |
제공된 경우 clusterRoleBindingName, 아니면 릴리즈 이름 |
Teleport 파드가 Kubernetes 클러스터의 리소스에 대한 액세스를 관리할 수 있게 합니다. | 항상. |
RoleBinding |
제공된 경우 roleBindingName, 아니면 릴리즈 이름 |
Teleport 파드가 Kubernetes 클러스터의 리소스에 대한 액세스를 관리할 수 있게 합니다. | 항상. |
ServiceAccount |
제공된 경우 serviceAccount.name, 아니면 릴리즈 이름 |
Teleport 파드가 Kubernetes 클러스터의 리소스에 대한 액세스를 관리할 수 있게 합니다. | serviceAccount.create가 true인 경우 |
PodDisruptionBudget |
릴리즈 이름 | Teleport 파드의 고가용성을 보장합니다. | highAvailability.podDisruptionBudget.enabled가 true인 경우. |
ServiceAccount |
릴리즈 이름에 -hook 접미사 추가 |
StatefulSet을 대신 배포하기 위해 레거시 Deployment를 삭제하는 데 사용됩니다. 업그레이드가 완료되면 제거됩니다. |
teleport-kube-agent 릴리즈에 레거시 Deployment 리소스가 포함된 경우. |
Role |
릴리즈 이름에 -hook 접미사 추가 |
StatefulSet을 대신 배포하기 위해 레거시 Deployment를 삭제하는 데 사용됩니다. 업그레이드가 완료되면 제거됩니다. |
teleport-kube-agent 릴리즈에 레거시 Deployment 리소스가 포함된 경우. |
RoleBinding |
릴리즈 이름에 -hook 접미사 추가 |
StatefulSet을 대신 배포하기 위해 레거시 Deployment를 삭제하는 데 사용됩니다. 업그레이드가 완료되면 제거됩니다. |
teleport-kube-agent 릴리즈에 레거시 Deployment 리소스가 포함된 경우. |
Job |
릴리즈 이름에 -hook 접미사 추가 |
StatefulSet을 대신 배포하기 위해 레거시 Deployment를 삭제하는 데 사용됩니다. 업그레이드가 완료되면 제거됩니다. |
teleport-kube-agent 릴리즈에 레거시 Deployment 리소스가 포함된 경우. |
ConfigMap |
릴리즈 이름 | Teleport 파드의 구성을 포함합니다. | 항상. |
PodSecurityPolicy |
릴리즈 이름 | teleport-kube-agent에 의해 배포된 파드에 대한 보안 요구 사항을 적용합니다. |
podSecurityPolicy.enabled가 true이고 Kubernetes 클러스터 버전이 1.23 미만인 경우. |
Role |
릴리즈 이름에 -psp 접미사 추가 |
teleport-kube-agent에 의해 배포된 파드에 대한 보안 요구 사항을 적용합니다. |
podSecurityPolicy.enabled가 true이고 Kubernetes 클러스터 버전이 1.23 미만인 경우. |
RoleBinding |
릴리즈 이름에 -psp 접미사 추가 |
teleport-kube-agent에 의해 배포된 파드에 대한 보안 요구 사항을 적용합니다. |
podSecurityPolicy.enabled가 true이고 Kubernetes 클러스터 버전이 1.23 미만인 경우. |
roles#
| 타입 | 기본값 |
|---|---|
string |
"kube" |
roles는 teleport-kube-agent 차트를 실행할 때 활성화할 서비스의
쉼표로 구분된 목록입니다.
| 서비스 | roles 값 |
이 역할에 필요한 추가 설정 |
|---|---|---|
| Teleport Kubernetes service | kube |
kubeClusterName |
| Teleport Application service | app |
apps 또는 appResources |
| Teleport Database service | db |
databases 또는 databaseResources |
| Teleport Discovery service | discovery |
kubeClusterName |
| Teleport Jamf service | jamf |
jamfApiEndpoint, jamfClientId |
예를 들면 다음과 같습니다:
roles: kube,app,discovery
proxyAddr#
| 타입 | 기본값 |
|---|---|
string |
"" |
proxyAddr는 클러스터에 조인하는 데 사용해야 하는, 공개적으로 노출된
Teleport Proxy Service 엔드포인트를 제공합니다. 이는 Teleport 클러스터의
웹 UI에 접근할 때 사용하는 것과 동일한 URL입니다. 사용되는 포트는 보통 3080 또는 443입니다.
다음은 몇 가지 예입니다:
| 배포 방식 | proxy_service.public_addr 예시 |
|---|---|
| On-prem Teleport 클러스터 | teleport.example.com:3080 |
| Teleport Cloud 클러스터 | example.teleport.sh:443 |
teleport-cluster Helm 차트 |
teleport.example.com:443 |
relayAddr#
| 타입 | 기본값 |
|---|---|
string |
"" |
relayAddr는 이 에이전트가 사용해야 하는 Teleport Relay
Service 터널 엔드포인트의 선택적 주소를 정의합니다.
설정하면 에이전트는 컨트롤 플레인으로의 터널에 더해, Relay가 지원하는 프로토콜에 대해 지정된 Relay로 리버스 터널을 엽니다.
relayAddr는 Teleport v18.5.0부터 사용 가능하며, Kubernetes 서비스에 적용됩니다.
enterprise#
| 타입 | 기본값 |
|---|---|
bool |
false |
enterprise는 teleport-kube-agent 차트가 컨테이너 이미지의
OSS 버전을 배포할지 엔터프라이즈 버전을 배포할지 제어합니다.
Teleport Cloud 또는 자체 호스팅 Teleport Enterprise 클러스터에 연결할 때는,
에이전트가 엔터프라이즈 기능을 활용할 수 있도록 이 값을 true로 설정해야 합니다.
authToken#
| 타입 | 기본값 |
|---|---|
string |
"" |
authToken은 Teleport 인스턴스를 Teleport 클러스터에 조인하는 데
사용할 Teleport 조인 토큰을 제공합니다. authToken은 token
조인 방식만 지원합니다.
kubernetes, iam, gcp와 같은 다른 방식의 경우에는, 더 많은 방식으로
Teleport 클러스터에 조인할 수 있는 joinParams 값을
사용해야 합니다. authToken과 joinParams가 모두 설정된 경우 joinParams가
우선합니다.
에이전트가 Teleport 클러스터에 조인하려면 authToken,
joinParams, 또는 기존 Kubernetes Secret 중
하나를 통해 토큰을 반드시 지정해야 합니다.
사용되는 토큰은 최소한 필요한 시스템 역할을 부여해야 합니다. 예를 들어 차트
roles가 kube,app인 경우, 토큰은 시스템 역할 App과 Kube를
허용해야 합니다.
joinParams#
joinParams는 Teleport 에이전트가 Teleport 클러스터에 조인하는 방식을 제어합니다.
에이전트가 클러스터에 연결하려면 이 하위 값들을 구성해야 합니다.
이 값은 authToken과 동일한 목적을 수행하지만 모든 조인
방식을 지원합니다. 설정되면 authToken보다 우선합니다.
이 값을 사용하는 것이 권장됩니다.
joinParams.method#
| 타입 | 기본값 |
|---|---|
string |
"token" |
joinParams.method는 인스턴스가 Teleport 클러스터에 조인할 때 사용할
조인 방식을 제어합니다.
가능한 값 목록, 각 조인 방식의 의미, 그리고 각 방식을 설정하는 가이드는 조인 방식 레퍼런스를 참고하세요.
teleport-kube-agent에서 일반적으로 사용되는 조인 방식은 다음과 같습니다:
token: 가장 기본적인 방식으로, 일반적인 임시 비밀 토큰을 사용합니다kubernetes:in-cluster변형(에이전트가teleport-cluster차트와 동일한 Kubernetes 클러스터에서 실행되는 경우) 또는JWKS/OIDC변형(Teleport Auth Service 위치와 무관하게 모든 Kubernetes 클러스터에서 동작) 중 하나입니다.
joinParams.tokenName#
| 타입 | 기본값 |
|---|---|
string |
"" |
joinParams.tokenName은 에이전트가 Teleport 클러스터에 조인할 때 사용하는
토큰을 제어합니다.
joinParams.method가 위임 조인 방식인
경우, 이 값은 민감하지 않습니다.
joinParams.method가 token(기본값)인 경우, joinParams.tokenName은
비밀 토큰 자체를 포함합니다. 이 경우 값은 민감하며 에이전트 구성에 직접
포함되는 대신 Kubernetes Secret에 자동으로 저장됩니다.
방식이 token인 경우, 토큰이 기존 Kubernetes Secret을 통해 제공되면
joinParams.tokenName을 비워둘 수 있습니다. 자세한 내용과 지침은
joinTokenSecret을 참고하세요.
방식이 kubernetes인 경우, teleportClusterName을 설정해야 합니다.
teleportClusterName#
| 타입 | 기본값 |
|---|---|
string |
"" |
teleportClusterName은 조인 대상 Teleport 클러스터의 이름입니다.
Kubernetes JWKS 또는 OIDC 조인 방식으로
조인할 때 이 값을 설정하는 것이 필수입니다.
이 값이 설정되면, 차트는 projected 볼륨을 통해 Kubernetes 서비스 계정 토큰을 마운트하고 조인에 사용하도록 Teleport를 구성합니다.
kubeClusterName#
| 타입 | 기본값 |
|---|---|
string |
"" |
kubeClusterName은 Teleport 에이전트가 프록시하는 Kubernetes 클러스터에
사용되는 이름을 설정합니다. 이 이름은 클러스터에 연결하는 Teleport 사용자에게
표시됩니다.
이 설정은 차트 roles에 kube가 포함된 경우 필수입니다.
apps#
| 타입 | 기본값 |
|---|---|
list |
[] |
apps는 에이전트가 프록시해야 하는 애플리케이션의 정적 목록입니다.
자세한 내용은 Teleport 애플리케이션 접근 문서를
참고하세요.
프록시되는 애플리케이션은 정적으로(이 값을 통해) 또는 동적으로
(appResources 값을 통해) 정의할 수 있습니다.
차트 roles에 app이 포함된 경우 apps와 appResources 중 하나가 필수입니다.
목록에 요소를 추가하여 여러 앱을 지정할 수 있습니다. 예를 들면 다음과 같습니다:
apps:
- name: grafana
uri: http://localhost:3000
labels:
purpose: monitoring
- name: jenkins
uri: http://jenkins:8080
labels:
purpose: ci
Teleport Application Service 구성에 사용할 수 있는 모든 지원 값 목록은 Application Service Configuration Reference에서 확인할 수 있습니다.
appResources#
| 타입 | 기본값 |
|---|---|
list |
[] |
appResources는 에이전트가 모니터링할 레이블 집합입니다. 이 레이블과
일치하는 모든 애플리케이션은 에이전트에 의해 프록시됩니다. 자세한 내용은
Teleport 애플리케이션 접근 문서를
참고하세요.
프록시되는 애플리케이션은 정적으로(apps를 통해) 또는
동적으로(이 값을 통해) 정의할 수 있습니다.
차트 roles에 app이 포함된 경우 apps와 appResources 중 하나가 필수입니다.
목록 요소를 추가하여 여러 셀렉터를 지정할 수 있습니다. 예를 들면 다음과 같습니다:
appResources:
- labels:
"env": "prod"
- labels:
"env": "test"
appResources를 설정한 후에는 동적 애플리케이션 등록 가이드를
따라 tsh로 애플리케이션을 동적으로 등록할 수 있습니다.
clusterDomain#
| 타입 | 기본값 |
|---|---|
string |
"cluster.local" |
clusterDomain은 Kubernetes 클러스터가 사용하는 도메인 이름을 설정합니다. 이 값은
FQDN 애플리케이션 URI를 구성하는 데 사용됩니다. 예를 들어 클러스터 도메인이 anything.local인 경우, 에이전트는
default 네임스페이스에서 실행되는 애플리케이션 myapp을 http://myapp.default.svc.anything.local에서 프록시합니다. 클러스터 도메인이
기본값 cluster.local과 다른 경우, 이 값을 클러스터 도메인에 맞게 수동으로 설정해야 합니다.
awsDatabases#
| 타입 | 기본값 |
|---|---|
list |
[] |
awsDatabases는 AWS 데이터베이스 자동 검색을 구성합니다.
AWS 데이터베이스 자동 검색이 동작하려면, Database Service 파드가 데이터베이스 문서에 따라 적절한 IAM 권한을 가진 역할을 사용해야 합니다.
역할을 구성한 후에는, annotations.serviceAccount 값과 함께 eks.amazonaws.com/role-arn 애노테이션을 사용하여 서비스 계정과 연결하고 권한을 부여할 수 있습니다:
annotations:
serviceAccount:
eks.amazonaws.com/role-arn: arn:aws:iam::1234567890:role/my-rds-autodiscovery-role
목록에 요소를 추가하여 여러 데이터베이스 필터를 지정할 수 있습니다.
types는 검색해야 하는 AWS 데이터베이스 유형의 목록입니다.regions는 데이터베이스를 스캔할 AWS 리전의 목록입니다.tags는 데이터베이스가 검색되기 위해 일치해야 하는 AWS 태그를 설정하는 데 사용할 수 있습니다.
예를 들면 다음과 같습니다:
roles: db
awsDatabases:
- types: ["rds"]
regions: ["us-east-1", "us-west-2"]
tags:
"environment": "production"
- types: ["rds"]
regions: ["us-east-1"]
tags:
"environment": "dev"
- types: ["rds"]
regions: ["eu-west-1"]
tags:
"*": "*"
annotations:
serviceAccount:
eks.amazonaws.com/role-arn: arn:aws:iam::1234567890:role/my-rds-autodiscovery-role
azureDatabases#
| 타입 | 기본값 |
|---|---|
list |
[] |
azureDatabases는 Azure 데이터베이스 자동 검색을 구성합니다.
Azure 데이터베이스 자동 검색이 동작하려면, Database Service 파드가 데이터베이스 문서에 따라 적절한 IAM 권한을 가져야 합니다.
적절한 IAM 권한으로 서비스 프린시펄을 구성한 후에는, 파드에 자격 증명을 전달해야 합니다. 가장 쉬운 방법은 Azure 클라이언트 시크릿을 사용하는 것입니다.
먼저, 차트 설치 네임스페이스에 Azure 클라이언트 시크릿을 포함하는 Kubernetes Secret을 생성합니다:
$ kubectl create secret generic teleport-azure-client-secret --from-literal=client_secret=<your-azure-client-secret>
secret/teleport-azure-client-secret created
그런 다음, extraEnv 값을 사용하여 파드의 환경 변수를 설정합니다:
extraEnv:
- name: AZURE_CLIENT_SECRET
valueFrom:
secretKeyRef:
name: teleport-azure-client-secret
key: client_secret
optional: false
- name: AZURE_TENANT_ID
value: "11111111-2222-3333-4444-555555555555"
- name: AZURE_CLIENT_ID
value: "11111111-2222-3333-4444-555555555555"
목록에 요소를 추가하여 여러 데이터베이스 필터를 지정할 수 있습니다.
각 필터의 필수 필드:
types는 검색해야 하는 Azure 데이터베이스 유형의 목록입니다.tags는 데이터베이스가 검색되기 위해 일치해야 하는 Azure 리소스 태그를 설정하는 데 사용할 수 있습니다.
각 필터의 선택 필드:
regions는 데이터베이스를 스캔할 Azure 리전의 목록입니다.subscriptions는 일치하는 Azure 구독 내에서 데이터베이스를 검색하는 데 사용할 수 있습니다.resource_groups는 일치하는 Azure 리소스 그룹 내에서 데이터베이스를 검색하는 데 사용할 수 있습니다.
이러한 각 선택 설정의 기본값은 *이며, 이는 Azure에서 Teleport 서비스 프린시펄이
접근 가능한 모든 구독, 리전, 리소스 그룹에서 자동 검색을 수행합니다.
예를 들면 다음과 같습니다:
roles: db
azureDatabases:
- types: ["mysql", "postgres"]
tags:
"*": "*"
- types: ["mysql"]
tags:
"env": ["dev", "staging"]
"origin": "alice"
regions: ["eastus", "centralus"]
subscriptions: ["subID1", "subID2"]
resource_groups: ["group1", "group2"]
extraEnv:
- name: AZURE_CLIENT_SECRET
valueFrom:
secretKeyRef:
name: teleport-azure-client-secret
key: client_secret
optional: false
- name: AZURE_TENANT_ID
value: "11111111-2222-3333-4444-555555555555"
- name: AZURE_CLIENT_ID
value: "11111111-2222-3333-4444-555555555555"
databases#
| 타입 | 기본값 |
|---|---|
list |
[] |
databases는 에이전트가 프록시해야 하는 데이터베이스의 정적 목록입니다.
자세한 내용은 Teleport 데이터베이스 접근 문서를
참고하세요.
프록시되는 애플리케이션은 정적으로(이 값을 통해) 또는 동적으로
(databaseResources 값을 통해) 정의할 수 있습니다.
목록 요소를 추가하여 여러 데이터베이스를 지정할 수 있습니다.
values.yaml 예시:
databases:
- name: aurora-postgres
uri: postgres-aurora-instance-1.xxx.us-east-1.rds.amazonaws.com:5432
protocol: postgres
aws:
region: us-east-1
static_labels:
env: staging
- name: mysql
uri: mysql-instance-1.xxx.us-east-1.rds.amazonaws.com:3306
protocol: mysql
aws:
region: us-east-1
static_labels:
env: staging
Teleport Database Service 구성에 사용할 수 있는 모든 지원 값 목록은 여기에서 확인할 수 있습니다.
데이터베이스 CA는 데이터베이스별로 신뢰할 수 있습니다. 다음과 같은 명령을 사용하여 Teleport와 동일한 네임스페이스에 데이터베이스 CA 인증서를 포함하는 시크릿을 생성해야 합니다:
$ kubectl create secret generic my-postgres-ca --from-file=ca.pem=/path/to/database-ca.pem
그런 다음, 다음 값으로 Helm 차트를 배포합니다:
databases:
- name: my-postgres
uri: postgres.example.com:5432
protocol: postgres
tls:
ca_cert_file: "/etc/teleport-tls-db/my-postgres/ca.pem"
extraVolumes:
- name: my-postgres-ca
secret:
secretName: my-postgres-ca
extraVolumeMounts:
- name: my-postgres-ca
mountPath: /etc/teleport-tls-db/my-postgres
readOnly: true
databaseResources#
| 타입 | 기본값 |
|---|---|
list |
[] |
databaseResources는 에이전트가 모니터링할 레이블 집합입니다.
이 레이블과 일치하는 모든 데이터베이스는 에이전트에 의해 프록시됩니다. 자세한 내용은
Teleport
데이터베이스 접근
문서를
참고하세요.
프록시되는 데이터베이스는 정적으로(databases를 통해) 또는
동적으로(이 값을 통해) 정의할 수 있습니다.
목록 요소를 추가하여 여러 셀렉터를 지정할 수 있습니다. 예를 들면 다음과 같습니다:
databaseResources:
- labels:
"env": "prod"
"engine": "postgres"
- labels:
"env": "test"
"engine": "mysql"
databaseResources를 설정한 후에는 이 가이드를
따라 tsh로 데이터베이스를 동적으로 등록할 수 있습니다.
kubernetesDiscovery#
| 타입 | 기본값 |
|---|---|
list |
[{"labels":{"*":"*"},"namespaces":["*"],"types":["app"]}] |
kubernetesDiscovery는 Discovery Service가 활성화된 경우 그
구성을 제어합니다.
Discovery Service는 에이전트 roles에 "discovery"가 포함된 경우 활성화됩니다.
Discovery Service는 Kubernetes 서비스를 자동으로 감지하고, 이에 대한 접근을
제공하도록 에이전트를 구성합니다. 자세한 내용은 Kubernetes App Discovery
문서를
참고하세요.
Discovery 메커니즘은 kube-system 및 kube-public 네임스페이스에서 실행되는
Kubernetes 서비스를 무시합니다.
기본값은 Kubernetes에서 실행되는 모든 앱을 검색하려고 시도합니다. 이 값을 통해 검색을 제한할 수 있습니다. 예를 들면 다음과 같습니다:
kubernetesDiscovery:
- types: ["app"]
namespaces: [ "toronto", "porto" ]
labels:
env: staging
- types: ["app"]
namespaces: [ "seattle", "oakland" ]
labels:
env: testing
jamfApiEndpoint#
| 타입 | 기본값 |
|---|---|
string |
"" |
jamfApiEndpoint는 Jamf 서비스에 사용되는 Jamf Pro API 엔드포인트를 설정합니다.
예: "https://yourtenant.jamfcloud.com/api".
이 설정은 차트 roles에 jamf가 포함된 경우 필수입니다.
jamfClientId#
| 타입 | 기본값 |
|---|---|
string |
"" |
jamfClientId는 Jamf 서비스에 사용되는 Jamf Pro API Client ID를 설정합니다.
이 설정은 차트 roles에 jamf가 포함된 경우 필수입니다.
jamfClientSecret#
| 타입 | 기본값 |
|---|---|
string |
"" |
jamfClientSecret는 Jamf 서비스에 사용되는 Jamf Pro API 클라이언트 시크릿을 설정합니다.
이 설정은 차트 roles에 jamf가 포함되고 jamfCredentialsSecret.create가 true로 설정된 경우 필수입니다.
직접 Kubernetes Secret을 제공하는 경우, 이 설정은 설정하지 않은 상태로 둘 수 있습니다.
jamfCredentialsSecret#
jamfCredentialsSecret는 Jamf API 자격 증명(Jamf 클라이언트 시크릿 또는 비밀번호)을 포함하는 Kubernetes Secret을 관리합니다.
jamfCredentialsSecret.create#
| 타입 | 기본값 |
|---|---|
bool |
true |
jamfCredentialsSecret.create는 차트가 Jamf Pro API Client Secret을
포함하는 Kubernetes Secret을 생성할지 제어합니다.
false인 경우, Helm 릴리스 네임스페이스에 구성된 이름으로 Kubernetes Secret을
생성해야 합니다.
jamfCredentialsSecret.name#
| 타입 | 기본값 |
|---|---|
string |
"teleport-jamf-api-credentials" |
jamfCredentialsSecret.name은 차트가 사용하는 Jamf Pro API Client Secret을
포함하는 Kubernetes Secret의 이름입니다.
jamfCredentialsSecret.create가 false인 경우, 차트는 시크릿을 직접 생성하려고 시도하지 않습니다.
대신 기존 Kubernetes Secret에서 값을 읽습니다. jamfCredentialsSecret.name은
이 시크릿의 이름을 구성합니다. 이를 통해 이 시크릿을 외부에서 구성하고 Teleport 차트 값에 평문으로
Jamf Pro API Client Secret이 저장되는 것을 방지할 수 있습니다.
Jamf Pro API Client Secret을 포함하는 자체 Kubernetes Secret을 생성하려면, 다음 명령을 실행합니다:
$ kubectl --namespace teleport create secret generic my-jamf-secret --from-literal=credential=<replace-with-actual-secret>
시크릿 내부에서 Jamf Pro API Client Secret에 사용되는 키는 위 명령에서와 같이 credential이어야 합니다.
예를 들면 다음과 같습니다:
jamfCredentialsSecret:
create: false
name: my-jamf-secret
teleportVersionOverride#
| 타입 | 기본값 |
|---|---|
string |
"" |
teleportVersionOverride는 차트가 배포하는 Teleport Kubernetes Operator
이미지 버전을 제어합니다.
일반적으로 Teleport Kubernetes Operator의 버전은 차트의 버전과 일치합니다. 차트 버전 15.0.0을 설치하면 Teleport 버전 15.0.0을 사용하게 됩니다. 에이전트 업그레이드는 차트를 업그레이드하여 수행합니다.
teleportVersionOverride는 개발용으로 의도된 것이며 일반적인 배포에서
Teleport 버전을 제어하는 데 사용해서는 안 됩니다. 이
차트는 특정 Teleport 버전을 실행하도록 설계되었습니다. 다른 Teleport 버전을
이 차트로 실행하려고 하면 호환성 문제가 발생합니다.
Teleport 버전 X.Y.Z를 실행하려면, 대신
helm install --version X.Y.Z를 사용해야 합니다.
caPin#
| 타입 | 기본값 |
|---|---|
list |
[] |
caPin은 에이전트가 올바른 Auth Service에 연결하고 있음을 보장하기 위해
Teleport 클러스터에 조인할 때 검증해야 하는 CA 핀의 목록입니다.
이는 Auth Service에 직접 조인할 때만 사용됩니다. Proxy Service를 통해 조인하는 경우, 진위 여부는 TLS 연결에 사용되는 x509 인증서로 보장됩니다.
각 목록 요소는 핀 자체(권장) 또는 핀을 포함하는 파일의 경로일 수 있습니다.
후자의 경우, extraVolumes를 사용하여 파일을 마운트하는 것은
사용자의 책임입니다.
insecureSkipProxyTLSVerify#
| 타입 | 기본값 |
|---|---|
bool |
false |
insecureSkipProxyTLSVerify는 Proxy Service가 제시하는 TLS
인증서의 TLS 검증을 비활성화합니다.
이는 테스트를 위해 유효한 TLS 인증서가 없는 Teleport 클러스터에 Teleport 인스턴스를 조인하는 데 사용할 수 있습니다.
자체 서명된 TLS 인증서를 사용하고 TLS 검증을 비활성화하는 것은 테스트에는 괜찮지만, 프로덕션 Teleport 클러스터를 실행할 때는 보안을 크게 저하시키므로 적합하지 않습니다. 프로덕션 워크로드에서는 Teleport 클러스터에 유효한 TLS 인증서를 구성해야 합니다.
한 가지 방법은 Teleport의 내장 ACME 지원을 사용하거나 cert-manager 지원을 활성화하는 것입니다.
teleportConfig#
| 타입 | 기본값 |
|---|---|
object |
{} |
teleportConfig는 Teleport 파드에 전달할 YAML Teleport 구성을 포함합니다.
이 구성은 차트가 생성한 구성과 병합되며, 충돌이 발생하는 경우
우선합니다.
지원되는 필드 목록은 Teleport Configuration Reference를 참고하세요.
teleportConfig:
app_service:
debug_app: true
discovery_service:
enabled: true
azure:
- types: ["aks"]
tags:
"*":"*"
terminationGracePeriodSeconds#
| 타입 | 기본값 |
|---|---|
integer |
30 |
terminationGracePeriodSeconds는 파드가 정상 종료(graceful shutdown)를 수행하는 데 주어지는 시간입니다.
이 지연 시간 후에도 teleport가 종료되지 않으면, 프로세스가 강제 종료됩니다.
Teleport는 종료하기 전에 에이전트가 지원하는 모든 연결이 끝날 때까지 기다립니다.
더 느린 롤아웃을 감수하는 대신 에이전트 롤아웃의 중단을 줄이고 싶다면, 이
값을 한 시간까지 늘릴 수 있습니다.
자세한 내용은 Kubernetes Pod Lifecycle 문서를 참고하세요.
tls#
tls는 에이전트 파드에 자체 TLS 자료를 마운트하기 위한 설정을 포함합니다.
에이전트는 TLS 서버를 노출하지 않으므로, 이는 CA를 신뢰하는 데만 사용됩니다.
tls.existingCASecretName#
| 타입 | 기본값 |
|---|---|
string |
"" |
tls.existingCASecretName은 신뢰할 CA 또는 PEM 형식의 번들을 Teleport
파드에 로드하기 위해 SSL_CERT_FILE 환경 변수를 설정합니다.
주입된 CA는 Proxy Service, 업스트림 애플리케이션 또는 데이터베이스와의 TLS
통신을 검증하는 데 사용됩니다.
데이터베이스 CA를 신뢰하는 권장 방법은 CA를 전역 Teleport 신뢰 저장소에
추가하는 대신 데이터베이스별로 신뢰하는 것입니다. 이를 통해 신뢰 범위를
특정 데이터베이스로 제한하면서 여러 CA를 신뢰할 수 있습니다.
databases 섹션을 참고하세요.
다음과 같은 명령을 사용하여 Teleport와 동일한 네임스페이스에 CA 인증서를 포함하는 시크릿을 생성해야 합니다:
$ kubectl create secret generic my-root-ca --from-file=ca.pem=/path/to/root-ca.pem
Teleport distroless 컨테이너는 기본적으로 ca-certificates 패키지(Mozilla PKI)의 CA를 신뢰합니다.
existingCASecretName이 설정되면, Teleport는 시크릿의 CA 번들만 신뢰합니다.
Teleport가 다른 시스템(예: AWS, GitHub 등)과 상호작용해야 하는 경우, 시크릿에 해당 CA가 포함되어야 합니다.
그렇지 않으면 Teleport가 외부 서비스와 TLS 연결을 설정하는 데 실패합니다.
tls.existingCASecretKeyName#
| 타입 | 기본값 |
|---|---|
string |
"ca.pem" |
tls.existingCASecretKeyName은 CA 시크릿에서 어떤 키를
신뢰할 CA 번들 파일로 사용할지 결정합니다.
updater#
updater는 Kube Agent Updater를 teleport-kube-agent와 함께 배포할지
제어합니다. 업데이터는 대상 버전을 가져오고, 이미지 서명을 검증하며,
teleport 디플로이먼트를 업데이트합니다.
업데이터는 두 가지 프로토콜을 사용하여 업데이트 정보를 가져올 수 있습니다:
- webapi 업데이트 프로토콜(이 경우 Teleport Proxy Service가 버전 롤아웃을 주도)
- version server 프로토콜(버전과 업데이트가 중요한지 여부를 지정하는 정적 파일을 제공하는 HTTP 서버)
Teleport Proxy Service가 지원하는 경우 webapi 프로토콜이 version server 프로토콜보다 우선합니다.
version server 프로토콜 폴백은 updater.versionServer를 설정 해제하여 비활성화할 수 있습니다.
webapi 프로토콜은 updater.proxyAddr를 ""로 설정하여 비활성화할 수 있습니다.
하위 호환성을 위해, 사용자 지정 updater.versionServer가 설정된 경우 webapi 프로토콜은 활성화되지 않습니다.
tolerations, affinity, nodeSelector 등과 같은 모든 Kubernetes 관련 필드는
에이전트 값으로 기본 설정됩니다. 그러나 이들은
updater 객체에서 재정의할 수 있습니다. 예를 들면 다음과 같습니다:
# the agent pod requests 1cpu and 2 GiB of memory. It also has a memory limit.
resources:
requests:
cpu: "1"
memory: "2Gi"
limits:
memory: "2Gi"
# the updater pod requests 0.5 cpu and 512MiB of memory. The memory limit has also been unset.
updater:
resources:
requests:
cpu: "0.5"
memory: "512Mi"
limits: ~
updater에 정의할 수 있는 다른 업데이터 관련 값은 아래에
설명되어 있습니다.
updater.enabled#
| 타입 | 기본값 |
|---|---|
bool |
false |
updater.enabled는 Kube Agent Updater를 활성화하고 Teleport 에이전트와 함께 배포합니다.
다음의 경우 이를 활성화할 수 있습니다:
- Teleport Cloud를 사용하고 있고 테넌트가 자동 업데이트에 등록된 경우.
(웹 UI에서
Add Kubernetes와Enroll New Resource of type Kubernetes를 선택하여 값이 켜져 있는지 확인할 수 있습니다.) - 자체 호스팅 Teleport를 사용하고 자체 version server를 유지 관리하는 경우.
다음의 경우 이를 활성화해서는 안 됩니다:
- 자동 업데이트에 등록되지 않은 Teleport Cloud 고객인 경우.
- 자체 호스팅 Teleport 사용자이며 Teleport 클러스터가 자동 업데이트를 지원하도록 설정하지 않은 경우.
updater.versionServer#
| 타입 | 기본값 |
|---|---|
string |
"https://{{ .Values.proxyAddr }}/v1/webapi/automaticupgrades/channel" |
updater.versionServer는 에이전트가 대상 버전을 가져오는 version server의
URL입니다. 전체 버전 엔드포인트는 versionServer와
releaseChannel을 연결하여 구성됩니다.
이 필드는 gotemplate을 지원합니다.
이 필드를 설정하면 업데이터가 version server 프로토콜을 사용하여 버전을 가져옵니다. 이 필드를 사용자 지정 값으로 설정하면 하위 호환성을 보장하기 위해 webapi 업데이트 프로토콜이 비활성화됩니다.
updater.releaseChannel#
| 타입 | 기본값 |
|---|---|
string |
"stable/cloud" |
updater.releaseChannel은 업데이터가 구독하는
릴리스 채널입니다.
전체 버전 엔드포인트는
versionServer와 releaseChannel을 연결하여 구성됩니다.
Teleport Cloud 사용자인 경우 Teleport 지원팀의 안내가 없는 한 기본값을
변경해서는 안 됩니다.
이 값은 업데이터가 version server 프로토콜을 사용하여 버전을 가져올 때 사용됩니다.
또한 updater.group이 설정되지 않은 경우 webapi 프로토콜을 사용하여 버전을 가져올 때 폴백으로도 사용됩니다.
updater.group#
| 타입 | 기본값 |
|---|---|
string |
"" |
updater.group은 webapi 프로토콜을 사용하여 버전을 가져올 때 사용되는 업데이트 그룹입니다.
설정되지 않은 경우, 그룹은 default로 기본 설정됩니다.
updater.image#
| 타입 | 기본값 |
|---|---|
string |
"public.ecr.aws/gravitational/teleport-kube-agent-updater" |
updater.image는 updater.enabled가 true일 때 실행되는 Teleport 업데이터
파드에 사용되는 컨테이너 이미지를 설정합니다.
Teleport에서 게시한 이미지 대신 자체 Teleport Kube Agent Updater 이미지를 사용하도록 이를 재정의할 수 있습니다.
updater.serviceAccount#
updater.serviceAccount.name#
| 타입 | 기본값 |
|---|---|
string |
"" |
updater.serviceAccount.name은 업데이터 Kubernetes 서비스
계정 이름입니다. 설정되지 않은 경우, <kube agent sa name>-updater로 기본 설정됩니다.
updater.pullCredentials#
| 타입 | 기본값 |
|---|---|
string |
"" |
updater.pullCredentials는 업데이터가 이미지 서명을 검증하는 데 사용되는
이미지 풀 자격 증명을 가져오는 방식을 구성합니다.
공식 공개 Teleport 레지스트리(차트 기본값)에서 이미지를 가져올 때는 이것이 필요하지 않습니다.
지원되는 값은 amazon, google, docker, none입니다.
updater.extraArgs#
| 타입 | 기본값 |
|---|---|
list |
[] |
updater.extraArgs는 업데이터 바이너리에 전달할 추가 인수를
포함합니다.
updater.extraVolumes#
| 타입 | 기본값 |
|---|---|
list |
[] |
updater.extraVolumes는 업데이터 파드에 마운트할 추가 볼륨을 포함합니다.
자세한 내용은 Kubernetes 볼륨 문서를
참고하세요.
예를 들면 다음과 같습니다:
updater:
extraVolumes:
- name: myvolume
secret:
secretName: testSecret
updater.extraVolumeMounts#
| 타입 | 기본값 |
|---|---|
list |
[] |
updater.extraVolumeMounts는 업데이터를 위한 추가 볼륨 마운트를 포함합니다.
자세한 내용은 Kubernetes 볼륨 문서를
참고하세요.
예를 들면 다음과 같습니다:
updater:
extraVolumesMounts:
- name: myvolume
mountPath: /path/on/host
existingDataVolume#
| 타입 | 기본값 |
|---|---|
string |
"" |
existingDataVolume은 /var/lib/teleport에 마운트해야 하는 기존
Kubernetes Persistent Volume의 이름입니다.
이는 persistence가 활성화된 상태로 이전 에이전트를 실행한 적이 있고, 새 에이전트가 볼륨을 재사용하도록 하려는 경우에만 유용합니다.
podSecurityPolicy#
podSecurityPolicy.enabled#
| 타입 | 기본값 |
|---|---|
bool |
true |
podSecurityPolicy.enabled는 차트가 Kubernetes
PodSecurityPolicy를 배포할지 제어합니다.
기본적으로 Teleport 차트는 podSecurityPolicy를 설치하곤 했습니다.
PodSecurityPolicy 리소스(PSP)는 Kubernetes 1.25에서 제거되었으며 1.23부터 PodSecurityAdmission(PSA)으로 대체되었습니다. Kubernetes 1.23 이상에서 실행 중인 경우, PSP를 비활성화하고 PSA를 사용하는 것이 권장됩니다. 그 절차는 PSP 제거 가이드에 문서화되어 있습니다.
이 값은 향후 차트 버전에서 제거될 예정입니다.
labels#
| 타입 | 기본값 |
|---|---|
object |
{} |
labels는 Kubernetes 클러스터를 나타내는 Teleport 리소스에 적용될
키-값 쌍의 맵입니다. 이 레이블은 클러스터에 대한 접근 규칙을 정의하기 위해
Teleport의 RBAC 정책과 함께 사용할 수 있습니다.
이는 roles에 kube가 포함된 경우에만 사용됩니다.
이들은 Kubernetes 레이블이 아니라 Teleport 전용 RBAC 레이블입니다.
과거/하위 호환성 이유로, 이 레이블은 Teleport Kubernetes 서비스를 통해 조인되는 Kubernetes 클러스터에만 적용됩니다.
애플리케이션에 레이블을 설정하려면, apps 섹션에 labels 요소를 추가하세요.
데이터베이스에 레이블을 설정하려면, databases 섹션에 static_labels 요소를 추가하세요.
Teleport 서비스에 정적/동적 레이블을 설정하는 방법에 대한 자세한 내용은 노드 및 애플리케이션 레이블링을 참고하세요.
예를 들면 다음과 같습니다:
labels:
environment: production
region: us-east
highAvailability#
highAvailability는 차트가 배포하는 Teleport 에이전트의 가용성을 제어하는
설정을 포함합니다.
가용성은 다음을 통해 높일 수 있습니다:
replicaCount로 더 많은 레플리카를 실행requireAntiAffinity로 파드가 동일한 Kubernetes 노드에 스케줄링되지 않도록 요구podDisruptionBudget로 Kubernetes가 모든 파드를 동시에 삭제하지 않도록 요청
highAvailability 설정을 사용하더라도 파드를 재시작/롤아웃하면 kubectl exec나
데이터베이스 셸과 같이 확립된 장기 세션에 대한 중단이
여전히 발생할 수 있습니다.
highAvailability.replicaCount#
| 타입 | 기본값 |
|---|---|
int |
1 |
highAvailability.replicaCount는 차트가 배포하는 에이전트 레플리카의 수입니다.
여러 Teleport 파드가 배포되는 고가용성 모드를 위해서는 1보다 큰 수로 설정하세요.
대략적인 지침으로, 클러스터에 워커 노드가 있는 별개의 가용 영역마다 하나의 레플리카를 구성하는 것을 권장합니다.
더 작은 워크로드에는 2개의 레플리카/가용 영역이면 충분합니다. 트래픽이 더 많은 더 큰 클러스터에는 3~5개의 레플리카/가용 영역이 더 적합합니다.
기존 에이전트에 새 레플리카를 추가할 때는, 제공된 토큰
(authToken, joinParams, 또는 joinTokenSecret을 통해)이
여전히 유효한지 확인해야 합니다. 각 레플리카는 자체 아이덴티티를 가지며 첫 시작 시
Teleport 클러스터에 조인해야 합니다.
highAvailability.requireAntiAffinity#
| 타입 | 기본값 |
|---|---|
bool |
false |
highAvailability.requireAntiAffinity는 여러 Teleport 파드가 동일한 물리적
호스트에 스케줄링되지 않도록 요구하기 위해 Kubernetes의 requiredDuringSchedulingIgnoredDuringExecution을
구성합니다.
이는 매우 작은 클러스터나 노드 다운타임 동안 Teleport 파드가 스케줄링되지 못하게 할 수 있으므로, 주의해서 사용해야 합니다.
highAvailability.requireAntiAffinity를 false(기본값)로 설정하면
preferredDuringSchedulingIgnoredDuringExecution을 사용하여 노드
anti-affinity를 소프트 요구 사항으로 만듭니다.
이 설정은 highAvailability.replicaCount가 1보다 큰 경우에만 효과가 있습니다.
highAvailability.podDisruptionBudget#
highAvailability.podDisruptionBudget는 Kubernetes가 모든 에이전트 레플리카를
동시에 삭제하지 않도록 차트가 Kubernetes PodDisruptionBudget을 생성하고
구성하는 방식을 제어합니다.
highAvailability.podDisruptionBudget.enabled#
| 타입 | 기본값 |
|---|---|
bool |
false |
highAvailability.podDisruptionBudget.enabled는 차트가 에이전트 파드를 위한
Kubernetes PodDisruptionBudget을 생성하도록 합니다.
highAvailability.podDisruptionBudget.minAvailable#
| 타입 | 기본값 |
|---|---|
int |
1 |
highAvailability.podDisruptionBudget.minAvailable은 PodDisruptionBudget에
지정된 최소 사용 가능 파드 수입니다.
podMonitor#
podMonitor는 PodMonitor CR(monitoring.coreos.com/v1)을 제어합니다.
이 CRD는 prometheus-operator에 의해 관리되며 워크로드가
모니터링되도록 합니다. 이 값을 사용하려면, 이 값이 효과를 가지려면
클러스터에서 prometheus-operator를 실행해야 합니다.
https://prometheus-operator.dev/docs/getting-started/introduction/ 을 참고하세요.
podMonitor.enabled#
| 타입 | 기본값 |
|---|---|
bool |
false |
podMonitor.enabled는 차트가 PodMonitor를 배포할지 제어합니다.
PodMonitor CRD가 설치되어 있어야 하므로 기본적으로 비활성화되어 있습니다.
podMonitor.additionalLabels#
| 타입 | 기본값 |
|---|---|
object |
{} |
podMonitor.additionalLabels는 PodMonitor에 레이블을 추가합니다.
이는 특정 prometheus 인스턴스에 의해 선택되도록 하는 데 사용됩니다.
예를 들면 다음과 같습니다:
podMonitor:
additionalLabels:
prometheus: default
podMonitor.interval#
| 타입 | 기본값 |
|---|---|
string |
"30s" |
podMonitor.interval은 두 번의 메트릭 스크레이프 사이의 간격입니다.
storage#
storage는 에이전트가 Kubernetes Persistent Volume에 데이터를 저장하는 방식을 제어합니다.
Teleport 12부터, 에이전트는 재시작 후에도 아이덴티티를 유지하기 위해 PV 저장소가
필요하지 않습니다. 대신 Kubernetes Secret에 저장합니다. 이는 teleport-kubernetes-agent가
일회성 및 단기 조인 토큰을 사용할 수 있고, 재시작 후에도 아이덴티티와
시크릿을 유지함을 의미합니다.
저장소를 활성화하는 주된 이점은, Teleport 세션 녹화 모드가 동기식이 아닌 경우 파드 종료 후에도 아직 업로드되지 않은 세션 녹화를 유지하는 것입니다.
storage.enabled#
| 타입 | 기본값 |
|---|---|
bool |
false |
storage.enabled는 Teleport 인스턴스 상태를 보관하기 위한 Kubernetes
persistent volume 생성을 활성화합니다.
storage.storageClassName#
| 타입 | 기본값 |
|---|---|
string |
"" |
storage.storageClassName은 차트가 Persistent Volume Claim을 생성할 때
사용하는 Kubernetes StorageClass를 제어합니다. 제공된 이름의 StorageClass가
Kubernetes 클러스터에 존재해야 합니다.
storage.requests#
| 타입 | 기본값 |
|---|---|
string |
"128Mi" |
storage.requests는 생성할 persistent volume의 크기입니다.
adminClusterRoleBinding#
adminClusterRoleBinding은 선택적으로 클러스터 관리자 역할 바인딩을 생성합니다.
이는 기본 system:masters 그룹이 아닌 다른 Kubernetes 그룹에 클러스터 관리자
권한을 부여하는 데 유용합니다.
GKE Autopilot 클러스터는 임퍼소네이션에 system:masters 그룹을 사용하는 것을 금지하며
대신 사용자 지정 그룹을 사용하도록 요구합니다.
adminClusterRoleBinding.create#
| 타입 | 기본값 |
|---|---|
bool |
false |
adminClusterRoleBinding.create는 차트가 추가 관리자 클러스터 역할 바인딩을
생성할지 제어합니다.
adminClusterRoleBinding.name#
| 타입 | 기본값 |
|---|---|
string |
"cluster-admin" |
adminClusterRoleBinding.name은 생성된 관리자 클러스터 역할 바인딩의
이름입니다.
image#
| 타입 | 기본값 |
|---|---|
string |
"public.ecr.aws/gravitational/teleport-distroless" |
image는 차트가 생성하는 Teleport Community Edition
에이전트 파드에 사용되는 컨테이너 이미지를 설정합니다.
Teleport에서 게시한 이미지 대신 자체 Teleport 이미지를 사용하도록 이를 재정의할 수 있습니다.
Teleport Kube Agent Updater를 사용할 때는, 업데이터 버전 대상이 업데이트되고 Kubernetes가 이미지를 풀하려고 시도하기 전에 이미지를 사용할 수 있는지 확인해야 합니다.
이러한 이유로, 자동 업데이트를 사용할 때 사용자 지정 이미지를 설정하는 것은 강력히 권장되지 않습니다. Teleport Cloud는 기본적으로 자동 업데이트를 사용합니다.
기본적으로 이미지에는 Teleport 애플리케이션과 그 런타임
종속성만 포함되며, 셸은 포함되지 않습니다.
이 설정은 enterprise가 false인 경우에만 효과가 있습니다.
엔터프라이즈 버전을 실행할 때는
대신 enterpriseImage를 사용해야 합니다.
enterpriseImage#
| 타입 | 기본값 |
|---|---|
string |
"public.ecr.aws/gravitational/teleport-ent-distroless" |
enterpriseImage는 차트가 생성하는 Teleport Enterprise
에이전트 파드에 사용되는 컨테이너 이미지를 설정합니다.
Teleport에서 게시한 이미지 대신 자체 Teleport 이미지를 사용하도록 이를 재정의할 수 있습니다.
Teleport Kube Agent Updater를 사용할 때는, 업데이터 버전 대상이 업데이트되고 Kubernetes가 이미지를 풀하려고 시도하기 전에 이미지를 사용할 수 있는지 확인해야 합니다.
이러한 이유로, 자동 업데이트를 사용할 때 사용자 지정 이미지를 설정하는 것은 강력히 권장되지 않습니다. Teleport Cloud는 기본적으로 자동 업데이트를 사용합니다.
기본적으로 이미지에는 Teleport 애플리케이션과 그 런타임
종속성만 포함되며, 셸은 포함되지 않습니다.
이 설정은 enterprise가 true인 경우에만 효과가 있습니다.
OSS 버전을 실행할 때는 대신 image를 사용해야 합니다.
imagePullSecrets#
| 타입 | 기본값 |
|---|---|
list |
[] |
imagePullSecrets는 프라이빗 Docker 레지스트리에 접근하는 데 선택적으로
사용할 수 있는 인증 토큰을 포함하는 시크릿의 목록입니다.
자세한 내용은 Kubernetes 레퍼런스를 참고하세요.
clusterRoleName#
| 타입 | 기본값 |
|---|---|
string |
"" |
clusterRoleName은 에이전트의 ServiceAccount가 사용하는
Kubernetes ClusterRole의 이름을 재정의하는 데 선택적으로 사용할 수 있습니다.
대부분의 사용자는 이를 변경할 필요가 없습니다.
clusterRoleBindingName#
| 타입 | 기본값 |
|---|---|
string |
"" |
clusterRoleBindingName은 에이전트의 ServiceAccount가 사용하는
Kubernetes ClusterRoleBinding의 이름을 재정의하는 데 선택적으로 사용할 수 있습니다.
대부분의 사용자는 이를 변경할 필요가 없습니다.
roleName#
| 타입 | 기본값 |
|---|---|
string |
"" |
roleName은 teleport-kube-agent 차트가 Teleport 파드를 위해 생성하는
Role 리소스의 사용자 지정 이름을 제공합니다. 기본적으로 Role은
Helm 릴리스의 이름을 갖습니다.
teleport-kube-agent 릴리스와 동일한 이름을 가진 Role 리소스가
teleport-kube-agent 리소스의 네임스페이스에 있는 경우 이 값을 설정해야
합니다.
roleBindingName#
| 타입 | 기본값 |
|---|---|
string |
"" |
roleBindingName은 teleport-kube-agent 차트가 Teleport 파드를 위해 생성하는
RoleBinding 리소스의 사용자 지정 이름을 제공합니다. 기본적으로
RoleBinding은 Helm 릴리스의 이름을 갖습니다.
teleport-kube-agent 릴리스와 동일한 이름을 가진 RoleBinding 리소스가
teleport-kube-agent 리소스의 네임스페이스에 있는 경우 이 값을 설정해야
합니다.
serviceAccountName#
| 타입 | 기본값 |
|---|---|
string |
"" |
serviceAccountName은 더 이상 사용되지 않으며 향후
버전에서 제거될 예정입니다. 대신 serviceAccount.name을 사용하세요.
serviceAccount#
serviceAccount는 차트가 배포하고 사용하는 Kubernetes ServiceAccount를
제어합니다.
serviceAccount.create#
| 타입 | 기본값 |
|---|---|
bool |
true |
serviceAccount.create는 Helm 차트가 에이전트 및 선택적으로 업데이터를 위한
Kubernetes ServiceAccount 리소스를 생성할지 제어합니다.
꺼진 경우, 적절한 ServiceAccount 리소스를 생성하는 것은 사용자의
책임입니다.
serviceAccount.name#
| 타입 | 기본값 |
|---|---|
string |
"" |
serviceAccount.name은 차트가 사용하는 ServiceAccount 리소스의
이름을 설정합니다. 기본적으로 ServiceAccount는 Helm 릴리스의
이름을 갖습니다.
rbac#
rbac.create#
| 타입 | 기본값 |
|---|---|
bool |
true |
rbac.create는 차트가 RBAC Kubernetes 리소스를 생성할지 제어합니다.
true인 경우, 차트는 에이전트를 위한ClusterRole과ClusterRoleBinding리소스를 모두 생성하며, 업데이터가 활성화된 경우 이를 위한Role/RoleBinding을 생성합니다.false인 경우, 차트는Role과RoleBinding리소스를 생성하지 않습니다. 사용자가 이를 별도로 배포하고 유지 관리할 책임이 있습니다.
이 값은 오퍼레이터를 배포하는 사용자가 RBAC 리소스를 편집할 수 없는
제약된 환경에 배포할 때 false로 설정할 수 있습니다.
joinTokenSecret#
joinTokenSecret는 조인 토큰 시크릿의 생성과 그 이름을 관리합니다.
자세한 내용은 joinParams 섹션을 참고하세요.
joinTokenSecret.create#
| 타입 | 기본값 |
|---|---|
bool |
true |
joinTokenSecret.create는 차트가 Teleport 조인 토큰을 포함하는
Kubernetes Secret을 생성할지 제어합니다.
false인 경우, Helm 릴리스 네임스페이스에 구성된 이름으로 Kubernetes Secret을
생성해야 합니다.
joinTokenSecret.name#
| 타입 | 기본값 |
|---|---|
string |
"teleport-kube-agent-join-token" |
joinTokenSecret.name은 차트가 사용하는 Teleport 조인 토큰을
포함하는 Kubernetes Secret의 이름입니다.
joinTokenSecret.create가 false인 경우, 차트는 시크릿을 직접 생성하려고 시도하지 않습니다.
대신 기존 시크릿에서 값을 읽습니다. joinTokenSecret.name은
이 시크릿의 이름을 구성합니다. 이를 통해 이 시크릿을 외부에서 구성하고 Teleport 차트 값에 평문으로
조인 토큰이 저장되는 것을 방지할 수 있습니다.
자체 조인 토큰 시크릿을 생성하려면, 다음과 같은 명령을 사용할 수 있습니다:
$ kubectl --namespace teleport create secret generic my-token-secret --from-literal=auth-token=<replace-with-actual-token>
시크릿 내부에서 인증 토큰에 사용되는 키는 위 명령에서와 같이 auth-token이어야 합니다.
예를 들면 다음과 같습니다:
joinTokenSecret:
create: false
name: my-token-secret
joinParams:
method: "token"
tokenName: ""
log#
log는 에이전트 로깅을 제어합니다.
log.level#
| 타입 | 기본값 |
|---|---|
string |
"INFO" |
log.level은 Teleport 프로세스의 로그 레벨입니다.
사용 가능한 로그 레벨은 DEBUG, INFO, WARNING, ERROR입니다.
기본값은 INFO이며, 프로덕션에서 권장됩니다.
DEBUG는 최초 설정 시 또는 디버깅을 위해 더 상세한 로그를 보는 데 유용합니다.
log.output#
| 타입 | 기본값 |
|---|---|
string |
"stderr" |
log.output은 Teleport 프로세스의 출력 대상을 설정합니다.
이는 해당 대상을 사용하기 위해 내장 값인 stdout, stderr 또는 syslog 중
어느 것으로도 설정할 수 있습니다.
이 값은 로그를 파일에 쓰기 위해 파일 경로(예: /var/log/teleport.log)로도
설정할 수 있습니다. 복원력을 위해 몇 가지 서비스 시작 메시지는
여전히 stderr로 전달된다는 점에 유의하세요.
log.format#
| 타입 | 기본값 |
|---|---|
string |
"text" |
log.format은 Teleport 프로세스의 로그 출력 형식을 설정합니다.
가능한 값은 text(기본값) 또는 json입니다.
log.extraFields#
| 타입 | 기본값 |
|---|---|
list |
["timestamp","level","component","caller"] |
log.extraFields는 Teleport 프로세스의 로깅에 사용되는 필드를 설정합니다.
extra_fields에 가능한 값에 대한 자세한 내용은 Teleport 구성 파일 레퍼런스를
참고하세요.
affinity#
| 타입 | 기본값 |
|---|---|
object |
{} |
affinity는 차트가 생성하는 모든 파드의 affinity를 설정합니다.
자세한 내용은 Kubernetes 문서를
참고하세요.
disableTopologySpreadConstraints#
| 타입 | 기본값 |
|---|---|
bool |
false |
disableTopologySpreadConstraints는 topology spread constraint를 끕니다.
이 기능은 1.18 미만의 Kubernetes 버전에서는 자동으로 꺼집니다.
topologySpreadConstraints#
| 타입 | 기본값 |
|---|---|
list |
[] |
topologySpreadConstraints는 차트가 생성하는 모든 파드의 topology spread constraint를 설정합니다.
자세한 내용은 Kubernetes 문서를
참고하세요.
설정되지 않은 경우, 차트는 파드를 호스트와 영역 전반에 분산하려고 시도하는 소프트 topology spread constraint로 기본 설정됩니다.
topologySpreadConstraints:
- maxSkew: 1
topologyKey: kubernetes.io/hostname
whenUnsatisfiable: ScheduleAnyway
labelSelector:
matchLabels: # dynamically computed
- maxSkew: 1
topologyKey: topology.kubernetes.io/zone
whenUnsatisfiable: ScheduleAnyway
labelSelector:
matchLabels: # dynamically computed
dnsConfig#
| 타입 | 기본값 |
|---|---|
object |
{} |
dnsConfig는 에이전트 파드를 위한 사용자 지정 Pod DNS Configuration을 포함합니다.
이 값은 DNS 부하를 줄여야 하는 경우에 유용합니다. "ndots"를 0으로 설정하고
FQDN만 사용하여 애플리케이션과 데이터베이스를 참조합니다.
자세한 내용은 Kubernetes pod DNS 문서 를 참고하세요.
예를 들면 다음과 같습니다:
nameservers:
- 1.2.3.4
searches:
- ns1.svc.cluster-domain.example
- my.dns.search.suffix
options:
- name: ndots
value: "2"
dnsPolicy#
| 타입 | 기본값 |
|---|---|
string |
"" |
dnsPolicy는 파드의 DNS Policy를 설정합니다.
자세한 내용은 Kubernetes pod DNS 문서 를 참고하세요.
nodeSelector#
| 타입 | 기본값 |
|---|---|
object |
{} |
nodeSelector는 차트가 생성하는 모든 파드의 노드 셀렉터를 설정합니다.
자세한 내용은 Kubernetes 문서를
참고하세요.
extraLabels#
extraLabels는 차트가 생성하는 리소스에 적용할 추가 Kubernetes 레이블을
포함합니다.
자세한 내용은 Kubernetes 레이블 문서
를
참고하세요.
extraLabels.clusterRole#
| 타입 | 기본값 |
|---|---|
object |
{} |
extraLabels.clusterRole은 ClusterRole에 설정할 레이블입니다.
extraLabels.clusterRoleBinding#
| 타입 | 기본값 |
|---|---|
object |
{} |
extraLabels.clusterRoleBinding은 ClusterRoleBinding에 설정할 레이블입니다.
extraLabels.role#
| 타입 | 기본값 |
|---|---|
object |
{} |
extraLabels.role은 Role에 설정할 레이블입니다.
extraLabels.roleBinding#
| 타입 | 기본값 |
|---|---|
object |
{} |
extraLabels.roleBinding은 RoleBinding에 설정할 레이블입니다.
extraLabels.config#
| 타입 | 기본값 |
|---|---|
object |
{} |
extraLabels.config는 ConfigMap에 설정할 레이블입니다.
extraLabels.deployment#
| 타입 | 기본값 |
|---|---|
object |
{} |
extraLabels.deployment는 Deployment 또는 StatefulSet에 설정할 레이블입니다.
extraLabels.job#
| 타입 | 기본값 |
|---|---|
object |
{} |
extraLabels.job은 차트가 생성하는 post-delete Job에 설정할 레이블입니다.
extraLabels.pod#
| 타입 | 기본값 |
|---|---|
object |
{} |
extraLabels.pod는 Deployment, StatefulSet 또는 Job이 생성하는
Pod에 설정할 레이블입니다.
extraLabels.podDisruptionBudget#
| 타입 | 기본값 |
|---|---|
object |
{} |
extraLabels.podDisruptionBudget은 podDisruptionBudget에 설정할 레이블입니다.
extraLabels.podSecurityPolicy#
| 타입 | 기본값 |
|---|---|
object |
{} |
extraLabels.podSecurityPolicy는 podSecurityPolicy에 설정할 레이블입니다.
extraLabels.secret#
| 타입 | 기본값 |
|---|---|
object |
{} |
extraLabels.secret은 Secret에 설정할 레이블입니다.
extraLabels.serviceAccount#
| 타입 | 기본값 |
|---|---|
object |
{} |
extraLabels.serviceAccount는 ServiceAccount에 설정할 레이블입니다.
annotations#
annotations는 차트가 생성하는 다양한 Kubernetes 객체에 적용할 애노테이션을
포함합니다. 자세한 내용은 Kubernetes 애노테이션
문서를
참고하세요.
annotations.config#
| 타입 | 기본값 |
|---|---|
object |
{} |
annotations.config는 차트가 생성하는 ConfigMap 리소스에
적용되는 Kubernetes 애노테이션을 포함합니다.
annotations.deployment#
| 타입 | 기본값 |
|---|---|
object |
{} |
annotations.deployment는 차트가 생성하는 Deployment 또는 StatefulSet
리소스에 적용되는 Kubernetes 애노테이션을 포함합니다.
annotations.pod#
| 타입 | 기본값 |
|---|---|
object |
{} |
annotations.pod는 차트가 생성하는 Pod 리소스에
적용되는 Kubernetes 애노테이션을 포함합니다.
annotations.secret#
| 타입 | 기본값 |
|---|---|
object |
{} |
annotations.secret은 차트가 생성하는 Secret 리소스에
적용되는 Kubernetes 애노테이션을 포함합니다.
joinTokenSecret.create가 false인 경우 효과가 없습니다.
annotations.serviceAccount#
| 타입 | 기본값 |
|---|---|
object |
{} |
annotations.serviceAccount는 차트가 생성하는 ServiceAccount 리소스에
적용되는 Kubernetes 애노테이션을 포함합니다.
extraArgs#
| 타입 | 기본값 |
|---|---|
list |
[] |
extraArgs는 메인 Teleport 파드의 teleport start에 전달할 추가 인수를
포함합니다.
extraEnv#
| 타입 | 기본값 |
|---|---|
list |
[] |
extraEnv는 메인 Teleport 파드에 설정할 추가 환경 변수를
포함합니다.
예를 들면 다음과 같습니다:
extraEnv:
- name: HTTPS_PROXY
value: "http://username:password@my.proxy.host:3128"
extraContainers#
| 타입 | 기본값 |
|---|---|
list |
[] |
extraContainers는 메인 Teleport 파드에 추가할 추가 컨테이너를
포함합니다.
예를 들면 다음과 같습니다:
extraContainers:
- name: debug-sidecar
command:
- busybox
- sh
- -c
- "echo waiting && sleep infinity"
image: busybox:latest
imagePullPolicy: IfNotPresent
securityContext:
privileged: true
runAsNonRoot: false
extraVolumes#
| 타입 | 기본값 |
|---|---|
list |
[] |
extraVolumes는 Teleport 파드에 마운트할 추가 볼륨을 포함합니다.
자세한 내용은 Kubernetes 볼륨 문서를
참고하세요.
예를 들면 다음과 같습니다:
extraVolumes:
- name: myvolume
secret:
secretName: testSecret
extraVolumeMounts#
| 타입 | 기본값 |
|---|---|
list |
[] |
extraVolumeMounts는 메인 Teleport 컨테이너를 위한 추가 볼륨 마운트를 포함합니다.
자세한 내용은 Kubernetes 볼륨 문서를
참고하세요.
예를 들면 다음과 같습니다:
extraVolumesMounts:
- name: myvolume
mountPath: /path/on/host
hostAliases#
hostAliases는 Teleport 파드에 호스트 별칭을 설정합니다.
자세한 내용은 Kubernetes hosts 파일 문서를
참고하세요.
예를 들면 다음과 같습니다:
hostAliases:
- ip: "127.0.0.1"
hostnames:
- "foo.local"
- "bar.local"
- ip: "10.1.2.3"
hostnames:
- "foo.remote"
- "bar.remote"
imagePullPolicy#
| 타입 | 기본값 |
|---|---|
string |
"IfNotPresent" |
imagePullPolicy는 차트가 생성하는 모든 파드의 풀 정책을 설정합니다.
자세한 내용은 Kubernetes 문서를
참고하세요.
initContainers#
| 타입 | 기본값 |
|---|---|
list |
[] |
initContainers는 Teleport 파드의 init-container를 설정합니다.
자세한 내용은 Kubernetes init-container 문서를
참고하세요.
예를 들면 다음과 같습니다:
initContainers:
- name: "teleport-init"
image: "alpine"
args: ["echo test"]
resources#
| 타입 | 기본값 |
|---|---|
object |
{} |
resources는 차트가 생성하는 모든 파드의 리소스 요청/제한을 설정합니다.
자세한 내용은 Kubernetes 문서를
참고하세요.
goMemLimitRatio#
| 타입 | 기본값 |
|---|---|
float |
0.9 |
goMemLimitRatio는 차트가 설정하는 GOMEMLIMIT 환경 변수를 구성합니다.
GOMEMLIMIT은 go 가비지 컬렉터가 할당된 메모리를 주어진 임계값 아래로
유지하도록 지시합니다. 이는 최선의 노력에 의한 시도이지만, 버스트 시
OOM을 방지하는 데 도움이 됩니다.
메모리 제한이 설정되고 goMemLimitRatio가 0이 아닌 경우,
차트는 GOMEMLIMIT을 resources.memory.limits * goMemLimitRatio로 설정합니다.
값은 0과 1 사이여야 합니다.
GOMEMLIMIT을 설정 해제하려면 0으로 설정하세요.
GOMEMLIMIT이 extraEnv를 통해 이미 설정된 경우 효과가 없습니다.
initSecurityContext#
| 타입 | 기본값 |
|---|---|
object |
{"allowPrivilegeEscalation":false,"capabilities":{"drop":["ALL"]},"readOnlyRootFilesystem":true,"runAsNonRoot":true,"runAsUser":9807,"seccompProfile":{"type":"RuntimeDefault"}} |
initSecurityContext는 차트가 생성하는 모든 파드의 init 컨테이너 보안
컨텍스트를 설정합니다.
자세한 내용은 Kubernetes 문서를
참고하세요.
기본값은 restricted PSS와 호환됩니다.
보안 컨텍스트를 설정 해제하려면 null 또는 ~로 설정하세요.
securityContext#
| 타입 | 기본값 |
|---|---|
object |
{"allowPrivilegeEscalation":false,"capabilities":{"drop":["ALL"]},"readOnlyRootFilesystem":true,"runAsNonRoot":true,"runAsUser":9807,"seccompProfile":{"type":"RuntimeDefault"}} |
securityContext는 차트가 생성하는 모든 파드의 컨테이너 보안 컨텍스트를 설정합니다.
자세한 내용은 Kubernetes 문서를
참고하세요.
기본값은 restricted PSS와 호환됩니다.
보안 컨텍스트를 설정 해제하려면 null 또는 ~로 설정하세요.
podSecurityContext#
| 타입 | 기본값 |
|---|---|
object |
{"fsGroup":9807} |
podSecurityContext는 차트가 생성하는 모든 파드의 파드 보안 컨텍스트를 설정합니다.
자세한 내용은 Kubernetes 문서를
참고하세요.
보안 컨텍스트를 설정 해제하려면 null 또는 ~로 설정하세요.
priorityClassName#
| 타입 | 기본값 |
|---|---|
string |
"" |
priorityClassName은 차트가 생성하는 모든 파드가 사용하는 priority class를 설정합니다.
차트를 배포하기 전에 PriorityClass 리소스를 생성하는 것은 사용자의 책임입니다.
자세한 내용은 Kubernetes 문서를
참고하세요.
tolerations#
| 타입 | 기본값 |
|---|---|
list |
[] |
tolerations는 차트가 생성하는 모든 파드의 toleration을 설정합니다.
자세한 내용은 Kubernetes 문서를
참고하세요.
probeTimeoutSeconds#
| 타입 | 기본값 |
|---|---|
int |
1 |
probeTimeoutSeconds는 readiness 및 liveness 프로브의 타임아웃을 설정합니다.
https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/