要約
- OpenShift 上の container に Visual Studio Code ( 以降 VSCode ) の Dev Containers extension で接続できたら便利かもしれないと思った
- extension のドキュメントには Kubernetes 上の container に接続できそうな記載がある
- Kubernetes で接続できるのであれば OpenShift でも接続できるに違いない
- 試した結果、接続できたが途中何度かつまづいたため記事に残す
- OpenShift を初めて 2 日程度の初心者のためもっと良い方法や間違っている箇所がある場合は教えてください
- 環境は以下を用いた
- クライアント ( VSCode の実行環境 ) は Windows 11
-
Redhat Developer sandbox
- sandbox は 30 日毎に環境がリセットされるが継続して使用できる様子 ( その他の制限は FAQ を参照 )
手順
Redhat Developer sandbox に登録する
- Qiita にも登録方法を纏めている記事があるためここでは省略する
- OpenShift の console を開けるところまで進める
kubectl を準備する
-
Getting started with the OpenShift CLI などからアーカイブをダウンロードする
- Kubernetes 本家からダウンロードしても良いかもしれないが 念の為 OpenShift が提供している kubectl を用いる
- Windows のアーカイブには
kubectl.exe
が同梱されていないが代わりに同梱されている README.md に以下のような記載があるためoc.exe
をコピーしたものをkubectl.exe
にリネームして使用する
If you would like to use `kubectl.exe` instead, copy the `oc.exe` file and rename it to `kubectl.exe`.
The interface will follow the conventions of that CLI.
-
oc.exe
とkubectl.exe
をパスが通ったフォルダに格納する- フォルダ本来の目的から外れているかもしれないが、個人的には以下のフォルダを使うことが多い
%userprofile%\AppData\Local\Microsoft\WindowsApps
VSCode に extension を追加する
- 以下 2 つを追加する
container を起動する
- ここではベースのイメージに node を使用する
- ただしこのイメージをそのまま使用すると container が終了する、接続後にエラーが発生するなど問題が発生するため node を ベース・イメージ に最低限の設定を行う Dockerfileを準備する
- 準備した Dockerfile が コチラ
- OpenShift の console にて、
OpenShiftに接続する
-
oc login
コマンドを console から取得する - VSCode の Terminal に先ほど取得した
oc login
コマンドを貼り付けて実行する
PS C:\qiita> oc login --token=sha256~nt_tekitonaataidayo5jZfYFwumOaCBPSXueIUf3n0 --server=https://api.sandbox-nx.999k.p9.openshiftapps.com:6443
Logged into "https://api.sandbox-nx.999k.p9.openshiftapps.com:6443" as "ark38" using the token provided.
You have one project on this server: "ark38-dev"
Using project "ark38-dev".
- この状態で Kubernetes のビューを確認すると先ほど起動した container を確認できる
- container で右クリックして "Attach Visual Studio Code" を選択する
- 新しい VSCode のウィンドウが表示されるのでしばらく待つ
- 画面が落ち着いたら "File > Open Folder..." をクリックする
- 読み書きができる Directory を選択する
- Terminal を開こうとするとエラー (The terminal process "/sbin/nologin" terminated with exit code: 1.) が発生する場合、
>Terminal: Select Default Profile
bash
- 無事 Terminal が開いたら適当なコマンドを実行してみる
1012030000@openshift-node-git-5c787dd8d9-bztb9:~$ node -v
v21.6.1
1012030000@openshift-node-git-5c787dd8d9-bztb9:~$ echo "console.log('Hello Goodbye.')" > index.js
1012030000@openshift-node-git-5c787dd8d9-bztb9:~$ node index.js
Hello Goodbye.
- 以上です