InfoGrab Docs

Helm을 사용하여 사용자 정의 구성으로 Teleport 실행

요약

이 가이드에서는 Teleport Helm 차트를 사용하여 사용자 정의 teleport.yaml 구성 파일 요소로 Kubernetes에 Teleport 클러스터를 설정하는 방법을 설명합니다. 이 설정은 기존 Teleport 클러스터가 있고 Kubernetes에서 실행하거나, 레거시 버전의 Helm 차트에서 설정을 마이그레이션하려는 경우에 유용합니다.

이 가이드에서는 Teleport Helm 차트를 사용하여 사용자 정의 teleport.yaml 구성 파일 요소로 Kubernetes에 Teleport 클러스터를 설정하는 방법을 설명합니다.

이 설정은 기존 Teleport 클러스터가 있고 Kubernetes에서 실행하거나, 레거시 버전의 Helm 차트에서 설정을 마이그레이션하려는 경우에 유용합니다.

이미 다른 플랫폼에서 Teleport를 실행 중인 경우, 기존 Teleport 배포를 사용하여 Kubernetes 클러스터에 접근할 수 있습니다. 가이드를 따라 Kubernetes 클러스터를 Teleport에 연결하세요.

작동 방식#

teleport-cluster Helm 차트는 Teleport Auth Service와 Proxy Service를 배포합니다. 차트의 values 파일을 수정하여 각 서비스에 대한 사용자 정의 구성을 포함할 수 있습니다. Helm 차트는 Auth Service 및 Proxy Service 구성을 각각의 파드에 적용하며, 각 구성을 ConfigMap으로 로드합니다. 차트는 사용자 정의 구성에 포함되지 않은 모든 필드에 대해 Teleport 권장 기본값을 적용합니다.

사전 요구사항#

1단계/3. Teleport Helm 차트 리포지토리 추가#

2단계/3. 사용자 정의 구성으로 Helm을 사용하여 Teleport 클러스터 설정#

teleport-cluster는 두 세트의 파드를 배포합니다: Proxy Service용과 Auth Service용. 각 파드 유형에 대해 두 개의 구성을 제공할 수 있습니다.

  • 차트 values의 proxy 섹션에 설정된 모든 값은 Proxy Service 파드에만 적용됩니다. proxy.teleportConfig에 사용자 정의 YAML을 제공하여 기본 Teleport Proxy Service 구성의 요소를 재정의할 수 있습니다.
  • 차트 values의 auth 섹션에 설정된 모든 값은 Auth Service 파드에만 적용됩니다. auth.teleportConfig에 사용자 정의 YAML을 제공하여 기본 Teleport Auth Service 구성의 요소를 재정의할 수 있습니다.

teleportConfig 섹션에 제공하는 모든 YAML은 차트의 기본 YAML 구성과 병합되며, 사용자 정의 값이 우선합니다. 이를 통해 다른 모든 항목에 대해 Teleport 권장 차트 기본값을 유지하면서 정확히 필요한 동작만 재정의할 수 있습니다.

또한 많은 유용한 Teleport 기능은 사용자 정의 YAML이 아닌 차트 값으로 이미 구성할 수 있습니다. 예를 들어 publicAddr을 설정하는 것은 proxy.teleportConfig.proxy_service.public_addr을 설정하는 것과 동일합니다.

경고

scratch 또는 standalone 모드를 사용할 때 여러 복제본을 지원하려면 반드시 고가용성 스토리지(예: etcd, DynamoDB, 또는 Firestore)를 사용해야 합니다.

지원되는 Teleport 스토리지 백엔드 정보

NFS 기반 스토리지 또는 ReadWriteMany 볼륨 클레임의 수동 구성은 HA 배포에서 지원되지 않으며 오류가 발생합니다.

다음 my-values.yaml 파일을 작성하고 필요에 따라 teleport 구성을 조정합니다. 가능한 모든 구성 필드는 Teleport 구성 참조에서 찾을 수 있습니다.

chartMode: standalone
clusterName: teleport.example.com

auth:
  teleportConfig:
    # put any teleport.yaml auth configuration overrides here
    teleport:
      log:
        output: stderr
        severity: DEBUG

    auth_service:
      enabled: true
      web_idle_timeout: 1h
      authentication:
        locking_mode: best_effort

proxy:
  teleportConfig:
    # put any teleport.yaml proxy configuration overrides here
    teleport:
      log:
        output: stderr
        severity: DEBUG

    proxy_service:
      https_keypairs_reload_interval: 12h
      # optionally override the public addresses for the cluster
      # public_addr: custom.example.com:443
      # tunnel_public_addr: custom.example.com:3024

