97 lines
4.8 KiB
YAML
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
|