From 0129cdb5f36b11d83cf876977c83fa7f354fdf0e Mon Sep 17 00:00:00 2001 From: Khurram Baig Date: Wed, 2 Aug 2023 16:21:19 +0530 Subject: [PATCH] Change Leader Election Config Map for Controllers and Webhook Currently, it assumes default configmap `config-leader-election` which is also used by Tekton Pipelines controller. If someone changes pipelines controller configmap, it changes triggers also. --- config/config-leader-election-controller.yaml | 52 +++++++++++++++++++ config/config-leader-election-webhook.yaml | 52 +++++++++++++++++++ config/controller.yaml | 2 + config/webhook.yaml | 2 + 4 files changed, 108 insertions(+) create mode 100644 config/config-leader-election-controller.yaml create mode 100644 config/config-leader-election-webhook.yaml diff --git a/config/config-leader-election-controller.yaml b/config/config-leader-election-controller.yaml new file mode 100644 index 000000000..4731b43ca --- /dev/null +++ b/config/config-leader-election-controller.yaml @@ -0,0 +1,52 @@ +# Copyright 2023 Tekton Authors LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: v1 +kind: ConfigMap +metadata: + name: config-leader-election-triggers-controller + namespace: tekton-pipelines + labels: + app.kubernetes.io/instance: default + app.kubernetes.io/part-of: tekton-triggers +data: + _example: | + ################################ + # # + # EXAMPLE CONFIGURATION # + # # + ################################ + # This block is not actually functional configuration, + # but serves to illustrate the available configuration + # options and document them in a way that is accessible + # to users that `kubectl edit` this config map. + # + # These sample configuration options may be copied out of + # this example block and unindented to be in the data block + # to actually change the configuration. + # lease-duration is how long non-leaders will wait to try to acquire the + # lock; 15 seconds is the value used by core kubernetes controllers. + lease-duration: "60s" + # renew-deadline is how long a leader will try to renew the lease before + # giving up; 10 seconds is the value used by core kubernetes controllers. + renew-deadline: "40s" + # retry-period is how long the leader election client waits between tries of + # actions; 2 seconds is the value used by core kubernetes controllers. + retry-period: "10s" + # buckets is the number of buckets used to partition key space of each + # Reconciler. If this number is M and the replica number of the controller + # is N, the N replicas will compete for the M buckets. The owner of a + # bucket will take care of the reconciling for the keys partitioned into + # that bucket. + buckets: "1" diff --git a/config/config-leader-election-webhook.yaml b/config/config-leader-election-webhook.yaml new file mode 100644 index 000000000..b597b944e --- /dev/null +++ b/config/config-leader-election-webhook.yaml @@ -0,0 +1,52 @@ +# Copyright 2023 Tekton Authors LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: v1 +kind: ConfigMap +metadata: + name: config-leader-election-triggers-webhook + namespace: tekton-pipelines + labels: + app.kubernetes.io/instance: default + app.kubernetes.io/part-of: tekton-triggers +data: + _example: | + ################################ + # # + # EXAMPLE CONFIGURATION # + # # + ################################ + # This block is not actually functional configuration, + # but serves to illustrate the available configuration + # options and document them in a way that is accessible + # to users that `kubectl edit` this config map. + # + # These sample configuration options may be copied out of + # this example block and unindented to be in the data block + # to actually change the configuration. + # lease-duration is how long non-leaders will wait to try to acquire the + # lock; 15 seconds is the value used by core kubernetes controllers. + lease-duration: "60s" + # renew-deadline is how long a leader will try to renew the lease before + # giving up; 10 seconds is the value used by core kubernetes controllers. + renew-deadline: "40s" + # retry-period is how long the leader election client waits between tries of + # actions; 2 seconds is the value used by core kubernetes controllers. + retry-period: "10s" + # buckets is the number of buckets used to partition key space of each + # Reconciler. If this number is M and the replica number of the controller + # is N, the N replicas will compete for the M buckets. The owner of a + # bucket will take care of the reconciling for the keys partitioned into + # that bucket. + buckets: "1" diff --git a/config/controller.yaml b/config/controller.yaml index 999c27140..048292c11 100644 --- a/config/controller.yaml +++ b/config/controller.yaml @@ -100,6 +100,8 @@ spec: value: tekton.dev/triggers - name: METRICS_PROMETHEUS_PORT value: "9000" + - name: CONFIG_LEADERELECTION_NAME + value: config-leader-election-triggers-controllers securityContext: allowPrivilegeEscalation: false capabilities: diff --git a/config/webhook.yaml b/config/webhook.yaml index e6e630dde..bb5db7f31 100644 --- a/config/webhook.yaml +++ b/config/webhook.yaml @@ -65,6 +65,8 @@ spec: value: triggers-webhook-certs - name: METRICS_DOMAIN value: tekton.dev/triggers + - name: CONFIG_LEADERELECTION_NAME + value: config-leader-election-triggers-webhook ports: - name: metrics containerPort: 9000