Docker/K8S実践コンテナ開発入門@19日目
前回途中の続きです。
Ingressが作成が完了すると以下のとおりグローバルIPが付与されます。
■確認コマンド
lawrence@Chocolate docindoc3 % kubectl get ingress NAME HOSTS ADDRESS PORTS AGE ingress * 34.102.173.186 80 23h
Ingressの準備が整っているかはGCPのKubernetes Engine > サービスとIngressから確認可能です。
大丈夫ならステータスが「OK」となっているはずですが、
今回は「Some backend serviceses are in UNHEALTHEY state」となっています。。。
割り振られたIPアドレスに接続すると、502エラーが発生することを確認
バックエンドサービスを見ると以下のエラーが
片方はOKだが、もう片方がダメみたいです。
todowebが問題か?と考えてログファイルを確認すると以下のとおり
ExecuteQueryFailureということはDB関連の問題です。
考えたのは以下のとおりです。
以下のコマンドで今度はmysqlを確認します。
すると以下のエラーが大量に出ていることが確認できました。
■エラーログ
2020-05-16T10:25:47.858551Z 5584 [Note] Access denied for user 'gihyo'@'10.52.2.4' (using password: YES)
yamlの定義だとUser:gihyo, Password:gihyoでログインすることになっています。
念のために以下のコマンドで確認してみます。
mysql> select host, user from mysql.user; +-----------+---------------+ | host | user | +-----------+---------------+ | % | root | | 10.52.%.% | repl | | localhost | mysql.session | | localhost | mysql.sys | | localhost | root | +-----------+---------------+ 5 rows in set (0.00 sec)
お、「gihyo」というユーザがないですね。
以下のコマンドで追加してみます。
■ユーザ追加
CREATE USER 'gihyo'@'%' IDENTIFIED BY 'gihyo'
grant all privileges on tododb.* to gihyo@“%” identified by ‘gi’hyo with grant option;
すると以下の通りエラーが解消しました。やった!
以下のの通り接続できること確認できました。
しかし、書籍通りにやっているはずですがinit.shで実行するsqlの中に入れ忘れたのでしょうか。
うーん謎です。