인포레터에서 최신 DevOps 트렌드를 격주로 만나보세요!
업그레이드 참조
이 가이드는 비표준 상황에서 Teleport 클러스터의 구성 요소를 업그레이드하는 방법을 설명합니다.
Teleport 클러스터가 최소한의 수동 작업으로 최신 상태를 유지하게 하려면, 회원 가입하여 클라우드 호스팅 Teleport Enterprise 계정을 만들고 자동 업그레이드에서 에이전트 등록 절차를 따르는 것을 권장합니다.
귀하의 인프라가 자동 에이전트 업데이트를 지원하지 않는 경우, 이 가이드를 따라 귀하의 Teleport 클러스터를 최신 상태로 유지하기 위한 최상의 접근 방식을 결정하십시오.
이 가이를 읽기 전에, 클러스터의 구성 요소를 업그레이드하는 순서를 설명하는 업그레이드 호환성 개요 가이드를 숙지하십시오.
자동 업데이터 작업
이 섹션에서는 자동 업데이터를 관리하는 방법을 설명합니다.
Kubernetes 배포에서는 업데이터가 클러스터의 예상 Kubernetes 리소스를 주기적으로 조정하는 컨트롤러입니다. Linux 서버에서는 업데이터가 teleport-upgrade
라는 실행 가능한 스크립트입니다.
teleport-upgrade
명령
teleport-upgrade
도구는 Teleport 에이전트를 확인하고 업데이트를 수행하는 기본 명령을 제공합니다.
teleport-upgrade helpUSAGE: /usr/sbin/teleport-upgrade <command>
Teleport 에이전트의 자동 업그레이드를 위한 도구입니다.
명령어: run 업그레이드 호출 및 적용 가능성 확인. dry-run 새로운 teleport 버전 확인하나 업그레이드 하지 않음. force 업그레이드가 가능할 경우 즉시 적용. version /usr/sbin/teleport-upgrade의 현재 버전 출력. help 이 도움말 텍스트를 보여줍니다.
dry-run
명령은 업데이트를 수행하지 않고 사용 가능한 업데이트를 확인하는 데 사용됩니다.
teleport가 이미 최신 호환 버전인 경우의 예제 출력.
teleport-upgrade dry-run[i] 업그레이드가 없음 (14.3.14 == 14.3.14) [ 582 ]업데이트가 사용 가능한 경우의 예제 출력.
teleport-upgrade dry-run[i] 업그레이드가 사용 가능합니다 (13.4.14 -> 14.3.14) [ 585 ][i] 유지 관리 창 내, 업그레이드가 시도될 것입니다. [ 596 ]
run
명령은 사용 가능한 경우 업데이트를 수행합니다.
13.4.14에서 14.3.14로의 성공적인 teleport 업데이트.
teleport-upgrade run[i] 업그레이드가 사용 가능합니다 (13.4.14 -> 14.3.14) [ 585 ][i] 유지 관리 창 내, 업그레이드가 시도될 것입니다. [ 596 ][i] apt install teleport-ent=14.3.14 시도 중... [ 480 ][...][i] Teleport를 정상적으로 재시작 중 (이미 실행 중인 경우) [ 449 ]유지 보수 창 밖에서는 Teleport 업데이트를 시도하지 않음.
teleport-upgrade run[i] 업그레이드가 사용 가능합니다 (13.4.14 -> 14.3.14) [ 585 ][i] 업그레이드는 비극적이며 우리는 유지 관리 창 밖에 있어 시도하지 않습니다. [ 618 ]
force
명령은 유지 관리 창 밖에서도 즉시 업데이트를 수행합니다.
teleport-upgrade force[i] 업그레이드가 사용 가능합니다 (13.4.14 -> 14.3.14) [ 585 ][i] apt install teleport-ent=14.3.14 시도 중... [ 480 ][...][i] Teleport를 정상적으로 재시작 중 (이미 실행 중인 경우) [ 449 ]
teleport-upgrade
도구 구성
-
업그레이드 구성 디렉토리를 생성합니다:
sudo mkdir -p /etc/teleport-upgrade.d/ -
에이전트 사용자를 비루트로 실행하도록 변경했다면,
/etc/teleport-upgrade.d/schedule
를 생성하고 Teleport 사용자에게 소유권을 부여합니다. 그렇지 않으면 이 단계를 건너뛸 수 있습니다:sudo touch /etc/teleport-upgrade.d/schedulesudo chown your-teleport-user /etc/teleport-upgrade.d/schedule -
업그레이더가 버전 서버에 연결하고 적절한 릴리스 채널에 구독하도록 구성합니다:
echo "teleport.example.com:443/v1/webapi/automaticupgrades/channel/default" | sudo tee /etc/teleport-upgrade.d/endpoint서버 주소 앞에
https://
를 포함하지 않도록 하고, 엔드포인트 뒤에/version
을 붙이지 않도록 하십시오.
릴리스 채널 선택
업데이트 도구 구성 시 릴리스 채널을 선택할 수 있습니다.
APT, YUM 및 Zypper 저장소에 대해 사용 가능한 채널은 다음과 같습니다:
채널 이름 | 설명 |
---|---|
stable/<major> | 지정된 주요 릴리스 라인에 대한 릴리스를 수신합니다, 즉 v17 |
stable/cloud | 현재 클라우드 버전과 호환되는 릴리스를 수신하는 롤링 채널 |
stable/rolling | 발표된 모든 Teleport 릴리스를 수신하는 롤링 채널 |
업데이트 도구 업데이트
업데이트 도구는 최소화되고 상대적으로 안정적이지만, 가끔 업데이트를 받을 것입니다. 현재 업데이트 도구는 자체 업데이트 기능이 없습니다. teleport-ent-updater
패키지의 업데이트는 수동으로 수행해야 합니다.
teleport-ent-updater
는 이전 버전의 Teleport와 호환성을 유지하므로, 항상 teleport-ent-updater
패키지를 최신 버전으로 업데이트할 수 있습니다.
버전 잠금
Teleport 15.1.10
부터 업데이트 도구에 의해 버전 잠금 메커니즘이 활성화되었습니다. 이 메커니즘은 Teleport의 버전을 잠금 상태로 유지하고 Teleport 패키지의 수동 업데이트를 방지합니다. 이는 시스템 유지 관리 중 의도치 않은 업데이트나 사용자에 의한 실수로 인한 업데이트를 방지합니다. 업데이트 도구는 여전히 Teleport 패키지를 업데이트할 수 있으며, Teleport의 모든 업데이트는 업데이트 도구에 의해 수행될 것으로 예상됩니다.
버전 잠금 메커니즘은 패키지 관리자의 기능을 사용하여 구현됩니다. 사용자가 Teleport 버전을 수동으로 업데이트하고 싶다면, 다음 명령어를 사용하여 수행할 수 있습니다.
apt
패키지 관리자 CLI에서는 버전 잠금을 우회하기 위해 --allow-change-held-packages
플래그를 제공해야 합니다.
apt-get install --allow-change-held-packages "teleport-ent=<target-version>"
yum
패키지 관리자 CLI에서는 버전 잠금을 우회하기 위해 --disableexcludes="teleport"
플래그를 제공해야 합니다.
yum install --disablerepo="*" --enablerepo="teleport" --disableexcludes="teleport" "teleport-ent-<target-version>"
zypper
패키지 관리자 CLI에서는 잠금을 비활성화한 후 업데이트 후 다시 활성화해야 합니다.
zypper removelock "teleport-ent"zypper install --repo="teleport" "teleport-ent-<target-version>"zypper addlock "teleport-ent"
자동 업데이트 제한 사항
자동 업데이트는 모든 Teleport 에디션 및 설치 방법에서 제공되지 않습니다. 자동 업데이트를 사용할 수 없는 경우, 가능한 단계에 대해 수동 업데이트를 읽으십시오.
Teleport 커뮤니티 에디션의 자동 업데이트
현재 커뮤니티 에디션의 Teleport에서는 자동 업데이트가 지원되지 않습니다. teleport-kube-agent
차트의 Teleport Enterprise 에디션을 사용하고 있는지 확인하십시오. teleport-kube-agent
릴리스를 쿼리할 때 다음과 같이 표시되어야 합니다:
helm -n teleport get values teleport-agent -o json | jq '.enterprise'true
직접 바이너리 설치로 인한 자동 업데이트
현재 직접 바이너리 설치 방법으로는 자동 업데이트가 지원되지 않습니다. 자동 업데이트는 apt
, yum
, zypper
패키지 관리자를 통한 설치에서만 지원됩니다.
GitOps 도구를 통한 자동 업데이트
자동 업데이트는 지속적 배포에 사용되는 일부 GitOps 도구와 호환되지 않습니다. teleport-kube-agent
Helm 차트는 teleport-agent
리소스의 버전을 소유하기 때문에, teleport-agent-updater
가 teleport-agent
리소스의 이미지 버전을 수정할 때 GitOps 도구는 teleport-agent
리소스의 변동이나 차이를 감지하게 됩니다.
ArgoCD 배포
자동 업데이트 후, ArgoCD는 teleport-agent
리소스를 OutOfSync
로 보고합니다. 이 문제의 우회 방법으로 Diff Customization을 사용하여 이미지 버전의 차이를 무시하십시오. 다음은 이름이 teleport-agent
이고 네임스페이스가 teleport
인 배포 예제입니다.
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: teleport-agent
namespace: teleport
spec:
ignoreDifferences:
- group: apps
kind: StatefulSet
name: teleport-agent
namespace: teleport
jqPathExpressions:
- .spec.template.spec.containers[] | select(.name == "teleport").image
FluxCD 배포
자동 업데이트 후, FluxCD는 DriftDetected
이벤트를 보고합니다. 이 문제의 우회 방법으로 drift detection 구성을 수정하여 이미지 버전의 차이를 무시하십시오. 다음은 이름이 teleport-agent
이고 네임스페이스가 teleport
인 배포 예제입니다.
apiVersion: helm.toolkit.fluxcd.io/v2beta2
kind: HelmRelease
metadata:
name: teleport-agent
namespace: teleport
spec:
driftDetection:
mode: enabled
ignore:
- paths: ["/spec/template/spec/containers/0/image"]
target:
kind: StatefulSet
name: teleport-agent
namespace: teleport
수동 업데이트
이 섹션에서는 Teleport를 수동으로 업그레이드하는 방법을 보여줍니다. 자체 호스팅 클러스터에서 실행되는 Teleport Auth 서비스 및 프록시 서비스 인스턴스와 모든 Teleport 에이전트를 수동으로 업그레이드할 수 있습니다.
Teleport 에이전트
-
Teleport 프록시 서비스의
webapi
엔드포인트를 쿼리하여 최신 호환 Teleport 에이전트 버전을 식별합니다:curl https://teleport.example.com/webapi/automaticupgrades/channel/stable/cloud/versionv15.2.1 -
tctl inventory ls
명령을 사용하여 연결된 에이전트와 현재 버전을 나열합니다.--older-than
플래그를 사용하여 업그레이드 가능한 에이전트를 나열하십시오:tctl inventory ls --older-than=v15.2.1Server ID Hostname Services Version Upgrader------------------------------------ -------------- -------------- ------- --------00000000-0000-0000-0000-000000000000 ip-10-1-6-130 Node v14.4.5 none00000000-0000-0000-0000-000000000001 teleport-proxy Proxy v15.2.0 none00000000-0000-0000-0000-000000000002 teleport-auth Auth,Discovery v15.2.0 none... -
tctl inventory ls
명령에서 반환된 각 에이전트 ID를 복사하고 다음tctl
명령을 실행하여tsh
를 통해 호스트에 접근합니다:HOST=00000000-0000-0000-0000-000000000000USER=roottsh ssh "${USER?}@${HOST?}" -
각 리눅스 서버에서 다음 섹션에서
teleport
바이너리의 새 버전을 설치하는 지침을 따릅니다. -
teleport-kube-agent
Helm 차트를 사용하여 Kubernetes에 에이전트를 배포한 경우, 지침을 따르십시오 Helm 릴리스를 업그레이드합니다.
리눅스 서버에서의 단일 Teleport 바이너리
리눅스 호스트에서 실행 중인 단일 Teleport 바이너리를 업그레이드하려면, 현재 버전보다 더 높은 버전으로 원줄 설치 스크립트를 실행하면 됩니다.
셀프 호스팅 클러스터에서 Teleport를 업그레이드하기 전에 호환성 개요를 읽어 이 구성 요소를 올바른 순서로 업그레이드하고 있는지 확인하세요.
인증 서비스 및 프록시 서비스가 실행되는 모든 서버에서 다음 단계를 수행한 후, 각 에이전트에서도 수행하세요:
-
현재 버전을 확인합니다:
teleport version -
Teleport 에디션에 따라 edition 를 다음 중 하나로 할당합니다:
에디션 값 Teleport Enterprise (클라우드) cloud
Teleport Enterprise (셀프 호스팅) enterprise
Teleport 커뮤니티 에디션 oss
-
설치할 버전을 version 에 할당합니다.
-
리눅스 서버에 새로운 Teleport 버전을 설치합니다:
curl https://cdn.teleport.dev/install-v15.4.11.sh | bash -s version edition설치 스크립트는 리눅스 서버에서 패키지 관리자를 감지하고 이를 사용하여 Teleport 바이너리를 설치합니다. 설치를 사용자 정의하려면 설치 가이드의 Teleport 패키지 리포지토리에 대해 알아보세요.
-
teleport
바이너리의 버전이 예상하는 것인지 확인합니다:teleport version -
인증 서비스 및 프록시 서비스 인스턴스에서 더 최신의
teleport
바이너리를 설치했으므로, 이 서버에서 Teleport를 다시 시작하여 새로운 버전을 실행합니다.호스트가 부팅될 때 your Teleport instance가 자동으로 시작되도록 systemd 서비스를 생성하여 구성합니다. 지침은 your Teleport instance를 설치한 방법에 따라 다릅니다.
your Teleport instance를 실행할 호스트에서 Teleport를 활성화하고 시작합니다:
sudo systemctl enable teleportsudo systemctl start teleportyour Teleport instance를 실행할 호스트에서 Teleport의 systemd 서비스 구성을 만들고, Teleport 서비스를 활성화한 후 Teleport를 시작합니다:
sudo teleport install systemd -o /etc/systemd/system/teleport.servicesudo systemctl enable teleportsudo systemctl start teleportsystemctl status teleport
로 your Teleport instance의 상태를 확인하고,journalctl -fu teleport
로 로그를 볼 수 있습니다.
Kubernetes에서의 셀프 호스팅 Teleport 클러스터
이 섹션의 지침은 values.yaml
이라는 값 파일로 teleport-cluster
Helm 차트를 구성했으며, teleport-cluster
릴리스 이름이 teleport-cluster
라고 가정합니다.
-
인증 서비스 풀을 줄입니다. 업그레이드 중에 일관된 클러스터 상태를 보장하기 위해 인증 서비스 인스턴스 수를 1로 줄여야 합니다.
teleport-cluster
값 파일에 다음 구성이 포함되어 있는지 확인하세요:auth: highAvailability: replicaCount: 1
-
최신 버전의
teleport-cluster
차트를 설치할 수 있도록 Teleport Helm 차트 리포지토리를 업데이트합니다:Teleport Helm 저장소를 설정합니다.
Helm이 Teleport Helm 저장소에서 호스팅되는 차트를 설치할 수 있도록 허용합니다:
helm repo add teleport https://charts.releases.teleport.dev원격 저장소의 차트 캐시를 업데이트하여 모든 사용 가능한 릴리스로 업그레이드할 수 있습니다:
helm repo update -
teleport-cluster
Helm 릴리스를 업그레이드 합니다:helm upgrade teleport-cluster teleport/teleport-cluster \ --version=17.0.0-dev \ --values=values.yamlteleport-cluster
Helm 차트는 이전 버전의 프록시 서비스가 요청에 응답하지 않도록 기다린 후 새로운 버전의 인증 서비스를 실행합니다. -
이 가이드를 완료하고 클러스터를 업그레이드한 후, 클러스터를 다시 고가용성으로 구성할 수 있습니다.
Kubernetes에서 실행 중인 Teleport 에이전트
이 섹션의 지침은 values.yaml
이라는 값 파일로 teleport-kube-agent
Helm 차트를 구성했으며, teleport-kube-agent
릴리스 이름이 teleport-agent
이라고 가정합니다.
-
최신 버전의
teleport-kube-agent
차트를 설치할 수 있도록 Teleport Helm 차트 리포지토리를 업데이트합니다:Teleport Helm 저장소를 설정합니다.
Helm이 Teleport Helm 저장소에서 호스팅되는 차트를 설치할 수 있도록 허용합니다:
helm repo add teleport https://charts.releases.teleport.dev원격 저장소의 차트 캐시를 업데이트하여 모든 사용 가능한 릴리스로 업그레이드할 수 있습니다:
helm repo update -
Helm 릴리스를 업그레이드 합니다:
helm -n teleport upgrade teleport-agent teleport/teleport-kube-agent \ --values=values.yaml \ --version=17.0.0-dev