Dodanie klastra on-prem do ranchera

Dodanie klastra on-prem do ranchera
Raloseq
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 291
0

Mam problem z dodaniem klastra k8s do ranchera (są na dwóch oddzielnych). Wykonałem pierwszą komendę
curl --insecure -sfL https://rancher.homelab.com/v3/import/xxx.yaml | kubectl apply -f -
no i potem żeby już importa zrobić, ale dostaje błąd:

Kopiuj
[root@master ~]# kubectl apply -f https://rancher.homelab.com/v3/import/kk7smtcrlnmr9cbnl9p6hjk2kc4dv547hql97c7r9k64btnwdwvwsr_c-k6gjz.yaml
Unable to connect to the server: tls: failed to verify certificate: x509: certificate signed by unknown authority
[root@master ~]#

tak wygląda log z poda cattle-system-agent

Kopiuj
INFO: Using resolv.conf: search cattle-system.svc.cluster.local svc.cluster.local cluster.local example.com nameserver 169.254.25.10 options ndots:5
INFO: https://rancher.homelab.com/ping is accessible
INFO: rancher.homelab.com resolves to 192.168.1.11
INFO: Value from https://rancher.homelab.com/v3/settings/cacerts is an x509 certificate
time="2025-05-28T17:03:28Z" level=info msg="starting cattle-credential-cleanup goroutine in the background"
time="2025-05-28T17:03:28Z" level=info msg="Listening on /tmp/log.sock"
time="2025-05-28T17:03:28Z" level=info msg="Rancher agent version v2.11.2 is starting"
time="2025-05-28T17:03:28Z" level=info msg="Testing connection to https://rancher.homelab.com using trusted certificate authorities within: /etc/kubernetes/ssl/certs/serverca"
time="2025-05-28T17:03:28Z" level=error msg="Could not securely connect to https://rancher.homelab.com: Get \"https://rancher.homelab.com\": tls: failed to verify certificate: x509: certificate signed by unknown authority"
[root@master ~]#

Sam instalacja rancher jest praktycznie default tylko mam dodane privateCA = true i tak go tworze

Kopiuj
openssl req -x509 -newkey rsa:2048 -keyout /dev/null -out /dev/stdout -days 365 -nodes -subj '/CN=rancher-ca' > cacerts.pem
kubectl create secret generic tls-ca --from-file=cacerts.pem -n cattle-system

już tyle próbowałem rzeczy z neta i z AI, takich jak import certa z secretu tls-ca do /etc/pki/ca-trust, podmontowywanie tego certa w deploymencie cattle-system-agent, dodanie flag --insecure-skip-tls-verify nic nie pomagało zawsze wracałem do tego samego błędu

PaulGilbert
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1027
1

Wygląda jak błąd certyfikatu. sam tworzyłeś ten certyfikat czy dostałeś ? Jeśli sam stworzyłeś to opisz co robiłeś.

Raloseq
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 291
0

@PaulGilbert: jedyn cert jaki zrobiłem to ten
openssl req -x509 -newkey rsa:2048 -keyout /dev/null -out /dev/stdout -days 365 -nodes -subj '/CN=rancher-ca' > cacerts.pem
kubectl create secret generic tls-ca --from-file=cacerts.pem -n cattle-system

PaulGilbert
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1027
0
Raloseq napisał(a):

@PaulGilbert: jedyn cert jaki zrobiłem to ten
openssl req -x509 -newkey rsa:2048 -keyout /dev/null -out /dev/stdout -days 365 -nodes -subj '/CN=rancher-ca' > cacerts.pem
kubectl create secret generic tls-ca --from-file=cacerts.pem -n cattle-system

To może zatem być ten problem, skoro komunikat mówi: certificate signed by unknown authority.
Może spróbuj przez certbota wygenerować.

Edit: Aaaa, ale doczytałem, że masz ustawione privateCA = true. Ciekawe.
Możesz napisać coś więcej o konfiguracji? Jak to fizycznie wygląda?

Raloseq
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 291
0

@PaulGilbert: instaluje rancher i cert managera z helm providera

