以前 IBM Cloud Shell で導入済みの kubectl とは異なるバージョンの kubectl を利用する方法を紹介しました。
今回は同じようにIBM Cloud Shellで別のバージョンの oc コマンドを利用する方法を紹介します。基本的な流れは kubectl の時と同様です。新しいバージョンの oc モジュールをダウンロードし、環境変数を通して利用するだけです。
ただし、 oc バージョン 4.16 以降はベースになる OS が Red Hat Enterprise Linux 9 となっており、その点は注意が必要でした。記事執筆時の Cloud Shell 環境は Red Hat Enterprise Linux 8 をベースとしている模様です。
IBM Cloud Shell に導入済みの oc
IBM Cloud にログインして Cloud Shell にアクセスします。
早速導入されている oc について確認します。v4.13.15 が導入されていることが確認できます。
USER@cloudshell:~$ oc version --client=true --output=yaml
clientVersion:
buildDate: "2023-09-18T22:51:58Z"
compiler: gc
gitCommit: 17b7accf8fd25125ce015cf4bea7d3cd3f336317
gitTreeState: clean
gitVersion: 4.13.0-202309181427.p0.g17b7acc.assembly.stream-17b7acc
goVersion: go1.19.10 X:strictfipsruntime
major: ""
minor: ""
platform: linux/amd64
kustomizeVersion: v4.5.7
releaseClientVersion: 4.13.15
新しいバージョンの oc をダウンロードする
インストール済みの oc を上書きすることはできないので、別の場所に導入してパスを通して利用します。
新しいバージョンの oc のモジュールをダウンロードし、実行できるようにします。いくつかのやり方が考えられますが、oc コマンドの実行時に新しいバージョンが実行されるようにします。
新しいモジュールをダウンロードし、実行用のパーミッションを与え、環境変数にカレントディレクトリを追加します。
oc version 4.12, 4.14, 4.15を利用したい場合
oc クライアントのレポジトリの安定バージョンが配置されているディレクトリ 4.12 4.14 4.15にある openshift-client-linux.tar.gz をダウンロードして展開します。
curl -LO "https://mirror.openshift.com/pub/openshift-v4/clients/ocp/stable-4.12/openshift-client-linux.tar.gz"
curl -LO "https://mirror.openshift.com/pub/openshift-v4/clients/ocp/stable-4.14/openshift-client-linux.tar.gz"
curl -LO "https://mirror.openshift.com/pub/openshift-v4/clients/ocp/stable-4.15/openshift-client-linux.tar.gz"
oc version 4.16, 4.17を利用したい場合
(以降のバージョンもしばらくこちらの方法で利用できるはず)oc クライアントのレポジトリの安定バージョンが配置されているディレクトリ 4.16 4.17 にある openshift-client-linux-amd64-rhel8-<バージョン>.tar.gz をダウンロードして展開します。
バージョン4.15までと同じように openshift-client-linux.tar.gz という名称のファイルが存在するのですが、これはベースの OS が RHEL9 となっており、Cloud Shell 環境では稼働させるとエラーが発生します。いずれ Cloud Shell 環境が RHEL9 で稼働するようになった場合には openshift-client-linux.tar.gz をダウンロードして利用すればよいはずです。
curl -LO https://mirror.openshift.com/pub/openshift-v4/clients/ocp/stable-4.16/openshift-client-linux-amd64-rhel8-$(curl -sS "https://mirror.openshift.com/pub/openshift-v4/clients/ocp/stable-4.16/release.txt" | grep "Name:" | grep -o '[3-9]\.[0-9]*\.[0-9]*').tar.gz
curl -LO https://mirror.openshift.com/pub/openshift-v4/clients/ocp/stable-4.17/openshift-client-linux-amd64-rhel8-$(curl -sS "https://mirror.openshift.com/pub/openshift-v4/clients/ocp/stable-4.17/release.txt" | grep "Name:" | grep -o '[3-9]\.[0-9]*\.[0-9]*').tar.gz
ダウンロードした新しいバージョンの oc を実行できるようにする
kubectlのときとは異なり、ダウンロードしたモジュールは圧縮されています。これを解凍し、環境変数に解凍先のパスを追加します。
まずダウンロードしたファイル名を確認します。
USER@cloudshell:~$ ls -la
total 67272
drwxr-sr-x 3 USER user 4096 Dec 2 05:07 .
drwxr-xr-x 1 root root 4096 Dec 2 03:21 ..
-rw-r--r-- 1 USER user 219 Dec 2 03:21 .bash_logout
-rw-r--r-- 1 USER user 3902 Dec 2 03:21 .bashrc
drwxr-sr-x 3 USER user 4096 Dec 2 03:22 .npm
-rw------- 1 USER user 14 Dec 2 04:38 .npmrc
-rw-r--r-- 1 USER user 998 Dec 2 03:21 .profile
-rw-rw-r-- 1 USER user 68851661 Dec 2 05:06 openshift-client-linux-amd64-rhel8-4.17.5.tar.gz
ファイルを解凍し、環境変数とパーミッションを確認し、環境変数の方にカレントディレクトリを追加します。
USER@cloudshell:~$ tar xvf openshift-client-linux-amd64-rhel8-4.17.5.tar.gz
README.md
oc
kubectl
USER@cloudshell:~$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/go/bin:/usr/local/istio/bin:/opt/gradle/gradle-6.0.1/bin:/opt/ant/bin:/opt/maven/bin
USER@cloudshell:~$ ls -la
total 392516
drwxr-sr-x 3 USER user 4096 Dec 2 05:10 .
drwxr-xr-x 1 root root 4096 Dec 2 03:21 ..
-rw-r--r-- 1 USER user 219 Dec 2 03:21 .bash_logout
-rw-r--r-- 1 USER user 3902 Dec 2 03:21 .bashrc
drwxr-sr-x 3 USER user 4096 Dec 2 03:22 .npm
-rw------- 1 USER user 14 Dec 2 04:38 .npmrc
-rw-r--r-- 1 USER user 998 Dec 2 03:21 .profile
-rw-r--r-- 1 USER user 950 Oct 25 05:27 README.md
-rwxr-xr-x 2 USER user 166519320 Oct 25 05:27 kubectl
-rwxr-xr-x 2 USER user 166519320 Oct 25 05:27 oc
-rw-rw-r-- 1 USER user 68851661 Dec 2 05:06 openshift-client-linux-amd64-rhel8-4.17.5.tar.gz
USER@cloudshell:~$ export PATH=~:$PATH
USER@cloudshell:~$ echo $PATH
/home/USER:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/go/bin:/usr/local/istio/bin:/opt/gradle/gradle-6.0.1/bin:/opt/ant/bin:/opt/maven/bin
USER@cloudshell:~$ which oc
~/oc
新しい oc のバージョンを確認する
oc のバージョンを確認すると、執筆時における最新の安定版である v4.17.5 が利用されていることがわかります。実際にはELSの4.14や4.16を使用したいケースが多いかもしれませんが、同様に新しいバージョンを導入できたことが確認できていることと思います。USER@cloudshell:~$ oc version --client=true --output=yaml
clientVersion:
buildDate: "2024-10-25T05:26:15Z"
compiler: gc
gitCommit: dde885f94df59c4816acc36814ffec3b55d4a1ca
gitTreeState: clean
gitVersion: 4.17.0-202410241236.p0.gdde885f.assembly.stream.el9-dde885f
goVersion: go1.22.7 (Red Hat 1.22.7-1.module+el8.10.0+22325+dc584f75) X:strictfipsruntime
major: ""
minor: ""
platform: linux/amd64
kustomizeVersion: v5.0.4-0.20230601165947-6ce0bf390ce3
releaseClientVersion: 4.17.5
まとめ
これも繰り返しになりますが、 Cloud Shell はセッションが終了すると環境が維持されないので、起動のたびに新しいバージョンに置き換える必要があります。多少面倒ですが必要なバージョンのツールを都度用意しましょう。各マイナーバージョンに対応した 安定版 oc を導入して使用するには以下のコマンドを実行します。
curl -LO "https://mirror.openshift.com/pub/openshift-v4/clients/ocp/stable-4.12/openshift-client-linux.tar.gz"
tar xvf openshift-client-linux.tar.gz
export PATH=~:$PATH
curl -LO "https://mirror.openshift.com/pub/openshift-v4/clients/ocp/stable-4.13/openshift-client-linux.tar.gz"
tar xvf openshift-client-linux.tar.gz
export PATH=~:$PATH
curl -LO "https://mirror.openshift.com/pub/openshift-v4/clients/ocp/stable-4.14/openshift-client-linux.tar.gz"
tar xvf openshift-client-linux.tar.gz
export PATH=~:$PATH
curl -LO "https://mirror.openshift.com/pub/openshift-v4/clients/ocp/stable-4.15/openshift-client-linux.tar.gz"
tar xvf openshift-client-linux.tar.gz
export PATH=~:$PATH
curl -LO https://mirror.openshift.com/pub/openshift-v4/clients/ocp/stable-4.16/openshift-client-linux-amd64-rhel8-$(curl -sS "https://mirror.openshift.com/pub/openshift-v4/clients/ocp/stable-4.16/release.txt" | grep "Name:" | grep -o '[3-9]\.[0-9]*\.[0-9]*').tar.gz
tar xvf openshift-client-linux-amd64-rhel8-$(curl -sS "https://mirror.openshift.com/pub/openshift-v4/clients/ocp/stable-4.16/release.txt" | grep "Name:" | grep -o '[3-9]\.[0-9]*\.[0-9]*').tar.gz
export PATH=~:$PATH
curl -LO https://mirror.openshift.com/pub/openshift-v4/clients/ocp/stable-4.17/openshift-client-linux-amd64-rhel8-$(curl -sS "https://mirror.openshift.com/pub/openshift-v4/clients/ocp/stable-4.17/release.txt" | grep "Name:" | grep -o '[3-9]\.[0-9]*\.[0-9]*').tar.gz
tar xvf openshift-client-linux-amd64-rhel8-$(curl -sS "https://mirror.openshift.com/pub/openshift-v4/clients/ocp/stable-4.17/release.txt" | grep "Name:" | grep -o '[3-9]\.[0-9]*\.[0-9]*').tar.gz
export PATH=~:$PATH
参考資料
IBM Cloud Docs インストール済みのプラグインとツール
バージョン 4.16 での oc 導入時に見られるエラー
oc command fails due to missing glibc library