kuberntes CI/CD

作者: 条子在洗澡 | 来源:发表于2019-04-18 20:21 被阅读6次
    k8s版本 1.11.1
    系统 CentOS Linux release 7.6.1810 (Core)
    k8s_master 192.168.199.130
    k8s_node1 192.168.199.131
    k8s_node2 192.168.199.132
    gitlab 192.168.199.40
    jenkins 192.168.199.41
    docker registry 192.168.199.42
    dev && docker client 192.168.199.43
    CI/CD
    1.gitlab搭建及使用教程 :https://www.jianshu.com/p/f1a3d7517572
    2.jenkins搭建及使用教程:https://www.jianshu.com/p/bf4518df167f
    3.所有机器修改docker私有仓库地址及默认下载镜像地址
    vim /etc/docker/daemon.json
    {
      "registry-mirrors": ["https://i70c3eqq.mirror.aliyuncs.com"],
      "insecure-registries": ["192.168.199.42:5000"]
    }
    
    vim /etc/sysconfig/docker
    #添加一行:
    ADD_REGISTRY='--add-registry 192.168.199.42:5000'
    
    #重启docker服务
    systemctl restart docker
    
    
    4.jenkins 192.168.199.41 配置docker插件.
    #安装docker插件
    • Jenkins---> 系统管理--->插件管理
    • 安装所有和docker相关插件
    
    docker 插件.png
    5.配置gitlab和Jenkins联动,编译在jenkins上编译,也可以指定特定的主机
    #jenkins 192.168.199.41的设置
    系统管理-->系统设置;ip为需要编译的主机ip,这里我在jenkins的主机上编译所以填写192.168.199.41, 填写后点击test connection验证一下
    tcp://192.168.199.41:2376
    
    #jenkins 192.168.199.41 设置,便于jenkins 远程连接构建的主机,这里构建的主机为jenkins所在的主机
    vim /etc/sysconfig/docker
    OPTIONS后增加
    -H tcp://0.0.0.0:2376 -H unix:///var/run/docker.sock
    
    #重启生效
    systemctl restart docker
    
    
    docker build machine .png docker build cloud.png build machine.png
    6.Jenkins 192.168.199.41 的设置
    #配置jenkins删除权限
    vim /etc/sudoers.d/jenkins
    jenkins ALL=(root) NOPASSWD:/usr/bin/rm
    
    系统管理-->全局安全设置
    关闭防跨站点请求伪造权限;
    打开匿名用户具有可读写权限
    
    全局安全设置.png
    7.jenkins 192.168.199.41 加入到root组,同时重启jenkins
    #在编译过程中,如果出现Got permission denied while trying to connect to the Docker daemon socket
    
    #创建文件夹并修改所属组和用户为jenkins
    mkdir /jenkins-test
    chown -R jenkins.jenkins  /jenkins-test
    #在把jenkins加入到root组,
    gpasswd -a jenkins root
    #重启jenkins
    /etc/init.d/jenkins restart
    
    
    8.设置jenkins触发器:项目->配置文件,图中为
    Build Triggers setting.png
    9.设置gitlab联动:

    9.1.添加jenkins的触发器url


    image.png

    9.2.允许被拉取


    image.png
    10.在k8s上运行一个deployment nginx,并创建服务
    kubectl create namespace ns01
    kubectl run nginx --image=nginx --port=80 -n ns01
    kubectl expose deployment nginx  --type=NodePort -n ns01
    
    
    11.jenkins 192.168.199.41 安装kubelet
    yum install -y kubernetes-client
    
    12.jenkins 配置构建的shell
    cd /jenkins-test/
    sudo rm -rf *
    git clone http://192.168.199.40/root/hellogitlab.git
    version=$(date +"%Y.%m.%d.%H.%M.%S")
    name=192.168.199.42:5000/test/hellogitlab:$version
    docker build -t $name hellogitlab
    docker push $name
    kubectl -s="https://192.168.199.130:6443" --insecure-skip-tls-verify=true --username="tom" --password="redhat" set image deployment/nginx nginx="$name" -n ns01
    
    #测试一下jenkins是否能操作k8s
    #kubectl -s="https://192.168.199.130:6443" --insecure-skip-tls-verify=true --username="tom" --password="redhat" get pods -n ns01
    
    
    13. k8s master上配置容器运行用户权
    #临时配置权限
    kubectl create clusterrolebinding system:anonymous   --clusterrole=cluster-admin   --user=system:anonymous
    
    #为tom设置权限
    kubectl create clusterrolebinding myclusterbind1 --clusterrole=cluster-admin --user=tom
    
    
    14. docker client :192.168.199.43下载项目hellogitlab
    git clone http://192.168.199.40/root/hellogitlab.git
    
    ######项目中添加Dockerfile和代码
    vim Dockerfile
    
    FROM docker.io/nginx
    MAINTAINER taotao
    ADD index.html /usr/share/nginx/html/
    EXPOSE 80
    CMD ["nginx","-g","daemon off;"]
    
    vim index.html
    hello gitlab by taotao. happy to successful
    
    
    15. 提交代码,自动构建
    git add .
    git commit -m "test"
    git push
    
    
    16.自动化构建部署成功,上个图
    来之不易.png
    image.png

    相关文章

      网友评论

        本文标题:kuberntes CI/CD

        本文链接:https://www.haomeiwen.com/subject/stgwwqtx.html