切断モードで動作する Anthos のインストールのクイックスタート

切断モードで動作する Anthos は、エアギャップ環境でインターネットから完全に分離されたバージョンの Anthos です。切断モードで動作する Anthos を使用すれば、高度に規制されたワークロードをオンプレミスで実行でき、しかもクラウド用に構築されたインフラストラクチャの多くの利点を活用できます。

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

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

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

切断モードで動作する Anthos には、次の 2 種類のクラスタがあります。

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

また、管理ワークステーションには、切断モードで動作する Anthos のデプロイをインストールして管理するために必要なツールを備えた単一のマシンがあります。

始める前に

切断モードで動作する Anthos の技術的な要件を満たし、5 つ以上のマシンをすぐに使用できることを確認します。このクイックスタートを進めるには、Kubernetes とシステム管理の経験が必要です。

環境の準備

切断モードで動作する Anthos にアクセスする

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

切断モードで動作する Anthos にアクセスできることを Google の担当者が確認したら、次のコマンドを実行して、切断モードで動作する Anthos のリリースをダウンロードする権限があることを確認します。

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

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

または、正しく権限が付与されていることは、最新のリリース バケットにアクセスして確認することもできます。その際のログインは、前に指定した Google アカウントで行う必要があります。

切断モードで動作する Anthos のリリースへのアクセスに問題がある場合は、Google の担当者にお問い合わせください。

切断モードで動作する Anthos をダウンロードする

このセクションでは、切断モードで動作する Anthos をダウンロードします。Anthos リリースは、それぞれ数ギガバイトの複数のファイルに格納されます。ご使用のインターネット接続によっては、ダウンロードに長い時間がかかることがあります。

切断モードで動作する Anthos をダウンロードする

管理ワークステーションで、次のコマンドを実行します。

# Login with the account granted access to Anthos running in disconnected mode
gcloud auth login

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

# Please use official 'INSTALLER_DIGEST' value from https://cloud.google.com/anthos/private-mode/docs/1.11/installing/infrastructure#download
export INSTALLER_DIGEST=53275103489dd7569a321da5f70d78cad00a9e3b6a550202200ede37d51d4d3e
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 を設定する

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

  1. 独自のプライベート コンテナ レジストリがない場合は、切断モードで動作する Anthos のコンテナ レジストリをインストールします。

    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
      # Layer 7 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 をダウンロードできます。

デモアプリのデプロイ

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

次のステップ