使用rancher在k8s上完成第一个CI/CD的项目_.NET篇

2023-11-13

隔了几天没写了。一是忙的不行,二是遇到一个问题一直没解决。我们自己搭建的harbor仓库是没有域名的,也没做nginx转发,所以都是http请求的。构建项目时会在两个地方遇到关于docker访问http仓库不通的问题。
第一个:构建成功push镜像到私有仓库的时候。
第二个:构建成功部署的时候从仓库pull镜像来部署的时候。
这里需要设置一些东西:
首先我们所有含有docker环境的模板镜像都是提前做了配置信任私有仓库的:
vi /etc/docker/daemon.json

rancher流水线文件 :.rancher-pipeline.yml文件需要加一个设置:

 设置集群node私有仓库:这里需要注意,工作节点和控制节点都需要设置
 vi /etc/rancher/rke2/registries.yaml

192.168.21.8 controller1
192.168.21.9 controller2
192.168.21.230 controller3
控制节点修改了后需要执行:
systemctl restart rke2-server.service
systemctl status containerd.service

192.168.21.233 worker1
192.168.21.234 worker2
192.168.21.235 worker3
工作节点修改后需要执行
systemctl restart rke2-agent.service
systemctl status containerd.service

开始第一个CICD项目:
rancher如何配置ci/cd?https://blog.csdn.net/wangxin123wangxin/article/details/122984551
开发环境.net6 +vs2022

新建一个net6 api项目

 

 

选中项目右键:添加docker支持

 修改Dockerfile文件:

 镜像加速代理:默认用微软官方镜像。非常慢。修改成我们私有仓库,但是我们私有仓库需要设一个镜像代理
登录到镜像仓库harbor :192.168.21.4:8081

 

 

新建一个项目:

 设置好代理后,拉取我们私有仓库镜像时,如果本地没有,就会走代理去取。拉取过后私有镜像仓库就会缓存。 

 在项目里添加一个健康检查控制器:(为啥要监控检查。这个很重要,集群需要知道任何服务,站点的监控状态,就需要站点或者服务暴露出一个可以供集群健康检查的方式)

 

 

 准备流水线文件:(rancher pipiline要求必须项目有流水线文件。才能进行自动化发布和部署,流水线文件名称必须时:.rancher-pipeline.yml,所在目录和解决方案一个目录)

 准备部署文件:deployment.yaml,所在目录和流水线文件一个目录,也可以不同,需要修改流水线文件中相对路径

apiVersion: v1
kind: Service
metadata:
  name: hellok8s      #服务名称,建议就是项目小写,统一后面很好处理
  namespace: default
  labels:
    app: hellok8s     
    service: hellok8s
spec:
  ports:
  - port: 80
    name: http
  selector:
    app: hellok8s
---
apiVersion: apps/v1
kind: Deployment    #部署名称
metadata:
  name: hellok8s
  namespace: default
  labels:
    app: hellok8s
    version: v1
spec:
  replicas: 1   #副本数
  selector:
    matchLabels:
      app: hellok8s
      version: v1
  template:
    metadata:
      labels:
        app: hellok8s
        version: v1
    spec:
      containers:
      - name: hellok8s
        image: 192.168.21.4:8081/test/hellok8s:${CICD_GIT_BRANCH}-${CICD_GIT_COMMIT}  #镜像,这里也用到了变量
        readinessProbe:
          httpGet:
            path: /health/status   #健康检查,这就是为什么要写健康检查接口
            port: 80
          initialDelaySeconds: 10
          periodSeconds: 5
        ports:
        - containerPort: 80
      imagePullSecrets:
        - name: mydockerhub     #还记得我们创建集群私有仓库吗。这里就是那个名字

 这个文件内容比较多,不懂的可以私信我。

 最后把代码和部署文件都提交上去就可以去发布了。

等待。。。。。(性能好的机器就很快)出错了可以查看错误信息。 

 查看部署结果:

 查看服务:

 为什么有个服务? 
service是k8s中的一个重要概念,主要是提供负载均衡和服务自动发现。一个服务可以对应多个pod,pod重新部署或者重启ip都会发生变化,但是可以通过服务,找得到对应的pod,

 负载均衡?下一篇再说。。。。。

