Anthos プライベート モードをインストールするクイックスタート

Anthos プライベート モードとは、インターネットから物理的かつ完全に隔離された環境で実行される Anthos のバージョンの 1 つです。Anthos プライベート モードを使用すると、オンプレミスでは厳しく規制されるワークロードを実行でき、同時にクラウド用に構築されたインフラストラクチャの多くのメリットを享受できます。

Anthos プライベート モード クイックスタートの目的

このクイックスタート ガイドでは、Anthos プライベート モードを、ベアメタル マシン、ネットワーキング、ストレージ、オペレーティング システムなどのインフラストラクチャ レイヤを担当するインフラストラクチャ オペレーターとしてインストールする方法について説明します。このクイックスタートでは、次の方法を学習します。

  • 最小インストールの方法で、Anthos プライベート モードをインストールして構成する。
  • 管理クラスタをデプロイする。
  • ユーザー クラスタを作成し、そこにアプリケーションをデプロイする。

Anthos プライベート モードには、次の 2 種類のクラスタがあります。

  • 管理クラスタ。ユーザー クラスタの作成と管理に使用されます。
  • ユーザー クラスタ。ワークロードを実行します。

また、Anthos プライベート モードのデプロイメントをインストールして管理する必要なツールが単一のマシンに収められた管理ワークステーションもあります。

始める前に

Anthos プライベート モードの技術要件を満たし、すぐに使用できるマシンを 5 台以上用意します。このクイックスタートを進めるには、Kubernetes とシステム管理の経験が必要です。

環境の準備

Anthos プライベート モードへのアクセス権を取得する

Anthos プライベート モード リリースへのアクセス権は、Google から付与される必要があります。Google の担当者に各テスターのメールアドレスをご指定いただければ、ダウンロード リポジトリへのアクセス権をテスター各々に付与いたします。メールアドレスは Google アカウントである必要があります。

Google の担当者によって Anthos プライベート モード リリースにアクセスできることが確認された後、次のコマンドを実行して、Anthos プライベート モード リリースをダウンロードする権限があることを確認してください。

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

エラーが表示された場合は、gcloud auth list コマンドを実行して、Google の担当者に提供したものと同じ Google アカウントが gsutil で使用されていることを確認します。

または、正しく権限が付与されていることは、最新のリリース バケットにアクセスして確認することもできます。その際のログインは、前に指定した 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"

デモアプリのデプロイまで、インターネットに再度接続する必要はありません。

ローカルのコンテナ レジストリを設定する

Anthos プライベート モードは、Anthos コンテナ イメージをローカルのコンテナ レジストリに保存することにより機能します。

次の環境変数をエクスポートします。

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 プライベート モード コンテナ レジストリをインストールして使用する場合は、ここで管理ワークステーションの IP アドレスを使用します。

  • REGISTRY_PASSWORD は、レジストリ パスワードに設定した値です。

Anthos プライベート モードの Container Registry を設定する

このセクションでは、管理ワークステーションに非公開のコンテナ レジストリを設定します。管理ワークステーションから、次のコマンドをすべて実行します。

  1. 自前の非公開コンテナ レジストリがない場合は、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}
    

コンテナ レジストリは、サービスの開始後、https://REGISTRY_HOST/ で利用できます。ログイン認証情報は、ユーザー名が admin で、パスワードは REGISTRY_PASSWORD です。

コンテナ レジストリにイメージをアップロードする

このセクションでは、Anthos プライベート モードのコンテナ イメージをコンテナ レジストリにアップロードします。

Anthos プライベート モードのコンテナ イメージを準備して、コンテナ レジストリにアップロードします。入力を求めるメッセージが表示されたら、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

Management Center をインストールする

このセクションでは、ベアメタル マシンに Anthos 管理クラスタをインストールし、つづいて管理クラスタに、Anthos Management Center をインストールします。

管理クラスタ構成ファイルを準備する

環境に合わせて ./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 は、レジストリがトラフィックを暗号化するために使用する認証局の場所です。この証明書はインストール プロセス中にノードへ配布され、ノードがレジストリからイメージを pull できるようにします。通常は、/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 仕様は、使用するロードバランサのタイプを定義します。デフォルト構成では、実行中のクラスタにロードバランサがインストールされます。この場合は、少なくとも controlPlaneVIP を設定して仮想 IP(VIP)アドレスプールを識別して Kubernetes API Server を公開し、addressPools を設定して VIP をリクエストするサービスにオンデマンドで割り当てる必要があります。次に例を示します。

    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 仕様では、管理クラスタ上で Management Center Console、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

Management Center をインストールする

  1. 管理クラスタに Management Center をデフォルト構成でインストールします。

    cd ~/anthos-baremetal-private-mode
    actl platform management-center create
    
  2. ブラウザで Anthos Management Center にアクセスします。

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

Anthos Management Center の URL が返されます。

リソースの登録

在庫マシンの登録

ユーザー クラスタを作成するには、アイドル状態のマシンのプールを利用可能にする必要があります。このセクションでは、在庫マシンを 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: Key-Value ペア(ラックの場所を示す "rack": "r1020" など)。

labels は、リソースに関連付けられる自由形式の Key-Value ペアです。これらのラベルは、後で Management Center でマシンをフィルタリングするために使用できます。たとえば、このラベルを使用してラックの場所や特別なハードウェア構成を特定できます。

ユーザー クラスタの作成

Management Center の [Cluster] ページで、[Create] をクリックして、新しい Anthos ユーザー クラスタを作成します。クラスタは、作成すると Management Center に自動的に登録され、すぐにクラスタ ダッシュボードに表示されます。

クラスタの作成

インストールして準備が整うまで、最大で 15 分ほどかかる場合があります。待つ間、ユーザー クラスタのステータスは、次のコマンドを使用して確認できます。

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

USER_CLUSTER_NAME は、作成したクラスタの名前に置き換えます。

準備完了ステータスになると、クラスタは正常に作成され、管理クラスタに登録されています。

ユーザー クラスタへのアクセス

ユーザー クラスタの作成後、Management Center から kubeconfig をダウンロードできます。

デモアプリのデプロイ

Anthos プライベート モードは、Online Boutique のサンプル アプリケーションを実行して詳細を確認できます。

イメージのダウンロード

このセクションの手順には、インターネット接続が必要です。

  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. イメージを非公開レジストリに push します。

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

    PRIVATE_REGISTRY は、非公開レジストリの名前に置き換えます。

  2. アプリケーションの Namespace を作成します。

    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
    

リソースが不足している OnlineBoutique

クリーンアップ

次のコマンドを実行して、ユーザー クラスタを削除します。

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

次のステップ