1. 程式人生 > >如何將現有的應用遷移到Choerodon豬齒魚(下)

如何將現有的應用遷移到Choerodon豬齒魚(下)

本文件將介紹如何將現有的應用遷移到Choerodon豬齒魚平臺。主要分為以下幾個部分:

  • 應用環境搭建

  • 資料庫遷移

  • 應用遷移

  • 使用Choerodon豬齒魚

下面將以資產雲平臺遷移到Choerodon豬齒魚為例,詳細地介紹如何將一個一般應用遷移到Choerodon中,並使用Choerodon作為開發、釋出和部署的支撐平臺。

注:本手冊使用的Choerodon豬齒魚版本是 0.9版本

另外,在根據本文件執行遷移之前,請務必學習Docker、Kubernetes、Helm、Gitlab-CI等知識,儘量熟練掌握。

應用系統環境搭建

Choerodon豬齒魚平臺是一個PaaS平臺,其本身不提供應用系統的執行環境,使用者需要自主安裝Kubernetes叢集,一般來說一個應用系統需要有開發環境、測試環境和正式環境(如下圖所示),每一個環境都是一個獨立的Kubernetes叢集。當然使用者也可以根據具體的需求來調整,例如開發環境和測試環境共用一套Kubernetes叢集。

所以,利用Choerodon豬齒魚PaaS能力的第一項任務就是搭建應用系統的執行環境。

準備伺服器

Choerodon豬齒魚支援本地化部署,也支援公用雲部署。Kubernetes叢集的硬體要求與應用系統的要求一致,當然考慮到應用系統已經完全容器化,所以使用者可以根據自身需求動態定製Kubernetes叢集的規模(使用公有云可以非常方便的做到這一點)。

以下表格是一個最低配置要求。

系統

配置

數量

用途

說明

CentOS7.2+

2Core 4G記憶體 512G硬碟

1

NFS檔案伺服器

 

CentOS7.2+

4Core 16G記憶體 64G硬碟

3

k8s叢集

根據自身應用規模增加或減少節點個數


另外,伺服器網路需能連線外網,能夠與Choerodon豬齒魚系統連線。還有,作業系統要求是Centos 7.2及以上版本。

安裝Kubernetes叢集

  1. Choerodon豬齒魚整理了詳細方便的Kubernetes安裝文件
  2. 在安裝時,請詳細閱讀安裝文件前部分,其中涉及到前置要求與約定、防火牆及埠檢測、同步伺服器時區和同步伺服器時間等

Kubernetes叢集的安裝採用標準安裝方式即可,Choerodon豬齒魚整理了詳細方便的Kubernetes安裝文件,可供參考。其中一共提供三種安裝方式,即本地虛擬機器安裝模式、伺服器安裝模式、雲環境安裝模式,使用者可以根據自身需求選擇。

資料庫遷移

如果原有環境沒有資料,可以忽略本節。

如果新的叢集能夠連通你原有資料庫,則你可以選擇使用原有的資料庫連線資訊而無需對資料庫作任何處理。如果不能連通原有資料庫,考慮備份資料庫配置、資料等關鍵資料。

具體操作如下:

  1. 確定需要備份的資料,如配置,資料等,具體記憶體請根據實際資料庫進行調整。
  2. 部署新資料庫到新叢集中。建議使用helm部署,具體操作可以參照mysql部署。
  3. 使用資料庫自帶工具恢復資料到新資料庫。
  4. 檢查資料庫是否正常執行。

應用遷移

應用遷移主要是將應用系統的程式碼遷移到Choerodon豬齒魚中,並通過Choerodon豬齒魚的開發流水線、部署流水線等進行應用系統的開發和部署等工作。應用遷移主要包括Choerodon豬齒魚系統的建立專案、建立應用、改造原始碼庫、將原始碼庫遷移到Choerodon、生成新的應用版本、建立應用系統環境、部署版本、建立網路、建立域名和測試訪問等步驟。請使用者按照此步驟順序進行。

