kubernetes: curl external site using externalServices не работает

Я хочу протестировать externalServices в кубернетах. Итак, я создаю внешний сервис, указывающий на какой-то веб-сайт (gf.dev):

apiVersion: v1
kind: Service
metadata:
  name: my-service
spec:
  type: ExternalName
  externalName:  gf.dev

Теперь хочу проверить, все работает нормально:

kubectl run --rm watchpod -it --image arunvelsriram/utils bash

Хост, кажется, делает это:

root@watchpod:/# host my-service
my-service.abdelghani.svc.cluster.local is an alias for gf.dev.
gf.dev has address 172.67.213.5
gf.dev has address 104.21.77.239
gf.dev has IPv6 address 2606:4700:3030::ac43:d505
gf.dev has IPv6 address 2606:4700:3037::6815:4def

Но curl этого не делает:

root@watchpod:/# curl -I my-service
**HTTP/1.1 403 Forbidden**
Date: Mon, 25 Jan 2021 10:16:00 GMT
Content-Type: text/plain; charset=UTF-8
Content-Length: 16
**Connection: close**
X-Frame-Options: SAMEORIGIN
Cache-Control: private, max-age=0, no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Expires: Thu, 01 Jan 1970 00:00:01 GMT
Set-Cookie: __cfduid=df4f08d8708a14966ce21d14bdb80a7411611569760; expires=Wed, 24-Feb-21 10:16:00 GMT; path=/; domain=.my-service; HttpOnly; SameSite=Lax
cf-request-id: 07daa4214f00002b29e6157000000001
Server: cloudflare
CF-RAY: 61713c7bb8f02b29-FRA
And root@watchpod:/# curl my-service
error code: 1003root@watchpod:/#

Хотя я могу скрутить gf.dev из своего модуля:

root@watchpod:/# curl -I gf.dev
HTTP/1.1 301 Moved Permanently
Date: Mon, 25 Jan 2021 10:26:52 GMT
Connection: keep-alive
Cache-Control: max-age=3600
Expires: Mon, 25 Jan 2021 11:26:52 GMT
Location: https://gf.dev/
cf-request-id: 07daae12280000d4a05e2b9000000001
Report-To: {"group":"cf-nel","endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report?s=7Ph5u3ilp58DnRPlhemS%2F1FjPT7qVzUK7wu9%2B5H7PNGez8Tk9BM2SGsFmwU05pGlmBpOr2qni6IQhiJpdgS%2FtmkZpUDS06s%3D"}],"max_age":604800}
NEL: {"max_age":604800,"report_to":"cf-nel"}
X-Content-Type-Options: nosniff
Server: cloudflare
CF-RAY: 61714c637be2d4a0-BRU

Есть идеи, почему это произошло?

Спасибо,

Абдельгани


person Abdelghani    schedule 25.01.2021    source источник
comment
Отвечает ли это на ваш вопрос? Внешнее имя службы Kubernetes   -  person Vasili Angapov    schedule 25.01.2021
comment
возможный дубликат stackoverflow.com/questions/59008977/   -  person Vasili Angapov    schedule 25.01.2021


Ответы (1)


Домен gf.dev, похоже, использует облачные сервисы. Вы столкнулись с ошибкой cloudfare 1003.

# curl my-service
1003

Из https://support.cloudflare.com/hc/en-us/articles/360029779472-Troubleshooting-Cloudflare-1XXX-errors

Error 1003 Access Denied: Direct IP Access Not Allowed
Common cause
A client or browser directly accesses a Cloudflare IP address.

Resolution
Browse to the website domain name in your URL instead of the Cloudflare IP address.

Вы можете воспроизвести ошибку 403, просто выполнив curl -I 104.21.77.239, который является IP-адресом gf.dev, возвращенным вашим поиском DNS. Вы можете получить доступ к gf.dev только с доменным именем gf.dev и никак иначе.

person Shashank V    schedule 25.01.2021
comment
просто не пользуйтесь услугами externalname - person Vasili Angapov; 25.01.2021
comment
@VasiliAngapov какая альтернатива? - person Madeo; 16.07.2021