Anthos 비공개 모드 설치 빠른 시작

Anthos 비공개 모드는 인터넷과 물리적으로 차단된 환경에서 인터넷과 완전히 격리된 Anthos 버전입니다. Anthos 비공개 모드를 사용하면 규제가 심한 워크로드를 온프레미스에서 실행하는 동시에 클라우드 기반 인프라의 다양한 이점을 활용할 수 있습니다.

Anthos 비공개 모드 빠른 시작 범위

이 빠른 시작에서는 베어 메탈 머신, 네트워킹, 스토리지 및 운영체제와 같은 인프라 레이어를 담당하는 인프라 운영자에게 Anthos 비공개 모드 설치를 설명합니다. 이 빠른 시작에서는 다음 작업을 처리하는 방법을 알아봅니다.

  • 최소 설치 방식을 사용하여 Anthos 비공개 모드를 설치하고 구성합니다.
  • 관리자 클러스터를 배포합니다.
  • 사용자 클러스터를 만들고 사용자 클러스터에 애플리케이션을 배포합니다.

Anthos 비공개 모드에는 두 가지 유형의 클러스터가 있습니다.

  • 관리자 클러스터는 사용자 클러스터를 만들고 관리하는 데 사용됩니다.
  • 사용자 클러스터는 워크로드를 실행합니다.

Anthos 비공개 모드 배포를 설치하고 관리하는 데 필요한 도구가 포함된 단일 머신인 관리자 워크스테이션도 있습니다.

시작하기 전에

Anthos 비공개 모드의 기술 요구사항을 충족하고 사용할 수 있는 머신이 5개 이상 있는지 확인합니다. 이 빠른 시작에는 이전 Kubernetes 및 시스템 관리 환경이 필요합니다.

환경 준비

Anthos 비공개 모드 액세스

Google에서 Anthos 비공개 모드 출시 버전에 대한 액세스 권한을 부여해야 합니다. 다운로드 저장소에 대한 액세스 권한을 부여할 수 있도록 각 테스터의 이메일 주소를 Google 담당자에게 제공합니다. 이러한 이메일 주소는 Google 계정이어야 합니다.

Google 담당자는 사용자에게 Anthos 비공개 모드 출시 버전에 대한 액세스 권한이 있음을 확인한 후 다음 명령어를 실행하여 Anthos 비공개 모드 출시 버전을 다운로드할 수 있는 권한이 있는지 확인합니다.

gsutil ls gs://anthos-private-mode-release/

오류가 발생할 경우 gcloud auth list 명령어를 실행하여 gsutil에서 Google 담당자에게 제공된 것과 동일한 Google 계정을 사용하고 있는지 확인합니다.

또는 최신 출시 버킷으로 이동하여 올바른 권한이 있는지 확인할 수 있습니다. 이전에 제공한 Google 계정으로 로그인해야 합니다.

Anthos 비공개 모드 출시 버전에 액세스하는 데 문제가 있으면 Google 담당자에게 문의하세요.

Anthos 비공개 모드 다운로드

이 섹션에서는 각각 여러 기가바이트의 여러 파일에 포함된 Anthos 비공개 모드 출시 버전을 다운로드합니다. 인터넷 연결 상태에 따라 다운로드하는 데 시간이 오래 걸릴 수 있습니다.

Anthos 비공개 모드 다운로드

관리자 워크스테이션에서 다음 명령어를 실행합니다.

# Login with the account granted access to Anthos private mode
gcloud auth login

# Download the script which helps download all the latest components
export VERSION=1.8.5-gke.1

# Please use official 'INSTALLER_DIGEST' value from https://cloud.google.com/anthos/private-mode/docs/1.8/installing/infrastructure#download
export INSTALLER_DIGEST=7747774fc4274f330558c647b4268c3ef7fcac355c3f3451d7c6c09b8d91b933
export INSTALLER=get-anthos-private-mode-$VERSION.sh
gsutil cp gs://anthos-private-mode-release/$VERSION/$INSTALLER .
if [[ -n "$INSTALLER_DIGEST" ]]; then echo "$INSTALLER_DIGEST $INSTALLER" | sha256sum -c; fi && chmod +x $INSTALLER && ./$INSTALLER

# If you are working on a workstation shared with other users,
# we recommend that you revoke your credentials after downloading the release.
gcloud auth revoke YOUR_EMAIL_ADDRESS

