Red Hat Training

A Red Hat training course is available for OpenShift Container Platform

第3章 クラスターの手動によるインプレースアップグレードの実行

3.1. 概要

重要

OpenShift Container Platform 3.9 の時点で、手動のアップグレードはサポートされていません。今後のリリースで、このプロセスは削除されます。

自動アップグレードに代わる方法として、OpenShift Container Platform クラスターを手動でアップグレードできます。中断なしの手動アップグレードを実行するには、このトピックで説明されているように各コンポーネントをアップグレードすることが重要になります。

アップグレードを開始する前に、手順全体に精通するようにしてください。リリースごとの追加の手動ステップを、標準アップグレードプロセス前やその実行中の主要なポイントで実行する必要がある場合があります。

重要

アップグレードに進む前に、すべての 前提条件を満たしていることを確認します。前提条件を満たしていないと、アップグレードが失敗する可能性があります。

GlusterFS を使用している場合は、「コンテナー化された GlusterFS を使用する場合の特別な考慮事項」を参照してからアップグレードを行ってください。

3.2. 手動アップグレードの準備

注記

クラスターの OpenShift Container Platform 3.9 へのアップグレードの前に、クラスターは バージョン 3.7 の最新の非同期リリースにアップグレードされている必要があります。クラスターのバージョンが 3.7 よりも前の場合、バージョンを徐々にアップグレードする必要があります (例: 3.5 から 3.6 にアップグレードしてから 3.6 から 3.7 にアップグレードする)。

手動アップグレードの準備をするには、以下の手順に従います。

  1. アップグレードの検証」の手順に従い、クラスターの健全性を確認します (3.7 から 3.9 にアップグレードしている場合は、コマンド出力で指定の 3.9 ではなく、関連する 3.7 バージョンについて確認します)。これにより、ノードが Ready 状態にあり、予想される開始バージョンを実行していることが確認され、診断エラーや警告がないことを確認できます。
  2. 最新のサブスクリプションデータを Red Hat Subscription Manager (RHSM) からプルします。

    # subscription-manager refresh
  3. OpenShift Container Platform 3.7 から 3.9 にアップグレードしている場合は、以下を実行します。

    1. 3.7 リポジトリーを手動で無効にし、各マスターおよびノードホストで 3.8 および 3.9 リポジトリーの両方を有効にします。また、rhel-7-server-ansible-2.4-rpms リポジトリーを有効にする必要もあります。これは OpenShift Container Platform 3.9 以降の新規の要件です。

      # subscription-manager repos --disable="rhel-7-server-ose-3.7-rpms" \
          --enable="rhel-7-server-ose-3.8-rpms" \
          --enable="rhel-7-server-ose-3.9-rpms" \
          --enable="rhel-7-server-extras-rpms" \
          --enable="rhel-7-server-ansible-2.4-rpms" \
          --enable="rhel-7-fast-datapath-rpms"
      # yum clean all
    2. OpenShift Container Platform 3.9 にアップグレードする前に、swap メモリーをクラスターで無効にしている必要があります。そうしない場合、アップグレードは失敗します。swap メモリーが Ansible インベントリーファイルの openshift_disable_swap=false を使用して有効にされているか、またはホストごとに手動で有効にされているかどうかについては、『クラスター管理ガイド』の「swap メモリーの無効化」を確認し、各ホストで無効にしてください。
  4. 各 RHEL 7 システムで利用可能な最新バージョンの atomic-openshift-utils パッケージをインストールするか、これに更新します。これは、後のセクションで使用されるファイルを提供します。

    # yum install atomic-openshift-utils
  5. 各 RHEL 7 システムで以下の利用可能な最新の *-excluder パッケージをインストールするか、またはこれに更新します。これにより、アップグレードを OpenShift Container Platform バージョンに応じて実行しようとしない場合に、システムのバージョンが適切なバージョンの atomic-openshift および docker パッケージであることを確認できます。

    # yum install atomic-openshift-excluder atomic-openshift-docker-excluder

    これらのパッケージはエントリーをホストの /etc/yum.conf ファイルの exclude ディレクティブに追加します。

  6. 各 etcd ホストで etcd バックアップを作成 します。
  7. アップグレードパスについては、各 RHEL 7 システムで最新のカーネルを実行していることを確認します。

    # yum update kernel

3.3. マスターコンポーネントのアップグレード

