使Kubernetes易于浏览的工具有时是如此出色,当我找不到找到答案的简单方法时,我会感到惊讶。 作为日常不使用Kubernetes的人,任何中等级别的故障排除都将变成下午的第一天,质疑我的理智,其次,考虑作为牧羊人或其他远离键盘的工作。
它从简单开始。 在这种情况下,我遵循的教程依赖于Kubernetes集群,因此我使用了Minikube ,它是一个很好的简单虚拟环境,可以在笔记本电脑上运行集群环境。 该安装进行得很顺利,所以我开始使用Helm ,它是Kubernetes的一个非常简单明了的软件包管理器。 我使用Helm的Charts之一来安装Jenkins,并且可以正常运行。 Jenkins是DevOps管道的事实上的标准,并且让它在短短几分钟内运行就很棒。
我已经配置好环境,并且一切都在响应。 现在,登录到Jenkins的管理员密码是什么?
作为Helm Chart的一部分,Jenkins为其图形用户界面(GUI)配置了默认的用户名和密码。 我已经启动并运行了GUI,但不知道如何登录。
我不知道自己错过了什么,所以我查看了GitHub 存储库中的图表,并进行了尽可能多的搜索。 我尝试使用Google搜索可能想到的所有相关搜索模式:
- 如何在Kubernetes上检索Jenkins管理员密码
- Kubernetes Jenkins密码头盔
- Jenkins管理员密码Helm Chart
- Helm Jenkins的使用方法
尽管那里有很多很棒的教程,但是没有一个答案能满足我在初学者水平上的需求。
TL; DR的答案
如果您只想查找您的Jenkins密码,而不在乎它为什么起作用,请运行以下命令:
printf $ ( kubectl get secret --namespace jenkins jenkins -o jsonpath = "{.data.jenkins-admin-password}" | base64 --decode ) ; echo
默认用户是admin 。 现在您已经知道了这两个详细信息,您可以登录UI。 您问的UI在哪里? 运行这个:
# Be sure to update your jenkins pod name in the following command
$ kubectl port-forward jenkins-7565554b8f-cvhbd
8088 :
8080
然后,您可以导航到127.0.0.1:8088以访问UI。
![Jenkins登录屏幕 Jenkins login screen](https://i-blog.csdnimg.cn/blog_migrate/de93ad48a0fa5fdee4768391a8b19f3c.png)
场景
这是此解决方案的背景。 感谢Minikube,我在Kubernetes本地环境中工作。 我通过Homebrew( 作为MacOS用户 )安装了Kubernetes软件包管理器Helm ,并采取了下一步:
$ helm
install
--name jenkins stable
/ jenkins
--namespace jenkins
Error: could not
find tiller
只是在开玩笑-每当Helms在集群中第一次运行时,您都必须初始化Tiller服务。 Helm词汇表说:
分iller是Helm的集群内组件。 它与Kubernetes API服务器直接交互以安装,升级,查询和删除Kubernetes资源。 它还存储代表发布的对象。
让我们这样做吧:
$ helm init
Creating
/ Users
/ mbbroberg
/ .helm
Creating
/ Users
/ mbbroberg
/ .helm
/ repository
Creating
/ Users
/ mbbroberg
/ .helm
/ repository
/ cache
Creating
/ Users
/ mbbroberg
/ .helm
/ repository
/
local
Creating
/ Users
/ mbbroberg
/ .helm
/ plugins
Creating
/ Users
/ mbbroberg
/ .helm
/ starters
Creating
/ Users
/ mbbroberg
/ .helm
/ cache
/ archive
Creating
/ Users
/ mbbroberg
/ .helm
/ repository
/ repositories.yaml
Adding stable repo with URL: https:
// kubernetes-charts.storage.googleapis.com
Adding
local repo with URL: http:
// 127.0.0.1:
8879
/ charts
$HELM_HOME has been configured at
/ Users
/ mbbroberg
/ .helm.
Tiller
( the Helm server-side component
) has been installed into your Kubernetes Cluster.
Please note: by default, Tiller is deployed with an insecure
'allow unauthenticated users' policy.
To prevent this, run
` helm init
` with the
--tiller-tls-verify flag.
For
more information on securing your installation see: https:
// docs.helm.sh
/ using_helm
/
#securing-your-helm-installation
现在是时候安装Jenkins并确认它在线了:
helm
install
--name jenkins stable
/ jenkins
--namespace jenkins
NAME: jenkins
LAST DEPLOYED: Tue May
28
11 :
12 :
39
2019
NAMESPACE: jenkins
STATUS: DEPLOYED
RESOURCES:
==
> v1
/ ConfigMap
NAME DATA AGE
jenkins
5 0s
jenkins-tests
1 0s
==
> v1
/ Deployment
NAME READY UP-TO-DATE AVAILABLE AGE
jenkins
0
/
1
1
0 0s
==
> v1
/ PersistentVolumeClaim
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
jenkins Pending standard 0s
==
> v1
/ Pod
( related
)
NAME READY STATUS RESTARTS AGE
jenkins-7565554b8f-cvhbd
0
/
1 Pending
0 0s
==
> v1
/ Role
NAME AGE
jenkins-schedule-agents 0s
==
> v1
/ RoleBinding
NAME AGE
jenkins-schedule-agents 0s
==
> v1
/ Secret
NAME TYPE DATA AGE
jenkins Opaque
2 0s
==
> v1
/ Service
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT
( S
) AGE
jenkins LoadBalancer 10.96.90.0
< pending
>
8080 :
32015
/ TCP 0s
jenkins-agent ClusterIP 10.103.85.49
< none
>
50000
/ TCP 0s
==
> v1
/ ServiceAccount
NAME SECRETS AGE
jenkins
1 0s
NOTES:
1 . Get your
'admin' user password by running:
printf $
( kubectl get secret
--namespace jenkins jenkins
-o
jsonpath =
"{.data.jenkins-admin-password}"
| base64 --decode
) ;
echo
2 . Get the Jenkins URL to visit by running these commands
in the same shell:
NOTE: It may take a few minutes
for the LoadBalancer IP to be available.
You can
watch the status of by running
'kubectl get svc --namespace jenkins -w jenkins'
export
SERVICE_IP =$
( kubectl get svc
--namespace jenkins jenkins
--template
"{{ range (index .status.loadBalancer.ingress 0) }}{{ . }}{{ end }}"
)
echo http:
//
$SERVICE_IP :
8080
/
login
3 . Login with the password from step
1 and the username: admin
For
more information on running Jenkins on Kubernetes, visit:
https:
// cloud.google.com
/ solutions
/ jenkins-on-container-engine
$ kubectl get pods
--namespace jenkins
NAME READY STATUS RESTARTS AGE
jenkins-7565554b8f-cvhbd
1
/
1 Running
0 9m
您会注意到,获取管理员密码的神奇命令是上面冗长的输出的一部分(在注释1中)。 这个非常有用的命令:
- 执行kubectl命令以提取Jenkins创建的秘密
- 借助printf和$()将执行发送给管道运算符
- 解码以base64编码存储的密码,然后将其输出到屏幕
起初我没有注意到输出中的那一行,而且我无法通过搜索轻松找到答案,因此希望现在对每个人来说都更简单。
还有一件事…
这里仍然有些死胡同。 我的配置从未分配SERVICE_IP , 如上面输出(注2)中所述。 Jessica Repka建议设置从Pod到本地主机的端口转发,以便可以在本地对其进行寻址。 这样,我就可以访问UI,就好像它在笔记本电脑上本地运行,而不是在Minikube的容器中运行一样。
# Be sure to update your jenkins pod name in the following command
$ kubectl port-forward jenkins-7565554b8f-cvhbd
8088 :
8080
通过使该终端窗口保持运行状态,我将端口转发到本地可用端口(我在此处选择了8088) ,可以在http://127.0.0.1:8088/login上使用Jenkins。
我希望这个方法可以帮助其他人在Kubernetes上开始使用Jenkins。
翻译自: https://opensource.com/article/19/6/jenkins-admin-password-helm-kubernetes