K8S 如何实现将git代码下拉到指定的容器路径中
gitRepo 是 kubernetes Volume类型中的一种,gitRepo volume可以实现将git代码下拉到指定的容器路径中。
备注:实现此功能,Pod运行的节点都必需要安装git。换句话说,如果你的Pod指定在哪个节点上运行,则此节点必需安装git;如果不指定,则所有的节点必需安装git。否则会提示:“找不到可执行文件...”错误
关于git的安装可查看 https://www.cnblogs.com/caoxb/p/11257549.html
完整示例:
Pod配置文件 tomcat.yaml
apiVersion: extensions/v1beta1 kind: Deployment metadata: name: myweb spec: replicas: 1 template: metadata: labels: app: myweb spec: containers: - name: myweb image: 192.168.38.23/library/tomcat:7.0.69-jre7 # 这里是我本地搭建的Harbor镜像地址 ports: - containerPort: 8080 volumeMounts: - mountPath: /usr/local/tomcat/webapps/k8sdemo.war name: git-volume subPath: test/k8sdemo.war volumes: - name: git-volume gitRepo: repository: "http://192.168.38.22:8088/root/k8sdemo.git" # 这里是我本地搭建的Gitlab项目地址 revision: "master"
$ kubectl create -f tomcat.yaml
配置说明:
- image: jre+tomcat的镜像地址;
- repository: gitlab上传的war包下载地址,如果是private,格式如下:http://用户名:密码@192.168.38.22:8088/root/test.git;
- mountPath:挂载的POD路径,这里是把war放在Pod中tomcat的webapps目录下;
- subPath: gitlab项目的war包路径。例如:test/k8sdemo.war test表示gitlab的项目名称。
- revision: gitlab项目分支的名称
Server配置文件 tomcatsvc.yaml
apiVersion: v1 kind: Service metadata: name: myweb spec: type: NodePort ports: - port: 8080 targetPort: 8080 nodePort: 30088 selector: app: myweb
$ kubectl create -f tomcatsvc.yaml