K3s – Wygaśnięte certyfikaty

Wygasłe certyfikaty powinny się odnowić przy ponownym uruchomieniu k3s:

# systemctl restart k3s

Jeżeli certyfikaty się nie odnowią i widzimy komunikat:

# kubectl get nodes
Unable to connect to the server: x509: certificate has expired or is not yet valid

Możemy wymusić wygenerowanie nowych.
Zabezpieczamy katalog z dotychczasowymi sekretami TLS

# tar -czvf /var/lib/rancher/k3s/server/apphost-cert.tar.gz /var/lib/rancher/k3s/server/tls

Usuwamy plik

# rm /var/lib/rancher/k3s/server/tls/dynamic-cert.json

Usuwamy zbuforowany certyfikat z sekretów kubernetes

# kubectl --insecure-skip-tls-verify=true delete secret -n kube-system k3s-serving

Uruchamiamy ponownie usługę K3s, aby odnowić certyfikaty

# systemctl restart k3s

Zabbix zgłasza problemy z usługami GoogleUpdater w Windows

Usługa GoogleUpdater często zmiania swoją nazwę a Zabbix nas o tym informuje. Zmienimy ustawienia Zabbixa aby nie monitorował tej usługi.

  • Data Collection -> Templates -> Windows by Zabbix agent -> Macros
  • Do macra {$SERVICE.NAME.NOT_MATCHES} na końcu przed ’)$’ dodajemy '|GoogleUpdater.*’
  • Wyłączamy tiggery na które wskazują bierzące alarmy GoogleUpdater. (Na liście problemów lewy przycisk myszy na nazwie problemu nastepnie wybieramy z menu Tigger. W okienku na dole odznaczamy Enabled i zatwierdzamy zmiany)

Kubernetes – Tworzenie obiektu configmap na podstawie dowolnego pliku

Możemy stworzyć configmapę na podstawie dowolnego pliku. W naszym przypadku bedzie to plik appsettings.json.

$ kubectl create configmap ares-api-config --from-file=Configuration/appsettings.json -n test

Ta metoda nie pozwoli nam zaktualizować configmapy bez jej usunięcia z klastra. Aby rozwiązać ten problem możemy najpierw utworzyć na podstawie naszego pliku appsettings.json plik yaml, następnie go zaaplikować. Gdy będziemy chcieli zmienić obiekt configmap w klastrze to powtarzamy ten proces.

$ kubectl create configmap ares-api-config --from-file=Configuration/appsettings.json -n test --dry-run=client -o yaml > configmap.yaml
$ kubectl apply -f configmap.yaml -n test

Zabbix – Wyłączenie powiadomień Interface Down

Gdy moniturujemy porty w switch Cisco korzystając z templates „Cisco IOS SNMP” i w pewnym momencie świadomie wyłączamy kabel sieciowy np z portu 1 i nie będziemy chwilowo korzystać z tego portu to Tiger pokazuje nam cały czas błąd „Port down” zaciemniając listę innych problemów

Aby ten alarm się nie pokazywał dodajemy makro do konfiguracji monitorowanego switcha:
{$IFCONTROL:"Ethernet1/0/1"} = 0

Macro to wymusi skasowanie błędu.

Gdy alert zostanie usunięty z listy problemów to usuwamy to macro z konfiguracji i w przyszłości gdy ponownie będziemy używać tego portu to Zabbix będzie nas informował o problemach.

Zabbix – Monitorowanie Proxmoxa

Aby monitorować Proxmoxa instalujemy na każdym nodzie Agenta Zabbix i dodajemy go do Zabbixa wskazując Templates „Linux by Zabbix agent”, „Proxmox VE by HTTP”.

Teraz w Proxmoxie dodajemy użytkownika zabbix oraz token.

Datacenter > Permissions > User > Add
Wypełniamy:

  • User name: zabbix
  • Realm: Linux PAM
  • Expire: never
  • Enabled: checked
  • First Name: dowolny
  • Last Name: dowolny

Datacenter > Permissions > Api Tokens > Add
Wypełniamy:

  • User: Wybieramy utworzonego
  • Token ID: Dowolny (np: ZabbixMonito01)
  • Privilege separation: checked

