kubernetes版からkubernetes版へのバージョンアップ(Rel-21.04以降)¶
注意
Hyper-VとUbuntu 18.04もしくは20.04とShield 22.08の組み合わせで運用する場合、ブラウザサーバーにおいてOSから見えないメモリの量が時間経過とともに増えることが確認されており、最終的には、メモリ不足となり障害に繋がります。本件は、Ericom Shieldの不具合ではありません。
Hyper-Vをご使用しているお客様が22.08以降へバージョンアップする場合にはご注意ください。本事象はハイパーバイザがHyper-Vでは発生しますが、ESXiに変更することで発生しないためHyper-Vが必須以外の場合には、Shield導入OSのハイパーバイザとしてはVMware ESXiを利用することをお勧めします。
注意
バージョンアップを検討いただく場合には、本マニュアルの「2.システム要件」を参照して、バージョンアップを行うShieldバージョンのシステム要件のリソース(CPU、メモリ、SSD)を満たしていることをご確認ください。要件を満たしていない場合、Ericom Shieldがリソース不足により不安定となる問題が発生する可能性があります。
尚、各Shieldサーバのリソース構成が決まっておりリソース増強や変更が難しい等、システム要件を満たせない可能性がある場合は、バージョンアップを実施いただく前に、弊社サポートセンターへ必ずご相談ください。
参考
これまでShieldバージョンアップは1バージョンずつ行う必要がありましたが、20.07以降からバージョンアップを実施するお客様は、最新バージョンまで一度でバージョンアップが可能となりました。後述の手順で補足を加えておりますので、詳細は後述の手順をご確認ください。
警告
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以降にバージョンアップする場合、一連のバージョンアップ作業完了後に追加で実施しなければならない作業がございますので、対象の環境の場合はバージョンアップ前にご連絡をください。
Ranchar証明書更新スプリクトの事前実行¶
「【重要】Ericom ShieldにおけるRancher証明書期限切れについて 」を参照し、バージョンアップするタイミングで、Rancher証明書の更新をおこなってください。
注意
Rel-21.01以前のバージョンとRel-21.04以降のバージョンで手順が異なりますのでご注意ください。
shield システムの停止と設定ファイルのバックアップ取得¶
バージョンアップ作業にあたり、Shieldのシステムを事前に停止します。
$ ./ericomshield/shield-stop.sh
Shieldシステム停止後、Shield設定ファイルが含まれるディレクトリのバックアップを取得してください。
※System Componentノード上の「/home/ericom」配下、もしくは、nfsをご利用の場合は保存先のディレクトリのバックアップを取得してください。
Docker関連パッケージのAPTホールドとAPTアップグレード¶
最新Dockerバージョンにバージョンアップしてしまった場合に、正常にShieldが稼働しなくなる問題が発生する可能性がありますので、以下コマンドを全Shieldサーバにて実行することで、Docker関連パッケージのAPTホールドを行ってください。
$ sudo apt-mark hold containerd.io
$ sudo apt-mark hold docker-ce
$ sudo apt-mark hold docker-ce-cli
$ sudo apt-mark hold docker-ce-rootless-extras
$ sudo apt-mark hold docker-scan-plugin
$ sudo apt-mark hold docker.io
$ sudo apt-mark hold containerd
※ APTホールドされている一覧は以下コマンドで確認することができます。
$ sudo apt-mark showhold
その後、以下のコマンドにて最新パッケージまでAPTアップグレードも合わせて行ってください。
$ sudo apt update
$ sudo apt full-upgrade -y
shield-prepare-servers.sh による事前準備¶
バージョンアップ予定のバージョンに合わせて、shield-prepare-servers.sh を事前実行しておきます。 詳細な実行手順は 「5.1.5. shield-prepare-servers.sh による事前準備 」を参照してください。
kernelバージョン固定¶
最新kernelバージョンの場合に稀に正しくShieldが起動しない問題が発生する場合があります。アシストにて動作確認済みのkernelバージョンに以下のコマンドを各サーバにて実行して固定を実施してください。
アシスト動作確認済みkernelバージョン¶
- 物理サーバやVMware環境などの汎用kernelを利用している場合
- Ubuntu18.04:Linux 5.4.0-150-genericUbuntu20.04:Linux 5.15.0-84-generic
- AWS環境(AWS用kernel)の場合
- Ubuntu18.04:Linux 5.4.0-1103-awsUbuntu20.04:Linux 5.15.0-1045-aws
- AzureやHyper-V環境(Azure用kernel)の場合
- Ubuntu18.04:Linux 5.4.0-1103-azureUbuntu20.04:Linux 5.15.0-1045-azure
物理サーバやVMware環境などの汎用kernelを利用している場合¶
- Ubuntu18.04の場合
$ kernel_var="5.4.0-150-generic"
$ sudo apt-get install linux-image-${kernel_var} -y
$ kernel_id=`grep \'gnulinux-simple- /boot/grub/grub.cfg | awk -F'gnulinux-simple-' '{print $2}' | tr -d "' {"`
$ sudo sed -i -e '/GRUB_DEFAULT=/c\GRUB_DEFAULT=0' /etc/default/grub
$ sudo sed -i -e "s/GRUB_DEFAULT=0/GRUB_DEFAULT=\"gnulinux-advanced-${kernel_id}>gnulinux-${kernel_var}-advanced-${kernel_id}\"/g" /etc/default/grub
$ grep GRUB_DEFAULT= /etc/default/grub
$ sudo update-grub
$ grep "set default" /boot/grub/grub.cfg
- Ubuntu20.04の場合
$ kernel_var="5.15.0-84-generic"
$ sudo apt-get install linux-image-${kernel_var} -y
$ kernel_id=`grep \'gnulinux-simple- /boot/grub/grub.cfg | awk -F'gnulinux-simple-' '{print $2}' | tr -d "' {"`
$ sudo sed -i -e '/GRUB_DEFAULT=/c\GRUB_DEFAULT=0' /etc/default/grub
$ sudo sed -i -e "s/GRUB_DEFAULT=0/GRUB_DEFAULT=\"gnulinux-advanced-${kernel_id}>gnulinux-${kernel_var}-advanced-${kernel_id}\"/g" /etc/default/grub
$ grep GRUB_DEFAULT= /etc/default/grub
$ sudo update-grub
$ grep "set default" /boot/grub/grub.cfg
AWS環境(AWS用kernel)の場合¶
- Ubuntu18.04の場合
$ kernel_var="5.4.0-1103-aws"
$ sudo apt-get install linux-image-${kernel_var} -y
$ kernel_id=`grep \'gnulinux-simple- /boot/grub/grub.cfg | awk -F'gnulinux-simple-' '{print $2}' | tr -d "' {"`
$ sudo sed -i -e '/GRUB_DEFAULT=/c\GRUB_DEFAULT=0' /etc/default/grub
$ sudo sed -i -e "s/GRUB_DEFAULT=0/GRUB_DEFAULT=\"gnulinux-advanced-${kernel_id}>gnulinux-${kernel_var}-advanced-${kernel_id}\"/g" /etc/default/grub
$ grep GRUB_DEFAULT= /etc/default/grub
$ sudo update-grub
$ grep "set default" /boot/grub/grub.cfg
- Ubuntu20.04の場合
$ kernel_var="5.15.0-1045-aws"
$ sudo apt-get install linux-image-${kernel_var} -y
$ kernel_id=`grep \'gnulinux-simple- /boot/grub/grub.cfg | awk -F'gnulinux-simple-' '{print $2}' | tr -d "' {"`
$ sudo sed -i -e '/GRUB_DEFAULT=/c\GRUB_DEFAULT=0' /etc/default/grub
$ sudo sed -i -e "s/GRUB_DEFAULT=0/GRUB_DEFAULT=\"gnulinux-advanced-${kernel_id}>gnulinux-${kernel_var}-advanced-${kernel_id}\"/g" /etc/default/grub
$ grep GRUB_DEFAULT= /etc/default/grub
$ sudo update-grub
$ grep "set default" /boot/grub/grub.cfg
AzureやHyper-V環境(Azure用kernel)の場合¶
- Ubuntu18.04の場合
$ kernel_var="5.4.0-1103-azure"
$ sudo apt-get install linux-image-${kernel_var} -y
$ kernel_id=`grep \'gnulinux-simple- /boot/grub/grub.cfg | awk -F'gnulinux-simple-' '{print $2}' | tr -d "' {"`
$ sudo sed -i -e '/GRUB_DEFAULT=/c\GRUB_DEFAULT=0' /etc/default/grub
$ sudo sed -i -e "s/GRUB_DEFAULT=0/GRUB_DEFAULT=\"gnulinux-advanced-${kernel_id}>gnulinux-${kernel_var}-advanced-${kernel_id}\"/g" /etc/default/grub
$ grep GRUB_DEFAULT= /etc/default/grub
$ sudo update-grub
$ grep "set default" /boot/grub/grub.cfg
- Ubuntu20.04の場合
$ kernel_var="5.15.0-1045-azure"
$ sudo apt-get install linux-image-${kernel_var} -y
$ kernel_id=`grep \'gnulinux-simple- /boot/grub/grub.cfg | awk -F'gnulinux-simple-' '{print $2}' | tr -d "' {"`
$ sudo sed -i -e '/GRUB_DEFAULT=/c\GRUB_DEFAULT=0' /etc/default/grub
$ sudo sed -i -e "s/GRUB_DEFAULT=0/GRUB_DEFAULT=\"gnulinux-advanced-${kernel_id}>gnulinux-${kernel_var}-advanced-${kernel_id}\"/g" /etc/default/grub
$ grep GRUB_DEFAULT= /etc/default/grub
$ sudo update-grub
$ grep "set default" /boot/grub/grub.cfg
上記の各環境向けのkernel固定コマンドにて、kernelバージョンを固定した後は、OS再起動(sudo reboot)を実施してください。OS再記号後に指定して固定したkernelバージョンとなっていることを以下コマンドで確認してください。
$ hostnamectl | grep -e Kernel: -e Operating
- コマンド実行例
kkauser@sh01:~$ hostnamectl | grep -e Kernel: -e Operating
Operating System: Ubuntu 18.04.6 LTS
Kernel: Linux 5.4.0-150-generic
アップデート用スクリプトの確認¶
Rancherサーバに shield-update.sh が存在するか確認してください。 存在しない場合、下記コマンドにより取得してください。 存在する場合も、必ず最新版のスクリプトをダウンロードしてご利用ください。
$ curl -O https://ericom-tec.ashisuto.co.jp/shield/shield-update.sh
スクリプトの差し替え¶
注意
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"
アップデート用スクリプトの実行¶
アップデート用スクリプトを実行してください。
$ ./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!
警告
20.07以降からバージョンアップを実施するお客様は、最新バージョンへ一度にバージョンアップが可能です。最新バージョンへバージョンアップされる場合は、最新バージョンを指定してください。
続いて、システムを停止することについての確認が行われます。よろしければ「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)############################################################
Kubernetes のバージョンアップ¶
https://<Rancher Server のIPアドレス>:8443
へブラウザでアクセスし、Rancher UI を開いてログインしてください。
- 表示されているクラスタ名の右端にある三点リーダをクリックし、
EDIT
選択してください。
Kubernetes Options
のKubernetes version
で、最新のバージョンが選択されていることを確認します。
選択されていることを確認したら、 Save
で保存をしてください。
- ダッシュボード上部にクラスタがアップデートされている旨のメッセージが表示されます。 アップデートが終わると、メッセージは自動的に消えます。
Rancherのクラスタ設定変更¶
Rel-20.01以前から、Rel-20.01以降へのアップデートのみ
Rel-20.01より前のバージョンからRel-20.01以降のバージョンへアップデートする場合には、 Rancherのクラスタ設定を手動で変更する必要があります。
https://<Rancher Server のIPアドレス>:8443
へブラウザでアクセスし、Rancher UI を開いてログインしてください。
- 表示されているクラスタ名の右端にある三点リーダをクリックし、
EDIT
選択してください。
- 画面にある
Edit as YAML
をクリックしてください。
- 表示されたYAMLを下記のように変更してください。 編集箇所は kubelet セクションの extra_ards です。 赤枠で囲んだ文字列を追記してください。YAMLフォーマットのため、インデントは正確に設定してください。
注意
既に設定済みの値は変更しないように注意してください。
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
をクリックしてください。 ダッシュボードに戻ります。ダッシュボード上部にクラスタがアップデートされている旨のメッセージが表示されます。 アップデートが終わると、メッセージは自動的に消えます。
Rel-20.05以前から、Rel-20.07以降へのアップデートのみ
Rel-20.05以前のバージョンからRel-20.07以降のバージョンへアップデートする場合には、 Rancherのクラスタ設定を手動で変更する必要があります。
https://<Rancher Server のIPアドレス>:8443
へブラウザでアクセスし、Rancher UI を開いてログインしてください。
- 表示されているクラスタ名の右端にある三点リーダをクリックし、
EDIT
選択してください。
- 画面にある
Edit as YAML
をクリックしてください。
- 表示されたYAMLを下記のように変更してください。 編集箇所は kube-controller セクションの extra_ards です。 赤枠で囲んだ文字列を 削除 してください。YAMLフォーマットのため、インデントは正確に設定してください。
注意
既に設定済みの値は変更しないように注意してください。
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管理コンソール > ポリシー設定画面 > Defaultポリシー
- ⇒ Shieldモードのダウンロード
バックアップjsonファイルによる復元¶
注意
Rel-20.07以降から最新バージョンまで一度にバージョンアップした場合は、下記を実施してください。
|
|
|
|
|
|
|
|
|
|
|
|
|