JCasC(Jenkins Configuration as Code)환경에서 계정을 제대로 관리하지 않으면
Jenkins admin 등 계정의 비밀번호가 계속 초기화될 수 있다.
# 기존 설정 (문제)
controller:
admin:
username: "admin"
createSecret: true # Helm upgrade마다 새 Secret 생성 → 비밀번호 초기화해결 방법을 크게 두 가지 제안한다.
- secret으로 관리 (JCasC를 통한 계정 관리)
- Jenkins 자체 관리 (JCasC 포기)
Secret으로 관리
JCasC를 통한 계정 관리 방법
JCasC를 통한 Jenkins 계정 관리 방법을 안내한다.
비밀번호 관리를 위한 secret을 생성한다.
apiVersion: v1
kind: Secret
metadata:
name: jenkins-credentials
namespace: jenkins
type: Opaque
stringData:
# 사용자 계정
admin-password: "비밀번호"
developer-password: "비밀번호"
readonly-password: "비밀번호"
# CI/CD 연동 (GitHub, OCIR 등)
github-token: "발급한 github 토큰"
...(그 외 기타 필요한 환경변수)JCasC에 적용하기 위해 values.yaml을 수정한다.
controller:
# Secret 마운트 설정
existingSecret: "jenkins-credentials"
additionalExistingSecrets:
- name: jenkins-credentials
keyName: admin-password
- name: jenkins-credentials
keyName: developer-password
- name: jenkins-credentials
keyName: readonly-password
- name: jenkins-credentials
keyName: github-token
- name: jenkins-credentials
keyName: ocir-username
- name: jenkins-credentials
keyName: ocir-password
JCasC:
defaultConfig: false # 기본 설정 비활성화, 직접 정의
securityRealm: |-
local:
allowsSignup: false
enableCaptcha: false
users:
- id: "admin"
name: "Administrator"
password: "${jenkins-credentials-admin-password}"
- id: "developer"
name: "Developer"
password: "${jenkins-credentials-developer-password}"
- id: "readonly"
name: "Read Only User"
password: "${jenkins-credentials-readonly-password}"
authorizationStrategy: |-
roleBased:
roles:
global:
- name: "admin"
permissions:
- "Overall/Administer"
entries:
- user: "admin"
- name: "developer"
permissions:
- "Overall/Read"
- "Job/Build"
- "Job/Cancel"
- "Job/Read"
- "Job/Workspace"
- "Run/Replay"
- "Run/Update"
entries:
- user: "developer"
- name: "readonly"
permissions:
- "Overall/Read"
- "Job/Read"
entries:
- user: "readonly"
configScripts:
welcome-message: |
jenkins:
systemMessage: "Welcome to Jenkins CI/CD Server"
credentials: |
credentials:
system:
domainCredentials:
- credentials:
- usernamePassword:
id: "github-credentials"
description: "GitHub PAT"
username: "계정명"
password: "${jenkins-credentials-github-token}"
scope: GLOBAL필요한 플러그인들을 추가한다.
controller:
installPlugins:
- kubernetes:latest
- workflow-aggregator:latest
- git:latest
- github:latest
- github-branch-source:latest
- docker-workflow:latest
- pipeline-utility-steps:latest
- configuration-as-code:latest
- credentials-binding:latest
- job-dsl:latest
- role-strategy:latest # RBAC 권한 관리이후 운영 방법
계정/비밀번호 변경
Secret 업데이트
kubectl edit secret jenkins-credentials -n jenkins # 또는 kubectl patch secret jenkins-credentials -n jenkins \ -p '{"stringData":{"developer-password":"변경할비밀번호"}}'Jenkins 재시작 (JCasC 재적용)
kubectl rollout restart statefulset jenkins -n jenkins
계정 추가
Secret에 새 키 추가
kubectl patch secret jenkins-credentials -n jenkins \ -p '{"stringData":{"newuser-password":"비밀번호"}}'values.yaml 수정
(additionalExistingSecrets, securityRealm, authorizationStrategy)Helm upgrade
helm upgrade jenkins jenkins/jenkins -n jenkins -f jenkins/values.yaml
'인프라 > 자유' 카테고리의 다른 글
| 내부망 구성하기 (개정판) (0) | 2026.03.23 |
|---|---|
| NFS를 통해 다중 노드 스토리지 공유하기 (0) | 2026.03.12 |
| PVC 설정 없이 Wireguard VPN 세팅하기 (0) | 2026.03.09 |
| VPN을 통해 사내망을 구축해보자 (0) | 2026.03.09 |
| Path MTU Discovery(PMTUD)가 뭘까? (0) | 2026.03.09 |