Uncategorised
- Информация о материале
- Автор: Павел
- Категория: Uncategorised
- Просмотров: 201
Будем поднимать свою хранилище на minio
minio - это популярный открытый сервер хранилища объектов, совместимый с сервисом облачных хранилищ Amazon S3. Приложения, которые взаимодействуют с Amazon S3, также можно настроить для взаимодействия с Minio, благодаря чему Minio является удобной альтернативой S3 для тех, кому нужно больше контроля над сервером хранения объектов. Сервис хранит неструктурированные данные, такие как фотографии, видео, файлы логов, резервные копии и образы контейнеров или виртуальных машин, и может даже предоставить единый сервер хранения объектов, который объединит несколько дисков, распределенных по разным серверам
И так поехали
wget https://dl.min.io/server/minio/release/linux-amd64/minio
chmod +x minio
useradd -r minio -s /sbin/nologin
chown minio:minio /usr/local/bin/minio
fdisk -l
parted -s -a optimal -- /dev/sdb mklabel gpt
parted -s -a optimal -- /dev/sdb mkpart primary 0% 100%
parted -s -- /dev/sdb align-check optimal 1
mkfs.ext4 /dev/sdb1
mount -a
nano /etc/fstab
/dev/sdb1 /mnt/minio ext4 rw 0 0
df -h
mkdir /var/lib/minio
chown minio:minio /var/lib/minio
mkdir /etc/minio
chown minio:minio /etc/minio
nano /etc/default/minio
MINIO_ACCESS_KEY="minio"
MINIO_VOLUMES="/usr/local/share/minio/"
MINIO_OPTS="-C /etc/minio --address your_server_ip:9000"
MINIO_SECRET_KEY="miniostorage"
curl -O https://raw.githubusercontent.com/minio/minio-service/master/linux-systemd/minio.service
nano minio.service
В файле меняем пользователя на minio
mv minio.service /etc/systemd/system
systemctl daemon-reload
systemctl enable minio
Created symlink from /etc/systemd/system/multi-user.target.wants/minio.service to /etc/systemd/system/minio.service.
systemctl start minio
systemctl status minio
Далее нам надо будет поставить cerbot
apt install software-properties-common
apt install certbot
certbot certonly --standalone -d minio-server.domain
cp /etc/letsencrypt/live/minio-server.domain/privkey.pem /etc/minio/certs/private.key
cp /etc/letsencrypt/live/minio-server.domain/fullchain.pem /etc/minio/certs/public.crt
systemctl restart minio
Что бы работал https интерфейс изменим настройку
в файле /etc/default/minio
MINIO_ACCESS_KEY="blabla-users"
MINIO_VOLUMES="/var/lib/minio"
MINIO_OPTS="-C /etc/minio --address s3.domain:9000 --console-address s3.domain:9001"
MINIO_SECRET_KEY="ctrhtn&kadsjL"
systemctl restart minio
Открываем браузер и пользуемся
- Информация о материале
- Автор: Павел
- Категория: Uncategorised
- Просмотров: 188
При попытки отправить на сборку вышла ошибка
ERROR: Failed to clean the workspace jenkins.util.io.CompositeIOException: Unable to delete '/var/jenkins_home/workspace/'
Выполняем подключение к контейнеру
docker container exec -u 0 -it jenkins-jenkins-1 bash
и выполним команду
chown -R jenkins:jenkins /var/jenkins_home/workspace/
далее выходим из контейнера
exit
и пробуем вновь запустить сборку. Все ошибки нет.
- Информация о материале
- Автор: Павел
- Категория: Uncategorised
- Просмотров: 239
Создадим проект (папку) и назовем ее jenkins, внутри нее будем создавать файлы/папки.
Создаем файл docker-compose.yml с таким вот содержимым
version: '3.7'
services:
nginx:
image: nginx:alpine
ports:
- "8000:8000"
volumes:
- ./docker/development/nginx/conf.d:/etc/nginx/conf.d
depends_on:
- jenkins
jenkins:
build:
context: ./docker/common/jenkins
environment:
DOCKER_HOST: tcp://docker:2376
DOCKER_CERT_PATH: /certs/client
DOCKER_TLS_VERIFY: 1
volumes:
- jenkins-data:/var/jenkins_home
- docker-certs:/certs/client:ro
depends_on:
- docker
docker:
image: docker:dind
privileged: true
environment:
DOCKER_TLS_CERTDIR: /certs
volumes:
- jenkins-data:/var/jenkins_home
- docker-certs:/certs/client
- docker-data:/var/lib/docker
создаем файл Makefile и сделаем для себя нужные команды, для запуска перезапуска и так далее
init: docker-down docker-pull docker-build docker-up
up: docker-up
down: docker-down
docker-up:
docker-compose up -d
docker-down:
docker-compose down --remove-orphans
docker-pull:
docker-compose pull
docker-build:
docker-compose build --pull
show-initial-password:
docker-compose exec jenkins cat /var/jenkins_home/secrets/initialAdminPassword
Из текста понятно, что за команды можно выполнять
запускаем команду из проекта make init после сборки запускаем браузер и открываем адрес localhost:8000 и нас встречает такая страница
Jenkins просит нас прочитать файл и его содержимое ввести в данную строку, что бы просмотреть нам надо выполнить команду
docker-compose exec jenkins cat /var/jenkins_home/secrets/initialAdminPassword
это содержимое введем в строку и нажимаем далее
Выбираем тип установки, с наиболее популярными пакетами установить или же сами выбираем что нам требуется для установки
Я выбрал первый вариант, предполагаемые пакеты.
Далее создаем своего первого пользователя, вводил логин мыло и свой пасс
Далее нажимаем сохранить и продолжить и нас встречает вот такой интерфейс
Вот и готов наш проект jenkins, тут можно посмотреть как его обновить, а тут как очистить от старых записей.
Но мы желаем в дальнейшем использовать в локальной разработке или вывод его в продакшн и использовать протокол https letsencrypt
создаем в нашем проекте папки docker/development/nginx/conf.d и создаем файл jenkins.conf вот с таким содержимым
server {
listen 8000;
server_tokens off;
location / {
proxy_pass http://jenkins:8080;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_read_timeout 900;
}
}
и немного подправлю docker-compose.yml добавлю в него nginx в самом начале я уже сделал правки
Перезапускаем наш проект командой make init
Все перезапустим браузер и видим что все работает нас только разлогинило.
Далее создаем в корне еще папки common/jenkins
создаем там Dockerfile с таким вот содержимым
FROM jenkinsci/blueocean
USER root
RUN apk add --no-cache py-pip python3-dev libffi-dev openssl-dev gcc libc-dev rust cargo make gettext \
&& pip3 install docker-compose
USER jenkins
Я очень надеюсь, что вы понимаете что в данном файле будет происходить.
Пересоберем наш проект
make init
После перезапуска проекта, перезапускаем браузер и проверяем, что все работает
- Информация о материале
- Автор: Павел
- Категория: Uncategorised
- Просмотров: 822
Установка jenkins docker - установка jenkins docker
Обновление jenkins docker - Обновление Jenkins docker контейнере
Очистка старых записей jenkins docker - Очистка старых записей в jenkins docker
- Информация о материале
- Автор: Павел
- Категория: Uncategorised
- Просмотров: 255
Как отследить источник Aborted_connects mysql server
Исследуя эту проблему, я заметил несколько неладных моментов, которые казались связанными, но на самом деле таковыми не были.
Самый большой измеримый признак был
mysqladmin -p ext | grep Abort | grep -v 0
Enter password:
| Aborted_clients | 2 |
| Aborted_connects | 112776
Эти две переменные состояния на самом деле не связаны (см. страницу руководства, где они объясняются). Первая была связана с ошибками, которые видел клиент: сервер через некоторое время закрывал неактивные соединения, и я исправил это, увеличив конфигурационную переменную wait_timeout.
Вторая ошибка не указывает на то, что активное соединение вообще закрыто. Скорее, это показывает, что соединение не может быть установлено по какой-то причине. Возможно, это сеть, или, возможно, проблема с разрешениями или что-то еще. Первое, что я сделал, это проверил наличие потери пакетов между сервером базы данных и веб-сервером; сеть работала нормально.
Исключив это (по крайней мере, к моему удовлетворению), я обратился к tcpdump, чтобы посмотреть, что происходит с этими соединениями. Я выполнил следующую команду в одном окне своего сеанса экрана, чтобы увидеть, когда соединение было прервано:
tcpdump -s 1500 -w tcp.out port 3306
После того, как я увидел прерванное соединение, я отменил tcpdump и посмотрел полученный файл. Проверка сеанса с помощью tcpdump -r показала, что сеанс TCP завершен; на этом слое ничего плохого не происходило. Поэтому я использовал утилиту strings для просмотра текста, отправленного в пакетах:
strings tcpdump.out
Host 'XXX.XX.XX.XXX' is not allowed to connect to this MySQL server
Я проверил этот IP-адрес.... но перед этим, я решил проверить таблицы GRAND сервера и действительно... этот IP-адрес который является машиной в локальной сети не разрешен для подключения.