Jak dać dostęp dla nowych użytkowników do klastra?¶
Aby umożliwić dostęp i komunikację z klastrem (z kube-apiserverem) należy przejść przez te kroki (robimy to z poziomu konta administratora klastra):
1. Tworzymy obiekt CertificateSigningRequest - tworzymy żądanie utworzenia nowego podpisania certyfikatu dla nowego użytkownika, musimy posiadać CSR tego użytkownika
2. Robimy Review żądania
3. Zezwalamy na podpisanie certyfikatu (lub usuwamy żądanie podpisania)
4. Podpisany certyfikat może zostać udostępniony nowemu użytkownikowi
Dawanie dostępu dla użytkownika z poziomu klastra¶
1. Nowy użytkownik tworzy klucz prywatny, oraz generuje CSR (Certificate Signing Request): Wygenerowanie klucza prywatnego:
Wygenerowanie CSR:
2. Nowy użytkownik wysyła CSR do administratora klastra
3. Admin klastra tworzy CertificateSigningRequest
Kodujemy żądanie CSR użytkownika:
Zawartość przykładowego CertificateSigningRequest:
apiVersion: certificates.k8s.io/v1
kind: CertificateSigningRequest
metadata:
name: <nazwa_usera>
spec:
expirationSeconds: 600 # ile sekund oczekiwania na potwierdzenie/odrzucenie
usages:
- digital signature
- key encipherment
- server auth
request:
<zawartosc_CSR_usera_zakodowana_w_BASE64>
Wdrażamy manifest na klaster:
4. Administrator sprawdza żądania podpisania certyfikatu
Będzie tutaj podane pole name, jest ono ważne przy podpisywaniu.
5. Administrator podpisuje certyfikat
Info
<nazwa_usera to pole name w kubectl get csr.
6. Administrator wysyła podpisany certyfikat do nowego użytkownika
Sprawdzenie certyfikatu:
Patrzymy na pole status.certificate, jest ono zakodowane w BASE64, należy je zdekodować.
Zdekodowanie certyfikatu w BASE64:
Źródło: https://kubernetes.io/docs/reference/access-authn-authz/certificate-signing-requests/