남은 종속 항목 설치

Anthos 비공개 모드 다운로드가 완료되면 다음 명령어를 실행합니다.

cd anthos-baremetal-private-mode

# Add actl command line tool and tools directory to the PATH
export PATH=$PWD/bin:$PATH

# Download Harbor offline installer
curl -SL \
  https://github.com/goharbor/harbor/releases/download/v2.2.0/harbor-offline-installer-v2.2.0.tgz \
  --output "local-registry/harbor-offline-installer.tgz"

# Install docker-compose
curl -SL \
  https://github.com/docker/compose/releases/download/1.28.5/docker-compose-Linux-x86_64 \
  --output "local-registry/docker-compose"

데모 앱을 배포할 때까지 인터넷에 다시 연결할 필요가 없습니다.

로컬 Container Registry 설정

Anthos 비공개 모드는 Anthos 컨테이너 이미지를 로컬 Container Registry에 저장하면 작동합니다.

다음 환경 변수를 내보냅니다.

export REGISTRY_HOST=REGISTRY_HOST
export REGISTRY_PASSWORD=REGISTRY_PASSWORD

# By default, a library public project is created,
# and you can also create other private projects via the container registry portal.
export PRIVATE_REGISTRY=${REGISTRY_HOST}/library

다음을 바꿉니다.

  • REGISTRY_HOST는 레지스트리 IP 주소입니다. 관리자 워크스테이션의 Anthos 비공개 모드 Container Registry를 설치 및 사용하려면 여기에서 관리자 워크스테이션 IP 주소를 사용합니다.

  • REGISTRY_PASSWORD는 레지스트리 비밀번호에 설정한 값입니다.

Anthos 비공개 모드 Container Registry 설정

이 섹션에서는 관리자 워크스테이션에 비공개 Container Registry를 설정합니다. 관리자 워크스테이션에서 아래의 모든 명령어를 실행합니다.

  1. 자체 비공개 Container Registry가 없으면 Anthos 비공개 모드 Container Registry를 설치합니다.

    cd ~/anthos-baremetal-private-mode
    
    # Move it to a path under $PATH
    chmod a+x local-registry/docker-compose
    sudo cp local-registry/docker-compose /usr/bin
    
    # Install local registry
    ./local-registry/install.sh
    
  2. 레지스트리에 로그인하여 액세스 권한이 있는지 확인합니다. 오류가 발생하면 몇 초 정도 기다려야 할 수 있습니다.

    docker login ${REGISTRY_HOST} -u admin -p ${REGISTRY_PASSWORD}
    

Container Registry는 서비스가 시작된 후 https://REGISTRY_HOST/에서 사용할 수 있습니다. 로그인 사용자 인증 정보는 사용자 이름 admin 및 비밀번호용 REGISTRY_PASSWORD입니다.

Container Registry에 이미지 업로드

이 섹션에서는 Anthos 비공개 모드 컨테이너 이미지를 Container Registry에 업로드합니다.

Anthos 비공개 모드 컨테이너 이미지를 준비하여 Container Registry에 업로드합니다. 메시지가 표시되면 Use that credential 옵션을 선택하거나 새 사용자 인증 정보를 입력합니다.

actl images push --private-registry=${PRIVATE_REGISTRY} \
    --images ~/anthos-baremetal-private-mode

참고: 워크스테이션에서 HTTP 프록시를 사용하는 경우 actl images push 명령어가 작동하려면 다음 환경 변수를 설정 해제해야 할 수 있습니다.

unset http_proxy
unset https_proxy
unset HTTP_PROXY
unset HTTPS_PROXY

관리 센터 설치

이 섹션에서는 Anthos cluster on bare metal을 설치한 다음 관리자 클러스터 위에 Anthos 관리 센터를 설치합니다.

관리자 클러스터 구성 준비

./actl-workspace/admin/admin.yaml 파일을 사용자 환경과 일치하는 설정으로 업데이트합니다.

vi ./actl-workspace/admin/admin.yaml

