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

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

  • 應用環境搭建前端

  • 數據庫遷移node

  • 應用遷移mysql

  • 使用Choerodon豬齒魚linux

下面將以資產雲平臺遷移到Choerodon豬齒魚爲例,詳細地介紹如何將一個通常應用遷移到Choerodon中,並使用Choerodon做爲開發、發佈和部署的支撐平臺。nginx

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

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

應用系統環境搭建

Choerodon豬齒魚平臺是一個PaaS平臺,其自己不提供應用系統的運行環境,用戶須要自主安裝Kubernetes集羣,通常來講一個應用系統須要有開發環境、測試環境和正式環境(以下圖所示),每個環境都是一個獨立的Kubernetes集羣。固然用戶也能夠根據具體的需求來調整,例如開發環境和測試環境共用一套Kubernetes集羣。github

因此,利用Choerodon豬齒魚PaaS能力的第一項任務就是搭建應用系統的運行環境。redis

準備服務器

Choerodon豬齒魚支持本地化部署,也支持公用雲部署。Kubernetes集羣的硬件要求與應用系統的要求一致,固然考慮到應用系統已經徹底容器化,因此用戶能夠根據自身需求動態定製Kubernetes集羣的規模(使用公有云能夠很是方便的作到這一點)。sql

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

系統

配置

數量

用途

說明

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做爲系統
 2FROM ubuntu:16.04
 3# 設置環境變量
 4ENV NODE_HOME=/usr/local/node8
 5ENV PATH=$NODE_HOME/bin:$PATH
 6ENV COMPOSER_ALLOW_SUPERUSER=1
 7ENV COMPOSER_HOME=/composer
 8ENV USER=root
 9ENV SASS_BINARY_PATH=/opt/linux-x64-57_binding.node
10
11# 添加源並安裝所須要的軟件
12RUN 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# 暴露端口
68EXPOSE 80 443
69# 設置默認啓動命令
70CMD ["/usr/bin/supervisord", "-c", "/etc/supervisor/supervisord.conf"]

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

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

3. 將構建好的鏡像推送到鏡像倉庫中:

1docker login registry.choerodon.com.cn
2docker 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 "$@"

第二步:編寫應用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豬齒魚社區,共同爲企業數字化服務打造一個開放的生態平臺。

相關文章
相關標籤/搜索