スタンドアロンノードをアップグレードする前に、(クラスターの コントロールプレーン を提供する) マスターコンポーネントをアップグレードします。

  1. 各マスターで以下のコマンドを実行し、atomic-openshift パッケージをホストの yum の exclude 一覧から取り除きます。

    # atomic-openshift-excluder unexclude
  2. すべてのマスターホストおよび外部 etcd ホストで etcd をアップグレードします。

    1. RPM ベースの方法を使用する RHEL 7 システムの場合:

      1. etcd パッケージをアップグレードします。

        # yum update etcd
      2. etcd サービスを再起動し、ログでこれが正常に再起動したことを確認します。

        # systemctl restart etcd
        # journalctl -r -u etcd
    2. コンテナー化方式を使用する RHEL Atomic Host 7 システムおよび RHEL 7 システムの場合:

      1. 最新の rhel7/etcd イメージをプルします。

        # docker pull registry.access.redhat.com/rhel7/etcd
      2. etcd_container サービスを再起動し、ログでこれが正常に再起動したことを確認します。

        # systemctl restart etcd_container
        # journalctl -r -u etcd_container
  3. 各マスターホストで、atomic-openshift パッケージまたは関連イメージをアップグレードします。

    1. RHEL 7 システムで RPM ベースの方法を使用するマスターの場合、インストールされたすべての atomic-openshift パッケージおよび openvswitch パッケージをアップグレードします。

      # yum upgrade atomic-openshift\* openvswitch
    2. RHEL 7 または RHEL Atomic Host 7 システムでコンテナー化方式を使用するマスターの場合、以下のファイルで IMAGE_VERSION パラメーターをアップグレードするバージョンに設定します。

      • /etc/sysconfig/atomic-openshift-master-controllers
      • /etc/sysconfig/atomic-openshift-master-api
      • /etc/sysconfig/atomic-openshift-node
      • /etc/sysconfig/atomic-openshift-openvswitch

      例:

      IMAGE_VERSION=<tag>

      <tag> を最新バージョンの v3.9.31 に置き換えます。

  4. 以前のバージョンの OpenShift Container Platform では、マスターホストには、インストーラーによってデフォルトでスケジュール対象外 (Unschedulable) のマークが付けられました。これにより、Pod をこれらのホストに配置できませんでした。しかし、OpenShift Container Platform 3.9 より、Web コンソールはマスターサービスから削除され、マスターの Pod としてデプロイされます。つまり、マスターにはスケジュール対象 (Schedulable) のマークを付ける必要があります。これにより、ノードロール (master または compute) が割り当てるラベルを特定ホストに追加することも必要になります。

    注記

    この重要な技術上の変更のサポートされる自動アップグレードとの関連については、『OpenShift Container Platform 3.9 Release Notes』を参照してください。

    OpenShift Container Platform 3.7 から 3.9 にアップグレードしている場合は、以下を実行します。

    1. 以下のラベルを各マスターホストに追加します。

      $ oc label node <hostname> node-role.kubernetes.io/master=true

      これは、それらに master ノードロールを付与します。

    2. 以下のラベルをマスター以外、インフラストラクチャー以外 (region=infra のラベル) の各ホストに追加します。

      $ oc label node <hostname> node-role.kubernetes.io/compute=true

      これは、それらに compute ノードロールを付与します。

    3. Web コンソール Pod のみがマスターにスケジュールされるようにするには、デフォルトのノードセレクターも設定する必要があります。これを /etc/origin/master/master-config.yaml ファイルの projectConfig.defaultNodeSelector でカスタム値に設定している場合は、この手順を省略できます。まだ設定していない場合は、これを以下のように設定します。

      projectConfig:
        defaultNodeSelector: node-role.kubernetes.io/compute=true
  5. 各マスターでマスターサービスを再起動し、ログでそれが正常に再起動することを確認します。

    # systemctl restart atomic-openshift-master-controllers
    # systemctl restart atomic-openshift-master-api
    # journalctl -r -u atomic-openshift-master-controllers
    # journalctl -r -u atomic-openshift-master-api
  6. マスターには OpenShift SDN の一部として設定されるようにノードコンポーネントが実行されているため、atomic-openshift-node および openvswitch サービスを再起動します。

    # systemctl restart openvswitch
    # systemctl restart atomic-openshift-node
    # journalctl -r -u openvswitch
    # journalctl -r -u atomic-openshift-node
  7. OpenShift Container Platform 3.7 から 3.9 にアップグレードしている場合は、各マスターホストに対して以下を実行してそれらにスケジュール対象 (Schedulable) のマークを付けます。

    $ oc adm manage-node <hostname> --schedulable=true
  8. Docker をバージョン 1.13 への更新を必要とするクラスターアップグレードを実行している場合、Docker 1.13 に更新されていない場合は以下の手順を実行する必要もあります。

    1. docker パッケージをアップグレードします。

      1. RHEL 7 システムの場合:

        # yum update docker

        次に docker サービスを再起動し、ログでこれが正常に再起動することを確認します。

        # systemctl restart docker
        # journalctl -r -u docker
      2. RHEL Atomic Host 7 システムの場合、利用可能な場合は最新の Atomic ツリーにアップグレードします。

        # atomic host upgrade
    2. アップグレードが完了し、次の起動の準備ができたら、ホストを再起動し、docker サービスが正常に起動することを確認します。

      # systemctl reboot
      # journalctl -r -u docker
    3. 必要なくなった以下のパッケージを削除します。

      # rm /etc/systemd/system/docker.service.d/docker-sdn-ovs.conf
  9. 各マスターで以下のコマンドを実行し、atomic-openshift パッケージをホストの yum の exclude 一覧に戻します。

    # atomic-openshift-excluder exclude
