kubernetes上的Keyclope:入口HTTPS必需错误
我有一个Kubernetes群集,在其中部署了以下部署和服务:kubernetes上的Keyclope:入口HTTPS必需错误,kubernetes,keycloak,kubernetes-ingress,Kubernetes,Keycloak,Kubernetes Ingress,我有一个Kubernetes群集,在其中部署了以下部署和服务: apiVersion: v1 kind: Service metadata: name: keycloak labels: app: keycloak name: keycloak spec: type: NodePort ports: - name: http protocol: TCP port: 8080 selector: app: keycloak
apiVersion: v1
kind: Service
metadata:
name: keycloak
labels:
app: keycloak
name: keycloak
spec:
type: NodePort
ports:
- name: http
protocol: TCP
port: 8080
selector:
app: keycloak
name: keycloak
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: keycloak
labels:
name: keycloak
app: keycloak
spec:
replicas: 1
selector:
matchLabels:
app: keycloak
template:
metadata:
name: keycloak
labels:
app: keycloak
name: keycloak
spec:
restartPolicy: Always
containers:
- name: keycloak
image: jboss/keycloak
ports:
- containerPort: 8080
protocol: TCP
resources:
requests:
cpu: 200m
memory: 256Mi
limits:
cpu: 400m
memory: 512Mi
env:
- name: KEYCLOAK_LOGLEVEL
value: "DEBUG"
- name: PROXY_ADDRESS_FORWARDING
value: "true"
- name: KEYCLOAK_USER
value: "admin"
- name: KEYCLOAK_PASSWORD
value: "password"
- name: DB_USER
valueFrom:
secretKeyRef:
name: postgres-secret
key: username
- name: DB_PASSWORD
valueFrom:
secretKeyRef:
name: postgres-secret
key: password
- name: DB_ADDR
valueFrom:
configMapKeyRef:
name: postgres-configmap
key: HOST
- name: DB_PORT
valueFrom:
configMapKeyRef:
name: postgres-configmap
key: PORT
- name: DB_DATABASE
valueFrom:
configMapKeyRef:
name: postgres-configmap
key: DATABASE
- name: DB_VENDOR
value: "postgres"
我的pod中运行Key斗篷的日志正在确认我的Key斗篷正在运行,并使用提供的Postgres数据库。我尝试添加以下入口规则:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: keycloak
annotations:
kubernetes.io/tls-acme: "true"
kubernetes.io/ingress.class: "nginx"
ingress.kubernetes.io/force-ssl-redirect: "true"
spec:
rules:
- host: auth.mydomain.com
http:
paths:
- path: /
backend:
serviceName: keycloak
servicePort: 8080
- path: /auth
backend:
serviceName: keycloak
servicePort: 8080
我可以进入KeyClope主页,但一旦我点击管理控制台,我就会不断收到错误:我们很抱歉。。。。需要HTTPS
。将PROXY_ADDRESS_FORWARDING变量设置为“true”无助于正确操作。我不只是想在端口8443上运行KeyClope,所以我真的在寻找另一种解决方案。您需要在入口中进行设置
spec:
tls:
- hosts:
- auth.mydomain.com
secretName: tls-secret
使用创建的机密,其中包含auth.mydomain.com的证书:
apiVersion: v1
kind: Secret
metadata:
name: tls-secret
namespace: default
type: kubernetes.io/tls
data:
tls.crt:LS0S[...]0tLhsrQo=
tls.key:LS0t[...]LS1CRUdJ=
这将允许您的入口控制器使用提供的TLS证书终止通信,并将未加密的HTTP通信转发给您的
keydepot
服务。那么您想在HTTPS或普通HTTP下运行keydepot吗?如果您想禁用HTTPS,请看这里:@VasilyAngapov keydape必须在http下运行,因为我有一个反向代理正在重定向到我的入口控制器,在那里我有多个入口规则,所以不需要在内部使用HTTPS运行它。我将检查psql查询,但我不希望这样做。在我的另一个设置中,我使用自己的代理重定向到KeyClope服务的节点端口,我没有这个问题。因此,我希望通过更改Ingress来解决这个问题。如果您有只使用HTTP的外部代理,那么就没有办法为KeyClope启用HTTPS。您只能使用HTTP。@VasilyAngapov对不起,我的解释有点混乱。我的代理使用HTTPS。当我进入https://auth.mydomain.com
我看到了钥匙斗篷页面。只要点击管理控制台,就会显示错误当你看到错误时,浏览器地址面板中的地址是HTTP或HTTPS?嗨,我不太喜欢共享我的crt和我的入口规则中的密钥,毕竟我们已经有了一个SSL终止代理来处理这个问题,所以不必两次都这么做,您没有为主域禁用SSL。只需使用psqlclientupdaterealmset ssl_required='NONE'运行此查询,其中id='master'代码>这可能确实是一个解决方案,但当我在没有postgres的k8s上运行KeyClope时,应该如何解决这个问题?我在独立模式下再次部署了KeyClope,没有使用外部数据库(仅用于测试目的),我也遇到了同样的问题。有没有办法改变keydepot中的内容或在入口规则中给出正确的注释?@SebastienPattyn尽管您没有使用任何外部数据库,但keydepot自带了自己的嵌入式基于Java的关系数据库H2。因此,您可以ssh到keycloack并使用本机sql clinet运行查询,即-java-cp.jar org.h2.tools.Shell-url“jdbc:h2:file:”-user-password-sql“update REALM set ssl\u required='NONE'其中id='master'”