在第二天的文章裡,容器互相呼叫,靠著是建立共同的NetworkName:
ContainerName=a2a-web
PublishPort=8080:80
Network=a2a-net.network
在Docker的Port Mapping是HostPort:ContainerPort。
這樣若有個a2a-proxy容器要呼叫a2a-web,URL會是:http://a2a-web,是可以直接呼叫Container Port,也就是a2a-web的80 port(HTTP預設Port)。
但外部瀏覽器要開啟a2a-web,仍需用http://RedHatIP:8080呼叫,無法解析a2a-web這個domain name。
然而,看似容易設定的問題,卻有不少的額外技術債。
所以解決第3個問題方式就是甩鍋給F5,由F5將80 port導向a2-web的8080 port。
那第2個問題呢?若每個具HTTP功能的容器都要掛憑證就顯得很Stupid,所以前面有說要建一個a2a-proxy容器。原本可能是:
F5 -> a2a-web:8443 -> a2a-api:8081
加了a2a-proxy後會是:
F5 -> a2a-proxy:8443 -> a2a-web:80 -> a2a-proxy:8081 -> a2a-api:8081
變成憑證只掛在a2a-proxy這裡,容器之間互Call就再繞到a2a-proxy再導向目標的URL,也就經過憑證這一關。
而第一個問題,原本的a2a-api要允許a2a-web的跨源請求,就變成允許a2a-proxy的跨源請求。
所以第一個問題的CORS及第二個問題的proxy和憑證,就再後續發文講出,但還決定先寫哪一篇XD。