다음 입력란을 작성하세요.

  • sshPrivateKeyPath는 클러스터의 일부분이 될 다른 노드에 액세스하기 위해 설치 중에 사용되는 키입니다. 이는 기본 요건의 노드에 배포한 공개 키의 비공개 카운터입니다.

  • registryMirrors는 Docker 이미지가 저장된 모든 레지스트리 미러의 위치를 식별합니다.

    • registryMirrors.endpoint는 미러의 엔드포인트입니다. 엔드포인트 형식은 URL_SCHEME://REGISTRY_HOST/v2/IMAGE_PREFIX 입니다. 예를 들어 워크스테이션에 레지스트리를 만든 경우 엔드포인트를 https://REGISTRY_HOST/v2/library로 설정합니다. REGISTRY_HOSTIMAGE_PREFIX 사이의 /v2/는 필수입니다.

    • registryMirrors.pullCredentialConfigPath는 사용자 인증 정보 경로입니다. 이는 일반적으로 /home/USER/.docker/config.json과 비슷합니다.

    • registryMirrors.caCertPath는 레지스트리가 트래픽을 암호화하는 데 사용할 인증 기관의 위치입니다. 이 인증서는 설치 프로세스가 진행되는 동안 노드에 배포되어 레지스트리에서 이미지를 가져올 수 있습니다. 경로는 일반적으로 /etc/docker/certs.d/REGISTRY_HOST/ca.crt입니다.

  • controlPlane 사양은 제어 영역에 포함된 노드를 정의합니다.

    controlPlane:
      nodePoolSpec:
        nodes:
        # Control plane node pools. Typically, this is either a single machine
        # or 3 machines if using a high availability deployment.
        - address: 10.200.0.3
    
  • loadBalancer 사양은 사용되는 부하 분산기 유형을 정의합니다. 기본 구성은 실행 중인 클러스터에 부하 분산기를 설치합니다. 이 경우 최소한 Kubernetes API 서버를 노출할 가상 IP(VIP) 주소 풀을 식별하기 위해 controlPlaneVIP를 설정하고 이를 요청하는 서비스에 VIP를 할당하도록 addressPools를 설정해야 합니다. 예를 들면 다음과 같습니다.

    loadBalancer:
      mode: bundled
      # There are two load balancer VIPs: one for the control plane and one for the
      # L7 Ingress service.
      # The VIPs must be in the same subnet as the load balancer nodes.
      vips:
        # ControlPlaneVIP specifies the VIP to connect to the Kubernetes API server.
        # This address must not be in the address pools below.
        controlPlaneVIP: 10.200.0.50
      # AddressPools is a list of non-overlapping IP ranges for the data plane load
      # balancer.
      # All addresses must be in the same subnet as the load balancer nodes.
      # Address pool configuration is only valid for 'bundled' LB mode in non-admin
      # clusters.
      addressPools:
      - name: pool1
        addresses:
        # Each address must be either in the CIDR form (1.2.3.0/24)
        # or range form (1.2.3.1-1.2.3.5).
        - 10.200.0.51-10.200.0.59
    
  • 클러스터 사양의 마지막 섹션은 loginUser를 지정합니다. 이 로그인은 아래에 지정된 SSH 키에 액세스할 수 있어야 하며, 기본 요건에서 키가 배포된 사용자입니다.

    nodeAccess:
      loginUser: LOGIN_USERNAME
    

    LOGIN_USERNAME을 사용자 클러스터에 로그인하는 데 사용된 사용자 이름으로 바꿉니다.

  • nodePool 사양은 관리 클러스터에서 관리 센터 콘솔, Prometheus, Grafana 및 기타 서비스를 호스팅할 노드를 식별합니다. 이러한 노드는 관리 클러스터의 워커 노드입니다. 예를 들면 다음과 같습니다.

    apiVersion: baremetal.cluster.gke.io/v1
    kind: NodePool
    metadata:
      name: node-pool-1
      namespace: cluster-admin
    spec:
      # Cannot be changed, must be admin
      clusterName: admin
      nodes:
      - address: 10.200.0.6
    

관리자 클러스터 만들기

다음 명령어를 실행하여 관리자 클러스터를 만듭니다. 약 30분이 소요됩니다.

cd ~/anthos-baremetal-private-mode
actl clusters baremetal create admin

관리자 클러스터가 생성되면 액세스할 수 있는지 확인합니다.

export ADMIN_KUBECONFIG=$(pwd)/bmctl-workspace/admin/admin-kubeconfig
KUBECONFIG=${ADMIN_KUBECONFIG} kubectl get nodes

