首页 > 技术文章 > K8S 如何实现将git代码下拉到指定的容器路径中

caoxb 2019-07-28 02:16 原文

 

 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

 

推荐阅读