首页 > 解决方案 > kubectl 在 bash 脚本中使用内联选项而不是 yaml 文件创建

问题描述

我想将下面的行转换为作为 bash 脚本运行,以便我可以使用 jenkins 作业调用它。

kubectl create -f tiller-sa-crb.yaml

分蘖-sa-crb.yaml 如下。如何在 bash 脚本中转换我的上述命令。这样我的詹金斯工作调用 ./tiller-sa-crb.sh 并且它在下面完成。基本上,我的最终目标是拥有一个纯 shell 脚本并在 jenkins 工作中调用它。

apiVersion: v1
  kind: ServiceAccount
  metadata:
    name: tiller
    namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
   name: tiller
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- kind: ServiceAccount
  name: tiller
  namespace: kube-system

标签: bashkubernetesjenkins-pipelinekubectlkubernetes-helm

解决方案


您还可以使用 stdin 来创建 kubectl create 命令,如下所示:

#!/usr/bin/env bash

cat <<EOF | kubectl create -f -
apiVersion: v1
  kind: ServiceAccount
  metadata:
    name: tiller
    namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
   name: tiller
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- kind: ServiceAccount
  name: tiller
  namespace: kube-system
EOF

推荐阅读