这个实验没有做完,可以不要看
安装之后选择重新启动jenkins
kubernetes

点击jenkins管理---->节点和云管理---->新增一个云,在下拉菜单中选择kubernets并添加



http://192.168.187.154:6443
jenkins-k8s
http://jenkins-service.jenkins-k8s.svc.cluster.local:8080







jenkins-k8s
test

jnlp
cnych/jenkins:jnlp
/home/jenkins

jenkins-k8s-sa
在Service Account处输入jenkins-k8s-sa,这个sa就是我们最开始安装jenkins时的sa
添加卷------>选择Host Path Volume
/var/run/docker.sock
/root/.kube
/home/jenkins/.kube

上面配置好之后,应用------>保存
https://hub.docker.com/






username:920786312
password:xxxx
ID:dockerhub
在master上操作
scp -r /root/.kube/ node1:/root/


node('testhan') {
stage('阶段:克隆') {
echo "阶段:克隆"
//这是开源的代码位置
git url: "https://gitee.com/DanShenGuiZu/jenkins-sample.git"
script {
//获取分支标签,作为镜像的版本
build_tag = sh(returnStdout: true, script: 'git rev-parse --short HEAD').trim()
}
}
stage('阶段:测试') {
echo "阶段:测试"
}
stage('阶段:构建镜像') {
echo "阶段:构建镜像"
// 920786312:hub.docker.com的账号
sh "docker build -t 920786312/jenkins-demo:${build_tag} ."
}
stage('阶段:推送镜像') {
echo "阶段:推送镜像"
//dockerhub是我们的凭证id,也就是我们配置的dockerhub的凭证
withCredentials([usernamePassword(credentialsId: 'dockerhub', passwordVariable: 'dockerHubPassword', usernameVariable: 'dockerHubUser')]) {
// 登陆dockerhub
sh "docker login -u ${dockerHubUser} -p ${dockerHubPassword}"
// 推送镜像
sh "docker push 920786312/jenkins-demo:${build_tag}"
}
}
stage('阶段:部署到开发环境') {
echo "阶段:部署到开发环境"
//替换标签
sh "sed -i 's//${build_tag}/' k8s-dev.yaml"
//替换分支名称
sh "sed -i 's//${env.BRANCH_NAME}/' k8s-dev.yaml"
// sh "bash running-devlopment.sh"
sh "kubectl apply -f k8s-dev.yaml --validate=false"
}
stage('阶段:部署到UAT环境') {
def userInput = input(
id: 'userInput',
message: '是否部署到UAT环境?',
parameters: [
[
$class: 'ChoiceParameterDefinition',
choices: "YES\nNO",
name: 'Env'
]
]
)
echo "是否部署到UAT环境:${userInput}"
if (userInput == "YES") {
//替换标签和分支名称
sh "sed -i 's//${build_tag}/' k8s-qa.yaml"
sh "sed -i 's//${env.BRANCH_NAME}/' k8s-qa.yaml"
// sh "bash running-qa.sh"
//部署
sh "kubectl apply -f k8s-qa.yaml --validate=false"
sh "sleep 6"
sh "kubectl get pods -n qa"
} else {
//退出
}
}
stage('阶段:部署到生产环境') {
def userInput = input(
id: 'userInput',
message: '是否部署到生产环境?',
parameters: [
[
$class: 'ChoiceParameterDefinition',
choices: "YES\nNO",
name: 'Env'
]
]
)
echo "是否部署到生产环境:${userInput}"
if (userInput == "YES") {
sh "sed -i 's//${build_tag}/' k8s-prod.yaml"
sh "sed -i 's//${env.BRANCH_NAME}/' k8s-prod.yaml"
// sh "bash running-production.sh"
sh "cat k8s-prod.yaml"
sh "kubectl apply -f k8s-prod.yaml --record --validate=false"
}
}
}
kubectl create ns devlopment
kubectl create ns qatest
kubectl create ns production





注意:代码里面的xiaochao都要改为920786312