LoginSignup
0

More than 3 years have passed since last update.

posted at

updated at

kubed-shを使ってローカルにRuby,Python,Nodeをインストールせずにスクリプトを実行する

kubed-shとは

ちょっとしたRuby,Python,Nodeのコードを実行したい。けどローカルにRuby,Python,Nodeがインストールされていない。
ってこと時々ありますよね。
repl.itを使う選択肢もありますが、ローカルサーバーや社内サーバーと通信するプログラムの場合そうはいきません。
そういう場合、kubed-shを使うと便利です。
kubed-shはKubernetesクラスタにRuby,Python,Nodeがインストールされたpodを用意してそこでプログラムを実行してくれます。

インストールして試す

試したkubed-shのバージョンは0.5.1です。

まずminikubeとかでKubernetesクラスタをkubectlを使える状態にしておきます。

https://github.com/mhausenblas/kubed-sh#install-it にあるとおりにインストールする。

$ curl -s -L https://github.com/mhausenblas/kubed-sh/releases/download/0.5.1/kubed-sh-macos -o kubed-sh
$ chmod +x kubed-sh
$ sudo mv kubed-sh /usr/local/bin

次にテスト用のスクリプトを用意します。

test.rb
#!/usr/bin/env ruby
require 'socket'
hostname = Socket.gethostname

puts "Hello from Ruby, running on host #{hostname}"

次にkubed-shコマンドを実行します。

$ ./kubed-sh
Note: It seems you're running kubed-sh in a non-Linux environment (detected: darwin),
so make sure the binaries you launch are Linux binaries in ELF format.

Detected Kubernetes client in version v1.8.6 and server in version v1.10.0


Type 'help' to learn about available built-in commands.
[minikube::default]$ 

これでkubed-shが提供するシェル環境に入った状態になりました。
ここで先程のスクリプトを実行してみます。

# スクリプトがあることを確認できる
[minikube::default]$ ls -l
total 8
-rw-r--r--  1 akira  staff  120 12 22 14:41 test.rb

# スクリプトを実行
[minikube::default]$ ruby fuga.rb
pod "kubed-sh-1545457321216549000" created
uploaded /Users/akira/ws/sandbox/kubed-sh/fuga.rb to kubed-sh-1545457321216549000

Hello from Ruby, running on host kubed-sh-1545457321216549000

実行できましたね。メッセージからスクリプトをする際にpodが作成されているのがわかると思います。
また、先程のスクリプトファイルをローカルマシン側で内容を変更して再度実行すると、変更内容が反映されます。
ローカルサーバーと通信したい場合はローカルマシンのIPを指定すれば通信ができます。

なかなかおもしろいですね。

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
What you can do with signing up
0