作者: Ju4t
构建 kubectl docker 镜像
Kubectl 是 Kubernetes 命令行界面。它允许通过提供广泛的命令来管理 Kubernetes 集群,这些命令允许以友好的方式与 Kubernetes API 进行通信。
FROM alpine:3.8
LABEL maintainer="敬晓兵 <Ju4t@qq.com>"
ARG KUBE_VERSION="v1.23.5"
RUN apk add --update ca-certificates \
&& apk add --update -t deps curl \
&& apk add --update gettext \
&& apk add --update git \
&& curl -L https://storage.googleapis.com/kubernetes-release/release/${KUBE_VERSION}/bin/linux/amd64/kubectl -o /usr/local/bin/kubectl \
&& chmod +x /usr/local/bin/kubectl \
&& apk del --purge deps \
&& rm /var/cache/apk/*
ENTRYPOINT ["kubectl"]
CMD ["--help"]
$ docker build -t ju4t/kubectl:v1.23.5 .
$ buildctl build --frontend dockerfile.v0 --local context=. --local dockerfile=. --output type=image,name=ju4t/kubectl:v1.23.5
$ docker pull kubectl ju4t/kubectl:v1.23.5
$ docker pull ju4t/kubectl:[TAG]
要在此容器中运行命令,您可以使用docker run
,例如要执行kubectl version
,您可以按照以下示例进行操作:
$ docker run --rm --name kubectl ju4t/kubectl:latest
请查阅Kubectl 参考文档以查找可用命令的完整列表。
可以加载您自己的配置,如果您想连接到远程集群:
$ docker run --rm --name kubectl -v ~/.kube/config:/root/.kube/config ju4t/kubectl:latest version
podTemplate(
cloud: 'kubernetes',
namespace: 'devops',
// idleMinutes: 10, // 执行后,释放时间(分)
// imagePullSecrets: ''
containers: [
containerTemplate(name: 'kubectl', image: 'ju4t/kubectl', command: 'cat', ttyEnabled: true)
],
volumes: [
// configMapVolume(configMapName: 'kube-config', mountPath: '/root/.kube/'),
]
) {
node(POD_LABEL) {
stage('运行 Kubectl') {
// 把kube config 文件上传到 凭据 中
withCredentials([file(credentialsId: 'kubeconfig', variable: 'KUBECONFIG')]) {
container('kubectl') {
// sh "mkdir -p ~/.kube && cp ${KUBECONFIG} ~/.kube/config"
sh "kubectl get pod --kubeconfig $KUBECONFIG"
}
}
}
}
}