6.4. kubernetes版からkubernetes版へのバージョンアップ(Rel-21.04以降)

警告

Rel-21.01における、バックアップ/復元機能の変更により、21.01へのアップグレードにはバックアップファイルを使用してシステム構成を手動で復元する必要があります。アップグレードプロセスを開始する前に、最新のバックアップjsonファイルを手元に用意してください。

注意

セットアップする際は下記の点にご注意ください。

  • sudo可能な一般ユーザでインストールを実施する(rootユーザでのインストールも可能 ※1)
  • sudoは付けないでスクリプトを実行する
  • インストール後は、インストールユーザで運用する

※1 rootになる際、"sudo su -" での実行は可能です。"sudo -s" での実行は、一般ユーザのカレントディレクトリや環境変数が引き継がれてしまうため不可となります。

※2 CentOSの場合は下記の警告「CentOS にインストールしている場合」も参照ください

警告

CentOS にインストールしている場合、20.05以降は必ず下記コマンドによる rootユーザにスイッチしてから実行してください。

$ sudo su -

また、shield-update.sh は通常、「/home/<インストールユーザ名>/shield.update.sh」に存在します。 rootユーザにスイッチした後、/home/<インストールユーザ名>/ に移動した上で、

$ ./shield-update.sh

を実行してください。 update後はShieldのスクリプトなど一式は「/root/」配下へと移動されます。 ご注意ください。 また、今後の運用も rootユーザで行う必要があります。

注意

20.10以前のバージョンで .es_custom_env を使用して cluster_dns_server のアドレスをデフォルトから変更してインストールした環境で21.01以降にバージョンアップする場合、一連のバージョンアップ作業完了後に追加で実施しなければならない作業がございますので、対象の環境の場合はバージョンアップ前にご連絡をください。

6.4.1. Ranchar証明書更新スプリクトの事前実行

Rel-21.04にバージョンアップするタイミングで、必ず下記スクリプトを実行し、Rancher証明書の更新をおこなってください。

$ curl -O https://raw.githubusercontent.com/EricomSoftwareLtd/Shield/master/Utils/rotate_rancher_cert.sh
$ chmod 755 ./rotate_rancher_cert.sh
$ sudo ./rotate_rancher_cert.sh

実行例:
kkauser@sh01:~$ ./rotate_rancher_cert.sh
+ docker ps
+ grep -oP \w+(?=\s+rancher/rancher)
+ export RANCHER_CONTAINER_ID=d48e2eab3532
+ docker container restart d48e2eab3532d48e2eab3532
+ docker exec -it d48e2eab3532 sh -c mv /var/lib/rancher/k3s/server/tls /var/lib/rancher/k3s/server/tls.$(date -Iseconds)
+ docker container restart d48e2eab3532d48e2eab3532
+ sleep 150
+ docker container restart d48e2eab3532d48e2eab3532
kkauser@sh01:~$

6.4.2. shield システムの停止

バージョンアップ作業にあたり、Shieldのシステムを事前に停止します。

$ ./ericomshield/shield-stop.sh

6.4.3. shield-prepare-servers.sh による事前準備

バージョンアップ予定のバージョンに合わせて、shield-prepare-servers.sh を事前実行しておきます。 詳細な実行手順は 「5.1.5. shield-prepare-servers.sh による事前準備 」を参照してください。

6.4.4. アップデート用スクリプトの確認

Rancherサーバに shield-update.sh が存在するか確認してください。 存在しない場合、下記コマンドにより取得してください。 存在する場合も、必ず最新版のスクリプトをダウンロードしてご利用ください。

$ curl -O https://ericom-tec.ashisuto.co.jp/shield/shield-update.sh

6.4.5. スクリプトの差し替え

注意

20.07から20.10へのバージョンアップを行う際は、shield-stop.sh も最新版のものに差し替えてください。

20.07から20.10へのバージョンアップを行う際は、「6.3.2 アップデート用スクリプトの確認」で、 shield-update.sh を最新版にし、さらに shield-stop.sh も最新版のものに差し替えてから、バージョンアップを実施してください。

shield-stop.sh の最新版は、下記コマンドより、取得いただけます。

$ curl -O https://ericom-tec.ashisuto.co.jp/shield/shield-stop.sh

警告

shield-update.sh と shield-stop.shが古いバージョンのもので、20.07から20.10へのバージョンアップを行うと、以下のようなエラーが出力され、Shieldサービスが起動に失敗する場合があります。

Error: rendered manifests contain a resource that already exists. Unable to continue with install:
Secret "proxyless-certificate" in namespace "farm-services" exists and cannot be imported into
the current release: invalid ownership metadata; label validation error: missing key
"app.kubernetes.io/managed-by": must be set to "Helm"; annotation validation error: missing key
"meta.helm.sh/release-name": must be set to "shield-farm-services"; annotation validation error:
missing key "meta.helm.sh/release-namespace": must be set to "farm-services"