CI/CD精髓在于:CI/CD 创建了一个可重复的、可靠的且可预见的发布流程,从而大大缩短了发布周期,使得新增功能和缺陷修复能更早与用户见面。这么做为我们节省下了巨大的金钱成本,还节省了包括建立和维护这样一个发布系统所需要的时间投入。

试想一下,修改代码,git提交,触发部署,环境部署完成。测试介入,开发根本不用关心无休止的打包部署。人工打包,人工部署,操作失误,定位半天原来少部署了个dll?浪费了开发资源。
 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用rancher在k8s上完成第一个CI/CD的项目_.NET篇 的相关文章

  • .NET - MVC 应用程序外部的 Razor - 删除 @inherits 和提供 @model 时出现问题

    抱歉问了这么长的问题 我把它分成了三个问题 可以分别阅读 如果你能帮我解决一个问题 请帮我 我有一个 Razor 引擎的自定义实现 所有作品和模板均已编译并可以使用 手头有一些实现涉及具有通用的基类Model允许强类型视图 模板 的属性 此
  • DI Control-Freak 反模式:难以理解

    我正在阅读 Mark Seemann 写的 NET 中的依赖注入 但我无论如何也无法理解这一点 虽然new当涉及到 VOLATILE 时 关键字是一种代码味道 依赖性 您无需担心将其用于稳定 依赖性 这new一般来说 关键字不会突然变得 非
  • 在 Intel 机器 (Mac) 上构建 ARM 架构的 Docker 镜像

    我希望能够从我的 Mac 构建 ARM 的 Docker 映像 我知道我可以使用 QEMU 在 Mac 上运行 ARM 容器 但我不知道如何为 ARM 构建 现在这有点复杂 我相信在不久的将来 docker 会让这一切变得更容易 基本上 您
  • 最新的反应式扩展 (Rx) 教程

    我对反应式扩展非常感兴趣 但我找不到最新的教程 我开始于使用 NET 响应式扩展消除异步忧郁症 http go microsoft com fwlink LinkId 208528但它已经过时了 我可以找出一些改变 但我无法让很多例子发挥作
  • 检查对象是否更改的最佳实践是什么?

    我需要知道如何检查对象是否发生更改 基本上我需要一个名为 TrackChanges 的属性 当我将其设置为 true 一次并且如果该对象中的任何数据被 更改 时 同一对象上的方法 IsObjectChanged 可以返回 true 您是否曾
  • 如何通过 COM 将长数组从 VB6 传递到 C#

    我需要将 int 或 long 数组 无关紧要 从 VB6 应用程序传递到 C COM Visible 类 我尝试在 C 中声明接口 如下所示 void Subscribe MarshalAs UnmanagedType SafeArray
  • 如何使用 Docker 和 DigitalOcean Spaces 部署 TensorFlow Serving

    如何配置 TensorFlow Serving 以使用存储在 DigitalOcean Spaces 中的文件 重要的是解决方案 提供对这两个配置的访问and模型文件 提供对数据的非公开访问 我已经配置了一个名为your bucket na
  • Bash 实例未嵌套在 Dockerfile `RUN` 中

    嵌套 bash 实例会递增 SLVL 环境变量 http tldp org LDP abs html internalvariables html http tldp org LDP abs html internalvariables h
  • 在c#中创建sql连接

    我是这个网站的新手 也是编程的新手 我目前正在通过销售点创建库存系统 它使用模态和非模态形式 我的问题是 我正在研究change password对话框必须连接到数据库才能覆盖密码字段 我使用的数据库是Microsoft SQL Serve
  • C#:DataSet.readXML( "filepath" ) 如何处理包含对象内对象内对象的 XML 文件?

    我有一个 xml 文件 格式如下
  • 生成Excel文件错误

    我在经典 ASP 中使用以下代码生成 Excel 文件 代码很简单并且有效 我在 Windows Vista x86 上的 IIS 7 0 下运行代码 两个问题 有一个奇怪的警告框 这是屏幕快照 http i27 tinypic com 2
  • 下载 .NET 3.5 的实体框架

    哪个版本的实体框架 EF 我可以用在 NET 3 5我可以在哪里下载这个旧版本 对于 Net 3 5 您可以使用 EF v1 您是否尝试从以下位置下载 Microsoft NET Framework 3 5 Service Pack 1 h
  • InvalidOperationException:无法解析类型“Microsoft.AspNetCore.Http.IHttpContextAccessor”的服务

    我开始将我的 asp net core RC1 项目转换为 RC2 并面临现在的问题IHttpContextAccessor没有解决 为了简单起见 我使用 Visual Studio 模板创建了新的 ASP NET RC2 项目ASP NE
  • 检查列表是否包含另一个列表。 C#

    编辑 只是说 ContainsAllItem 中的注释解释得最好 很抱歉问这个问题 我知道以前有人问过这个问题 但我只是不明白 好的 所以我想检查一个列表是否包含另一个列表中的所有项目WITHOUT重叠 以及根据类字符串 名称变量 称为项目
  • 生成 .tail IL 指令的简单 F# 代码是什么?

    我想看看 tailIL 指令 但我一直在编写的使用尾部调用的简单递归函数显然已优化为循环 我实际上是在猜测这一点 因为我不完全确定反射器中的循环是什么样的 我绝对没有看到任何 tail不过操作码 我在项目的属性中检查了 生成尾部调用 我还尝
  • 抽象类或接口。哪种方式是正确的?

    有两种方法可以选择抽象类或接口 微软解决方案和Oracle解决方案 微软 设计指南 请使用抽象 在 Visual Basic 中为 MustInherit 类而不是接口来将协定与实现分离 http msdn microsoft com en
  • 无法从 rollupOptions 自动确定入口点

    我正在尝试对使用 vite 和 vue3 创建的前端应用程序进行 dockerize 它不作为容器工作 这是错误响应 无法从 rollupOptions 或 html 文件自动确定入口点 并且没有显式的 OptimizeDeps inclu
  • 有没有办法设置 log4net 内存附加程序可以包含的最大错误消息数?

    我想向根记录器添加一个内存附加程序 以便我可以连接到应用程序并获取最后 10 个事件 我只想保留最后 10 个 我担心这个附加程序会消耗太多内存 该应用程序设计为 24 7 运行 或者还有别的办法吗 您需要创建一个自定义附加程序来存储有限数
  • docker 构建失败,无法解析“archive.ubuntu.com”

    我无法使用以下 Dockerfile 构建映像 FROM ubuntu RUN apt get y update apt get y install nodejs npm ssh cache npm install when package
  • 如何将 CSV 文件读入 .NET 数据表

    如何将 CSV 文件加载到System Data DataTable 根据CSV文件创建数据表 常规 ADO net 功能是否允许这样做 我一直在使用OleDb提供者 但是 如果您正在读取具有数值的行 但希望将它们视为文本 则会出现问题 但

