惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

美团技术团队
人人都是产品经理
人人都是产品经理
月光博客
月光博客
V
V2EX
WordPress大学
WordPress大学
酷 壳 – CoolShell
酷 壳 – CoolShell
Last Week in AI
Last Week in AI
博客园 - 三生石上(FineUI控件)
小众软件
小众软件
Hugging Face - Blog
Hugging Face - Blog
V
Visual Studio Blog
宝玉的分享
宝玉的分享
雷峰网
雷峰网
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - Franky
博客园 - 聂微东
博客园 - 司徒正美
博客园 - 【当耐特】
爱范儿
爱范儿
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
大猫的无限游戏
大猫的无限游戏
博客园 - 叶小钗
阮一峰的网络日志
阮一峰的网络日志

博客园 - Zhang_Xiang

刚开始,你以为只是换工作 高管的 AI 精神病 代码是 AI 写的,生产事故谁背锅? AI Agent 走出 Demo 幻觉的唯一解药:Harness Engineering 从 page、page_size 到游标:深入解析C端产品的两种主流分页技术 Apache Kafka 的基本概念 Apache Kafka 移除 ZK Proposals webRTC demo Spring Authorization Server(AS)从 Mysql 中读取客户端、用户 Java 对象实现 Serializable 的原因 Spring Data JPA 使用 Spring Authorization Server 实现授权中心 OAuth 2.1 框架 Spring Security dapr 本地环境升级 BuildPack 打包 spring-boot 2.5.4,nacos 作为配置、服务发现中心,Cloud Native Buildpacks 打包镜像,GitLab CI/CD 如何拆分大型单体系统为微服务 Keycloak 13 自定义用户身份认证流程(User Storage SPI) OAuth 2.0、OIDC 讲不清楚? Mokito 单元测试与 Spring-Boot 集成测试 关于 JMeter 5.4.1 的一点记录
高可用 Keycloak,K8s
Zhang_Xiang · 2021-05-19 · via 博客园 - Zhang_Xiang

高可用 Keycloak,K8s

使用 K8S 部署 Keycloak,使用 Mysql 做为外部存储工具。以实现 Keycloak 在生产环境中高可用。

Keycloak K8s 配置文件

Keycloak 官方有一个 Keycloak on Kubernetes 教程,可以看出官方教程只是简单的说了如何通过 K8s 部署服务。

修改官方提供的 yaml 文件

apiVersion: v1
kind: Service
metadata:
  name: keycloak
  labels:
    app: keycloak
spec:
  ports:
  - name: http
    port: 8080
    targetPort: 8080
  selector:
    app: keycloak
  type: LoadBalancer
---
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:13.0.0
        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
  1. 修改镜像地址,原因是该镜像有较为清晰的文档

     image: jboss/keycloak:13.0.0
    
  2. 配置 Mysql 变量,在创建 keycloak Mysql 数据库时,注意,创建的数据库编码应为 utf8create schema keycloak character set utf8 collate utf8_unicode_ci;

     - name: DB_VENDOR
       value: mysql
     - name: DB_ADDR
       value: 10.0.5.213:3306
     - name: DB_DATABASE
       value: keycloak
     - name: DB_USER
       value: root
     - name: DB_PASSWORD
       value: 12345678
    

    改造后的 yaml 文件为:

     apiVersion: v1
     kind: Service
     metadata:
     name: keycloak
     labels:
         app: keycloak
     spec:
     ports:
     - name: http
         port: 8080
         targetPort: 8080
     selector:
         app: keycloak
     type: LoadBalancer
     ---
     apiVersion: apps/v1
     kind: Deployment
     metadata:
     name: keycloak
     labels:
         app: keycloak
     spec:
     replicas: 2
     selector:
         matchLabels:
         app: keycloak
     template:
         metadata:
         labels:
             app: keycloak
         spec:
         containers:
         - name: keycloak
             image: jboss/keycloak:13.0.0
             env:
             - name: KEYCLOAK_USER
             value: "admin"
             - name: KEYCLOAK_PASSWORD
             value: "admin"
             - name: PROXY_ADDRESS_FORWARDING
             value: "true"
             - name: DB_VENDOR
             value: mysql
             - name: DB_ADDR
             value: "127.0.0.1"
             - name: DB_PORT
             value: "3306"
             - name: DB_DATABASE
             value: keycloak
             - name: DB_USER
             value: "root"
             - name: DB_PASSWORD
             value: "123456"
             ports:
             - name: http
             containerPort: 8080
             - name: https
             containerPort: 8443
             readinessProbe:
             httpGet:
                 path: /auth/realms/master
                 port: 8080
    
  3. 把 yaml 文件复制到服务器中,然后创建 kc 空间,命令如下 kubectl create ns kc,执行命令 kubectl apply -f keycloak.yaml -n kc以启动服务

  4. 访问 Keycloak 服务,127.0.0.1:8080

    点击 Administration Console,使用账号 admin、密码 admin登录