【环球快播报】Free Arch: 将 IdentityServer 部署到 Okteto
2022-12-19 22:43:25
最终成果

部署了一个免费的 IdentityServer 实例: https://id6-jeff-tian.cloud.okteto.net/

相关代码提交

一共 3 个,以这个为主:


(资料图片仅供参考)

https://github.com/Jeff-Tian/IdentityServer/commit/b40e6c6f8e4193ef459ab558a102f84442b3cede

前情提要

早在《身份验证哪家强?Identity Server 初体验》中,就部署了一个免费的 IdentityServer 实例,托管在 Azure 上: https://id6.azurewebsites.net/。

后来,我宣称 Free Arch 要狡兔三窟,多处部署:《Free Arch: 狡兔三窟,多处部署》。今天,就来给 IdentityServer 这个实例,添加一个分身,从此不局限于 Azure 平台。就详述一下部署将它部署到 Okteto 的步骤。由于采用了 OAM,不需要太多工作,就能参考前文,将它部署到 Napptive 等任何 Kubernetes 集群里。

第一步,容器化

这是一个 ASP.NET Core 项目,从官方的开源仓库 fork 过来后做了一些魔改,源代码在: https://github.com/Jeff-Tian/IdentityServer。其 Dockerfile 如下:

FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS baseWORKDIR /appEXPOSE 5000EXPOSE 5001FROM mcr.microsoft.com/dotnet/sdk:6.0 AS buildWORKDIR /srcCOPY . .RUN dotnet restore "hosts/main/Host.Main.csproj"RUN dotnet build hosts/main/Host.Main.csproj -c Release -o /app/buildFROM build AS publishRUN dotnet publish hosts/main/Host.Main.csproj -c Release -o /app/publishFROM base AS finalWORKDIR /appCOPY --from=publish /app/publish .ENTRYPOINT ["dotnet", "Host.Main.dll"]

第二步,构建镜像并上传至 Docker Registry

为了能够自动在 github actions 的 cicd 过程中自动进行这一步,我们把手动执行的命令放在一个文件里: .github/ci.sh。这一步的提交见:

https://github.com/Jeff-Tian/IdentityServer/commit/3db4235f5e091cda1d2752a8f61df5a9fddbd2b4。

docker build -t jefftian/id6 .docker imagesdocker run --network host -e CI=true -d -p 127.0.0.1:5000:5000 --name id6 jefftian/id6docker ps | grep -q id6docker ps -aqf "name=id6"docker push jefftian/id6docker logs $(docker ps -aqf "name=id6$")curl localhost:5000 || docker logs $(docker ps -aqf "name=id6$")docker kill id6 || echo "id6 killed"docker rm id6 || echo "id6 removed"

第三步,准备数据库

本 IdentityServer 使用了 PostgreSQL 数据库。如何拥有一个免费的 PostgreSQL 数据库服务?如果喜欢自己部署,仍然可以利用 Okteto,参考:《Free Arch: 在 Okteto 上部署 backstage (第一部分: PostgreSQL)》。

当然,也可以使用别人部署好的免费 PostgreSQL 服务,比如 app.nhost.io 提供的服务就不错。

为了验证数据库连接正常,本 IdenityServer 只是连接了数据库,并且执行了一个空的 EF Migration,在本地使用 docker compose 验证了成功执行了 Migration:

这个 docker compose 文件如下:

version: "3"services:postgres:image: "postgres"ports:- "5432:5432"environment:POSTGRES_DB: id6POSTGRES_USER: postgresPOSTGRES_PASSWORD: nopwdvolumes:- pg:/var/lib/postgresql/dataadminer:image: library/adminer:latestrestart: alwaysports:- 7777:8080volumes:pg: ~

由于依赖了数据库,在本地运行本 IdentityServer 实例,需要:

docker compose up -ddotnet run --project hosts/main/Host.Main.csproj

