如何在Kubernetes上找到您的Jenkins管理员密码

使Kubernetes易于浏览的工具有时是如此出色,当我找不到找到答案的简单方法时,我会感到惊讶。 作为日常不使用Kubernetes的人,任何中等级别的故障排除都将变成下午的第一天,质疑我的理智,其次,考虑作为牧羊人或其他远离键盘的工作。

它从简单开始。 在这种情况下,我遵循的教程依赖于Kubernetes集群,因此我使用了Minikube ,它是一个很好的简单虚拟环境,可以在笔记本电脑上运行集群环境。 该安装进行得很顺利,所以我开始使用Helm ,它是Kubernetes的一个非常简单明了的软件包管理器。 我使用Helm的Charts之一来安装Jenkins,并且可以正常运行。 JenkinsDevOps管道的事实上的标准,并且让它在短短几分钟内运行就很棒。

我已经配置好环境,并且一切都在响应。 现在,登录到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 login screen

场景

这是此解决方案的背景。 感谢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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值