Amazon Elastic Kubernetes Service에 Red Hat Developer Hub 설치


Red Hat Developer Hub 1.2

Red Hat Customer Content Services

초록

Red Hat Developer Hub는 개발자 포털을 구축하기 위한 엔터프라이즈급 플랫폼입니다. 관리 사용자는 역할, 권한 및 기타 설정을 구성하여 다른 권한이 있는 사용자가 Operator 또는 Helm 차트를 사용하여 Amazon Elastic Kubernetes Service(EKS)에 Developer Hub 인스턴스를 배포할 수 있습니다.

1장. EBS(Elastic Kubernetes Service)에 Red Hat Developer Hub 설치

다음 방법 중 하나를 사용하여 Amazon Elastic Kubernetes Service(EKS)에 Red Hat Developer Hub를 설치할 수 있습니다.

  • Red Hat Developer Hub Operator
  • Red Hat Developer Hub Helm 차트

1.1. Operator를 사용하여 EKS에 개발자 허브 설치

Red Hat Developer Hub Operator를 설치하려면 OLM(Operator Lifecycle Manager) 프레임워크가 필요합니다.

Additonal 리소스

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

OLM(Operator Lifecycle Manager) 프레임워크를 사용하여 EKS에 Developer Hub Operator 를 설치할 수 있습니다. 이에 따라 EKS에 Developer Hub 인스턴스를 계속 배포할 수 있습니다.

사전 요구 사항

프로세스

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

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

    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
    Copy to Clipboard
    1
    명령에 사용자 이름을 입력합니다.
    2
    명령에 암호를 입력합니다.
    3
    명령에 이메일 주소를 입력합니다.

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

  3. Red Hat Ecosystem에서 Operator가 포함된 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.15
      secrets:
      - "rhdh-pull-secret"
      displayName: Red Hat Operators
    EOF
    Copy to Clipboard
  4. 다음과 같이 OperatorGroup 리소스를 생성합니다.

    cat <<EOF | kubectl apply -n rhdh-operator -f -
    apiVersion: operators.coreos.com/v1
    kind: OperatorGroup
    metadata:
      name: rhdh-operator-group
    EOF
    Copy to Clipboard
  5. 다음 코드를 사용하여 서브스크립션 리소스를 생성합니다.

    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.2.6
    EOF
    Copy to Clipboard
  6. 다음 명령을 실행하여 생성된 Operator가 실행 중인지 확인합니다.

    kubectl -n rhdh-operator get pods -w
    Copy to Clipboard

    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
    Copy to Clipboard
  7. 다음 단계를 사용하여 EKS에서 Developer Hub 리소스가 올바르게 시작될 수 있도록 Operator의 기본 구성을 업데이트합니다.

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

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

        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 ---
      Copy to Clipboard
    3. 다음 예와 같이 deployment.yaml 문자열을 찾고 fsGroup 을 사양에 추가합니다.

        deployment.yaml: |
          apiVersion: apps/v1
          kind: Deployment
      --- TRUNCATED ---
          spec:
            securityContext:
              # You can assign any random value as fsGroup
              fsGroup: 3000
            automountServiceAccountToken: false
      --- TRUNCATED ---
      Copy to Clipboard
    4. service.yaml 문자열을 찾고 다음과 같이 유형을 NodePort 로 변경합니다.

        service.yaml: |
          apiVersion: v1
          kind: Service
          spec:
           # NodePort is required for the ALB to route to the Service
            type: NodePort
      --- TRUNCATED ---
      Copy to Clipboard
    5. 저장 및 종료합니다.

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

1.1.2. Operator를 사용하여 EKS에 Developer Hub 인스턴스 배포

사전 요구 사항