Po kliknięciu Add zapisujemy sobie Token ID oraz Secret, gdyż później Secret nie będzie już dostępny.

W Proxmoxie dodajemy uprawnienia do użytkownika i tokena
Datacenter > Permissions > Add > User Permission
Wypełniamy:

  • Path: /
  • User: Wybieramy utworzonego
  • Role: PVEAuditor
  • Propagate: no checked
  • Path: /nodes
  • User: Wybieramy utworzonego
  • Role: PVEAuditor
  • Propagate: checked
  • Path: /vms
  • User: Wybieramy utworzonego
  • Role: PVEAuditor
  • Propagate: checked
  • Path: /storage
  • User: Wybieramy utworzonego
  • Role: PVEAuditor
  • Propagate: checked

Datacenter > Permissions > Add > Api Token Permission

Dla tokena ustawiamy identyczne uprawnienia jak dla użytkownika

Wracamy do konfiguracji Zabbixa aby ustawić wygenerowany Token

Data collection > Hosts > <Proxmox name> > Macros

  • {$PVE.TOKEN.ID} value: Token ID
  • {$PVE.TOKEN.SECRET} value: Secret

Linux – Network Manager – dodanie tls-cipher do konfiguracji VPN

Aplet GUI do Network Managere nie obsługuje właściwości tls-cipher. Dodamy go narzędziem lini poleceń nmcli.

Wyszukujemy interesującą nas nazwę profilu vpn.

$ nmcli connection show

. . . . 
POLACZENIE1            xxxxx-xxxxxx  vpn       
. . . .

Dodajemy tls-cipher.

$ nmcli connection edit POLACZENIE1

nmcli> set vpn.data tls-cipher = DEFAULT:@SECLEVEL=0
nmcli> save
nmcli> quit

Jeżeli później będziemy edytować ten profil za pomocą narzędzia w GUI to musimy powtórzyć tą operację, gdyż właściwość ta zostanie usunięta.

Samba i bind9 dns problem

Problem z uruchomieniem named, w logach widzimy wpisy brak rekordu NS dla strefy

zone nazwa.strefy.pl/NONE: has no NS records
samba_dlz: Failed to configure zone 'nazwa.strefy.pl'
loading configuration: bad zone
exiting (due to fatal error)

Musimy dodać rekordy NS do strefy
samba-tool dns add [ip_lub_host_dc] [strefa] @ NS [dns_host_domain.] -U administrator

# samba-tool dns add dc1 nazwa.strefy.pl @ NS dc1.domena.pl. -U administrator

dodajemy tyle rekordów NS ile mamy serwerów DNS w domenie.

U mnie ten problem się objawił gdy zdegradowałem(usunąłem) poprzedni PDC z domeny, w głównej strefie domeny rekordy NS się zaktualizowały ale w strefach wyszukiwania wstecznego oraz strefach wyszukiwania do przodu, ręcznie utworzonych nie . Rekordy NS ze starym PDC się usunęły a brakowało wpisów NS wskazujące na nowe DC.

Należy również sprawdzić czy rekordy SOA mają prawidłowo wpisany serwer podstawowy. Można to już zrobić po uruchomieniu binda, w narzędziach administracyjnych przystawka DNS w Windows.

Proxmox klaster – zmiana adresów ip lub nazwy hosta

Procedura zmiany adresów ip lub nazwy hosta w nodach klastra Proxmox.

Przed zmianą adresów musimy zapewnić aby nody widziały się używając nowych ip.
Na zmienianym nodzie przygotowujemy konfigurację interfejsów z nowym adresem i sprawdzamy czy jest komunikacja między pozostałymi nodami a tym nowym ip.

Ja dodałem nowy interfejs VLAN do którego przypisałem adres 192.168.8.3:

# ip a
. . . . . . .
vmbr0.255@vmbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff
    inet 192.168.8.3/24 scope global vmbr0.255
. . . . . . .

Wyłączamy lub przenosimy wszystkie vm z noda którego zmieniamy.

W shell na zmienianym nodzie, sprawdzamy status klastra.

