将常量传递给支架

pass constant to skaffold

我正在尝试在 skaffold 中使用常量,并在 skaffold 配置文件中访问它:

示例export SOME_IP=199.99.99.99 && skaffold run -p dev

skaffold.yaml

...
deploy:
  helm:
    flags:
      global:
      - "--debug" 
    releases:
    - name: ***
      chartPath: ***
      imageStrategy:
        helm:
          explicitRegistry: true
      createNamespace: true
      namespace: "***"
      setValueTemplates:
        SKAFFOLD_SOME_IP: "{{.SOME_IP}}"

在 dev.yaml 配置文件中,我需要以某种方式访问​​它,
类似于:
{{ .Template.SKAFFOLD_SOME_IP }} 应该呈现为 199.99.99.99

我尝试使用 skaffold envTemplatesetValueTemplates 字段,但无法成功,并且在网络上找不到任何示例

要使用您在 skaffold.yaml 中设置的 SKAFFOLD_SOME_IP 变量,您可以像这样为 Kubernetes 部署编写图表 template

apiVersion: apps/v1
kind: Deployment
metadata:
  name: {{ .Chart.Name }}
  labels:
    app: {{ .Chart.Name }}
spec:
  selector:
    matchLabels:
      app: {{ .Chart.Name }}
  replicas: {{ .Values.replicaCount }}
  template:
    metadata:
      labels:
        app: {{ .Chart.Name }}
    spec:
      containers:
      - name: {{ .Chart.Name }}
        image: {{ .Values.image }}
        env:
        - name: SKAFFOLD_SOME_IP
          value: "{{ .Values.SKAFFOLD_SOME_IP }}"

这将为 Kubernetes pods 创建一个环境变量 SKAFFOLD_SOME_IP。您可以使用 'go' 访问它,例如,像这样:

os.Getenv("SKAFFOLD_SOME_IP")

基本上找到了一个我真的不喜欢的解决方案,但它有效:

dev 配置文件中:values.dev.yaml 我添加了一个占位符

  _anchors_:
    - &_IPAddr_01 "<IPAddr_01_TAG>" # will be replaced with SOME_IP

将替换为 const SOME_IP 将变为 199.99.99.99 在脚手架 运行

现在 运行 脚手架我会做:

export SOME_IP=199.99.99.99
sed -i "s/<IPAddr_01_TAG>/$SOME_IP/g" values/values.dev.yaml
skaffold run -p dev

所以在上面的sed之后,在dev配置文件中:values.dev.yaml,我们会看到SOME_IP const 而不是占位符

  _anchors_:
    - &_IPAddr_01 "199.99.99.99"