最终部署后,它会在线上的数据库里也创建出一个 __EFMigrationHistory 表,如果是使用了 app.nhost.io 的服务,可以使用其提供的 Hasura 验证:

第四步,加密敏感信息

这就是前面提到的主要的提交。再一次使用了 SOPS,对 SOPS 步骤的详细介绍参考《[Free Arch: 在 Okteto 上部署 backstage(第二部分) - Jeff Tian的文章 - 知乎 ](https://zhuanlan.zhihu.com/p/590640020) 》。要使用它,需要在项目根目录添加一个 .sops.yaml文件:

creation_rules:# If assuming roles for another account use "arn+role_arn".# See Advanced usage- path_regex: k8s\/app\/secrets\.yaml$kms: "arn:aws:kms:us-east-1:443862765029:key/b1739688-ec15-407d-895d-d05ca1217a2f"aws_profile: lambda-doc-rotary

在 k8s/app/secrets.yaml添加数据库连接信息:

apiVersion: v1kind: Secretmetadata:name: id6labels:branch: maintype: OpaquestringData:DatabaseHost: xxxDatabasePort: "5432"DatabaseUser: postgresDatabasePassword: yyyDatabaseName: zzz

第五步,添加 k8s 相关的描述文件

这一步,基本上和《[Free Arch: 在 Okteto 上部署 backstage(第二部分) - Jeff Tian的文章 - 知乎](https://zhuanlan.zhihu.com/p/590640020) 》相同。一个显著不同的是在开启 Ingress 这里,这次没有使用自动 Ingress,而是专门添加了一个 Ingress.yaml 描述文件:

apiVersion: networking.k8s.io/v1kind: Ingressmetadata:name: id6annotations:dev.okteto.com/generate-host: id6spec:rules:- http:paths:- backend:service:name: id6port:number: 80path: /pathType: ImplementationSpecific

这一点在那篇文章有提及,但这次算是真的补上了这个公开示例。

相比上文,其他的改进点在 deployment.yaml 文件中添加了 replicas,并指定了 2,使得同时有 2 个 pod 运行。

其他文件略过,在此不表。最终需要在 .github/workflows 文件夹下添加一个 cicd 的描述文件:

name: cicdon:push:branches: [ "main" ]pull_request:branches: [ "main" ]schedule:- cron: "0 */12 * * *"jobs:deploy-okteto:runs-on: ubuntu-latestneeds: buildsteps:- uses: actions/checkout@v3- run: curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl- run: chmod +x ./kubectl- run: sudo mv ./kubectl /usr/local/bin/kubectl- run: mkdir ${HOME}/.kube&&mkdir ${HOME}/.aws- run: npm i -g k8ss- run: echo -e "machine github.com\n  login ${{secrets.GH_TOKEN}}" > ~/.netrc- run: echo -e "[lambda-doc-rotary]\naws_access_key_id = ${{secrets.AWS_ACCESS_KEY}}\naws_secret_access_key = ${{secrets.AWS_SECRET_KEY}}\n" > ~/.aws/config- run: wget https://github.com/mozilla/sops/releases/download/v3.7.3/sops-v3.7.3.linux.amd64- run: sudo cp sops-v3.7.3.linux.amd64 /usr/local/bin/sops- run: sudo chmod +x /usr/local/bin/sops- run: git clone https://github.com/Jeff-Tian/k8s-config.git ${HOME}/k8s-config- run: k8ss switch --cluster=okteto --namespace=jeff-tian- run: sops -d k8s/app/secrets.yaml --aws-profile lambda-doc-rotary | kubectl apply -f -- run: kubectl apply -k k8s/app&&kubectl rollout restart deploy id6build:runs-on: ubuntu-lateststeps:- uses: actions/checkout@v3- run: echo "${{secrets.DOCKER_PASSWORD}}" | docker login -u "${{secrets.DOCKER_USERNAME}}" --password-stdin- run: sh .github/ci.sh

注意在这个文件里,依赖了多个环境变量,这需要添加在 github 代码仓库的 secrets 里:

第六步,没有第六步了!

提交代码,等待 Actions 跑完:

IdentityServer 的第二个分身上线了!

【环球快播报】Free Arch: 将 IdentityServer 部署到 Okteto

2022-12-19 22:43:25

新光药业董秘回复:最近部分省市相继发布了一些防治新冠的推荐用药

2022-12-19 16:03:47

华菱钢铁:12月16日获融资买入2494.89万元,占当日流入资金比例6.8%:焦点信息

2022-12-19 10:16:07

扶沟:巡察干部紧急开展疫情排查

2022-12-19 01:19:34

调配外援、设置双倍运力、加紧招聘 北京快递网点运转快起来了|环球时讯

2022-12-18 11:56:04

多地商务局倡议:邀请市民送外卖,需自带“小电驴”;有症状,抗原检测却是阴?专家:可能是流感

2022-12-17 15:05:52

Vivado教程:使用Vivado的高层次综合:全球快播报

2022-12-17 00:27:05

飞行汽车已来,进入现实还需飞越重关-速读

2022-12-16 16:03:42

全球最资讯丨分房屋协议书怎么写?有没有范本呢?

2022-12-16 09:43:38

颜如玉配色锁定2023潮流色,vivo S16系列定档12月22日发布

2022-12-15 21:27:45

想考会计初级如何自学

2022-12-15 15:03:13

银行间市场交易协会出台新规,这样防止隐性债务

2022-12-15 09:59:08

牧原股份: 关于回购事项前十名股东及前十名无限售条件股东持股情况的公告

2022-12-14 20:49:51

万年青:今年以来没有机构投资者到公司现场调研-全球热点

2022-12-14 15:03:32

中信建投:预计2023年白酒行业动销将逐渐修复-天天讯息

2022-12-14 08:04:54

北京:即日起恢复跨省团队旅游及“机票+酒店”业务

2022-12-13 17:28:56

安彩高科董秘回复:二级市场股价受多方面因素综合影响

2022-12-13 10:41:35

中远海控: 中远海控监事会关于第六届监事会第十四次会议股票期权激励计划相关议案的的核查意见|每日速读

2022-12-12 21:26:12

世界互联网大会蓝皮书:数字经济赋能作用凸显

2022-12-12 15:08:46

双象股份: 第七届监事会第一次会议决议公告

2022-12-11 17:00:13

【快播报】新包直逼6w,这恐怕是我最后一次买Celine

2022-12-09 09:23:19

中电兴发:北京世邦私募基金管理公司投资者于12月6日调研我司-热讯

2022-12-08 08:38:34

“守粮卫士”:研发基因靶向杀虫剂助力粮食安全储藏之路

2022-06-20 16:52:57

工信部:支持制造业优质企业成长壮大 加快推进电子证照

2022-03-19 13:35:15

中国电信2021年实现净利润259.5亿元

2022-03-19 13:31:00

荣耀赵明:未来几年都不会进入汽车领域

2022-03-19 13:30:00

IDC:2021年中国IT安全硬件市场规模达到37.7亿美元

2022-03-19 13:23:30

字节跳动全资入股长顺新声科技 涉及企业管理咨询

2022-03-19 13:22:34

阅读过大年 商务印书馆发布1月十大好书

2022-01-11 09:57:40

如何推动普通高中高质量发展?教育部详解

2022-01-11 09:57:40

教育部印发《普通高中学校办学质量评价指南》 含18项关键指标

2022-01-11 09:57:38

交通银行试点长三角区域抵押登记“跨省通办”

2022-01-11 09:57:38

2022年“文化进万家——视频直播家乡年”活动正式启动

2022-01-11 09:57:37

2022-02-11 14:56:06

2022-02-11 14:56:06

2022-02-11 14:56:06

2022-02-11 14:56:06

2022-02-11 14:56:06

国家发改委:春节和北京冬奥会期间重要民生商品价格将保持平稳运行

2022-01-11 09:57:33

2022-01-29 14:26:59

国家发改委:西安重点生活物资配送“最后一米”问题正加快解决

2022-01-11 09:57:31

人民热评:刘鑫被依法惩处,正义没有缺席!

2022-01-11 09:57:31

专访:RCEP将有力促进区域经济疫后复苏——访泰国商业部贸易谈判司司长奥拉蒙

2022-01-11 09:57:29

综述:英国累计新冠死亡病例超15万例 未来面临“艰难几周”

2022-01-11 09:57:29

如何实现工业废水高效循环利用?专家:聚焦重点分类施策

2022-01-11 09:57:28

2022-01-29 14:26:59

2022-01-29 14:26:59

2022-01-29 14:26:59

2022-01-29 14:26:46

杨国豪当选福建省厦门市人大常委会主任 黄文辉当选福建省厦门市市长

2022-01-11 09:57:25

2022-01-29 14:26:46

交通运输部:支持浙江建设共同富裕示范区 探索加快建设交通强国省域范例

2022-01-11 09:57:24

2021年我国民航完成固定资产投资1150亿元 超额完成年度投资目标

2022-01-11 09:57:23

比利时多位人士表达对北京冬奥会的支持

2022-01-11 09:57:23

2021年我国民航行业出台一揽子促发展措施 全年降成本近100亿元

2022-01-11 09:57:21

于学利当选辽宁省沈阳市政协主席

2022-01-11 09:57:21

2022-01-29 14:26:46

2021年我国民航运输航空实现持续安全飞行9876万小时

2022-01-11 09:57:20

推动创新创业向纵深发展 国家发改委打算这样干

2022-01-11 09:57:19

2022-01-29 14:26:32

西安群众如何就医?记者带你去看看

2022-01-11 09:57:17

民航局对国航、厦航、南航等八个入境航班发出熔断指令

2022-01-11 09:57:17

天津:划定封控区 全市开展全员核酸检测

2022-01-11 09:57:16

积极落实防控措施 多地全力抗击疫情

2022-01-11 09:57:16

工信部:鼓励新能源与智能网联汽车等领域建设产品质量大数据公共服务平台

2022-01-11 09:57:14

2022-01-29 14:26:32

工信部:针对年轻及国外消费群体发展低度化白酒产品

2022-01-11 09:57:13

民航局:2022年力争完成旅客运输量5.7亿人次 实现行业整体扭亏增盈

2022-01-11 09:57:13

北航举行2021-2022学年研究生毕业典礼暨学位授予仪式

2022-01-11 09:57:12

斯里兰卡总统戈塔巴雅会见王毅

2022-01-11 09:57:12

文旅部公示首批国家级旅游休闲街区名单

2022-01-11 09:57:11

2022年国家公务员考试 明起可申请调剂

2022-01-11 09:57:11

2021年“扫黄打非”十大数据公布

2022-01-11 09:57:08

2021年“扫黄打非”十大案件公布

2022-01-11 09:57:08

2021年“扫黄打非”工作综述:举旗亮剑 激浊扬清

2022-01-11 09:57:06

交通运输部:将引导19.61亿元社会资金投入交通运输科技研发

2022-01-11 09:57:06

浦银理财有限责任公司获批开业

2022-01-11 09:57:05

家庭服务需求迎旺季 58到家推出“不打烊”春节保姆服务

2022-01-11 09:57:05

北京倡导市民群众在京过年非必要不出京

2022-01-11 09:57:04

2022-01-29 14:25:55

英雄联盟手游城市赛总决赛落幕

2022-01-11 09:57:00

巨型雪人亮相哈尔滨松花江畔

2022-01-11 09:57:00

深圳:疫情阻击进行时

2022-01-11 09:56:58

2022-01-29 14:25:55

2022年国家公务员考试笔试成绩和合格分数线公布

2022-01-11 09:56:56

21部门:推动形成“15分钟”养老服务圈

2022-01-11 09:56:56

增强供应链合作 电子烟产业布局海外

2022-01-11 09:56:55

2022-01-29 14:25:55

一所群育学校的爱与希望

2022-01-11 09:56:53

彭京堂少将任驻香港部队司令员

2022-01-11 09:56:53

人民网评:金色的盾牌,无悔的坚守

2022-01-11 09:56:51

数字政通:步入无人驾驶新赛道 与主线科技签署战略合作协议

2022-01-11 09:56:49

珠海高新区新政揽才 最高600万元住房补

2022-01-11 09:56:49

台胞在西安:“抗击疫情需要我们每一个人的力量”

2022-01-11 09:56:47

在京台生体验冰雪乐趣

2022-01-11 09:56:47

澳门未来发展有了新的时间表

2022-01-11 09:56:45

最高检:法治副校长应指导学校落实未成年人保护责任

2022-01-11 09:56:45

检察官担任法治副校长有了“指挥棒”

2022-01-11 09:56:44

全国首份《家庭教育令》来了!督促家长“依法带娃”

2022-01-11 09:56:44

俄军装甲车辆将具备隐身能力

2022-01-11 09:56:42

俄美双边对话 欧盟处境尴尬

2022-01-11 09:56:42

国资委:决战决胜国企改革三年行动 更好发挥国有经济战略支撑作用

2022-01-11 09:56:40

美海岸警卫队盯上濒海战斗舰

2022-01-11 09:56:40

证监会发布标准:统一金融行业对移动互联网应用程序的安全要求

2022-01-11 09:56:38

日本声称以电磁炮加强防御

2022-01-11 09:56:38

2022-01-29 14:25:17

江苏南京:上万块显示屏支撑征兵宣传

2022-01-11 09:56:36

2022-01-29 14:24:59

广东省汕头市组织军地海上联合搜救演练

2022-01-11 09:56:35

2022-01-29 14:24:59

山东省枣庄军分区组织两级首长机关野营拉练

2022-01-11 09:56:33

2022-01-29 14:24:59

83年后,“故乡土”撒在烈士墓前

2022-01-11 09:56:32

岛与岸的守望:你的岛,我的岸

2022-01-11 09:56:30

2022-01-29 14:24:59

愿你们也平平安安!这支MV献给人民警察

2022-01-11 09:56:29

集安组织将就哈局势举行视频峰会

2022-01-11 09:56:29

美俄新一轮战略稳定对话前景不容乐观

2022-01-11 09:56:27

我第12批赴南苏丹(瓦乌)维和医疗分队开展紧急救援演练

2022-01-11 09:56:27

第二轮第五批中央生态环境保护督察全面完成督察进驻工作 已受理有效举报9656件

2022-01-11 09:56:25

空军某旅组织实弹打靶训练

2022-01-11 09:56:25

江秋莲诉刘暖曦生命权纠纷案一审宣判

2022-01-11 09:56:22

2022-01-29 14:24:44

新疆军区某团侦察连官兵边关巡逻

2022-01-11 09:56:19

第78集团军某旅实战化演练设强对手设难情况

2022-01-11 09:56:19

军队医疗待遇保障新规定如期落地有序施行

2022-01-11 09:56:17

2022-01-29 14:24:44

2022-01-29 14:24:07

荣盛发展:2021年签约金额1345.58亿元 同比增长5.87%

2022-01-11 09:56:15

2022-01-29 14:24:07

2022-01-29 14:24:07

证监会发布《关于北京证券交易所上市公司转板的指导意见》

2022-01-11 09:56:12

2022-01-29 14:24:07

2022-01-29 14:24:07

奥密克戎高速传播 美国医疗物资供应无法满足病毒检测需求

2022-01-11 09:56:10

原住民控诉美政府在其家园进行“900次核试验”:这是种族清洗!

2022-01-11 09:56:09

2022-01-29 14:24:07

2022-01-29 14:23:52

2022-01-29 14:23:52

奥密克戎肆虐 美国公共服务受重创

2022-01-11 09:56:06

公安部1月10日举行新闻发布会

2022-01-11 09:56:06

詹姆斯·韦伯太空望远镜顺利“完全部署”

2022-01-11 09:56:04

日美联合委员会发布声明:驻日美军离开基地将仅限于必要活动

2022-01-11 09:56:04

致敬·选择

2022-01-11 09:56:03

《我们北京见》 来自55位世界冠军的邀约

2022-01-11 09:56:03

世界冠军进校园 小小少年感受运动乐趣

2022-01-11 09:56:00

2022-01-29 14:23:52

时政Vlog丨带你体验冬奥运动员的备战日常

2022-01-11 09:55:58

伊朗制裁51名参与暗杀高级将领苏莱曼尼的美国人

2022-01-11 09:55:58

今年要有序推动绿色低碳发展

2022-01-11 09:55:51

加强同乡村振兴有效衔接

2022-01-11 09:55:51

加强绿色合作 助力共同发展

2022-01-11 09:55:49

电力碳减排要开好局(点睛)

2022-01-11 09:55:49

风光互补 绿能满满

2022-01-11 09:55:47

推动能源转型 赋能绿色发展(经济聚焦·关注碳达峰碳中和)

2022-01-11 09:55:47

今日腊八:两乡侈各健,一粥喜遥同

2022-01-11 09:55:44

2021年生态环境领域8项约束性指标顺利完成

2022-01-11 09:55:44

欧盟推进塑料回收再利用

2022-01-11 09:55:42

国家植物园 让保护体系更完整(美丽中国)

2022-01-11 09:55:42

2022-01-29 14:23:20

借力外脑,河南打出农业工程技术创新“组合拳”

2022-01-11 09:55:39

2022-01-29 14:23:20

国家速滑馆“冰丝带”“超级大脑”上线

2022-01-11 09:55:37

2022-01-29 14:23:20

农田被淹、住宅停电、出行受阻……美国多地遭遇持续恶劣天气

2022-01-11 09:55:35

自动驾驶已“接单” 下一站开往大规模商业化

2022-01-11 09:55:34

2022-01-29 14:23:20

第四集《精兵作战 精兵制胜》

2022-01-11 09:55:31

科普专项行动让老年人跨越数字鸿沟

2022-01-11 09:55:31

令人身临其境 8K服务让北京冬奥会更精彩

2022-01-11 09:55:29

嫦娥五号探测数据显示:采样区一吨月壤约含一百二十克水

2022-01-11 09:55:29

太曲折!交给美军后丢失的男婴 找到了

2022-01-11 09:55:27

科技创新助力 渤海油田成为我国第一大原油生产基地

2022-01-11 09:55:27

全球新纪录!本体热效率达51.09%柴油机诞生

2022-01-11 09:55:26

2022-01-29 14:22:53

2022-01-29 14:22:53

山西古稀老人不灭的“花灯情”:让古老花灯焕发新魅力

2022-01-11 09:55:25

数字人民币越来越“香”

2022-01-11 09:55:24

PPP成稳增长重要抓手

2022-01-11 09:55:24

基金投顾需“投”“顾”齐发力

2022-01-11 09:55:19

保险业风险保障功能持续增强

2022-01-11 09:55:19

实体经济是产业互联网主角

2022-01-11 09:55:17

“云上奥运”更精彩

2022-01-11 09:55:17

“万物皆可盲盒”是伪命题

2022-01-11 09:55:15

喝腊八粥、泡腊八蒜…腊八节的打开方式有哪些?

2022-01-11 09:55:15