Infograb logo
DigitalOcean Kubernetes에서 Teleport 시작하기

이 가이드는 DigitalOcean Kubernetes에서 Teleport를 시작하는 방법을 보여줍니다.

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

Teleport Enterprise Cloud가 이 설정을 자동으로 처리하므로, 귀하는 즉시 안전한 인프라 접근을 제공할 수 있습니다.

무료 체험으로 Teleport Enterprise Cloud를 시작하세요.

준비물

  • DigitalOcean 계정
  • kubectl, Helm, doctl 및 Teleport tsh 클라이언트가 설정된 작업용 컴퓨터

1/4 단계. DigitalOcean Kubernetes 클러스터 생성

DigitalOcean Kubernetes 클러스터를 생성하세요.

DigitalOcean Kubernetes 클러스터 생성

Kubernetes 클러스터가 프로비저닝되는 동안 아래에 표시된 "시작하기" 가이드를 따르세요:

DigitalOcean Kubernetes 클라이언트 설정

2/4 단계. Teleport 설치

Teleport Helm 리포지토리를 설정하세요. Teleport Helm 리포지토리에 호스팅된 차트를 설치하도록 Helm을 허용하세요:

helm repo add teleport https://charts.releases.teleport.dev

원격 리포지토리의 차트 캐시를 업데이트하여 모든 사용 가능한 릴리즈로 업그레이드할 수 있습니다:

helm repo update

Kubernetes 클러스터에 teleport-cluster Helm 차트를 사용하여 Teleport를 설치하세요:

CLUSTERNAME=tele.example.com # 선호하는 도메인 이름으로 교체
EMAIL_ADDR=dodemo@goteleport.com # 이메일로 교체
helm install teleport-cluster teleport/teleport-cluster \ --create-namespace \ --namespace=teleport-cluster \ --set clusterName=$CLUSTERNAME \ --set acme=true \ --set acmeEmail=$EMAIL_ADDR \ --version 16.2.0
NAME: teleport-clusterLAST DEPLOYED: Tue Oct 26 17:01:21 2021NAMESPACE: teleport-clusterSTATUS: deployedREVISION: 1TEST SUITE: None

Teleport 클러스터 리소스에 대한 네임스페이스를 생성하고 PodSecurityAdmission을 구성하세요:

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

Teleport 인증 서비스는 Teleport Enterprise 계정을 인증하기 위해 라이선스 파일을 읽습니다.

라이선스 파일을 얻으려면 Teleport 계정 대시보드로 이동하여 로그인하십시오.
teleport.sh에서 시작하고 Teleport 계정 이름(예: my-company)을 입력하세요.
로그인 후 "GENERATE LICENSE KEY" 버튼이 표시되며, 이 버튼을 클릭하면 새로운 라이선스 파일이 생성되고 이를 다운로드할 수 있습니다.

생성한 네임스페이스에서 "license"라는 비밀을 생성하세요:

kubectl -n teleport-cluster create secret generic license --from-file=license.pem

Teleport를 설치하세요:

CLUSTERNAME=tele.example.com # 선호하는 도메인 이름으로 교체
EMAIL_ADDR=dodemo@goteleport.com # 이메일로 교체
helm install teleport-cluster teleport/teleport-cluster \ --namespace=teleport-cluster \ --set clusterName=$CLUSTERNAME \ --set acme=true \ --set acmeEmail=$EMAIL_ADDR \ --set enterprise=true \ --version 16.2.0
NAME: teleport-clusterLAST DEPLOYED: Tue Oct 26 17:01:21 2021NAMESPACE: teleport-clusterSTATUS: deployedREVISION: 1TEST SUITE: None

clusterName에 대한 DNS 업데이트

먼저 Kubernetes 클러스터의 외부 IP( EXTERNAL-IP 필드에서) 를 가져옵니다.


kubectl --namespace=teleport-cluster get services

NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGEteleport-cluster LoadBalancer 10.245.163.12 192.168.200.200 443:31959/TCP,3023:30525/TCP,3026:30079/TCP,3024:32437/TCP 19mteleport-cluster-auth ClusterIP 10.245.164.28 <none> 3025/TCP,3026/TCP 19m

외부 IP 값(이 필드는 몇 분 후에 채워질 수 있음)을 얻으면, DNS 레코드를 업데이트하여 clusterName의 A 레코드가 이 IP 주소를 가리키도록 하세요. 예를 들어, 위의 경우 192.168.200.200이 외부 IP입니다.

DNS 구성

3/4 단계. Teleport 사용자 생성 및 설정

이제 kubectl과 함께 tctl 명령을 실행하여 Teleport 사용자를 생성합니다.

kubectl --namespace teleport-cluster exec deployment/teleport-cluster-auth -- tctl users add tadmin --roles=access,editor --logins=ubuntu

사용자 "tadmin"이 생성되었지만 비밀번호가 필요합니다. 링크가 유효한 1시간 동안 사용자가 사용자 설정을 완료할 수 있도록 이 URL을 공유하세요:https://tele.example.com:443/web/invite/<invite-token>
NOTE: tele.example.com:443가 사용자가 접근할 수 있는 Teleport 프록시를 가리키는지 확인하세요.
kubectl --namespace teleport-cluster exec deployment/teleport-cluster-auth -- tctl users add tadmin --roles=access,editor,reviewer --logins=ubuntu

