安装带有Helm图表的Jenkins



我有一个由一个master和两个worker组成的测试集群,我想使用Helm charts安装Jenkins。我正在遵循这里描述的程序。

jenkins-values.yaml看起来是这样的(大多数值都是默认设置的(:

clusterZone: "cluster.local"
renderHelmLabels: true
controller:
componentName: "jenkins-controller"
image: "jenkins/jenkins"
tag: "2.296"
imagePullPolicy: "Always"
lifecycle:
#  postStart:
#    exec:
#      command:
#      - "uname"
#      - "-a"
disableRememberMe: false
numExecutors: 0
# configures the executor mode of the Jenkins node. Possible values are: NORMAL or EXCLUSIVE
executorMode: "NORMAL"
# This is ignored if enableRawHtmlMarkupFormatter is true
markupFormatter: plainText
customJenkinsLabels: []
# The default configuration uses this secret to configure an admin user
# If you don't need that user or use a different security realm then you can disable it
adminSecret: true
hostNetworking: false
adminUser: "admin"
admin:
existingSecret: ""
userKey: jenkins-admin-user
passwordKey: jenkins-admin-password
jenkinsHome: "/var/jenkins_home"
jenkinsRef: "/usr/share/jenkins/ref"
jenkinsWar: "/usr/share/jenkins/jenkins.war"
usePodSecurityContext: true
runAsUser: 1000
fsGroup: 1000
servicePort: 8080
targetPort: 8080
serviceType: LoadBalancer
healthProbes: true
probes:
startupProbe:
httpGet:
path: '{{ default "" .Values.controller.jenkinsUriPrefix }}/login'
port: http
periodSeconds: 10
timeoutSeconds: 5
failureThreshold: 12
livenessProbe:
failureThreshold: 5
httpGet:
path: '{{ default "" .Values.controller.jenkinsUriPrefix }}/login'
port: http
periodSeconds: 10
timeoutSeconds: 5
readinessProbe:
failureThreshold: 3
httpGet:
path: '{{ default "" .Values.controller.jenkinsUriPrefix }}/login'
port: http
periodSeconds: 10
timeoutSeconds: 5
agentListenerEnabled: true
agentListenerPort: 50000
agentListenerHostPort:
agentListenerNodePort:
disabledAgentProtocols:
- JNLP-connect
- JNLP2-connect
csrf:
defaultCrumbIssuer:
enabled: true
proxyCompatability: true
agentListenerServiceType: "NodePort"
agentListenerLoadBalancerIP:
agentListenerServiceAnnotations: {}
loadBalancerSourceRanges:
- 0.0.0.0/0
installPlugins:
- workflow-cps
- pipeline-graph-analysis
- matrix-project
- pipeline-model-extensions
- docker-workflow
- workflow-multibranch
- lockable-resources
- pipeline-rest-api
- pipeline-stage-view
- workflow-cps-global-lib
- pipeline-model-declarative-agent
- pipeline-model-definition
- workflow-aggregator
installLatestPlugins: false
additionalPlugins: []
initializeOnce: false
overwritePluginsFromImage: true
enableRawHtmlMarkupFormatter: false
# Name of default cloud configuration.
cloudName: "kubernetes"

JCasC:
defaultConfig: true
configScripts: {}
securityRealm: |-
local:
allowsSignup: false
enableCaptcha: false
users:
- id: "${chart-admin-username}"
name: "Jenkins Admin"
password: "${chart-admin-password}"
authorizationStrategy: |-
loggedInUsersCanDoAnything:
allowAnonymousRead: false
sidecars:
configAutoReload:
enabled: true
image: kiwigrid/k8s-sidecar:0.1.275
imagePullPolicy: IfNotPresent
reqRetryConnect: 10
sshTcpPort: 1044
folder: "/var/jenkins_home/casc_configs"
ingress:
enabled: false
apiVersion: "extensions/v1beta1"
secondaryingress:
enabled: false
apiVersion: "extensions/v1beta1"
backendconfig:
enabled: false
apiVersion: "extensions/v1beta1"
route:
enabled: false
prometheus:
enabled: false
testEnabled: true
httpsKeyStore:
jenkinsHttpsJksSecretName: ''
enable: false
httpPort: 8081
path: "/var/jenkins_keystore"
fileName: "keystore.jks"
password: "password"
# Convert keystore.jks files content to base64 ( cat keystore.jks | base64 ) and put the output here
jenkinsKeyStoreBase64Encoded: |
/u3+7QAAAAIAAAABAAAAAQANamVua2luc2NpLmNvbQAAAW2r/b1ZAAAFATCCBP0wDgYKKwYBBAEq
AhEBAQUABIIE6QbCqasvoHS0pSwYqSvdydMCB9t+VNfwhFIiiuAelJfO5sSe2SebJbtwHgLcRz1Z
gMtWgOSFdl3bWSzA7vrW2LED52h+jXLYSWvZzuDuh8hYO85m10ikF6QR+dTi4jra0whIFDvq3pxe
TnESxEsN+DvbZM3jA3qsjQJSeISNpDjO099dqQvHpnCn18lyk7J4TWJ8sOQQb1EM2zDAfAOSqA/x
QuPEFl74DlY+5DIk6EBvpmWhaMSvXzWZACGA0sYqa157dq7O0AqmuLG/EI5EkHETO4CrtBW+yLcy
2dUCXOMA+j+NjM1BjrQkYE5vtSfNO6lFZcISyKo5pTFlcA7ut0Fx2nZ8GhHTn32CpeWwNcZBn1gR
pZVt6DxVVkhTAkMLhR4rL2wGIi/1WRs23ZOLGKtyDNvDHnQyDiQEoJGy9nAthA8aNHa3cfdF10vB
Drb19vtpFHmpvKEEhpk2EBRF4fTi644Fuhu2Ied6118AlaPvEea+n6G4vBz+8RWuVCmZjLU+7h8l
Hy3/WdUPoIL5eW7Kz+hS+sRTFzfu9C48dMkQH3a6f3wSY+mufizNF9U298r98TnYy+PfDJK0bstG
Ph6yPWx8DGXKQBwrhWJWXI6JwZDeC5Ny+l8p1SypTmAjpIaSW3ge+KgcL6Wtt1R5hUV1ajVwVSUi
HF/FachKqPqyLJFZTGjNrxnmNYpt8P1d5JTvJfmfr55Su/P9n7kcyWp7zMcb2Q5nlXt4tWogOHLI
OzEWKCacbFfVHE+PpdrcvCVZMDzFogIq5EqGTOZe2poPpBVE+1y9mf5+TXBegy5HToLWvmfmJNTO
NCDuBjgLs2tdw2yMPm4YEr57PnMX5gGTC3f2ZihXCIJDCRCdQ9sVBOjIQbOCzxFXkVITo0BAZhCi
Yz61wt3Ud8e//zhXWCkCsSV+IZCxxPzhEFd+RFVjW0Nm9hsb2FgAhkXCjsGROgoleYgaZJWvQaAg
UyBzMmKDPKTllBHyE3Gy1ehBNGPgEBChf17/9M+j8pcm1OmlM434ctWQ4qW7RU56//yq1soFY0Te
fu2ei03a6m68fYuW6s7XEEK58QisJWRAvEbpwu/eyqfs7PsQ+zSgJHyk2rO95IxdMtEESb2GRuoi
Bs+AHNdYFTAi+GBWw9dvEgqQ0Mpv0//6bBE/Fb4d7b7f56uUNnnE7mFnjGmGQN+MvC62pfwfvJTT
EkT1iZ9kjM9FprTFWXT4UmO3XTvesGeE50sV9YPm71X4DCQwc4KE8vyuwj0s6oMNAUACW2ClU9QQ
y0tRpaF1tzs4N42Q5zl0TzWxbCCjAtC3u6xf+c8MCGrr7DzNhm42LOQiHTa4MwX4x96q7235oiAU
iQqSI/hyF5yLpWw4etyUvsx2/0/0wkuTU1FozbLoCWJEWcPS7QadMrRRISxHf0YobIeQyz34regl
t1qSQ3dCU9D6AHLgX6kqllx4X0fnFq7LtfN7fA2itW26v+kAT2QFZ3qZhINGfofCja/pITC1uNAZ
gsJaTMcQ600krj/ynoxnjT+n1gmeqThac6/Mi3YlVeRtaxI2InL82ZuD+w/dfY9OpPssQjy3xiQa
jPuaMWXRxz/sS9syOoGVH7XBwKrWpQcpchozWJt40QV5DslJkclcr8aC2AGlzuJMTdEgz1eqV0+H
bAXG9HRHN/0eJTn1/QAAAAEABVguNTA5AAADjzCCA4swggJzAhRGqVxH4HTLYPGO4rzHcCPeGDKn
xTANBgkqhkiG9w0BAQsFADCBgTELMAkGA1UEBhMCY2ExEDAOBgNVBAgMB29udGFyaW8xEDAOBgNV
BAcMB3Rvcm9udG8xFDASBgNVBAoMC2plbmtpbnN0ZXN0MRkwFwYDVQQDDBBqZW5raW5zdGVzdC5p
bmZvMR0wGwYJKoZIhvcNAQkBFg50ZXN0QHRlc3QuaW5mbzAeFw0xOTEwMDgxNTI5NTVaFw0xOTEx
MDcxNTI5NTVaMIGBMQswCQYDVQQGEwJjYTEQMA4GA1UECAwHb250YXJpbzEQMA4GA1UEBwwHdG9y
b250bzEUMBIGA1UECgwLamVua2luc3Rlc3QxGTAXBgNVBAMMEGplbmtpbnN0ZXN0LmluZm8xHTAb
BgkqhkiG9w0BCQEWDnRlc3RAdGVzdC5pbmZvMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
AQEA02q352JTHGvROMBhSHvSv+vnoOTDKSTz2aLQn0tYrIRqRo+8bfmMjXuhkwZPSnCpvUGNAJ+w
Jrt/dqMoYUjCBkjylD/qHmnXN5EwS1cMg1Djh65gi5JJLFJ7eNcoSsr/0AJ+TweIal1jJSP3t3PF
9Uv21gm6xdm7HnNK66WpUUXLDTKaIs/jtagVY1bLOo9oEVeLN4nT2CYWztpMvdCyEDUzgEdDbmrP
F5nKUPK5hrFqo1Dc5rUI4ZshL3Lpv398aMxv6n2adQvuL++URMEbXXBhxOrT6rCtYzbcR5fkwS9i
d3Br45CoWOQro02JAepoU0MQKY5+xQ4Bq9Q7tB9BAwIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQAe
4xc+mSvKkrKBHg9/zpkWgZUiOp4ENJCi8H4tea/PCM439v6y/kfjT/okOokFvX8N5aa1OSz2Vsrl
m8kjIc6hiA7bKzT6lb0EyjUShFFZ5jmGVP4S7/hviDvgB5yEQxOPpumkdRP513YnEGj/o9Pazi5h
/MwpRxxazoda9r45kqQpyG+XoM4pB+Fd3JzMc4FUGxfVPxJU4jLawnJJiZ3vqiSyaB0YyUL+Er1Q
6NnqtR4gEBF0ZVlQmkycFvD4EC2boP943dLqNUvop+4R3SM1QMM6P5u8iTXtHd/VN4MwMyy1wtog
hYAzODo1Jt59pcqqKJEas0C/lFJEB3frw4ImNx5fNlJYOpx+ijfQs9m39CevDq0=
agent:
enabled: true
kubernetesConnectTimeout: 5
kubernetesReadTimeout: 15
maxRequestsPerHostStr: "32"
image: "jenkins/inbound-agent"
tag: "4.6-1"
workingDir: "/home/jenkins"
customJenkinsLabels: []
componentName: "jenkins-agent"
websocket: false
privileged: false
alwaysPullImage: false
podRetention: "Never"
command:
args: "${computer.jnlpmac} ${computer.name}"
sideContainerName: "jnlp"
TTYEnabled: false
containerCap: 10
podName: "default"
idleMinutes: 0
yamlTemplate: ""
yamlMergeStrategy: "override"
connectTimeout: 100
persistence:
enabled: false
storageClass: jenkins-pv
annotations: {}
accessMode: "ReadWriteOnce"
size: "8Gi"
networkPolicy:
enabled: false
apiVersion: networking.k8s.io/v1
internalAgents:
allowed: true
rbac:
create: true
readSecrets: false
serviceAccount:
create: false
name: jenkins
serviceAccountAgent:
create: false
backup:
enabled: false
componentName: "backup"
schedule: "0 2 * * *"
activeDeadlineSeconds: ""
image:
repository: "maorfr/kube-tasks"
tag: "0.2.0"
extraArgs: []
existingSecret: {}
destination: "s3://jenkins-data/backup"
onlyJobs: false
usePodSecurityContext: true
runAsUser: 1000
fsGroup: 1000
checkDeprecation: true

在用这些值安装Jenkins之前,我在Jenkins命名空间中创建了一个PV(即使我不使用它,看起来没有PV就不会产生pod(:

apiVersion: v1
kind: PersistentVolume
metadata:
name: jenkins-pv
namespace: jenkins
spec:
storageClassName: jenkins-pv
accessModes:
- ReadWriteOnce
capacity:
storage: 20Gi
persistentVolumeReclaimPolicy: Retain
hostPath:
path: /home/test_user/data/jenkins-volume/

使用helm install jenkins -n jenkins -f jenkins-values.yaml jenkinsci/jenkins安装pod后,pod正在运行。

kubectl get pods -o wide -n jenkins
NAME        READY   STATUS    RESTARTS   AGE   IP           NODE           NOMINATED NODE   READINESS GATES
jenkins-0   2/2     Running   0          97m   10.244.2.2   kube-worker2   <none>           <none>

服务看起来像:

kubectl get svc -n jenkins
NAME            TYPE           CLUSTER-IP       EXTERNAL-IP   PORT(S)           AGE
jenkins         LoadBalancer   10.97.219.11     <pending>     8080:30126/TCP    11m
jenkins-agent   NodePort       10.109.162.137   <none>        50000:32494/TCP   11m

UPDATE 1通过在controller.installPlugins.下添加所有必需的插件,解决了插件的问题

UPDATE 2现在我正在使用http://kube-worker2-IP:8080甚至http://kube-master-IP:8080检查UI访问,但它没有回复。在检查日志时,我不再收到任何错误,但我无法访问UI。

kubectl logs jenkins-0 jenkins -n jenkins
Running from: /usr/share/jenkins/jenkins.war
webroot: EnvVars.masterEnvVars.get("JENKINS_HOME")
2021-06-09 08:52:04.326+0000 [id=1]     INFO    org.eclipse.jetty.util.log.Log#initialized: Logging initialized @678ms to org.eclipse.jetty.util.log.JavaUtilLog
2021-06-09 08:52:04.529+0000 [id=1]     INFO    winstone.Logger#logInternal: Beginning extraction from war file
2021-06-09 08:52:06.105+0000 [id=1]     WARNING o.e.j.s.handler.ContextHandler#setContextPath: Empty contextPath
2021-06-09 08:52:06.179+0000 [id=1]     INFO    org.eclipse.jetty.server.Server#doStart: jetty-9.4.41.v20210516; built: 2021-05-16T23:56:28.993Z; git: 98607f93c7833e7dc59489b13f3cb0a114fb9f4c; jvm 1.8.0_292-b10
2021-06-09 08:52:06.555+0000 [id=1]     INFO    o.e.j.w.StandardDescriptorProcessor#visitServlet: NO JSP Support for /, did not find org.eclipse.jetty.jsp.JettyJspServlet
2021-06-09 08:52:06.608+0000 [id=1]     INFO    o.e.j.s.s.DefaultSessionIdManager#doStart: DefaultSessionIdManager workerName=node0
2021-06-09 08:52:06.609+0000 [id=1]     INFO    o.e.j.s.s.DefaultSessionIdManager#doStart: No SessionScavenger set, using defaults
2021-06-09 08:52:06.611+0000 [id=1]     INFO    o.e.j.server.session.HouseKeeper#startScavenging: node0 Scavenging every 660000ms
2021-06-09 08:52:07.147+0000 [id=1]     INFO    hudson.WebAppMain#contextInitialized: Jenkins home directory: /var/jenkins_home found at: EnvVars.masterEnvVars.get("JENKINS_HOME")
2021-06-09 08:52:07.319+0000 [id=1]     INFO    o.e.j.s.handler.ContextHandler#doStart: Started w.@7072bc39{Jenkins v2.296,/,file:///var/jenkins_home/war/,AVAILABLE}{/var/jenkins_home/war}
2021-06-09 08:52:07.356+0000 [id=1]     INFO    o.e.j.server.AbstractConnector#doStart: Started ServerConnector@6f15d60e{HTTP/1.1, (http/1.1)}{0.0.0.0:8080}
2021-06-09 08:52:07.357+0000 [id=1]     INFO    org.eclipse.jetty.server.Server#doStart: Started @3709ms
2021-06-09 08:52:07.358+0000 [id=21]    INFO    winstone.Logger#logInternal: Winstone Servlet Engine running: controlPort=disabled
2021-06-09 08:52:09.562+0000 [id=29]    INFO    jenkins.InitReactorRunner$1#onAttained: Started initialization
2021-06-09 08:52:09.838+0000 [id=28]    INFO    hudson.PluginManager#considerDetachedPlugin: Loading a detached plugin as a dependency: /var/jenkins_home/plugins/sshd.jpi
2021-06-09 08:52:10.043+0000 [id=30]    INFO    hudson.PluginManager#considerDetachedPlugin: Loading a detached plugin as a dependency: /var/jenkins_home/plugins/trilead-api.jpi
2021-06-09 08:52:10.690+0000 [id=28]    INFO    hudson.PluginManager#considerDetachedPlugin: Loading a detached plugin as a dependency: /var/jenkins_home/plugins/bouncycastle-api.jpi
2021-06-09 08:52:10.843+0000 [id=28]    INFO    hudson.PluginManager#considerDetachedPlugin: Loading a detached plugin as a dependency: /var/jenkins_home/plugins/command-launcher.jpi
2021-06-09 08:52:10.870+0000 [id=28]    INFO    hudson.PluginManager#considerDetachedPlugin: Loading a detached plugin as a dependency: /var/jenkins_home/plugins/jdk-tool.jpi
2021-06-09 08:52:12.846+0000 [id=29]    INFO    jenkins.InitReactorRunner$1#onAttained: Listed all plugins
2021-06-09 08:52:19.105+0000 [id=30]    INFO    jenkins.InitReactorRunner$1#onAttained: Prepared all plugins
2021-06-09 08:52:19.134+0000 [id=28]    INFO    jenkins.InitReactorRunner$1#onAttained: Started all plugins
2021-06-09 08:52:21.211+0000 [id=27]    INFO    jenkins.InitReactorRunner$1#onAttained: Augmented all extensions
2021-06-09 08:52:21.255+0000 [id=30]    INFO    jenkins.InitReactorRunner$1#onAttained: System config loaded
2021-06-09 08:52:21.255+0000 [id=30]    INFO    jenkins.InitReactorRunner$1#onAttained: System config adapted
2021-06-09 08:52:21.257+0000 [id=27]    INFO    jenkins.InitReactorRunner$1#onAttained: Loaded all jobs
2021-06-09 08:52:21.268+0000 [id=30]    INFO    jenkins.InitReactorRunner$1#onAttained: Configuration for all jobs updated
2021-06-09 08:52:21.347+0000 [id=43]    INFO    hudson.model.AsyncPeriodicWork#lambda$doRun$0: Started Download metadata
2021-06-09 08:52:21.366+0000 [id=43]    INFO    hudson.util.Retrier#start: Attempt #1 to do the action check updates server
2021-06-09 08:52:21.418+0000 [id=30]    INFO    jenkins.InitReactorRunner$1#onAttained: Completed initialization
2021-06-09 08:52:21.634+0000 [id=20]    INFO    hudson.WebAppMain$3#run: Jenkins is fully up and running
2021-06-09 08:52:35.490+0000 [id=43]    INFO    h.m.DownloadService$Downloadable#load: Obtained the updated data file for hudson.tasks.Maven.MavenInstaller
2021-06-09 08:52:36.942+0000 [id=43]    INFO    h.m.DownloadService$Downloadable#load: Obtained the updated data file for hudson.tools.JDKInstaller
2021-06-09 08:52:36.942+0000 [id=43]    INFO    hudson.util.Retrier#start: Performed the action check updates server successfully at the attempt #1
2021-06-09 08:52:36.946+0000 [id=43]    INFO    hudson.model.AsyncPeriodicWork#lambda$doRun$0: Finished Download metadata. 15,590 ms

你知道配置中出了什么问题吗?

看起来有些Jenkins插件已经过时或与您的Jenkins版本不兼容。由于pods显示正在运行,您应该导航到插件页面查看详细信息。

最新更新