👤
Novice Handbook
  • Novice Handbook
  • Guide
  • Internet และ Web
    • HTML
  • Computer Language
    • Basic Computer Language (LV.1)
    • C Language (LV.1)
    • Python3 (LV.1)
  • Operating System
    • Linux
      • Basic Linux (LV.1)
  • TOOLS
    • Text Editor
      • Vim Editor
    • Source Control
      • GitLab
        • GitLab for small site (LV.1)
    • Container
      • Docker
        • Docker (LV.1)
        • Docker (LV.2)
      • Kubernetes
        • Kubernetes Intro (LV.0)
        • Kubernetes Basic (LV.1)
        • Kubernetes Intermediate (LV.2)
        • Helm (LV.2)
        • RKE2 (LV.3)
        • K3S (LV.3)
        • K3D (LV.3)
    • Repository
      • Harbor
        • Harbor for small site (LV.1)
        • Harbor for enterprise (LV.2)
    • Database
      • Redis
        • Redis on Docker Compose (LV.1)
        • Redis on Kubernetes (LV.2)
      • Elastic Stack
        • Elasticsearch & Kibana for small site (LV.1)
    • Observability
      • Prometheus
        • Prometheus for small site (LV.1)
        • Prometheus Operator (LV.2)
    • Security
      • Certbot (LV.1)
      • Falco
      • Hashicorp Vault
    • Collaboration
      • Nextcloud
Powered by GitBook
On this page
  • Architecture
  • Pre-Requisite
  • Setup
  • Install docker engine
  • (Optional) Install Docker-compose
  • Set GPG key
  • Prepare Server SSL certificate
  • Download harbor package
  • Config Harbor YAML file
  • Install
  • Test
  • Reconfigure
  • Uninstall & Remove all data
  • การใช้ backend ของ container image เป็น S3

Was this helpful?

  1. TOOLS
  2. Repository
  3. Harbor

Harbor for small site (LV.1)

Architecture

1 VM & no HA

Pre-Requisite

Server minimum requirement

CPU: 2 vCPUs
Memory: 4GB
Disk: 40GB
OS: Ubuntu

Firewall requirement

port 80 & 443

Setup

Install docker engine

apt update && apt install -y docker.io

(Optional) Install Docker-compose

ใน Ubuntu version เก่า package ของ docker engine จะ version เก่าไป ซึ่งจะยังไม่มี docker compose build-in ติดมา จึงต้องติดตั้งเอง

sudo curl -SL https://github.com/docker/compose/releases/download/v2.29.6/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

Set GPG key

gpg --keyserver hkps://keyserver.ubuntu.com --receive-keys 644FF454C0B4115C

Prepare Server SSL certificate

เตรียม certificate ที่จะให้ harbor ใช้งาน เช่น จด cert จาก Let's Encrypt ด้วย certbot หรือซื้อ cert จาก trusted CA

Download harbor package

download package จากเว็บ github release

online package สำหรับกรณีทั่วไป offline package สำหรับ site ที่ไม่สามารถออก internet ได้หรือมีความเร็ว internet ที่ต่ำ

wget https://github.com/goharbor/harbor/releases/download/v2.11.1/harbor-offline-installer-v2.11.1.tgz
tar xzvf harbor-*.tgz

Config Harbor YAML file

cd harbor
cp -p harbor.yml.tmpl harbor.yml
vi harbor.yml

แก้ไข yaml ดังนี้

harbor.yml
hostname: ใส่ชื่อ subdomain name ที่จะให้ harbor ใช้
https:
  certificate: ใส่ path ที่เก็บ cert ที่จะให้ harbor ใช้
  private_key: ใส่ path ที่เก็บ private key ที่เข้าคู่กับ cert
harbor_admin_password: ใส่ password ของ user admin

Install

mkdir -p /var/log/harbor/
sudo ./install.sh

Test

เปิดเว็บ browser แล้วระบุ url ตามที่ set ใน hostname

Reconfigure

execute install script อีกรอบ เช่น add trivy โดยการ execute command ร่วมกับ option --with-trivy

sudo ./install.sh --with-trivy

Uninstall & Remove all data

sudo docker-compose down -v

การใช้ backend ของ container image เป็น S3

ในตัวอย่างนี้ เราจะใช้ AWS S3 เป็นพื้นที่เก็บ image แทน local storage ซึ่งจะช่วยป้องกันเรื่อง data loss ได้ ในกรณีเช่น VM พัง หรือ filesystem corrupt

สร้าง policy ซึ่งมี content ดังนี้

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "S3",
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:ListMultipartUploadParts",
                "s3:ListBucketMultipartUploads",
                "s3:ListBucket",
                "s3:GetObject",
                "s3:GetBucketLocation",
                "s3:DeleteObject",
                "s3:AbortMultipartUpload"
            ],
            "Resource": [
                "arn:aws:s3:::novice-solutions-example/*",
                "arn:aws:s3:::novice-solutions-example"
            ]
        }
    ]
}

อย่างลืมเปลี่ยนชื่อ bucket ใน policy เป็นของตัวเอง

สร้าง user สำหรับเป็น service account ขึ้นใน AWS IAM user และ map policy

สร้าง access key และ secret key

config ใน harbor.yml เพิ่ม ดังนี้

storage_service:
  s3:
    accesskey: xxxx
    secretkey: yyyy
    region: ap-southeast-1
    bucket: novice-solutions-example

หลังจากนั้นสั่งคำสั่งเพื่อ generate compose ใหม่

sudo ./prepare --with-trivy
sudo docker-compose up -d
PreviousHarborNextHarbor for enterprise (LV.2)

Last updated 7 months ago

Was this helpful?

https://github.com/goharbor/harbor/releases