apt install -y docker.io nginx
cat <<EOF> /etc/docker/daemon.json
{
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "overlay2"
}
EOF
systemctl enable docker
systemctl start docker
curl -s -L https://github.com/docker/compose/releases/download/1.24.1/docker-compose-Linux-x86_64 -o /usr/local/bin/docker-compose
[[ $(sha256sum /usr/local/bin/docker-compose|cut -d" " -f1) == "cfb3439956216b1248308141f7193776fcf4b9c9b49cbbe2fb07885678e2bb8a" ]] || echo "checksum validation failed"
chmod 755 /usr/local/bin/docker-compose
ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
See k8s/Nginx
cat <<'EOF'> /etc/nginx/sites-available/reg.conf
server {
listen 80;
server_name reg.example.com;
root /var/www;
location /.well-known/acme-challenge {
root /var/www/acme;
}
location / {
return 301 https://reg.example.com$request_uri;
}
}
EOF
ln -s /etc/nginx/sites-available/reg.conf /etc/nginx/sites-enabled/reg.conf
Get Certificates:
groupadd acme
useradd -m -g acme -s /bin/bash acme
curl -s https://raw.githubusercontent.com/Neilpang/acme.sh/2.8.3/acme.sh >/home/acme/acme.sh
chmod 755 /home/acme/acme.sh
sudo -i -u acme /home/acme/acme.sh --install
echo "acme ALL=(ALL) NOPASSWD: /bin/systemctl restart nginx" > /etc/sudoers.d/20-acme
chmod 440 /etc/sudoers.d/20-acme
mkdir /var/www/acme /etc/acme
chown acme:acme /var/www/acme /etc/acme
chmod 750 /etc/acme
sudo -i -u acme /bin/bash -c '~/.acme.sh/acme.sh --issue -d reg.example.com -w /var/www/acme'
sudo -i -u acme /bin/bash -c '~/.acme.sh/acme.sh --install-cert -d reg.example.com --key-file /etc/acme/reg.key --fullchain-file /etc/acme/reg.pem --reloadcmd "sudo systemctl restart nginx"'
Download the Online Installer:
wget https://storage.googleapis.com/harbor-releases/release-1.9.0/harbor-online-installer-v1.9.0.tgz
[[ $(md5sum harbor-online-installer-v1.9.0.tgz|cut -d" " -f1) == "197273c3f181d5bd56749bec1987f4d9" ]] || echo "checksum validation failed"
tar xfvz harbor-online-installer-v1.9.0.tgz
Change harbor.yml:
hostname: reg.example.com
http:
port: 8080
https:
port: 443
certificate: /etc/acme/reg.pem
private_key: /etc/acme/reg.key
Run the install script:
./install.sh --with-notary --with-clair
First create a robot account and copy the access token.
Now create the secret:
kubectl create secret docker-registry regcred --docker-server=<server> --docker-username='robot$<user>' --docker-password=<token>
OR:
user='robot$<username>'
pass=<token>
srv=<server>
cat <<EOF> regcred.yaml
apiVersion: v1
kind: Secret
metadata:
name: regcred
data:
.dockerconfigjson: $(echo -n '{"auths":{"'$srv'":{"username":"'$user'","password":"'$pass'","auth":"'$(echo -n $user':'$pass|base64 -w0)'"}}}'|base64 -w0)
type: kubernetes.io/dockerconfigjson
EOF
unset user pass srv