构建基于nodejs能够连接k8s集群的docker基础镜像

构建基于 nodejs 能够连接 aws eks 集群的 docker 基础镜像

背景

想要从 gitlab 上通过 gitlab-ci 自动构建并推送到 aws eks 集群上,需要能够从 ci 上直接执行 aws 命令。

支持连接多套集群,例如腾讯云 tke 和 aws eks。

构建镜像

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
FROM node:18.16-alpine

RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories

RUN apk add -U --no-cache tzdata curl docker rsync openssh-client alpine-sdk build-base libffi-dev openssl-dev execline zip coreutils
RUN apk add --no-cache aws-cli

RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN echo "Asia/Shanghai" >/etc/timezone

RUN npm install pnpm -g --unsafe-perm

# 安装kubectl
COPY ./kubectl /usr/local/bin/kubectl
RUN chmod +x /usr/local/bin/kubectl
COPY ./kubectl-config /.kube/config
ENV KUBECONFIG=$KUBECONFIG:/.kube/config

# aws账号
COPY ./aws/config /.aws/config
COPY ./aws/credentials /.aws/credentials
ENV AWS_CONFIG_FILE=/.aws/config
ENV AWS_SHARED_CREDENTIALS_FILE=/.aws/credentials

CMD ["node"]

注意点

kubectl-config 文件需要将多套集群的配置合到一起,然后使用 kubectl config use-context xxx 切换配置连接集群。

aws 除了使用配置文件,还需要运行容器内用 aws-cli 的命令来连接集群,需要把 集群证书页一并放在镜像里。


构建基于nodejs能够连接k8s集群的docker基础镜像
https://www.wobushi.top/2024/构建基于nodejs能够连接aws-eks集群的docker基础镜像/
作者
Pride Su
发布于
2024年8月22日
许可协议