Архив метки: Devops

Метрики Qrator (Qrator Exporter)

В очередной раз пришлось настраивать сбор метрик с Qrator, прошлая моя заметка на этот счет жила в виде Issue в репозитории StupidScience/qrator-exporter (в проекте используются deprecated-методы), но там она пропала, поэтому опишу здесь, чтобы уж точно не потерялось.

Источник qratorlabs.medium.com

 

Сбор данных будет осуществляться через telegraf и, с помощью него же, отдаваться в виде метрик формата Prometheus.

Читать

Как установить Jenkins на Ubuntu 22.04

Jenkins, программное обеспечение для автоматизации с открытым исходным кодом, предназначено для упрощения таких задач, как создание программного обеспечения, документация, тестирование, упаковка и развертывание. Созданный на языке программирования Java, Jenkins предоставляет надежную платформу для непрерывной интеграции и непрерывной доставки, предлагая широкий спектр плагинов DevOps.

В этом всеобъемлющем руководстве мы познакомим вас с установкой и настройкой Jenkins в системе Ubuntu, что обеспечит плавную настройку. Читать

Проксирование внешнего веб-сайта с помощью Nginx Ingress

Представьте, что у вас есть веб-сервер, работающий вне вашего кластера Kubernetes, который вы хотите интегрировать в свой контроллер ingress. Существует несколько причин, по которым вы можете захотеть это сделать:




  • Внешний веб-сервер разработан не таким образом, чтобы вы могли (легко) запустить его в контейнере вашего кластера.



  • Возможно, внешний веб-сервер запущен в другом центре обработки данных, чем ваш кластер Kubernetes.



  • Вы хотите воспользоваться преимуществами автоматической настройки HTTPS вашего контроллера Nginx Ingress.




Оказывается, на самом деле это довольно просто настроить.




В этом примере мы предполагаем, что внешний веб-сайт размещен на IP-адресе 10.20.30.40 и прослушивается через порт 8080. Обратите внимание, что для этого примера мы предполагаем, что порт 8080 обслуживает незашифрованный простой HTTP.




Также убедитесь, что вы правильно настроили свой брандмауэр и ограничили IP-адрес, по которому этот веб-сервер принимает подключения. Вы же не хотите открывать незашифрованный порт 8080 для всего мира.




Прежде всего, вам необходимо создать сервис с конечной точкой:




service.yaml




apiVersion: v1
kind: Service
metadata:
  name: <my-external-service>
spec:
  ports:
  - name: http
    port: 80
    protocol: TCP
    targetPort: 8080
  clusterIP: None
  type: ClusterIP
---
apiVersion: v1
kind: Endpoints
metadata:
  name: <my-external-service>
subsets:
- addresses:
  - ip: 10.20.30.40
  ports:
  - name: http
    port: 8080
    protocol: TCP




По сути, мы сообщаем Kubernetes, что определяем службу, которая связана с внешним IP-адресом, прослушивающим определенный порт. Мы используем IP-адрес, чтобы избежать DNS-запросов, задействованных в этой настройке.




Загрузка его в кластер выполняется следующим образом:




$ kubectl apply -f service.yaml




Для завершения настройки мы добавляем сервис в определение ingress точно так же, как мы бы поступили с обычным сервисом:




ingress.yaml




apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: ingress
  annotations:
    nginx.ingress.kubernetes.io/proxy-read-timeout: "3600"
    nginx.ingress.kubernetes.io/proxy-send-timeout: "3600"
    kubernetes.io/ingress.class: nginx
    certmanager.k8s.io/cluster-issuer: letsencrypt-prod
spec:
  tls:
  - hosts:
    - <my-domain-name.com>
    secretName: letsencrypt-prod
  rules:
  - host: <my-domain-name.com>
    http:
      paths:
      - backend:
          serviceName: <my-external-service>
          servicePort: 80




Примените это также, и все готово.




$ kubectl apply -f ingress.yaml




Если вы сейчас перейдете на https://my-domain-name.com, должно появиться правильное содержимое.




