2016-06-21 20 views
7

Podczas aktualizacji pliku kluczy kubernetes, aby zastosować zmiany, trzeba uruchomić kubectl apply -f my-secrets.yaml. Jeśli był uruchomiony kontener, nadal korzystałby ze starych sekretów. Aby zastosować nowe sekrety na uruchomionym kontenerze, aktualnie uruchamiam polecenie kubectl replace -f my-pod.yaml. Zastanawiam się, czy jest to najlepszy sposób aktualizacji działającego sekretu kontenera, czy też czegoś brakuje.Aktualizowanie sekretów kubernetes nie aktualizuje bieżących kontenerów env vars

Dzięki.

Odpowiedz

6

The secret docs for users powiedzieć:

zawieszane Tajemnice są aktualizowane automatycznie Kiedy tajemnicą istota już spożywane w objętości jest aktualizowana, przewidywane klucze są ostatecznie również aktualizowana. Czas aktualizacji zależy od okresu synchronizacji kubletu.

Zamontowane sekrety są aktualizowane. Pytanie brzmi, kiedy. W przypadku aktualizacji treści tajnego klucza nie oznacza to, że aplikacja automatycznie ją zużywa. Zadaniem aplikacji jest obserwowanie zmian w pliku w tym scenariuszu, aby odpowiednio działać. Mając to na uwadze, musisz wykonać nieco więcej pracy. Jednym ze sposobów, jaki mam teraz na myśli, to uruchomienie scheduled job in Kubernetes, która mówi do interfejsu API Kubernetes, aby zainicjować nowe wdrożenie twojego deployment. W ten sposób możesz teoretycznie osiągnąć to, co chcesz odnowić swoje tajemnice. To nie jest jakoś eleganckie, ale to jedyny sposób, jaki mam na myśli w tej chwili. Nadal muszę sprawdzić więcej na temat koncepcji Kubernetes. Więc proszę, weź mnie ze sobą.

+0

Innym sposobem monitorowania sekretu byłoby użycie 'inotify' i obejrzenie katalogu, w którym jest on zamontowany. –

7

Według projektu Kubernetes nie będzie przekazywał Tajnych aktualizacji do uruchamiania kapsuł. Jeśli chcesz zaktualizować tajną wartość kapsuły, musisz zniszczyć i ponownie utworzyć kapsułę. Możesz przeczytać więcej na ten temat here.

+4

Na stronie http://kubernetes.io/docs/user-guide/secrets/, w "Mounted Secrets są aktualizowane automatycznie" mówi inaczej - przynajmniej rozumiem to w ten sposób. A może to inna sprawa? –

3

Zakładając, że nie działa mypod saszetki [zamontowany w tajemnicy jako mYsEcret w specyfikacji pod]

Możemy usunąć istniejący tajny

kubectl delete secret mysecret 

odtworzyć tę samą tajemnicę ze zaktualizowanego pliku

kubectl create secret mysecret <updated file/s> 

następnie wykonaj

kubectl apply -f ./mypod.yaml 

sprawdź sekrety wewnątrz mypod, zostanie zaktualizowany.