阿里云容器服务Kubernetes之Jenkins X(1)-安装部署实践篇

简介: "Jenkins X is a CI/CD solution for modern cloud applications on Kubernetes." 这是Jenkins社区对于Jenkins X 的官方总结和定义。

本文的部署实践过程参考了云栖文章 如何在阿里云容器服务上搭建Jenkins X并记录了更详细的过程及日志输出。

下面我们开始介绍如何在阿里云容器服务Kubernetes上快速安装部署Jenkins X。

1. 首先,需要在 阿里云容器服务控制台 创建一个Kubernetes集群,本次实践使用的环境信息如下:

master1 192.168.0.134
master2 192.168.0.135
master3 192.168.0.136
worker1 192.168.0.137

2. 登录worker1节点(也可以使用集群外的任意ecs环境)并初始化helm client
# mkdir $HOME/.kube
# scp root@192.168.0.134:/etc/kubernetes/kube.conf $HOME/.kube/config
root@192.168.0.134's password:
kube.conf                                                                                                                                       100% 5472     8.4MB/s   00:00
# scp root@192.168.0.134:/usr/local/bin/helm /usr/local/bin/helm
root@192.168.0.134's password:
helm                                                                                                                                            100%   29MB 104.0MB/s   00:00
# helm init --client-only
Creating /root/.helm
Creating /root/.helm/repository
Creating /root/.helm/repository/cache
Creating /root/.helm/repository/local
Creating /root/.helm/plugins
Creating /root/.helm/starters
Creating /root/.helm/cache/archive
Creating /root/.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 /root/.helm.
Not installing Tiller due to 'client-only' flag having been set
Happy Helming!
3. 安装 git。
yum install git -y
4. 安装jx客户端
# curl -L https://github.com/jenkins-x/jx/releases/download/v1.3.464/jx-linux-amd64.tar.gz | tar xzv
# mv jx /usr/local/bin
# jx version
Using helmBinary helm with feature flag: none
NAME               VERSION
jx                 1.3.464
Kubernetes cluster v1.11.2
kubectl            v1.11.2
helm client        v2.9.1+g20adb27
helm server        v2.9.1+g20adb27
git                git version 1.8.3.1
A new jx version is available: 1.3.470
? Would you like to upgrade to the new jx version? No
5. 下载 cloud-environments 云环境配置文件
# mkdir -p ~/.jx
# cd ~/.jx
# git clone https://github.com/haoshuwei/cloud-environments.git
正克隆到 'cloud-environments'...
remote: Enumerating objects: 526, done.
remote: Total 526 (delta 0), reused 0 (delta 0), pack-reused 526
接收对象中: 100% (526/526), 229.61 KiB | 261.00 KiB/s, done.
处理 delta 中: 100% (263/263), done.
6. 安装jenkins-x-platform到Kubernetes集群
# jx install --provider=kubernetes --domain aliyunk8s.com

image
访问日志中提示的GitHub URL 并生成API Token:

https://github.com/settings/tokens/new?scopes=repo,read:user,read:org,user:email,write:repo_hook,delete_repo

image
新打开一个终端窗口查看jenkins-x-platform各个组件的安装情况:

# kubectl get ing -n jx
NAME              HOSTS                              ADDRESS         PORTS     AGE
chartmuseum       chartmuseum.jx.aliyunk8s.com       xx.xx.xxx.xxx   80        49s
docker-registry   docker-registry.jx.aliyunk8s.com   xx.xx.xxx.xxx   80        49s
jenkins           jenkins.jx.aliyunk8s.com           xx.xx.xxx.xxx   80        48s
monocular         monocular.jx.aliyunk8s.com         xx.xx.xxx.xxx   80        49s
nexus             nexus.jx.aliyunk8s.com             xx.xx.xxx.xxx   80        49s

绑定hosts:

# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
xx.xx.xxx.xxx chartmuseum.jx.aliyunk8s.com
xx.xx.xxx.xxx docker-registry.jx.aliyunk8s.com
xx.xx.xxx.xxx jenkins.jx.aliyunk8s.com
xx.xx.xxx.xxx monocular.jx.aliyunk8s.com
xx.xx.xxx.xxx nexus.jx.aliyunk8s.com

查看jenkins-x-platform组件的安装情况:

