Generator Kubernetes Secret
Manifest YAML z danymi wrażliwymi
-
1Wprowadź dane
Wpisz treść, wklej tekst lub załaduj plik z dysku. -
2Kliknij przycisk
Narzędzie natychmiast przetworzy Twoje dane w przeglądarce. -
3Pobierz wynik
Skopiuj gotowy tekst lub zapisz plik na urządzeniu.
return "Wynik gotowy w 0.1s";
}
Oceń to narzędzie:
Powiązane narzędzia
Inne narzędzia, które mogą Ci się przydaćGenerator Kubernetes Secret
Secret przechowuje dane wrażliwe: hasła do baz, klucze API, certyfikaty. W odróżnieniu od ConfigMap wartości są kodowane base64 i mogą być dodatkowo szyfrowane w spoczynku.
Secret czy ConfigMap?
| Secret | ConfigMap |
|---|---|
| hasła, tokeny, klucze | konfiguracja niesekretna |
| Wartości w base64 | wartości jawne |
| Można szyfrować w etcd | bez szyfrowania |
stringData czy data?
Pole data wymaga wartości zakodowanych base64. Pole stringData przyjmuje tekst jawny i samodzielnie go koduje — generator korzysta z niego dla wygody.
Jak używać?
- Zapisz plik jako
secret.yaml. - Zastosuj:
kubectl apply -f secret.yaml. - W Deployment odwołaj się przez
envFrom.secretReflubvalueFrom.secretKeyRef.
Jak działa generator manifestu Secret
Narzędzie przyjmuje nazwę obiektu, namespace, typ oraz pary klucz-wartość. Na tej podstawie buduje manifest YAML zgodny z API v1. Zamiast ręcznie kodować każdą wartość do base64, generator umieszcza ją w polu stringData. Kubernetes przy zapisie obiektu sam konwertuje stringData do data i wykonuje kodowanie base64.
Mechanizm base64 polega na podziale danych na grupy po 3 bajty, czyli 24 bity. Każda taka grupa jest zamieniana na 4 znaki z alfabetu 64 znaków. Dlatego 3 bajty dają 4 znaki, a rozmiar rośnie o jedną trzecią w stosunku do wejścia. Gdy długość danych nie jest wielokrotnością 3, ostatnia grupa jest dopełniana jednym lub dwoma znakami równości.
Typ Secret wpływa na wymagane klucze. Dla type: Opaque nie ma narzuconych nazw. Dla kubernetes.io/tls wymagane są klucze tls.crt i tls.key, a dla kubernetes.io/dockerconfigjson klucz .dockerconfigjson. Generator nie waliduje tych wymagań — ich poprawność sprawdzasz sam przed zastosowaniem manifestu.
Przykład: od hasła do gotowego manifestu
- Wpisz nazwę Secret: baza-dane. Ustaw namespace: default i typ: Opaque.
- Dodaj pierwszy klucz: DB_PASSWORD. Wartość to tajne123456, czyli 12 znaków ASCII, a więc 12 bajtów.
- Dodaj drugi klucz: API_KEY. Wartość to kluczapi123456789012, czyli 20 znaków ASCII, a więc 20 bajtów.
- Generator zapisuje oba wpisy w polu stringData, więc w YAML widnieje tekst jawny. Po stronie klastra Kubernetes zamieni je na pole data.
- Dla 12 bajtów base64 daje 16 znaków, bo 12 dzielone przez 3 daje 4 pełne grupy po 4 znaki. Dla 20 bajtów powstaje 28 znaków: 6 pełnych trójek, czyli 18 bajtów, daje 24 znaki, a pozostałe 2 bajty dają 4 znaki z jednym znakiem równości na końcu.
- W Deployment odwołujesz się przez envFrom.secretRef z nazwą baza-dane albo przez valueFrom.secretKeyRef dla pojedynczego klucza.
Ile znaków base64 dla danej długości wejścia
| Bajty wejścia | Znaki base64 | Dopełnienie = |
|---|---|---|
| 1 | 4 | 2 |
| 2 | 4 | 1 |
| 3 | 4 | 0 |
| 4 | 8 | 2 |
| 5 | 8 | 1 |
| 6 | 8 | 0 |
| 7 | 12 | 2 |
| 8 | 12 | 1 |
Praktyczne wskazówki
- Używaj stringData tam, gdzie to możliwe — unikasz ręcznego kodowania i błędów przy kopiowaniu base64. Pole data zostaw, gdy wartość już masz zakodowaną.
- Nie commituj manifestu z prawdziwymi sekretami — plik z stringData zawiera tekst jawny. Trzymaj go poza repozytorium albo stosuj Sealed Secrets lub External Secrets.
- Dobierz type do przeznaczenia — dla TLS użyj kubernetes.io/tls, dla rejestru Docker kubernetes.io/dockerconfigjson. Wtedy inne narzędzia rozpoznają strukturę kluczy.
- Nazwy kluczy bez spacji i znaków specjalnych — klucz w Secret musi pasować do wzorca nazwy, więc używaj liter, cyfr, myślnika, podkreślenia i kropki.
- Pamiętaj o namespace — Secret działa tylko w swojej przestrzeni nazw. Pod w innym namespace nie odczyta go bez dodatkowej konfiguracji.
Czego narzędzie nie robi
- Nie szyfruje wartości — base64 to kodowanie, nie szyfrowanie. O szyfrowaniu w etcd decyduje konfiguracja klastra, a nie generator manifestu.
- Nie generuje ani nie sprawdza haseł — wklejasz własną wartość. Narzędzie nie ocenia jej siły ani nie wykrywa znaków spoza ASCII, które zmieniają długość w bajtach.
- Nie waliduje typu względem kluczy — możesz wybrać kubernetes.io/tls i nie dodać tls.crt. Manifest powstanie, ale Kubernetes odrzuci obiekt przy apply.
- Nie zarządza rotacją ani dostępem — nie ustawia RBAC, nie pilnuje terminu ważności certyfikatów i nie aktualizuje działających podów po zmianie wartości.
Najczęstsze pytania
Czy Secret jest bezpieczny?
Wartości są tylko zakodowane base64, a nie zaszyfrowane domyślnie. Włącz szyfrowanie w etcd i ogranicz dostęp przez RBAC.
Czy plik secret.yaml powinien trafić do repozytorium?
Nie — zawiera prawdziwe sekrety. Trzymaj go poza Gitem albo używaj Sealed Secrets lub menedżera sekretów (External Secrets, Vault).
Jak podejrzeć sekret?
Poleceniem kubectl get secret nazwa -o jsonpath='{.data}' i zdekodować base64. Wymaga odpowiednich uprawnień RBAC.
Jaki type Secret wybrać dla zwykłych haseł?
Dla haseł, tokenów i kluczy API używaj type: Opaque. To domyślny typ, który nie narzuca nazw kluczy. Inne typy, jak kubernetes.io/tls, mają z góry określoną strukturę.
Czy base64 zwiększa rozmiar danych w Secret?
Tak. Base64 zamienia 3 bajty na 4 znaki, więc rozmiar rośnie o około 33%. Dodatkowo dochodzi dopełnienie znakiem równości, gdy długość wejścia nie jest wielokrotnością 3. Limit rozmiaru obiektu w Kubernetes obejmuje już zakodowaną postać.
Jak wczytać Secret z pliku .env?
Generator nie importuje plików .env bezpośrednio. Możesz przepisać pary klucz-wartość ręcznie albo przygotować manifest poza narzędziem i wkleić wartości. W Kubernetes odpowiednikiem envFrom.secretRef jest jednorazowe wstrzyknięcie wszystkich kluczy jako zmiennych środowiskowych.
Czy zmiana wartości w Secret wymaga restartu poda?
Jeśli używasz envFrom lub valueFrom, zmienne środowiskowe nie aktualizują się w działającym kontenerze. Musisz zrestartować pod, na przykład przez kubectl rollout restart deployment. Inaczej jest z wolumenami — tam pliki aktualizują się z opóźnieniem, ale aplikacja musi je odczytać ponownie.
Czy nazwa klucza może zawierać myślnik lub kropkę?
Tak, klucz w Secret może zawierać myślnik, podkreślenie i kropkę, bo podlega regułom nazewnictwa obiektów Kubernetes. Spacje i znaki spoza tego zestawu spowodują błąd walidacji.