Привет, я развертываю файлы kubernetes yaml, используя действия github. Например, у меня есть файл развертывания 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}#"
Могу ли я узнать, правильно ли я следую этому пути? Может ли кто-нибудь помочь мне исправить это. Любая помощь будет оценена по достоинству. Спасибо
вы можете использовать команду 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 будет выглядеть примерно так:
jobs:
Deploy-Dev:
runs-on: 'ubuntu-latest'
environment: 'Dev'
env:
KUBERNETES_NAMESPACE: cep-dev
steps:
run: |
envsubst < namespace.yaml | kubectl apply -f -