검색

1.2. 선택 사항: Tekton Hub에서 사용자 정의 데이터베이스 사용

download PDF

클러스터 관리자는 Operator가 설치한 기본 PostgreSQL 데이터베이스 대신 Tekton Hub와 함께 사용자 지정 데이터베이스를 사용할 수 있습니다. 설치 시 사용자 지정 데이터베이스를 연결하여 Tekton Hub에서 제공하는 db-migration,apiui 인터페이스와 함께 사용할 수 있습니다. 또는 설치가 default 데이터베이스와 완료된 후에도 사용자 지정 데이터베이스를 Tekton Hub와 연결할 수 있습니다.

프로세스

  1. 다음 키를 사용하여 대상 네임스페이스에 tekton-hub-db 라는 시크릿을 생성합니다.

    • POSTGRES_HOST
    • POSTGRES_DB
    • POSTGRES_USER
    • POSTGRES_PASSWORD
    • POSTGRES_PORT

      예: 사용자 정의 데이터베이스 시크릿

      apiVersion: v1
      kind: Secret
      metadata:
        name: tekton-hub-db
        labels:
          app: tekton-hub-db
      type: Opaque
      stringData:
        POSTGRES_HOST: <The name of the host of the database>
        POSTGRES_DB: <Name of the database>
        POSTGRES_USER: <username>
        POSTGRES_PASSWORD: <password>
        POSTGRES_PORT: <The port that the database is listening on>
      ...

      참고

      기본 대상 네임스페이스는 openshift-pipelines 입니다.

  2. TektonHub CR에서 데이터베이스 시크릿 속성 값을 tekton-hub-db 로 설정합니다.

    예: 사용자 정의 데이터베이스 시크릿 추가

    apiVersion: operator.tekton.dev/v1alpha1
    kind: TektonHub
    metadata:
      name: hub
    spec:
      targetNamespace: openshift-pipelines
      db:
        secret: tekton-hub-db
      api:
        hubConfigUrl: https://raw.githubusercontent.com/tektoncd/hub/main/config.yaml
        catalogRefreshInterval: 30m
    ...

  3. 업데이트된 TektonHub CR을 사용하여 사용자 지정 데이터베이스를 Tekton Hub와 연결합니다.

    1. 클러스터에 Tekton Hub를 설치할 때 사용자 지정 데이터베이스를 연결하는 경우 업데이트된 TektonHub CR을 적용합니다.

      $ oc apply -f <tekton-hub-cr>.yaml
    2. 또는 Tekton Hub 설치가 완료된 후 사용자 정의 데이터베이스를 연결하는 경우 기존 TektonHub CR을 업데이트된 TektonHub CR로 교체합니다.

      $ oc replace -f <tekton-hub-cr>.yaml
  4. 설치 상태를 확인합니다. TektonHub CR은 안정적인 상태를 유지하는 데 약간의 시간이 걸릴 수 있습니다.

    $ oc get tektonhub.operator.tekton.dev

    샘플 출력

    NAME   VERSION   READY   REASON   APIURL                    UIURL
    hub    v1.9.0    True             https://api.route.url/    https://ui.route.url/

1.2.1. 선택 사항: Crunchy Postgres 데이터베이스 및 Tekton Hub 설치

클러스터 관리자는 Crunchy Postgres 데이터베이스를 설치하고 기본 데이터베이스 대신 사용할 Tekton Hub를 구성할 수 있습니다.

사전 요구 사항

  • Operator Hub에서 Crunchy Postgres Operator를 설치합니다.
  • Crunchy Postgres 데이터베이스를 시작하는 Postgres 인스턴스를 생성합니다.

