暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

私有镜像仓库:Harbor简单安装部署示例,存储使用阿里云OSS

运维笔谈 2024-10-14
442

点击上方蓝字 “运维笔谈”,对话回复“阿里云k8s”可以获取《阿里云Kubernetes项目实战手册》PDF。

本文参考部署的方法是使用docker-compose创建,此方法简单快速,就是高可用方面欠缺,建议非生产环境使用。

一、环境准备:

Harbor使用版本:harbor-offline-installer-v2.0.2.tgz(以2.02的离线版为例,最新的2.11也大差不差)

二、下载链接:

https://github.com/goharbor/harbor/releases/download/v2.0.2/harbor-offline-installer-v2.0.2.tgz

三、软件要求:

docker 版本17.06.0-ce+ 和 docker-compose 版本1.18.0+

四、服务器硬件要求:

服务器最低要求2核4G内存,40G磁盘。

五、搭建步骤:

1.安装docker,yum添加docker.repo

    [docker]
    baseurl = https://mirrors.aliyun.com/docker-ce/linux/centos/7/$basearch/stable
    enabled = 1
    gpgcheck = 1
    gpgkey = https://mirrors.aliyun.com/docker-ce/linux/centos/gpg
    name = Docker CE Stable - $basearch

    安装docker

      sudo yum install docker-ce -y


      sudo systemctl enable docker && sudo systemctl start docker

      2.安装docker-compose

        sudo curl -L "https://github.com/docker/compose/releases/download/1.26.0/docker-compose-$(uname -s)-$(uname -m)" -o usr/local/bin/docker-compose


        sudo chmod +x usr/local/bin/docker-compose

        3.解压harbor文件到/usr/local/

          sudo tar xvf harbor-offline-installer-v2.0.2.tgz -C usr/local/

          4.编辑 harbor.yml

            cd usr/local/harbor
            cp harbor.yml.tmpl harbor.yml

            修改harbor.yml

              # Configuration file of Harbor


              # The IP address or hostname to access admin UI and registry service.
              # DO NOT use localhost or 127.0.0.1, because Harbor needs to be accessed by external clients.
              #hostname: reg.mydomain.com
              hostname: registry.test.com


              # http related config
              http:
              # port for http, default is 80. If https enabled, this port will redirect to https port
              port: 80


              # https related config
              #https:
              # https port for harbor, default is 443
              # port: 443
              # The path of cert and key files for nginx
              # certificate: your/certificate/path
              # private_key: your/private/key/path


              # # Uncomment following will enable tls communication between all harbor components
              # internal_tls:
              # # set enabled to true means internal tls is enabled
              # enabled: true
              # # put your cert and key files on dir
              # dir: etc/harbor/tls/internal


              # Uncomment external_url if you want to enable external proxy
              # And when it enabled the hostname will no longer used
              # external_url: https://reg.mydomain.com:8433


              # The initial password of Harbor admin
              # It only works in first time to install harbor
              # Remember Change the admin password from UI after launching Harbor.
              harbor_admin_password: xxxxxxx


              # Harbor DB configuration
              database:
              # The password for the root user of Harbor DB. Change this before any production use.
              password: root123
              # The maximum number of connections in the idle connection pool. If it <=0, no idle connections are retained.
              max_idle_conns: 50
              # The maximum number of open connections to the database. If it <= 0, then there is no limit on the number of open connections.
              # Note: the default number of connections is 100 for postgres.
              max_open_conns: 100


              # The default data volume
              data_volume: /data
              #data_volume:
              # Harbor Storage settings by default is using data dir on local filesystem
              # Uncomment storage_service setting If you want to using external storage
              # # ca_bundle is the path to the custom root ca certificate, which will be injected into the truststore
              # # of registry's and chart repository's containers. This is usually needed when the user hosts a internal storage with self signed certificate.
              # ca_bundle:
              storage_service:
              # ca_bundle:
              oss:
              accesskeyid: xxxxxx
              accesskeysecret: xxxxxxx
              region: oss-cn-xxxxx-internal.aliyuncs.com
              endpoint: harbor-aliyun.oss-cn-xxxxx-internal.aliyuncs.com
              # internal: true
              bucket: harbor-aliyun
              # redirect:
              # disable: false
              # # storage backend, default is filesystem, options include filesystem, azure, gcs, s3, swift and oss
              # # for more info about this configuration please refer https://docs.docker.com/registry/configuration/
              # filesystem:
              # maxthreads: 100
              # # set disable to true when you want to disable registry redirect
              # redirect:
              # disabled: false


              # Clair configuration
              clair:
              # The interval of clair updaters, the unit is hour, set to 0 to disable the updaters.
              updaters_interval: 12


              # Trivy configuration
              trivy:
              # ignoreUnfixed The flag to display only fixed vulnerabilities
              ignore_unfixed: false
              # skipUpdate The flag to enable or disable Trivy DB downloads from GitHub
              #
              # You might want to enable this flag in test or CI/CD environments to avoid GitHub rate limiting issues.
              # If the flag is enabled you have to manually download the `trivy.db` file and mount it in the
              # home/scanner/.cache/trivy/db/trivy.db path.
              skip_update: false
              #
              # insecure The flag to skip verifying registry certificate
              insecure: false
              # github_token The GitHub access token to download Trivy DB
              #
              # Trivy DB contains vulnerability information from NVD, Red Hat, and many other upstream vulnerability databases.
              # It is downloaded by Trivy from the GitHub release page https://github.com/aquasecurity/trivy-db/releases and cached
              # in the local file system (/home/scanner/.cache/trivy/db/trivy.db). In addition, the database contains the update
              # timestamp so Trivy can detect whether it should download a newer version from the Internet or use the cached one.
              # Currently, the database is updated every 12 hours and published as a new release to GitHub.
              #
              # Anonymous downloads from GitHub are subject to the limit of 60 requests per hour. Normally such rate limit is enough
              # for production operations. If, for any reason, it's not enough, you could increase the rate limit to 5000
              # requests per hour by specifying the GitHub access token. For more details on GitHub rate limiting please consult
              # https://developer.github.com/v3/#rate-limiting
              #
              # You can create a GitHub token by following the instuctions in
              # https://help.github.com/en/github/authenticating-to-github/creating-a-personal-access-token-for-the-command-line
              #
              # github_token: xxx


              jobservice:
              # Maximum number of job workers in job service
              max_job_workers: 10


              notification:
              # Maximum retry count for webhook job
              webhook_job_max_retry: 10


              chart:
              # Change the value of absolute_url to enabled can enable absolute url in chart
              absolute_url: disabled


              # Log configurations
              log:
              # options are debug, info, warning, error, fatal
              level: info
              # configs for logs in local storage
              local:
              # Log files are rotated log_rotate_count times before being removed. If count is 0, old versions are removed rather than rotated.
              rotate_count: 50
              # Log files are rotated only if they grow bigger than log_rotate_size bytes. If size is followed by k, the size is assumed to be in kilobytes.
              # If the M is used, the size is in megabytes, and if G is used, the size is in gigabytes. So size 100, size 100k, size 100M and size 100G
              # are all valid.
              rotate_size: 200M
              # The directory on your host that store log
              location: /var/log/harbor


              # Uncomment following lines to enable external syslog endpoint.
              # external_endpoint:
              # # protocol used to transmit log to external endpoint, options is tcp or udp
              # protocol: tcp
              # # The host of external endpoint
              # host: localhost
              # # Port of external endpoint
              # port: 5140


              #This attribute is for migrator to detect the version of the .cfg file, DO NOT MODIFY!
              _version: 2.0.2


              # Uncomment external_database if using external database.
              # external_database:
              # harbor:
              # host: harbor_db_host
              # port: harbor_db_port
              # db_name: harbor_db_name
              # username: harbor_db_username
              # password: harbor_db_password
              # ssl_mode: disable
              # max_idle_conns: 2
              # max_open_conns: 0
              # clair:
              # host: clair_db_host
              # port: clair_db_port
              # db_name: clair_db_name
              # username: clair_db_username
              # password: clair_db_password
              # ssl_mode: disable
              # notary_signer:
              # host: notary_signer_db_host
              # port: notary_signer_db_port
              # db_name: notary_signer_db_name
              # username: notary_signer_db_username
              # password: notary_signer_db_password
              # ssl_mode: disable
              # notary_server:
              # host: notary_server_db_host
              # port: notary_server_db_port
              # db_name: notary_server_db_name
              # username: notary_server_db_username
              # password: notary_server_db_password
              # ssl_mode: disable


              # Uncomment external_redis if using external Redis server
              # external_redis:
              # host: redis
              # port: 6379
              # password:
              # # db_index 0 is for core, it's unchangeable
              # registry_db_index: 1
              # jobservice_db_index: 2
              # chartmuseum_db_index: 3
              # clair_db_index: 4
              # trivy_db_index: 5
              # idle_timeout_seconds: 30


              # Uncomment uaa for trusting the certificate of uaa instance that is hosted via self-signed cert.
              # uaa:
              # ca_file: /path/to/ca


              # Global proxy
              # Config http proxy for components, e.g. http://my.proxy.com:3128
              # Components doesn't need to connect to each others via http proxy.
              # Remove component from `components` array if want disable proxy
              # for it. If you want use proxy for replication, MUST enable proxy
              # for core and jobservice, and set `http_proxy` and `https_proxy`.
              # Add domain to the `no_proxy` field, when you want disable proxy
              # for some special registry.
              proxy:
              http_proxy:
              https_proxy:
              no_proxy:
              components:
              - core
              - jobservice
              - clair
              - trivy

              其核心配置是:

                hostname: registry.test.com
                harbor_admin_password: xxxxxxxx

                镜像存储到阿里云OSS,添加OSS作为仓库的存储后端配置参考:

                  storage_service:
                  # ca_bundle:
                  oss:
                  accesskeyid: xxxxxx
                  accesskeysecret: xxxxxxx
                  region: oss-cn-xxxxx-internal.aliyuncs.com
                  endpoint: harbor-aliyun.oss-cn-xxxxx-internal.aliyuncs.com
                  # internal: true
                  bucket: harbor-aliyun

                  5.生产docker-compose文件,并启用镜像漏洞扫描trivy以及helm的chart仓库支持

                    ./prepare --with-clair --with-trivy --with-chartmuseum

                    6. 启动harbor

                      docker-compose up -d

                      7.浏览器打开对应docker-compose所在的IP,就可以使用harbor的web控制台了,最高权限的用户名和密码在之前的harbor.yml下配置。

                      文章转载自运维笔谈,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                      评论