编译安装cfssl(Alpine Linux)

在部署 K3s高可用etcd 之前,需要先准备用于签发 etcd集群TLS设置 工具 cfssl 。虽然可以用其他发行版提供的 cfssl ,不过,我还是决定在部署 K3s - 轻量级KubernetesAlpine Linux 环境中完整实现Kuberntes,所以先使用 从Dockerfile构建Docker镜像 构建 x-dev 容器,再安装 cfssl 工具。

构建x-dev容器

alpine构建开发环境的Dockerfile
FROM alpine:latest
RUN apk update && apk upgrade
RUN apk add --no-cache openssh sudo bind-tools
RUN apk add --no-cache build-base gdb strace
RUN apk add --no-cache go rust
RUN apk add --no-cache git vim htop
RUN echo 'PasswordAuthentication yes' >> /etc/ssh/sshd_config
RUN adduser -u 502 -G wheel -h /home/huatai -s /bin/sh -D huatai
RUN echo -n 'huatai:some_password_here' | chpasswd
RUN echo '%wheel ALL=(ALL) NOPASSWD: ALL' >> /etc/sudoers
ENTRYPOINT ["/entrypoint.sh"]
EXPOSE 22
COPY entrypoint.sh /
  • 执行以下命令构建镜像并启动容器:

构建alpine开发环境docker容器
docker build -t alpine-dev .
docker run -itd --hostname x-dev --name x-dev -p 122:22 alpine-dev:latest
  • 登陆容器:

    ssh 127.0.0.1 -p 122
    

通过软件仓库安装cfssl

  • Alpine Linux的 community 仓库提供了 cfssl ,但是需要使用 test 分支:

    apk add cfssl --update-cache --repository http://dl-cdn.alpinelinux.org/alpine/edge/testing/ --allow-untrusted
    

通过源代码编译安装cfssl

通过 Alpine Linux软件开发环境构建 安装的 Go Atlas 编译 cfssl 工具链可以验证Go编译环境安装是否正确:

git clone git@github.com:cloudflare/cfssl.git
cd cfssl
make

编译完成后在 bin 目录下有以下执行文件:

bin
├── cfssl
├── cfssl-bundle
├── cfssl-certinfo
├── cfssl-newkey
├── cfssl-scan
├── cfssljson
├── mkbundle
├── multirootca
└── rice

参考