Kopiuj
resource "helm_release" "cert-manager" {
  depends_on = [ kubernetes_namespace.cert-manager ]
  name = "cert-manager"
  repository = "https://charts.jetstack.io"
  chart = "cert-manager"
  namespace = "cert-manager"
  set {
    name = "installCRDs"
    value = true
  }
}

resource "helm_release" "rancher" {
  depends_on = [ kubernetes_namespace.rancher, helm_release.cert-manager ]
  name = "rancher"
  repository = "https://releases.rancher.com/server-charts/latest"
  chart = "rancher"
  namespace = "cattle-system"
  timeout = 900
  set {
    name = "hostname"
    value = "rancher.homelab.com"
  }
  set {
    name  = "bootstrapPassword"
    value = "admin"
  }

  set {
    name = "privateCA"
    value = "true"
  }

  set {
    name  = "replicas"
    value = "1"
  }

  set {
    name  = "ingress.ingressClassName"
    value = "traefik"
  }
}

po tym przez to że mam ustawione privateCA na true muszę dodać ręcznie sekret k8s tls-ca bo inaczej rancher nie wystartuje, i to cała konfiguracja ranchera

PaulGilbert
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1027
0
Raloseq napisał(a):

takich jak import certa z secretu tls-ca do /etc/pki/ca-trust,

Ale gdzie to dodawałeś? Jaki tam jest system? Może po prostu nie w tą lokalizację dodałeś ten certyfikat do zaufanych - bo np. nie zwróciłeś uwagi, że pomiędzy RedHatem a Ubuntu są różnice w lokalizacji z tego co pamiętam. Albo nie przeładowałeś (czy jak to się tam nazywa to update-ca-certificates).
Dlatego bardziej w poprzednim pytaniu chodziło mi o to jak fizycznie wygląda to u Ciebie.

Raloseq
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 291
0

@PaulGilbert: Na obu mam rocky linuxa, na klastrze który chce dodać do ranchera wrzuciłem certa (tego samego którego wygenerowałem komendą ( openssl req -x509 -newkey rsa:2048 -keyout /dev/null -out /dev/stdout -days 365 -nodes -subj '/CN=rancher-ca' > cacerts.pem) ) do ścieżki /etc/pki/ca-trust/source/anchors/ i wykonałem komendę update-ca-trust extract

PaulGilbert
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1027
0

A z tą flagą to tak robiłeś?:
kubectl apply -f https://rancher.homelab.com/v3/import/kk7smtcrlnmr9cbnl9p6hjk2kc4dv547hql97c7r9k64btnwdwvwsr_c-k6gjz.yaml --insecure-skip-tls-verify

PaulGilbert
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1027
0

Wrzucę jeszcze co mi czat sugeruje (może brak SAN i CN prawidłowego stanowi jakiś problem):

Poprawne generowanie certyfikatu CA dla Rancher

  1. Wygeneruj pełny certyfikat CA z kluczem prywatnym:
    bash

openssl req -x509 -newkey rsa:2048
-keyout rancher-ca.key -out rancher-ca.crt
-days 365 -nodes
-subj "/CN=Rancher Private CA"
-addext "basicConstraints=critical,CA:TRUE"

rancher-ca.key – klucz prywatny CA (potrzebny do podpisywania innych certyfikatów).

rancher-ca.crt – certyfikat CA (do dystrybucji jako zaufany certyfikat).

basicConstraints=CA:TRUE – oznacza, że to certyfikat CA, a nie zwykły certyfikat serwera.
  1. Wygeneruj certyfikat dla Rancher (podpisany przez Twoje CA):
    bash

openssl req -newkey rsa:2048
-keyout rancher.key -out rancher.csr
-nodes -subj "/CN=rancher.homelab.com"
-addext "subjectAltName=DNS:rancher.homelab.com"

openssl x509 -req -in rancher.csr
-CA rancher-ca.crt -CAkey rancher-ca.key -CAcreateserial
-out rancher.crt -days 365
-extfile <(echo "subjectAltName=DNS:rancher.homelab.com")

  1. Wdróż certyfikat w Rancher:
    bash

kubectl create secret tls tls-rancher-ingress
--cert=rancher.crt --key=rancher.key
-n cattle-system

Raloseq
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 291
1

@PaulGilbert: Ehh, cały czas jakiś zły cert dodawałem, a wystarczyło wejść w gui global settings > show certs

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.