如果是SaaS版本的使用者需要先申請開通組織。

建立專案

專案是最小粒度的管理層次。在組織下建立專案,則建立的專案屬於這個組織。

關於Choerodon豬齒魚中專案的詳細資訊,以及相關操作等可以參考專案管理

  1. 使用“組織管理員”角色登入系統
  2. 點選組織,例如“漢得研發”,進入到組織層的管理選單

3.在組織層的管理選單中,點選:“漢得研發” -> 左上角的選單 -> “組織設定” -> “專案管理”。進入到專案管理與建立功能介面。

4.在“專案管理”介面,單擊“建立專案”,在彈出的視窗中填寫專案編碼、專案名稱。

例如,

專案編碼:hand-rdc-halm

專案名稱:漢得資產雲平臺

5.點選“建立”,即可建立完成。專案建立完成之後,使用者就可以使用Choerodon豬齒魚的系統功能,例如知識管理、敏捷管理、開發流水線、測試管理、部署流水線等。

建立應用

應用是滿足使用者某些需求的程式程式碼的集合,一個應用可以是一個單體應用,也可以是微服務系統的一個服務。服務端相關應用,例如Java、Python、C/C++/C#、Go、.NET等應用,以及前端相關應用,例如ReactJs、VueJs、AngularJs等等,理論上講沒有什麼限制。

關於如何建立應用,以及相關操作和資訊等,可以參考Choerodon官網的 應用管理

1. 切換到專案層,例如“漢得資產雲平臺”。

2. 在組織層的管理選單中,點選:“漢得資產雲平臺” -> 左上角的選單 -> “應用管理” -> “應用”,進入到應用建立功能介面。

3. 在建立應用的彈框中填寫應用編碼、應用名稱和選擇“應用模板”。

例如,

編碼:halm-dev

名稱:資產雲應用

選擇應用模板:MicroService

關於Choerodon的應用模板,可以參考應用模板。如果是遷移原庫的程式碼,則隨便選擇一個即可。

4.建立完成應用之後,Choerodon會在Gitlab中建立先關的程式碼庫。

例如:https://code.choerodon.com.cn/hand-rdc-halm/halm-dev

注意:強烈建議不要直接在Gitlab中操作程式碼庫,Choerodon已經封裝了對Gitlab庫的增刪改查等操作,例如建立庫、建立分支、刪除分支、合併程式碼等,所以這些操作儘量在Choerodon上進行操作。

應用容器化配置

Choerodon豬齒魚秉承雲原生的理念,基於平臺的應用需要進行容器化改造才能夠使用Choerodon進行開發和部署。在本節中將給大家介紹Choerodon容器化的一些概念、如何構建應用的基礎映象,以及為原始碼庫增加相關的配置使其滿足Choerodon容器化要求。

重要:應用的容器化配置是整個遷移過程中最難的部分,在此需要熟悉、掌握Kubernetes、Helm等。

Choerodon豬齒魚應用容器化概念

在Choerodon豬齒魚中,使用Helm管理Kubernetes包等,Helm之於Kubernetes好比yum之於RHEL,或者apt-get之於Ubuntu。Helm使用Charts管理應用,Charts就好像RPM一樣,裡面描述了應用及其依賴關係。

所以,在Choerodon的標準應用程式碼結構中一定要包含charts資料夾,如下截圖,這是一個後端專案的標準結構。

  • templates為模板檔案,將模板檔案渲染成實際檔案,然後傳送給 Kubernetes。

  • values.yaml為模板的預定義變數。

  • Chart.yaml包含 chart 的版本資訊說明,您可以從模板中訪問它。

  • deployment.yaml:建立 Kubernetes 部署的基本清單。

  • service.yaml:為您的部署建立服務端點的基本清單。

  • _helpers.tpl:放置模板助手的地方,您可以在整個 chart 中重複使用。

構建應用基礎映象

什麼是應用基礎映象?先來看一張圖,一般在應用基礎映象中預先安裝了工具類、依賴包、系統基礎一致性設定等應用程式構建、測試、執行等相關的基礎依賴工具和系統配置。

