Docker 構建 kubectl 映象

你個大豬蹄子發表於2021-01-04

假如程式服務是使用 k8s 整合 gitlab ci/cd 方式部署的,在 gitlab-ci 過程中就需要用到 kubeclt 映象
使用 docker 構建 kubectl 映象有兩種方式

方式一 (映象相對較小一點,45.8M左右)

在 Linux 上使用 curl 安裝 kubectl 可執行檔案

cd /usr/local/bin

curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.20.1/bin/linux/amd64/kubectl

chmod +x ./kubectl

詳細參考 官方安裝文件

接下來在 /usr/local/bin 目錄下新建 Dockerfile 檔案,寫入內容如下

FROM alpine:latest

COPY kubectl /usr/local/bin/

RUN chmod +x /usr/local/bin/kubectl

Dockerfile 檔案建好後,在同目錄下執行構建命令

docker build -t registry.cn-hangzhou.aliyuncs.com/sanchar/kubectl:v1.20.1 .

等待映象構建完成

方式二(映象相對大一些,48.9M左右)

此方式相對方便一些,不過構建比較慢,構建過程中需要下載 kubectl 可執行檔案
直接新建 Dockerfile 檔案,寫入內容如下

FROM alpine:latest

RUN apk add --update -t deps curl

RUN curl -L https://storage.googleapis.com/kubernetes-release/release/v1.20.1/bin/linux/amd64/kubectl -o /usr/local/bin/kubectl \
    && chmod +x /usr/local/bin/kubectl

RUN apk del --purge deps \
    && rm /var/cache/apk/*

在同目錄下執行構建命令

docker build -t registry.cn-hangzhou.aliyuncs.com/sanchar/kubectl:v1.20.1 .

最後

1、測試構建的映象是否可以正常使用

docker run -it registry.cn-hangzhou.aliyuncs.com/sanchar/kubectl:v1.20.1 kubectl version --client

輸出內容如下即構建的映象可以正常使用

Client Version: version.Info{Major:"1", Minor:"20", GitVersion:"v1.20.1", GitCommit:"c4d752765b3bbac2237bf87cf0b1c2e307844666", GitTreeState:"clean", BuildDate:"2020-12-18T12:09:25Z", GoVersion:"go1.15.5", Compiler:"gc", Platform:"linux/amd64"}

2、從Registry中拉取映象

docker pull registry.cn-hangzhou.aliyuncs.com/sanchar/kubectl:v1.20.1

3、將映象推送到Registry,[ImageId] 替換成對應的映象ID

docker login --username=使用者名稱 registry.cn-hangzhou.aliyuncs.com

docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/sanchar/kubectl:v1.20.1

docker push registry.cn-hangzhou.aliyuncs.com/sanchar/kubectl:v1.20.1

相關文章