kubectl 镜像 Dockerfile

作者: Ju4t

构建 kubectl docker 镜像

什么是kubectl

Kubectl 是 Kubernetes 命令行界面。它允许通过提供广泛的命令来管理 Kubernetes 集群,这些命令允许以友好的方式与 Kubernetes API 进行通信。

Dockerfile

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构建镜像

$ docker build -t ju4t/kubectl:v1.23.5 .

container构建镜像

$ 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 环境运行

docker 运行

要在此容器中运行命令,您可以使用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

Jenkins && k8s 环境运行

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"
                }
            }
        }
    }
}