部署了一个免费的 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 的第二个分身上线了!
X 关闭
推荐内容
- Free Arch: 将 IdentityServer 部署到 Okteto-环球今头条
- 京新药业(002020)12月19日主力资金净卖出1059.07万元
- 枣阳小镇法庭,守护群众司法权益 环球观速讯
- 焦点速递!12月19日普蕊斯跌5.65%,国投医保A基金重仓该股
- 石狮:洗车机台被盗 民警快速破案 全球短讯
- 天天微动态丨好的领域模型应该是什么样子?
- 各地推进老年人新冠病毒疫苗接种工作|前沿资讯
- “湾区新地标”广东顺德区德胜体育中心项目主体落成
- 博汇股份:12月8日公司高管尤丹红减持公司股份合计2000股|环球热讯
- 天奈科技跌5.98%,东吴证券一个月前给出“买入”评级,目标价157.00元 全球通讯
- 稀土让羽绒服自带“热循环”
- 世界微资讯!江苏新能:拟合资设立金云新能 开发建设渔光互补发电项目
- 环球精选!郏县:公益阅览室丰富孩子暑期生活
- 嘉曼服饰(301276)12月14日主力资金净买入338.87万元|世界微资讯
- 纬达光电北交所上市路演:打破了日本等地的市场垄断地位
- 今日报丨异动快报:曲江文旅(600706)12月14日13点51分触及涨停板
- 她是张嘉译前女友,爱上孙红雷却无疾而终,如今45岁嫁入豪门
- ST中捷董秘回复:公司将持续提高投资者关系管理维护工作
- 内蒙古全面推进生态、安全、能源、农畜、开放“五大任务”
- “天鹅宝宝”来了,温榆河公园首次监测到疣鼻天鹅
- 环球今日报丨涨停雷达:中医药个股异动 金安国纪触及涨停
- 网传辽宁一有轨电车碾压电动自行车 官方回应:系剐蹭、人无碍 天天热议
- 资讯:鲜虾粉丝煲
- 北方导航(600435):制导控制核心标的
- 天喻信息:目前没有数据脱敏等方面的业务-焦点热门
- 跨境支付概念股普遍上涨 南天信息、京北方涨停
- 昨天全球首架涂装北京环球度假区主题班机首度亮相大兴机场
- 最新消息!北京两大机场进出港旅客数量增长近一倍
- 北京轨道交通第三期建设规划公示 规划里程约231.3公里
- “天上一张网”越织越密!北京大兴机场迈入“双枢纽时代”
- 北京经开区首推“一张清单告知”800多个高频事项一键办理
- 全球ICT巨头齐聚服贸会元宇宙生态头部玩家将悉数亮相
- 城市绿心实现首个城市组团级区域绿色低碳能源全覆盖 实现“负碳”状态
- 茅台冰淇淋消息冲上热搜 引来网友热议“下一步是不是茅台奶茶店”
- 中科院青藏高原所建成雅鲁藏布江流域多圈层水文监测网
- 三江源腹地玛沁多措施保障黄河流域生态安全
- 浙江台州天台县集中隔离点发现2例阳性
- 天津中小学今日恢复线下教学
- 北京:社区周边市场供应充足,蔬菜水果十分新鲜
- 31省份累计报告接种新冠病毒疫苗333177.1万剂次
- 北京市昌平区两地实施管控措施
- 一季度北京降尘量同比下降超50% 将加强控制“二次扬尘”
- 疫情之下 研招“云复试”
- 每天两次送饭上门 免费社区团餐让900多位老人“吃好饭”
- 北京房山一褡裢火烧店已至少关联8名感染者 去过请立即报告
- 内蒙古自治区满洲里市所有居民开展第三轮区域核酸检测
- 北京昌平发现1名核酸检测阳性人员 行程轨迹公布
- 上海嘉定一单位厂房发生火灾 火势已被扑灭无人员伤亡
- 广福日记·8户11人丨最终记:10+1
- 北京:凌晨补货,量足价稳!昨晚超市空置的货架又被填满了
- 河南多地取消今年中招体育和理化生实验考试
- 大藤峡水利枢纽通过挡水验收 今年汛期将开启防洪运用
- 4月25日12时起 河南终止省级防汛Ⅳ级应急响应
- 续写春天的故事丨乌兰牧骑续新篇
- 海报丨坚守,在楼宇方舱
- 【挑战365天正能量速写画】第146期:90岁奶奶变“刘畊宏女孩”跟跳毽子操
- 吉林延吉四名外卖小哥一分钟救两命
- 上海市市场监管局:利用社区团购发“疫情财”,露头就打
- 新疆阿克苏地区沙雅县发生3.9级地震 震源深度10千米
- 这个春天,复旦园向阳而生,安然如斯
- 北京朝阳区部分区域提升管控措施 区域内居民足不出区
- 强降雨致严重积水 四川内江紧急转移被困人员
- 山西太原管控区里“蔬菜兄弟”的一天
- 北京家庭教育主题培育实践启动 发布“理想”主题童书书单
- (上海战疫录)一线丨凝“新”聚力 上海新阶层人士同心守“沪”
- 截至2021年底 全国累计报告职业性尘肺病患者91.5万人
- (上海战疫录)抓获34人!上海警方严厉打击伪造买卖涉疫通行证违法犯罪
- (上海战疫录)上海26日对封控、管控和防范区人员进行全员核酸筛查
- 快递小哥手握通行证,却做了志愿者:总有些东西,比钱更重要
- 湖南新增12例新冠肺炎确诊病例
- 外国人在上海:德国女摄影师的核酸日常
- “东北味”核酸检测贴纸“出圈” 网友:太接地气了!
- 烟台病例基因分型为奥密克戎BA.2.3进化分支 目前国内尚未发现
- 网友“刷量”赚取注册奖励 被判收益无效
- 超20万人次观看 广州小提琴家奏响战“疫”乐章
- 江苏南通崇川区:“志愿红”扛起抗疫担当
- 辽宁沈阳:加强景区流量控制 有序恢复堂食
- “越是困难的时候,越要与群众在一起”
- 天津一按摩店疫情期间擅自违规营业 经营者被行拘
- 上海“泾聚里”志愿服务车队:有任务,随叫随到
- “自己得到了帮助,也要尽力帮助他人”
- 乡村振兴看安徽丨“稻虾共养”让农民走上生态致富路
- 和时间赛跑,直击上海疫情下的120医疗急救
- 严厉打击伪造买卖涉疫通行证违法犯罪 上海警方已抓获34人
- “疫”起守“沪” 上海这群党员教师成为社区抗疫能手
- 千古河套建良田
- 江西新增本土“14+116” 南昌市行程卡“摘星”
- 校友接力为退休教师解燃眉之急:是回报老师的时候了
- 上海:重型患者196例 危重型患者23例 新增本土死亡病例51例
- 神舟十三号载人飞船返回舱成功着陆点燃中国西北青少年的“航天梦”
- 南昌市第十二轮区域核酸检测发现阳性感染者1人
- 【新闻特写】上海:同心战“疫” 守“沪”有我
- 四川内江强降雨造成16563人受灾
- 山东烟台:本轮疫情呈现出明显的空间聚集性 可能已经隐匿传播一段时间
- 山东烟台病例基因分型为奥密克戎BA.2.3进化分支 目前国内尚未发现
- 杭州一业主4000字网文记录管控期间的有序和温暖
- 与女友争吵后将10公斤重电脑椅从15楼扔下 男子获刑
- 遏制“低俗广告”,亟需提高违法成本
- 太原全市开展区域核酸检测 未按时参加将被赋黄码
精彩推荐
-
Free Arch: 将 IdentityServer 部署到 Okteto-环球今头条2022-12-20
-
京新药业(002020)12月19日主力资金净卖出1059.07万元2022-12-20
-
枣阳小镇法庭,守护群众司法权益 环球观速讯2022-12-19
-
焦点速递!12月19日普蕊斯跌5.65%,国投医保A基金重仓该股2022-12-19
-
石狮:洗车机台被盗 民警快速破案 全球短讯2022-12-19
-
天天微动态丨好的领域模型应该是什么样子?2022-12-18
-
各地推进老年人新冠病毒疫苗接种工作|前沿资讯2022-12-18
-
“湾区新地标”广东顺德区德胜体育中心项目主体落成2022-12-17
-
博汇股份:12月8日公司高管尤丹红减持公司股份合计2000股|环球热讯2022-12-16
-
天奈科技跌5.98%,东吴证券一个月前给出“买入”评级,目标价157.00元 全球通讯2022-12-16
-
稀土让羽绒服自带“热循环”2022-12-16
-
世界微资讯!江苏新能:拟合资设立金云新能 开发建设渔光互补发电项目2022-12-15
-
环球精选!郏县:公益阅览室丰富孩子暑期生活2022-12-15
-
嘉曼服饰(301276)12月14日主力资金净买入338.87万元|世界微资讯2022-12-15
-
纬达光电北交所上市路演:打破了日本等地的市场垄断地位2022-12-14
-
今日报丨异动快报:曲江文旅(600706)12月14日13点51分触及涨停板2022-12-14
-
她是张嘉译前女友,爱上孙红雷却无疾而终,如今45岁嫁入豪门2022-12-14
-
ST中捷董秘回复:公司将持续提高投资者关系管理维护工作2022-12-13
-
内蒙古全面推进生态、安全、能源、农畜、开放“五大任务”2022-12-13
-
“天鹅宝宝”来了,温榆河公园首次监测到疣鼻天鹅2022-12-12
-
环球今日报丨涨停雷达:中医药个股异动 金安国纪触及涨停2022-12-12
-
网传辽宁一有轨电车碾压电动自行车 官方回应:系剐蹭、人无碍 天天热议2022-12-10
-
资讯:鲜虾粉丝煲2022-12-09
-
北方导航(600435):制导控制核心标的2022-12-07
-
天喻信息:目前没有数据脱敏等方面的业务-焦点热门2022-12-06
-
跨境支付概念股普遍上涨 南天信息、京北方涨停2022-09-15
-
昨天全球首架涂装北京环球度假区主题班机首度亮相大兴机场2022-07-09
-
最新消息!北京两大机场进出港旅客数量增长近一倍2022-07-09
-
北京轨道交通第三期建设规划公示 规划里程约231.3公里2022-07-09
-
“天上一张网”越织越密!北京大兴机场迈入“双枢纽时代”2022-07-09
-
北京经开区首推“一张清单告知”800多个高频事项一键办理2022-07-09
-
全球ICT巨头齐聚服贸会元宇宙生态头部玩家将悉数亮相2022-07-09
-
城市绿心实现首个城市组团级区域绿色低碳能源全覆盖 实现“负碳”状态2022-07-09
-
茅台冰淇淋消息冲上热搜 引来网友热议“下一步是不是茅台奶茶店”2022-05-20
-
中科院青藏高原所建成雅鲁藏布江流域多圈层水文监测网2022-04-25
-
三江源腹地玛沁多措施保障黄河流域生态安全2022-04-25
-
浙江台州天台县集中隔离点发现2例阳性2022-04-25
-
天津中小学今日恢复线下教学2022-04-25
-
北京:社区周边市场供应充足,蔬菜水果十分新鲜2022-04-25
-
31省份累计报告接种新冠病毒疫苗333177.1万剂次2022-04-25
-
北京市昌平区两地实施管控措施2022-04-25
-
一季度北京降尘量同比下降超50% 将加强控制“二次扬尘”2022-04-25
-
疫情之下 研招“云复试”2022-04-25
-
每天两次送饭上门 免费社区团餐让900多位老人“吃好饭”2022-04-25
-
北京房山一褡裢火烧店已至少关联8名感染者 去过请立即报告2022-04-25
-
内蒙古自治区满洲里市所有居民开展第三轮区域核酸检测2022-04-25
-
北京昌平发现1名核酸检测阳性人员 行程轨迹公布2022-04-25
-
上海嘉定一单位厂房发生火灾 火势已被扑灭无人员伤亡2022-04-25
-
广福日记·8户11人丨最终记:10+12022-04-25
-
北京:凌晨补货,量足价稳!昨晚超市空置的货架又被填满了2022-04-25
-
河南多地取消今年中招体育和理化生实验考试2022-04-25
-
大藤峡水利枢纽通过挡水验收 今年汛期将开启防洪运用2022-04-25
-
4月25日12时起 河南终止省级防汛Ⅳ级应急响应2022-04-25
-
续写春天的故事丨乌兰牧骑续新篇2022-04-25
-
海报丨坚守,在楼宇方舱2022-04-25
-
【挑战365天正能量速写画】第146期:90岁奶奶变“刘畊宏女孩”跟跳毽子操2022-04-25
-
吉林延吉四名外卖小哥一分钟救两命2022-04-25
-
上海市市场监管局:利用社区团购发“疫情财”,露头就打2022-04-25
-
新疆阿克苏地区沙雅县发生3.9级地震 震源深度10千米2022-04-25
-
这个春天,复旦园向阳而生,安然如斯2022-04-25
-
北京朝阳区部分区域提升管控措施 区域内居民足不出区2022-04-25
-
强降雨致严重积水 四川内江紧急转移被困人员2022-04-25
-
山西太原管控区里“蔬菜兄弟”的一天2022-04-25
-
北京家庭教育主题培育实践启动 发布“理想”主题童书书单2022-04-25
-
(上海战疫录)一线丨凝“新”聚力 上海新阶层人士同心守“沪”2022-04-25
-
截至2021年底 全国累计报告职业性尘肺病患者91.5万人2022-04-25
-
(上海战疫录)抓获34人!上海警方严厉打击伪造买卖涉疫通行证违法犯罪2022-04-25
-
(上海战疫录)上海26日对封控、管控和防范区人员进行全员核酸筛查2022-04-25
-
快递小哥手握通行证,却做了志愿者:总有些东西,比钱更重要2022-04-25
-
湖南新增12例新冠肺炎确诊病例2022-04-25
-
外国人在上海:德国女摄影师的核酸日常2022-04-25
-
“东北味”核酸检测贴纸“出圈” 网友:太接地气了!2022-04-25
-
烟台病例基因分型为奥密克戎BA.2.3进化分支 目前国内尚未发现2022-04-25
-
网友“刷量”赚取注册奖励 被判收益无效2022-04-25
-
超20万人次观看 广州小提琴家奏响战“疫”乐章2022-04-25
-
江苏南通崇川区:“志愿红”扛起抗疫担当2022-04-25
-
辽宁沈阳:加强景区流量控制 有序恢复堂食2022-04-25
-
“越是困难的时候,越要与群众在一起”2022-04-25
-
天津一按摩店疫情期间擅自违规营业 经营者被行拘2022-04-25
-
上海“泾聚里”志愿服务车队:有任务,随叫随到2022-04-25
-
“自己得到了帮助,也要尽力帮助他人”2022-04-25
-
乡村振兴看安徽丨“稻虾共养”让农民走上生态致富路2022-04-25
-
和时间赛跑,直击上海疫情下的120医疗急救2022-04-25
-
严厉打击伪造买卖涉疫通行证违法犯罪 上海警方已抓获34人2022-04-25
-
“疫”起守“沪” 上海这群党员教师成为社区抗疫能手2022-04-25
-
千古河套建良田2022-04-25
-
江西新增本土“14+116” 南昌市行程卡“摘星”2022-04-25
-
校友接力为退休教师解燃眉之急:是回报老师的时候了2022-04-25
-
上海:重型患者196例 危重型患者23例 新增本土死亡病例51例2022-04-25
-
神舟十三号载人飞船返回舱成功着陆点燃中国西北青少年的“航天梦”2022-04-25
-
南昌市第十二轮区域核酸检测发现阳性感染者1人2022-04-25
-
【新闻特写】上海:同心战“疫” 守“沪”有我2022-04-25
-
四川内江强降雨造成16563人受灾2022-04-25
-
山东烟台:本轮疫情呈现出明显的空间聚集性 可能已经隐匿传播一段时间2022-04-25
-
山东烟台病例基因分型为奥密克戎BA.2.3进化分支 目前国内尚未发现2022-04-25
-
杭州一业主4000字网文记录管控期间的有序和温暖2022-04-25
-
与女友争吵后将10公斤重电脑椅从15楼扔下 男子获刑2022-04-25
-
遏制“低俗广告”,亟需提高违法成本2022-04-25
-
太原全市开展区域核酸检测 未按时参加将被赋黄码2022-04-25