应用服务配置

    前置条件

    1. 已部署安装Choerodon 猪齿鱼,并使用默认的 admin 用户名和密码登录了 Choerodon 系统。
    2. 默认的 admin 用户进入 Choerodon 系统后,默认拥有一个组织并为该组织的组织管理员角色。关于Choerodon角色的详情,请移步角色管理。

    3. 已完成项目创建及团队成员建设。

    4. 已在Choerodon项目下创建应用服务,并配置了 Git,包括下载安装、设置等。

    Choerodon猪齿鱼秉承云原生的理念,基于平台的应用需要进行容器化改造才能够使用Choerodon进行开发和部署。在本节中将给大家介绍Choerodon容器化的一些概念, 以及为原代码库增加相关的配置使其满足Choerodon容器化要求。

    容器化的第一步是编写合适的, Dockerfile定义了如何将一个可执行程序打包成镜像. 例如: 一个SpringBoot项目, 在maven构建之后会生成一个可执行的jar包, 基于这个jar包可以打包成一个镜像, 最简单的Dockerfile如下:

    应用Helm配置

    所以, 在Choerodon的标准应用代码结构中一定要包含charts文件夹,如下截图,这是一个后端项目的标准结构。

    Chart包结构:

    1. ├── charts
    2. └── choerodon-todo-servie
    3. ├── Chart.yaml 包含关于chart的的信息的YAML文件
    4. ├── README.md 可选:chartREADME文件, 简单介绍Chart(例如: Chart的用法用途, 环境变量)
    5. ├── templates 这个目录下包含了多个模板文件以结合配置值生成有效的Kubernetes manifest文件
    6. ├── deployment.yaml 创建 Kubernetes 部署的基本清单。
    7. ├── _helpers.tpl 可选: 放置模板助手的地方,您可以在整个 chart 中重复使用
    8. ├── ingress.yaml 可选: 为部署配置Ingress, 以通过域名访问服务
    9. ├── pre-config-config.yaml 可选: 为部署配置前置job, 用于初始化配置中心
    10. ├── pre-config-db.yaml 可选: 为部署配置前置job, 用于初始化数据库
    11. └── service.yaml 可选: 为您的部署创建服务端点的基本清单。
    12. └── values.yaml 为模板的预定义变量。

    第一步: 创建目录 在项目根目录下创建如下目录结构,首先创建一个名为charts的文件夹,再创建一个与应用名相同的文件夹,在此处示例为choerodon-todo-servie,在其下创建如上文Chart包结构所示的文件

    第二步: 编写_helpers.tpl文件 在 templates文件夹下将一些公共的lable或值定义到 _helpers.tpl文件中:

    1. apiVersion: {{ include "app.deployment.apiVersion" . }}
    2. kind: Deployment
    3. metadata:
    4. name: {{ .Release.Name }}
    5. labels:
    6. {{ include "service.labels.standard" . | indent 4 }}
    7. {{ include "service.logging.deployment.label" . | indent 4 }}
    8. spec:
    9. replicas: {{ .Values.replicaCount }}
    10. selector:
    11. matchLabels:
    12. {{ include "service.labels.standard" . | indent 6 }}
    13. template:
    14. metadata:
    15. labels:
    16. {{ include "service.labels.standard" . | indent 8 }}
    17. {{ include "service.microservice.labels" . | indent 8 }}
    18. annotations:
    19. {{ include "service.monitoring.pod.annotations" . | indent 8 }}
    20. spec:
    21. containers:
    22. - name: {{ .Release.Name }}
    23. image: "{{ .Values.image.repository }}:{{ .Chart.Version }}"
    24. imagePullPolicy: {{ .Values.image.pullPolicy }}
    25. env:
    26. {{- range $name, $value := .Values.env.open }}
    27. {{- if not (empty $value) }}
    28. - name: {{ $name | quote }}
    29. value: {{ $value | quote }}
    30. {{- end }}
    31. {{- end }}
    32. ports:
    33. - name: http
    34. containerPort: {{ .Values.service.port }}
    35. readinessProbe:
    36. exec:
    37. failureThreshold: 3
    38. initialDelaySeconds: 60
    39. periodSeconds: 10
    40. successThreshold: 1
    41. timeoutSeconds: 10
    42. resources:
    43. {{ toYaml .Values.resources | indent 12 }}

    第四步:编写Chart.yaml文件 在halm-dev文件夹中编写 Chart.yaml文件,这个文件中写明应用的的相关信息。

    第五步:编写文件 在charts/choerodon-todo-service文件夹中编写 values.yaml文件,这个文件中编写 templates文件夹中 deployment.yml文件(以及其它清单文件)会用到的变量及默认值。

    1. # Default values for manager-service.
    2. # This is a YAML-formatted file.
    3. # Declare variables to be passed into your templates.
    4. # pod运行数量
    5. replicaCount: 1
    6. image:
    7. # 镜像库地址
    8. repository: registry.cn-hangzhou.aliyuncs.com/feifei-feifei-05/choerodon-todo-servie
    9. # 镜像拉取策略
    10. pullPolicy: IfNotPresent
    11. preJob:
    12. # job超时时间
    13. timeout: 300
    14. # job镜像库地址
    15. image: registry.cn-hangzhou.aliyuncs.com/choerodon-tools/dbtool:0.6.7
    16. preConfig:
    17. # 是否初始化manager_service数据库
    18. enabled: true
    19. # 初始化到配置中心文件名
    20. configFile: application.yml
    21. # 初始化到配置中心存储方式
    22. configType: k8s
    23. # 注册中心地址
    24. registerHost: http://register-server:8000
    25. datasource:
    26. # manager_service数据库连接地址
    27. url: jdbc:mysql://localhost:3306/manager_service?useUnicode=true&characterEncoding=utf-8&useSSL=false&useInformationSchema=true&remarks=true
    28. # manager_service数据库用户名
    29. username: choerodon
    30. # manager_service数据库密码
    31. password: 123456
    32. preInitDB:
    33. # 是否初始化demo_service数据库
    34. enabled: true
    35. datasource:
    36. # demo_service数据库连接地址
    37. url: jdbc:mysql://localhost:3306/demo_service?useUnicode=true&characterEncoding=utf-8&useSSL=false&useInformationSchema=true&remarks=true
    38. # demo_service数据库用户名
    39. username: choerodon
    40. # demo_service数据库密码
    41. password: 123456
    42. deployment:
    43. managementPort: 18081
    44. open:
    45. # 注册服务地址
    46. EUREKA_CLIENT_SERVICEURL_DEFAULTZONE: http://register-server.io-choerodon:8000/eureka/
    47. # 是否启用配置中心
    48. SPRING_CLOUD_CONFIG_ENABLED: true
    49. # 配置中心地址
    50. SPRING_CLOUD_CONFIG_URI: http://config-server.framework:8010/
    51. # 数据库连接地址
    52. SPRING_DATASOURCE_URL: jdbc:mysql://localhost::3306/demo_service?useUnicode=true&characterEncoding=utf-8&useSSL=false&useInformationSchema=true&remarks=true
    53. # 数据库用户名
    54. SPRING_DATASOURCE_USERNAME: choerodon
    55. # 数据库密码
    56. SPRING_DATASOURCE_PASSWORD: 123456
    57. metrics:
    58. # 收集应用的指标数据路径
    59. path: /prometheus
    60. # 性能指标应用分组
    61. group: spring-boot
    62. logs:
    63. # 日志收集格式
    64. parser: spring-boot
    65. persistence:
    66. # 是否启用持久化存储
    67. enabled: false
    68. # 绑定的pvc名称
    69. # existingClaim:
    70. # 持久化路径
    71. # subPath:
    72. service:
    73. # 是否创建k8s service
    74. enabled: false
    75. # service类型
    76. type: ClusterIP
    77. # service端口
    78. port: 18080
    79. # service名称
    80. name: choerodon-todo-servie
    81. ingress:
    82. # 是否创建k8s ingress
    83. enabled: false
    84. resources:
    85. # k8s中容器能使用资源的资源最大值
    86. limits:
    87. # cpu: 100m
    88. memory: 2Gi
    89. # k8s中容器使用的最小资源需求
    90. requests:
    91. memory: 1.5Gi

    Choerodon使用Gitlab-CI作为CI工具,需要在应用源代码中加上.gitlab-ci.yml文件。

    .gitlab-ci.yml是用于指导gitlab进行自动化的持续集成步骤的

    在CI中主要的工作就是进行镜像构建, 并且生成Chart包,最后将Chart包上传至Choerodon,与Choerodon进行集成。

    下一步