上の資料はGoogle Cloud PlatformのCloud Shell上で、dockerのイメージを作成して、アップして、コンテナを起動したり、クラスタを作ったりしている。

Cloud Shellはブラウザ上で使えるシェルで、その環境では作業に必要なGoogle CloudやDocker関連のコマンドが使えるようになっている。

また、Google Cloudへの認証はデフォルトで設定されている。

tmuxが使える状態になっていて、キーバインドはデフォルトらしいのだが、自分が試したことろ反応しなかった。キーバインドが使えるようにChrome拡張をいれたのだが・・・。

詳しい環境についてはこちら。

Cloud Shellはすぐ始められるという利点はあるが

  • zshがない
  • 256色がサポートされてない
  • metaが使えない
  • 制御シーケンスがサポートされていない
  • デフォルトでtmuxの中での作業になるが、escape-timeが長い。
  • ブラウザで設定したキーバインドとバッティングする

などの問題があるので、PC上にGoogle Cloud用の設定、dockerコマンドの設定をしてローカルで作業をすることにする。

ちなみにCloud Shellの環境は$HOME以下以外のディレクトリは1時間非アクティブな状態になると状態がなくなってしまうらしい。

$HOME以下は保たれるので$HOME以下にzshなどのコマンドをインストールすれば消えずに残る。

こちらのシェルスクリプトを使えば、$HOME/local/bin以下にzshをインストールすることは可能だ。

以下、Macを前提とする。

Macだと以下に従って、Google Cloud Platformに必要なものをインストールしていけばよい。

Quickstart for Mac OS X  |  Cloud SDK Documentation  |  Google Cloud Platform

これで、必要なコマンドと認証が設定される。

kubectlを使おうとすると、さらにコマンドが必要で、

$ gcloud components install kubectl

でkubectlをインストールした。さらに認証が必要らしく

$ kubectl get nodes
error: google: could not find default credentials. See https://developers.google.com/accounts/docs/application-default-credentials for
more information.

が出力されたが、https://developers.google.com/identity/protocols/application-default-credentials

を見て、設定したら問題なくうまくいった。

補完を使う場合は.zshrcに以下を追記する。あらかじめファイルに出力して、読み込んでもよい。

source <(kubectl completion zsh)

dockerについてはGetting Started - Dockerを見て、設定すれば良い。

bashの補完の設定しか書いてないが、zshの補完関数も用意されており、$fpathに入っている場所にシンボリックリンクを貼ってやれば良い。

例えば、zshrcに

fpath=(
    ~/.zsh/functions
    $fpath
)

と書いておき、

$ cd ~/.zsh/functions
$ ln -s /Applications/Docker.app/Contents/Resources/etc/docker-compose.zsh-completion _docker-compose
$ ln -s /Applications/Docker.app/Contents/Resources/etc/docker-machine.zsh-completion _docker-machine
$ ln -s /Applications/Docker.app/Contents/Resources/etc/docker.zsh-completion _docker

など。