# pvecm status
. . . . . . 
Votequorum information
----------------------
Expected votes:   3
Highest expected: 3
Total votes:      3
Quorum:           2  
Flags:            Quorate Qdevice 

Membership information
----------------------
    Nodeid      Votes    Qdevice Name
0x00000001          1    A,V,NMW 192.168.1.1
0x00000002          1    A,V,NMW 192.168.1.2
0x00000003          1    A,V,NMW 192.168.1.3

Następnie w pliku /etc/pve/corosync.conf zmieniamy ip lub nazwę hosta naszego noda oraz config_version. Musimy to zrobić bardzo ostrożnie gdyż każdy zapis zostanie od razu rozpropagowany na pozostałe nody klastra. Teraz na pozostałych nodach sprawdzamy czy naniesione zmiany są widoczne w pliku /etc/pve/corosync.conf.

Na każdym nodzie restartujemy corosynca.

# systemctl restart corosync

Ponownie sprawdzamy status klastra

# pvecm status
. . . . . . 
Votequorum information
----------------------
Expected votes:   3
Highest expected: 3
Total votes:      3
Quorum:           2  
Flags:            Quorate Qdevice 

Membership information
----------------------
    Nodeid      Votes    Qdevice Name
0x00000001          1    A,V,NMW 192.168.1.1
0x00000002          1    A,V,NMW 192.168.1.2
0x00000003          1    A,V,NMW 192.168.8.3

Powinniśmy nadal obserwować quorum, a nasz nod będzie miał zmieniony ip.

Pozostało nam zaktualizować adres ip lub nazwę hosta w pliku /etc/hosts.

Jeżeli chcemy zmienić ip lub nazwę hosta następnemu nodowi postępujemy dokładnie tak samo.

Proxmox VE (PVE), Proxmox BS (PBS) – konfiguracja powiadomień email

Ustawiamy serwery Proxmox, aby wysyłały maile z powiadomieniami.

  1. Ustawiamy w www GUI adres email z którego będzie wysyłana poczta:
    PVE: Datacenter > Options > Email from address
    PBS: Configuration > Others > Email from addresss
  2. W opcjach użytkownika ustawiamy adres email na który mają być wysyłane powiadomienia.
  3. Do /etc/hosts jeżeli brak, to dodajemy wpisz z adresem ip naszego noda, nie wystarczy localhost.
  4. Konfigurujemy Postfixa jako root. Musimy to zrobić na każdym nodzie klastra PVE.

(Zmieniamy lub dodajemy opcje do konfiguracji postfixa)
# nano /etc/postfix/main.cf

relayhost = [adres.serwera.poczty]:465
smtp_use_tls = yes
smtp_sasl_auth_enable = yes
smtp_sasl_security_options = noanonymous
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt

(dla konfiguracji ssl/tls(port465) dodajemy dodatkowo wpisy)
smtp_tls_wrappermode = yes
smtp_tls_security_level = encrypt

(Dodajemy dane potrzebne do uwierzytelnienia na serwerze poczty)
# nano /etc/postfix/sasl_passwd

[adres.serwera.poczty]:465    NAZWA_UZYTKOWNIKA:HASLO

(Zmieniamy uprawnienia)
# chmod 600 /etc/postfix/sasl_passwd
# postmap /etc/postfix/sasl_passwd

(Instalujemy bibliotekę)
# apt-get install libsasl2-modules

(Restart Postfixa)
# systemctl restart postfix.service

(Test)
# echo "Subject: Testa"| sendmail -f adres@email.zrodlowy -v adresat@maila

W razie niepowodzenia wysyłki czytamy logi Postfixa i modyfikujemy konfigurację
PVE: NazwaNoda > System > Syslog
PBS: Administration > Services > Postfix (podwójne kliknięcie)s

Fortigate – restart noda w HA

{Lista nodów}
Unit-1 # execute ha manage ?
<0>     Subsidiary unit FGX00FTXXXXXX
<1>     Subsidiary unit FGX00FTYYYYYY

{Przełączenie na noda id 1}
Unit-1 # execute ha manage 1 admin                
Unit-2 $                                     

{Reboot noda}
Unit-2 $ execute reboot
This operation will shutdown the system !
Do you want to continue? (y/n)y