1장. OLM 프레임워크를 사용하여 Developer Hub Operator 설치


OLM(Operator Lifecycle Manager) 프레임워크를 사용하여 GKE에 Developer Hub Operator 를 설치할 수 있습니다. 그런 다음 GKE에 Developer Hub 인스턴스를 배포할 수 있습니다.

OLM에 대한 자세한 내용은 OLM(Operator Lifecycle Manager) 설명서를 참조하십시오.

사전 요구 사항

프로세스

  1. 다음 명령을 사용하여 GKE 클러스터에 연결합니다.

    gcloud container clusters get-credentials <cluster-name> \ 
    1
    
        --location=<cluster-location> 
    2
    1
    GKE 클러스터 이름을 입력합니다.
    2
    GKE 클러스터 위치를 입력합니다.

    이 명령은 GKE 클러스터를 가리키도록 Kubernetes 클라이언트를 구성합니다.

  2. 터미널에서 다음 명령을 실행하여 Operator가 설치된 rhdh-operator 네임스페이스를 생성합니다.

    kubectl create namespace rhdh-operator
  3. 다음 명령을 사용하여 풀 시크릿을 생성합니다.

    kubectl -n rhdh-operator create secret docker-registry rhdh-pull-secret \
        --docker-server=registry.redhat.io \
        --docker-username=<user_name> \ 
    1
    
        --docker-password=<password> \ 
    2
    
        --docker-email=<email> 
    3
    1
    명령에 사용자 이름을 입력합니다.
    2
    명령에 암호를 입력합니다.
    3
    명령에 이메일 주소를 입력합니다.

    생성된 풀 시크릿은 Red Hat Ecosystem에서 Developer Hub 이미지를 가져오는 데 사용됩니다.

  4. Red Hat Ecosystem에서 Operator가 포함된 CatalogSource 리소스를 생성합니다.

    CatalogSource 리소스의 예

    cat <<EOF | kubectl -n rhdh-operator apply -f -
    apiVersion: operators.coreos.com/v1alpha1
    kind: CatalogSource
    metadata:
      name: redhat-catalog
    spec:
      sourceType: grpc
      image: registry.redhat.io/redhat/redhat-operator-index:v4.17
      secrets:
      - "rhdh-pull-secret"
      displayName: Red Hat Operators
    EOF

  5. 다음과 같이 OperatorGroup 리소스를 생성합니다.

    OperatorGroup 리소스의 예

    cat <<EOF | kubectl apply -n rhdh-operator -f -
    apiVersion: operators.coreos.com/v1
    kind: OperatorGroup
    metadata:
      name: rhdh-operator-group
    EOF

  6. 다음 코드를 사용하여 서브스크립션 리소스를 생성합니다.

    서브스크립션 리소스의 예

    cat <<EOF | kubectl apply -n rhdh-operator -f -
    apiVersion: operators.coreos.com/v1alpha1
    kind: Subscription
    metadata:
      name: rhdh
      namespace: rhdh-operator
    spec:
      channel: fast
      installPlanApproval: Automatic
      name: rhdh
      source: redhat-catalog
      sourceNamespace: rhdh-operator
      startingCSV: rhdh-operator.v1.4.3
    EOF

  7. 다음 명령을 실행하여 생성된 Operator가 실행 중인지 확인합니다.

    kubectl -n rhdh-operator get pods -w

    Operator Pod에 ImagePullBackOff 상태가 표시되면 Operator 배포 매니페스트 내에서 이미지를 직접 가져올 수 있는 권한이 필요할 수 있습니다.

    작은 정보

    deployment.spec.template.spec.imagePullSecrets 목록에 필요한 시크릿 이름을 추가하고 kubectl get deployment -n rhdh-operator 명령을 사용하여 배포 이름을 확인할 수 있습니다. 예를 들면 다음과 같습니다.

    kubectl -n rhdh-operator patch deployment \
        rhdh.fast --patch '{"spec":{"template":{"spec":{"imagePullSecrets":[{"name":"rhdh-pull-secret"}]}}}}' \
        --type=merge
  8. 다음 단계를 사용하여 GKE에서 Developer Hub 리소스가 올바르게 시작될 수 있도록 Operator의 기본 구성을 업데이트합니다.

    1. 다음 명령을 사용하여 rhdh-operator 네임스페이스에서 backstage-default-config ConfigMap을 편집합니다.

      kubectl -n rhdh-operator edit configmap backstage-default-config
    2. 다음 예와 같이 db-statefulset.yaml 문자열을 찾고 fsGroupspec.template.spec.securityContext 에 추가합니다.

      db-statefulset.yaml fragment

        db-statefulset.yaml: |
          apiVersion: apps/v1
          kind: StatefulSet
      --- TRUNCATED ---
          spec:
          --- TRUNCATED ---
            restartPolicy: Always
            securityContext:
            # You can assign any random value as fsGroup
              fsGroup: 2000
            serviceAccount: default
            serviceAccountName: default
      --- TRUNCATED ---

    3. 다음 예와 같이 deployment.yaml 문자열을 찾고 fsGroup 을 사양에 추가합니다.

      deployment.yaml fragment

        deployment.yaml: |
          apiVersion: apps/v1
          kind: Deployment
      --- TRUNCATED ---
          spec:
            securityContext:
              # You can assign any random value as fsGroup
              fsGroup: 3000
            automountServiceAccountToken: false
      --- TRUNCATED ---

    4. service.yaml 문자열을 찾고 다음과 같이 유형을 NodePort 로 변경합니다.

      service.yaml 조각

        service.yaml: |
          apiVersion: v1
          kind: Service
          spec:
           # NodePort is required for the ALB to route to the Service
            type: NodePort
      --- TRUNCATED ---

    5. 저장 및 종료합니다.

      변경 사항이 Operator Pod에 자동으로 적용될 때까지 기다립니다.