# If you are running Kubernetes 1.23 or above, disable PodSecurityPolicies
podSecurityPolicy:
  enabled: false

# OPTIONAL - when using highly-available storage for both backend AND session recordings
# you can disable disk persistence and replicate auth pods.
#
# persistence:
#   enabled: false
# highAvailability:
#   replicaCount: 2

Helm 구성에서 publicAddr 값을 사용하거나 proxy.teleportConfig.proxy_service.public_addr을 설정하여 클러스터의 외부에서 보이는 이름을 재정의할 수 있습니다. 하지만 이 예에서는 publicAddr이 구성된 clusterName을 기반으로 teleport.example.com:443으로 자동 설정됩니다.

Teleport 관련 리소스를 포함하는 네임스페이스를 생성하고 PodSecurityAdmission을 구성합니다:

$ kubectl create namespace teleport
namespace/teleport created
$ kubectl label namespace teleport 'pod-security.kubernetes.io/enforce=baseline'
namespace/teleport labeled

자체 호스팅 Teleport Enterprise 클러스터를 실행 중인 경우, Teleport를 설치하기 전에 Teleport 라이선스 정보가 포함된 시크릿을 생성해야 합니다.

  1. 라이선스 파일을 획득합니다.
  2. 라이선스 파일에서 시크릿을 생성합니다. 파일 이름이 license.pem인 한 Teleport가 자동으로 이 시크릿을 검색합니다.
$ kubectl -n teleport create secret generic license --from-file=license.pem

참고: 외부 프록시 포트

proxy_service가 파드 내부에서 포트 3080에서 수신 대기하지만, 차트에서 구성한 기본 LoadBalancer 서비스는 항상 외부에서 포트 443(내부적으로 포트 3080으로 리디렉션됨)에서 수신 대기합니다.

이 때문에 proxy_service.public_addr은 항상 :443으로 끝나야 합니다:

proxy_service:
  web_listen_addr: 0.0.0.0:3080
  public_addr: custom.example.com:443

이제 다음 명령으로 클러스터에 Teleport를 배포할 수 있습니다:

오픈 소스:

$ helm install teleport teleport/teleport-cluster \
  --namespace teleport \
  --values my-values.yaml

Enterprise:

$ helm install teleport teleport/teleport-cluster \
  --namespace teleport \
  --set enterprise=true \
  --values my-values.yaml

차트가 설치되면 kubectl 명령을 사용하여 배포를 볼 수 있습니다:

$ kubectl --namespace teleport get all

NAME                                 READY   STATUS    RESTARTS   AGE
pod/teleport-auth-57989d4cbd-rtrzn   1/1     Running   0          22h
pod/teleport-proxy-c6bf55cfc-w96d2   1/1     Running   0          22h
pod/teleport-proxy-c6bf55cfc-z256w   1/1     Running   0          22h

NAME                        TYPE           CLUSTER-IP     EXTERNAL-IP     PORT(S)                                                                     AGE
service/teleport            LoadBalancer   10.40.11.180   34.138.177.11   443:30258/TCP,3023:31802/TCP,3026:32182/TCP,3024:30101/TCP,3036:30302/TCP   22h
service/teleport-auth       ClusterIP      10.40.8.251    <none>          3025/TCP,3026/TCP                                                           22h
service/teleport-auth-v11   ClusterIP      None           <none>          <none>                                                                      22h
service/teleport-auth-v12   ClusterIP      None           <none>          <none>                                                                      22h

NAME                             READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/teleport-auth    1/1     1            1           22h
deployment.apps/teleport-proxy   2/2     2            2           22h

NAME                                       DESIRED   CURRENT   READY   AGE
replicaset.apps/teleport-auth-57989d4cbd   1         1         1       22h
replicaset.apps/teleport-proxy-c6bf55cfc   2         2         2       22h

3단계/3. Teleport 사용자 생성 (선택 사항)#

기존 Teleport 클러스터를 마이그레이션하는 것이 아니라면 Teleport에 로그인할 수 있는 사용자를 생성해야 합니다. 이 작업은 Teleport Auth Service에서 수행해야 하므로 kubectl을 사용하여 명령을 실행할 수 있습니다:

Teleport Community Edition:

$ kubectl --namespace teleport exec deployment/teleport-auth -- tctl users add test --roles=access,editor

User "test" has been created but requires a password. Share this URL with the user to complete user setup, link is valid for 1h:
https://teleport.example.com:443/web/invite/91cfbd08bc89122275006e48b516cc68