관리 센터 설치

  1. 기본 구성으로 관리 클러스터에 관리 센터를 설치합니다.

    cd ~/anthos-baremetal-private-mode
    actl platform management-center create
    
  2. 브라우저에서 Anthos 관리 센터에 액세스합니다.

    actl platform management-center describe --kubeconfig=${ADMIN_KUBECONFIG}
    

Anthos 관리 센터 URL이 반환됩니다.

리소스 등록

인벤토리 머신 등록

사용자 클러스터를 만들려면 Anthos에 사용 가능한 유휴 상태의 머신 풀이 필요합니다. 이 섹션에서는 인벤토리 머신을 Anthos 관리자 클러스터에 등록하여 사용할 수 있도록 합니다.

kubectl apply -f <path/to/example-machine.yaml> --kubeconfig=${ADMIN_KUBECONFIG}

예:

apiVersion: baremetal.cluster.gke.io/v1alpha1
kind: InventoryMachine
metadata:
  name: IP_ADDRESS
  labels:
    "KEY": "VALUE"
spec:
  address: IP_ADDRESS

다음을 바꿉니다.

  • IP_ADDRESS: 머신의 IP 주소입니다(예: 10.200.0.10).
  • KEY:VALUE: 랙 위치를 나타내기 위한 키:값 쌍입니다(예: "rack": "r1020").

labels는 리소스에 연결된 자유 형식 키-값 쌍입니다. 이러한 라벨은 나중에 관리 센터에서 머신을 필터링하기 위해 사용될 수 있습니다. 예를 들어 라벨을 사용하여 랙 위치 또는 특별한 하드웨어 구성을 식별할 수 있습니다.

사용자 클러스터 만들기

관리 센터의 클러스터 페이지에서 만들기를 클릭하여 새 Anthos 사용자 클러스터를 만듭니다. 클러스터가 생성되면 관리 센터에 자동으로 등록되고 클러스터 대시보드에 즉시 표시됩니다.

클러스터 만들기

설치 및 준비되는 데 최대 15분이 걸릴 수 있습니다. 기다리는 동안 다음 명령어를 사용하여 사용자 클러스터의 상태를 확인할 수 있습니다.

kubectl get Cluster -n USER_CLUSTER_NAME --kubeconfig=${ADMIN_KUBECONFIG}

USER_CLUSTER_NAME을 생성된 클러스터 이름으로 바꿉니다.

상태가 준비되면 클러스터가 생성되고 관리자 클러스터에 등록됩니다.

사용자 클러스터에 대한 액세스 권한 획득

사용자 클러스터가 생성되면 관리 센터를 통해 kubeconfig를 다운로드할 수 있습니다.

데모 앱 배포

Online Boutique 샘플 애플리케이션을 사용해 Anthos 비공개 모드를 살펴볼 수 있습니다.

이미지 다운로드

이 섹션의 단계를 수행하려면 인터넷에 연결해야 합니다.

  1. 샘플 저장소를 다운로드합니다.

    git clone https://github.com/GoogleCloudPlatform/microservices-demo.git/ online-boutique
    
  2. 이미지 다운로드

    IMAGES=$(cat online-boutique/release/kubernetes-manifests.yaml | grep image | sed "s/ *image: //")
    actl images save --output online-boutique-images ${IMAGES}
    

샘플 배포

  1. 이미지를 비공개 레지스트리로 푸시합니다.

    actl images push --images online-boutique-images --private-registry=PRIVATE_REGISTRY
    

    PRIVATE_REGISTRY를 비공개 레지스트리 이름으로 바꿉니다.

  2. 애플리케이션의 네임스페이스를 만듭니다.

    kubectl create namespace demo --kubeconfig=USER_CLUSTER_KUBECONFIG
    

    USER_CLUSTER_KUBECONFIG를 사용자 클러스터 Kubeconfig 파일의 경로로 바꿉니다.

  3. 클러스터에 샘플을 배포합니다.

    kubectl apply -n demo -f online-boutique/release/ --kubeconfig=USER_CLUSTER_KUBECONFIG
    

리소스가 부족한 Online Boutique

삭제

다음 명령어를 실행하여 사용자 클러스터를 삭제합니다.

kubectl -n cluster-USER_CLUSTER_NAME \
  delete Cluster USER_CLUSTER_NAME --kubeconfig=ADMIN_KUBECONFIG

다음 단계