如何使用 Kubectl 执行变量替换?

Muh*_*eed 0 kubernetes kubectl

我正在尝试创建一个RoleRoleBinding所以我可以使用 Helm。我想{{namespace}}在运行apply命令时以某种方式使用变量替换来替换某些内容。

kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: tiller-manager-{{namespace}}
  namespace: {{namespace}}
rules:
- apiGroups: ["", "batch", "extensions", "apps"]
  resources: ["*"]
  verbs: ["*"]
Run Code Online (Sandbox Code Playgroud)

我想传递这样的命名空间:

kubectl apply --file role.yaml --namespace foo

我已经看到它kubectl apply有一个--template参数,但我看不到有关如何使用它的太多信息。

Emr*_*ain 5

您可以通过以下方式进行。

  1. Role像这样写文件:

    kind: Role
    apiVersion: rbac.authorization.k8s.io/v1
    metadata:
      name: tiller-manager-${NAMESPACE}
      namespace: ${NAMESPACE}
    rules:
    - apiGroups: ["", "batch", "extensions", "apps"]
      resources: ["*"]
      verbs: ["*"]
    
    Run Code Online (Sandbox Code Playgroud)
  2. NAMESPACE环境变量设置为您想要的值。

  3. 然后使用以下命令创建角色

    envsubst < role.yaml | kubectl apply -f -
    
    Run Code Online (Sandbox Code Playgroud)