프로세스

  1. Crunchy Postgres Pod로 이동합니다.

    예: test-instance1-m7hh-0 Pod로 가져오기

    $ oc exec -it -n openshift-operators test-instance1-m7hh-0 -- /bin/sh
    
    Defaulting container name to database.
    Use 'oc describe pod/test-instance1-m7hh-0 -n openshift-operators' to see all of the containers in this pod.
    sh-4.4$ psql -U postgres
    psql (14.4)
    Type "help" for help.

  2. pg_hba.conf 파일을 찾습니다.

    postgres=# SHOW hba_file;
             hba_file
    --------------------------
     /pgdata/pg14/pg_hba.conf
    (1 row)
    
    postgres=#
  3. 데이터베이스를 종료합니다.
  4. pg_hba.conf 파일에 들어오는 모든 연결에 액세스하는 데 필요한 모든 0.0.0.0/0 md5 항목이 있는지 확인합니다. 또한 pg_hba.conf 파일의 끝에 항목을 추가합니다.

    예: pg_hba.conf 파일

    sh-4.4$ cat /pgdata/pg14/pg_hba.conf
    
    # Do not edit this file manually!
    # It will be overwritten by Patroni!
    local all "postgres" peer
    hostssl replication "_crunchyrepl" all cert
    hostssl "postgres" "_crunchyrepl" all cert
    host all "_crunchyrepl" all reject
    hostssl all all all md5
    host  all  all 0.0.0.0/0 md5

  5. pg_hba.conf 파일을 저장하고 데이터베이스를 다시 로드합니다.

    sh-4.4$ psql -U postgres
    psql (14.4)
    Type "help" for help.
    
    postgres=# SHOW hba_file;
             hba_file
    --------------------------
     /pgdata/pg14/pg_hba.conf
    (1 row)
    
    postgres=# SELECT pg_reload_conf();
     pg_reload_conf
    ----------------
     t
    (1 row)
  6. 데이터베이스를 종료합니다.
  7. Crunchy Postgres 호스트의 시크릿 값을 디코딩합니다.

    예: Crunchy Postgres 호스트의 시크릿 값 삭제

    $ echo 'aGlwcG8tcHJpbWFyeS5vcGVuc2hpZnQtb3BlcmF0b3JzLnN2YyA=' | base64 --decode
    test-primary.openshift-operators.svc

  8. 다음 키를 사용하여 대상 네임스페이스에 tekton-hub-db 라는 시크릿을 생성합니다.

    • POSTGRES_HOST
    • POSTGRES_DB
    • POSTGRES_USER
    • POSTGRES_PASSWORD
    • POSTGRES_PORT

      예: 사용자 정의 데이터베이스 시크릿

      apiVersion: v1
      kind: Secret
      metadata:
        name: tekton-hub-db
        labels:
          app: tekton-hub-db
      type: Opaque
      stringData:
        POSTGRES_HOST: test-primary.openshift-operators.svc
        POSTGRES_DB: test
        POSTGRES_USER: <username>
        POSTGRES_PASSWORD: <password>
        POSTGRES_PORT: '5432'
      ...

    참고

    기본 대상 네임스페이스는 openshift-pipelines 입니다.

  9. TektonHub CR에서 데이터베이스 시크릿 속성 값을 tekton-hub-db 로 설정합니다.

    예: 사용자 정의 데이터베이스 시크릿 추가

    apiVersion: operator.tekton.dev/v1alpha1
    kind: TektonHub
    metadata:
      name: hub
    spec:
      targetNamespace: openshift-pipelines
      db:
        secret: tekton-hub-db
    ...

  10. 업데이트된 TektonHub CR을 사용하여 사용자 지정 데이터베이스를 Tekton Hub와 연결합니다.

    $ oc apply -f <tekton-hub-cr>.yaml
  11. 설치 상태를 확인합니다. TektonHub CR은 안정적인 상태를 유지하는 데 약간의 시간이 걸릴 수 있습니다.

    $ oc get tektonhub.operator.tekton.dev

    샘플 출력

    NAME   VERSION   READY   REASON   APIURL                    UIURL
    hub    v1.9.0    True             https://api.route.url/    https://ui.route.url/

1.2.2. 선택 사항: Tekton Hub 데이터를 기존 Crunchy Postgres 데이터베이스로 마이그레이션

Tekton Hub는 Crunchy Postgres를 사용자 지정 데이터베이스로 사용할 수 있습니다. 기본 데이터베이스가 있는 사전 설치된 Tekton Hub의 경우 클러스터 관리자는 Tekton Hub 데이터를 내부 또는 기본 데이터베이스에서 외부 Crunchy Postgres 데이터베이스로 마이그레이션한 후 사용자 지정 데이터베이스로 Crunchy Postgres를 사용할 수 있습니다.

