🐡

OpenShiftデプロイメント管理の基本

2025/01/19に公開

0.はじめに:OpenShiftのデプロイメント管理とは?

OpenShiftのアプリケーションデプロイメント管理は、アプリケーションのライフサイクルを効果的に制御するためのプロセスです。

これには、デプロイメントの更新、スケーリング、ロールバック、停止などの操作が含まれ、アプリケーションを安定かつ効率的に稼働させることを目的としています。

この記事では、OpenShiftでアプリケーションを作成し、デプロイメントを管理する方法について詳細に解説します。

では、次の章から具体的な解説を進めます!

1.デプロイメント戦略

デプロイメント戦略は、アプリケーションを新しいバージョンに更新する際の方法を定義します。OpenShiftでは主に以下の2つの戦略が利用されます:

1. ローリングアップデート

  • 概要:
    Podを段階的に新しいバージョンに置き換える戦略。
  • メリット:
    更新中もアプリケーションは常に利用可能(ダウンタイムなし)。
  • 動作:
    • 古いPodを少しずつ削除しながら、新しいPodを追加。
    • デフォルトのデプロイメント戦略として使用されます。

2. 再作成戦略

  • 概要:
    既存のPodをすべて停止してから、新しいPodを作成する戦略。
  • メリット:
    シンプルで、互換性のない更新に適している。
  • デメリット:
    更新中に短時間のダウンタイムが発生。
  • 使用例:
    • YAMLファイルで以下を指定して利用します。

以降では、一般的かつデフォルトのデプロイメント戦略である、「ローリングアップデート」の管理手順を解説します。

2.アプリケーションデプロイメントの管理手順

以下に具体的な手順を示します。

1. 新しいプロジェクトの作成

デプロイメント管理のテスト用にプロジェクトを作成します。

oc new-project deployment-demo

2. httpdサーバのデプロイ

YAMLファイルを使用してDeploymentリソースを作成します。

oc apply -f httpd-deployment.yaml

httpd-deployment.yamlの例:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: httpd-deployment
spec:
  replicas: 2
  selector:
    matchLabels:
      app: httpd
  template:
    metadata:
      labels:
        app: httpd
    spec:
      containers:
      - name: httpd
        image: httpd:2.4
        ports:
        - containerPort: 80

3. ローリングアップデート

YAMLファイルを更新し、新しいイメージ(例: httpd:2.4.54)に変更して適用します。

vi httpd-deployment.yaml
oc apply -f httpd-deployment.yaml

更新がローリングアップデートで進行していることを確認します。

oc rollout status deployment/httpd-deployment

実行結果の例:

deployment "httpd-deployment" successfully rolled out

4. ロールバック

更新が問題を引き起こした場合、以前のリビジョンにロールバックします。

oc rollout undo deployment/httpd-deployment --to-revision=1

ロールバックの状態を確認します。

oc describe pod <podname>

5. リビジョン履歴の確認

特定のリビジョン情報を表示します。

oc rollout history deployment/httpd-deployment --revision=2

履歴全体の確認:

oc rollout history deployment/httpd-deployment

実行結果の例:

deployment.apps/httpd-deployment
REVISION  CHANGE-CAUSE
1         Initial deployment
2         Updated image to httpd:2.4.54

6. デプロイメントのスケーリング

レプリカ数を増やしてPodの負荷分散能力を強化します。

oc scale deployment/httpd-deployment --replicas=5

結果確認:

oc get pods

7. ロールアウトの停止と再開

デプロイメントの更新プロセスを一時停止します。

oc rollout pause deployment/httpd-deployment

再開する場合:

oc rollout resume deployment/httpd-deployment

3.OpenShiftデプロイメント管理で使用するコマンドまとめ

以下、使用コマンドのまとめです。

操作 コマンド例
プロジェクトの作成 oc new-project deployment-demo
Deploymentの作成 oc apply -f httpd-deployment.yaml
ローリングアップデート oc apply -f httpd-deployment.yamloc rollout status deployment/httpd-deployment
ロールバック oc rollout undo deployment/httpd-deployment --to-revision=1
リビジョン履歴の確認 oc rollout history deployment/httpd-deployment
スケーリング oc scale deployment/httpd-deployment --replicas=5
ロールアウト停止 oc rollout pause deployment/httpd-deployment
ロールアウト再開 oc rollout resume deployment/httpd-deployment

4.おわりに:デプロイメント管理の重要性

今回はデプロイメント管理の重要性について理解を深めるために、以下を学びました。

  1. 継続的な更新:
    ローリングアップデートにより、ダウンタイムなしでアプリケーションを最新の状態に保てます。

  2. 安定した運用:
    ロールバックやスケーリングにより、トラブル発生時でも迅速に復旧・調整できます。

  3. 効率的なリソース利用:
    スケーリング機能を活用することで、需要に応じたリソース割り当てが可能です。

1回で覚えるのは難しいと思うので、何度かトライして覚えるで全然大丈夫です。

今後もOpenShiftについて解説していきます。

おわりっ!

参考サイト

Discussion