[root@iZj6cbxzol17fruawjffz1Z ~]# kubectl get pod -n jx
NAME                                             READY     STATUS             RESTARTS   AGE
jenkins-67d7cc5fcd-x6686                         1/1       Running            0          8m
jenkins-x-chartmuseum-84b895f4c5-d2dgc           1/1       Running            0          8m
jenkins-x-docker-registry-6b6f6d67b6-kn9ml       1/1       Running            0          8m
jenkins-x-heapster-65fd697bb-4czvz               2/2       Running            0          8m
jenkins-x-mongodb-784f66c466-zz429               0/1       Pending            0          8m
jenkins-x-monocular-api-58796c57c9-xk8rs         0/1       CrashLoopBackOff   5          8m
jenkins-x-monocular-prerender-5848c74fdc-48ppm   1/1       Running            0          8m
jenkins-x-monocular-ui-c4467bdc5-ttbr6           1/1       Running            0          8m
jenkins-x-nexus-b7454965d-nvlqb                  1/1       Running            0          8m
pipelinecontroller-6b5b8d9f47-457xx              1/1       Running            0          8m

发现jenkins-x-mongodb和jenkins-x-monocular-api组件启动异常,这是因为jenkins-x-monocular-api依赖jenkins-x-mongodb, 而jenkins-x-mongodb在创建pvc资源时找不到default storage class而导致的;编辑mongodb-pvc.yaml创建新pvc:

# cat mongodb-pvc.yaml
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: jenkins-x-mongodb
  namespace: jx
spec:
  accessModes:
    - ReadWriteOnce
  storageClassName: alicloud-disk-available
  resources:
    requests:
      storage: 20Gi
 # kubectl get pvc -n jx
NAME                        STATUS    VOLUME                   CAPACITY   ACCESS MODES   STORAGECLASS              AGE
jenkins                     Bound     d-j6c8mnao06oovpk0vy4h   30Gi       RWO            alicloud-disk-available   18m
jenkins-x-chartmuseum       Bound     d-j6c9szfy8smf4ak05hm9   20Gi       RWO            alicloud-disk-available   18m
jenkins-x-docker-registry   Bound     d-j6cc913ulnzfa7drkru9   100Gi      RWO            alicloud-disk-available   18m
jenkins-x-mongodb           Pending                                                                                18m
jenkins-x-nexus             Bound     d-j6cfrymuj8lrj2pvz3v0   20Gi       RWO            alicloud-disk-available   18m
# kubectl delete pvc jenkins-x-mongodb -n jx
persistentvolumeclaim "jenkins-x-mongodb" deleted
# kubectl create -f mongodb-pvc.yaml
persistentvolumeclaim/jenkins-x-mongodb created
# kubectl delete  pods jenkins-x-mongodb-784f66c466-zz429 -n jx
pod "jenkins-x-mongodb-784f66c466-zz429" deleted
# kubectl delete  pods jenkins-x-monocular-api-58796c57c9-xk8rs -n jx
pod "jenkins-x-monocular-api-58796c57c9-xk8rs" deleted

全部组件运行正常后可以看到jenkins-x-platform的安装进程进入下一步jenkins CLI API Token的配置:
image
根据提示获取token填入后, 安装部署完成:
image
image

7. 查看ingress暴露出来的服务url
# jx get urls
Name                      URL
jenkins                   http://jenkins.jx.aliyunk8s.com
jenkins-x-chartmuseum     http://chartmuseum.jx.aliyunk8s.com
jenkins-x-docker-registry http://docker-registry.jx.aliyunk8s.com
jenkins-x-monocular-api   http://monocular.jx.aliyunk8s.com
jenkins-x-monocular-ui    http://monocular.jx.aliyunk8s.com
nexus                     http://nexus.jx.aliyunk8s.com

访问http://jenkins.jx.aliyunk8s.com
image
访问http://monocular.jx.aliyunk8s.com
image
访问http://nexus.jx.aliyunk8s.com
image
docker-registry服务的访问有问题(暂时未花过多时间调试), 但我们会在下一篇阿里云容器服务Kubernetes之Jenkins X(2)-自动化CICD实践篇中演示如何让jenkins x使用阿里云容器镜像服务来管理容器镜像;阿里云容器服务Kubernetes之Jenkins X(2)-自动化CICD实践篇 中也会使用jenkins x创建一个spring应用并演示如何使用GitOps的理念管理和发布一个云原生应用。

