Linux ワークロードをターゲット クラスタにデプロイする

ソースプラット フォームからワークロードを移行したら、そのプロセスで生成されたデプロイ アーティファクトを使用して、移行したワークロード コンテナを別のクラスタにデプロイできます。

Skaffold は、アプリケーションのビルド、push、デプロイのワークフローを処理できます。詳細については、Skaffold を使用して複数のイメージをビルドしてデプロイするをご覧ください。

始める前に

ワークロードをデプロイする前に、次の処理を完了しておく必要があります。

処理クラスタにワークロードをデプロイする

移行に使用したのと同じクラスタ(Migrate to Containers 処理クラスタ)に、移行したワークロードをデプロイできます。ほとんどの場合、処理クラスタは移行の実施に Docker レジストリへの読み取り / 書き込みアクセス権を必要としているため、処理クラスタで追加の構成を行う必要はありません。

Docker レジストリとして GCR を使用してターゲット クラスタにデプロイする

ターゲット クラスタに Google Container Registry(GCR)へのアクセス権が付与されていることを確認するには、GCR へのアクセスに必要な認証情報を含む Kubernetes Secret を作成します。

  1. Container Registry と Cloud Storage にアクセスするためのサービス アカウントを作成するで説明されているように、移行をデプロイするためのサービス アカウントを作成します。

    このプロセスでは、m4a-install.json という名前の JSON キーファイルをダウンロードする必要があります。

  2. GCR にアクセスするために必要な認証情報を含む Kubernetes Secret を作成します。

    kubectl create secret docker-registry gcr-json-key \
     --docker-server=gcr.io --docker-username=_json_key --docker-password="$(cat ~/m4a-install.json)" \
     --docker-email=account@project.iam.gserviceaccount.com

    ここで

    • docker-registry には、Kubernetes Secret の名前(この例では gcr-json-key)を指定します。
    • docker-server=gcr.io には、GCR をサーバーとして指定します。
    • docker-username=_json_key は、ユーザー名が JSON キーファイルに含まれていることを指定します。
    • docker-password は、JSON キーファイルからパスワードを使用する場合に指定します。
    • docker-email には、サービス アカウントのメールアドレスを指定します。
  3. 次のいずれかの方法で、Kubernetes Secret を設定します。

    • デフォルトの imagePullSecrets 値を次のように変更する。

      kubectl patch serviceaccount default -p '{"imagePullSecrets": [{"name": "gcr-json-key"}]}'
    • deployment_spec.yaml ファイルを編集して、以下に示すように imagePullSecrets の値を spec.template.spec 定義に追加する。

      spec:
        containers:
        - image: gcr.io/PROJECT_ID/mycontainer-instance:v1.0.0
          name: mycontainer-instance
          ...
        volumes:
        - hostPath:
            path: /sys/fs/cgroup
            type: Directory
          name: cgroups
        imagePullSecrets:
        - name: gcr-json-key

Docker レジストリを使用してターゲット クラスタに基本認証でデプロイする

Docker レジストリを使用して移行イメージを保存する場合は、レジストリでユーザー名とパスワードを使用した基本認証がサポートされている必要があります。Docker レジストリへの読み取り専用接続を構成する方法は多数あるため、クラスタ プラットフォームと Docker レジストリに適した方法を使用する必要があります。

生成されたデプロイ YAML ファイルを適用する

kubectl を使用して、本番環境クラスタなどのターゲット クラスタにデプロイ仕様を適用します。

kubectl

  1. ターゲット クラスタに Docker イメージ レジストリへの読み取りアクセス権が付与されていることを確認するで説明しているように、ターゲット クラスタに Docker イメージ レジストリへの読み取りアクセス権が付与されていることを確認します。

  2. コンテナをデプロイします。

    kubectl apply -f deployment_spec.yaml
  3. 移行したワークロードの検証テストを完了して、移行したワークロードが正しく機能していることを確認したら、移行を削除してリソースを解放する必要があります。詳細については、移行の削除をご覧ください。

移行を削除する

移行されたワークロードが正しく機能していることを検証してテストしたら、移行を削除する必要があります。移行を削除すると、その移行で使用したすべてのリソースが解放されます。

migctl

  1. 完了した移行を削除するには、次のコマンドを使用します。

    migctl migration delete MIGRATION_NAME

    ここで MIGRATION_NAME はインスタンスの名前です。

コンソール

  1. Google Cloud コンソールで [Migrate to Containers] ページを開きます。

    [Migrate to Containers] ページに移動

  2. [移行] タブをクリックして、使用可能な移行を含むテーブルを表示します。

  3. 移行を削除するには、テーブルの右側にあるゴミ箱アイコン、、の順にクリックし、[移行を削除] を選択します。

次のステップ