Windows版Microk8sで作ったk8sノードにssh接続できるようにする
Windows版Microk8sではKubernetesを構築するにあたり、Multipassを使用して仮想マシン上のUbuntu環境を管理する。
通常はMultipassのサブコマンドだけで事足りるのだが、CLIではなくプログラムなどからsshで直接操作したい場合がある。
これには通常sshで公開鍵認証でアクセスできるようにする場合と同様に、仮想マシン上のUbuntu環境に公開鍵を登録するだけで可能になる。
具体的な手順は以下の通り。手順は全てWindows上のPowerShellで行うことができる。
キーペアを作る
暗号化方式やキー長はここではデフォルト値を使用する。差し当たってのpasswordはubuntu
とする。
実行時にキーの作成先を問われるがこれもデフォルトの$home\.ssh\id_rsa
とする。
ssh-keygen -N 'ubuntu' -q
公開鍵を登録する
鍵の登録先はk8sノードのinstanceであるmicrok8s-vm
になる。
multipass transfer
で公開鍵を送った後にmultipass shell
でログオンし手作業でコピペしても良いが、以下の様にPowerShell上から作業した方が面倒がない。
multipass exec microk8s-vm -- sh -c "cat <<EOF >>~/.ssh/authorized_keys
$(Get-Content $home\.ssh\id_rsa.pub)
EOF
"
後は通常通りsshなどでログオンを試す。VM再起動時にIPアドレスが変化する可能性があるため、multipass info
から取得するのが楽だろう。
ssh ubuntu@$($(multipass info microk8s-vm --format=json | ConvertFrom-Json).info."microk8s-vm".ipv4)
以上で完了。必要に応じてscpなどでのアクセスも試す。