1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

IBM Cloud Shell で新しいバージョンの kubectl を利用する

Last updated at Posted at 2023-11-07

IBM Cloud Shell は Web ベースのシェル実行環境で IBM Cloud CLI や いくつかのツールが導入されている環境である。
この環境で IBM Cloud Kubernetes Service や Red Hat OpenShift on IBM Cloud などのマネージド Kubernetes 環境を管理する際に kubectl や oc といったツールを利用することになるが、これらはapiserver のバージョンと +1 から -1 までの間のバージョンを使用しないといけない制約がある。一方で IBM Cloud Shell には少し古いバージョンの kubectl しか導入されていないことがあり、そのような場合に新しいバージョンの kubectl を利用できる手順を整理します。

IBM Cloud Shell に導入済みの kubectl

IBM Cloud にログインして Cloud Shell にアクセスします。

早速導入されている kubectl について確認します。v1.22.3 が導入されていることが確認できます。ちょっと古めのバージョンですね。

user@cloudshell:~$ kubectl version --client=true --output=yaml
clientVersion:
  buildDate: "2021-10-27T18:41:28Z"
  compiler: gc
  gitCommit: c92036820499fedefec0f847e2054d824aea6cd1
  gitTreeState: clean
  gitVersion: v1.22.3
  goVersion: go1.16.9
  major: "1"
  minor: "22"
  platform: linux/amd64

user@cloudshell:~$ which kubectl
/usr/local/bin/kubectl

新しいバージョンの kubectl を導入する

インストール済みの kubectl を上書きすることはできないので、別の場所に導入してパスを通して利用します。
新しいバージョンの kubectl のモジュールをダウンロードし、実行できるようにします。いくつかのやり方が考えられますが、kubectl コマンドの実行時に新しいバージョンが実行されるようにします。
新しいモジュールをダウンロードし、実行用のパーミッションを与え、環境変数にカレントディレクトリを追加します。

USER@cloudshell:~$ curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   138  100   138    0     0   2190      0 --:--:-- --:--:-- --:--:--  2190
100 47.5M  100 47.5M    0     0  47.5M      0  0:00:01  0:00:01 --:--:-- 55.1M

USER@cloudshell:~$ ls -la
total 48740
drwxrwxrwx  4 root  root     4096 Nov  7 16:53 .
drwxr-xr-x  1 root  root     4096 Nov  7 16:52 ..
-rw-r--r--  1 USER  user      219 Nov  7 16:52 .bash_logout
-rw-r--r--  1 USER  user     4041 Nov  7 16:52 .bashrc
-rw-rw-r--  1 USER  user 49872896 Nov  7 16:53 kubectl
drwxr-xr-x  3 USER  user     4096 Nov  7 16:52 .npm
-rw-------  1 USER  user       14 Nov  7 16:52 .npmrc
-rw-r--r--  1 USER  user      998 Nov  7 16:52 .profile
drwxr-xr-x 14 USER  user     4096 Nov  7 16:52 .pyenv

USER@cloudshell:~$ chmod 755 kubectl

USER@cloudshell:~$ ls -la
total 48740
drwxrwxrwx  4 root  root     4096 Nov  7 16:53 .
drwxr-xr-x  1 root  root     4096 Nov  7 16:52 ..
-rw-r--r--  1 USER  user      219 Nov  7 16:52 .bash_logout
-rw-r--r--  1 USER  user     4041 Nov  7 16:52 .bashrc
-rwxr-xr-x  1 USER  user 49872896 Nov  7 16:53 kubectl
drwxr-xr-x  3 USER  user     4096 Nov  7 16:52 .npm
-rw-------  1 USER  user       14 Nov  7 16:52 .npmrc
-rw-r--r--  1 USER  user      998 Nov  7 16:52 .profile
drwxr-xr-x 14 USER  user     4096 Nov  7 16:52 .pyenv

USER@cloudshell:~$ echo $PATH
/home/USER/.pyenv/shims:/home/USER/.pyenv/bin:/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:~$ export PATH=~:$PATH

USER@cloudshell:~$ echo $PATH
/home/USER:/home/USER/.pyenv/shims:/home/USER/.pyenv/bin:/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 kubectl
~/kubectl

新しい kubectl のバージョンを確認する

改めて kubectl のバージョンを確認すると、執筆時における最新の安定版である v1.28.3 が利用されていることがわかります。これで新しいバージョンのクラスターも管理できます。

USER@cloudshell:~$ kubectl version --client=true --output=yaml
clientVersion:
  buildDate: "2023-10-18T11:42:52Z"
  compiler: gc
  gitCommit: a8a1abc25cad87333840cd7d54be2efaf31a3177
  gitTreeState: clean
  gitVersion: v1.28.3
  goVersion: go1.20.10
  major: "1"
  minor: "28"
  platform: linux/amd64
kustomizeVersion: v5.0.4-0.20230601165947-6ce0bf390ce3

まとめ

Cloud Shellはセッションが終了すると環境が維持されないので、起動のたびに新しいバージョンに置き換える必要があります。多少面倒ですが必要なバージョンのツールを都度用意しましょう。

最新の安定版kubectlを導入するには以下のコマンドを実行します

curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
chmod 755 kubectl
export PATH=~:$PATH

特定のバージョンのkubectlを導入するには以下のコマンドを実行します。以下はv1.26.10の例です。バージョンの文字列を必要とするバージョンのものに置き換えれば所望のバージョンを導入できます。

curl -LO "https://dl.k8s.io/release/v1.26.10/bin/linux/amd64/kubectl"
chmod 755 kubectl
export PATH=~:$PATH

参考文献

IBM Cloud Docs インストール済みのプラグインとツール

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?