1. 程式人生 > >阿里雲容器服務Kubernetes之Jenkins X(1)-安裝部署實踐篇

阿里雲容器服務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。

作為一個開發者,有一個學習的氛圍跟一個交流圈子特別重要這是一個我的QQ群架構華山論劍:836442475,不管你是小白還是大牛歡迎入駐 ,分享BAT,阿里面試題、面試經驗,討論技術, 大家一起交流學習成長!

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 [email protected]:/etc/kubernetes/kube.conf $HOME/.kube/config
[email protected]'s password:
kube.conf                                                                                                                                       100% 5472     8.4MB/s   00:00
# scp 
[email protected]
:/usr/local/bin/helm /usr/local/bin/helm [email protected]'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元件的安裝情況:

[[email protected] ~]# 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填入後, 安裝部署完成:imageimage

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.comimage 訪問http://monocular.jx.aliyunk8s.comimage 訪問http://nexus.jx.aliyunk8s.comimage docker-registry服務的訪問有問題(暫時未花過多時間除錯), 但我們會在下一篇中演示如何讓jenkins x使用阿里雲容器映象服務來管理容器映象;下一篇文章也會使用jenkins x建立一個spring應用並演示如何使用GitOps的理念管理和釋出一個雲原生應用。

我們提供免費的架構資料 以及免費的解答

不懂得問題都可以來問我們老師,之後還會有職業生涯規劃,以及面試指導

我們每天晚上八點也有公開課免費學習:

10年架構師分享經驗,Dubbo、Redis、Netty、zookeeper、Spring cloud、分散式、高併發等架構技術