Files
shellscripts/install-nerdctl.yaml
Your Name b00f025742 update
2024-11-12 00:07:46 +08:00

97 lines
4.8 KiB
YAML

apiVersion: crd.chenshaowen.com/v1
kind: Task
metadata:
name: install-nerdctl
namespace: ops-system
spec:
typeRef: cluster
desc: install nerdctl tool in specified host
variables:
proxy:
default: https://mirror.ghproxy.com/
version:
default: 1.7.6
arch:
default: amd64
nydus_version:
default: 2.2.4
nydus_rpcversion:
default: 0.13.4
nydus_os:
default: linux
steps:
- name: Check nerdctl
content: |
if [ -x "$(command -v nerdctl)" ]; then
echo "nerdctl is already installed"
exit 1
fi
- name: Install NVIDIA Docker
content: |
sudo apt-get update
sudo apt-get install -y curl gnupg lsb-release
if ! grep -q "^deb .\+nvidia-container-toolkit" /etc/apt/sources.list /etc/apt/sources.list.d/*; then
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
&& curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
else
echo "NVIDIA Docker 源已经配置,跳过此步骤。"
fi
sudo apt-get update
sudo apt-get install -y nvidia-container-toolkit
- name: Download nerdctl
content: wget ${proxy}https://github.com/containerd/nerdctl/releases/download/v${version}/nerdctl-full-${version}-linux-${arch}.tar.gz
- name: Extract
content: sudo tar -xvf nerdctl-full-${version}-linux-${arch}.tar.gz -C /usr/local
- name: Move and Setup nerdctl as docker
content: |
cat << 'EOF' | sudo tee /usr/local/bin/docker
#!/bin/bash
/usr/local/bin/nerdctl $@
EOF
sudo chmod +x /usr/local/bin/docker
- name: Setup Bash Completion
content: |
sudo apt install bash-completion -y
sudo nerdctl completion bash | sudo tee /etc/bash_completion.d/nerdctl > /dev/null
sudo nerdctl completion bash | sudo tee /etc/bash_completion.d/docker > /dev/null
sudo chown root:containerd /etc/bash_completion.d/nerdctl
sudo chmod 755 /etc/bash_completion.d/nerdctl
sudo chown root:containerd /etc/bash_completion.d/docker
sudo chmod 755 /etc/bash_completion.d/docker
echo ". /etc/bash_completion.d/nerdctl" >> ~/.bashrc
echo ". /etc/bash_completion.d/docker" >> ~/.bashrc
- name: Setup Nerdctl Rootless
content: |
/usr/local/bin/containerd-rootless-setuptool.sh install
/usr/local/bin/containerd-rootless-setuptool.sh install-buildkit
privileged: false
- name: Install Nydus
content: |
wget ${proxy}https://github.com/dragonflyoss/nydus/releases/download/v${nydus_version}/nydus-static-v${nydus_version}-${nydus_os}-${arch}.tgz
tar -xzf nydus-static-v${nydus_version}-${nydus_os}-${arch}.tgz
rm -rf nydus-static/configs
mv -f nydus-static/* /usr/local/bin/
rm -rf nydus-static-v${nydus_version}-${nydus_os}-${arch}.tgz nydus-static
wget ${proxy}https://github.com/containerd/nydus-snapshotter/releases/download/v${nydus_rpcversion}/nydus-snapshotter-v${nydus_rpcversion}-x86_64.tgz
tar -xzf nydus-snapshotter-v${nydus_rpcversion}-x86_64.tgz
mv -f nydus-snapshotter/* /usr/local/bin/
rm -rf nydus-snapshotter-v${nydus_rpcversion}-x86_64.tgz nydus-snapshotter
- name: Configure containerd
content: |
sudo mkdir -p /etc/containerd
containerd config default | sudo tee /etc/containerd/config.toml
sudo sed -i '/\[plugins."io.containerd.grpc.v1.cri".registry.configs\]/a \\t[plugins."io.containerd.grpc.v1.cri".registry.configs."docker.io".tls]\n\t\tinsecure_skip_verify = true' /etc/containerd/config.toml
sudo sed -i '/\[plugins\]/a \\t[plugins."io.containerd.grpc.v1.cri".containerd]\n\t\tdefault_runtime_name = "runc"\n\t\tignore_rdt_not_enabled_errors = false\n\t\tno_pivot = false\n\t\tdiscard_unpacked_layers = false\n\t\tdisable_snapshot_annotations = false\n\t\tsnapshotter = "nydus"' /etc/containerd/config.toml
sudo sed -i '/\[proxy_plugins\]/a \\t[proxy_plugins.nydus]\n\t\ttype = "snapshot"\n\t\taddress = "/run/containerd-nydus/containerd-nydus-grpc.sock"' /etc/containerd/config.toml
sudo containerd config dump | sudo tee /etc/containerd/config.toml
sudo nvidia-ctk runtime configure --runtime=containerd
sudo systemctl restart containerd
- name: make etc dir
content: sudo mkdir -p /etc/nerdctl
- name: config
content: echo 'namespace = "k8s.io"' > /etc/nerdctl/nerdctl.toml
- name: Version
content: nerdctl --version