相关实践学习
使用ACS算力快速搭建生成式会话应用
阿里云容器计算服务 ACS(Container Compute Service)以Kubernetes为使用界面,采用Serverless形态提供弹性的算力资源,使您轻松高效运行容器应用。本文将指导您如何通过ACS控制台及ACS集群证书在ACS集群中快速部署并公开一个容器化生成式AI会话应用,并监控应用的运行情况。
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
目录
相关文章
|
8月前
|
Kubernetes Docker Python
Docker 与 Kubernetes 容器化部署核心技术及企业级应用实践全方案解析
本文详解Docker与Kubernetes容器化技术,涵盖概念原理、环境搭建、镜像构建、应用部署及监控扩展,助你掌握企业级容器化方案,提升应用开发与运维效率。
1127 108
|
8月前
|
运维 监控 数据可视化
小白也能部署应用,3个免费的容器化部署工具测评
本文对比了三款容器化部署工具:Docker Compose、Portainer 和 Websoft9。Docker Compose 适合开发者编排多容器应用,Portainer 提供图形化管理界面,而 Websoft9 则面向中小企业和非技术人员,提供一键部署与全流程运维支持,真正实现“开箱即用”。三款工具各有定位,Websoft9 更贴近大众用户需求。
小白也能部署应用,3个免费的容器化部署工具测评
|
6月前
|
存储 关系型数据库 MySQL
MySQL Docker 容器化部署全指南
MySQL是一款开源关系型数据库,广泛用于Web及企业应用。Docker容器化部署可解决环境不一致、依赖冲突问题,实现高效、隔离、轻量的MySQL服务运行,支持数据持久化与快速迁移,适用于开发、测试及生产环境。
889 5
|
8月前
|
运维 数据可视化 C++
2025 热门的 Web 化容器部署工具对比:Portainer VS Websoft9
2025年热门Web化容器部署工具对比:Portainer与Websoft9。Portainer以轻量可视化管理见长,适合技术团队运维;Websoft9则提供一站式应用部署与容器管理,内置丰富开源模板,降低中小企业部署门槛。两者各有优势,助力企业提升容器化效率。
512 1
2025 热门的 Web 化容器部署工具对比:Portainer VS Websoft9
|
7月前
|
存储 Kubernetes 持续交付
为什么Docker容器化改变了开发与部署?
为什么Docker容器化改变了开发与部署?
|
Prometheus Kubernetes 监控
OpenAI故障复盘 - 阿里云容器服务与可观测产品如何保障大规模K8s集群稳定性
聚焦近日OpenAI的大规模K8s集群故障,介绍阿里云容器服务与可观测团队在大规模K8s场景下我们的建设与沉淀。以及分享对类似故障问题的应对方案:包括在K8s和Prometheus的高可用架构设计方面、事前事后的稳定性保障体系方面。
|
安全 持续交付 云计算
课时5:阿里云容器服务:最原生的集成Docker和云服务
阿里云容器服务以服务化形式构建容器基础设施,大幅提升开发效率,简化应用部署流程。通过Docker容器和DevOps工具(如Jenkins),实现自动化部署与迭代,优化企业内部复杂部署问题。该服务支持GPU调度、混合云架构无缝迁移,并与阿里云产品体系无缝集成,提供安全防护、网络负载均衡等多重功能支持。凭借微服务架构,帮助企业突破业务瓶颈,提高资源利用率,轻松应对海量流量。
439 0
课时5:阿里云容器服务:最原生的集成Docker和云服务
|
人工智能 运维 Kubernetes
阿里云容器服务AI助手2.0 - 新一代容器智能运维能力
2024年11月,阿里云容器服务团队进一步深度融合现有运维可观测体系,在场景上覆盖了K8s用户的全生命周期,正式推出升级版AI助手2.0,旨在更好地为用户使用和运维K8S保驾护航。
|
弹性计算 人工智能 资源调度
DeepSeek大解读系列公开课上新!阿里云专家主讲云上智能算力、Kubernetes容器服务、DeepSeek私有化部署
智猩猩「DeepSeek大解读」系列公开课第三期即将开讲,聚焦阿里云弹性计算助力大模型训练与部署。三位专家将分别讲解智能算力支撑、Kubernetes容器服务在AI场景的应用实践、以及DeepSeek一键部署和多渠道应用集成,分享云计算如何赋能大模型发展。欲观看直播,可关注【智猩猩GenAI视频号】预约。 (239字符)
|
监控 Kubernetes Cloud Native
基于阿里云容器服务Kubernetes版(ACK)的微服务架构设计与实践
本文介绍了如何基于阿里云容器服务Kubernetes版(ACK)设计和实现微服务架构。首先概述了微服务架构的优势与挑战,如模块化、可扩展性及技术多样性。接着详细描述了ACK的核心功能,包括集群管理、应用管理、网络与安全、监控与日志等。在设计基于ACK的微服务架构时,需考虑服务拆分、通信、发现与负载均衡、配置管理、监控与日志以及CI/CD等方面。通过一个电商应用案例,展示了用户服务、商品服务、订单服务和支付服务的具体部署步骤。最后总结了ACK为微服务架构提供的强大支持,帮助应对各种挑战,构建高效可靠的云原生应用。

相关产品

  • 容器计算服务
  • 容器服务Kubernetes版
  • 推荐镜像

    更多