프로세스

  1. 내부 또는 기본 데이터베이스의 기존 데이터를 포드의 파일로 덤프합니다.

    예: 데이터 덤프

    $ pg_dump -Ft -h localhost -U postgres hub -f /tmp/hub.dump

  2. 데이터 덤프가 포함된 파일을 로컬 시스템에 복사합니다.

    명령 형식

    $ oc cp -n <namespace> <podName>:<path-to-hub.dump> <path-to-local-system>

    $ oc cp -n openshift-pipelines tekton-hub-db-7d6d888c67-p7mdr:/tmp/hub.dump /home/test_user/Downloads/hub.dump

  3. 로컬 시스템의 데이터 덤프가 포함된 파일을 외부 Crunchy Postgres 데이터베이스를 실행하는 포드로 복사합니다.

    명령 형식

    $ oc cp -n <namespace> <path-to-local-system> <podName>:<path-to-hub.dump>

    $ oc cp -n openshift-operators /home/test_user/Downloads/hub.dump test-instance1-spnz-0:/tmp/hub.dump

  4. Crunchy Postgres 데이터베이스에서 데이터를 복원합니다.

    명령 형식

    $ pg_restore -d <database-name> -h localhost -U postgres <path-where-file-is-copied>

    $ pg_restore -d test -h localhost -U postgres /tmp/hub.dump

  5. Crunchy Postgres Pod로 이동합니다. 예: test-instance1-m7h-0 Pod로 이동합니다.

    $ oc exec -it -n openshift-operators test-instance1-m7hh-0 -- /bin/sh
    
    Defaulting container name to database.
    Use 'oc describe pod/test-instance1-m7hh-0 -n openshift-operators' to see all of the containers in this pod.
    sh-4.4$ psql -U postgres
    psql (14.4)
    Type "help" for help.
  6. pg_hba.conf 파일을 찾습니다.

    postgres=# SHOW hba_file;
             hba_file
    --------------------------
     /pgdata/pg14/pg_hba.conf
    (1 row)
    
    postgres=#
  7. 데이터베이스를 종료합니다.
  8. pg_hba.conf 파일에 모든 들어오는 연결에 액세스하는 데 필요한 모든 0.0.0.0/0 md5가 항목 호스트가 있는지 확인합니다. 필요한 경우 pg_hba.conf 파일의 끝에 항목을 추가합니다.

    예: pg_hba.conf 파일

    sh-4.4$ cat /pgdata/pg14/pg_hba.conf
    
    # Do not edit this file manually!
    # It will be overwritten by Patroni!
    local all "postgres" peer
    hostssl replication "_crunchyrepl" all cert
    hostssl "postgres" "_crunchyrepl" all cert
    host all "_crunchyrepl" all reject
    hostssl all all all md5
    host  all  all 0.0.0.0/0 md5

  9. pg_hba.conf 파일을 저장하고 데이터베이스를 다시 로드합니다.

    sh-4.4$ psql -U postgres
    psql (14.4)
    Type "help" for help.
    
    postgres=# SHOW hba_file;
             hba_file
    --------------------------
     /pgdata/pg14/pg_hba.conf
    (1 row)
    
    postgres=# SELECT pg_reload_conf();
     pg_reload_conf
    ----------------
     t
    (1 row)
  10. 데이터베이스를 종료합니다.
  11. 대상 네임스페이스의 tekton-hub-db 라는 보안에 다음 키가 있는지 확인합니다.

    • POSTGRES_HOST
    • POSTGRES_DB
    • POSTGRES_USER
    • POSTGRES_PASSWORD
    • POSTGRES_PORT

      예: 사용자 정의 데이터베이스 시크릿

      apiVersion: v1
      kind: Secret
      metadata:
        name: tekton-hub-db
        labels:
          app: tekton-hub-db
      type: Opaque
      stringData:
        POSTGRES_HOST: test-primary.openshift-operators.svc
        POSTGRES_DB: test
        POSTGRES_USER: test
        POSTGRES_PASSWORD: woXOisU5>ocJiTF7y{{;1[Q(
        POSTGRES_PORT: '5432'
      ...

      참고

      POSTGRES_HOST 필드의 값은 시크릿으로 인코딩됩니다. 다음 예제를 사용하여 Crunchy Postgres 호스트의 값을 디코딩할 수 있습니다.

      예: Crunchy Postgres 호스트의 시크릿 값 삭제

      $ echo 'aGlwcG8tcHJpbWFyeS5vcGVuc2hpZnQtb3BlcmF0b3JzLnN2YyA=' | base64 --decode
      test-primary.openshift-operators.svc

  12. TektonHub CR에서 데이터베이스 시크릿 속성 값이 tekton-hub-db 인지 확인합니다.

    예: 데이터베이스 시크릿 이름이 있는 TektonHub CR

    apiVersion: operator.tekton.dev/v1alpha1
    kind: TektonHub
    metadata:
      name: hub
    spec:
      targetNamespace: openshift-pipelines
      db:
        secret: tekton-hub-db
    ...

  13. 외부 Crunchy Postgres 데이터베이스를 Tekton Hub와 연결하려면 기존 TektonHub CR을 업데이트된 TektonHub CR로 교체합니다.

    $ oc replace -f <updated-tekton-hub-cr>.yaml
  14. Tekton Hub의 상태를 확인합니다. 업데이트된 TektonHub CR은 안정적인 상태를 유지하는 데 약간의 시간이 걸릴 수 있습니다.

    $ oc get tektonhub.operator.tekton.dev

    샘플 출력

    NAME   VERSION   READY   REASON   APIURL                    UIURL
    hub    v1.9.0    True             https://api.route.url/    https://ui.route.url/

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.