• 创建一个nginx示例
    • 概述
    • 目标
    • 前置条件
    • 操作步骤
    • 相关文档

    创建一个nginx示例


    概述

    现在从搭建一个最简单的nginx作为入门,开始我们的 Choerodon 之旅吧。

    目标

    本章节将从创建应用、部署应用、配置网络、配置域名等操作,让读者能够学会使用Choerodon搭建一个最简单的nginx。

    前置条件

    1. 在操作之前保证系统配置已经配置完全。

    2. 在本章节用到的角色、网络和域名、环境管理等已配置完全。

    操作步骤

    第一步: 点击左侧菜单栏,选择应用管理,点开应用。

    第二步: 点击创建应用(确保已拥有该权限)。输入编码和名称,选择空模板。更多相关信息以及详细操作步骤参考创建前端应用或者创建后端应用

    第三步: 创建成功后会出现应用的 gitlab 地址。

    创建一个nginx示例  - 图1

    第四步: 点进该链接,把代码仓库克隆至本地。然后在项目根目录下添加 Dockerfile 文件,内容如下:

    1. FROM nginx:1.13.5-alpine

    在项目根目录下添加 .gitlab-ci.yml 文件,内容如下:

    1. image: registry.cn-hangzhou.aliyuncs.com/choerodon-tools/cibase:0.7.0
    2. stages:
    3. - chart_build
    4. chart_build:
    5. stage: chart_build
    6. script:
    7. - docker login -u ${DOCKER_USER} -p ${DOCKER_PWD} ${DOCKER_REGISTRY}
    8. - docker build --pull -t ${DOCKER_REGISTRY}/${GROUP_NAME}/${PROJECT_NAME}:${CI_COMMIT_TAG} .
    9. - docker push ${DOCKER_REGISTRY}/${GROUP_NAME}/${PROJECT_NAME}:${CI_COMMIT_TAG}
    10. - chart_build
    11. .auto_devops: &auto_devops |
    12. http_status_code=`curl -o .auto_devops.sh -s -m 10 --connect-timeout 10 -w %{http_code} "${CHOERODON_URL}/devops/ci?token=${Token}"`
    13. if [ "$http_status_code" != "200" ]; then
    14. cat .auto_devops.sh
    15. exit 1
    16. fi
    17. source .auto_devops.sh
    18. before_script:
    19. - *auto_devops

    在项目根目录下创建 chart/nginx 文件夹目录,注意这里的 nginx 要与应用名相同,若不同这以应用名为准,即 chart/应用名 为目录。在 chart/nginx 目录下创建 Chart.yaml 文件,内容如下:

    1. apiVersion: v1
    2. appVersion: "1.0"
    3. description: A Helm chart for Kubernetes
    4. name: nginx #此值也必须与应用名相同
    5. version: 0.1.2

    在 chart/nginx 目录下创建 .helmignore 文件,内容如下:

    1. # Patterns to ignore when building packages.
    2. # This supports shell glob matching, relative path matching, and
    3. # negation (prefixed with !). Only one pattern per line.
    4. .DS_Store
    5. # Common VCS dirs
    6. .git/
    7. .gitignore
    8. .bzr/
    9. .bzrignore
    10. .hg/
    11. .hgignore
    12. .svn/
    13. # Common backup files
    14. *.swp
    15. *.bak
    16. *.tmp
    17. *~
    18. # Various IDEs
    19. .project
    20. .idea/
    21. *.tmproj

    在 chart/nginx 目录下创建 values.yaml 文件,内容如下:

    1. replicaCount: 1
    2. image:
    3. repository: nginx
    4. metrics:
    5. path: /prometheus
    6. group: nginx
    7. logs:
    8. parser: nginx

    在 chart/nginx 目录下新建 templates 文件夹,然后在 templates 目录下创建 _helpers.tpl 文件,内容如下:

    1. {{- define "service.labels.standard" -}}
    2. choerodon.io/release: {{ .Release.Name | quote }}
    3. {{- end -}}
    4. {{- define "service.logging.deployment.label" -}}
    5. choerodon.io/logs-parser: {{ .Values.logs.parser | quote }}
    6. {{- end -}}
    7. {{- define "service.monitoring.pod.annotations" -}}
    8. choerodon.io/metrics-group: {{ .Values.metrics.group | quote }}
    9. choerodon.io/metrics-path: {{ .Values.metrics.path | quote }}
    10. {{- end -}}

    在 templates 目录下创建 deployment.yaml 文件,内容如下:

    1. apiVersion: extensions/v1beta1
    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. name: {{ .Release.Name }}
    9. spec:
    10. replicas: {{ .Values.replicaCount }}
    11. template:
    12. metadata:
    13. annotations:
    14. {{ include "service.monitoring.pod.annotations" . | indent 8 }}
    15. labels:
    16. {{ include "service.labels.standard" . | indent 8 }}
    17. spec:
    18. containers:
    19. - name: {{ .Release.Name }}
    20. image: "{{ .Values.image.repository }}:{{ .Chart.Version }}"
    21. env:
    22. - name: FOOBAR
    23. value: {{ .Chart.Version | quote }}
    24. ports:
    25. - containerPort: 80
    26. name: http
    27. resources:
    28. {{ toYaml .Values.resources | indent 10 }}
    29. volumeMounts:
    30. - mountPath: /usr/share/nginx/html/index.html
    31. name: config
    32. subPath: index.html
    33. volumes:
    34. - configMap:
    35. defaultMode: 420
    36. name: {{ .Release.Name }}-cm
    37. items:
    38. - key: index.html
    39. path: index.html
    40. name: config

    在 templates 目录下创建 configmap.yaml 文件,内容如下:

    1. apiVersion: v1
    2. kind: ConfigMap
    3. metadata:
    4. name: {{ .Release.Name }}-cm
    5. data:
    6. index.html: |
    7. <!DOCTYPE html>
    8. <html>
    9. <head>
    10. <title>Welcome to nginx!</title>
    11. <style>
    12. body {
    13. width: 35em;
    14. margin: 0 auto;
    15. font-family: Tahoma, Verdana, Arial, sans-serif;
    16. }
    17. </style>
    18. </head>
    19. <body>
    20. <h1>Verison:{{ .Chart.Version | quote }}</h1>
    21. <p>If you see this page, the nginx web server is successfully installed and
    22. working. Further configuration is required.</p >
    23. <p>For online documentation and support please refer to
    24. <a href=" ">nginx.org</a >.<br/>
    25. Commercial support is available at
    26. <a href="http://nginx.com/">nginx.com</a >.</p >
    27. <p><em>Thank you for using nginx.</em></p >
    28. </body>
    29. </html>

    最后,将代码push到远程仓库,等待ci跑完就可以部署这个应用了。

    创建一个nginx示例  - 图2

    确保镜像打包成功。

    创建一个nginx示例  - 图3

    第五步: 进行应用部署。更多相关信息以及详细操作步骤参考部署一个应用。

    • 使用项目所有者或已被分配目标环境权限的项目成员角色的角色登录Choerodon系统,选择项目。

    • 进入部署流水线模块,选择应用部署 进入应用部署界面。

    • 选择应用,按照步骤条完成信息选择。选择新建实例。如果此应用在该环境中已有部署的实例,则可以选择替换实例,替换实例会更新该实例的镜像及配置信息,未修改配置信息或版本相同不可选择替换实例。

    • 点击部署按钮后,页面自动跳转到实例页面。

    第六步: 创建成功后,前往 网络 界面,为刚刚部署好的应用创建网络。更多相关信息以及详细操作步骤参考配置网络和域名。

    • 使用项目所有者或已被分配目标环境权限的项目成员角色的角色登录Choerodon系统,选择项目。

    • 进入部署流水线模块,选择网络

    • 点击创建网络按钮,输入信息,创建网络。

    创建一个nginx示例  - 图4

    • 添加端口号。
      创建一个nginx示例  - 图5

    • 网络创建成功,可在部署流水线 -> 网络页面查看创建的网络。
      第七步: 网络创建成功后,前往 域名 界面,为创建的网络绑定域名。更多相关信息以及详细操作步骤参考配置网络和域名。

    • 使用项目所有者或已被分配目标环境权限的项目成员角色的角色登录Choerodon系统,选择项目。

    • 进入部署流水线模块,选择域名

    • 点击创建域名按钮 ,输入信息,创建域名。

    • 域名创建成功,可在部署流水线 -> 域名界面查看已创建的域名。

    查看域名

    • 绑定完成,访问该域名,出现下面结果即说明创建 nginx 成功。
      创建成功

    相关文档

    • 应用管理

    • 应用部署

    • 网络管理

    • 域名管理