jenkins镜像配置docker、kubectl、dotnet-sdk,自动部署到k8s

                                            

1:jenkins基础镜像

jenkins/jenkins:2.235.1-lts-jdk11

jenkins/jenkins:2.235.1-lts-centos7

两个区别在于基础镜像,第一个是Debian GNU/Linux 9.12 (stretch)、第二个是centos7

因为要在jenkins里安装docker(push镜像),而centos7里docker启动docker比较坑爹,选择第一个作为基础镜像。

2:制作dockerfile(run指令有点多,后面再优化,第一次执行安装netcore sdk,第二次docker,第三次kubectl)

FROM jenkins/jenkins:2.235.1-lts-jdk11
user root
ADD sources.list /etc/apt/
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
     &&  echo 'Asia/Shanghai' >/etc/timezone \  
       && wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb \
       && dpkg -i packages-microsoft-prod.deb \  
               && apt-get install -y apt-transport-https \
         && apt-get update  \
     &&  apt-get install -y dotnet-sdk-3.1 \
        && rm -rf /var/lib/apt/lists/* 

RUN apt update && apt upgrade && apt install -y apt-transport-https ca-certificates curl software-properties-common gnupg2 && curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add - \
&& add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable" && apt update &&  apt install -y docker-ce &&  service docker start && rm -rf /var/lib/apt/lists/*
COPY kubernetes.list /etc/apt/sources.list.d/
COPY  daemon.json /etc/docker/
RUN mv /etc/apt/sources.list /etc/apt/sources.list.bak  &&  curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add -  && apt-get update  &&  apt-get install -y kubectl  && rm -rf /var/lib/apt/lists/*

daemon.json(配置docker的镜像加速以及内网ip地址用于构建时推送镜像到内网registry,10.206.0.11:5100换成自己的)

{
  "registry-mirrors": [
     "https://registry.docker-cn.com"
  ],
  "max-concurrent-downloads": 10,
  "log-driver": "json-file",
  "log-level": "warn",
  "log-opts": {
    "max-size": "10m",
    "max-file": "3"
    },
  "insecure-registries":
        ["10.206.0.11:5100"],
  "data-root":"/var/lib/docker"
}

kubernetes.list(安装kubectl需要切换阿里源,google不行你懂的)

deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main

sources.list(apt换国内源)

deb http://mirrors.ustc.edu.cn/debian/ stretch main non-free contrib
deb http://mirrors.ustc.edu.cn/debian/ stretch-updates main non-free contrib
deb http://mirrors.ustc.edu.cn/debian/ stretch-backports main non-free contrib
deb-src http://mirrors.ustc.edu.cn/debian/ stretch main non-free contrib
deb-src http://mirrors.ustc.edu.cn/debian/ stretch-updates main non-free contrib
deb-src http://mirrors.ustc.edu.cn/debian/ stretch-backports main non-free contrib
deb http://mirrors.ustc.edu.cn/debian-security/ stretch/updates main non-free contrib
deb-src http://mirrors.ustc.edu.cn/debian-security/ stretch/updates main non-free contrib

3:安装jenkins(--privileged必须,不然docker里面启动不了docker)

docker run  --privileged  --name jenkins  -p 9101:8080 -d -p 50000:50000 -v /home/jenkins:/var/jenkins_home    jenkins/jenkins:core3.1.8

4:配置 jenkins构建(还要配置kubernetes cli还有密钥)

 kubectl get pods
if ps -ef|grep "docker"|egrep -v grep >/dev/null
then
        echo ok!
else
        service docker start
fi
#service docker start
echo ${BUILD_VERSION} 
echo ${WORKSPACE}
readonly SRC="/src/Services/IdentityService/IdentityApi/"
readonly PUBLISH_NAME="api"
cd  ${WORKSPACE}
rm  -rf  publish
mkdir publish
cd publish
mkdir  ./${PUBLISH_NAME}

cd ${WORKSPACE}/publish/${PUBLISH_NAME}
rm  -rf  *
cd  ${WORKSPACE}${SRC}
dotnet publish IdentityApi.csproj -c release -f netcoreapp3.1 -r linux-x64  --self-contained false -o ${WORKSPACE}/publish/${PUBLISH_NAME}
cd ${WORKSPACE}/publish/${PUBLISH_NAME}
cp -f ${WORKSPACE}${SRC}Dockerfile ${WORKSPACE}/publish/${PUBLISH_NAME}/
docker build -t  10.206.0.11:5100/${JOB_NAME}:${BUILD_VERSION}  .
docker push 10.206.0.11:5100/${JOB_NAME}:${BUILD_VERSION} 
docker rmi 10.206.0.11:5100/${JOB_NAME}:${BUILD_VERSION} -f

#sed -i 's/nginx:v1/nginx:v2/g' image_update.yaml
kubectl version
kubectl apply -f ../

猜你喜欢

转载自www.cnblogs.com/xiatiandegaga/p/13188417.html