我已经安装了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文件中我在做什么错。我该如何解决?任何帮助表示赞赏。端口是否正确连接?
据我所知,您应该修复您的虚拟服务。
[我用helm和keycloak 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: keycloak
和password: mykeycloakadminpasswd
。
注意,您需要为/ auth添加前缀,因为它是默认的keycloak网站,可以完成所有操作。 Keycloak前缀仅在此处重写为/ auth。