프로세스

  1. 다음 템플릿을 사용하여 Developer Hub 구성이 포함된 app-config-rhdh 라는 ConfigMap을 생성합니다.

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: app-config-rhdh
    data:
      "app-config-rhdh.yaml": |
        app:
          title: Red Hat Developer Hub
          baseUrl: https://<rhdh_dns_name>
        backend:
          auth:
            keys:
              - secret: "${BACKEND_SECRET}"
          baseUrl: https://<rhdh_dns_name>
          cors:
            origin: https://<rhdh_dns_name>
    Copy to Clipboard
  2. secrets-rhdh 라는 시크릿을 생성하고 Base64로 인코딩된 문자열을 값으로 사용하여 BACKEND_SECRET 이라는 키를 추가합니다.

    apiVersion: v1
    kind: Secret
    metadata:
      name: secrets-rhdh
    stringData:
      # TODO: See https://backstage.io/docs/auth/service-to-service-auth/#setup
      BACKEND_SECRET: "xxx"
    Copy to Clipboard
    중요

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

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

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

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

    apiVersion: rhdh.redhat.com/v1alpha1
    kind: Backstage
    metadata:
     # TODO: this the name of your Developer Hub instance
      name: my-rhdh
    spec:
      application:
        imagePullSecrets:
        - "rhdh-pull-secret"
        route:
          enabled: false
        appConfig:
          configMaps:
            - name: "app-config-rhdh"
        extraEnvs:
          secrets:
            - name: "secrets-rhdh"
    Copy to Clipboard
  5. 다음 템플릿을 사용하여 Ingress 리소스를 생성하여 필요에 따라 이름을 사용자 지정하도록 합니다.

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      # TODO: this the name of your Developer Hub Ingress
      name: my-rhdh
      annotations:
        alb.ingress.kubernetes.io/scheme: internet-facing
    
        alb.ingress.kubernetes.io/target-type: ip
    
        # TODO: Using an ALB HTTPS Listener requires a certificate for your own domain. Fill in the ARN of your certificate, e.g.:
        alb.ingress.kubernetes.io/certificate-arn: arn:aws:acm:us-xxx:xxxx:certificate/xxxxxx
    
         alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80}, {"HTTPS":443}]'
    
        alb.ingress.kubernetes.io/ssl-redirect: '443'
    
        # TODO: Set your application domain name.
        external-dns.alpha.kubernetes.io/hostname: <rhdh_dns_name>
    
    spec:
      ingressClassName: alb
      rules:
        # TODO: Set your application domain name.
        - host: <rhdh_dns_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
    Copy to Clipboard

    이전 템플릿에서 ' <rhdh_dns_name>'을 Developer Hub 도메인 이름으로 바꾸고 alb.ingress.kubernetes.io/certificate-arn 값을 인증서 ARN으로 업데이트합니다.

검증

DNS 이름이 응답할 때까지 기다린 후 Developer Hub 인스턴스를 사용할 준비가 되었음을 나타냅니다.

1.2. Helm 차트를 사용하여 EKS에 개발자 허브 설치

EKS(Elastic Kubernetes Service)에 Developer Hub Helm 차트를 설치할 때 AWS 에코시스템 내에서 강력한 개발자 플랫폼을 제공하는 Developer Hub 인스턴스의 배포를 오케스트레이션합니다.

사전 요구 사항

프로세스

  1. 터미널로 이동하여 다음 명령을 실행하여 개발자 허브 차트가 포함된 Helm 차트 리포지터리를 로컬 Helm 레지스트리에 추가합니다.

    helm repo add openshift-helm-charts https://charts.openshift.io/
    Copy to Clipboard
  2. 다음 명령을 사용하여 풀 시크릿을 생성합니다.

    kubectl 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
    Copy to Clipboard
    1
    명령에 사용자 이름을 입력합니다.
    2
    명령에 암호를 입력합니다.
    3
    명령에 이메일 주소를 입력합니다.

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

  3. 다음 템플릿을 사용하여 values.yaml 이라는 파일을 생성합니다.

    global:
      # TODO: Set your application domain name.
      host: <your Developer Hub domain name>
    
    
    route:
      enabled: false
    
    
    upstream:
      service:
        # NodePort is required for the ALB to route to the Service
        type: NodePort
    
    
      ingress:
        enabled: true
        annotations:
          kubernetes.io/ingress.class: alb
    
    
          alb.ingress.kubernetes.io/scheme: internet-facing
    
    
          # TODO: Using an ALB HTTPS Listener requires a certificate for your own domain. Fill in the ARN of your certificate, e.g.:
          alb.ingress.kubernetes.io/certificate-arn: arn:aws:acm:xxx:xxxx:certificate/xxxxxx
    
    
          alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80}, {"HTTPS":443}]'
    
    
          alb.ingress.kubernetes.io/ssl-redirect: '443'
    
    
          # TODO: Set your application domain name.
          external-dns.alpha.kubernetes.io/hostname: <your rhdh domain name>
    
    
      backstage:
        image:
          pullSecrets:
          - rhdh-pull-secret
        podSecurityContext:
          # you can assign any random value as fsGroup
          fsGroup: 2000
      postgresql:
        image:
          pullSecrets:
          - rhdh-pull-secret
        primary:
          podSecurityContext:
            enabled: true
            # you can assign any random value as fsGroup
            fsGroup: 3000
      volumePermissions:
        enabled: true
    Copy to Clipboard
  4. 터미널에서 다음 명령을 실행하여 최신 버전의 Helm 차트를 사용하고 이전 단계에서 생성한 values.yaml 파일을 사용하여 개발자 허브를 배포합니다.

    helm install rhdh \
      openshift-helm-charts/redhat-developer-hub \
      [--version 1.2.6] \
      --values /path/to/values.yaml
    Copy to Clipboard
참고

검증

DNS 이름이 응답할 때까지 기다린 후 Developer Hub 인스턴스를 사용할 준비가 되었음을 나타냅니다.

법적 공지

Copyright © 2025 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.
맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

Theme

© 2025 Red Hat