Источник: https://www.yellowduck.be/posts/k8s-proxy-an-external-site



2023-06-26T23:11:25
DevOps

Настройка доступа Jenkins

Создание пользователей




Сначала необходимо убедиться, что в качестве источника пользователей выбрана внутренняя БД дженкинса.










Далее идём в раздел Управление пользователями.







Там будет кнопка “Создать пользователя”







Настройка прав доступа




Должен быть установлен плагин Matrix Authorization Strategy. Он устанавливается в числе рекомендованных плагинов если вы выбрали этот путь в мастере установки дженкинса.




Этот плагин добавляет в разделе с настройками безопасности таблицу, где столбцы это права, а строки это пользователи.







Важно: при выборе этого способа авторизации не забудьте сразу выдать пользователю admin полные права. Если всё же у вас пропал доступ к настройке системы, то его можно вернуть отредактировав файл /var/jenkins_home/config.xml. Необходимо в строчке <useSecurity>true</useSecurity> написать false и перезапустить дженкинс.



2023-06-20T01:02:03
DevOps

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

Nexus является популярным менеджером репозиториев (repository manager). Он используется для хранения артефактов или прокси, т.е. всё что выкачивается через него, сохраняется в нём.




yum install java-1.8.0-openjdk java-1.8.0-openjdk-devel createrepo



wget http://download.sonatype.com/nexus/3/latest-unix.tar.gz



tar xvf latest-unix.tar.gz -C /opt/



ln -s /opt/nexus-*/ /opt/nexus

useradd -m -r -s /bin/false nexus



chown -R nexus:nexus /opt/nexus-* /opt/sonatype-work /opt/nexus




vim /opt/nexus/bin/nexus.rc

run_as_user="nexus"




vim /etc/systemd/system/nexus.service



[Unit]

Description=nexus service

After=network.target



[Service]

Type=forking

ExecStart=/opt/nexus/bin/nexus start

ExecStop=/opt/nexus/bin/nexus stop

User=nexus

Restart=on-abort



[Install]

WantedBy=multi-user.target







Уменьшить количество потребляемой оперативной памяти:





vim /var/nexus/nexus-3.19.1-01/bin/nexus.vmoptions
меняем
-Xms2703m
-Xmx2703m
на
-Xms512m
-Xmx512m




systemctl daemon-reload && systemctl enable nexus



systemctl start nexus && systemctl status nexus




WEB-интерфейс




http://<Nexus-server-ip-address>:8081




для авторизации в качестве логина используйте
admin
пароль можно посмотреть тут:




cat /opt/sonatype-work/nexus3/admin.password




также по умолчанию пароль может быть следующим:
Login: admin




Password: admin123




Настройка ротации логов Nexus




cat /etc/logrotate.d/nexus




