2.3. アップグレードの準備
前提条件を満たしていることを確認したら、自動アップグレードを準備します。
最新のサブスクリプションデータを Red Hat Subscription Manager からプルします。
# subscription-manager refresh
OpenShift Container Platform 3.10 から 3.11 にアップグレードしている場合は、以下を実行します。
OpenShift Container Platform 3.10 にダウングレードする場合に必要となるファイルをバックアップします。
マスターホストで、以下のファイルをバックアップします。
/etc/origin/master/master-config.yaml /etc/origin/master/master.env /etc/origin/master/scheduler.json
マスターを含むノードホストで、以下のファイルをバックアップします。
/etc/origin/node/node-config.yaml
etcd ホストで (etcd が同一の場所に配置されているマスターを含む)、以下のファイルをバックアップします。
/etc/etcd/etcd.conf
アップグレードプロセスでは、リカバリー目的ですべての etcd データのバックアップを作成しますが、/backup/etcd-xxxxxx/backup.db に最新の etcd のバックアップがあることを確認してからこのタスクを進めてください。etcd の手動でのバックアップ手順は、Day 2 操作ガイド に記載されています。
注記OpenShift Container Platform をアップグレードする場合、etcd 設定は変更されません。etcd をマスターホストの静的 Pod として、またはマスターホストの別のサービスまたは別のホストとして実行するいずれの場合でも、etcd はアップグレード後に変更されません。
手作業で、各マスターおよびノードホストの 3.10 リポジトリーを無効にして、3.11 リポジトリーを有効にします。rhel-7-server-ansible-2.9-rpms リポジトリーをまだ有効にしていない場合には、有効にしてください。
x86_64 サーバーでのクラウドインストールおよびオンプレミスインストールの場合は、以下のコマンドを実行します。
# subscription-manager repos \ --disable="rhel-7-server-ose-3.10-rpms" \ --disable="rhel-7-server-ansible-2.4-rpms" \ --enable="rhel-7-server-ose-3.11-rpms" \ --enable="rhel-7-server-rpms" \ --enable="rhel-7-server-extras-rpms" \ --enable="rhel-7-server-ansible-2.9-rpms" # yum clean all
IBM POWER8 サーバーでのオンプレミスインストールの場合は、以下のコマンドを実行します。
# subscription-manager repos \ --disable="rhel-7-for-power-le-ose-3.10-rpms" \ --enable="rhel-7-for-power-le-rpms" \ --enable="rhel-7-for-power-le-extras-rpms" \ --enable="rhel-7-for-power-le-optional-rpms" \ --enable="rhel-7-server-ansible-2.9-for-power-le-rpms" \ --enable="rhel-7-server-for-power-le-rhscl-rpms" \ --enable="rhel-7-for-power-le-ose-3.11-rpms" # yum clean all
IBM POWER9 サーバーでのオンプレミスインストールの場合は、以下のコマンドを実行します。
# subscription-manager repos \ --disable="rhel-7-for-power-le-ose-3.10-rpms" \ --enable="rhel-7-for-power-9-rpms" \ --enable="rhel-7-for-power-9-extras-rpms" \ --enable="rhel-7-for-power-9-optional-rpms" \ --enable="rhel-7-server-ansible-2.9-for-power-9-rpms" \ --enable="rhel-7-server-for-power-9-rhscl-rpms" \ --enable="rhel-7-for-power-9-ose-3.11-rpms" # yum clean all
アップグレード Playbook を実行するホストで、最新版の openshift-ansible パッケージが設定されていることを確認してください。
# yum update -y openshift-ansible
Cluster Monitoring Operator の準備をします。バージョン 3.11 では、Cluster Monitoring Operator はデフォルトでインフラストラクチャーノードにインストールされます。クラスターがインフラストラクチャーノードを使用しない場合は、以下を実行します。
- インフラストラクチャーノードをクラスターに 追加 します。
-
openshift_cluster_monitoring_operator_install=false
をインベントリーファイルに追加して Cluster Monitoring Operator を無効にします。 -
Cluster Monitoring Operator をインストールするノードに openshift_cluster_monitoring_operator_node_selector の
マークを付けて
、ノードを指定します。
-
標準の OpenShift Container Platform レジストリーを使用する場合、
registry.access.redhat.com
からregistry.redhat.io
への変更に対して準備してください。Accessing and Configuring the Red Hat Registry に記載されている設定の手順を実行してください。
インベントリーファイル を確認し、これを更新します。
- (初期インストールまたは最近のクラスターのアップグレードなどで) Ansible Playbook を最後に実行した後にマスターまたはノード設定ファイルに設定変更を手動で加えた場合は、それらの変更がインベントリーファイルに反映されていることを確認します。手動で加えた変更に関連する変数については、アップグレードの実行前に同等の変更をインベントリーファイルに適用してください。これを実行しないと、手動による変更がアップグレード時にデフォルト値で上書きされ、Pod が適切に実行されなくなるか、または他のクラスターの安定性に問題が生じる可能性があります。
-
デフォルトで、インストーラーは証明書が 1 年以内に期限切れになるかどうかや、その期間内に期限切れになる場合に失敗するかどうかを確認します。証明書の有効日数を変更するには、
openshift_certificate_expiry_warning_days
パラメーターに新規の値を指定します。たとえば、証明書が 180 日間有効とする場合に、openshift_certificate_expiry_warning_days=180
を指定します。 -
証明書が期限切れになるかどうかのチェックを省略するには、
openshift_certificate_expiry_fail_on_warn=False
を設定します。 -
マスター設定ファイルの
admissionConfig
設定に変更を加えた場合は、インベントリーファイルの設定
で openshift_master_admission_plugin_config 変数を確認してください。これを確認しない場合、マスターでのオーバーコミットの設定 に説明されているようにClusterResourceOverride
設定を事前に手動で設定している場合には、Pod がPending
状態のままになる可能性があります。 3.10 よりも前のバージョンの OpenShift Container Platform で
openshift_hostname
パラメーターを使用していた場合、openshift_kubelet_name_override
パラメーターがまだインベントリーファイルにあり、以前のバージョンで使用したopenshift_hostname
の値に設定されていることを確認してください。重要アップグレード後は、
openshift_kubelet_name_override
パラメーターをインベントリーファイルから削除できません。-
クラスターの /etc/origin/master/htpasswd ファイルを手動で管理する場合、
openshift_master_manage_htpasswd=false
をインベントリーファイルに追加して、アップグレードプロセスで htpasswd ファイルが上書きされないようにします。
2.3.1. ポリシー定義の更新
クラスターのアップグレード時に、また任意のマスターの再起動時は常に、デフォルトのクラスターロール が欠落しているパーミッションを復元するために自動的に調整されます。
デフォルトクラスターロールをカスタマイズしており、ロールの調整によってそれらが変更されないようにするには、以下のように各ロールを調整から保護します。
$ oc annotate clusterrole.rbac <role_name> --overwrite rbac.authorization.kubernetes.io/autoupdate=false
警告この設定を含むロールがアップグレード後に新規または必須のパーミッションを組み込むように手動で更新する必要があります。
デフォルトのブートストラップポリシーテンプレートを生成します。
$ oc adm create-bootstrap-policy-file --filename=policy.json
注記ファイルの内容は OpenShift Container Platform バージョンによって異なりますが、ファイルにはデフォルトポリシーのみが含まれます。
- policy.json ファイルを、クラスターロールのカスタマイズを組み込むように更新します。
ポリシーを使用し、調整から保護されていないロールおよびロールバインディングを自動的に調整します。
$ oc auth reconcile -f policy.json
SCC (Security Context Constraints) を調整します。
# oc adm policy reconcile-sccs \ --additive-only=true \ --confirm