2015-10-09 80 views
0

在Kubernetes中使用gitRepo卷時,會將repo克隆到mountPath目錄中。對於下面的吊艙規範,例如:在Kubernetes中命名gitRepo安裝路徑

apiVersion: v1 
kind: Pod 
metadata: 
    name: server 
spec: 
    containers: 
    - image: nginx 
    name: nginx 
    volumeMounts: 
    - mountPath: /usr/share/docroot 
     name: docroot-volume 
    volumes: 
    - name: docroot-volume 
    gitRepo: 
     repository: "[email protected]:me/my-git-repository.git" 

的目錄出現在容器中的/ usr /共享/文檔根目錄/我-混帳存儲庫。這意味着我的容器需要知道我的存儲庫名稱。我不想讓我的容器知道有關存儲庫名稱的任何信息。它應該知道有一個「docroot」,但是已經初始化了。 git存儲庫名稱應該出現的唯一位置在pod規範中。

在Kubernetes中是否有指定git repo卷裝的完整內部路徑?

回答

0

目前沒有本地的方式來做到這一點,但我爲您提交了issue

Under the hood kuberetes只是在emptyDir捲上執行git clone $source,但由於源作爲單個參數傳遞,因此無法指定目標名稱。

Fri, 09 Oct 2015 18:35:01 -0700 Fri, 09 Oct 2015 18:49:52 -0700 90 {kubelet stclair-minion-nwpu}  FailedSync Error syncing pod, skipping: failed to exec 'git clone https://github.com/kubernetes/kubernetes.git k8s': Cloning into 'kubernetes.git k8s'... 
error: The requested URL returned error: 400 while accessing https://github.com/kubernetes/kubernetes.git k8s/info/refs 
fatal: HTTP request failed 
: exit status 128 

在此期間,我能想到的2個選項,以避免對存儲庫名稱的依賴:

  1. 供應庫名稱爲environment variable,然後你就可以從你的容器使用
  2. 修改您的containers command以在繼續之前將存儲庫移至所需的位置
+0

謝謝。我更喜歡第二種方法,因爲這會使圖像無法識別數據的插入方式。這意味着我必須找出並將容器的現有命令複製到我自己的命令中。在pod初始化和pod的常規容器之間運行一次'pod initializer'容器以便管理所有需要的初始化(例如權限修正等)將會很方便。實際上,一系列初始化器會更好。 – Bradley

+0

我相信你所要求的是「預啓動鉤子」,在[這裏]描述(http://kubernetes.io/v1.0/docs/user-guide/container-environment.html#hook-details )。不幸的是,鉤子是一項正在進行中的工作,並且預啓動鉤子尚未實施。 –