資產雲應用為PHP專案,那麼應用基礎映象中就應該為PHP執行環境,首先去DockerHub上搜索是否有官方提供的公共映象,可以對官方提供的公共映象做進一步定製,生成需要的映象,也可以從一個基礎的只有系統的映象進行定製。

1. 編寫Dockerfile定製基礎映象時,儘量將映象大小往小的做,映象層數往少的寫,僅新增應用執行時必須的相關元件,不要新增不必要的東西進入。在專案根目錄下新建名為Dockerfile.base檔案,在檔案中寫入Dockerfile定義的資訊,例如:

 1 # 以ubuntu作為系統
 2 FROM ubuntu:16.04
 3 # 設定環境變數
 4 ENV NODE_HOME=/usr/local/node8
 5 ENV PATH=$NODE_HOME/bin:$PATH
 6 ENV COMPOSER_ALLOW_SUPERUSER=1
 7 ENV COMPOSER_HOME=/composer
 8 ENV USER=root
 9 ENV SASS_BINARY_PATH=/opt/linux-x64-57_binding.node
10
11 # 新增源並安裝所需要的軟體
12 RUN echo "deb-src http://archive.ubuntu.com/ubuntu xenial main restricted #Added by software-properties" > /etc/apt/sources.list \
13    && echo "deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted" >> /etc/apt/sources.list \
14    && echo "deb-src http://mirrors.aliyun.com/ubuntu/ xenial main restricted multiverse universe #Added by software-properties" >> /etc/apt/sources.list \
15    && echo "deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted" >> /etc/apt/sources.list \
16    && echo "deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted multiverse universe #Added by software-properties" >> /etc/apt/sources.list \
17    && echo "deb http://mirrors.aliyun.com/ubuntu/ xenial universe" >> /etc/apt/sources.list \
18    && echo "deb http://mirrors.aliyun.com/ubuntu/ xenial-updates universe" >> /etc/apt/sources.list \
19    && echo "deb http://mirrors.aliyun.com/ubuntu/ xenial multiverse" >> /etc/apt/sources.list \
20    && echo "deb http://mirrors.aliyun.com/ubuntu/ xenial-updates multiverse" >> /etc/apt/sources.list \
21    && echo "deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse" >> /etc/apt/sources.list \
22    && echo "deb-src http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse #Added by software-properties" >> /etc/apt/sources.list \
23    && echo "deb http://archive.canonical.com/ubuntu xenial partner" >> /etc/apt/sources.list \
24    && echo "deb-src http://archive.canonical.com/ubuntu xenial partner" >> /etc/apt/sources.list \
25    && echo "deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted" >> /etc/apt/sources.list \
26    && echo "deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted multiverse universe #Added by software-properties" >> /etc/apt/sources.list \
27    && echo "deb http://mirrors.aliyun.com/ubuntu/ xenial-security universe" >> /etc/apt/sources.list \
28    && echo "deb http://mirrors.aliyun.com/ubuntu/ xenial-security multiverse" >> /etc/apt/sources.list \
29
30    && apt-get update \
31    && apt-get install -y gcc g++ make xz-utils axel libsass-dev libmcrypt-dev curl supervisor rpm libaio1 libaio-dev \
32    && apt-get install -y nginx \
33    && apt-get install -y php-fpm php-pdo-mysql php-pdo-sqlite php-curl php-redis php-mongodb \
34                          php-gd php-mcrypt php-mbstring php-xml php-ldap php-imap php-zip php-dom php-soap php-dev phpunit \
35
36    && apt-get autoclean \
37    && apt-get clean \
38    && rm -rf /var/lib/apt/lists/* \
39    && echo "daemon off;" >> /etc/nginx/nginx.conf \
40    && sed -i "s/^user\swww-data;/user root;/g" /etc/nginx/nginx.conf \
41    && sed -i "s/^user\s=\swww-data/user = root/g" /etc/php/7.0/fpm/pool.d/www.conf \
42    && sed -i "s/^group\s=\swww-data/group = root/g" /etc/php/7.0/fpm/pool.d/www.conf \
43    && sed -i "s/^;daemonize\s*=\s*yes/daemonize = no/g" /etc/php/7.0/fpm/php-fpm.conf \
44    && sed -i "s/^;mbstring\.internal_encoding\s*=.*$/mbstring\.internal_encoding = UTF-8/g" /etc/php/7.0/fpm/php.ini \
45    && sed -i "s/^;mbstring\.internal_encoding\s*=.*$/mbstring\.internal_encoding = UTF-8/g" /etc/php/7.0/cli/php.ini \
46    && echo "[program:nginx]\ncommand=/usr/sbin/nginx" >> /etc/supervisor/conf.d/nginx.conf \
47    && echo "[program:php-fpm7.0]\ncommand=/usr/sbin/php-fpm7.0 --nodaemonize --fpm-config /etc/php/7.0/fpm/php-fpm.conf -R" >> /etc/supervisor/conf.d/php.conf \
48    && mkdir /run/php \
49
50    && sed -i "s/\[supervisord\]/[supervisord]\nnodaemon=true\nuser=root\n/g" /etc/supervisor/supervisord.conf \
51
52    && axel -n 20 https://getcomposer.org/download/1.4.2/composer.phar \
53    && mv composer.phar /usr/local/bin/composer \
54    && chmod +x /usr/local/bin/composer \
55    && composer config -g repo.packagist composer https://packagist.phpcomposer.com \
56
57    && cd /usr/local \
58    && axel -n 10 https://nodejs.org/dist/v8.2.1/node-v8.2.1-linux-x64.tar.xz \
59    && xz -d node-v8.2.1-linux-x64.tar.xz \
60    && tar xvf node-v8.2.1-linux-x64.tar \
61    && unlink /usr/local/node-v8.2.1-linux-x64.tar \
62    && mv node* node8 \
63    && chown -R root:root node8 \
64    && npm install cnpm -g --registry=https://registry.npm.taobao.org \
65    && npm install nrm -g -registry=https://registry.npm.taobao.org \
66    && nrm use taobao
67 # 暴露埠
68 EXPOSE 80 443
69 # 設定預設啟動命令
70 CMD ["/usr/bin/supervisord", "-c", "/etc/supervisor/supervisord.conf"]

2. 在專案根目錄下執行命令進行應用基礎映象構建,構建好之後推送映象到映象倉庫,例如registry.choerodon.com.cn/hand-rdc-halm倉庫下(注意:使用者也可以根據自身具體的需求,選擇映象庫地址,例如DockerHub等),這個倉庫在Choerodon建立專案時會自動建立:

1 docker build -t registry.choerodon.com.cn/hand-rdc-halm/php:ubuntu-16.04 -f Dockerfile.base .

3. 將構建好的映象推送到映象倉庫中:

1 docker login registry.choerodon.com.cn
2 docker push -t registry.choerodon.com.cn/hand-rdc-halm/php:ubuntu-16.04

在原來程式碼庫中增加Dockerfile、和Helm Chart

 Dockerfile

在有應用基礎映象的基礎上編寫應用的Dockerfile那就很容易了,只需要將程式放入基礎映象特定的目錄,設定好映象執行前置處理和啟動命令即可。

本事例中,應用執行時需連結資料庫,但資料庫相關資訊是執行時才會知道的,那麼解決方式是將這些資訊配置為環境變數,映象執行時從環境變數中獲取這些資訊並替換到對應的配置檔案中去。

第一步:修改配置檔案並編寫啟動指令碼

在專案根目錄下新建auto_devops資料夾,將配置檔案拷貝至該資料夾下,下面為配置檔案中資料庫配置片段,將會改變的值全部使用大寫的字母進行替換,替換時需保證在此檔案中唯一。

 1'dbconfig' =>
 2    array(
 3        'db_host_name' => 'DB_HOST_NAME',
 4        'db_host_instance' => 'SQLEXPRESS',
 5        'db_user_name' => 'DB_USER_NAME',
 6        'db_password' => 'DB_PASSWORD',
 7        'db_name' => 'DB_NAME',
 8        'db_type' => 'mysql',
 9        'db_port' => 'DB_PORT',
10        'db_manager' => 'MysqliManager'
11    ),

然後在auto_devops資料夾新建docker-entrypoint.sh檔案編寫啟動指令碼,這個指令碼將替換配置檔案中大寫的那些變數名。

1#!/bin/bash
2
3sed -i "s DB_HOST_NAME $DB_HOST_NAME g"  /var/www/config.php 
4sed -i "s DB_USER_NAME $DB_USER_NAME g"  /var/www/config.php 
5sed -i "s DB_PASSWORD $DB_PASSWORD g"  /var/www/config.php 
6sed -i "s DB_NAME $DB_NAME g"  /var/www/config.php 
7sed -i "s DB_PORT $DB_PORT g"  /var/www/config.php 
8
9exec "[email protected]"

第二步:編寫應用Dockerfile

在專案根目錄下新建名為Dockerfile的檔案

 1# 應用基礎映象
 2FROM registry.choerodon.com.cn/hand-rdc-halm/php:ubuntu-16.04
 3# 將程式複製到/var/www/目錄中
 4COPY . /var/www/
 5# 將配置檔案複製到對應目錄中
 6COPY ./auto_devops/config.php    /var/www/config.php
 7# 將替換環境變數的指令碼複製到映象中
 8COPY ./auto_devops/docker-entrypoint.sh      /docker-entrypoint.sh
 9# 預設執行映象時執行的命令
10ENTRYPOINT ["/bin/sh", "/docker-entrypoint.sh"]
11# 啟動服務
12CMD ["/usr/bin/supervisord", "-c", "/etc/supervisor/supervisord.conf"]

▧ Helm Chart

在編寫Helm Chart之前你需要了解Kubernetes中的物件及其概念,本事例中執行應用只需定義一個deployment物件即可。

第一步:建立目錄

在專案根目錄下建立如下目錄結構,首先建立一個名為chart的資料夾,再建立一個與應用名相同的資料夾,本事例為Helm Chart,在halm-dev資料夾中再建立一個templates目錄。

1chart
2└── halm-dev
3    ├── Chart.yaml
4    ├── templates
5    │   ├── _helpers.tpl
6    │   └── deployment.yaml
7    └── values.yaml

第二步:編寫_helpers.tpl檔案

templates資料夾下將一些公共的lable或值定義到 _helpers.tpl檔案中:

1{{/* vim: set filetype=mustache: */}}
2{{- /*
3service.labels.standard prints the standard service Helm labels.
4The standard labels are frequently used in metadata.
5*/ -}}
6{{- define "service.labels.standard" -}}
7choerodon.io/release: {{ .Release.Name | quote }}
8{{- end -}}

