将其连接到istio后如何为我的keycloak实例创建URL前端

问题描述 投票:2回答:1

我已经安装了istio,可以在Rancher上看到它。我也安装了keycloak。我正在尝试将两者连接起来并进行网关设置,以便可以通过URL访问前端服务器。在我的钥匙衣清单中,我有

# Source: keycloak/templates/statefulset.yaml
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: keycloak
. 
. #Many other lines here
.
          ports:
            - name: http
              containerPort: 8080
              protocol: TCP

然后我使用命令设置网关-

kubectl apply -f networking/custom-gateway.yaml

并且在我的custom-gateway.yaml文件中-

apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  name: keycloak-gateway
spec:
  selector:
    istio: ingressgateway # use istio default controller
  servers:
  - port:
      number: 80
      name: http
      protocol: HTTP
    hosts:
    - "*"

---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: keycloak
spec:
  hosts:
  - "*"
  gateways:
  - keycloak-gateway
  http:
  - match:
    - uri:
        exact: /keycloak 
    rewrite:
      uri: "/" # Non context aware backend
    route:
    - destination:
        host: keycloak
        port:
          number: 80
    websocketUpgrade: true

现在,当我尝试使用http://node_ip_address:port/keycloak访问URL时,发现无法访问前端。我已验证已安装密钥斗篷,并且Pod已在Rancher上启动并运行。我还将istio实例连接到bookinfo application,并且能够运行bookinfo-gateway并使用看起来像描述的http://node_ip_address:port/productpage的网关连接到here。我正在尝试只为keycloak设置相同的网关。yaml文件中我在做什么错。我该如何解决?任何帮助表示赞赏。端口是否正确连接?

kubernetes keycloak istio rancher keycloak-services
1个回答
0
投票

据我所知,您应该修复您的虚拟服务。

[我用helmkeycloak helm chart准备了一个小例子。


将其保存为keycloak.yaml,您可以在此处配置您的keycloak密码。

keycloak:
  service:
    type: ClusterIP
  password: mykeycloakadminpasswd
  persistence:
    deployPostgres: true
    dbVendor: postgres

安装带有头盔和上面准备的值的钥匙斗篷。


helm upgrade --install keycloak stable/keycloak -f keycloak.yml

创建网关和虚拟服务


apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  name: keycloak-gateway
spec:
  selector:
    istio: ingressgateway # use istio default controller
  servers:
  - port:
      number: 80
      name: http
      protocol: HTTP
    hosts:
    - "*"

---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: keycloak
spec:
  hosts:
  - "*"
  gateways:
  - keycloak-gateway
  http:
  - match:
    - uri:
        prefix: /auth
    - uri:
        prefix: /keycloak
    rewrite:
      uri: /auth
    route:
    - destination:
        host: keycloak-http
        port:
          number: 80

虚拟服务route.host是kubernetes keycloak pod 服务的名称。

kubectl get svc

NAME                  TYPE        CLUSTER-IP    EXTERNAL-IP   PORT(S)    AGE
keycloak-http         ClusterIP   10.0.14.36    <none>        80/TCP     22m

您应该能够通过您的ingress_gateway_ip / keycloak或ingress_gateway_ip / auth连接到keycloak,并使用keycloak凭据登录,在我的示例中为login: keycloakpassword: mykeycloakadminpasswd

注意,您需要为/ auth添加前缀,因为它是默认的keycloak网站,可以完成所有操作。 Keycloak前缀仅在此处重写为/ auth。

© www.soinside.com 2019 - 2024. All rights reserved.