基于jenkins的k8s ci/cd实例
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了基于jenkins的k8s ci/cd实例,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2563字,纯文字阅读大概需要4分钟。
内容图文
K8S ci/cd三剑客:jenkinsfile、dockerfile、k8s.yamlk8s的ci/cd实例
jenkins+jenkinsfile+dockerfile+k8s.yaml
1、dockerfile 实例
FROM harbor.k8s.site/library/jdk/jre:1.8-apline
ENV TZ=Asia/Shanghai
VOLUME /tmp
ADD build/libs/*.jar /app/app.jar
RUN mkdir /logs/ && echo ‘java ${JVMSIZE} ${EUREKA} ${LOGPATH} ${APOLLO} -jar app.jar‘ > /usr/bin/run.sh;chmod a+x /usr/bin/run.sh
WORKDIR /app/
CMD run.sh
2、k8s.yaml 实例
apiVersion: apps/v1beta2
kind: Deployment
metadata:
name: yryd-client
namespace: default
labels:
k8s-app: yryd-client
spec:
replicas: 1
revisionHistoryLimit: 1
#滚动升级时70s后认为该pod就绪
minReadySeconds: 70
strategy:
##由于replicas为3,则整个升级,pod个数在2-4个之间
rollingUpdate:
#滚动升级时会先启动1个pod
maxSurge: 1
#滚动升级时允许的最大Unavailable的pod个数
maxUnavailable: 1
selector:
matchLabels:
k8s-app: yryd-client
template:
metadata:
labels:
k8s-app: yryd-client
spec:
containers:
- name: yryd-client
image: harbor.k8s..site/yryd/yryd-client:build-<BUILD_TAG>
ports:
#容器的端口- containerPort: 5001
name: yryd-client
protocol: TCP
env: - name: JVMSIZE
value: -Xms1G -Xmx1G name: LOGPATH
value: -Dlogging.path=/logs/yryd/yryd-client/apiVersion: v1
kind: Service
metadata:
name: yryd-client
namespace: default
labels:
k8s-app: yryd-client
spec:
ports:
#集群IP的端口- port: 5001
name: yryd-client
protocol: TCP
#容器的端口
targetPort: 5001
selector:
k8s-app: yryd-client
- port: 5001
- containerPort: 5001
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: yryd-client
namespace: default
spec:
rules:
- host: yryd-client.k8s..site
http:
paths:- backend:
serviceName: yryd-client
servicePort: 5001
- backend:
3、jenkinsfile实例
pipeline {
agent {
label ‘master‘
}
parameters {
string(name: "branch", defaultValue: "master", description: "code branch")
extendedChoice(
defaultValue: ‘‘,
description: ‘选择发布模块‘,
multiSelectDelimiter: ‘,‘,
name: ‘module‘,
quoteValue: false,
saveJSONParameterToFile: false,
type: ‘PT_CHECKBOX‘,
value:‘yryd-client‘,
visibleItemCount: 10)
}
options {
skipDefaultCheckout(true)
buildDiscarder(logRotator(daysToKeepStr: ‘5‘, numToKeepStr: ‘8‘))
}
stages{
stage(‘get code‘){
steps{
git branch: ‘$branch‘, credentialsId: ‘dd93cf17-ab6c-48e4-9aca-b063d05a031b‘, url: ‘http://git.bqjr.club/MMT-YRYD/mmt-yryd.git‘
}
}
stage(‘yryd-client‘){
when {
expression { return "$params.module".contains(‘yryd-client‘)}
}
steps {
sh ‘‘‘
imageName="harbor.k8s.site/yryd/yryd-client:build-${BUILD_NUMBER}"
cd mmt-yryd-client-service/
/opt/software/gradle-4.8/bin/gradle clean excludedev build -x test
docker build -t ${imageName} .
docker push ${imageName}
docker rmi ${imageName}
sed -i "s/<BUILD_TAG>/${BUILD_NUMBER}/g" k8s.yaml
kubectl apply -f k8s.yaml --record
‘‘‘
}
}
}
}
原文:https://blog.51cto.com/gravel/2473824
内容总结
以上是互联网集市为您收集整理的基于jenkins的k8s ci/cd实例全部内容,希望文章能够帮你解决基于jenkins的k8s ci/cd实例所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。