第三步:編寫deployment.yml檔案

templates資料夾下建立一個名為deployment.yml的檔案,內容如下:

 1apiVersion: apps/v1beta2
 2kind: Deployment
 3metadata:
 4  name: {{ .Release.Name }}
 5  labels:
 6{{ include "service.labels.standard" . | indent 4 }}
 7spec:
 8  replicas: {{ .Values.replicaCount }}
 9  selector:
10    matchLabels:
11{{ include "service.labels.standard" . | indent 6 }}
12  template:
13    metadata:
14      labels:
15{{ include "service.labels.standard" . | indent 8 }}
16    spec:
17      containers:
18        - name: {{ .Release.Name }}
19          image: "{{ .Values.image.repository }}:{{ .Chart.Version }}"
20          imagePullPolicy: {{ .Values.image.pullPolicy }}
21          env:
22{{- range $name, $value := .Values.env }}
23{{- if not (empty $value) }}
24          - name: {{ $name | quote }}
25            value: {{ $value | quote }}
26{{- end }}
27{{- end }}
28          ports:
29            - name: http
30              containerPort: {{ .Values.service.port }}
31              protocol: TCP
32          resources:
33{{ toYaml .Values.resources | indent 12 }}

第四步:編寫Chart.yaml檔案

halm-dev資料夾中編寫Chart.yaml檔案,這個檔案中寫明應用的的相關資訊。

 1# api版本
 2apiVersion: v1
 3# 應用版本
 4appVersion: "1.0"
 5# 應用描述
 6description: A Helm chart for Kubernetes
 7# 應用名稱
 8name: halm-dev
 9# 應用chart版本