사용자 "tadmin"이 생성되었지만 비밀번호가 필요합니다. 링크가 유효한 1시간 동안 사용자가 사용자 설정을 완료할 수 있도록 이 URL을 공유하세요:https://tele.example.com:443/web/invite/<invite-token>
NOTE: tele.example.com:443가 사용자가 접근할 수 있는 Teleport 프록시를 가리키는지 확인하세요.

위 명령을 실행한 후 표시된 링크를 복사하여 웹 브라우저에서 열어 사용자 등록 프로세스를 완료하세요(위의 경우 링크는 https://tele.example.com:443/web/invite/<invite-token>입니다).

사용자 설정

비밀번호를 설정하고 다단계 인증에 등록하여 등록 프로세스를 완료하면 Teleport 웹 UI에 로그인됩니다.

이 단계에서 우리는 역할이 access, edit인 사용자 tadmin을 생성했습니다. 이는 Teleport에서 사용할 수 있는 기본 역할입니다. 그러나 이 사용자가 Kubernetes 클러스터에 접근할 수 있도록 허용하려면 tadmin에게 Kubernetes 클러스터에 접근할 수 있도록 승인된 역할을 할당해야 합니다. 먼저, Kubernetes 권한 system:master를 가진 member라는 이름의 역할을 생성해 보겠습니다.

"member"라는 새로운 Kubernetes 역할 생성

다음 사양으로 member.yaml이라는 파일을 생성하세요:

kind: 역할
version: v7
metadata:
  name: 멤버
spec:
  allow:
    kubernetes_groups: ["system:masters"]
    kubernetes_labels:
      '*': '*'
    kubernetes_resources:
      - kind: '*'
        namespace: '*'
        name: '*'
        verbs: ['*']
경고

system:masters는 Linux 시스템에서 sudo 권한과 유사한 Kubernetes의 내장 역할입니다. 여기서는 설명을 위해 사용되며, 실제 운영 환경에서는 필요할 때만 사용해야 합니다.

다음 명령을 사용하여 이 역할을 Kubernetes에 생성하세요:

kubectl --namespace=teleport-cluster exec -i deployment/teleport-cluster-auth -- tctl create -f < member.yaml

"member" 역할을 사용자 "tadmin"에게 할당

이제 Teleport 사용자 tadmin에게 이 역할을 할당하겠습니다. 아래 예시는 Teleport 웹 UI를 사용하는 프로세스를 보여줍니다: 먼저 사용자 편집 메뉴를 선택하세요:

사용자 편집

둘째, tadmin 사용자 역할을 업데이트하여 member 역할을 할당하세요:

역할 업데이트

우리는 사용자 tadmin의 역할을 member로 업데이트하여 Kubernetes 클러스터에 system:master 권한으로 접근할 수 있도록 했습니다.

4/4 단계. Teleport를 사용하여 Kubernetes 클러스터에 접근하기

다음 단계에서는 tsh를 사용하여 Kubernetes 클러스터에 접근하는 방법을 보여줍니다.

Teleport에 로그인하기

먼저, 세 번째 단계에서 생성한 tadmin 사용자로 tsh를 사용하여 Teleport에 인증합니다.

참고

다음 프로세스는 전역 kubectl 구성 파일을 덮어씁니다. 전역 kubectl 구성이 수정되는 대신 별도의 파일에 kubectl 구성을 작성하려면 다음 명령을 실행하세요:

export KUBECONFIG=${HOME?}/teleport-kubeconfig.yaml
tsh login --proxy=tele.example.com:443 --auth=local --user=tadmin
Teleport 사용자 tadmin에 대한 비밀번호 입력:당신의 OTP 토큰 입력:540255> 프로필 URL: https://tele.example.com:443 로그인한 사용자: tadmin 클러스터: tele.example.com 역할: access, editor, member 로그인: ubuntu Kubernetes: 사용 가능 유효 기간: 2021-10-27 06:37:15 +0000 UTC [12시간 유효] 확장: permit-agent-forwarding, permit-port-forwarding, permit-pty
tsh login --proxy=tele.example.com:443 --auth=local --user=tadmin
Teleport 사용자 tadmin에 대한 비밀번호 입력:당신의 OTP 토큰 입력:540255> 프로필 URL: https://tele.example.com:443 로그인한 사용자: tadmin 클러스터: tele.example.com 역할: access, editor, reviewer, member 로그인: ubuntu Kubernetes: 사용 가능 유효 기간: 2021-10-27 06:37:15 +0000 UTC [12시간 유효] 확장: permit-agent-forwarding, permit-port-forwarding, permit-pty

Kubernetes 클러스터 선택

tsh kube login tele.example.com
"Kubernetes 클러스터 tele.example.com"에 로그인했습니다. 연결을 테스트하려면 'kubectl version'을 시도하세요.

Kubernetes 클러스터에 연결하기

kubectl --namespace=teleport-cluster get pods
NAME READY STATUS RESTARTS AGEteleport-cluster-6cc679b6f6-7xr5h 1/1 Running 0 14h

Voila! 사용자 tadmin은 DigitalOcean Kubernetes 클러스터에서 포드를 나열할 수 있었습니다.

Teleport는 Kubernetes 클러스터 접근에 대한 감사 로그를 유지합니다. 아래 스크린샷에서 Teleport 감사 로그는 사용자 tadmin이 클러스터에 로그인한 것을 보여줍니다.

감사 로그 보기

다음 단계

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

Teleport를 사용하여 Kubernetes 클러스터를 보호할 수 있는 추가 방법에 대한 가이드를 읽어보세요:

Teleport 원문 보기