6.4.6. アップデート用スクリプトの実行

アップデート用スクリプトを実行してください。

$ ./shield-update.sh

###### START ###########################################################
==================================================================
現在インストールされているバージョン: Rel-20.03.541
==================================================================
どのバージョンをセットアップしますか?
1: Rel-20.05.649
2: Rel-20.03.541

 番号で指定してください:1
Rel-20.05_Build:649 をセットアップします。
[start] change dir
pwd: /home/ubuntu
pwd: /home/ubuntu/ericomshield
[end] change dir
BRANCH: Rel-20.05
[start] get install scripts
[end] get install scripts
[start] check sysctl file
[start] exec sysctl script
Disabling swap
Removing swap partition, original fstab file could be found at /etc/fstab.bak
/etc/sysctl.d/30-ericom-shield.conf has been updated!
Values from /etc/sysctl.d/30-ericom-shield.conf have been applied!

警告

複数のバージョンを跨いでバージョンアップする場合でも、ターゲットバージョンは現在のインストール済みバージョンの1つ上になるように設定し、 1つずつ 上げていくようにしてください。

例:Rel-20.01からRel-20.05へバジョンアップする場合、Rel-20.01からRel-20.03、Rel-20.05へと順番にアップデートを繰り返してください。

続いて、システムを停止することについての確認が行われます。よろしければ「y」を入力して先に進めてください。

###### START (update)###########################################################
BRANCH: Rel-20.05

=================================================================================
updateを実行します。よろしいですか?(Update前にShieldシステムを停止します。) [y/N]:y

システムを停止してアップデートが実行されます。完了するまで暫くおまちください。下記メッセージの表示で完了です。

New Version: Rel-20.05.649

Shield is not fully deployed
***************     Deploying Ericom Shield Repo:20.05.649 on System:456737a8-2b99-45a6-8706-b87e02ba8134 ...
***************     Deploying Shield Common *******************************
***************     Deploying Shield Farm Services *******************************
***************     Deploying Shield Management *******************************
***************     Deploying Shield Proxy *******************************
***************     Deploying Shield ELK *******************************
***************     Done!
NAME                    REVISION        UPDATED                         STATUS          CHART                   APP VERSION     NAMESPACE
shield-common           1               Tue Jun 16 06:28:38 2020        DEPLOYED        shield-20.05.649        20.05.649       common
shield-elk              1               Tue Jun 16 06:30:27 2020        DEPLOYED        shield-20.05.649        20.05.649       elk
shield-farm-services    1               Tue Jun 16 06:28:42 2020        DEPLOYED        shield-20.05.649        20.05.649       farm-services
shield-management       1               Tue Jun 16 06:29:20 2020        DEPLOYED        shield-20.05.649        20.05.649       management
shield-proxy            1               Tue Jun 16 06:29:53 2020        DEPLOYED        shield-20.05.649        20.05.649       proxy
[end] deploieng shield
[end] deploy shield
[start] get Default project id
DEFPROJECTID: c-ntqft:p-fvcxp
[end] get Default project id
[start] Move namespases to Default project
move namespases to Default project/ management
move namespases to Default project/ proxy
move namespases to Default project/ elk
move namespases to Default project/ farm-services
move namespases to Default project/ common
[end] Move namespases to Default project
[start] Waiting All namespaces are Deploied
[end] Waiting All namespaces are Deploied

【※確認※】 Rancher UI https://192.168.3.230:8443 をブラウザで開くか、
          /home/ubuntu/ericomshield/shield-status.sh 実行し、
          全てのワークロードが Acriveになることをご確認ください。

###### DONE ############################################################
###### DONE (update)############################################################
###### DONE (update)############################################################

6.4.7. Kubernetes のバージョンアップ

  • https://<Rancher Server のIPアドレス>:8443 へブラウザでアクセスし、Rancher UI を開いてログインしてください。

shield-update-kk01

  • 表示されているクラスタ名の右端にある三点リーダをクリックし、 EDIT 選択してください。

shield-update-kk02

  • Kubernetes OptionsKubernetes version で、最新のバージョンが選択されていることを確認します。

k8s-ver-up

選択されていることを確認したら、 Save で保存をしてください。

  • ダッシュボード上部にクラスタがアップデートされている旨のメッセージが表示されます。 アップデートが終わると、メッセージは自動的に消えます。

6.4.8. Rancherのクラスタ設定変更




Rel-20.01以前から、Rel-20.01以降へのアップデートのみ

Rel-20.01より前のバージョンからRel-20.01以降のバージョンへアップデートする場合には、 Rancherのクラスタ設定を手動で変更する必要があります。

  • https://<Rancher Server のIPアドレス>:8443 へブラウザでアクセスし、Rancher UI を開いてログインしてください。

