LoginSignup
2
0

OpenShift 上の container に Dev Containers でアタッチする

Last updated at Posted at 2024-02-05

要約

  • 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 を準備する

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.exekubectl.exe をパスが通ったフォルダに格納する
    • フォルダ本来の目的から外れているかもしれないが、個人的には以下のフォルダを使うことが多い
%userprofile%\AppData\Local\Microsoft\WindowsApps

VSCode に extension を追加する

container を起動する

  • ここではベースのイメージに node を使用する
  • ただしこのイメージをそのまま使用すると container が終了する、接続後にエラーが発生するなど問題が発生するため node を ベース・イメージ に最低限の設定を行う Dockerfileを準備する
  • OpenShift の console にて、
    • "Developr > Topology" の画面にて右クリックして "Import from Git" をクリックする
      • import-from-git.png
    • Dockerfile を含むリポジトリの URL を入力する
      • git-repo-url.png
    • container 作成後に Dockerfile を変更したい場合は Pipeline を追加する、インターネットに公開しない場合は Route を作成しない、など適宜設定してから Create をクリックする
      • pipeline-route.png
    • しばらく待ってから Pod が動いている ( 濃い青円になっている ) ことを確認する
      • pod-is-running.png

OpenShiftに接続する

  • oc login コマンドを console から取得する
    • Copy login command > DevSandbox > Display Token
      • copy-login-command.png
      • login-with-token.png
  • 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 を確認できる
    • pods-in-extension.png
  • container で右クリックして "Attach Visual Studio Code" を選択する
    • attach-vscode.png
  • 新しい VSCode のウィンドウが表示されるのでしばらく待つ
  • 画面が落ち着いたら "File > Open Folder..." をクリックする
  • 読み書きができる Directory を選択する
    • open-folder.png
  • Terminal を開こうとするとエラー (The terminal process "/sbin/nologin" terminated with exit code: 1.) が発生する場合、
    • terminal-error.png
    • Ctrl+Shift+P から以下を実行した後にもう一度 Terminal を開いてみる
>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.
  • 以上です
2
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
2
0