Цель

Заметки ИТ которые я не хочу потерять

menu_navigation

Nexus установка и настройка проксирования

Установка производится на Ubuntu 16.04, внешние запросы принимает nginx, nexus находится внутри докер контейнера.
Установка nginx
Обновим систему, установим пакет, и добавим nginx в автозагрузку
sudo apt update
sudo apt install nginx -y
sudo systemctl enable nginx

редактируем конфигурацию
vi /etc/nginx/nginx.conf

error_log /var/log/nginx/error.log warn;
events {
    worker_connections  1024;
}
http {
    include mime.types;
    server_names_hash_bucket_size 64;
    large_client_header_buffers 4 64k;
    
    log_format mycombined '$remote_addr - $remote_user [$time_local] $scheme $server_name "$request" '
                          '$status $body_bytes_sent';
    access_log /var/log/nginx/nginx-access.log mycombined;
    
    server {
        access_log off;
        listen 80 default_server;
        listen [::]:80 default_server;
        return 301 https://$host$request_uri;
    }
    server {
        server_name nexus.domain.ru;
        include ssl.conf;
        location /v1/ {
            include proxy_params;
            access_log /var/log/nginx/registry-access.log;
            proxy_pass http://127.0.0.1:5000;
        }
        location /v2/ {
            include proxy_params;
            access_log /var/log/nginx/registry-access.log;
            proxy_pass http://127.0.0.1:5000;
        }
        location / {
            include proxy_params;
            if ($http_user_agent ~ docker ) {
                access_log /var/log/nginx/registry-access.log;
                proxy_pass http://127.0.0.1:5000;
            }
            proxy_pass http://127.0.0.1:8081;
        }
    }
}

создаем ssl.conf
vi ssl.conf 

listen 443 ssl http2;
listen [::]:443 ssl http2;
keepalive_timeout 70;
ssl_certificate /etc/nginx/cert/nexus.domain.ru.crt;
ssl_certificate_key /etc/nginx/cert/nexus.domain.ru.key;
ssl_dhparam /etc/nginx/cert/dhparam.pem;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 1d;
ssl_session_tickets off;
ssl_stapling on;
ssl_stapling_verify on;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers "ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!kEDH";
ssl_prefer_server_ciphers on;
add_header Strict-Transport-Security max-age=15768000;
resolver 8.8.8.8; 

создадим каталог cert и положим туда сертификаты
mkdir -p /etc/nginx/cert
chmod 700 /etc/nginx/cert
cp ~/domain.ru.key /etc/nginx/cert/nexus.domain.ru.key
cp ~/domain.ru.crt /etc/nginx/cert/nexus.domain.ru.crt

редактируем proxy_params
vi proxy_params 
 
proxy_redirect   off;
proxy_set_header Host $host;
proxy_set_header Proxy-host $proxy_host;
proxy_set_header X-Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_buffering off;
proxy_connect_timeout 3600;
proxy_send_timeout 3600;
proxy_read_timeout 14400;
proxy_buffer_size 8k;
proxy_buffers 8 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
client_max_body_size 20480m;
client_body_buffer_size 64k;

перезапустим конфигурацию и сервис
systemctl reload nginx.service
systemctl restart nginx.service

Установка docker
непосредственно установка
wget -qO- https://get.docker.com/ | sh 

добавим текущего пользователя в группу docker
sudo usermod -aG docker $(whoami) 

установка python-pip
sudo apt-get -y install python-pip 

Установка Docker Compose
sudo pip install docker-compose 

создание docker compose файла для nexus
vi docker-compose.yml 
 
version: "2"
services:
    nexus:
        image: sonatype/nexus3
        container_name: nexus
        restart: always
        ports:
            - "8081:8081"
            - "5000:5000" 
        volumes:
            - data:/nexus-data
volumes:
    data:

запуск контейнера
docker-compose up -d 
данные контейнера nexus находятся в каталоге /var/lib/docker/volumes/nexus_data/_data/
в частности пароль учетной записи admin находится в файле /var/lib/docker/volumes/nexus_data/_data/admin.password
который необходимо сменить при первом входе, а также будет предложено включить анонимный доступ (не включаем).
посмотреть логи
docker-compose logs -f --tail=100 

посмотреть запущенные контейнеры
docker-compose ps 
Настройка firewall ufw
sudo ufw allow 22
sudo ufw allow 80
sudo ufw allow 443
sudo ufw allow 8081
sudo ufw allow 5000
sudo ufw default allow outgoing
sudo ufw enable

Настройка проксирования на удаленный nexus
Создать репозиторий, например docker (proxy)
В настройках этого репозитория указать:
Repository Connectors - HTTP: 5000
Docker Registry API Support - Enable Docker V1 API - поставить галку
Remote storage - это ссылка на удаленный nexus, например http://nexus.company.com:5000
HTTP - Authentification - поставить галку и внести логин и пароль удаленного nexus
Далее создать роли и пользователей для подключения к этому прокси nexus

Комментариев нет:

Отправить комментарий