Skip to content

Commit 668add8

Browse files
authored
Allow setting lease name for k8s leader election (#1280)
1 parent 2d36153 commit 668add8

File tree

2 files changed

+13
-2
lines changed

2 files changed

+13
-2
lines changed

src/providers.rs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,14 @@ pub struct Providers {
7474
)]
7575
k8s_leader_id: Option<String>,
7676

77+
/// The name of the k8s Lease resource used for leader election
78+
#[arg(
79+
long = "provider.k8s.leader-election.lease-name",
80+
env = "QUILKIN_PROVIDERS_K8S_LEADER_ELECTION_LEASE_NAME",
81+
default_value_t = String::from("quilkin"),
82+
)]
83+
k8s_leader_lease_name: String,
84+
7785
#[arg(
7886
long = "provider.k8s.agones",
7987
env = "QUILKIN_PROVIDERS_K8S_AGONES",
@@ -371,6 +379,7 @@ impl Providers {
371379
let k8s_enabled = self.k8s_enabled;
372380
let k8s_leader_election = self.k8s_leader_election;
373381
let k8s_leader_id = self.k8s_leader_id.clone().unwrap_or_else(|| config.id());
382+
let k8s_leader_lease_name = self.k8s_leader_lease_name.clone();
374383
let k8s_namespace = self.k8s_namespace.clone();
375384

376385
let selector = self
@@ -395,6 +404,7 @@ impl Providers {
395404
let agones_namespaces = agones_namespaces.clone();
396405
let k8s_namespace: String = k8s_namespace.clone();
397406
let k8s_leader_id: String = k8s_leader_id.clone();
407+
let k8s_leader_lease_name: String = k8s_leader_lease_name.clone();
398408
let selector = selector.clone();
399409
let locality = locality.clone();
400410
let health_check = health_check.clone();
@@ -425,6 +435,7 @@ impl Providers {
425435
either::Left(tokio::spawn(k8s::update_leader_lock(
426436
client.clone(),
427437
k8s_namespace,
438+
k8s_leader_lease_name,
428439
k8s_leader_id,
429440
ll,
430441
)))

src/providers/k8s.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,16 +49,16 @@ fn track_event<T>(kind: &'static str, event: Event<T>) -> Event<T> {
4949
pub(crate) async fn update_leader_lock(
5050
client: kube::Client,
5151
namespace: impl AsRef<str>,
52+
lease_name: impl Into<String>,
5253
holder_id: impl Into<String>,
5354
leader_lock: config::LeaderLock,
5455
) -> crate::Result<()> {
55-
const LEASE_NAME: &str = "quilkin-mds-leader-lease";
5656
let leadership = LeaseLock::new(
5757
client,
5858
namespace.as_ref(),
5959
LeaseLockParams {
6060
holder_id: holder_id.into(),
61-
lease_name: LEASE_NAME.into(),
61+
lease_name: lease_name.into(),
6262
lease_ttl: std::time::Duration::from_millis(750),
6363
},
6464
);

0 commit comments

Comments
 (0)