在AWS EKS上使用密钥斗篷身份验证进行traefik入口

我们正在基于AWS EKS开发基于企业微服务架构的产品。我们有几个应用程序作为独立的容器部署在EKS上。
我们已经在所有这些应用程序的前面部署了traefik入口控制器(LB服务作为ELB)和入口服务,以路由到特定服务。这工作得很好。到目前为止一切都很好。
我们还为身份验证部署了keycloak容器,该容器也可以正常工作。

现在,我们希望将traefik与keycloak集成在一起,以便对traefik的任何请求都应转到keycloak进行auth / SSO,然后重定向到原始调用所在的特定服务。
这是我们努力取得进展的一块。首先是一些疑问:

1)有traefik转发身份验证。可以在这里使用吗?特别是任何示例/链接。如果是用于kubernetes。
2)有keycloak-gatekeeper。据我所知,它是作为副驾驶部署到主要应用程序并完成所有身份验证工作的。我的问题是在侧面汽车设计中,每个应用程序都会有自己的网守。因此,一旦登录到应用程序或服务,如果用户要访问其他应用程序,则需要再次进行身份验证。我们不希望这样,我们希望SSO会话适用于所有应用程序。
其次,我们如何在网守配置中提供动态的上游URL,例如/ service1应该自动重定向到网守到service1,对于service2同样如此,依此类推。

我们无法决定要走的路。关于这两种主要用于kubernetes部署的方法的文档有限。在这里还有其他方法可以使用吗?
请帮忙。让我知道您是否需要更多详细信息。

UPDATE1:
现在,我继续使用keycloak-gatekeeper。我把它作为副车放在我的木瓜豆荚中。以下是网守的yml部分:

    containers:
      - name: gatekeeper-sidecar
          image: keycloak/keycloak-gatekeeper
            ports:
            - containerPort: 3000 # expose port 3000
            args:
            - --discovery-url=http://keycloak:8080/auth/realms/realm1
            - --secure-cookie=false
            - --enable-default-deny=true
            - --client-id=Vista
            - --client-secret=2f1aa7dd-2aa9-4fd0-956c-5c45b2bf2091
            - --listen=0.0.0.0:3000 # listen on port 3000 on all interfaces
            - --redirection-url=http://127.0.0.1:3000
            - --upstream-url=http://127.0.0.1:5601
            - --enable-logging=true
            - --enable-json-logging=true
            - --verbose=true

在我的traefik入口服务中,我添加了以下内容(kibana是用于kibana应用程序的clusterIP服务,其中包含kibana + Gatekeeper pods)

- match: PathPrefix(`/path1`)
    kind: Rule
    services:
    - name: kibana
      port: 3000
    middlewares:
      - name: stripprefix

现在,每当我浏览到https://elb_host/path1时,它都会重定向它https://elb_host/ouath/authorize?state= <..>并抛出404。
我希望它首先重定向到keycloak身份验证URL(https://elb_host/auth/realms/realm1?.。)进行身份验证。
我还在网守日志中成功地获取了oidc配置。 但是在我击中​​url之后,在网守日志中会发生以下错误:

{"level":"error","ts":1584946244.340905,"caller":"keycloak-gatekeeper/middleware.go:108","msg":"no session found in request,redirecting for authorization","error":"authentication session not found"}
{"level":"info","ts":1584946244.340992,"caller":"keycloak-gatekeeper/middleware.go:90","msg":"client  

这里可能有什么错误?请帮忙。

hezhishui 回答:在AWS EKS上使用密钥斗篷身份验证进行traefik入口

最终设法解决了该问题。两种选择:
1)您可以定义到密钥斗篷看门人本身的入口/ oauth路由
2)或在网闸配置中具有--base-uri = / path1。这会将/ path1添加到所有重定向网址中,这些网址将根据您的入口进行路由

本文链接:https://www.f2er.com/2610670.html

大家都在问