在DigitalOcean Kubernetes部署Keycloak后,遇HTTPS要求如何访问主领域?
Keycloak管理控制台提示「Https required」的解决方法
一、测试环境临时绕开HTTPS要求(仅限测试,禁止生产使用)
Keycloak默认强制管理控制台用HTTPS访问,测试时可通过修改启动参数或环境变量关闭限制:
- 在K8s的Deployment中添加两个环境变量:
KEYCLOAK_HTTP_ENABLED: "true":启用HTTP访问KEYCLOAK_HOSTNAME_STRICT: "false":关闭主机名严格校验
- 用Helm部署的话,在
values.yaml里配置:
extraEnvVars: - name: KEYCLOAK_HTTP_ENABLED value: "true" - name: KEYCLOAK_HOSTNAME_STRICT value: "false"
执行helm upgrade keycloak bitnami/keycloak -f values.yaml重新部署,之后就能通过HTTP的外部IP正常访问管理控制台了。
二、生产环境配置HTTPS访问(推荐方案)
1. 配置Ingress并启用TLS
通过Kubernetes Ingress暴露Keycloak,并配置HTTPS证书(推荐用Cert-Manager自动签发免费证书),示例Ingress配置文件:
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: keycloak-ingress annotations: cert-manager.io/cluster-issuer: "letsencrypt-prod" # 替换为你的ClusterIssuer名称 spec: tls: - hosts: - keycloak.yourdomain.com # 替换为你的自定义域名 secretName: keycloak-tls # 证书会自动存储到这个Secret中 rules: - host: keycloak.yourdomain.com http: paths: - path: / pathType: Prefix backend: service: name: keycloak-service # 替换为你的Keycloak Service名称 port: number: 8080
执行kubectl apply -f ingress.yaml应用配置。
2. 配置Keycloak主机名参数
修改Keycloak的环境变量,指定域名,确保生成的链接都是HTTPS格式:
- 在Deployment中添加
KEYCLOAK_HOSTNAME: "keycloak.yourdomain.com" - Helm部署的话,在
values.yaml里添加:
extraEnvVars: - name: KEYCLOAK_HOSTNAME value: "keycloak.yourdomain.com"
重新部署后,通过https://keycloak.yourdomain.com访问Keycloak,即可正常进入master领域的管理控制台。
内容的提问来源于stack exchange,提问作者I.vignesh David
相关产品推荐
相关产品推荐

