gpt4 book ai didi

kubernetes - Kubernetes 内部的 Istio CORS 和 SSL 问题

转载 作者:行者123 更新时间:2023-12-02 12:11:38 25 4
gpt4 key购买 nike

我一直在为这个问题头疼,我不知道这是一个错误还是只是配置错误。我的情况如下:

在我的集群中,我有命名空间“testing”,它有 2 个部署:

  • 前端
  • 后台

  • 服务:
  • 前端服务.local
  • 后端服务.local

  • 两者的服务都正常工作,并且 ALB 配置为从浏览器访问。
  • https://front.example.com
  • https://back.example.com

  • 在集群内部,从前端,我可以用一个变量将后端指向 https://back.example.com ,一切都按预期工作。

    但是,我被要求在集群内部进行通信,所以我的第一次尝试是这次从前端指向后端服务。

    试图指向: https://back-end-service.local并收到此错误:

    原因:CORS请求未成功

    猜测是因为 TLS,我在命名空间中部署了 Istio,并在 STRICT 模式下启用了双向 TLS。打开 Kiali 后,我确实看到加密通信正常工作,但是,我仍然收到同样的错误。

    我做了测试:

    如果我登录前端 pod 并尝试进行 curl https://back.example.com ,我从我的 API 中得到了积极的回应。

    如果我 curl https://back-end-service.local ,我得到 curl:(35)SSL 例程:SSL23_GET_SERVER_HELLO:未知协议(protocol)。

    简而言之,我可以在集群外部与后端通信,然后再返回,但如果我尝试在内部服务之间通信,它会因 CORS 和 SSL 错误而失败。

    我的配置:
    kind: PeerAuthentication
    apiVersion: security.istio.io/v1beta1
    metadata:
    name: default
    namespace: testing
    selfLink: >-
    /apis/security.istio.io/v1beta1/namespaces/production/peerauthentications/default
    resourceVersion: '7291'
    generation: 1
    creationTimestamp: '2020-06-06T00:22:24Z'
    annotations:
    kubectl.kubernetes.io/last-applied-configuration: >
    {"apiVersion":"security.istio.io/v1beta1","kind":"PeerAuthentication","metadata":{"annotations":{},"name":"default","namespace":"testing"},"spec":{"mtls":{"mode":"STRICT"}}}
    spec:
    selector: ~
    mtls:
    mode: STRICT
    portLevelMtls: ~

    后端服务:
    kind: Service
    apiVersion: v1
    metadata:
    name: back-end-service
    namespace: testing
    selfLink: /api/v1/namespaces/testing/services/back-end-service
    uid: dccf1b
    resourceVersion: '7520501'
    creationTimestamp: '2020-05-14T21:48:54Z'
    labels:
    app: back-end
    annotations:
    kubectl.kubernetes.io/last-applied-configuration: >
    {"apiVersion":"v1","kind":"Service","metadata":{"annotations":{},"labels":{"app":"back-end"},"name":"back-end-service","namespace":"testing"},"spec":{"ports":[{"name":"http","port":3001,"targetPort":3001}],"selector":{"app":"back-end"}}}
    finalizers:
    - service.kubernetes.io/load-balancer-cleanup
    spec:
    ports:
    - name: https
    protocol: TCP
    port: 3001
    targetPort: 3001
    nodePort: 30742
    selector:
    app: back-end
    clusterIP: 192.168.1.1
    type: LoadBalancer
    sessionAffinity: None
    externalTrafficPolicy: Cluster

    我试图将服务的名称更改为 HTTP 和 HTTPS,但它超出了这个范围。任何帮助将不胜感激!

    最佳答案

    您可以尝试使用端口 3001 代替端口 443 吗?端口 443 上可能没有 https,因此 SSL 错误。

    关于kubernetes - Kubernetes 内部的 Istio CORS 和 SSL 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62236492/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com