注記

クラスターのアップグレード時に、マスターをローテーションから外すと良い場合あります。それは、一部の DNS クライアントライブラリーがクラスター DNS の他のマスターに適切に接続しないことがあるためです。マスターおよびコントローラーサービスを停止するほかに、EndPoint を Kubernetes サービスの subsets.addresses から削除することができます。

$ oc edit ep/kubernetes -n default

マスターが再起動すると、Kubernetes サービスが自動的に更新されます。

3.4. ポリシー定義の更新

クラスターのアップグレード後に、デフォルトロール デフォルトクラスターロールが自動的に更新されます。すべてのデフォルトがご使用の環境の推奨値に設定されているかどうかを確認するには、以下を実行します。

# oc adm policy reconcile-cluster-roles
警告

デフォルトのクラスターロールをカスタマイズしていて、ロールを調整してもそれらのカスタマイズされたロールが変更されないようにするには、Openshift ポリシーフォーマットの使用時にそれらのカスタマイズされたロールに openshift.io/reconcile-protecttrue に設定されたアノテーションを付けることができます。新規の RBAC ロールの使用時は、false に設定された rbac.authorization.kubernetes.io/autoupdate を使用します。この場合、アップグレード時にそれらのロールを新規または必須のパーミッションで手動で更新する必要があります。

このコマンドは古いロールのとそれらの提案される新規の値の一覧を出力します。以下は例になります。

# oc adm policy reconcile-cluster-roles
apiVersion: v1
items:
- apiVersion: v1
  kind: ClusterRole
  metadata:
    creationTimestamp: null
    name: admin
  rules:
  - attributeRestrictions: null
    resources:
    - builds/custom
...
注記

出力は OpenShift バージョンおよびローカルのカスタマイズ内容によって異なります。提案されるポリシーに留意してください。

この出力をすでに行ったローカルポリシーの変更を再適用するように変更するか、または以下のプロセスを使用して新規ポリシーを自動的に適用することができます。

  1. クラスターロールを調整します。

    # oc adm policy reconcile-cluster-roles \
        --additive-only=true \
        --confirm
  2. クラスターのロールバインディングを調整します。

    # oc adm policy reconcile-cluster-role-bindings \
        --exclude-groups=system:authenticated \
        --exclude-groups=system:authenticated:oauth \
        --exclude-groups=system:unauthenticated \
        --exclude-users=system:anonymous \
        --additive-only=true \
        --confirm

    さらに以下を実行します。

    # oc adm policy reconcile-cluster-role-bindings \
        system:build-strategy-jenkinspipeline \
        --confirm \
        -o name
  3. SCC (Security Context Constraints) を調整します。

    # oc adm policy reconcile-sccs \
        --additive-only=true \
        --confirm

3.5. ノードのアップグレード

マスターのアップグレード後に、ノードをアップグレードすることができます。atomic-openshift-node サービスを再起動すると、サービスプロキシーが再起動している状態で、実行中の Pod からサービスへの発信ネットワーク接続の短い中断が発生します。この中断の期間は非常に短く、クラスター全体のサービス数に基づいて変動します。

