Files
bookinfo-cicd-tmaxcloud-wit…/docs/template.md
2023-02-02 09:04:39 +00:00

7.4 KiB

Template 문서

해당 문서는 bookinfo cicd를 위한 template 설명이 작성 되어 있습니다.
IntegrationConfig에 관한 내용은 "문서"에서 보다 상세하게 확인이 가능합니다.

기본 필드 값

apiVersion: tmax.io/v1
kind: ClusterTemplate
metadata:
  labels:
    cicd-template-test: reviews
  name: tmaxcloud-platofrmps-template
categories:
  - reviews
imageUrl: >-
    https://static.wixstatic.com/media/adcb2b_6acdb885bf744458bf152ab5854621cd~mv2.jpg/v1/fill/w_562,h_528,al_c,lg_1,q_80,enc_auto/adcb2b_6acdb885bf744458bf152ab5854621cd~mv2.jpg
longDescription: TmaxCloud CI/CD Test Sample
markdownDescription: reviews-test-template
objectKinds:
  - PersistentVolumeClaim
  - ConfigMap
  - Secret
  - IntegrationConfig
  • categories : 좌측에 표시는 카테고리 종류 입력 (배열이기 때문에 여러 종류 입력 가능)
  • imageUrl : 미리보기 이미지 주소(주로 해당 모듈의 로고 등 사용)
  • longDescription : 서비스 인스턴스 생성 화면에서 이름 아래 보여지는 설명
  • markdownDescription : 잘 모르겠슴다... 어디에 사용되는 값인지 모르겠어요... OTL
  • objectKinds : 해당 템플릿을 통해 생성되는 object들의 종류

parameters

parameters:
  - description: Application name
    displayName: AppName
    name: APP_NAME
    required: true
    value: testapp
    valueType: string
  - description: Git Type (gitlab or github)
    displayName: GitType
    name: GIT_TYPE
    required: true
    value: gitlab
    valueType: string
  - description: 'Git API URL (e.g., http://)'
    displayName: GitApiUrl
    name: GIT_API_URL
    required: false
    value: gitlab.jhcloud.kr
    valueType: string
  - description: 'Git Repo. (e.g., tmax-cloud/cicd-operator)'
    displayName: GitRepository
    name: GIT_REPOSITORY
    required: true
    value: root/bookinfo
    valueType: string
・・・・・ 이하 생략
  • 서비스 카탈로그를 통해 만들어지는 오브젝트들의 생성에 필요한 변수의 값을 입력 받아 적용.
  • description : 값에 대한 설명을 작성하는 부분
  • displayName : 템플릿 작성시 구분을 위한 이름 (사실 이름만 봐서는 해당 부분의 값이 콘솔을 통해 보지는게 맞는거 같다 - 버그로 추정)
  • name : 콘솔에 보여지는 이름
  • required : 필수 입력 여부 (true : 필수 입력 / false : 생략 가능)
  • value : default 입력 값 (해당 구문을 지우거나 공란으로 둘 경우 default 입력 값 없음)
  • valueType : value의 타입 (string, number. array 등이 있음)
  • 입력 받은 parameters의 값을 사용하기 위해서는 "${변수이름}" 형식으로 사용

objects

objects:
  - apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: 'cicd-pvc-${APP_NAME}'
    spec:
      accessModes:
        - ReadWriteMany
      resources:
        requests:
          storage: 1Gi
      storageClassName: '${STORAGE_CLASS}'
  - apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: 'build-pvc-${APP_NAME}'
    spec:
      accessModes:
        - ReadWriteMany
      resources:
        requests:
          storage: 1Gi
      storageClassName: '${STORAGE_CLASS}'
・・・・ 이하 생략
  • 필요 오브젝트를 생성하는 부분
  • 이 부분에 pvc, secret, configmap, integrationconfig 등 정의

integrationconfig

"문서" 에 보다 더 상세한 설명이 있음

  - apiVersion: cicd.tmax.io/v1
    kind: IntegrationConfig
    metadata:
      labels:
        app: '${APP_NAME}'
      name: '${APP_NAME}-config'
    spec:
      git:
        apiUrl: 'https://${GIT_API_URL}'
        repository: '${GIT_REPOSITORY}'
        token:
          valueFrom:
            secretKeyRef:
              key: token
              name: '${GIT_TOKEN_SECRET}'
        type: '${GIT_TYPE}'
  • git : 소스 코드 변경시 감지를 위한 tekton triggering, webhook 등을 위한 git 설정
  • type : gitlab, gitea, github 지원

integrationconfig - jobs

jobs:
        postSubmit:
          - name: git-clone
            tektonTask:
              params:
                - name: url
                  stringVal: 'https://${GIT_API_URL}/${GIT_REPOSITORY}'
                - name: revision
                  stringVal: '${GIT_BRANCH}'
                - name: deleteExisting
                  stringVal: 'false'
                - name: sslVerify
                  stringVal: 'true'
              taskRef:
                local:
                  kind: ClusterTask
                  name: git-clone
              workspaces:
                - name: output
                  workspace: s2i
            notification:
              onSuccess:
                slack:
                  url: https://hooks.slack.com/services/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
                  message: "현재 진행중인 PipelineRun : ($INTEGRATION_JOB_NAME)\n현재 단계 : $JOB_NAME\n상태 : 완료"
              onFailure:
                slack:
                  url: https://hooks.slack.com/services/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
                  message: "현재 진행중인 PipelineRun : ($INTEGRATION_JOB_NAME)\n현재 단계 : $JOB_NAME\n상태 : 실패"
・・・・ 이하 생략
          - after:
              - sonarqube-scanner
            name: podman-build
            tektonTask:
              params:
                - name: url
                  stringVal: '${IMAGE_URL}'
                - name: image
                  stringVal: '${IMAGE_NAME}'
                - name: tag
                  stringVal: $(tasks.git-clone.results.commit)
                - name: tls
                  stringVal: 'false'
              taskRef:
                local:
                  kind: ClusterTask
                  name: buildtask
              workspaces:
                - name: source
                  workspace: s2i
                - name: build-pvc
                  workspace: build-pvc
            notification:
              onSuccess:
                slack:
                  url: https://hooks.slack.com/services/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
                  message: "현재 진행중인 PipelineRun : ($INTEGRATION_JOB_NAME)\n현재 단계 : $JOB_NAME\n상태 : 완료"
              onFailure:
                slack:
                  url: https://hooks.slack.com/services/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
                  message: "현재 진행중인 PipelineRun : ($INTEGRATION_JOB_NAME)\n현재 단계 : $JOB_NAME\n상태 : 실패"
・・・・ 이하 생략
  • postSubmit.name : HyperCloud Console 상에서 표기되는 각 Task의 이름
  • tektonTask : Task에 수행에 필요한 정보
  • params : task에 선언되어 있는 params에 값을 선언
  • params.name : task에 선언되어 있는 params 변수 이름
  • params.stringVal : 선택한 params 변수에 넣을 값 (stringVal(문자,숫자) or arrayVal(배열) 두가지 지원)
  • taskRef : Task 지정
  • local.kind : ClusterTask or Task 중 선택
  • local.name : 사용할 Task의 이름 입력
  • workspaces : 해당 Task Pod가 마운트하여 사용할 workspace (workspace는 pvc, cm 등 이며 아래 부분에 참고)
  • notification :