乐趣区

关于k8s:云原生应用持续交付入门基于云效部署java应用到kubernetes集群

背景常识

一般来说,应用 K8S 部署场景如下:

对源代码进行肯定的品质检测,例如单元测试、代码扫描等。
将源代码构建成为可交付的制品,也就是容器镜像。
对制品进行测试环境验证。
应用实现验证的制品进行线上部署。
应用基础设施即代码的形式,在代码库中治理与利用相干的所有 YAML 文件。
上述流动须要有不同角色的参加:开发、测试、运维。如何保障不同参与者能够应用对立的交付流程来进行合作,是云效 Flow 交付流水线要解决的次要问题。

通过云效继续交付流水线和 kubernetes 很好的联合在一起,为利用的继续交付提供了很好的根底保障。

开发者提交代码变更到代码仓库,云效在监听代码库的变动,一旦代码发生变化,将主动触发云效继续部署流水线一次构建工作的运行,包含代码查看、构建、测试部署、测试验证和生产环境部署等过程。

其中,在构建完之后,生成 Docker 镜像,并主动上传至利用镜像仓库,在部署阶段时,获取以后流水线实例构建进去的镜像版本,通过 kubernetes 进行容器编排部署。而这所有,都是通过自动化的伎俩进行实现。

导入示例源代码

1. 返回:云效代码治理 Codeup 超链接:

https://codeup.aliyun.com?cha…

2. 点击【导入代码库】

  1. 抉择【URL 导入】,源代码库地址填写:https://code.aliyun.com/flow-…
    创立流水线
    1. 点击左侧九宫格图标,抉择【流水线】,进入云效流水线。
  2. 单击右上角新建流水线,进入流水线创立向导页面。
  3. 抉择模板 Java·测试、构建镜像,公布到 kubernets 集群 / 阿里云容器服务,并单击创立。

配置代码库

创立流水线之后会自动弹出增加代码源的窗口,抉择 Codeup,代码仓库抉择后面咱们导入的 spring-boot

勾选【开启代码源触发】,过滤条件填写 .*
这样后续 master 分支一旦进行了批改,将会主动触发流水线构建、测试、部署。

创立镜像仓库

在配置云效流水线的镜像构建工作前,须要先创立容器镜像仓库,以便存储镜像。

如果您已有阿里云容器镜像仓库,本步骤能够省略。

返回:阿里云容器镜像服务台,抉择【集体实例】

抉择【创立个人版】

设置阿里云 Docker Registry 登录明码,而后单击确定。



设置完明码后,开始创立镜像仓库。留神下方图片中的区域能够自由选择,但在下一步配置云效流水线时须要用到。

如下图,此处咱们抉择华东 2(上海)


填写命名空间、仓库名称,自定义即可


抉择本地仓库,点击【创立镜像仓库】,即可实现镜像仓库的创立

配置流水线构建工作

已有容器镜像仓库后,咱们持续来配置云效流水线。

如上图,单击【Java 构建 Docker 镜像并推送镜像仓库】流程配置。

单击开展镜像构建并推送至阿里云镜像仓库,而后单击新建服务受权。批准受权之后,云效流水线 Flow 会被授予后面的阿里云镜像仓库权限。

在弹出的云资源受权页面单击批准受权。

接下来实现区域、仓库的配置。标签填入“${DATETIME}”,示意以流水线触发时的工夫戳作为镜像的标签。Dockerfile 门路填入 Dockerfile2

获取 kubernetes 集群配置文件

留神:本步骤所有操作均需新建无痕窗口,并应用第一步创立好的阿里云 RAM 账号

1. 关上浏览器的无痕模式窗口,浏览器地址栏输出 www.aliyun.com

Goole Chrome 浏览器关上无痕模式的快捷键为 Ctrl/Cmd+Shift+N。
2. 应用左侧云产品资源列表中提供的子用户名称和子用户明码登录阿里云

抉择【RAM 用户登录】,用户名和明码填写左侧云产品资源的子用户名和子用户明码

  1. 持续在无痕窗口内操作,浏览器返回阿里云 ACK 控制台:
    https://cs.console.aliyun.com

能够看到,已胜利为您创立一台 ACK 资源。如呈现多台集群,参考云产品资源 k8s 实例 id


单击控制台左侧导航栏的集群,而后在集群列表中单击详情。

在集群详情页中,抉择集群信息 > 连贯信息 > 公网拜访,而后单击复制,将集群配置文件内容保留下来,接下来的云效流水线配置部署工作将会用到集群连贯信息。

配置流水线部署工作

1. 切回原来的云效流水线配置窗口,单击 kubernets 公布工作,进入配置,而后单击新建连贯。

  1. 集群类型抉择自定义集群,填写集群名称,而后将步骤二中保留的集群配置文件内容粘贴到集群配置文件文本框中,最初单击保留。
  2. YAML 门路批改为 app-configs/manifest-app。
  3. 单击增加参数,参数类型抉择上游输入,参数名填入 IMAGE,参数值抉择镜像构建并推送到阿里云镜像仓库. 镜像 VPC 地址。
    * 这样在运行时,云效 Flow 会把 YAML 门路下的所有文件中的 ${IMAGE}都替换成镜像的地址,而后再进行 kubectl 公布。
    示例代码库中的文件 https://code.aliyun.com/flow-…
  4. 再次单击增加参数,参数类型抉择自定义,参数名称填入 HOST,参数值填入 ACK 集群的测试域名。
    * 这样 yaml 文件中的 ${HOST}就会被替换成理论的测试地址。
    示例代码库中的文件 https://code.aliyun.com/flow-…

请参考以下步骤查问集群的测试域名:

返回之前关上的无痕窗口,在集群详情页,单击集群信息 > 根本信息,而后单击复制测试域名,如下图所示。

阐明:粘贴时请将测试域名的前缀 *. 去掉,例如 cc96863588562483e873ee0c367a579b5.cn-shanghai.alicontainer.com。

增加参数后的配置页面如下所示。

持续点击【增加步骤】,抉择【其余】-【云效经营流动验证】

上面的集群连贯须要与上一步 kubectl 的公布保持一致,如下图,咱们和后面保持一致填入 test,点击保留

运行流水线

配置实现后,单击配置页面右上角保留并运行,触发流水线。

拜访 SpringBoot 示例利用

1. 集群公布胜利后,点击 Kubectl 公布 查看集群公布日志,能够看到公布胜利的 HOSTS 和 ADDRESS 地址。

2. 以管理员身份关上本地 C:\Windows\System32\drivers\etc\hosts 文件,将 Host 地址和 Address 退出 hosts 文件(两头以空格隔开),如下图所示,最初按下 Ctrl+ S 键保留文件。
阐明:Linux 和 Mac 零碎请批改 /etc/hosts 文件。

3. 在浏览器关上域名,返回页面如下所示,示意 SpringBoot 示例利用部署胜利。

批改任意代码,触发继续交付

因为咱们在后面开启了代码源触发,所以当检测到 master 分支有代码进行变更,将会主动触发流水线的运行。

6 月 9 -12 日,实现工作即可支付【阿里巴巴研发效力峰会限量版 T 恤】
https://developer.aliyun.com/…

退出移动版