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

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
容器镜像服务 ACR,镜像仓库100个 不限时长
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
简介: "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的理念管理和发布一个云原生应用。

相关实践学习
巧用云服务器ECS制作节日贺卡
本场景带您体验如何在一台CentOS 7操作系统的ECS实例上,通过搭建web服务器,上传源码到web容器,制作节日贺卡网页。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
6天前
|
Kubernetes Cloud Native Docker
云原生时代的容器化实践:Docker和Kubernetes入门
【10月更文挑战第37天】在数字化转型的浪潮中,云原生技术成为企业提升敏捷性和效率的关键。本篇文章将引导读者了解如何利用Docker进行容器化打包及部署,以及Kubernetes集群管理的基础操作,帮助初学者快速入门云原生的世界。通过实际案例分析,我们将深入探讨这些技术在现代IT架构中的应用与影响。
28 2
|
16天前
|
Kubernetes 监控 开发者
掌握容器化:Docker与Kubernetes的最佳实践
【10月更文挑战第26天】本文深入探讨了Docker和Kubernetes的最佳实践,涵盖Dockerfile优化、数据卷管理、网络配置、Pod设计、服务发现与负载均衡、声明式更新等内容。同时介绍了容器化现有应用、自动化部署、监控与日志等开发技巧,以及Docker Compose和Helm等实用工具。旨在帮助开发者提高开发效率和系统稳定性,构建现代、高效、可扩展的应用。
|
8天前
|
存储 Kubernetes Docker
【赵渝强老师】Kubernetes中Pod的基础容器
Pod 是 Kubernetes 中的基本单位,代表集群上运行的一个进程。它由一个或多个容器组成,包括业务容器、基础容器、初始化容器和临时容器。基础容器负责维护 Pod 的网络空间,对用户透明。文中附有图片和视频讲解,详细介绍了 Pod 的组成结构及其在网络配置中的作用。
【赵渝强老师】Kubernetes中Pod的基础容器
|
23天前
|
Kubernetes 监控 Cloud Native
|
16天前
|
Kubernetes 负载均衡 Cloud Native
云原生应用:Kubernetes在容器编排中的实践与挑战
【10月更文挑战第27天】Kubernetes(简称K8s)是云原生应用的核心容器编排平台,提供自动化、扩展和管理容器化应用的能力。本文介绍Kubernetes的基本概念、安装配置、核心组件(如Pod和Deployment)、服务发现与负载均衡、网络配置及安全性挑战,帮助读者理解和实践Kubernetes在容器编排中的应用。
47 4
|
17天前
|
Kubernetes 监控 Cloud Native
云原生应用:Kubernetes在容器编排中的实践与挑战
【10月更文挑战第26天】随着云计算技术的发展,容器化成为现代应用部署的核心趋势。Kubernetes(K8s)作为容器编排领域的佼佼者,以其强大的可扩展性和自动化能力,为开发者提供了高效管理和部署容器化应用的平台。本文将详细介绍Kubernetes的基本概念、核心组件、实践过程及面临的挑战,帮助读者更好地理解和应用这一技术。
51 3
|
20天前
|
运维 Kubernetes Cloud Native
云原生入门:Kubernetes和容器化的未来
【10月更文挑战第23天】本文将带你走进云原生的世界,探索Kubernetes如何成为现代软件部署的心脏。我们将一起揭开容器化技术的神秘面纱,了解它如何改变软件开发和运维的方式。通过实际的代码示例,你将看到理论与实践的结合,感受到云原生技术带来的革命性影响。无论你是初学者还是有经验的开发者,这篇文章都将为你开启一段新的旅程。让我们一起踏上这段探索之旅,解锁云原生技术的力量吧!
|
8天前
|
Kubernetes Ubuntu Linux
我应该如何安装Kubernetes
我应该如何安装Kubernetes
|
8天前
|
Kubernetes 监控 Java
如何在Kubernetes中配置镜像和容器的定期垃圾回收
如何在Kubernetes中配置镜像和容器的定期垃圾回收
|
1月前
|
Kubernetes Ubuntu Docker
从0开始搞K8S:使用Ubuntu进行安装(环境安装)
通过上述步骤,你已经在Ubuntu上成功搭建了一个基本的Kubernetes单节点集群。这只是开始,Kubernetes的世界广阔且深邃,接下来你可以尝试部署应用、了解Kubernetes的高级概念如Services、Deployments、Ingress等,以及探索如何利用Helm等工具进行应用管理,逐步提升你的Kubernetes技能树。记住,实践是最好的老师,不断实验与学习,你将逐渐掌握这一强大的容器编排技术。
118 1

相关产品

  • 容器计算服务
  • 容器服务Kubernetes版