【问题标题】:Use relative paths in Kubernetes config在 Kubernetes 配置中使用相对路径
【发布时间】:2018-04-16 22:49:20
【问题描述】:

目标是使用 Kubernetes 编排生产环境和本地开发环境。问题是 hostPath 不适用于相对路径值。这导致每个开发人员机器上的配置文件略有不同,以适应不同的项目位置(即"/my/absolute/path/to/the/project"):

apiVersion: v1
kind: Service
metadata:
  name: some-service
  labels:
    app: app
spec:
  type: LoadBalancer
  ports:
  - port: 80
  selector:
    app: app
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: some-deploy
spec:
  selector:
    matchLabels:
      app: app
  replicas: 1
  template:
    metadata:
      labels:
        app: app
    spec:
      containers:
      - name: app
        image: nginx:1.13.12-alpine
        ports:
        - containerPort: 80
        volumeMounts:
        - name: vol_example
          mountPath: /var/www/html
      volumes:
        - name: vol_example
          hostPath:
            path: "/my/absolute/path/to/the/project"
            type: Directory

如何在 Kubernetes 配置文件中使用相对路径?变量替换(例如$(PWD)/project)已经尝试过了,但似乎没有用。如果配置变量可以与卷一起使用,这可能会有所帮助,但不确定如何实现这一点。

【问题讨论】:

  • 你可以通过this
  • hostPath 也不能在多节点集群上工作。您绝对应该检查网络存储选项。
  • 谢谢@Aditya,您能否将使用情境化为答案?
  • 感谢@Flowkap,但这仍然无法解决不同开发机器上的不同路径。
  • @Peter 拥有一个用于开发和生产的配置文件是一回事,但为每个从事该项目的开发人员拥有不同的配置文件是另一回事。对于初学者来说,每个开发人员可能有不同的用户名,即“/home/myname/project/app”,因此将此文件存储在版本控制中会出现问题。如果它是相对于项目目录的,即“./app”,它可以缓解这一点。这是否有助于阐明问题?

标签: kubernetes


【解决方案1】:

如前所述 here kubectl 永远不会支持变量替换。

您可以为您的应用 (yaml) 创建一个helm 图表。它支持 yaml 模板变量(以及其他各种功能)。因此,您将能够基于开发或生产传递hostPath 参数。

【讨论】:

  • 这个答案应该确实提供了一个 Helm 图表,可以解决给定配置的 OPs 问题...
猜你喜欢
  • 1970-01-01
  • 2016-01-21
  • 2010-09-11
  • 1970-01-01
  • 2014-04-27
  • 1970-01-01
  • 1970-01-01
  • 2023-03-04
  • 1970-01-01
相关资源
最近更新 更多