注記

または、この時点で Blue-Green デプロイメント方式を使用して、インプレースアップグレードの代わりに新規ノードの並列環境を作成するともできます。

マスターではない各ノードについて一度に 1 つずつ、スケジューリングを無効にしてその Pod を他のノードに退避してから、パッケージをアップグレードし、サービスを再起動する必要があります。

  1. 各ノードで以下のコマンドを実行し、atomic-openshift パッケージをホストの yum の exclude 一覧から削除します。

    # atomic-openshift-excluder unexclude
  2. cluster-admin 権限を持つユーザーとして、ノードのスケジューリングを無効にします。

    # oc adm manage-node <node> --schedulable=false
  3. ノード上の Pod を他のノードに退避します。

    重要

    --force オプションは、レプリケーションコントローラーによってサポートされない Pod を削除します。

    # oc adm drain <node> --force --delete-local-data --ignore-daemonsets
  4. ノードコンポーネントパッケージまたは関連イメージをアップグレードします。

    1. RHEL 7 システムで RPM ベースの方法を使用するノードの場合、インストールされたすべての atomic-openshift パッケージおよび openvswitch パッケージをアップグレードします。

      # yum upgrade atomic-openshift\* openvswitch
    2. RHEL 7 または RHEL Atomic Host 7 システムでコンテナー化方式を使用するノードの場合、/etc/sysconfig/atomic-openshift-node および /etc/sysconfig/openvswitch ファイルで IMAGE_VERSION パラメーターをアップグレードするバージョンに設定します。以下は例になります。

      IMAGE_VERSION=<tag>

      <tag> を最新バージョンの v3.9.31 に置き換えます。

  5. atomic-openshift-node および openvswitch サービスを再起動し、ログでこれが正常に再起動することを確認します。

    # systemctl restart openvswitch
    # systemctl restart atomic-openshift-node
    # journalctl -r -u atomic-openshift-node
    # journalctl -r -u openvswitch
  6. Docker をバージョン 1.13 への更新を必要とするクラスターアップグレードを実行している場合、Docker 1.13 に更新されていない場合は以下の手順を実行する必要もあります。

    1. docker パッケージをアップグレードします。

      1. RHEL 7 システムの場合:

        # yum update docker

        次に docker サービスを再起動し、ログでこれが正常に再起動することを確認します。

        # systemctl restart docker
        # journalctl -r -u docker

        Docker を再起動した後に、atomic-openshift-node サービスを再び再起動して、ログでこれが正常に再起動することを確認します。

        # systemctl restart atomic-openshift-node
        # journalctl -r -u atomic-openshift-node
      2. RHEL Atomic Host 7 システムの場合、利用可能な場合は最新の Atomic ツリーにアップグレードします。

        # atomic host upgrade

        アップグレードが完了し、次の起動の準備ができたら、ホストを再起動し、docker サービスが正常に起動することを確認します。

        # systemctl reboot
        # journalctl -r -u docker
    2. 必要なくなった以下のパッケージを削除します。

      # rm /etc/systemd/system/docker.service.d/docker-sdn-ovs.conf
  7. ノードのスケジューリングを再び有効にします。

    # oc adm manage-node <node> --schedulable
  8. 各ノードで以下のコマンドを実行し、atomic-openshift パッケージをホストの yum の exclude 一覧に戻します。

    # atomic-openshift-excluder exclude
  9. 次のノードで直前の手順を繰り返し、すべてのノードがアップグレードされるまでこれらの手順を繰り返します。
  10. すべてのノードがアップグレードされた後に、cluster-admin 権限を持つユーザーがすべてのノードが Ready として表示されていることを確認します。

    # oc get nodes
    NAME                   STATUS    ROLES     AGE       VERSION
    master.example.com     Ready     master    7h        v1.9.1+a0ce1bc657
    node1.example.com      Ready     compute   7h        v1.9.1+a0ce1bc657
    node2.example.com      Ready     compute   7h        v1.9.1+a0ce1bc657

3.6. ルーターのアップグレード

ルーターのデプロイを事前に実行している場合、ルーターのデプロイメント設定は、ルーターイメージに含まれている更新を適用できるようにアップグレードされている必要があります。サービスを中断することなくルーターをアップグレードするには、高可用ルーティングサービスを事前にデプロイしている必要があります。

