이 문서에서는 Google Distributed Cloud용 관리자 워크스테이션을 만드는 방법을 설명합니다. 관리자 워크스테이션은 설치 중 클러스터를 프로비저닝하는 명령줄 인터페이스(CLI) 도구와 구성 파일 및 설치 후 프로비저닝된 클러스터와 상호작용하는 CLI 도구를 호스팅합니다.
이 페이지는 기술 인프라를 설정, 모니터링, 관리하는 관리자, 설계자, 운영자를 위해 작성되었습니다. Google Cloud 콘텐츠에서 참조하는 일반적인 역할 및 예시 작업에 대해 자세히 알아보려면 일반 GKE 기업 사용자 역할 및 작업을 참조하세요.
여기에는 전체 안내가 나와 있습니다. 관리자 워크스테이션 만들기에 대한 간단한 설명은 기본 클러스터 만들기 가이드에서 관리자 워크스테이션 만들기를 참조하세요.
다음 두 가지 방법으로 관리자 워크스테이션을 만들 수 있습니다.
gkeadm
을 사용하여 vSphere 환경에서 관리자 워크스테이션 VM을 만듭니다.원하는 컴퓨터에서 사용자 관리형 관리자 워크스테이션을 만듭니다.
gkeadm
시작하기 전에
여러 Google Cloud 프로젝트 사용에 설명된 대로 Google Cloud 프로젝트를 하나 이상 만들기
서비스 계정 계획
gkeadm
을 사용하여 관리자 워크스테이션을 만들 때 gkeadm
에서 일부 서비스 계정과 키를 자동으로 만들도록 할 수 있는 옵션이 있습니다. 이 경우 gkeadm
에서 서비스 계정에 적절한 Identity and Access Management 역할도 부여합니다.
또는 서비스 계정 및 키를 수동으로 만들 수 있습니다. 이 경우 서비스 계정에 IAM 역할을 수동으로 부여해야 합니다.
서비스 계정을 수동으로 만들면 gkeadm
에서 자동으로 만드는 것보다 유연성이 높아집니다.
자동으로 만들어진 서비스 계정은 모두 구성요소 액세스 서비스 계정과 동일한 상위 Google Cloud 프로젝트를 갖습니다. 서비스 계정을 수동으로 만들 때 상위 Google Cloud 프로젝트를 선택할 수 있습니다.
자동으로 만들어진 서비스 계정에는 구성요소 액세스 서비스 계정의 상위 Google Cloud 프로젝트에 대한 IAM 역할이 모두 부여됩니다. 이 프로젝트가 클러스터와 연결된 유일한 Google Cloud 프로젝트인 경우 문제가 되지 않습니다. 하지만 클러스터를 여러 Google Cloud 프로젝트와 연결하려면 선택한 Google Cloud 프로젝트에서 서비스 계정에 역할을 부여할 수 있는 유연성이 필요합니다.
자체 서비스 계정을 만들기로 한 경우 서비스 계정 및 키의 안내를 따릅니다.
gkeadm
에서 자동으로 서비스 계정을 만드는지 여부에 관계없이 수동으로 만들어야 하는 서비스 계정은 구성 요소 액세스 서비스 계정입니다. 구성요소 액세스 서비스 계정을 만들고 여기에 적절한 IAM 역할을 부여하는 방법은 구성요소 액세스 서비스 계정을 참조하세요.
수동으로 만들어야 할 또 다른 서비스 계정이 하나 있습니다. 바로 감사 로깅 서비스 계정입니다. GKE On-Prem API 클라이언트를 사용하여 사용자 클러스터를 관리하려면 관리자 클러스터에서 감사 로깅을 사용 설정해야 합니다.
구성 파일의 템플릿 생성
현재 디렉터리에 gkeadm
을 다운로드합니다.
템플릿을 생성합니다.
./gkeadm create config
위 명령어를 실행하면 현재 디렉터리에 다음 파일이 만들어집니다.
credential.yaml
admin-ws-config.yaml
credential.yaml
에 입력
credential.yaml
에 vCenter 사용자 이름과 비밀번호를 입력합니다. 예를 들면 다음과 같습니다.
kind: CredentialFile items: - name: vCenter username: "my-account-name" password: "AadmpqGPqq!a"
admin-ws-config.yaml
에 입력
admin-ws-config.yaml
의 여러 필드는 이미 기본값 또는 생성된 값으로 입력되어 있습니다. 채워진 값을 유지하거나 원하는 대로 변경할 수 있습니다.
필수 필드
다음 필수 필드를 입력합니다. 필드를 입력하는 방법에 대한 자세한 내용은 관리자 워크스테이션 구성 파일을 참조하세요.
gcp: componentAccessServiceAccountKeyPath: "Fill in" vCenter: credentials: address: "Fill in" datacenter: "Fill in" datastore: "Fill in" cluster: "Fill in" network: "Fill in" resourcePool: "Fill in" caCertPath: "Fill in"
vSphere VM 폴더 내에 관리자 워크스테이션을 만들려면 vCenter.folder
필드를 입력하세요.
vCenter: folder: "Fill in"
관리자 워크스테이션이 프록시 서버 뒤에 있는 경우 proxyURL
필드를 입력합니다.
adminWorkstation: proxyURL: "Fill in"
관리자 워크스테이션이 DHCP 서버에서 IP 주소를 가져오도록 하려면 ipAllocationMode
를 "dhcp"
로 설정하고 hostconfig
섹션을 삭제합니다.
adminWorkstation: network: ipAllocationMode: "dhcp"
관리자 워크스테이션에 고정 IP 주소를 지정하려면 ipAllocationMode
를 "static"
으로 설정하고 hostconfig
섹션을 입력합니다.
adminWorkstation: network: ipAllocationMode: "static" hostconfig: ip: "Fill in" gateway: "Fill in" netmask: "Fill in" dns: - "Fill in"
로그인
- Google 계정으로 로그인합니다. 그러면 SDK
account
속성이 설정됩니다.
gcloud auth login
- SDK
account
속성이 올바르게 설정되었는지 확인합니다.
gcloud config list
- SDK
account
속성으로 설정된 Google 계정을 SDK 계정이라고 합니다.gkeadm
명령줄 도구는 SDK 계정을 사용하여 관리자 워크스테이션 OVA를 다운로드하고 Google Cloud 프로젝트에서 서비스를 사용 설정합니다.
gkeadm
이 서비스 계정을 자동으로 만들도록 하면 gkeadm
은 SDK 계정을 사용하여 서비스 계정과 키를 만들고 서비스 계정에 역할을 부여합니다.
따라서 gkeadm
을 실행하기 전에 SDK account
속성을 설정하여 관리자 워크스테이션을 만드는 것이 중요합니다.
SDK account
속성 값이 출력에 표시됩니다.
예를 들면 다음과 같습니다.
[core] account = my-name@google.com disable_usage_reporting = False Your active configuration is: [default]
SDK 계정에 역할 부여
SDK 계정에는 구성요소 액세스 서비스 계정의 상위 Google Cloud 프로젝트에 대한 다음 IAM 역할이 있어야 합니다.
이는 gkeadm
이 Google Cloud 프로젝트에서 서비스를 사용 설정할 수 있도록 하기 위함입니다.
serviceUsage.serviceUsageAdmin
gkeadm
이 서비스 계정을 자동으로 만들도록 하면 SDK 계정에 구성요소 액세스 서비스 계정의 상위 프로젝트에 대한 다음 역할도 있어야 합니다. 이는 gkeadm
이 서비스 계정과 키를 만들 수 있도록 하기 위함입니다.
resourcemanager.projectIamAdmin
iam.serviceAccountCreator
iam.serviceAccountKeyAdmin
Google Cloud 프로젝트에 대한 역할을 부여하려면 Google Cloud 프로젝트에 대한 특정 권한이 있어야 합니다. 자세한 내용은 리소스에 대한 액세스 권한 부여, 변경, 취소를 참조하세요.
필요한 권한이 있으면 직접 역할을 부여할 수 있습니다. 그렇지 않으면 조직의 다른 사용자가 역할을 부여해야 합니다.
SDK 계정에 필요한 역할을 부여하려면 다음 안내를 따르세요.
Linux 및 macOS
gcloud projects add-iam-policy-binding PROJECT_ID \ --member="user:ACCOUNT" \ --role="roles/serviceusage.serviceUsageAdmin"
Windows
gcloud projects add-iam-policy-binding PROJECT_ID ^ --member="user:ACCOUNT" ^ --role="roles/serviceusage.serviceUsageAdmin"
다음을 바꿉니다.
PROJECT_ID
: 구성요소 액세스 서비스 계정이 속하는 상위 Google Cloud 프로젝트의 ID입니다.ACCOUNT
: SDK 계정
gkeadm
이 서비스 계정을 자동으로 만들도록 추가 역할을 부여하려면 다음 안내를 따르세요.
Linux 및 macOS
gcloud projects add-iam-policy-binding PROJECT_ID \ --member="user:ACCOUNT" \ --role="roles/resourcemanager.projectIamAdmin" gcloud projects add-iam-policy-binding PROJECT_ID \ --member="user:ACCOUNT" \ --role="roles/iam.serviceAccountCreator" gcloud projects add-iam-policy-binding PROJECT_ID \ --member="user:ACCOUNT" \ --role="roles/iam.serviceAccountKeyAdmin"
Windows
gcloud projects add-iam-policy-binding PROJECT_ID ^ --member="user:ACCOUNT" ^ --role="roles/resourcemanager.projectIamAdmin" gcloud projects add-iam-policy-binding PROJECT_ID ^ --member="user:ACCOUNT" ^ --role="roles/iam.serviceAccountCreator" gcloud projects add-iam-policy-binding PROJECT_ID ^ --member="user:ACCOUNT" ^ --role="roles/iam.serviceAccountKeyAdmin"
다음을 바꿉니다.
PROJECT_ID
: 구성요소 액세스 서비스 계정의 상위 프로젝트 IDACCOUNT
: SDK 계정
관리자 워크스테이션 만들기
다음 명령어를 입력하여 관리자 워크스테이션을 만듭니다. gkeadm
에서 connect-register 및 logging-monitoring 서비스 계정을 자동으로 만들게 하려면 --auto-create-service-accounts
플래그를 포함합니다. 이러한 서비스 계정을 수동으로 만들려면 이 플래그를 생략합니다.
./gkeadm create admin-workstation [--auto-create-service-accounts]
출력은 관리자 워크스테이션 생성에 대한 자세한 정보를 제공합니다.
... Getting ... service account... ... ******************************************************************** Admin workstation is ready to use. Admin workstation information saved to /usr/local/google/home/me/my-admin-workstation This file is required for future upgrades SSH into the admin workstation with the following command: ssh -i /usr/local/google/home/me/.ssh/gke-admin-workstation ubuntu@172.16.5.1 ********************************************************************
관리자 워크스테이션으로 SSH 연결 가져오기
이전 출력의 끝부분에 관리자 워크스테이션으로 SSH 연결을 가져오는 데 사용할 수 있는 명령어가 있습니다. 지금 명령어를 입력합니다. 예를 들면 다음과 같습니다.
ssh -i /usr/local/google/home/me/.ssh/gke-admin-workstation ubuntu@172.16.5.1
관리자 워크스테이션의 파일을 나열합니다.
ls -1
출력에서 두 개의 클러스터 구성 파일, CA 인증서 파일, 구성요소 액세스 서비스 계정의 JSON 키 파일을 볼 수 있습니다. gkeadm
에서 서비스 계정을 만든 경우 해당 서비스 계정의 JSON 키 파일도 확인할 수 있습니다. 예를 들면 다음과 같습니다.
admin-cluster.yaml user-cluster.yaml vcenter-ca-cert.pem component-access-key.json
gkeadm
이 관리자 워크스테이션에서 구성요소 액세스 서비스 계정을 활성화했는지 확인합니다.
gcloud config get-value account
JSON 키 파일을 관리자 워크스테이션에 복사
클러스터를 만들기 전에 서비스 계정의 JSON 키 파일이 홈 디렉터리의 관리자 워크스테이션에 있어야 합니다.
구성요소 액세스 서비스 계정의 키가 이미 관리자 워크스테이션에 있습니다.
gkeadm create admin-workstation
을 실행할 때 --auto-create-service-accounts
플래그를 포함했으면 다음 서비스 계정의 키는 이미 홈 디렉터리의 관리자 워크스테이션에 있습니다. 그렇지 않으면 수동으로 키를 관리자 워크스테이션의 홈 디렉터리에 복사해야 합니다.
- 연결-등록 서비스 계정
- 로깅-모니터링 서비스 계정
다음 서비스 계정을 만든 경우 이 서비스 계정의 키를 수동으로 관리자 워크스테이션의 홈 디렉터리에 복사해야 합니다.
- 사용량 측정 서비스 계정
- 감사 로깅 서비스 계정
- Binary Authorization 서비스 계정
백업 파일에서 관리자 워크스테이션 복원
관리자 워크스테이션을 업그레이드하면 gkeadm upgrade
명령어가 백업 파일을 저장합니다. 나중에 더 이상 관리자 워크스테이션이 없거나 업그레이드된 관리자 워크스테이션에 있는 파일 중 일부가 손실된 경우 이 백업 파일을 사용하여 관리자 워크스테이션을 만들 수 있으며 이 워크스테이션은 업그레이드 직후의 상태로 복원됩니다.
백업 파일에서 관리자 워크스테이션을 만들려면 다음 명령어를 실행합니다.
gkeadm create admin-workstation --restore-from-backup ADMIN_WORKSTATION_NAME-backup.tar.gz
ADMIN_WORKSTATION_NAME을 관리자 워크스테이션의 이름으로 바꿉니다.
사용자 관리
관리자 워크스테이션으로 사용할 컴퓨터를 선택하세요. Ubuntu 또는 Red Hat Enterprise Linux(RHEL)를 사용할 수 있습니다. 요구사항은 다음과 같습니다.
Ubuntu 20.04 LTS 또는 22.04 LTS
- 4 CPU 코어
- 8GiB RAM
- 100GiB 스토리지
RHEL 8.6, 8.7, 또는 8.8
- 4 CPU 코어
- 12GB RAM
- 256GiB of storage
Google Cloud에 액세스
도구 다운로드 및 설치, 승인 요청 처리, 서비스 계정 만들기 등을 수행하려면 관리자 워크스테이션에서 Google Cloud에 액세스할 수 있어야 합니다.
Google Cloud에 연결하는 다양한 방법은 Google에 연결을 참조하세요.
Google Cloud에 직접 또는 프록시 서버를 통해 액세스할 수 있습니다. 방화벽 규칙 및 프록시 서버 구성에 대한 자세한 내용은 프록시 및 방화벽 규칙을 참조하세요.
vCenter Server에 액세스
관리자 워크스테이션에서 클러스터를 만들고 관리하려면 vCenter Server의 인스턴스에 대한 액세스 권한이 필요합니다. 자세한 내용은 다음을 참고하세요.
NTP 서버 설정
클러스터가 NTP 서버를 사용하도록 구성된 경우 timedatectl
이 클러스터와 동기화된 시간을 보고하도록 관리자 워크스테이션에서 시간 동기화 서비스를 설정해야 합니다. 이는 일치하지 않는 만료 날짜로 인해 인증서 확인 실패를 초래할 수 있는 대규모 클록 드리프트 문제를 방지하는 데 필요합니다.
Ubuntu
chrony
시간 서버를 사용하는 것이 좋습니다.
chrony
을 설치하려면 다음 안내를 따르세요.
sudo apt-get update sudo apt install chrony
이는 두 개의 바이너리를 제공합니다.
chronyd
- 네트워크 시간 프로토콜을 통해 동기화 및 처리할 데몬chronyc
-chrony
데몬의 명령줄 인터페이스
chronyd
을 구성하려면 다음 안내를 따르세요.
/etc/chrony/chrony.conf
를 수정하여 서버 줄을 추가하거나 삭제합니다. 그런 다음 chrony
를 다시 시작합니다.
sudo systemctl restart chrony.service
RHEL
chrony
시간 서버를 사용하는 것이 좋습니다.
설치 안내는 Chrony 구성 방법을 참조하세요.
비밀번호 없는 sudo
보안 정책에서 허용하는 경우 현재 사용자에게 비밀번호 없는 sudo를 사용 설정합니다. 이렇게 하면 gkectl
가 비공개 레지스트리가 제공된 경우 이를 준비하고, 네트워크가 프록시 서버 뒤에 있는 경우 Docker에 대해 프록시를 설정하고, 삭제 실패 시 관리자 클러스터 수명 주기 작업에 사용되는 부트스트랩 클러스터를 강제로 삭제할 수 있습니다.
비밀번호 없는 sudo를 사용 설정하지 않고 관리자 클러스터에 비공개 레지스트리를 사용하려는 경우 관리자 클러스터를 만들기 전에 다음 수동 구성을 수행합니다.
이 디렉터리에 비공개 레지스트리에 대한 CA 루트 인증서를 배치합니다.
/etc/docker/certs.d/REGISTRY_ADDRESS/
REGISTRY_ADDRESS를 비공개 레지스트리를 실행하는 머신의 주소로 바꿉니다.
자세한 내용은 인증서로 저장소 클라이언트를 확인을 참조하세요.
네트워크가 프록시 서버 뒤에 있는 경우 관리자 클러스터 구성 파일에서 프록시 서버를 지정하고 프록시 서버를 사용하도록 Docker를 구성합니다.
비밀번호 없는 sudo를 사용 설정하지 않으면 관리자 클러스터를 만든 후 kind
클러스터를 수동으로 삭제해야 할 수 있습니다. 자세한 내용은 문제 해결 문서의 종류 클러스터가 삭제되지 않음을 참조하세요.
소프트웨어 설치
Ubuntu
다음 소프트웨어를 설치합니다.
Docker 버전 19.03 이상: Ubuntu에 Docker Engine 설치를 참조하세요. 루트가 아닌 사용자가 Docker 그룹의 구성원인지 확인합니다. Docker를 루트가 아닌 사용자로 관리하기를 참조하세요.
Google Cloud CLI 최신 버전: gcloud CLI 설치를 참조하세요.
kubectl:
gcloud components install kubectl
을 실행하거나apt-get
을 사용합니다.
sudo apt-get update sudo apt-get -y install kubectl
RHEL
다음 소프트웨어를 설치합니다.
Docker 19.03 이상
모든 이전 Docker 버전을 삭제합니다.
sudo dnf remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine
podman-manpages를 제거합니다.
sudo dnf remove podman-manpages
Docker 19.03+를 설치합니다.
sudo dnf install -y yum-utils sudo yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo sudo dnf install -y --allowerasing docker-ce docker-ce-cli containerd.io sudo systemctl start docker
현재 버전 19.03 이상을 실행 중인지 확인합니다.
sudo docker version
출력과 다음 예시를 비교하여 클라이언트 및 서버 버전이 19.03 이상인지 확인합니다.
Client: Docker Engine - Community Version: 19.03.13 ... Server: Docker Engine - Community Engine: Version: 19.03.13
Docker가 실행되는지 확인합니다.
docker run hello-world
다음과 비슷한 모습이어야 합니다.
Hello from Docker!
이 메시지는 설치가 올바르게 작동하고 있다는 것을 나타냅니다.
Google Cloud CLI 최신 버전:
gcloud CLI 설치를 참조하세요.
kubectl
gcloud components install kubectl
를 실행합니다.
로그인
SDK account
속성으로 설정된 Google 계정을 SDK 계정이라고 합니다. gkectl
명령줄 도구는 SDK 계정을 사용하여 클러스터 노드 OVA를 다운로드하고 컨테이너 이미지를 가져오는 등의 작업을 수행합니다. 따라서 gkectl
명령어를 실행하기 전에 SDK 계정 속성을 설정하는 것이 중요합니다.
Google 계정으로 로그인합니다. 그러면 SDK account
속성이 설정됩니다.
gcloud auth login
SDK account
속성이 올바르게 설정되었는지 확인합니다.
gcloud config list
SDK account
속성 값이 출력에 표시됩니다.
예를 들면 다음과 같습니다.
[core] account = my-name@google.com disable_usage_reporting = False Your active configuration is: [default]
gkectl 및 번들 다운로드
gkectl
을 설치하려는 디렉터리로 이동합니다.
gkectl
다운로드:
gcloud storage cp gs://gke-on-prem-release/gkectl/VERSION/gkectl ./ chmod +x gkectl
VERSION을 Google Distributed Cloud 버전으로 바꿉니다. 예를 들면 1.16.0-gke.1
입니다.
Google Distributed Cloud 번들을 다운로드합니다. 버전이 gkectl
을 다운로드하는 데 사용한 버전과 일치하는지 확인합니다.
gcloud storage cp gs://gke-on-prem-release/gke-onprem-bundle/VERSION/gke-onprem-vsphere-VERSION.tgz ./
서비스 계정 및 키
다음 필수 서비스 계정 및 JSON 키 파일을 만들었는지 확인합니다.
또한 필요한 선택 서비스 계정과 JSON 키 파일을 만들었는지 확인합니다.
모든 JSON 키 파일을 관리자 워크스테이션의 홈 디렉터리에 배치합니다.
문제 해결
다음 섹션에서는 SSH 키가 손실되거나 손상된 경우 관리자 워크스테이션에 대한 SSH 액세스를 다시 사용 설정합니다.
SSH 키 복구
임시 VM을 사용하여 다음 단계를 수행합니다.
새 SSH 키 집합을 생성하려면 Compute Engine 문서의 SSH 키 만들기 안내를 따르세요.
임시 VM과 관리 워크스테이션이
Powered Off
상태인지 확인합니다.vSphere 내에서 관리 워크스테이션의 부팅 디스크를 임시 VM에 연결합니다.
부팅 디스크의 라벨은
Hard disk 1
입니다.다음 명령어를 실행하여 VM 내에 부팅 디스크를 마운트합니다.
sudo mkdir -p /mnt/boot-disk sudo mount DISK_ID /mnt/boot-disk
DISK_ID
를 부팅 디스크 식별자로 바꿉니다. 이 식별자는dev/sdc1
과 유사한 형식이어야 합니다.부팅 디스크의
authorized_keys
파일을 수정하여 첫 번째 단계에서 생성된 공개 키 파일의 콘텐츠를 추가합니다.vi /mnt/boot-disk/.ssh/authorized_keys
임시 VM을 종료합니다.
관리자 워크스테이션의 전원을 켭니다.
새로 생성된 비공개 키를 사용하여 관리자 워크스테이션에 액세스합니다.
ssh -i ~/.ssh/new-admin-ws.key ubuntu@"${ADMIN_WS_IP}"
새로 생성된 비공개 키를 사용하여 관리자 워크스테이션에 계속 액세스합니다.