NOTE: Make sure teleport.example.com:443 points at a Teleport proxy that users can access.

Commercial:

$ kubectl --namespace teleport exec deployment/teleport-auth -- tctl users add test --roles=access,editor,reviewer

User "test" has been created but requires a password. Share this URL with the user to complete user setup, link is valid for 1h:
https://teleport.example.com:443/web/invite/91cfbd08bc89122275006e48b516cc68

NOTE: Make sure teleport.example.com:443 points at a Teleport proxy that users can access.

참고

이전에 호스트 이름에 대한 DNS를 설정하지 않은 경우, teleport.example.com을 Kubernetes 로드 밸런서의 외부 IP 또는 호스트 이름으로 교체해야 합니다.

사용 가능한 것에 따라 IP 또는 호스트 이름으로 교체하여 명령을 적절히 수정해야 합니다. 페이지를 성공적으로 보려면 브라우저에서 안전하지 않은 경고를 수락해야 할 수 있습니다.

경고

Kubernetes가 발급한 로드 밸런서 IP 또는 호스트 이름은 테스트에는 적합하지만 프로덕션 Teleport 클러스터를 실행할 때는 적합하지 않습니다. 공개된 인증서의 Subject Alternative Name이 클러스터의 구성된 공개 주소(구성에서 public_addr로 지정)와 일치해야 하기 때문입니다.

프로덕션 워크로드에는 위에서 설명한 방법을 사용하여 DNS를 올바르게 구성해야 합니다.

웹 UI를 통해 사용자 생성 링크를 로드하여 비밀번호를 만들고 Teleport 사용자에 대한 다단계 인증을 설정합니다.

Helm 차트 제거#

teleport-cluster 차트를 제거하려면 helm uninstall <release-name>을 사용합니다. 예:

$ helm --namespace teleport uninstall teleport

참고

chartMode를 변경하려면 먼저 기존 차트를 제거한 다음 적절한 값으로 새 버전을 설치해야 합니다.

다음 단계#

Teleport 클러스터를 배포했으므로 접근 관리 섹션을 읽고 사용자 등록 및 RBAC 설정을 시작합니다.

teleport-cluster Helm 차트에 대한 values 파일에서 설정할 수 있는 모든 옵션을 보려면 참조 가이드를 참조하세요.

Helm을 사용하여 사용자 정의 구성으로 Teleport 실행

원문 보기
요약

이 가이드에서는 Teleport Helm 차트를 사용하여 사용자 정의 teleport.yaml 구성 파일 요소로 Kubernetes에 Teleport 클러스터를 설정하는 방법을 설명합니다. 이 설정은 기존 Teleport 클러스터가 있고 Kubernetes에서 실행하거나, 레거시 버전의 Helm 차트에서 설정을 마이그레이션하려는 경우에 유용합니다.

이 가이드에서는 Teleport Helm 차트를 사용하여 사용자 정의 teleport.yaml 구성 파일 요소로 Kubernetes에 Teleport 클러스터를 설정하는 방법을 설명합니다.

이 설정은 기존 Teleport 클러스터가 있고 Kubernetes에서 실행하거나, 레거시 버전의 Helm 차트에서 설정을 마이그레이션하려는 경우에 유용합니다.

이미 다른 플랫폼에서 Teleport를 실행 중인 경우, 기존 Teleport 배포를 사용하여 Kubernetes 클러스터에 접근할 수 있습니다. 가이드를 따라 Kubernetes 클러스터를 Teleport에 연결하세요.

작동 방식#

teleport-cluster Helm 차트는 Teleport Auth Service와 Proxy Service를 배포합니다. 차트의 values 파일을 수정하여 각 서비스에 대한 사용자 정의 구성을 포함할 수 있습니다. Helm 차트는 Auth Service 및 Proxy Service 구성을 각각의 파드에 적용하며, 각 구성을 ConfigMap으로 로드합니다. 차트는 사용자 정의 구성에 포함되지 않은 모든 필드에 대해 Teleport 권장 기본값을 적용합니다.

사전 요구사항#

1단계/3. Teleport Helm 차트 리포지토리 추가#

2단계/3. 사용자 정의 구성으로 Helm을 사용하여 Teleport 클러스터 설정#

