Docker/K8S実践コンテナ開発入門@19日目

前回途中の続きです。

lawrence-twin.hateblo.jp

Ingressが作成が完了すると以下のとおりグローバルIPが付与されます。

■確認コマンド

lawrence@Chocolate docindoc3 % kubectl get ingress
NAME      HOSTS   ADDRESS          PORTS   AGE
ingress   *       34.102.173.186   80      23h

Ingressの準備が整っているかはGCPKubernetes Engine > サービスとIngressから確認可能です。
f:id:lawrence-twin:20200517001401p:plain

大丈夫ならステータスが「OK」となっているはずですが、
今回は「Some backend serviceses are in UNHEALTHEY state」となっています。。。

割り振られたIPアドレスに接続すると、502エラーが発生することを確認
f:id:lawrence-twin:20200517002359p:plain

バックエンドサービスを見ると以下のエラーが
片方はOKだが、もう片方がダメみたいです。
f:id:lawrence-twin:20200517005714p:plain

todowebが問題か?と考えてログファイルを確認すると以下のとおり

f:id:lawrence-twin:20200517013553p:plain

ExecuteQueryFailureということはDB関連の問題です。
考えたのは以下のとおりです。

  • MySQLに接続できてない
  • 実行するSQLが正しくない


以下のコマンドで今度は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;

すると以下の通りエラーが解消しました。やった!
f:id:lawrence-twin:20200517022827p:plain

以下のの通り接続できること確認できました。
f:id:lawrence-twin:20200517023036p:plain

しかし、書籍通りにやっているはずですがinit.shで実行するsqlの中に入れ忘れたのでしょうか。
うーん謎です。