クラスター内からローカルでのみトリガーされる、長時間実行されるプロセスに knative を使用しようとしています。
ネットワーク レイヤーとして、既にアンバサダーを使用しており、TLS で構成されており、HTTP 要求を HTTPS にリダイレクトします。
apiVersion: v1
kind: Service
metadata:
getambassador.io/config: |
---
apiVersion: ambassador/v1
kind: Module
name: tls
config:
server:
enabled: True
redirect_cleartext_from: 8080
alpn_protocols: h2,http/1.1
...
「クラスターローカル」フラグを使用してサービスを作成しました。
kn service create helloworld-go --image gcr.io/knative-samples/helloworld-go --env TARGET="Go Sample v1" --cluster-local
Creating service 'helloworld-go' in namespace 'default':
0.010s The Configuration is still working to reflect the latest desired specification.
0.062s The Route is still working to reflect the latest desired specification.
0.092s Configuration "helloworld-go" is waiting for a Revision to become ready.
8.621s ...
9.035s Ingress has not yet been reconciled.
12.279s Ready to serve.
Service 'helloworld-go' created to latest revision 'helloworld-go-tcsyf-1' is available at URL:
http://helloworld-go.default.svc.cluster.local
クラスター内からアクセスしようとすると、https バージョンにリダイレクトされます。
curl -v http://helloworld-go.default.svc.cluster.local
* Trying 10.11.253.45:80...
* Connected to helloworld-go.default.svc.cluster.local (10.11.253.45) port 80 (#0)
> GET / HTTP/1.1
> Host: helloworld-go.default.svc.cluster.local
> User-Agent: curl/7.69.1
> Accept: */*
>
* Mark bundle as not supporting multiuse
< HTTP/1.1 301 Moved Permanently
< location: https://helloworld-go.default.svc.cluster.local/
< date: Thu, 17 Dec 2020 11:35:39 GMT
< server: envoy
< content-length: 0
それは動作しますが、明らかにcurl -k -v https://helloworld-go.default.svc.cluster.local
証明書のホスト名が一致しませんcluster.local
を削除するとredirect_cleartext_from: 8080
、ポート 80 が使用できなくなったようです。
bash-5.0$ curl -v http://helloworld-go.default.svc.cluster.local
* Trying 10.11.253.45:80...
* connect to 10.11.253.45 port 80 failed: Connection refused
* Failed to connect to helloworld-go.default.svc.cluster.local port 80: Connection refused
* Closing connection 0
curl: (7) Failed to connect to helloworld-go.default.svc.cluster.local port 80: Connection refused
svc.cluster.local に対してのみ http => https リダイレクトを無効にする方法はありますか? knative 経由で提供されない他のワークロードについては、http とhttp://deployment-name.namespace/