teleport-cluster는 두 세트의 파드를 배포합니다: Proxy Service용과 Auth Service용. 각 파드 유형에 대해 두 개의 구성을 제공할 수 있습니다.

  • 차트 values의 proxy 섹션에 설정된 모든 값은 Proxy Service 파드에만 적용됩니다. proxy.teleportConfig에 사용자 정의 YAML을 제공하여 기본 Teleport Proxy Service 구성의 요소를 재정의할 수 있습니다.
  • 차트 values의 auth 섹션에 설정된 모든 값은 Auth Service 파드에만 적용됩니다. auth.teleportConfig에 사용자 정의 YAML을 제공하여 기본 Teleport Auth Service 구성의 요소를 재정의할 수 있습니다.

teleportConfig 섹션에 제공하는 모든 YAML은 차트의 기본 YAML 구성과 병합되며, 사용자 정의 값이 우선합니다. 이를 통해 다른 모든 항목에 대해 Teleport 권장 차트 기본값을 유지하면서 정확히 필요한 동작만 재정의할 수 있습니다.

또한 많은 유용한 Teleport 기능은 사용자 정의 YAML이 아닌 차트 값으로 이미 구성할 수 있습니다. 예를 들어 publicAddr을 설정하는 것은 proxy.teleportConfig.proxy_service.public_addr을 설정하는 것과 동일합니다.

경고

scratch 또는 standalone 모드를 사용할 때 여러 복제본을 지원하려면 반드시 고가용성 스토리지(예: etcd, DynamoDB, 또는 Firestore)를 사용해야 합니다.

지원되는 Teleport 스토리지 백엔드 정보

NFS 기반 스토리지 또는 ReadWriteMany 볼륨 클레임의 수동 구성은 HA 배포에서 지원되지 않으며 오류가 발생합니다.

다음 my-values.yaml 파일을 작성하고 필요에 따라 teleport 구성을 조정합니다. 가능한 모든 구성 필드는 Teleport 구성 참조에서 찾을 수 있습니다.

chartMode: standalone
clusterName: teleport.example.com

auth:
  teleportConfig:
    # put any teleport.yaml auth configuration overrides here
    teleport:
      log:
        output: stderr
        severity: DEBUG

    auth_service:
      enabled: true
      web_idle_timeout: 1h
      authentication:
        locking_mode: best_effort

proxy:
  teleportConfig:
    # put any teleport.yaml proxy configuration overrides here
    teleport:
      log:
        output: stderr
        severity: DEBUG

    proxy_service:
      https_keypairs_reload_interval: 12h
      # optionally override the public addresses for the cluster
      # public_addr: custom.example.com:443
      # tunnel_public_addr: custom.example.com:3024

# If you are running Kubernetes 1.23 or above, disable PodSecurityPolicies
podSecurityPolicy:
  enabled: false

# OPTIONAL - when using highly-available storage for both backend AND session recordings
# you can disable disk persistence and replicate auth pods.
#
# persistence:
#   enabled: false
# highAvailability:
#   replicaCount: 2

Helm 구성에서 publicAddr 값을 사용하거나 proxy.teleportConfig.proxy_service.public_addr을 설정하여 클러스터의 외부에서 보이는 이름을 재정의할 수 있습니다. 하지만 이 예에서는 publicAddr이 구성된 clusterName을 기반으로 teleport.example.com:443으로 자동 설정됩니다.

Teleport 관련 리소스를 포함하는 네임스페이스를 생성하고 PodSecurityAdmission을 구성합니다:

$ kubectl create namespace teleport
namespace/teleport created
$ kubectl label namespace teleport 'pod-security.kubernetes.io/enforce=baseline'
namespace/teleport labeled

자체 호스팅 Teleport Enterprise 클러스터를 실행 중인 경우, Teleport를 설치하기 전에 Teleport 라이선스 정보가 포함된 시크릿을 생성해야 합니다.

  1. 라이선스 파일을 획득합니다.
  2. 라이선스 파일에서 시크릿을 생성합니다. 파일 이름이 license.pem인 한 Teleport가 자동으로 이 시크릿을 검색합니다.
$ kubectl -n teleport create secret generic license --from-file=license.pem

참고: 외부 프록시 포트

proxy_service가 파드 내부에서 포트 3080에서 수신 대기하지만, 차트에서 구성한 기본 LoadBalancer 서비스는 항상 외부에서 포트 443(내부적으로 포트 3080으로 리디렉션됨)에서 수신 대기합니다.

이 때문에 proxy_service.public_addr은 항상 :443으로 끝나야 합니다:

proxy_service:
  web_listen_addr: 0.0.0.0:3080
  public_addr: custom.example.com:443

이제 다음 명령으로 클러스터에 Teleport를 배포할 수 있습니다:

오픈 소스:

$ helm install teleport teleport/teleport-cluster \
  --namespace teleport \
  --values my-values.yaml

