2024 Практические документы по эксплуатации и обслуживанию Cloud Native, 2019 г. 99 оригинальный проект Нет. 010 Глава |Docker Серия лучших практик «2024» Нет. 009 Глава
Привет,добро пожаловать вКвалифицирован в эксплуатации и обслуживании。
Контент, которым сегодня поделились, Docker Лучшая практика «2024» в серии документов Docker Автономное развертывание Harbor Настоящий бой。
в производственной среде Harbor Существует два типа развертывания: онлайн- и офлайн-установка. Чаще используется офлайн-метод, поэтому поговорим сегодня о нем. Harbor из Автономное развертывание。
Карта контента
Фактическая конфигурация сервера (копия архитектуры 1:1 мелкомасштабной производственной среды, конфигурация немного отличается)
имя хоста | IP | ЦП (ядро) | Память (ГБ) | Системный диск (ГБ) | Диск с данными (ГБ) | использовать |
---|---|---|---|---|---|---|
docker-node-1 | 192.168.9.81 | 4 | 16 | 40 | 100 | Докер-узел 1 |
docker-node-2 | 192.168.9.82 | 4 | 16 | 40 | 100 | Докер-узел 2 |
docker-node-3 | 192.168.9.83 | 4 | 16 | 40 | 100 | Докер-узел 3 |
Harbor | 192.168.9.29 | 4 | 8 | 40 | 500 | Узел портового обслуживания |
общий | 4 | 12 | 56 | 160 | 800 |
Реальная боевая среда включает информацию о версии программного обеспечения.
Ресурс | Минимум | Рекомендуется |
---|---|---|
CPU | 2 CPU | 4 CPU |
Mem | 4 GB | 8 GB |
Disk | 40 GB | 160 GB |
Ресурс | Minimum | иллюстрировать |
---|---|---|
CPU | 4 CPU | Для сценариев, когда отдельные лица или небольшие кластеры используют его нечасто, 2C достаточно. Для средних и крупных кластеров с частым использованием рекомендуется изначально настроить 4C, а затем расширять емкость в зависимости от реальных условий эксплуатации. |
Mem | 8 GB | На начальном этапе достаточно 8 ГБ. Если недостаточно, вы можете расширить его позже. |
Disk | 500 GB | Планируйте в соответствии с запланированным количеством сохраняемых изображений и емкостью. |
Программное обеспечение | Версия | Описание |
---|---|---|
Docker Engine | Version 20.10.10-ce+ or higher | Не рекомендуется выбирать последнюю версию 26.0.2. Рекомендуется выбирать 20.10.24 или 24.0.9. |
Docker Compose | docker-compose (v1.18.0+) or docker compose v2 (docker-compose-plugin) | Не рекомендуется использовать последнюю версию v2.26.1,предположениеиспользоватьv2.24.7 |
Программное обеспечение | Версия | Описание |
---|---|---|
Docker Engine | 24.0.9 (бинарный пакет) | Хранилище образов Docker-ce адаптируется к установочным пакетам различных операционных систем.,ссылкаСправочный документ по зеркальной станции с открытым исходным кодом Tsinghua |
Docker Compose | v2.24.7 (бинарный пакет) | Пакет автономной установки Docker Compose,Также доступно киспользовать docker-ce Монтаж зеркального склада docker-compose-plugin пакет, фактическая команда docker compose |
Подробный Docker и Docker Compose из Установка и развертываниепожалуйстассылкаDocker и Docker Compose Автономное развертывание Настоящий бой。
Port | Protocol | Description |
---|---|---|
443 | HTTPS | Портал порта и основной API принимают HTTPS-запросы через этот порт, который можно изменить в файле конфигурации. |
4443 | HTTPS | Подключения к службе Docker Content Trust для Harbor. Этот порт можно изменить в файле конфигурации. |
80 | HTTP | Портал порта и основной API принимают HTTP-запросы через этот порт HTTPS-запросов, который можно изменить в файле конфигурации. |
8443 | HTTPS | Порт службы внешнего доступа, настроенный в этой статье, можно настроить в соответствии с реальной ситуацией. |
wget https://github.com/goharbor/harbor/releases/download/v2.10.2/harbor-offline-installer-v2.10.2.tgz
/srv
Оглавление (личные привычки)cd /srv
/data/harbor
Оглавлениеtar zxvf harbor-offline-installer-v2.10.2.tgz -C /data
[root@docker-node-1 srv]# ls /data/harbor
common.sh harbor.v2.10.2.tar.gz harbor.yml.tmpl install.sh LICENSE prepare
Установка Harbor по умолчанию предоставляет услуги по протоколу HTTP без сертификата. Обязательно настройте HTTPS в производственной среде.
Чтобы настроить доступ по протоколу HTTPS, необходимо создать сертификат. Создать сертификат можно двумя способами:
Оба способа создания сертификатов имеют плюсы и минусы:
сейчассуществовать Есть много доступных в Интернетекавтоматический Применятьзаменять Бесплатно Нет.Три стороны CA Инструмент «Сертификат подписи». Поэтому я лично рекомендую вам попробовать купить доменное имя и использовать его бесплатно. CA Сертификат подписи.
Решение, представленное в этой статье, также использует приобретенное доменное имя. opsxlab.cn Подайте заявку бесплатно в Tencent SSL Сертификат способом. Позже я расскажу, как использовать сторонние инструменты для автоматической замены Применять на Сертификат.
Мне посчастливилось подать заявку на бесплатный сертификат SSL в Tencent Cloud. В течение последнего периода подачи заявки, когда бесплатный период может составлять один год, я подал заявку на сертификат SSL, действительный в течение одного года.
2024 Год 4 луна 25 Срок действия бесплатных сертификатов, заявленных после того, как номер станет 90 Блин,Процесс Подробный Применять не будет описываться слишком подробно.,Ключевой процесс иллюстрирования заключается в следующем:
Поместите загруженный файл сертификата в указанную директорию на сервере, например /srv
,Разархивировать Сертификат到规划из Сертификатмагазин Оглавление /data/harbor-cert
。
cd /srv
yum install unzip -y
unzip registry.opsxlab.cn_nginx.zip -d /data/harbor-cert
В этой статье описывается, как включить аутентификацию TLS для обеспечения безопасной связи между внутренними компонентами Harbour.
По умолчанию связь между внутренними компонентами службы Harbour (harbour-core, Harbour-JobService, Proxy, Harbour-Portal, Registry, Registry, Registry, trivy_adapter, Chartmuseum) использует протокол HTTP.
Эта конфигурация может не соответствовать требованиям безопасности для некоторых производственных сред. И в существующей производственной среде всегда используйте HTTPS. практика.
от Harbor v2.0 Старт, TLS Сертификацию можно использовать для Harbor Для внутренней сетевой связи между компонентами официалка также предоставляет собственную prepare
Изображение инструмента.
# Создать для использования TLS Инструмент сертификата требует сначала импортировать автономное зеркалирование.
docker load -i /data/harbor/harbor.v2.10.2.tar.gz
[root@docker-node-1 harbor]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
goharbor/harbor-exporter v2.10.2 9befcab0cee2 2 weeks ago 111MB
goharbor/redis-photon v2.10.2 9d1db211d49a 2 weeks ago 170MB
goharbor/trivy-adapter-photon v2.10.2 8f9e0b6b43ce 2 weeks ago 509MB
goharbor/harbor-registryctl v2.10.2 e5a807ba1f59 2 weeks ago 155MB
goharbor/registry-photon v2.10.2 850d2b3f27f3 2 weeks ago 89MB
goharbor/nginx-photon v2.10.2 9282c21c2fee 2 weeks ago 159MB
goharbor/harbor-log v2.10.2 f288fe2baa96 2 weeks ago 168MB
goharbor/harbor-jobservice v2.10.2 a3247b57a920 2 weeks ago 146MB
goharbor/harbor-core v2.10.2 6cd434d62456 2 weeks ago 174MB
goharbor/harbor-portal v2.10.2 7e5a522c7853 2 weeks ago 167MB
goharbor/harbor-db v2.10.2 cd385df354d4 2 weeks ago 274MB
goharbor/prepare v2.10.2 bf4632d26b65 2 weeks ago 214MB
prepare
генерация инструмента TLS Certs документ[root@docker-node-1 harbor]# docker run -v /data/harbor-cert:/hostfs goharbor/prepare:v2.10.2 gencert -p /internal/tls/cert -d 3650
Уведомление : -d 3650, сгенерируйте период действия 10 Сертификат года, по умолчанию: 365 небо. -p Путь хранения сертификата можно настроить так, чтобы он отражал внутреннее использование. tls Сертификат.
[root@docker-node-1 harbor]# ls /data/harbor-cert/internal/tls/cert/
core.crt harbor_db.key job_service.key proxy.key registry.key
core.csr harbor_internal_ca.crt portal.crt registry.crt trivy_adapter.crt
core.key harbor_internal_ca.key portal.csr registry.csr trivy_adapter.csr
extfile.cnf harbor_internal_ca.srl portal.key registryctl.crt trivy_adapter.key
harbor_db.crt job_service.crt proxy.crt registryctl.csr
harbor_db.csr job_service.csr proxy.csr registryctl.key
иллюстрировать : Создано много файлов. Обратите внимание на конкретную цель каждого файла. Harbor Официальная документация Internal TLS communication иллюстрировать
# к registy.crt Например
[root@docker-node-1 data]# openssl x509 -in /data/harbor-cert/internal/tls/cert/registry.crt -noout -dates
notBefore=Apr 26 14:03:43 2024 GMT
notAfter=Apr 24 14:03:43 2034 GMT
В этой статье представлены только ключевые параметры, которые требуют Исправлять.,Более полные параметры иллюстрировать,пожалуйстассылка Официальная документацияConfigure the Harbor YML File。
Развернуто в этой статье Harbor Используйте индивидуальные https 8443 Порт, обеспечивающий прямой доступ к клиентам интрасети. При этом включите external_url Элемент конфигурации, значение настройки https://registry.opsxlab.cn:8433
Перенаправить доступ внешним пользователям через брандмауэр.
cd /data//harbor
cp harbor.yml.tmpl harbor.yml
vi harbor.yml
# Harbor Сервераимя хоста Или IP
hostname: registry.opsxlab.cn
# Производственная среда должна быть использована https
https:
# https порт, по умолчанию 443, Его можно отрегулировать в соответствии с реальной средой. Но это должно быть с external_url Номера портов параметров совпадают
port: 8443
# Nginx использоватьиз cert и key документ (абсолютный путь)
certificate: /data/harbor-cert/registry.opsxlab.cn_nginx/registry.opsxlab.cn_bundle.pem
private_key: /data/harbor-cert/registry.opsxlab.cn_nginx/registry.opsxlab.cn.key
# давать Возможность внутренних компонентов TLS коммуникация
internal_tls:
enabled: true
dir: /data/harbor-cert/internal/tls/cert/
# Использование только в интрасети не требует настройки. если Harbor Его необходимо перенаправить на внешний доступ через метод межсетевого экрана Илидругой, и Конфигурация является обязательной. IP Или Внешнее доменное имя. Номер порта должен совпадать https.port Номер порта остается прежним.
external_url: https://registry.opsxlab.cn:8433
# Harbor admin 用户из初始密码,Конфигурациядокумент Рикок Нет необходимости менять,Но после развертывания оно должно быть завершено в короткие сроки., сменить пароль
harbor_admin_password: Harbor12345
# Harbor DB configuration
database:
# Harbor DB root пароль пользователя, 必须Исправлять. password: OpsXlab2024!
# Harbor Путь к хранилищу данных
data_volume: /data/harbor-storage
# Если это автономная интранет-среда и предоставление возможность trivy из场景,Все еще нужно Конфигурацияк Следующие два параметра
trivy:
# 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 download the `trivy-offline.tar.gz` archive manually, extract `trivy.db` and
# `metadata.json` files and mount them in the `/home/scanner/.cache/trivy/db` path.
skip_update: true
#
# The offline_scan option prevents Trivy from sending API requests to identify dependencies.
# Scanning JAR files and pom.xml may require Internet access for better detection, but this option tries to avoid it.
# For example, the offline mode will not try to resolve transitive dependencies in pom.xml when the dependency doesn't
# exist in the local repositories. It means a number of detected vulnerabilities might be fewer in offline mode.
# It would work if all the dependencies are in local.
# This option doesn’t affect DB download. You need to specify "skip-update" as well as "offline-scan" in an air-gapped environment.
offline_scan: true
Официальная команда установки по умолчанию не включает компонент сканирования уязвимостей контейнера. Trivy,生产средапредположениедавать возможность. Выполните следующую команду, чтобы начать установку Включено Trivy компонент Harbor Служить.
./install.sh --with-trivy
Когда вы увидите вывод, аналогичный показанному ниже, значит, иллюстрировать успешно установлено.
[Step 5]: starting Harbor ...
[+] Running 10/11
⠼ Network harbor_harbor Created 2.5s
✔ Container harbor-log Started 0.4s
✔ Container redis Started 1.2s
✔ Container harbor-db Started 1.0s
✔ Container harbor-portal Started 0.9s
✔ Container registryctl Started 1.2s
✔ Container registry Started 0.9s
✔ Container trivy-adapter Started 1.7s
✔ Container harbor-core Started 1.7s
✔ Container harbor-jobservice Started 2.1s
✔ Container nginx Started 2.2s
✔ ----Harbor has been installed and started successfully.----
Уведомление: Но на этот раз Harbor 并没有真正из启动成功,пожалуйста按下面изРазрешение исключенийобработка процесса。
Содержимое этого раздела не является обязательным. Если в процессе развертывания вы столкнулись с той же проблемой, что и я, вы можете обратиться к следующему содержимому для ее решения.
контейнер harbor-jobservice и nginx всегда внутри Restarting статус, и есть следующий журнал ошибок
nginx | nginx: [emerg] SSL_CTX_load_verify_locations("/harbor_cust_cert/harbor_internal_ca.crt") failed (SSL: error:80000002:system library::No such file or directory:calling fopen(/harbor_cust_cert/harbor_internal_ca.crt, r) error:10000080:BIO routines::no such file error:05880002:x509 certificate routines::system lib)
nginx | 2024/04/26 14:21:22 [emerg] 1#0: SSL_CTX_load_verify_locations("/harbor_cust_cert/harbor_internal_ca.crt") failed (SSL: error:80000002:system library::No such file or directory:calling fopen(/harbor_cust_cert/harbor_internal_ca.crt, r) error:10000080:BIO routines::no such file error:05880002:x509 certificate routines::system lib)
Вышеупомянутое исключение возникает потому,что Harbor из部署Включено TLS Аутентификация, если она не включена TLS Сценарий аутентификации после успешного выполнения сценария установки Harbor можно использовать нормально.
Я подозреваю, что это ошибка, но у меня нет никаких доказательств, поэтому я не буду вдаваться в подробности и приму временное решение.
cp /data/harbor-cert/internal/tls/cert/harbor_internal_ca.crt /data/harbor/common/config/shared/trust-certificates/
docker-compose stop
docker-compose start
При первом входе в систему необходимо изменить пароль администратора по умолчанию.
Создайте нового пользователя с правами администратора для ежедневного управления.
Harbor После завершения развертывания появится файл с именем library публичный проект, который мы обычно используем для хранения Docker Hub Официальный публичный имидж.
Мы будем использовать его позже Harbor хранилище KubeSphere и Kubernetes Поэтому связанные изображения сначала создайте файл с именем kubesphere Тестирование и проверка частного проекта Harbor функция.
После установки Harbor нам необходимо проверить, может ли Harbor нормально загружать и скачивать изображения.
Выбираем узел docker-node-1
В качестве проверочного теста клиента Harbor функция нормальная.
Поскольку мы являемся надежными третьими сторонами CA Подписано Сертификат Таким образом, Docker. и Containerd ждатьконтейнер运行时不需要做特殊из Конфигурация。如果是самоподписавшийсяиз Сертификаттогда необходимо Сертификат放到指定из Оглавлениеи особенный Конфигурация,Самоподписанная схема не рассматривается в этой статье.,Если вам нужно больше, вы можете сделать это позжек Напишите один конкретно Главасамоподписавшийся Сертификатиз Harbor Учебное пособие по развертыванию.
Однако, поскольку мы используем доменное имя для сервера интрасети registry.opsxlab.cn доступ Harbor Служить.поэтому,вседоступ Harbor Сервер требует ручной настройки /etc/hosts Разбор файлов.
echo "192.168.9.29 registry.opsxlab.cn" >> /etc/hosts
[root@docker-node-1 ~]# docker login registry.opsxlab.cn:8443
Username: opsxlab
Password:
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
Login Succeeded
# Посмотреть существующие image
[root@docker-node-1 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
kubesphere/pause 3.9 e6f181688397 18 months ago 744kB
# переименовывать
docker tag kubesphere/pause:3.9 registry.opsxlab.cn:8443/kubesphere/pause:3.9
# загрузить
[root@docker-node-1 ~]# docker push registry.opsxlab.cn:8443/kubesphere/pause:3.9
The push refers to repository [registry.opsxlab.cn:8443/kubesphere/pause]
e3e5579ddd43: Pushed
3.9: digest: sha256:0fc1f3b764be56f7c881a69cbd553ae25a2b5523c6901fbacb8270307c29d0c4 size: 526
# Для лучшего тестирования,Сначала удалите локальныйзагрузитьиззеркало
[root@docker-node-1 ~]# docker rmi kubesphere/pause:3.9
Untagged: kubesphere/pause:3.9
Untagged: kubesphere/pause@sha256:7031c1b283388d2c2e09b57badb803c05ebed362dc88d84b480cc47f72a21097
[root@docker-node-1 ~]# docker rmi registry.opsxlab.cn:8443/kubesphere/pause:3.9
Untagged: registry.opsxlab.cn:8443/kubesphere/pause:3.9
Untagged: registry.opsxlab.cn:8443/kubesphere/pause@sha256:0fc1f3b764be56f7c881a69cbd553ae25a2b5523c6901fbacb8270307c29d0c4
Deleted: sha256:e6f1816883972d4be47bd48879a08919b96afcd344132622e4d444987919323c
Deleted: sha256:e3e5579ddd43c08e4b5c74dc12941a4ef656fab070b1087a1fd5a8a836b71e7d
[root@docker-node-1 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
# скачать зеркало
[root@docker-узел-1 ~]# docker pull registry.opsxlab.cn:8443/kubesphere/pause:3.9
3.9: Pulling from kubesphere/pause
61fec91190a0: Pull complete
Digest: sha256:0fc1f3b764be56f7c881a69cbd553ae25a2b5523c6901fbacb8270307c29d0c4
Status: Downloaded newer image for registry.opsxlab.cn:8443/kubesphere/pause:3.9
registry.opsxlab.cn:8443/kubesphere/pause:3.9
На данный момент мы завершили работу над зеркальным складом. Harbor из Установка и развертываниеи Тестовая проверка。
В этой статье описывается подробный процесс и вопросы Уведомления службы автономного развертывания порта. Основное содержание резюмируется следующим образом:
Отказ от ответственности:
Получить эту статью Настоящий бой видео(пожалуйста Уведомление,Асинхронный выпуск документального видео,пожалуйста先сосредоточиться на)
Если вам понравилась эта статья, поделитесь, добавьте в избранное, поставьте лайк и прокомментируйте! Пожалуйста, продолжайте обращать внимание @ Опытные в эксплуатации и обслуживании, вовремя смотрите больше хороших статей!
Добро пожаловать присоединиться «Планета знаний|Навыки эксплуатации и технического обслуживания» , получи больше KubeSphere, Kubernetes, облачная эксплуатация и обслуживание, автоматизированная эксплуатация и обслуживание, искусственный интеллект Большие модели и т.п. бой Навык。В будущей карьере оператора и технического обслуживания я всегда буду сидеть на вашем пассажирском сиденье.。
Заявление об авторских правах