一、介绍 流水线发布代码 1、官网 https://www.jenkins.io/zh 2、kubesphere里的介绍 https://kubesphere.io/zh/docs/
流水线发布代码
https://kubesphere.io/zh/docs/v3.3/devops-user-guide/how-to-use/pipelines/choose-jenkins-agent/
可以自己写点测试代码,提交,待会测试用
配置自己的仓库登录密码
拉代码运行成功,当然自己得提前去代码仓库设置好自己的测试仓库。
思路:首先制作一个php+Nginx的镜像,然后利用Dockerfile把拉到的代码打进去,制作一个新镜像。
正好我之前做过一个,可以利用一下。
php+nginx的镜像制作过程: https://blog.csdn.net/u014225032/article/details/125165684
有了这个镜像之后,需要你把他推送到阿里云,待会编写项目的dockerfile要用到,因为这里要和阿里云打交道,所以少不了账号密码。
阿里云账号注册 https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
自己注册一下,创建个实例,开个仓库就完事了。
echo "阿里云登录密码" | docker login --username=登录名 reGIStry.cn-hangzhou.aliyuncs.com --passWord-stdin
这个地方本来应该设置成变量名配置的,我这里方便大家看,就直接写了,上正式环境的时候大家可以写道配置字典里。
FROM registry.cn-hangzhou.aliyuncs.com/mystudygyd/studyRedis:nginx-phpv1MaiNTAINER itddENV MYPATH /usr/local/nginx/htmlWORKDIR $MYPATHADD * /usr/local/nginx/html/CMD echo $MYPATHEXPOSE 80 443ENTRYPOINT ["/tmp/php/startServer.sh"]
docker build -t ubuntu-nginx-php:latest .
这里没什么好说的,创建镜像。这样第二步就完事了。
把镜像推送到阿里云仓库
docker tag ubuntu-nginx-php:latest $REGISTRY/$DOCKERHUB_NAMESPACE/$APP_NAME:SNAPSHOT-$BUILD_NUMBER
打tag,为什么这样写是阿里云的语法,里面的变量是在编辑jenkinsfile配置里
docker push $REGISTRY/$DOCKERHUB_NAMESPACE/$APP_NAME:SNAPSHOT-$BUILD_NUMBER
推送镜像也是阿里云的语法,$BUILD_NUMBER变量是发布一次+1的一个变量,大家在生产环境中可以改成分支+时间,这样可以方便查看当前的版本。
首先配置一下k8s集群的配置。因为是所有节点都要部署,而node节点没有部署能力,所以需要加权限。
创建凭证的时候选择kubeconfig内容会自动生成,然后名字写一个,我写的是demo-kubeconfig,变量名 KUBECONFIG_CREDENTIAL_ID
echo "$KUBECONFIG_CREDENTIAL_ID" > ~/.kube/config && cat ~/.kube/config && chown 777 -R ~/.kube/config && kubectl get nodes
把配置写到.kube/config文件里,后面是权限的校验。
kubectl get nodes && envsubst < deploy/deploy.yaml | kubectl apply -f -
创建pod,有基础的应该能看懂。
apiVersion: apps/v1kind: Deploymentmetadata: labels: app: sannong name: sannong namespace: sannong #一定要写名称空间spec: progressDeadlineSeconds: 600 replicas: 1 selector: matchLabels: app: sannong strategy: rollingUpdate: maxSurge: 50% maxUnavailable: 50% type: RollingUpdate template: metadata: labels: app: sannong spec: imagePullSecrets: - name: alilogin #提前在项目下配置访问阿里云的账号密码 containers: - image: $REGISTRY/$DOCKERHUB_NAMESPACE/$APP_NAME:SNAPSHOT-$BUILD_NUMBER readinessProbe: HttpGet: # 健康检查url,如果健康检查不通,k8s就认为你的服务挂了,不会给你分配流量过来 path: / port: 80 timeoutSeconds: 10 failureThreshold: 30 periodSeconds: 5 imagePullPolicy: Always name: app ports: - containerPort: 80 protocol: tcp resources: limits: cpu: 300m memory: 600Mi terminationMessagePath: /dev/termination-log terminationMessagePolicy: File dnsPolicy: ClusterFirst restartPolicy: Always terminationGracePeriodSeconds: 30---apiVersion: v1kind: Servicemetadata: labels: app: sannong name: sannong namespace: sannongspec: ports: - name: http-80 port: 80 protocol: TCP targetPort: 80 selector: app: sannong sessionAffinity: None type: NodePort
成功。如果你在运行流水线,发现一直不动,你可以尝试再创建一个账户专门发布流水线试试。在去项目里看看pod是否启动成功。
看是成功了,再去service暴露下外部端口
浏览器访问
完美!虽然写的比较潦草,但是尽力了。哈哈,祝愿每一位php从业者都可以实现全流程搭建。欢迎评论点赞交流。
来源地址:https://blog.csdn.net/u014225032/article/details/129600539
--结束END--
本文标题: DevOps流水线搭建-PHP版本
本文链接: https://lsjlt.com/news/386641.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0