Proxmox Service Discovery

Proxmox Service Discovery - это инструмСнт для автоматичСского обнаруТСния сСрвисов Π² кластСрС Proxmox, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΉ Π½Π° основС DNS. ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚ API Proxmox для получСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΌΠ°ΡˆΠΈΠ½Π°Ρ… ΠΈ ΡƒΠ·Π»Π°Ρ… кластСра, Π° Π·Π°Ρ‚Π΅ΠΌ создаСт DNS-записи Ρ‚ΠΈΠΏΠ° A, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΠΌ сСрвисам Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ ΠΏΠΎ ΠΈΡ… ΠΈΠΌΠ΅Π½Π°ΠΌ ΠΈΠ»ΠΈ Ρ‚Π΅Π³Π°ΠΌ.

https://github.com/itcaat/proxmox-service-discovery

ΠœΠΎΡ‚ΠΈΠ²Π°Ρ†ΠΈΡ

Π˜Π·ΡƒΡ‡Π΅Π½ΠΈΠ΅ golang, Ρ€Π°Π±ΠΎΡ‚Π° с API Proxmox. Π Π΅ΡˆΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ отсутствия service discovery Π² Proxmox Cluster.

ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ Ρ€Π°Π±ΠΎΡ‚Ρ‹

alt text

  1. ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ ΠΊ API Proxmox с использованиСм Ρ‚ΠΎΠΊΠ΅Π½Π° Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ

  2. ΠšΠ°ΠΆΠ΄Ρ‹Π΅ N сСкунд (ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ 60) ΠΎΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚:

    • Бписок всСх ΡƒΠ·Π»ΠΎΠ² (Π½ΠΎΠ΄) Π² кластСрС Proxmox
    • Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡƒΠ·Π»Π° - список Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… машин
    • Для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ - ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ с ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΈ IP-адрСсом
    • Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡƒΠ·Π»Π° - ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ сСтСвых интСрфСйсах
  3. На основС ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ DNS-записи:

    • Для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ создаСтся запись Π²ΠΈΠ΄Π° имя_ΠΌΠ°ΡˆΠΈΠ½Ρ‹.суффикс β†’ IP-адрСс
    • Если Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€ΠΎΠ²Π°Π½Π° опция DISCOVERY_VM_TAGS, Ρ‚ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ записи для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ‚Π΅Π³Π° Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹: Ρ‚Π΅Π³.суффикс β†’ IP-адрСс
    • Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡƒΠ·Π»Π° кластСра создаСтся запись Π²ΠΈΠ΄Π° имя_ΡƒΠ·Π»Π°.суффикс β†’ IP-адрСс (Ссли адрСс соотвСтствуСт ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ Π² настройках подсСти)
  4. ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ запускаСт DNS-сСрвСр (ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π½Π° ΠΏΠΎΡ€Ρ‚Ρƒ 2053), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π½Π° запросы, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ созданныС записи

    • Если запись Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½Π°, запрос пСрСнаправляСтся Π½Π° внСшний DNS-сСрвСр (8.8.8.8)

ВСхничСскиС Π΄Π΅Ρ‚Π°Π»ΠΈ

  • Написано Π½Π° языкС Go (вСрсия 1.18 ΠΈ Π²Ρ‹ΡˆΠ΅)
  • Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ miekg/dns для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ DNS-сСрвСра
  • Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с API Proxmox примСняСтся Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° go-resty/resty
  • Настройки Π·Π°Π³Ρ€ΡƒΠΆΠ°ΡŽΡ‚ΡΡ ΠΈΠ· ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… окруТСния ΠΈΠ»ΠΈ Ρ„Π°ΠΉΠ»Π° .env