はじめに
このチャレンジでは、新興テック企業のジュニア DevOps エンジニアとして、Kubernetes のスキルを実証していただきます。マイクロサービスとして稼働している NGINX を使用した Web アプリケーションを、サービスの停止を最小限に抑えながら更新することが目標です。具体的には、Kubernetes のデプロイメント(Deployment)を更新して新しいバージョンのイメージを適用し、ローリングアップデート(Rolling Update)が正常に完了したことを確認するタスクに取り組んでいただきます。
NGINX デプロイメントの更新
ジュニア DevOps エンジニアとしてのあなたの任務は、既存のデプロイメントを更新し、サービスの切断を最小限に抑えることです。
事前準備
開始する前に、以下の環境が整っていることを確認してください。
minikube start
kubectl apply -f ~/project/k8s-manifests/nginx-deployment.yaml
デプロイメントの状態を確認します。
kubectl get deployments
タスク
web-appデプロイメントを更新し、イメージnginx:1.24.0-alpineを使用するように変更してください。- ローリングアップデートによって更新が正常に行われ、ダウンタイムが発生しなかったことを確認してください。
要件
- 更新には
kubectlコマンドを使用すること。 - 更新中もデプロイメントがダウンタイムなしで機能し続けていることを確認すること。
kubectl rollout statusを使用して、更新の進捗を監視すること。- Pod のイメージを確認し、バージョンが更新されていることを検証すること。
ヒント
- イメージの更新には
kubectl edit deployment web-appまたはkubectl set imageを使用します。 kubectl rollout statusでロールアウトの状況を監視できます。- 実行中の Pod とそのコンテナイメージの検証には
kubectl get pods -o jsonpathが便利です。
まとめ
このチャレンジでは、NGINX Web アプリケーションのデプロイメントを新しいイメージバージョンに更新することで、Kubernetes のスキルを実証しました。プロセス中のゼロダウンタイムを維持し、ローリングアップデートの成功を確認しました。この演習は、Kubernetes 環境でアップデートを行う際に、高い可用性(High Availability)を維持することの重要性を強調するものです。


