NGINX マイクロサービスのデプロイと更新

KubernetesBeginner
オンラインで実践に進む

はじめに

この初級コースの最後のチャレンジへようこそ。これまでの実験では、Pod、Deployment、Service、スケーリング、トラブルシューティング、ロールバックについて学びました。ここでは、それらの知識を、コマンドごとの手順説明なしで、1 つの小規模なリリース作業に応用します。

環境には、web-app という正常に稼働している初期リリースが用意されています。あなたの作業は、3 つの利用可能なレプリカと安定した Service を維持しながら、次の固定バージョンの NGINX イメージをリリースすることです。チャレンジ終了時のクラスター状態と保存済みマニフェストが一致している必要があります。これにより、チャレンジ後もリリースを再現できます。

次の NGINX バージョンをリリースする

環境の起動: この実験では、完全な Kubernetes クラスターが起動します。コントロールプレーン、ノード、ネットワークコンポーネントの構成には通常 2~3 分かかります。環境の読み込みが完了するまで、そのままお待ちください。

現在の状況

プラットフォームチームは、/home/labex/project/final-release/web-app.yaml に初期リリースを用意しています。現在は nginx:1.26-alpine を 3 つのレプリカとして実行し、Service web-app の背後で公開しています。

作業範囲

  • 既存の web-app Deployment、Service、マニフェスト、および release-check クライアントを使用します。
  • リソース名を変更したり、セレクターを変更したり、承認済みのローリングアップデート設定を置き換えたりしないでください。
  • 固定されたターゲットイメージを使用してください。latest のような可変タグは承認対象外です。

目標

既存の Deployment を通じて nginx:1.27-alpine をリリースし、稼働中のクラスター、Service のアクセス経路、保存済みマニフェストが、健全で再現可能な 1 つの状態になるようにします。

受け入れ条件

  • Deployment web-app の希望レプリカ数が正確に 3 であること。
  • nginx コンテナが固定イメージ nginx:1.27-alpine を使用していること。
  • ローリングアップデート設定が maxUnavailable: 0 および maxSurge: 1 のままであること。
  • 変更理由のアノテーションが NGINX 1.27 のリリース内容を示していること。
  • Service web-app が引き続き Deployment の Pod を選択し、準備完了状態のバックエンドを 3 つ持っていること。
  • 更新後の 3 つのレプリカがすべて準備完了かつ利用可能であり、クラスター内から http://web-app への HTTP リクエストが成功すること。
  • /home/labex/project/final-release/web-app.yaml に最終的なイメージとロールアウト設定が記載され、再度適用しても承認済みの状態が維持されること。

Kubernetes の状態確認コマンドとロールアウトコマンドを使って、リリースが完了したかどうかを判断してください。更新がまだ進行中の場合は、最初の kubectl get の結果だけで判断せず、完了するまで待ちます。

ヒント

Deployment の READYUP-TO-DATEAVAILABLE 列、Pod のイメージ、ロールアウト履歴、Service の EndpointSlice アドレスを確認するとよいでしょう。

まとめ

Kubernetes Deployment を通じて固定バージョンの NGINX イメージを自分でリリースし、このコースを修了しました。明示的な可用性設定を維持し、更新されたすべてのレプリカを待機し、Service を準備完了状態の 3 つのバックエンドに接続したままにし、クラスター内からのリクエストを検証し、承認済みの状態を YAML に保存しました。

これらの確認手順は、初学者が繰り返し利用できるワークフローを構成します。望ましい状態を宣言し、それを適用し、コントローラーの進行状況を監視し、ワークロードとそのアクセス経路を検証し、マニフェストとクラスターの状態を同期させておく、という流れです。

✨ 解答を確認して練習