2023年8月24日 【Google Cloud】Migrate for Anthos and GKEでVMを移行してみた(4:「計画」後半~「デプロイ」) Anthos 検索する Popular tags 生成AI(Generative AI) Looker Studio BigQuery AlloyDB Google Workspace 事例紹介 Cloud SQL Category Google Cloud Author Google Cloud研究開発チーム SHARE Content Google CloudのMigrate for Anthos and GKEは、オンプレミス環境や他のクラウド環境からGoogle Kubernetes Engine(GKE)へのアプリケーション移行を簡単に実現するためのサービスです。 この記事ではMigrate for Anthos and GKEの概要や実際に利用検証をした内容をご紹介します。(全4回) ・1:概要編 ・2:「評価」 ・3:「計画」前半 ・4:「計画」後半~「デプロイ」 ★本記事 ・計画(Plan)- 後半 ・Migrate to Containersの準備 ・デプロイ(Deploy) ・全体のまとめ 計画(Plan)- 後半 ここでは Migrate to Containersの準備を行います。 Migrate to Containersの準備 Migrate to Containersの準備をします。 APIの有効化とサービス アカウントの構成 (参考:Google サービスの有効化とサービス アカウントの構成) 公式ドキュメントを参照し、足りないAPIを有効化しておきます。手順は省略します。 サービスアカウントを作成します。 Migrate to Containersのインストール(移行先の追加) (参考:Migrate to Containers のインストール) Migrate to Containersの構築を行います。今回はCloud Consoleから実施します。 Anthos > Migrate to Containersで「ソースを追加」を選択し、「処理クラスタを追加」します。 「新しい処理クラスタの追加」ページでワークロードOSの種類、対象GKEクラスタ、アーティファクトリポジトリ(GCSバケット)、イメージリポジトリ(Container Registoryプロジェクト)名を入力します。 サービス アカウントは先ほど作成したものを指定します。そして「デプロイ」します。 移行元の追加 Anthos > Migrate to Containersで「ソースを追加」します。 処理クラスタを選択します。 ソースの名称を入力し、ソースにCompute Engineを選択します。 移行対象のGCEが存在するプロジェクトを選択し、事前に作成したサービスアカウント(m4a-ce-src@bs-gcp-dev.iam.gserviceaccount.com)を指定します。 設定内容を確認して「ソースを追加」します。 移行元と移行先の確認 追加したソースを確認してみます。 「ソースを管理」を押下すると、遷移先のページで「Migrate to Containersのインストール」で追加したソースが確認できます。 また、「移行先と候補」タブで追加したソースを選択すると、移行元としてCompute Engineのインスタンスを確認できます。 移行計画の作成 (参考:移行計画を作成する > Linux ワークロードと Windows ワークロード) Anthos > Migrate to Containersで「移行の作成」を押下し、次の内容(カッコ内は今回の設定値)を指定して「移行を作成」します。 ・移行名(migrate-apatch-server) ・ソース(migrate-to-container01 – cluster-anthos) ・ワークロードタイプ( Linux system container ) ・VM ID(anthos01) 移行計画の作成が完了しました。 デプロイ(Deploy) GKEデプロイを行います。 モニタリングタブで「アーティファクトの生成」を押下します。 アーティファクトが生成できました。 生成が完了すると、GCSバケットに各種ファイルが生成されます。 上記で生成されたアーティファクトのうち、deployment_spec.yamlをダウンロードして、Podを公開するためにを設定を追加します。一番下にサービスをLoadBalancerタイプのサービスを追加しています。 # Stateless application specification # The Deployment creates a single replicated Pod, indicated by the 'replicas' field apiVersion: apps/v1 kind: Deployment metadata: creationTimestamp: null labels: anthos-migrate.cloud.google.com/type: linux-container app: anthos01 migrate-for-anthos-optimization: "true" migrate-for-anthos-version: v1.14.0 name: anthos01 spec: replicas: 1 selector: matchLabels: anthos-migrate.cloud.google.com/type: linux-container app: anthos01 migrate-for-anthos-optimization: "true" migrate-for-anthos-version: v1.14.0 strategy: {} template: metadata: creationTimestamp: null labels: anthos-migrate.cloud.google.com/type: linux-container app: anthos01 migrate-for-anthos-optimization: "true" migrate-for-anthos-version: v1.14.0 spec: containers: - env: - name: HC_V2K_SERVICE_MANAGER value: "true" image: gcr.io/bs-gcp-dev/anthos01:4-5-2023--11-9-45 imagePullPolicy: IfNotPresent livenessProbe: exec: command: - /gamma - probe name: anthos01 readinessProbe: exec: command: - /gamma - probe resources: {} --- # Headless Service specification - # No load-balancing, and a single cluster internal IP, only reachable from within the cluster # The Kubernetes endpoints controller will modify the DNS configuration to return records (addresses) that point to the Pods, which are labeled with "app": "anthos01" apiVersion: v1 kind: Service metadata: creationTimestamp: null labels: anthos-migrate.cloud.google.com/type: linux-container migrate-for-anthos-optimization: "true" migrate-for-anthos-version: v1.14.0 name: anthos01 spec: clusterIP: None selector: app: anthos01 type: ClusterIP --- apiVersion: v1 kind: Service metadata: name: test-service spec: selector: app: anthos01 ports: - protocol: TCP port: 80 targetPort: 80 type: LoadBalancer --- 必要に応じてkubectlをインストールします。(参考:kubectl をインストールし、クラスタ アクセスを構成する) 変更したdeployment_spec.yamlをもってkubectl applyします。 k_shiga@cloudshell:~ (bs-gcp-dev)$ kubectl apply -f deployment_spec.yaml deployment.apps/anthos01 created service/anthos01 created service/test-service created k_shiga@cloudshell:~ (bs-gcp-dev)$ kubectl get service test-service NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE test-service LoadBalancer 10.112.13.253 <pending> 80:31755/TCP 19s k_shiga@cloudshell:~ (bs-gcp-dev)$ kubectl get service NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE anthos01 ClusterIP None <none> <none> 35s kubernetes ClusterIP 10.112.0.1 <none> 443/TCP 2d3h test-service LoadBalancer 10.112.13.253 <pending> 80:31755/TCP 35s k_shiga@cloudshell:~ (bs-gcp-dev)$ kubectl get service NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE anthos01 ClusterIP None <none> <none> 29m kubernetes ClusterIP 10.112.0.1 <none> 443/TCP 2d3h test-service LoadBalancer 10.112.13.253 34.84.161.69 80:31755/TCP 29m 最後の行を見ると、追加したサービス(test-service)による EXTERNAL-IP が割り当てられていることがわかります。 動作確認 ブラウザからアクセスを確認してみると、正常にページが表示できました。 全体のまとめ 以上、Migrate for Anthos and GKEをで実際にシンプルなWebサーバを移行してみました。実際の検証を通して次のメリットを感じました。 ・適合性評価ツールの実行で着手前に問題点を洗い出せること ・手動での再構築と比べてかかる工数が少ないこと ・豊富な公式ドキュメントを参照しながら作業できること 実務上の厳しい要件の中で利用するとなると、もっと多くの検討事項が出てくるかもしれませんが、適合性評価ツールの利用だけでも移行の工数を削減できるかもしれません。マッチしそうなケースに当たったらぜひ一度利用してみてください。 頂きましたご意見につきましては、今後のより良い商品開発・サービス改善に活かしていきたいと考えております。 よく分かった もっと知りたい 参考になった 使ってみたい よく分からなかった Author Google Cloud研究開発チーム 株式会社システムサポート(STS)のGoogle Cloud研究開発チームです。 実際に技術検証した事例を中心に記事発信していきます。 Anthos 2023年8月24日 【Google Cloud】Migrate for Anthos and GKEでVMを移行してみた(4:「計画」後半~「デプロイ」) Category Google Cloud 前の記事を読む 【Google Cloud】Migrate for Anthos and GKEでVMを移行してみた(3:「計画」前半) 次の記事を読む 【Google Cloud】TerraformでBigQueryデータセットにタグを紐付ける Recommendation オススメ記事 2023年9月5日 Google Cloud 【Google Cloud】Looker Studio × Looker Studio Pro × Looker を徹底比較!機能・選び方を解説 2023年8月24日 Google Cloud 【Google Cloud】Migrate for Anthos and GKEでVMを移行してみた(1:概要編) 2022年10月10日 Google Cloud 【Google Cloud】AlloyDB と Cloud SQL を徹底比較してみた!!(第1回:AlloyDB の概要、性能検証編) BigQuery ML ワークショップ開催のお知らせ 生成AI導入支援パッケージ Discovery AI導入支援パッケージ Google Cloud ホワイトペーパー 新着記事 2024年10月9日 イベント・セミナー 【参加無料】typeエンジニア転職フェア 出展のお知らせ(2024/10/12) 2024年10月4日 イベント・セミナー 【11/20開催】データ分析&活用ウェビナー(事例紹介付き) 2024年9月30日 Google Cloud 【Google Cloud】サーバレスでマネージドなサービス「Cloud Run」でアプリケーションを走らせよう! HOME Google Cloud 【Google Cloud】Migrate for Anthos and GKEでVMを移行してみた(4:「計画」後半~「デプロイ」)