I'm using kubernetes client for C#.
I encountered an issue that after 40-50 min the console application continue working but doesn't register any events. That was because of Watcher
's expiring. So I found that I can use timeoutSeconds
for method I used - WatchObjectAsync
. I changed the code - added int.MaxValue
for timeoutSeconds
:
var path = $"api/v1/watch/secrets";
_secretWatcher = await client.WatchObjectAsync<V1Secret>(
timeoutSeconds: int.MaxValue,
path: path,
onEvent: new Action<WatchEventType, V1Secret>(DoSmthWithEvent));
But the problem still remains. But now it happens after 1.5 - 2 hours.
So I want to have console application that is always running and reacting to object changes in kubernetes.
And my question is - how to properly use WatchObjectAsync
or alternative method? Should I sometimes recreate the Watcher
object in _secretWatcher
? And if so, then why does the parameter timeoutSeconds
exist?
Additional info:
onClosed
callback - works fine. Or better to use while loop?