Kubernetes ワークロードの使用

Creating and Managing a Deployment

Objective

After completing this lesson, you will be able to デプロイメントの作成および管理

デプロイメントの作成および管理

使用シナリオ

開発したアプリケーションを Kubernetes クラスタにデプロイする必要があります。これを行うには、デプロイメントマニフェストを定義し、クラスタに適用します。

タスクフロー

この演習問題では、以下のタスクを実行します。

  1. Kyma ダッシュボードを使用してデプロイメントを作成します。
  2. デプロイメントマニフェストを更新して適用します。
  3. デプロイメントのスケーリング
  4. デプロイメントをロールバックします。

前提条件

開始する前に、以下の前提条件が満たされていることを確認してください。

タスク 1: Kyma ダッシュボードを使用したデプロイメントの作成

ステップ

  1. Kyma ダッシュボードで、default 名前空間に移動します。

  2. 編集セクションで、前の演習問題で Isito サイドカープロキシインジェクションを実行していない場合は有効化します。

  3. ワークロード → デプロイメントに移動し、作成ボタンを選択します。

    Kyma ダッシュボードでのデプロイメント
  4. デプロイメントの名前とコンテナのイメージを指定します。以下のデータを使用します。

    項目金額
    名称hello-kyma
    Docker イメージghcr.io/sap-samples/kyma-runtime-learning-journey/hello-kyma:1.0.0
    デプロイメントの作成
  5. トグルを切り替えて、Deployment に対して Istio サイドカープロキシインジェクションを有効化します。

  6. デプロイメントマニフェストをレビューするには、YAML タブを選択します。

    YAML のレビュー
  7. 登録ボタンを選択します。

    デプロイメント詳細ビューに自動的にリダイレクトされます。このビューには、作成されたデプロイメントおよび関連する Pod に関する詳細が含まれています。

  8. 作成されたデプロイメントの詳細を確認します。Resource Graph セクションまで下にスクロールして、作成された Deployment と、管理される ReplicaSet および Pod を確認します。

    hello-kyma という名前のデプロイメントとそれに関連付けられた ReplicaSet および Pod が表示されている Kyma ダッシュボード。リソースグラフセクションには、Deployment、ReplicaSet、および Pod の間の関係が視覚化されます。

タスク 2: kubectl を使用したデプロイメントマニフェストの更新および適用

ステップ

  1. default 名前空間内のすべてのデプロイメントを一覧表示するには、以下の kubectl コマンドを実行します。

    Code Snippet
    1
    kubectl get deployments

    作成したデプロイメントが出力に表示されます。

    コマンド kubectl get Deployments の出力を示す端末スクリーンショット。ここには hello-kyma という名前のデプロイメントが一覧表示され、1 Pod が準備完了、最新、および利用可能、および 33 分経過時間が示されます。
  2. デプロイメントマニフェストを YAML として取得するには、以下のコマンドを実行します。

    Code Snippet
    1
    kubectl get deployment hello-kyma -o yaml >> hello-kyma-deployment.yaml

    注記

    このタスクでは、kubectl を使用してデプロイメントマニフェストをダウンロードし、ローカルで編集します。Kyma ダッシュボードを使用してデプロイメントマニフェストを編集できますが、永続ファイルから変更を適用し、すべてのマニフェストをバージョン管理下に置くことが強く推奨されます。これは、Kyma ダッシュボードでは実行できません。

  3. 作業ディレクトリに移動し、hello-kyma-deployoment.yaml ファイルを開きます。

    1 つのレプリカを含む hello-kyma という名前の Kubernetes デプロイメントの YAML 設定。これにより、ローリング更新方針、リソース制限が指定され、ghcr.io/sap-samples/kyma-runtime-learning-journey からのイメージが使用されます。
  4. アプリケーションの新規バージョンを使用するようにデプロイメントを更新するには、現在のコンテナイメージを新しいバージョンに変更し、change-cause を設定して変更を文書化します。

    1. template.spec.containers.image 項目に ghcr.io/sap-samples/kyma-runtime-learning-journey/hello-kyma:1.1.0 というイメージを追加します。

    2. spec.template.metadata セクションに以下のアノテーションを追加します。

      Code Snippet
      12
      annotations: kubernetes.io/change-cause: Upgrade to new release v1.1.0
    デプロイメントアップグレード YAML
  5. ファイルを保存します。

  6. 更新されたデプロイメントマニフェストを適用します。

    Code Snippet
    1
    kubectl apply -f hello-kyma-deployment.yaml
  7. ロールアウト履歴で更新を確認するには、以下のコマンドを実行します。

    Code Snippet
    1
    kubectl rollout history deployment hello-kyma

    また、Kyma ダッシュボードのワークロード → デプロイメントセクションで、デプロイメントが更新されていることを確認することもできます。

タスク 3: デプロイメントのスケーリング

ステップ

  1. デプロイメントを 3 つのレプリカにスケーリングするには、以下を実行します。

    Code Snippet
    1
    kubectl scale deployment hello-kyma --replicas=3

    Kubernetes では 2 つの追加の Pod が作成されるため、3 つの Pod が実行されます。

  2. デプロイメントが正常にスケーリングされたことを確認するには、以下を実行します。

    Code Snippet
    1
    kubectl get deployment hello-kyma

    成功すると、応答に以下の出力が表示されます。

    Code Snippet
    12
    NAME READY UP-TO-DATE AVAILABLE AGE hello-kyma 3/3 3 3 6m10s

  3. Kyma ダッシュボードでこれを確認するには、Workloads → Deployments に移動し、hello-kyma Deployment を選択します。ポッドを含む一覧まで下にスクロールします。この一覧には 3 つのポッドが含まれています。

タスク 4: デプロイメントのロールバックの実行

新しいアプリケーションバージョンをデプロイしたものの、想定どおりに機能していないとします。デプロイメントを前のバージョンにロールバックできるようになりました。

ステップ

  1. ロールアウト履歴を一覧表示するには、以下を実行します。

    Code Snippet
    1
    kubectl rollout history deployment hello-kyma

    2 つのバージョンのデプロイメントが表示されます。

    コマンド `kubectl rollout history Deployment hello-kyma` の出力。2 つのリビジョンとその変更原因を含むデプロイメント hello-kyma のリビジョン履歴が表示されます。
  2. リビジョン番号を指定して、デプロイメントをロールバックします。

    Code Snippet
    1
    kubectl rollout undo deployment hello-kyma --to-revision=1

    正常に終了すると、deployment.apps/hello-kyma rolled back という出力が表示されます。

  3. ロールアウト履歴を再度一覧表示して、ロールバックを確認します。

    Code Snippet
    1
    kubectl rollout history deployment hello-kyma

    ロールバックが成功したかどうかが表示されます。さらに、改訂の順序が変更され、1 ずつ増加します。

    コマンド `kubectl rollout history Deployment hello-kyma` の出力。リビジョン 2 および 3 によるデプロイメントのリビジョン履歴と、それぞれの変更原因が表示されます。

結果

おめでとうございます!演習問題を完了しました。デプロイメントを作成、更新、スケーリング、およびロールバックできるようになりました。