ルーターのデプロイメント設定を編集します。たとえば、デフォルトの ルーター 名がある場合は、以下を実行します。

# oc edit dc/router

以下の変更を適用します。

...
spec:
 template:
    spec:
      containers:
      - env:
        ...
        image: registry.access.redhat.com/openshift3/ose-haproxy-router:<tag> 1
        imagePullPolicy: IfNotPresent
        ...
1
<tag> をアップグレードしているバージョンに一致するように調整します (最新バージョンの場合は v3.9.31 を使用します)。

1 つのルーター Pod が更新され、次の更新が実行されるのを確認できます。

3.7. レジストリーのアップグレード

変更をレジストリーイメージで有効にするには、レジストリーも更新する必要があります。PersistentVolumeClaim またはホストマウントポイントを使用している場合には、レジストリーの内容を失うことなくレジストリーを再起動できます。レジストリーの永続ストレージを設定する方法については、「レジストリーのストレージ」を参照してください。

レジストリーのデプロイメント設定を編集します。

# oc edit dc/docker-registry

以下の変更を適用します。

...
spec:
 template:
    spec:
      containers:
      - env:
        ...
        image: registry.access.redhat.com/openshift3/ose-docker-registry:<tag> 1
        imagePullPolicy: IfNotPresent
        ...
1
<tag> をアップグレードしているバージョンに一致するように調整します (最新バージョンの場合は v3.9.31 を使用します)。

レジストリーコンソールがデプロイされている場合、そのデプロイメント設定を編集します。

# oc edit dc/registry-console

以下の変更を適用します。

...
spec:
 template:
    spec:
      containers:
      - env:
        ...
        image: registry.access.redhat.com/openshift3/registry-console:v3.9
        imagePullPolicy: IfNotPresent
        ...
重要

アップグレード時に内部レジストリーにプッシュされているか、またはそこからプルされているイメージは失敗し、自動的に再起動される必要があります。これによってすでに実行されている Pod は中断されません。

3.8. デフォルトのイメージストリームおよびテンプレートの更新

デフォルトでは、通常インストール (advanced installation) 方式は、すべてのユーザーが閲覧アクセスを持つデフォルトプロジェクトである openshift プロジェクトにデフォルトのイメージストリーム、InstantApp テンプレート、およびデータベースサービステンプレートを作成します。これらのオブジェクトは、/usr/share/ansible/openshift-ansible/roles/openshift_examples/files/examples/ ディレクトリーにある JSON ファイルからインストール時に作成されます。

注記

RHEL Atomic Host 7 は yum を使用してパッケージを更新できないので、以下の手順が RHEL 7 システムで実行される必要があります。

サンプルの JSON ファイルを提供するパッケージを更新します。CLI を cluster-admin パーミッションを持つユーザーとして実行できるサブスクライブ済みの Red Hat Enterprise Linux 7 システムで、最新バージョンの atomic-openshift-utils パッケージのインストールまたは更新を実行します。これにより、openshift-ansible- パッケージも更新されるはずです。

# yum update atomic-openshift-utils

最初のマスターで /usr/share/openshift/examples/ を永続化するには、以下を実行します。

