MySQL(RDS)のDBへ、K8sコンテナ上のMySQLクライアントから接続確認する方法、SQLを流す際のメモです。
同じVPC内のプライベートサブネットに配置してあるRDSインスタンスへ、パブリックサブネットに配置してあるK8sクラスタノードからアクセスします。
既にRDSのDBインスタンスを作成しセキュリティグループの設定なども完了している事が前提です。
###DockerでMySQLクライアントを起動してコンテナからMySQLに接続
sudo docker run -it --rm mysql mysql -h{RDSインスタンスのエンドポイント} -u{ユーザー名} -p
・K8sのワーカーノードにsshログインし、コンテナ上で上記を実行します。
・ここでパスワードを聞かれるのでRDSインスタンス構築時に入力したパスワードを入力するとMySQLに接続できます。
###DockerでMySQLクライアントを起動してコンテナからMySQLに接続(ファイルを指定してSQL実行する場合)
sudo docker run -v /{マウント元ファイルパス}:/work -it --rm mysql mysql -h{RDSインスタンスのエンドポイント} -u{ユーザー名} -p
・-vでボリュームをマウントします。
・マウント元ファイルパスにはK8sワーカーノード上のファイルを配置しているディレクトリパスを指定します。
・ここではマウント先ディレクトリを/workとしていますが任意のものを設定します。
###ファイルを指定してSQL実行
source /{マウント先パス}/{ファイル名}
・source /{マウント先のパス}/{ファイル名}となるように指定する事でファイルに記載したSQLを実行できます。
・ボリュームをマウントしていないと、sourceコマンドでファイルを指定してSQLを流そうとした際に以下のようなエラーとなるためご注意ください。
ERROR:
Failed to open file 'ファイル名', error: 2