0

我有一個帶有多個不同名稱空間的gke集羣。我想能夠有效地命名空間我的圖像與我的其他資源命名空間相同的方式。也就是說,我希望不同命名空間中的pod能夠使用相同的名稱引用圖像,但是要根據它們所處的命名空間來獲取不同的圖像。實現此目的的一種方法(如果支持的話)可能是替代命名空間的名稱到圖像名稱中YML,如:k8s/gke/gcr - 將圖像範圍擴展到命名空間

containers: 
- image: eu.gcr.io/myproject/$(NAMESPACE)-myimage 
    name: myimage 

然後,我可以推eu.gcr.io/myproject/mynamespace-myimage讓我的圖像提供給命名空間mynamespace

有沒有什麼乾淨的方法來實現這種事情。如果沒有,並且由於我一直無法找到其他人提出類似的問題,有沒有什麼方法可以使這種情況變得糟糕?

+0

爲什麼downvote? – Tom

回答

1

我不認爲這是可能的。 Kubernetes支持commandargs等字段的擴展。這允許您使用容器的env字段中設置的變量(可以來自configmap/secret)使用替換。示例:https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#use-environment-variables-to-define-arguments

但是,我不認爲可變擴展適用於image字段。 :(

什麼你正在試圖做的似乎不是一個好主意:在多種環境具有不同的圖像違背了測試/開發環境的目的

相反,你應該應該使用相同的。圖像在所有平臺上測試,通過改變env vars,configMaps等。

+0

聽起來好像我沒有以正確的方式思考事情,因爲我對不同名稱空間的目標是自成一體dev環境,我想爲命名空間的圖像,以便他們可以部署他們(開發,沒有提交)鱈魚e分開。也許我應該使用不同的方式來部署代碼,而不是使用它來構建圖像。不管怎樣,不管這個用例是否適用於單獨的命名空間,因爲這些文檔對於不需要或不需要使用命名空間的小型團隊來說。 – Tom