如何使用github操作将环境变量传递给kubernetes yaml部署文件?

js81xvg6  于 2022-11-28  发布在  Kubernetes
关注(0)|答案(1)|浏览(209)

你好,我正在使用github操作部署kubernetes yaml文件。例如,我有下面的部署yaml文件

apiVersion: apps/v1
kind: Deployment 
metadata: #Dictionary
  name: cepgateway
  namespace: "#{KUBERNETES_NAMESPACE}#"

在github操作中,我有不同的任务,比如deploytodev,deploytotest等等。
在deploytodev中,我设置了如下env变量

Deploy-Dev: 
    runs-on: 'ubuntu-latest'
    environment: 'Dev'
    env:
      KUBERNETES_NAMESPACE: cep-dev

我已经将KUBERNETES_NAMESPACE设置为某个值,并尝试在我的部署中访问yaml
名称空间:"#{KUBERNETES_NAMESPACE} #"
这不起作用并引发错误

from server for: "Kubernetes/ingress.yml": ingresses.networking.k8s.io "cep-ingress" is forbidden: User "system:serviceaccount:serviceaccounts:cep-ci-sa" cannot get resource "ingresses" in API group "networking.k8s.io" in the namespace "#{KUBERNETES_NAMESPACE}#"

我可以知道这是正确的方法吗?有人能帮我解决这个问题吗?任何帮助都将不胜感激。谢谢

ebdffaop

ebdffaop1#

您可以将envsubst命令与kubectl apply步骤结合使用,例如:
namespace.yaml

apiVersion: apps/v1
kind: Deployment 
metadata: #Dictionary
  name: cepgateway
  namespace: ${K8S_NAMESPACE}

然后

export K8S_NAMESPACE="cep-dev"

所以

envsubst < namespace.yaml

将打印:

apiVersion: apps/v1
kind: Deployment
metadata: #Dictionary
  name: cepgateway
  namespace: cep-dev

在GitHub Action中将其组合为如下所示:

jobs:
  Deploy-Dev:
    runs-on: 'ubuntu-latest'
    environment: 'Dev'
    env:
      KUBERNETES_NAMESPACE: cep-dev
    steps:
        run: |
          envsubst < namespace.yaml | kubectl apply -f -

相关问题