そこで、次のチュートリアルを使用して、OpenFaaS の ingress-operator を使用して、より REST に似た API パスを作成しようとしています。使用可能なものを示した which を使用して、 ingress-operator が実行されていることを確認しましたkubectl get deploy/ingress-operator -n openfaas -o wide
。
ただし、関数のパスを適切に変更していないようです。私は現在、 http://gw.example.kube/function/test-fnにアクセスして通常どおり呼び出すことができるベース node14 関数をデプロイしました。次の FunctionIngress も適用しました。
apiVersion: openfaas.com/v1alpha2
kind: FunctionIngress
metadata:
name: test-fn
namespace: openfaas
spec:
domain: example.kube
function: test-fn
ingressType: nginx
path: /api/v1/test/(.*)
しかし、http://example.kube/api/v1/testにアクセスすると、Nginx から 404 が返されます。(.*)
ページに再度アクセスするときに、OpenFaaS 独自の 404 ページを提供する を削除しようとしました。example.kube
との両方gw.example.kube
が hosts ファイルに設定されています。クラスタを再起動しても問題は解決しませんでした。
追加情報:
$ kubectl get ingress -n openfaas
NAME CLASS HOSTS ADDRESS PORTS AGE
openfaas-ingress <none> gw.example.kube localhost 80 4h9m
test-fn <none> example.kube localhost 80 34m
$ kubectl describe ingress test-fn -n openfaas
Name: test-fn
Namespace: openfaas
Address: localhost
Default backend: default-http-backend:80 (<error: endpoints "default-http-backend" not found>)
Rules:
Host Path Backends
---- ---- --------
example.kube
/api/v1/test/(.*) gateway:8080 (10.1.0.184:8080)
Annotations: com.openfaas.spec:
{"metadata":{"name":"test-fn","namespace":"openfaas","uid":"db7c752f-f08a-403e-9ed1-ad65d616482a","resourceVersion":"14465","gen...
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/rewrite-target: /function/test-fn/$1
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal AddedOrUpdated 3s (x4 over 43m) nginx-ingress-controller Configuration for openfaas/test-fn was added or updated