10version: 0.1.0

第五步:編寫檔案

在halm-dev資料夾中編寫values.yaml檔案,這個檔案中編寫templates資料夾中deployment.yml檔案會用到的變數及預設值。

 1# Declare variables to be passed into your templates.
 2
 3replicaCount: 1
 4
 5image:
 6  repository: registry.choerodon.com.cn/hand-rdc-halm/halm-dev
 7  pullPolicy: Always
 8
 9env:
10  SITE_URL: http://localhost:8081/
11  DB_HOST_NAME: 
12  DB_USER_NAME: 
13  DB_PASSWORD: 
14  DB_NAME: 
15  DB_PORT: "3306"
16
17logs:
18  parser: nginx
19
20resources: 
21  # We usually recommend not to specify default resources and to leave this as a conscious
22  # choice for the user. This also increases chances charts run on environments with little
23  # resources,such as Minikube. If you do want to specify resources,uncomment the following
24  # lines,adjust them as necessary,and remove the curly braces after 'resources:'.
25  limits:
26    # cpu: 100m
27    # memory: 2Gi
28  requests:
29    # cpu: 100m
30    # memory: 1Gi

更多如何charts中詳細的講解,可以參考Choerodon官網文件 從yaml到helm。

CI持續整合配置

在上節“應用容器化配置”中,有提到Choerodon標準的應用原始碼結構中必須包含charts檔案件。同樣,Choerodon使用Gitlab-CI作為CI工具,所以需要在應用原始碼中加上.gitlab-ci.yml檔案。