shield-update-kk01

  • 表示されているクラスタ名の右端にある三点リーダをクリックし、 EDIT 選択してください。

shield-update-kk02

  • 画面にある Edit as YAML をクリックしてください。

shield-update-kk03

  • 表示されたYAMLを下記のように変更してください。 編集箇所は kubelet セクションの extra_ards です。 赤枠で囲んだ文字列を追記してください。YAMLフォーマットのため、インデントは正確に設定してください。

注意

既に設定済みの値は変更しないように注意してください。

shield-update-kk04

 kube-controller:
   cluster_cidr: 10.42.0.0/16
   service_cluster_ip_range: 10.43.0.0/16
 kubelet:
   cluster_dns_server: 10.43.0.10
   extra_args:
     eviction-hard: 'memory.available<0.2Gi,nodefs.available<10%'
     kube-reserved: 'cpu=1,memory=1Gi'
     kube-reserved-cgroup: "/system"
     max-pods: '110'
     system-reserved: 'cpu=1,memory=0.5Gi'
     system-reserved-cgroup: "/system"
  • 編集後、画面下部の Save をクリックしてください。 ダッシュボードに戻ります。ダッシュボード上部にクラスタがアップデートされている旨のメッセージが表示されます。 アップデートが終わると、メッセージは自動的に消えます。

shield-update-kk05

Rel-20.05以前から、Rel-20.07以降へのアップデートのみ

Rel-20.05以前のバージョンからRel-20.07以降のバージョンへアップデートする場合には、 Rancherのクラスタ設定を手動で変更する必要があります。

  • https://<Rancher Server のIPアドレス>:8443 へブラウザでアクセスし、Rancher UI を開いてログインしてください。

shield-update-kk01

  • 表示されているクラスタ名の右端にある三点リーダをクリックし、 EDIT 選択してください。

shield-update-kk02

  • 画面にある Edit as YAML をクリックしてください。

shield-update-kk03

  • 表示されたYAMLを下記のように変更してください。 編集箇所は kube-controller セクションの extra_ards です。 赤枠で囲んだ文字列を 削除 してください。YAMLフォーマットのため、インデントは正確に設定してください。

注意

既に設定済みの値は変更しないように注意してください。

shield-update-kk06

kube-controller:
  cluster_cidr: 10.42.0.0/16
  extra_args:
    node-monitor-grace-period: 10s
    node-monitor-period: 10s
    pod-eviction-timeout: 30s
  service_cluster_ip_range: 10.43.0.0/16
kubelet:
  cluster_dns_server: 10.43.0.10
  extra_args:
    eviction-hard: 'memory.available<0.2Gi,nodefs.available<10%'
    kube-reserved: 'cpu=1,memory=1Gi'
    kube-reserved-cgroup: "/system"
    max-pods: '110'
    system-reserved: 'cpu=1,memory=0.5Gi'
    system-reserved-cgroup: "/system"
  • 編集後、画面下部の Save をクリックしてください。 ダッシュボードに戻ります。ダッシュボード上部にクラスタがアップデートされている旨のメッセージが表示されます。 アップデートが終わると、メッセージは自動的に消えます。

shield-update-kk05

6.4.9. elasticsearch-master の動作について

注意

Shield 2005 へバージョンアップした場合のみ、下記手順を実施してください。

  1. shieldサービスを停止します。

    ./shield-stop.sh

  2. yamlファイルを更新します。念の為下記ファイルのバックアップコピーを取得の上、エディタで開きます。

    yaml ファイル : ~/ericomshield/shield/charts/elk/charts/elasticsearch/values.yaml

    更新内容 : 224行目を下記の通り変更します。

    nodeSelector: {"shield-role/elk": "accept"}

  3. shieldサービスを起動します。

    ./shield-start.sh

Rancherコンソール等で、elasticsearch-masterが正しいノードで起動していることを確認してください。

参考

yamlファイルはインデントやスペース、タブ等が不正確な場合でも正しく動作しない場合がありますので、インデントやスペース、タブも含めて正確に記載をお願いいたします。

6.4.10. バックアップjsonファイルによる復元

注意

Rel-21.01へのアップグレード時に実行する必要があります。

  1. Adminコンソールにおいて、Admin | Settings | Restore に移動します。
shield-json-restore01
  1. Upload File To Restore より、「ファイル選択」のボタンを押します。
shield-json-restore02
  1. 復元に使用するバックアップjsonファイルを選択します。
shield-json-restore03
  1. 続いて「Restore Shield」のボタンを押します。
shield-json-restore04
  1. 確認のポップアップが表示されますので、「Yes!Restore」ボタンを押します。
shield-json-restore05
  1. システム構成が復元されますので、最後に「Save」ボタンを押し、設定を保存します。
shield-json-restore06
  1. 「shield-stop / start」を実行します。