品牌 资讯 搭配 材料 时尚 热点 行业 首饰 玉石 行情

Free Arch: 将 IdentityServer 部署到 Okteto-热门看点

2022-12-21 22:12:14 来源:
最终成果

部署了一个免费的 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-热门看点

​最终成果部署了一个免费的IdentityServer实例:https: id6-jeff-tian cloud okteto net 相关代码提交一共

2022-12-21 22:12:14

资讯:富安娜(002327)12月21日主力资金净卖出5832.67万元

​截至2022年12月21日收盘,富安娜(002327)(002327)报收于7 9元,下跌2 95%,换手率9 83%,成交量47 59万手,成交额3 78亿元

2022-12-21 15:26:42

迪安诊断:抗原检测试剂是子公司杭州迪安生物技术有限公司的产品-讯息

​迪安诊断(300244)12月12日在投资者关系平台上答复了投资者关心的问题。

2022-12-21 09:15:21

11月24日恒光股份现381.35万元大宗交易_今日精选

​11月24日恒光股份发生大宗交易,交易数据如下:大宗交易成交价格28 63元,相对当日收盘价折价6 99%,成交13 32万股,成交金额381 35万元,买方营

2022-12-20 21:02:05

异动快报:ST大集(000564)12月20日13点53分触及涨停板

​12月20日盘中消息,13点53分ST大集(000564)触及涨停板。目前价格1 82,上涨5 2%。其所属行业一般零售目前下跌。领涨股为赫美集团。该股为供销社

2022-12-20 13:42:36

【全球新视野】中评深度:唐永红论台湾政局与两岸

​厦门大学台湾研究中心暨厦门大学台湾研究院教授唐永红近日接受中评社专访,分析“九合一”选举后的两岸关系。唐永红认为,这次“九合一”选...

2022-12-20 07:59:49

这个波卡钱包可以让你玩转 NFT、XCM、Staking 和 Crowdloan|SubWallet 钱包体验报告

​加入PolkaWorld社区,共建Web3 0!钱包是区块链生态的入口,一个好用的钱包可以让人你轻松地管理自己的资产,并与生态中的项目交互。在“波卡生

2022-12-19 18:59:12

老外看浙江:网络大城市缘何打造全球“枢纽”?

​身居杭州、宁波两个“万亿俱乐部”之间,在长三角区域协同发展中,绍兴找准自身战略定位——金南翼两强之间的“金扁担”。目前,绍兴已提出...

2022-12-19 14:27:48

中科曙光董秘回复:公司原材料及设备供应目前未受到重大影响,公司积极与现有供应商协调后续保障措施

​中科曙光(603019)12月19日在投资者关系平台上答复了投资者关心的问题。投资者:据传,美国将禁止超算,AI智能的技术和产品出口,对公司是否会产

2022-12-19 08:25:12

大风过后,武汉迎来晴空万里-世界快资讯

​大风过后,武汉迎来晴空万里---12月18日,大风吹散空气中的尘埃,带来清新、洁净的空气和碧蓝的天空。当天,记者来到长江、汉江、沙湖、东湖等

2022-12-18 22:16:24

白鸭绒能用洗衣机洗吗 白鸭绒能不能用洗衣机洗

​1、全鸭绒的羽绒服是可以用洗衣机洗的,不会变形,洗了之后晒干还是很蓬松,但是全鸭绒的羽绒服都很贵。2、而且市场上很多羽绒服里面都不是全

2022-12-18 04:27:24

全国冻哭预警地图来了:周末20余省份或被冻哭 冷到破纪录

​今冬以来第二轮寒潮的威力,大家感受到了吗。预计12月17日至18日,我国近九成国土最低气温将降至0℃以下,上海、浙江、福建、广东等地部分地区

2022-12-17 09:53:25

福建健康码误判可自主申诉!具体这样操作→

​近日,有不少市民发现自己被赋红 黄码或出现健康码弹窗提醒,可通过闽政通APP平台的“个人健康码误判自主申诉功能”,自主上传相关证明。

2022-12-16 19:28:48

世界球精选!新疆首座抽水蓄能电站首台机组定子成功吊装

​12月15日,随着现场总指挥一声令下,桥机缓缓启动,国网新源新疆阜康抽水蓄能电站首台机组定子精准坐落至预定位置,标志着该电站工程建设完成

2022-12-16 13:53:27

新泉股份(603179)12月15日主力资金净买入2877.13万元