在CI中主要的工作就是進行映象構建並且生成Chart包,最後將Chart包上傳至Choerodon,與Choerodon進行整合。

在專案根目錄下新建.gitlab-ci.yml檔案,貼上以下內容:

1# 設定CI執行時的環境映象
 2image: registry.cn-hangzhou.aliyuncs.com/choerodon-tools/cibase:0.6.0
 3
 4# 設定階段,這裡只進行映象構建和生成Chart包,所以定義為一個階段即可
 5stages:
 6- docker-build
 7
 8docker-build:
 9  stage: docker-build
10  # 階段中需要執行的命令
11  script:
12  - docker_build
13  - chart_build
14
15# 這裡是最為關鍵的,定義了一個全域性指令碼,在每一個階段執行前都將執行下面程式碼從Choerodon平臺中獲取相應變數及封裝的shell函式。
16.auto_devops: &auto_devops |
17    http_status_code=`curl -o .auto_devops.sh -s -m 10 --connect-timeout 10 -w %{http_code} "${CHOERODON_URL}/devops/ci?token=${Token}"`
18    if [ "$http_status_code" != "200" ]; then
19      cat .auto_devops.sh
20      exit 1
21    fi
22    source .auto_devops.sh
23    # 重寫docker_build函式
24    function docker_build(){
25        docker build --pull -t ${DOCKER_REGISTRY}/${GROUP_NAME}/${PROJECT_NAME}:${CI_COMMIT_TAG} .
26        docker push ${DOCKER_REGISTRY}/${GROUP_NAME}/${PROJECT_NAME}:${CI_COMMIT_TAG}
27    }
28
29before_script:
30  - *auto_devops

更多如何配置符合Choerodon標準和要求的.gitlab-ci.yml檔案,請參考Choerodon官網 持續整合