1.1. Operator를 사용하여 GKE에 Developer Hub 인스턴스 배포

Operator를 사용하여 GKE에 Developer Hub 인스턴스를 배포할 수 있습니다.

사전 요구 사항

  • 클러스터 관리자가 Red Hat Developer Hub Operator를 설치했습니다.
  • registry.redhat.io 에 가입했습니다. 자세한 내용은 Red Hat Container Registry Authentication 을 참조하십시오.
  • kubectl 을 설치했습니다. 자세한 내용은 kubetl 설치를 참조하십시오.
  • 개발자 허브 인스턴스의 도메인 이름을 구성했습니다.
  • VM(가상 머신)에 연결되지 않은 정적 외부 프리미엄 IPv4 글로벌 IP 주소를 예약했습니다. 자세한 내용은 새 고정 외부 IP 주소예약을 참조하십시오.
  • 도메인 이름에 대한 DNS 레코드가 예약된 IP 주소를 가리키도록 구성되었습니다.

    참고

    IP 주소와 같은 값이 있는 A 레코드를 만들어야 합니다. 이 프로세스는 전파하는 데 최대 1시간이 걸릴 수 있습니다.

프로세스

  1. 다음 템플릿을 사용하여 app-config.yaml Developer Hub 구성 파일이 포함된 app-config.yaml 구성 맵을 생성합니다.

    app-config.yaml 조각

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: my-rhdh-app-config
    data:
      "app-config.yaml": |
        app:
          title: Red Hat Developer Hub
          baseUrl: https://<rhdh_domain_name>
        backend:
          auth:
            externalAccess:
                - type: legacy
                  options:
                    subject: legacy-default-config
                    secret: "${BACKEND_SECRET}"
          baseUrl: https://<rhdh_domain_name>
          cors:
            origin: https://<rhdh_domain_name>

  2. 다음 예와 같이 < my_product_secrets > 시크릿을 생성하고 Base64 인코딩 문자열 값을 사용하여 BACKEND_SECRET 이라는 키를 추가합니다.

    apiVersion: v1
    kind: Secret
    metadata:
      name: <my_product_secrets> 
    1
    
    stringData:
      # TODO: See https://backstage.io/docs/auth/service-to-service-auth/#setup
      BACKEND_SECRET: "xxx"
    1
    < my_product_secrets >는 선호하는 Developer Hub 시크릿 이름입니다. 여기서 < my_product_secrets >는 개발자 허브 내에서 시크릿 구성의 식별자를 지정합니다.
    중요

    각 Developer Hub 인스턴스에 대해 고유한 BACKEND_SECRET 값을 사용해야 합니다.

    다음 명령을 사용하여 키를 생성할 수 있습니다.

    node-p'require("crypto").randomBytes(24).toString("base64")'
  3. Red Hat Ecosystem Catalog에서 PostgreSQL 이미지를 가져올 수 있도록 Developer Hub 인스턴스가 배포되는 네임스페이스 내의 기본 서비스 계정에 이미지 가져오기 보안을 추가합니다.

    kubectl patch serviceaccount default \
        -p '{"imagePullSecrets": [{"name": "rhdh-pull-secret"}]}' \
        -n <your_namespace>
  4. 다음 템플릿을 사용하여 Backstage CR(사용자 정의 리소스) 파일을 생성합니다.

    사용자 정의 리소스 조각

    apiVersion: rhdh.redhat.com/v1alpha3
    kind: Backstage
    metadata:
      # This is the name of your Developer Hub instance
      name: my-rhdh
    spec:
      application:
        imagePullSecrets:
        - "rhdh-pull-secret"
        route:
          enabled: false
        appConfig:
          configMaps:
            - name: my-rhdh-app-config
        extraEnvs:
          secrets:
            - name: <my_product_secrets> 
    1

    1
    < my_product_secrets >는 선호하는 Developer Hub 시크릿 이름입니다. 여기서 < my_product_secrets >는 개발자 허브 내에서 시크릿 구성의 식별자를 지정합니다.
  5. 다음 예와 같이 Ingress에 연결해야 하는 ManagedCertificate 오브젝트를 생성하여 Google 관리 인증서를 설정합니다.

    apiVersion: networking.gke.io/v1
    kind: ManagedCertificate
    metadata:
      name: <rhdh_certificate_name>
    spec:
      domains:
        - <rhdh_domain_name>

    Google 관리 인증서 설정에 대한 자세한 내용은 Google 관리 인증서 설정을 참조하십시오.

  6. FrontendConfig 오브젝트를 생성하여 HTTPS로 리디렉션하는 정책을 설정합니다. 이 정책을 Ingress에 연결해야 합니다.

    FrontendConfig 오브젝트의 예

    apiVersion: networking.gke.io/v1beta1
    kind: FrontendConfig
    metadata:
      name: <ingress_security_config>
    spec:
      sslPolicy: gke-ingress-ssl-policy-https
      redirectToHttps:
        enabled: true

    HTTPS로 리디렉션할 정책을 설정하는 방법에 대한 자세한 내용은 HTTP를 HTTPS 리디렉션 으로 참조하십시오.

  7. 필요에 따라 이름을 사용자 지정하여 다음 템플릿을 사용하여 수신 리소스를 생성합니다.

    수신 리소스 구성의 예

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      # TODO: this the name of your Developer Hub Ingress
      name: my-rhdh
      annotations:
        # If the class annotation is not specified it defaults to "gce".
        kubernetes.io/ingress.class: "gce"
        kubernetes.io/ingress.global-static-ip-name: <ADDRESS_NAME>
        networking.gke.io/managed-certificates: <rhdh_certificate_name>
        networking.gke.io/v1beta1.FrontendConfig: <ingress_security_config>
    spec:
      ingressClassName: gce
      rules:
        # TODO: Set your application domain name.
        - host: <rhdh_domain_name>
          http:
            paths:
            - path: /
              pathType: Prefix
              backend:
                service:
                  # TODO: my-rhdh is the name of your `Backstage` custom resource.
                  # Adjust if you changed it!
                  name: backstage-my-rhdh
                  port:
                    name: http-backend

검증

  • ManagedCertificate 가 프로비저닝될 때까지 기다립니다. 이 프로세스는 몇 시간이 걸릴 수 있습니다.
  • Access RHDH with https://<rhdh_domain_name>

추가 정보

TLS와 함께 Ingress를 사용하여 GKE를 설정하는 방법에 대한 자세한 내용은 Secure GKE Ingress 를 참조하십시오.

Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 소개

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

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

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

Red Hat 문서 정보

Legal Notice

Theme

© 2026 Red Hat
맨 위로 이동