sso单点登录casdoor on docker and k8s
概述
Casdoor 是一个基于 OAuth 2.0、OIDC、SAML 和 CAS 的 UI 优先身份访问管理 (IAM) /单点登录 (SSO) 平台。
Casdoor 同时提供 Web UI 和来自应用程序用户的登录请求。
Casdoor 功能
Casdoor 遵循由 Golang 开发的前端和后端独立架构。它支持高并发,提供基于 Web 的 UI 进行管理,并支持 10+ 种语言的本地化。
Casdoor 支持第三方应用程序登录,例如 GitHub、Google、QQ 和微信,并且支持使用插件扩展第三方登录。
Casdoor 支持基于 Casbin 的授权管理。它支持 ACL、RBAC、ABAC 和 RESTful 访问控制模型。
Casdoor提供手机验证码、电子邮件验证码和密码找回功能。
Casdoor 支持审计和记录访问日志。
Casdoor 集成了阿里云、腾讯云和七牛云图像 CDN 云存储。
Casdoor 允许自定义注册、登录和密码检索页面。
Casdoor 支持通过数据库同步与现有系统集成,从而实现向 Casdoor 的平稳过渡。
Casdoor 支持 MySQL、PostgreSQL 和 SQL Server 等主流数据库,并支持使用插件扩展新数据库。
https://casdoor.org/docs/basic/try-with-docker/
https://github.com/casbin/casdoor/releases
on docker
docker run \
-e driverName=mysql \
-e dataSourceName='gaojinbo:gaojinbo.com@tcp(gaojinbo.com:3306)/' \
-p 8000:8000 \
casbin/casdoor:v1.487.0
on k8s
vi casdoor.yaml
apiVersion: v1
kind: Service
metadata:
name: casdoor
labels:
app: casdoor
spec:
ports:
- port: 8000
selector:
app: casdoor
tier: frontend
type: LoadBalancer
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: casdoor
labels:
app: casdoor
spec:
replicas: 1
minReadySeconds: 5
strategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
selector:
matchLabels:
app: casdoor
tier: frontend
template:
metadata:
labels:
app: casdoor
tier: frontend
spec:
containers:
- image: casbin/casdoor:v1.487.0
name: casdoor
resources:
limits:
memory: 2000Mi
cpu: 500m
requests:
memory: 1000Mi
cpu: 100m
livenessProbe:
tcpSocket:
port: 8000
initialDelaySeconds: 1
periodSeconds: 3
timeoutSeconds: 10
readinessProbe:
tcpSocket:
port: 8000
initialDelaySeconds: 1
periodSeconds: 5
lifecycle:
preStop:
exec:
command: ["sh", "-c", "sleep 10"]
env:
- name: RUNNING_IN_DOCKER
value: "true"
- name: ldapServerPort
value: "1389"
- name: driverName
value: "mysql"
- name: dataSourceName
value: "gaojinbo:gaojinbo.com@tcp(mysql-cluster.db:6446)/"
ports:
- containerPort: 8000
name: casdoor
配置istio网关
vi istio-casdoor.yaml
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
name: casdoor-gateway
spec:
selector:
istio: ingressgateway # use istio default controller
servers:
- port:
number: 8080 #这里改成8000会失败,curl报错404 NR route_not_found
name: http
protocol: HTTP
hosts:
- "cas.gaojinbo.com"
---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: casdoor-vs
spec:
hosts:
- "cas.gaojinbo.com"
gateways:
- casdoor-gateway
http:
- route:
- destination:
host: casdoor
port:
number: 8000
访问
https://casdoor.gaojinbo.com
用户admin
密码123
注意:
k8s运行多个casdoor副本浏览器会报错,casdoor不支持