随机推荐

  • 什么是视图,视图的创建、删除、使用?

    什么是视图 视图是一张虚拟的表 视图与数据库中存在的表不太相同 之前我们创建的表都是包含数据的 如用户信息订单信息 然而视图是不包含数据的 举例 查询王五的所有订单的情况 王五本身要从用户表user进行查找 王五有很多订单要用订单表中进行查
  • git文件存放结构

    该思维导图是自己在整理笔记的时候 发现内容不全 但属于有略微用处的 上传csdn作为笔记存档 主要包括git的几种数据类型blob tree commit 以及git中常用到的合并策略 pdf地址 https download csdn n
  • 算法与数据结构_链表

    链表 一 理解指针或引用的含义 含义 将某个变量 对象 赋值给指针 引用 实际上就是就是将这个变量 对象 的地址赋值给指针 引用 示例 p gt next q 表示p节点的后继指针存储了q节点的内存地址 p gt next p gt nex
  • 基本数据类型:浮点型、指针

    浮点数家族包括float double和long double类型 通常 这些类型分别提供单精度 双精度以及在某些支持扩展精度的机器上提供扩展精度 ANSI标准仅仅规定long double至少和double 一样长 而double至少和f
  • 如何创建Spring项目以及如何使用?

    目录 1 创建Spring项目 2 将对象存储在Spring中 3 从Spring中取出对象 4 使用对象 5 总结 Spring 就是 个包含了众多 具 法的 IoC 容器 它具备两个最基本的功能 将对象存储到容器 Spring 中 从容
  • 三层交换机 单臂路由 trunk access接口

    交换机 单独使用时条件比较苛刻 通信双方同一网段 同一网关 单臂路由和三层交换机可以实现跨网段通信 三层交换机 交换机和路由器兼并 可以设置VLAN 概念 分隔广播域 广播 一对多 人为进行切割 互不相干 逻辑分隔 属于代码 交换机 为了提
  • 简历中不写年龄、毕业院校、预期薪资会怎样?

    第五 自我评价 这一项与文凭一样 作者可能传达的意思是不要写在个人信息栏中 但很容易让人误解为不要写 这块真的需要看情况 如果你的自我评价非常好 那一定要提前曝光 展现 比如我的自我评价中会写到 全网博客访问量过千万 CSDN排名前100
  • C语言九九乘法表

    C语言编程实现九九乘法表 样式要求长方形 右三角形 左三角形 解题思路 这个问题的算法很简单 就是两个for循环的嵌套 三角形的样式就是多了一些空格 长方形源代码演示 include
  • 国内企业CAE仿真的作用和特点

    在知乎上看到某前辈所写的国内CAE仿真的现状的回答 觉得其将国内企业CAE仿真的作用和特点分析的很到位 询问可以转发之后 就转发到自己的博客中 希望也能给刚从事CAE仿真的同行一点帮助 知乎原文链接聊一聊国内CAE领域的现状吧 知乎 zhi
  • jar包中的文件找不到对应的地址的解决方法

    对于本地的地址 测试时可以 一上到服务环境 就报错 xml的文件地址找不到 于是也找了好多网上的方式解决 但始终解决不了 于是在一次偶然机会 找到了一种方式 反射流的方式 解决 InputStream inputStream ClassUt
  • Qt Install FrameWork——Qt打包工具

    主要介绍三部分内容 Qt Install FrameWork安装 打包程序 程序安装 环境配置 一 Qt Install FrameWork安装 两种方式 编译源码 安装预编译好的Installer 推荐安装预编译好的Installer 下
  • FreeRTOS的学习(二)——队列的介绍和操作

    目录 队列的简介 任务对队列的操作 读取队列中的消息 向队列中发送消息 队列结构体 队列创建 1 函数 xQueueCreate 动态创建队列 函数原型 参数 返回值 2 函数 xQueueCreateStatic 静态创建队列 函数原型
  • C++ cout << “\n“与 cout << endl的一个区别

    一句话概括 n 不会终止setw的计算 endl会 实际场景 代码1 include
  • MySQL必知必会 学习笔记 第十八章 全文本搜索

    并非所有引擎都支持全文本搜索 MyISAM支持 更新 1 MySQL 5 6 以前的版本 只有 MyISAM 存储引擎支持全文索引 2 MySQL 5 6 及以后的版本 MyISAM 和 InnoDB 存储引擎均支持全文索引 3 只有字段的
  • idea自定义注释模板方法名、参数、返回类型为空的问题

    重点的地方 在你的方法上输入 然后加上模板的名称 param和retrun才不会为空 如果你直接模板的名称 按键就会为空 https blog csdn net weixin 39591795 article details 7884442
  • 如何给Winform 的Panel控件添加滚动条

    真是太笨了 刚想起来 Panel控件还有一个AutoScoll属性 直接修改为true即可 添加Panel控件的如下两个事件即可 当然 只是添加的竖向滚动条 横向滚动条只需把VerticalScroll改为HorizontalScroll即
  • linux进阶-运维自动化工具之ansible

    文章目录 云计算运维工程师核心职能 ansible特性 ansible架构 ansible组成部分 ansible命令执行来源 ansible使用注意事项 ansible安装和入门 epel源的rpm包安装 编译安装 git方式 pip安装
  • ConvertException: Unsupported source type: class java.lang.String

    项目上遇到 文件异步上传时会把不符合标准的数据放入redis 然后隔几秒去请求redis里面的数据 但是时不时会出现ConvertException Unsupported source type class java lang Strin
  • tensorflow报错总结

    项目场景 tensorflow 版本 不兼容产生的报错 问题描述 1 AttributeError module tensorflow has no attribute random uniform 解决办法 tf2 0中用tf rando
  • 使用rancher在k8s上完成第一个CI/CD的项目_.NET篇

    隔了几天没写了 一是忙的不行 二是遇到一个问题一直没解决 我们自己搭建的harbor仓库是没有域名的 也没做nginx转发 所以都是http请求的 构建项目时会在两个地方遇到关于docker访问http仓库不通的问题 第一个 构建成功pus