如何用建木CI部署k8s资源

143 阅读2分钟

介绍

kubernetes,是一个全新的基于容器技术的分布式架构领先方案,是谷歌严格保密十几年的秘密武器----Borg系统的一个开源版本,于2014年9月发布第一个版本,2015年7月发布第一个正式版本。

kubernetes的本质是一组服务器集群,它可以在集群的每个节点上运行特定的程序,来对节点中的容器进行管理。目的是实现资源管理的自动化,如今建木CI也支持使用节点来给k8s部署资源啦!!

图片

定义资源文件

使用声明式配置方式往k8s上部署资源,首先我们的有一个资源文件,这里我们往名称为hx的namespace中配置pod控制器Deployment,用此Deployment启动三台nginx

apiVersion: apps/v1
kind: Deployment
metadata:
  name: pc-deployment
  namespace: hx
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx-pod
  template:
    metadata:
      labels:
        app: nginx-pod
    spec:
      containers:
      - name: nginx
        image: nginx:1.17.1

图片

使用kubectl-deploy节点

查看宿主机资源状态

可以看到,目前的hx的namespace中空无一物

图片 定义pipeline文件

使用kubectl-deploy节点在k8s上部署资源,节点官方地址在kubectl-deploy

使用pipeline定义kubectl-deploy节点的部署资源流程: 我们使用git clone节点将资源文件拉取下来,然后使用kubectl-deploy部署这个资源文件,具体配置如下:

name: k8s-deploy-resources
description: k8s-deploy-resources的测试pip
​
pipeline:
git_clone:
  type"git_clone:1.2.0"
  param:
    remote_url: https://gitee.com/canon_xi/test.git
    username: xxxxxx
    password: xxxxxx
k8s-deploy-resources:
  type"kubectl_deploy:1.0.0"
  param:
     # k8s指令
    command: apply
     # 资源文件路径
    resource_file_path: ${git_clone.git_path}/nginx.yaml
     # 用于服务端证书认证的自签名CA根证书(对应kubeconfig文件的clusters.cluster.certificate-authority-data项)
    certificate_authority_data: ((k8s.certificate_authority_data))
     # api-server的地址(对应kubeconfig文件的clusters.cluster.server项)
    server: ((k8s.server))
     # base64加密后的客户端证书(对应kubeconfig文件的users.user.client-certificate-data项)
    client_certificate_data: ((k8s.client_certificate_data))
     # base64加密后的客户端证书私钥(对应kubeconfig文件的users.user.client-key-data项)
    client_key_data: ((k8s.client_key_data))

将节点跑起来

将pipeline配置到建木CI中,节点都准备好了,直接跑起来!

图片

不多会就可以看见节点都跑完了

图片

查看日志消息可知,资源已成功部署

图片

再次查看宿主机资源状态

三台nginx已成功部署

图片

图片

本文为建木博主「Freedom」的原创投稿文章,转载请联系授权。


项⽬官⽹:jianmu.dev

项⽬托管:gitee.com/jianmu-dev

项⽬文档:docs.jianmu.dev

在线体验:ci.jianmu.dev