参考

域名设置为x201

gencert.sh 修改 DNS.1 = x201

$ cd examples/k8s
$ ./gencert.sh

生成

$ ls ssl/
ca-key.pem  ca.pem  ca.srl  cert.pem  csr.pem  key.pem  req.cnf

$ kubectl create secret tls dex.example.com.tls --cert=ssl/cert.pem --key=ssl/key.pem

去GitHub上创建一个应用(GitHub-Setting-Developer Setting-New OAuth App) HomePage写 http://x201:5555 callback URL写 https://x201:32000/callback

32000是dex即将占用的端口号 5555是example app即将占用的端口号

用GitHub生成的Client ID和Client Secret替换下面的变量

$ kubectl create secret \
    generic github-client \
    --from-literal=client-id=$GITHUB_CLIENT_ID \
    --from-literal=client-secret=$GITHUB_CLIENT_SECRET

kubectl create -f dex.yaml

dex文件不要用master分支的,用我的。 最主要的修改就是,dex的镜像版本,master分支上的版本太老了。 另外我把需要创建的CRD也加在这个文件里了。

然后就是example-app了 它需要下载源码,编译,稍微有点麻烦。build成功了启动一下:

./cmd/example-app/main  --issuer https://x201:32000 --issuer-root-ca examples/k8s/ssl/ca.pem --listen http://192.168.1.19:5555 --redirect-uri http://x201:5555/callback

然后在浏览器里访问 http://192.168.1.19:5555,这时会显示example-app的首页,点击login,会显示Dex的几个认证选择(Login with email/Login with Example/Login with Github),我们选择GitHub,然后会跳转到GitHub的登录(若未登录)、询问是否要授权给Dex(只有第一次会问),如果你愿意授权的话,会再跳回到Dex,此时会再问一次手否要授权给example-app,最后会回到example-app的登录页面,显示当前用户的token和一些信息。

这个token很重要哦,后面还会频繁的用到。

再理一下流程:Dex是example-app(以及下面的kube-apiserver)的第三方认证,而GitHub是Dex的第三方认证。

results matching ""

    No results matching ""