Runner on Kubernetes registers multiple times
Summary
I'm using Gitlab and Gitlab-Runner on a Kubernetes-Cluster. I've added an entrypoint to the runner to register the Runner on Pod-Startup. Everything works fine. But if I restart the Pod or the Server the runner reregisters itself and neither recognize that it has been registerd before or deletes the previous registration. So I'm stuck with one working runner and one not working runner.
Steps to reproduce
Start a Runner withe the following configuration and scale the Deployment down and up again.
apiVersion: v1
kind: ConfigMap
metadata:
name: gitlab-kubernetes-runner
namespace: gitlab-ci
data:
config.toml: |
concurrent = 4
check_interval = 30
entrypoint: |
#!/bin/bash
set -xe
cp /scripts/config.toml /etc/gitlab-runner/
# Register the runner
/entrypoint register --non-interactive \
--url $GITLAB_URL \
--executor kubernetes \
--config "/etc/gitlab-runner/config.toml" \
--locked=false \
--description "Kubernetes-Runner" \
--kubernetes-privileged
# Start the runner
/entrypoint run --user=gitlab-runner \
--working-directory=/home/gitlab-runner \
--config "/etc/gitlab-runner/config.toml"
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: gitlab-kubernetes-runner
namespace: gitlab-ci
spec:
replicas: 1
selector:
matchLabels:
name: gitlab-kubernetes-runner
template:
metadata:
labels:
name: gitlab-kubernetes-runner
spec:
containers:
- name: gitlab-kubernetes-runner
image: gitlab/gitlab-runner:v11.4.0
command: ["/bin/bash", "/scripts/entrypoint"]
env:
- name: GITLAB_URL
value: "https://gitlab.example.org/"
- name: REGISTRATION_TOKEN
valueFrom:
secretKeyRef:
name: gitlab-runner
key: runner-registration-token
- name: KUBERNETES_NAMESPACE
value:gitlab-ci
- name: KUBERNETES_SERVICE_ACCOUNT
value: gitlab-ci
- name: KUBERNETES_BEARER_TOKEN
valueFrom:
secretKeyRef:
name: gitlab-ci-token***
key: token
imagePullPolicy: Always
volumeMounts:
- name: config
mountPath: /scripts
restartPolicy: Always
volumes:
- name: config
configMap:
name: gitlab-kubernetes-runner
nodeSelector:
location: internal
Actual behavior
Runner is registered twice
Expected behavior
Runner should be registred once / old Runners should be deleted
Relevant logs and/or screenshots
+ '[' '!' -f /etc/gitlab-runner/config.toml ']'
+ /entrypoint register --non-interactive --url https://gitlab.example.org/ --executor kubernetes --config /etc/gitlab-runner/config.toml --locked=false --description Kubernetes-Runner --kubernetes-privileged
Runtime platform arch=amd64 os=linux pid=13 revision=8af42251 version=11.4.0
Running in system-mode.
Registering runner... succeeded runner=t4zpxzpu
Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded!
+ /entrypoint run --user=gitlab-runner --working-directory=/home/gitlab-runner --config /etc/gitlab-runner/config.toml
Runtime platform arch=amd64 os=linux pid=22 revision=8af42251 version=11.4.0
Starting multi-runner from /etc/gitlab-runner/config.toml ... builds=0
Running in system-mode.
Configuration loaded builds=0
Listen address not defined, metrics server disabled builds=0
Listen address not defined, session server disabled builds=0
Environment description
Kubernetes 1.12.1 on Ubuntu 18.04 Server amd64
Used GitLab Runner version
Docker image: gitlab/gitlab-runner:v11.4.0
Gitlab-Image: gitlab/gitlab-ce:11.4.0-ce.0