gpt4 book ai didi

linux - Makefile运行导出环境时出现问题

转载 作者:行者123 更新时间:2023-12-02 12:01:21 25 4
gpt4 key购买 nike

我创建了一个Makefile固定的路径中导出kubeconfig,例如:

myproj
- .kube //folder
config //file which contain the config
- Makefile. //same level as .kube folder

现在,当我从终端运行 时,它可以正常工作,这意味着如果我运行kubectl get ns,我会得到结果,这意味着它成功配置了 !
export KUBECONFIG=/Users/i33333/projects/app-test/v-app/.kube/config

我已经创建了一个makefile目标,如下所示
kube-cfg:
export KUBECONFIG=$(PWD)/.kube/config

当执行目标时,我会在终端中看到
export KUBECONFIG=/Users/i33333/projects/app-test/v-app/.kube/config

与手动执行的完全相同,但是当我运行kubectl get ns

我收到错误消息:
error: no configuration has been provided, try setting KUBERNETES_MASTER environment variable

我不明白为什么从makefile
中运行它时 剂量有效,而当我从终端手动运行时它为何起作用?任何的想法
我尝试更改和使用$(CURRDIR)这也无济于事

更新

我试过像建议的那样不起作用
KUBECONFIG=$(PWD)/.kube/config


kube-cfg:
export $(KUBECONFIG)

更新2

如果我这样做
KUBECONFIG := $(PWD)/kube/config.yaml
tgt1:
@export KUBECONFIG=$(KUBECONFIG) && kubectl get ns

运行生成文件tgt1:时,我能够看到ns ,但是
如果现在我想从终端kubectl get ns运行它,我将得到相同的错误信息'错误:未提供配置,请尝试设置KUBERNETES_MASTER环境变量,我想从makefile 中进行配置

最佳答案

问题是makefile配方会创建新的环境,该环境会在完成配方后销毁。

如果要在调用make之后使用kubernetes工具,则在您的方案中更合适的工具是使用source命令。它适用于您当前的环境中在脚本中作为参数传递的所有更改:

$ source setupenv.sh
$ kubectl get ns # should be no problem
$ make someting # even using kubectl inside make shouldn't be a problem

但是,如果要在make脚本中使用kubectl,请创建以下内容:
recipe :
source setupenv.sh && kubectl get ns
# or
recipe2 :
export KUBECONFIG=$(PWD)/.kube/config && kubectl get ns

更新:

我认为配置文件是一个脚本。因此,您应该准备shell脚本设置环境,例如 setupenv.sh:
#!/bin/bash
export KUBECONFIG=$(PWD)/.kube/config

关于linux - Makefile运行导出环境时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61590236/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com