/opt/sonatype-work/nexus3/log/*.log {
daily
dateext
copytruncate
missingok
rotate 3
compress
delaycompress
notifempty
}




отметим что в директории в которой установлен nexux должно быть не меньше 5Gb.




стартуем




systemctl start nexus




добавляем в автозапуск




systemctl enable nexus




логи хранятся тут:




/opt/sonatype-work/nexus3/log/




для удобства создадим симлинк
mkdir /var/log/nexus




ln -s /opt/sonatype-work/nexus3/log/ /var/log/nexus/




========================================================================




Описание работы с данной утилитой




Общий репозиторий:




не забываем включить анонимный доступ чтоб реп работал:
Anonymous — > Allow anonymous users to access the server





Далее переходим к списку репозиториев:




Создаём новый proxy репозиторий (create reposytory — > yum(proxy))




Name: test-repo-epel




ProxyRemote storage:  http://mirror.centos.org/centos-7/7/os/x86_64/




после чего нажимаем create reposytory




Создаём ещё один proxy репозиторий (create reposytory — > yum(proxy))
Name: yum-centos-7-repo_updates
Remote storage: http://mirror.centos.org/centos-7/7/updates/x86_64/




Создаём yum group




Name: yum-repo-group




добавляем в него 2 созданных нами прокси  и сохраняем.




всё, репозиторий создан.




Теперь чтобы использовать его необходимо пройти в раздел:
reposytory -> Repositories -> yum-repo-group
получаем следующую ссылку:
http://192.168.1.171:8081/repository/yum-repo-group/




и на целевой тачке создаем репозиторий:




cat /etc/yum.repos.d/Centos-7-Nexus.repo




[Centos-7-Nexus]

baseurl = http://192.168.1.177:8081/repository/yum-repo-group/

gpgcheck = 1

enabled=1

gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

name = Centos-Nexus




сохраняем и проверяем.




=======================================================================




Общий репозиторий docker:




создаём docker(hosted):
repositories -> create repository -> docker(hosted)




Name: docker-private
type hosted




http: 8083




можно ещё добавить для https




Нажимаем save




создаём docker(proxy):




repositories -> create repository -> docker(proxy)
Name: docker-hub
type proxy
remote storage: https://registry-1.docker.io
docker index: выбирем Use Docker Hub




Нажимаем save




создаём docker(group):




repositories -> create repository -> docker(group)
Name: docker-group
http:8082
и добавляем в него docker-private  docker-hub




Нажимаем save.




На целевой тачке добавляем:




cat /etc/docker/daemon.json
{
"insecure-registries": ["192.168.1.177:8081","192.168.1.177:8082","192.168.1.177:8083"],
"experimental": true
}




Далее необходимо залогиниться в nexus репозитории:
docker login http://192.168.1.177:8082/repository/docker-group




!!! ВАЖНО. Если вы используете прокси, то необходимо убрать его, перезапустить демон, и рестартануть docker(reload не хватит):




mv /etc/systemd/system/docker.service.d/http-proxy.conf /home/

systemctl daemon-reload

systemctl restart docker




проверить, что прокся не задействована вы можете с помощью команды:




docker info




в её выводе не должно быть прокси.




При логине в  192.168.1.177:8082/repository/docker-group в качестве логина и пароля надо указывать или тех пользователей которые вы создали в nexus или главного пользователя с которым вы авторизовались в nexus  admin admin123




чтобы выкачать образ необходимо указывать адрес источника, т.е.:
docker pull 192.168.1.177:8082/httpd




docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
192.168.1.177:8082/nginx latest e445ab08b2be 37 hours ago 126MB
192.168.1.177:8082/httpd latest ee39f68eb241 12 days ago 154MB




переименуем наш образ и загрузим его в nexus:
docker tag 192.168.1.177:8082/nginx 192.168.1.177:8082/nginx33:3




docker push 192.168.1.177:8082/nginx33:3




========================================




чтобы использовать nexus как прокси для скачивания обновлений или докер образов надо пройти в:
System -> HTTP -> HTTP(s) Proxy 
указываем ip и port нашего прокси, также можем задать список адресов которые исключаются из прокси(т.е. обращаясь к ним запрос не пойдёт через проксю)
Hosts to exclude from HTTP/HTTPS proxy
и нажимаем saveне забываем логиниться
docker login 192.168.1.177:8082




=========================================




чтобы использовать nexus как прокси для установки через pip
надо создать репозиторий:
Create repository — pypi (proxy) задаём имя (произвольное) в качестве remote storage указываем
https://pypi.org
сохраняем, далее создаём pypi(group) задаём имя (произвольное) добавляем в группу ранее созданый прокси репозиторий и сохраняем
получаем ссылку группы:
http://192.168.1.177:8082/repository/pypi-repo/




далее на целевой тачке создаём файл pip.conf




cat /etc/pip.conf

[global]

index = http://192.168.1.177:8082/repository/pypi-repo/pypi

index-url = http://192.168.1.177:8082/repository/pypi-repo/simple




и запускаем установку так:




pip install pypi-install --trusted-host 192.168.1.177




Источник: https://sidmid.ru/nexus-install-and-settings/



2023-06-02T15:55:17
DevOps