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

推荐订阅源

Project Zero
Project Zero
GbyAI
GbyAI
Y
Y Combinator Blog
Google DeepMind News
Google DeepMind News
小众软件
小众软件
The GitHub Blog
The GitHub Blog
阮一峰的网络日志
阮一峰的网络日志
J
Java Code Geeks
WordPress大学
WordPress大学
Microsoft Security Blog
Microsoft Security Blog
IT之家
IT之家
F
Fortinet All Blogs
博客园 - 【当耐特】
H
Hackread – Cybersecurity News, Data Breaches, AI and More
P
Proofpoint News Feed
Schneier on Security
Schneier on Security
C
Cybersecurity and Infrastructure Security Agency CISA
L
LINUX DO - 热门话题
Spread Privacy
Spread Privacy
O
OpenAI News
V
V2EX
博客园 - 三生石上(FineUI控件)
AI
AI
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Stack Overflow Blog
Stack Overflow Blog
P
Privacy International News Feed
Microsoft Azure Blog
Microsoft Azure Blog
Blog — PlanetScale
Blog — PlanetScale
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Jina AI
Jina AI
H
Help Net Security
L
LINUX DO - 最新话题
Application and Cybersecurity Blog
Application and Cybersecurity Blog
T
Tenable Blog
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
Cisco Talos Blog
Cisco Talos Blog
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
博客园 - 叶小钗
V
Vulnerabilities – Threatpost
C
Cisco Blogs
D
Darknet – Hacking Tools, Hacker News & Cyber Security
酷 壳 – CoolShell
酷 壳 – CoolShell
Hacker News: Ask HN
Hacker News: Ask HN
S
Security @ Cisco Blogs
S
Securelist
T
The Blog of Author Tim Ferriss
Apple Machine Learning Research
Apple Machine Learning Research
美团技术团队
雷峰网
雷峰网
V2EX - 技术
V2EX - 技术

博客园 - 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登录