当前位置: 首页 > 知识库问答 >
问题:

库伯内特斯的钥匙斗篷: 503服务暂时不可用

叶明辉
2023-03-14

按照下面keydropeat文档站点上的说明,我正在尝试将keydropeat设置为在Kubernetes集群中运行。我设置了一个入口控制器,它成功地用于一个简单的测试页面。Cloudflare将域指向入口控制器IP。

Keyclope成功部署(管理控制台正在侦听http://127.0.0.1:9990但当我进入域名时,我从NGINX收到一条消息:503服务暂时不可用。

https://www.keycloak.org/getting-started/getting-started-kube

这是库伯内特斯配置

apiVersion: v1
kind: Service
metadata:
  name: keycloak-cip
spec:
  type: ClusterIP
  ports:
    - port: 80
      targetPort: 8080
  selector:
    name: keycloak
---
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: test-ingress
  annotations:
    kubernetes.io/ingress.class: nginx
    service.beta.kubernetes.io/linode-loadbalancer-default-protocol: https
    service.beta.kubernetes.io/linode-loadbalancer-port-443: '{ "tls-secret-name": "my-secret", "protocol": "https" }'
spec:
  rules:
    - host: my.domain.com
      http:
        paths:
          - backend:
              serviceName: keycloak-cip
              servicePort: 8080
  tls:
    - hosts:
        - my.domain.com
      secretName: my-secret
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: keycloak
  namespace: default
  labels:
    app: keycloak
spec:
  replicas: 1
  selector:
    matchLabels:
      app: keycloak
  template:
    metadata:
      labels:
        app: keycloak
    spec:
      containers:
        - name: keycloak
          image: quay.io/keycloak/keycloak:12.0.3
          env:
            - name: KEYCLOAK_USER
              value: "admin"
            - name: KEYCLOAK_PASSWORD
              value: "admin"
            - name: PROXY_ADDRESS_FORWARDING
              value: "true"
          ports:
            - name: http
              containerPort: 8080
            - name: https
              containerPort: 8443
          readinessProbe:
            httpGet:
              path: /auth/realms/master
              port: 8080
            initialDelaySeconds: 90
            periodSeconds: 5
            failureThreshold: 30
            successThreshold: 1
  revisionHistoryLimit: 1

编辑:

TLS应由入口控制器处理。

--

编辑2:

如果我使用kubectl exec进入控制器,我可以执行curl-Lhttp://127.0.0.1:8080/auth成功检索页面:

如果我改用ClusterIP,但保持上述调用不变,我会得到连接超时。我尝试了端口80和8080,结果相同。


共有2个答案

佴博实
2023-03-14

你好,你有没有尝试添加这一行:

nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"

您的配置文件中似乎缺少该文件,导致503错误,请检查此文件以获取有关K8s配置的更多输入。

向实
2023-03-14

需要以下配置才能在入口控制器后运行Keyclope:

- name: PROXY_ADDRESS_FORWARDING
  value: "true"
- name: KEYCLOAK_HOSTNAME
  value: "my.domain.com"

因此,我认为添加正确的keydropage\u主机名值应该可以解决您的问题。

我对Traefik Ingress Controller也有类似的问题:无法在带有Traefik Ingress Controller和AWS HTTPS负载平衡器的AWS上公开Keyclope服务器

您可以在此处找到我的配置的完整代码:https://github.com/skyglass-examples/user-management-keycloak

 类似资料:
  • 我有一个springcloudmicroservices项目,它使用springcloudconfig服务器管理配置,使用Eureka服务器进行服务发现。 我的应用程序一直做得很好,直到我想添加一个新的带有键斗篷的微服务。这个新的微服务只是我的Vue前端应用程序的一个Rest应用编程接口,用户管理预计将由KeyCloak处理。 新服务运行正常,并将其自身注册到Eureka,直到我将KeyClope

  • 我正在开发一个连接到java(Spring框架)后端的角webapp。身份验证是通过密钥斗篷服务器完成的。 在我的带有嵌入式tomcat服务器的本地机器上,angular应用程序和spring应用程序运行正常。 对于部署,我需要使用传统的方式,使用现有的tomcat服务器。 角度前端在根目录中通过http://myurl/spring后端作为war文件放置,可以通过http://myurl/api

  • 我用这个例子:https://github.com/foo4u/keycloak-spring-demo 我有钥匙斗篷。json文件在我的WEB-INF文件夹中,但当我运行应用程序时,会出现以下异常: 此异常的完整堆栈: 这段代码只是Spring Boot和KeyCloak集成的一个例子。 你能告诉我我做错了什么吗? 谢谢你的回答和时间。

  • 我在windows 10中创建了两个在我的minikube环境中运行的POD。一个POD带有Spring boot应用程序容器,另一个POD带有mysql容器。对于Spring boot应用程序,服务类型为nodePort,对于MYSQL pod,服务类型为club sterIP。这意味着Mysql pod只需要在集群内部进行通信。但是对于Spring boot应用程序,需要从浏览器访问,所以我配

  • 我是Kubernetes平台的新手,尝试启用部署在Kubernetes平台上的tomcat web app的HTTPS安全连接。我对舱单感到困惑。与部署、服务和入口控制器相关的yml。 那么,我是否也必须在部署(在端口:-containerPort:8080)服务(如端口:-端口:80 targetPort:8080协议:TCP名称:http)和入口(在后端:serviceName:tomcat