# For FQDN resolving of the controller service. Change this value to match your existing configuration.
# ref: https://github.com/kubernetes/dns/blob/master/docs/specification.md
clusterZone: "cluster.local"
# The URL of the Kubernetes API server
kubernetesURL: "https://kubernetes.default"
jenkins의 default timezone이 UTC이기 때문에, KST 기준으로 변경하기 위해 위의 설정 필요
initScripts로 jenkins에 jvm 옵션을 적용하여 시스템 전체의 timezone을 Asia/Seoul(KST) 로 변경
시스템 설정을 변경하더라도 job 생성 시 주기적 실행을 위해 Build periodically - Schedule에 crontab으로 정의 시 UTC 기준으로 동작하므로, KST 기준으로 동작하게 하려면 TZ=Asia/Seoul 추가 필요
containerEnv로 controller 환경변수에 TZ="Asia/Seoul"을 설정해줄 경우 Schedule crontab이 KST기준으로 동작하여 별도의 timezone 설정 필요 없음
agent 설정
agent:
enabled: true
defaultsProviderTemplate: ""
# URL for connecting to the Jenkins controller
jenkinsUrl:
# connect to the specified host and port, instead of connecting directly to the Jenkins controller
jenkinsTunnel:
...
agent 옵션의 enabled 설정을 true로 적용할 경우, job 실행 시 지정 옵션대로 agent pod이 동적으로 생성되어 해당 pod에서 job 실행
※ agent pod를 별도로 띄워놓고 동작시키고 싶을 경우 별도의 pod(deployment) 생성해 controller와 연결 가능 (아래 별도 설명)
3. helm 배포로 jenkins 구축
helm install jenkins jenkins/jenkins . -f values.yaml -n jenkins
NAME: jenkins
LAST DEPLOYED: Sat Nov 11 12:00:57 2023
NAMESPACE: jenkins
STATUS: deployed
REVISION: 1
NOTES:
1. Get your 'admin' user password by running:
kubectl exec --namespace jenkins -it svc/jenkins -c jenkins -- /bin/cat /run/secrets/additional/chart-admin-password && echo
2. Get the Jenkins URL to visit by running these commands in the same shell:
echo http://127.0.0.1:8080
kubectl --namespace jenkins port-forward svc/jenkins 8080:8080
3. Login with the password from step 1 and the username: admin
4. Configure security realm and authorization strategy
5. Use Jenkins Configuration as Code by specifying configScripts in your values.yaml file, see documentation: http:///configuration-as-code and examples: https://github.com/jenkinsci/configuration-as-code-plugin/tree/master/demos
For more information on running Jenkins on Kubernetes, visit:
https://cloud.google.com/solutions/jenkins-on-container-engine
For more information about Jenkins Configuration as Code, visit:
https://jenkins.io/projects/jcasc/
NOTE: Consider using a custom image with pre-installed plugins
NOTES 대로 kubectl 명령어를 실행해주면 jenkins 접속 시 admin의 password 확인할 수 있으며, 임의의 password를 지정하고 싶으면 values.yaml에 adminPassword를 지정해주면 됨
jenkins UI 접속도 마찬가지로 아래 명령어를 통해 port-forward해 http://127.0.0.1:8080 으로 접속 가능하며, values.yaml의 serviceType 옵션을 변경하거나, ingress를 enabled: true 로 활성화 및 옵션 지정하여 url설정 및 접속 가능하게 함
4. agent pod 생성 및 controller 연결
1. Jenkins 관리 > Nodes > New Node에서 노드명, type 지정해 신규 노드 설정 생성
노드 설정 예시
노드명: default-agent
Type: Permanent Agent
Remote root directory: /home/jenkins
Labels: default-agent
Usage: Use this node as much as possible
Launch method: Launch agent by connecting it to the controller
2. 생성된 노드늘 눌러 상세 화면으로 들어간 후 agent의 command 라인의 secret 옵션값 복사
3. agent pod생성 후 controller와 연결해 job을 실행하기 위한 deployment yaml (default-agent.yaml) 생성