Cloud & DevOps/CICD

[Jenkins] Jenkins agent 파드에 toleration 추가하는 방법

백곰곰 2024. 8. 31. 18:31
728x90
반응형

Jenkins의 agent를 JCasC로 관리하고 있습니다.

Taint가 있는 노드에 agent를 배치할 필요가 있어서, toleration을 추가하는 방법을 알아보았습니다.

 

Jenkins 관리 -> Clouds 메뉴에서 Pod Template을 보면, NodeSelector, Annotation 등 은 있지만, Toleration을 추가하는 메뉴가 없는 것을 확인할 수 있습니다.

또한, 공식 문서의 Pod template 설정에도 toleration key가 없습니다.

 

이렇게 직접적으로 지원하지 않는 파드 설정은 yaml 키를 사용해서 설정할 수 있습니다.

    jenkins:
      clouds:
        - kubernetes:          
              - label: "do-not-use"
                name: "base-template"
                podRetention: "never"
                serviceAccount: "default"
                namespace: "jenkins"
                yamlMergeStrategy: "override"
                nodeSelector: "node=jenkins"
                yaml: |-
                  apiVersion: v1
                  kind: Pod
                  spec:
                    tolerations:
                    - key: node
                      operator: Equal
                      value: jenkins
                runAsUser: 1000
                annotations:
                  - key: "karpenter.sh/do-not-disrupt"
                    value: "true"
                containers:
                  - alwaysPullImage: false
                    image: "jenkins-slave-image:xxxx"
                    livenessProbe:
                      failureThreshold: 3
                      initialDelaySeconds: 10
                      periodSeconds: 10
                      successThreshold: 1
                      timeoutSeconds: 5
                    name: "jnlp"
                    resourceLimitEphemeralStorage: "40Gi"
                    resourceLimitMemory: "2Gi"
                    resourceRequestMemory: "2Gi"
                    ttyEnabled: true
                    workingDir: "/home/jenkins/agent"

 

yaml에 추가한 설정은 다른 설정과 합쳐져서 파드에 반영됩니다.

해당 방식을 활용해서 toleration 뿐만 아니라 지원하지 않는 다른 설정도 추가할 수 있습니다.

728x90