1.2. Operator를 사용하여 EKS에 Developer Hub 인스턴스 배포
사전 요구 사항
- 클러스터 관리자가 Red Hat Developer Hub Operator를 설치했습니다.
- AWS Application Load Balancer(ALB) 애드온이 설치된 EKS 클러스터가 있어야 합니다. 자세한 내용은 Amazon Elastic Kubernetes Service의 애플리케이션 로드 밸런싱 및 AWS Load Balancer Controller 애드온 설치를 참조하십시오.
- 개발자 허브 인스턴스의 도메인 이름을 구성했습니다. 도메인 이름은 Route 53의 호스팅 영역 항목이거나 AWS 외부에서 관리할 수 있습니다. 자세한 내용은 Amazon Route 53 as your DNS 서비스 설명서를 참조하십시오.
- 원하는 도메인 이름에 대한 AWS Certificate Manager (ACM) 항목이 있습니다. 인증서 ARN 기록을 보관해야 합니다.
-
registry.redhat.io에 가입했습니다. 자세한 내용은 Red Hat Container Registry Authentication 을 참조하십시오. -
현재
kubeconfig에서 컨텍스트를 EKS 클러스터로 설정했습니다. 자세한 내용은 Amazon EKS 클러스터의 kubeconfig 파일 생성 또는 업데이트를 참조하십시오. -
kubectl을 설치했습니다. 자세한 내용은 kubectl 설치 또는 업데이트를 참조하십시오.
프로세스
다음 템플릿을 사용하여
app-config.yamlDeveloper Hub 구성 파일이 포함된my-rhdh-app-config구성 맵을 생성합니다.apiVersion: v1 kind: ConfigMap metadata: name: my-rhdh-app-config data: "app-config.yaml": | app: title: Red Hat Developer Hub baseUrl: https://<rhdh_dns_name> backend: auth: externalAccess: - type: legacy options: subject: legacy-default-config secret: "${BACKEND_SECRET}" baseUrl: https://<rhdh_dns_name> cors: origin: https://<rhdh_dns_name>Red Hat Developer Hub 시크릿을 생성하고
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")'Red Hat Ecosystem Catalog에서 PostgreSQL 이미지를 가져올 수 있도록 Developer Hub 인스턴스가 배포되는 네임스페이스 내의 기본 서비스 계정에 이미지 가져오기 보안을 추가합니다.
kubectl patch serviceaccount default \ -p '{"imagePullSecrets": [{"name": "rhdh-pull-secret"}]}' \ -n <your_namespace>다음 템플릿을 사용하여
Backstage사용자 정의 리소스를 생성합니다.apiVersion: rhdh.redhat.com/v1alpha3 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: my-rhdh-app-config extraEnvs: secrets: - name: <my_product_secrets>1 - 1
- <
my_product_secrets>는 선호하는 Developer Hub 시크릿 이름입니다. 여기서 <my_product_secrets>는 개발자 허브 내에서 시크릿 구성의 식별자를 지정합니다.
다음 템플릿을 사용하여 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이전 템플릿에서 ' <rhdh_dns_name>'을 Developer Hub 도메인 이름으로 바꾸고
alb.ingress.kubernetes.io/certificate-arn값을 인증서 ARN으로 업데이트합니다.
검증
DNS 이름이 응답할 때까지 기다린 후 Developer Hub 인스턴스를 사용할 준비가 되었음을 나타냅니다.