Мои файлы yaml для различных развертываний, служб и входов уже создавали рабочую настройку. Я попытался исправить небольшую проблему с входящим потоком и не могу вернуться в рабочее состояние.
Мои поды запускаются без ошибок, а службы работают. В журналах нет записей о проверке работоспособности, поэтому, похоже, проблема заключается в том, чтобы связаться со службами по имени. При входе в create я вижу это событие в интерфейсе GKE (а не при использовании kubectl describe):
Error during sync: error while evaluating the ingress spec: could not find service "default/web";
Служба действительно работает:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
elasticsearch ClusterIP None <none> 9200/TCP,9300/TCP 5h
kubernetes ClusterIP 10.31.x.x <none> 443/TCP 5h
redis-master ClusterIP 10.31.x.x <none> 6379/TCP 5h
web NodePort 10.31.x.x <none> 80:30110/TCP,443:31404/TCP 5h
websocket NodePort 10.31.x.x <none> 28080:30186/TCP 5h
Я попытался перезапустить службы и перейти на вход nginx. Моя единственная оставшаяся идея - нанести ядерный удар по кластеру. Как будто внутренний DNS k8s сломан.
У меня был порт 80 и 443, указывающий на 3000 для веб-службы, на которой работало мое приложение Rails. Я включил force_ssl
в конфигурации Rails. Я полагал, что все это будет перенаправлять HTTP-запросы на https, но оказалось, что это сбрасывает порт, на котором вы работаете. Вам нужно указать порт, если вы хотите включить force_ssl: https://github.com/rails/rails/issues/19820
Поскольку порт 3000 больше не отвечал на 200, эта служба была помечена как неработоспособная, несмотря на то, что в остальном с ней все было в порядке.