Enterprise:

$ helm install teleport teleport/teleport-cluster \
  --namespace teleport \
  --set enterprise=true \
  --values my-values.yaml

차트가 설치되면 kubectl 명령을 사용하여 배포를 볼 수 있습니다:

$ kubectl --namespace teleport get all

NAME                                 READY   STATUS    RESTARTS   AGE
pod/teleport-auth-57989d4cbd-rtrzn   1/1     Running   0          22h
pod/teleport-proxy-c6bf55cfc-w96d2   1/1     Running   0          22h
pod/teleport-proxy-c6bf55cfc-z256w   1/1     Running   0          22h

NAME                        TYPE           CLUSTER-IP     EXTERNAL-IP     PORT(S)                                                                     AGE
service/teleport            LoadBalancer   10.40.11.180   34.138.177.11   443:30258/TCP,3023:31802/TCP,3026:32182/TCP,3024:30101/TCP,3036:30302/TCP   22h
service/teleport-auth       ClusterIP      10.40.8.251    <none>          3025/TCP,3026/TCP                                                           22h
service/teleport-auth-v11   ClusterIP      None           <none>          <none>                                                                      22h
service/teleport-auth-v12   ClusterIP      None           <none>          <none>                                                                      22h

NAME                             READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/teleport-auth    1/1     1            1           22h
deployment.apps/teleport-proxy   2/2     2            2           22h

NAME                                       DESIRED   CURRENT   READY   AGE
replicaset.apps/teleport-auth-57989d4cbd   1         1         1       22h
replicaset.apps/teleport-proxy-c6bf55cfc   2         2         2       22h

3단계/3. Teleport 사용자 생성 (선택 사항)#

기존 Teleport 클러스터를 마이그레이션하는 것이 아니라면 Teleport에 로그인할 수 있는 사용자를 생성해야 합니다. 이 작업은 Teleport Auth Service에서 수행해야 하므로 kubectl을 사용하여 명령을 실행할 수 있습니다:

Teleport Community Edition:

$ kubectl --namespace teleport exec deployment/teleport-auth -- tctl users add test --roles=access,editor

User "test" has been created but requires a password. Share this URL with the user to complete user setup, link is valid for 1h:
https://teleport.example.com:443/web/invite/91cfbd08bc89122275006e48b516cc68

NOTE: Make sure teleport.example.com:443 points at a Teleport proxy that users can access.

Commercial:

$ kubectl --namespace teleport exec deployment/teleport-auth -- tctl users add test --roles=access,editor,reviewer

User "test" has been created but requires a password. Share this URL with the user to complete user setup, link is valid for 1h:
https://teleport.example.com:443/web/invite/91cfbd08bc89122275006e48b516cc68

NOTE: Make sure teleport.example.com:443 points at a Teleport proxy that users can access.

참고

이전에 호스트 이름에 대한 DNS를 설정하지 않은 경우, teleport.example.com을 Kubernetes 로드 밸런서의 외부 IP 또는 호스트 이름으로 교체해야 합니다.

사용 가능한 것에 따라 IP 또는 호스트 이름으로 교체하여 명령을 적절히 수정해야 합니다. 페이지를 성공적으로 보려면 브라우저에서 안전하지 않은 경고를 수락해야 할 수 있습니다.

경고

Kubernetes가 발급한 로드 밸런서 IP 또는 호스트 이름은 테스트에는 적합하지만 프로덕션 Teleport 클러스터를 실행할 때는 적합하지 않습니다. 공개된 인증서의 Subject Alternative Name이 클러스터의 구성된 공개 주소(구성에서 public_addr로 지정)와 일치해야 하기 때문입니다.

프로덕션 워크로드에는 위에서 설명한 방법을 사용하여 DNS를 올바르게 구성해야 합니다.

웹 UI를 통해 사용자 생성 링크를 로드하여 비밀번호를 만들고 Teleport 사용자에 대한 다단계 인증을 설정합니다.

Helm 차트 제거#

teleport-cluster 차트를 제거하려면 helm uninstall <release-name>을 사용합니다. 예:

$ helm --namespace teleport uninstall teleport

참고

chartMode를 변경하려면 먼저 기존 차트를 제거한 다음 적절한 값으로 새 버전을 설치해야 합니다.

다음 단계#

Teleport 클러스터를 배포했으므로 접근 관리 섹션을 읽고 사용자 등록 및 RBAC 설정을 시작합니다.

teleport-cluster Helm 차트에 대한 values 파일에서 설정할 수 있는 모든 옵션을 보려면 참조 가이드를 참조하세요.