zoukankan      html  css  js  c++  java
  • 6--jenkins拉完流水线后连接k8s,部署项目

    JenKins使用Kubernetes

    最近我们构建和部署服务的方式与原来相比简直就是突飞猛进,像那种笨拙的、单一的、用于构建单体式应用程序的方式已经是过去式了。现在的应用为了提供更好的拓展性和可维护性,都会去拆解成各种相互依赖小、解耦性强的微服务,这些服务有各自的依赖和进度。这跟我们的Kubernetes不谋而合。

    JenKins链接K8S

    使用Jenkins链接K8S需要创建一些秘钥。

    第1步:将证书私钥填写至Jenkins

    cat /etc/kubernetes/pki/ca.crt
    

    第2步:创建admin-csr.json

    cat > admin-csr.json << EOF
    {
        "CN":"admin",
        "key":{
            "algo":"rsa",
            "size":2048
        },
        "names":[
            {
                "C":"CN",
                "L":"BeiJing",
                "ST":"BeiJing",
                "O":"system:masters",
                "OU":"System"
            }
        ]
    }
    EOF
    

    第3步:创建证书和私钥

    #先下载cfssl
    [root@k8s-m-01 ~]# wget https://github.com/cloudflare/cfssl/releases/download/v1.6.0/cfssl_1.6.0_linux_amd64
    [root@k8s-m-01 ~]# wget https://github.com/cloudflare/cfssl/releases/download/v1.6.0/cfssljson_1.6.0_linux_amd64
    
    [root@k8s-m-01 ~]# chmod +x cfssl_1.6.0_linux_amd64 
    [root@k8s-m-01 ~]# chmod +x cfssljson_1.6.0_linux_amd64 
    
    [root@k8s-m-01 ~]# mv cfssl_1.6.0_linux_amd64 /usr/local/bin/cfssl
    [root@k8s-m-01 ~]# mv cfssljson_1.6.0_linux_amd64 /usr/local/bin/cfssljson
    
    cfssl gencert -ca=/etc/kubernetes/pki/ca.crt -ca-key=/etc/kubernetes/pki/ca.key --profile=kubernetes admin-csr.json | cfssljson -bare admin
    

    第4步:配置证书

    openssl pkcs12 -export -out ./jenkins-admin.pfx -inkey ./admin-key.pem -in ./admin.pem -passout pass:123456
    
    [root@k8s-m-01 ~]# ll
    total 75764
    -rw-r--r--  1 root root     1009 Aug 23 15:58 admin.csr
    -rw-r--r--  1 root root      260 Aug 23 15:46 admin-csr.json
    -rw-------  1 root root     1675 Aug 23 15:58 admin-key.pem
    -rw-r--r--  1 root root     1294 Aug 23 15:58 admin.pem
    -rw-r--r--  1 root root     2517 Aug 23 15:59 jenkins-admin.pfx
    
    [root@k8s-m-01 ~]#  sz jenkins-admin.pfx    #传到桌面
    

    保存!还可以用这种方法配置多个集群

    创建流水线项目

    [root@k8s-m-01 ~]# vim java.yaml 
    kind: Namespace
    apiVersion: v1
    metadata:
      name: java
    ---
    kind: Deployment
    apiVersion: apps/v1
    metadata:
      name: java
      namespace: java
      labels:
        app: java
    spec:
      selector:
        matchLabels:
          app: java
      template:
        metadata:
          labels:
            app: java
        spec:
          imagePullSecrets:
            - name: aliyun-registry-key
          containers:
            - name: java
              image: tomcat
              imagePullPolicy: IfNotPresent
    ---
    kind: Service
    apiVersion: v1
    metadata:
      name: java-svc
      namespace: java
    spec:
      ports:
        - port: 8080
          targetPort: 8080
          name: java
      selector:
        app: java
    ---
    kind: Ingress
    apiVersion: networking.k8s.io/v1
    metadata:
      name: java-svc-ingress
      namespace: java
    spec:
      rules:
        - host: "java.test.com"
          http:
            paths:
              - path: "/"
                pathType: Prefix
                backend:
                  service:
                    name: java-svc
                    port:
                      number: 8080
                      
    [root@k8s-m-01 ~]# kubectl apply -f java.yaml 
    namespace/java created
    deployment.apps/java created
    service/java-svc created
    ingress.networking.k8s.io/java-svc-ingress created
    
    [root@k8s-m-01 ~]# cd .kube
    [root@k8s-m-01 .kube]# kubectl create secret generic kubeconfig --from-file=config
    secret/kubeconfig created
    
    [root@jenkins ~]# kubectl create secret generic aliyun-registry-key
    secret/aliyun-registry-key created
    
    [root@jenkins ~]# cd /var/lib/jenkins/
    [root@jenkins jenkins]# vim config.xml 
    ...
    <slaveAgentPort>-1</slaveAgentPort>      #端口会冲突,-1改成8081或者别的
    ...
    [root@jenkins jenkins]# systemctl restart jenkins
    
    
    #解析域名
    192.168.15.11 java.test.com
    

    **构建后,会和k8s进行连接。拉取镜像,创建pod **

  • 相关阅读:
    基于 MySQL 5.6 keepalived的双主搭建
    keepalived.conf 配置文件小结
    keepalived小结
    能不能利用复制报错,让从库停在同一个复制的位置上?
    复制介绍、复制的实用价值
    复制相关参数学习笔记--master上的参数
    计数排序
    双向链表
    约瑟夫问题
    单链表中重复元素的删除
  • 原文地址:https://www.cnblogs.com/caodan01/p/15183424.html
Copyright © 2011-2022 走看看