$ scp -R /usr/share/ansible/openshift-ansible/roles/openshift_examples/files/examples/v3.9/* user@master1:/usr/share/openshift/examples/

すべてのマスターで /usr/share/openshift/examples/ を永続化するには、以下を実行します。

$ mkdir /usr/share/openshift/examples
$ scp -R /usr/share/ansible/openshift-ansible/roles/openshift_examples/files/examples/v3.9/* user@masterx:/usr/share/openshift/examples

openshift-ansible-roles パッケージは最新のサンプル JSON ファイルを提供します。

  1. 手動のアップグレード後に、openshift-ansible-roles から最新テンプレートを取得します。

    # rpm -ql openshift-ansible-roles | grep examples | grep v3.9

    この例では、/usr/share/ansible/openshift-ansible/roles/openshift_examples/files/examples/v3.9/image-streams/image-streams-rhel7.json が最新の openshift-ansible-roles パッケージの必要な最新ファイルになります。

    /usr/share/openshift/examples/image-streams/image-streams-rhel7.json はパッケージで所有されていませんが、Ansible で更新されます。Ansible 外でアップグレードしている場合、oc を実行しているシステムで最新の .json ファイルを取得する必要があります。このコマンドはマスターにアクセスできる任意の場所で実行できます。

  2. atomic-openshift-utils およびその依存関係をインストールして、最新のコンテンツを /usr/share/ansible/openshift-ansible/roles/openshift_examples/files/examples/v3.9/ にインストールします。

    $ oc create -n openshift -f  /usr/share/ansible/openshift-ansible/roles/openshift_examples/files/examples/v3.9/image-streams/image-streams-rhel7.json
    $ oc create -n openshift -f  /usr/share/ansible/openshift-ansible/roles/openshift_examples/files/examples/v3.9/image-streams/dotnet_imagestreams.json
    $ oc replace -n openshift -f  /usr/share/ansible/openshift-ansible/roles/openshift_examples/files/examples/v3.9/image-streams/image-streams-rhel7.json
    $ oc replace -n openshift -f  /usr/share/ansible/openshift-ansible/roles/openshift_examples/files/examples/v3.9/image-streams/dotnet_imagestreams.json
  3. テンプレートを更新します。

    $ oc create -n openshift -f /usr/share/ansible/openshift-ansible/roles/openshift_examples/files/examples/v3.9/quickstart-templates/
    $ oc create -n openshift -f /usr/share/ansible/openshift-ansible/roles/openshift_examples/files/examples/v3.9/db-templates/
    $ oc create -n openshift -f /usr/share/ansible/openshift-ansible/roles/openshift_examples/files/examples/v3.9/infrastructure-templates/
    $ oc create -n openshift -f /usr/share/ansible/openshift-ansible/roles/openshift_examples/files/examples/v3.9/xpaas-templates/
    $ oc create -n openshift -f /usr/share/ansible/openshift-ansible/roles/openshift_examples/files/examples/v3.9/xpaas-streams/
    $ oc replace -n openshift -f /usr/share/ansible/openshift-ansible/roles/openshift_examples/files/examples/v3.9/quickstart-templates/
    $ oc replace -n openshift -f /usr/share/ansible/openshift-ansible/roles/openshift_examples/files/examples/v3.9/db-templates/
    $ oc replace -n openshift -f /usr/share/ansible/openshift-ansible/roles/openshift_examples/files/examples/v3.9/infrastructure-templates/
    $ oc replace -n openshift -f /usr/share/ansible/openshift-ansible/roles/openshift_examples/files/examples/v3.9/xpaas-templates/
    $ oc replace -n openshift -f /usr/share/ansible/openshift-ansible/roles/openshift_examples/files/examples/v3.9/xpaas-streams/

    すでに存在する項目についてエラーが生成されます。これは予期される動作です。

    # oc create -n openshift -f /usr/share/ansible/openshift-ansible/roles/openshift_examples/files/examples/v3.9/quickstart-templates/
    Error from server: error when creating "/usr/share/ansible/openshift-ansible/roles/openshift_examples/files/examples/v3.9/quickstart-templates/cakephp-mysql.json": templates "cakephp-mysql-example" already exists
    Error from server: error when creating "/usr/share/ansible/openshift-ansible/roles/openshift_examples/files/examples/v3.9/quickstart-templates/cakephp.json": templates "cakephp-example" already exists
    Error from server: error when creating "/usr/share/ansible/openshift-ansible/roles/openshift_examples/files/examples/v3.9/quickstart-templates/dancer-mysql.json": templates "dancer-mysql-example" already exists
    Error from server: error when creating "/usr/share/ansible/openshift-ansible/roles/openshift_examples/files/examples/v3.9/quickstart-templates/dancer.json": templates "dancer-example" already exists
    Error from server: error when creating "/usr/share/ansible/openshift-ansible/roles/openshift_examples/files/examples/v3.9/quickstart-templates/django-postgresql.json": templates "django-psql-example" already exists

ここで、コンテンツを更新できます。自動化されたアップグレード Playbook を実行しないと、コンテンツは /usr/share/openshift/ で更新されません。

3.9. 最新イメージのインポート

デフォルトのイメージストリームの更新の実行後に、それらのストリーム内のイメージも更新されていることを確認する必要がある場合があります。デフォルトの openshift プロジェクトの各イメージストリームについて、以下を実行できます。

# oc import-image -n openshift <imagestream>

たとえば、デフォルトの openshift プロジェクトのすべてのイメージストリームの一覧を取得します。

# oc get is -n openshift
NAME     DOCKER REPO                                                      TAGS                   UPDATED
mongodb  registry.access.redhat.com/openshift3/mongodb-24-rhel7           2.4,latest,v3.1.1.6    16 hours ago
mysql    registry.access.redhat.com/openshift3/mysql-55-rhel7             5.5,latest,v3.1.1.6    16 hours ago
nodejs   registry.access.redhat.com/openshift3/nodejs-010-rhel7           0.10,latest,v3.1.1.6   16 hours ago
...

各イメージストリームを 一度に 1 つずつ更新します。

# oc import-image -n openshift nodejs
The import completed successfully.

Name:			nodejs
Created:		10 seconds ago
Labels:			<none>
Annotations:		openshift.io/image.dockerRepositoryCheck=2016-07-05T19:20:30Z
Docker Pull Spec:	172.30.204.22:5000/openshift/nodejs

Tag	Spec								Created		PullSpec						Image
latest	4								9 seconds ago	registry.access.redhat.com/rhscl/nodejs-4-rhel7:latest	570ad8ed927fd5c2c9554ef4d9534cef808dfa05df31ec491c0969c3bd372b05
4	registry.access.redhat.com/rhscl/nodejs-4-rhel7:latest		9 seconds ago	<same>							570ad8ed927fd5c2c9554ef4d9534cef808dfa05df31ec491c0969c3bd372b05
0.10	registry.access.redhat.com/openshift3/nodejs-010-rhel7:latest	9 seconds ago	<same>							a1ef33be788a28ec2bdd48a9a5d174ebcfbe11c8e986d2996b77f5bccaaa4774
重要

S2I ベースのアプリケーションを更新するために、oc start-build <app-name> を使用して新規イメージをインポートした後にこれらのアプリケーションの新規ビルドを手動でトリガーする必要があります。

3.10. Web コンソールのアップグレード

注記

Web コンソールの手動によるアップグレード手順は利用できません。

OpenShift Container Platform 3.9 より、Web コンソールはマスターの一部ではなく、別個のコンポーネントとしてデプロイされます。このコンソールは、openshift_web_console_install 変数を false に設定しない限り、自動アップグレードの一環としてデフォルトでインストールされます。

または、手動によるアップグレードの一環としてなど、必要に応じて Web コンソールを別個にインストールすることもできます。

  1. 通常インストール (Advanced Installation)」のトピックのセクションを参照し、インベントリーファイルを随時更新します。
  2. 以下の Playbook を実行します。

    # ansible-playbook -i </path/to/inventory/file> \
        /usr/share/ansible/openshift-ansible/playbooks/openshift-web-console/config.yml
注意

Web コンソールが拡張を読み込む方法は OpenShift Container Platform 3.9 で変更されました。以前のバージョンからアップグレードしている場合、マスターファイルシステムではなく URL で拡張スクリプトおよびスタイルシートをホストする必要があります。詳細は、「拡張スクリプトとスタイルシートの読み込み」のトピックを参照してください。

3.11. サービスカタログのアップグレード

注記

サービスカタログおよびサービスブローカーの手動によるアップグレード手順は利用できません。

サービスカタログをアップグレードするには、以下を実行します。

  1. 通常インストール (Advanced Installation)」のトピックで以下の 3 つのセクションを参照し、インベントリーファイルを随時更新します。

  2. 以下の Playbook を実行します。

    # ansible-playbook -i </path/to/inventory/file> \
        /usr/share/ansible/openshift-ansible/playbooks/openshift-service-catalog/config.yml

3.12. EFK ロギングスタックのアップグレード

注記

ロギングデプロイメントの手動によるアップグレード手順は、OpenShift Container Platform 3.5 以降では利用できません。

既存の EFK ロギングスタックデプロイメントをアップグレードするには、提供されている /usr/share/ansible/openshift-ansible/playbooks/openshift-logging/config.yml Ansible Playbook を使用する必要があります。これは既存のクラスターでロギングを最初にデプロイする際に使用する Playbook ですが、既存のロギングデプロイメントをアップグレードする場合にも使用されます。

  1. これをまだ実行していない場合は、「コンテナーログの集計」のトピックの「ロギング Ansible 変数の指定」を参照し、Ansible インベントリーファイルを更新して少なくとも [OSEv3:vars] セクション内に以下の必要な変数を設定します。

    [OSEv3:vars]
    
    openshift_logging_install_logging=true 1
    openshift_logging_image_version=<tag> 2
    1
    ロギングスタックをアップグレードする機能を有効にします。
    2
    <tag> を最新バージョンの v3.9.31 に置き換えます。
  2. ロギング Ansible 変数の指定」で説明されているように、デフォルトを上書きするために指定する必要のあるその他の openshift_logging_* 変数を追加します。
  3. インベントリーファイルの更新が終了したら、「EFK スタックのデプロイ」の説明に従って openshift-logging/config.yml Playbook を実行し、ロギングデプロイメントのアップグレードを完了します。
注記

EFK コンポーネントの Fluentd DeploymentConfig および DaemonSet が次のように設定されている場合、以下に注意してください。

        image: <image_name>:<vX.Y>
        imagePullPolicy: IfNotPresent

最新バージョンの <image_name> は、Pod が再デプロイされるノードに同じ <image_name:vX.Y> のイメージがローカルに保存されている場合にはプルされない可能性があります。その場合は、DeploymentConfig および DaemonSet を手動で imagePullPolicy: Always に設定し、再度プルされるようにします。

3.13. クラスターメトリクスのアップグレード

注記

メトリクスデプロイメントの手動によるアップグレード手順は、OpenShift Container Platform 3.5 以降では利用できません。

既存のクラスターメトリクスのデプロイメントをアップグレードするには、提供されている /usr/share/ansible/openshift-ansible/playbooks/openshift-metrics/config.yml Ansible Playbook を使用する必要があります。これは、既存クラスターでメトリクスを最初にデプロイしている場合に使用する Playbook ですが、既存のメトリクスデプロイメントをアップグレードする場合にも使用されます。

  1. これをまだ実行していない場合は、「クラスターメトリクスの有効化」のトピックの「メトリクス Ansible 変数の指定」を参照し、Ansible インベントリーファイルを更新して少なくとも [OSEv3:vars] セクション内で以下の必要な変数を設定します。

    [OSEv3:vars]
    
    openshift_metrics_install_metrics=true 1
    openshift_metrics_image_version=<tag> 2
    openshift_metrics_hawkular_hostname=<fqdn> 3
    openshift_metrics_cassandra_storage_type=(emptydir|pv|dynamic) 4
    1
    メトリクスデプロイメントをアップグレードする機能を有効にします。
    2
    <tag> を最新バージョンの v3.9.31 に置き換えます。
    3
    Hawkular Metrics ルートに使用されます。完全修飾ドメイン名に対応している必要があります。
    4
    以前のデプロイメントと一貫性のあるタイプを選択します。
  2. メトリクス Ansible 変数の指定」で説明されているように、デフォルトを上書きするために指定する必要のあるその他の openshift_metrics_* 変数を追加します。
  3. インベントリーファイルの更新が終了したら、「メトリクスコンポーネントのデプロイ」の説明に従って openshift-metrics/config.yml Playbook を実行し、メトリクスデプロイメントのアップグレードを完了します。

3.14. リリースごとの追加の手動ステップ

一部の OpenShift Container Platform リリースには、クラスター全体に更新を完全に適用するために実行する必要のあるリリース固有の追加の指示が含まれている場合があります。このセクションは、OpenShift Container Platform 3.9 の新規の非同期更新がリリースされるたびに更新されます。

最新のリリースノートを参照するには、『OpenShift Container Platform 3.9 Release Notes』を参照してください。

3.15. アップグレードの検証

アップグレードを検証するには、以下を確認します。

  1. すべてのノードに Ready のマークが付けられていることを確認する。

    # oc get nodes
    NAME                   STATUS    ROLES     AGE       VERSION
    master.example.com     Ready     master    7h        v1.9.1+a0ce1bc657
    node1.example.com      Ready     compute   7h        v1.9.1+a0ce1bc657
    node2.example.com      Ready     compute   7h        v1.9.1+a0ce1bc657
  2. 予想されるバージョンの docker-registry および router イメージを実行していることを確認します (デプロイされている場合)。<tag> を最新バージョンの v3.9.31 に置き換えます。

    # oc get -n default dc/docker-registry -o json | grep \"image\"
        "image": "openshift3/ose-docker-registry:<tag>",
    # oc get -n default dc/router -o json | grep \"image\"
        "image": "openshift3/ose-haproxy-router:<tag>",
  3. マスター上で診断ツールを使用し、一般的な問題を検索します。

    # oc adm diagnostics
    ...
    [Note] Summary of diagnostics execution:
    [Note] Completed with no errors or warnings seen.