將原來程式碼庫替換到Choerodon程式碼庫

經過了“應用容器化配置”和“CI持續整合配置”兩步之後,將得到一個包含了charts和.gitlab-ci.yml檔案的新的程式碼庫(charts資料夾和.gitlab-ci.yml檔案一定是放在程式碼庫的根目錄),現在就將程式碼庫同步到Choerodon對應的程式碼庫,替換生成的標準程式碼庫。

Git相關的命令如下:

1Git相關的命令如下:
2git commit -m "Change repo." # 先把所有為儲存的修改打包為一個commit
3git remote remove origin # 刪掉原來git源
4git remote add origin [YOUR NEW .GIT URL] # 將新源地址寫入本地版本庫配置檔案
5git push -u origin master # 提交所有程式碼

生成新的版本

當在上一步“將原來程式碼庫替換到Choerodon程式碼庫”中提交程式碼到Choerodon的遠端新庫的時候,Choerodon會自動生成一個master分支上的開發版本,即“2018.8.27-234043-master”,這個版本是可以部署執行的,當然,往往生成的第一個版本會由於各種BUG等,需要經過反覆地除錯才可以。

可以進入到Choerodon系統中檢視生成的版本,系統路徑:“漢得研發”(組織)->“<你的專案>”->應用管理->應用版本。如下圖所示。

建立一個環境

有了可部署的版本之後,就可以把此版本部署到環境中去了。在步驟“應用系統環境搭建”中已經安裝好了應用系統執行的Kubernetes叢集環境,並且在“資料庫遷移”步驟中已經安裝部署好資料庫。

1. 進入到的Choerodon豬齒魚建立環境頁面,系統路徑:“漢得研發”(組織)->“<你的專案>”->部署流水線->環境流水線

2. 單擊“建立環境”按鈕,在彈出框中輸入環境編碼、環境名稱和環境描述。

例如,

  • 環境編碼:halm-dev

  • 環境名稱:開發環境

  • 環境描述:開發環境

3. 儲存時,系統會跳出來另一個對話方塊,如下圖,需要將這段命令在步驟“應用系統環境搭建”中建立的Kubernetes環境中執行,以安裝Choerodon Agent。這一步是必須要執行的,關於Choerodon Agent可以參考官網 Choerodon Agent。

4. 命令是具體應用、具體環境而不同的,所以,以下是筆者的環境生產的命令,請不要複製執行。

1helm install --repo=http://chart.choerodon.com.cn/choerodon/c7ncd/ \
2    --namespace=halm-dev \
3    --name=halm-dev \
4    --version=0.9.7 \
5    --set config.connect=ws://devops.service.choerodon.com.cn/agent/ \
6    --set config.token=a932598f-8945-449a-9dc7-7a2db489eff6 \
7    --set config.envId=162 \
8    --set rbac.create=true \
9    choerodon-agent

5. 如果在Kubernetes中執行成功,則可以看到“開發環境”顯示“執行中”,否則就是不成功。

部署新生成的版本

可部署版本就緒,環境就緒,現在就還要把可部署的版本部署到環境中。

1.進入到的Choerodon豬齒魚應用部署頁面,系統路徑:“漢得研發”(組織)->“<你的專案>”->部署流水線->應用部署

2.選擇應用及版本。

例如,

  • 選擇應用:資產雲應用(halm-dev)

選擇版本:2018.8.27-234043-master

 

3.選擇環境及修改配置資訊。

例如,

  • 選擇環境:開發環境

還有,下面的配置資訊可以根據自身需求修改。

4.選擇部署模式。

例如,

  • 選擇部署模式:新建例項

對於第一次部署,需要選擇“新建例項”。

 

5.確認資訊及部署。

 

6.最後,確認檢查好資訊之後,部署即可。可以在“例項”介面檢視部署的情況。最終部署的例項名稱為:“halm-dev-9fc8”。

建立網路

部署完成應用之後,還不能夠被外部訪問,需要建立網路和域名。現在先建立網路。