​截至2022年12月15日收盘,新泉股份(603179)报收于40 82元,上涨6 19%,换手率1 1%,成交量5 34万手,成交额2 13亿元。12月15日

2022-12-16 07:30:14

环球热推荐:边坡打锚杆多少钱一米

​一米需要多少人工?现在总面积480平方米。雷诺护垫、加工和锚固以及结构挖掘。一路上,冯工,每平方米框架内护坡、护坡的施工队,不带设备,花

2022-12-15 18:56:17

注会如何备考 每日消息

​注会这样备考:1、了解注会考试科目,掌握考试难度。2、制定可行的学习计划并严格遵守。3、合理安排时间,适当的进行复习。4、在做真题时大家

2022-12-15 13:31:05

移远通信:12月14日融券卖出金额167.00万元,占当日流出金额的1.46%|全球简讯

​同花顺数据中心显示,移远通信12月14日获融资买入1080 31万元,占当日买入金额的15 9%,当前融资余额1 55亿元,占流通市值的0 81%,超过历史90

2022-12-15 07:27:17

最新消息:方大炭素最新公告:子公司成都炭材新三板申请挂牌获受理

​方大炭素公告,子公司成都炭材在全国中小企业股份转让系统申请挂牌获得受理。截至2022年12月14日收盘,方大炭素报收于6 36元,下跌0 93%,换手

2022-12-14 16:21:32

什么人可以考cfa证书-环球焦点

​考cfa证书是没有具体人群限制的,只要满足报考条件都是可以考的,cfa考试对于金融专业知识扎实的考生来说是比较好考的,对于零基础或者基础较

2022-12-14 11:30:30

《钟无艳》,为什么以前的古今结合能让人接受,现在却被批判呢?

​今天我们来聊一聊电影《钟无艳》,因为原声大碟里的一首歌,突然想重看这部2001年的老港片。电影只有不到1K的画质,处处透着简陋的布景,开着

2022-12-13 23:39:15

每日速看!北京商报社社长兼总编辑李波涛:金融数字化进入风口

​北京商报社社长兼总编辑李波涛在论坛上表示,金融数字化进入风口,但风口也是风浪口,风险防控、安全隐患、政策导向,使行业的秩序,市场的公

2022-12-13 14:30:20

【环球速看料】【机构调研记录】金鹰基金调研埃斯顿、邦彦技术等4只个股(附名单)

​根据市场公开信息及12月12日披露的机构调研信息,金鹰基金近期对4家上市公司进行了调研,相关名单如下:1)埃斯顿(证券之星综合指标:1 5星;

2022-12-13 07:47:23

伊凡塞斯(nightwish三任主唱对比) 天天微动态

​伊凡塞斯(三位nightwish主唱对比)原创摇滚天堂2017-12-1318:01:01今年,伊凡塞斯终于发布了他们迟来的新专辑《合成》,艾米也谈到了单曲《不完

2022-12-12 17:22:27

专家判定:新冠出院后 即便复阳也不传染、不用住院

​【专家判定:新冠出院后即便复阳也不传染、不用住院】研究发现,与住院阶段相比,复阳阶段病毒核酸载量降低了10万倍,在细胞培养实验中,并未

2022-12-12 13:10:31

凌云股份: 凌云股份第八届监事会第五次会议决议公告

​证券代码:600480     证券简称:凌云股份      公告编号:2022-062             凌云工业股份有限公司      

2022-12-09 19:13:37

当前播报:固始交警快速破获一起亡人交通肇事逃逸案

​“我知道你们抓我,是为我开车撞人的事,只是没想到你们河南警察这么快就找到我了。”这是嫌疑人台某被抓后向民警说的第一句话。近日,固始...

2022-12-08 18:14:29

科大国创董秘回复:在智慧农业领域,公司打造了智慧农业农村综合服务平台

​科大国创(300520)12月07日在投资者关系平台上答复了投资者关心的问题。投资者:国家实施乡村振兴,贵司在数字乡村与数字农业领域有何产品及应

2022-12-07 15:29:46

集智股份(300553)12月6日主力资金净买入21.61万元

​截至2022年12月6日收盘,集智股份(300553)报收于52 54元,下跌2 94%,换手率3 83%,成交量1 37万手,成交额7182 39万元。12月

2022-12-06 15:15:16

优质医疗器械亮相中关村前沿大赛 科技救人实力尽显

​人工智能全骨科手术机器人整体解决方案、国产高精度微创血管介入手术机器人个性化3D打印人工膝关节……16日,2022中关村国际前沿科技创新大...

2022-08-17 14:30:09