1. 進入到Choerodon豬齒魚網路頁面,系統路徑:“漢得研發”(組織)->“<你的專案>”->部署流水線->網路

2.單擊“建立網路”,彈出建立網路介面。填寫相關的欄位資訊。

例如,

  • 環境:選擇“開發環境”。

  • 目標物件:選擇“選擇例項”。

  • 應用名稱:選擇“資產雲應用

  • 選擇例項:選擇“halm-dev-9fc8”,就是上一步部署生成的例項。

  • 網路配置:選擇“ClusterIP”

  • 外部IP:NULL

  • 埠:80,映象內部應用的埠

  • 目標埠:80,K8s中已經部署的應用對外提供服務的埠

  • 網路名稱:halm-dev-3491


 

建立域名

有了網路還要有域名才可以。

1. 進入到Choerodon豬齒魚域名頁面,系統路徑:“漢得研發”(組織)->“<你的專案>”->部署流水線->域名。

2. 單擊“建立域名”,在彈出頁面中填寫相關資訊。

測試訪問

建立好域名之後,使用URL:handalm.hand-china.com 訪問。

Choerodon豬齒魚學習和介紹資源彙集

遷移完畢,下面跟大家介紹一下日常開發和部署等如何使用Choerodon。本部分包含專案管理、開發、釋出版本、部署等操作,其中沒有具體的步驟,而是把相關的學習和介紹資源彙集在一起,方便使用者查詢和學習。

知識管理

知識管理主要是提供Wiki的功能,使用者可以使用知識管理做專案的立項、需求分析、應用設計等,同時也可以用於記錄Scrum的回顧會議等,總之,其可以作為專案日常文件編輯與共享的媒介

資料:

知識管理快速入門

知識管理使用者手冊

[官網視訊資料]

[知識管理視訊]

敏捷管理

敏捷管理主要是提供專案管理的功能,包括需求管理(故事、使用者故事地圖、問題)、計劃(待辦事項、衝刺)、執行(活動衝刺、看板),以及專案管理涉及的資料分析,例如累計流圖、燃盡圖等。

資料:

敏捷管理快速入門

敏捷管理使用者手冊

[官網視訊資料]

[敏捷管理視訊]

開發

開發對應的功能包括開發流水線、應用管理。主要作用是建立管理應用,以及開發應用的時候使用的分支模型和版本控制等。軟體工程師日常開發對應的流程操作等都在此進行。

資料:

建立一個專案

建立一個Nginx應用

建立一個後端應用

建立一個前端應用

應用管理使用者手冊

開發流水線使用者手冊

[官網視訊資料]

[開發視訊]

測試

測試管理為使用者提供敏捷化的持續測試工具,包括測試用例管理、測試迴圈、測試分析等,可以有效地提高軟體測試的效率和質量,提高測試的靈活性和視覺化水平。

資料:

使用測試管理

測試管理使用者手冊

[官網視訊資料]

持續釋出與部署

藉助部署流水線,使用者客戶可以方便地管理各種使用Choerodon開發部署的應用服務,包括應用啟停、狀態監控,以及應用對應的版本控制、容器管理等,同時還包括應用涉及到的各種資源管理,例如網路、域名、資料庫服務、快取服務等。

資料:

部署流水線使用者手冊

[官網視訊資料]

[持續交付視訊]

關於Choerodon豬齒魚

Choerodon豬齒魚是一個開源企業服務平臺,是基於Kubernetes的容器編排和管理能力,整合DevOps工具鏈、微服務和移動應用框架,來幫助企業實現敏捷化的應用交付和自動化的運營管理的開源平臺,同時提供IoT、支付、資料、智慧洞察、企業應用市場等業務元件,致力幫助企業聚焦於業務,加速數字化轉型。

大家可以通過以下社群途徑瞭解豬齒魚的最新動態、產品特性,以及參與社群貢獻:

歡迎加入Choerodon豬齒魚社群,共同為企業數字化服務打造一個開放的生態平臺。