Amazon Elastic Kubernetes Service への Red Hat Developer Hub のインストール
Operator または Helm チャートを使用して Amazon Elastic Kubernetes Service (EKS) で Red Hat Developer Hub を実行します
概要
はじめに リンクのコピーリンクがクリップボードにコピーされました!
次のいずれかの方法を使用して、Amazon Elastic Kubernetes Service (EKS) に Red Hat Developer Hub をインストールできます。
- Red Hat Developer Hub Operator
- Red Hat Developer Hub Helm チャート
第1章 Operator を使用した EKS への Developer Hub のインストール リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Developer Hub Operator のインストールには、Operator Lifecycle Manager (OLM) フレームワークが必要です。
関連情報
- OLM の詳細は、Operator Lifecycle Manager (OLM) のドキュメントを参照してください。
1.1. OLM フレームワークを使用した Developer Hub Operator のインストール リンクのコピーリンクがクリップボードにコピーされました!
Operator Lifecycle Manager (OLM) フレームワーク を使用して、EKS に Developer Hub Operator をインストールできます。その後、EKS に Developer Hub インスタンスをデプロイできます。
前提条件
-
現在の
kubeconfigで、EKS クラスターにコンテキストが設定されている。詳細は、Creating or updating a kubeconfig file for an Amazon EKS cluster を参照してください。 -
kubectlがインストールされている。詳細は、Installing or updating kubectl を参照してください。 -
registry.redhat.ioにサブスクライブされている。詳細は、Red Hat コンテナーレジストリーの認証 を参照してください。 - Operator Lifecycle Manager (OLM) がインストールされている。インストールとトラブルシューティングの詳細は、OLM クイックスタート または Operator Lifecycle Manager の入手方法 を参照してください。
手順
ターミナルで次のコマンドを実行して、Operator がインストールされている
rhdh-operatornamespace を作成します。kubectl create namespace rhdh-operator次のコマンドを使用してプルシークレットを作成します。
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 作成されたプルシークレットは、Red Hat Ecosystem から Developer Hub イメージをプルするために使用されます。
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.18 secrets: - "rhdh-pull-secret" displayName: Red Hat Operators EOF次のように
OperatorGroupリソースを作成します。cat <<EOF | kubectl apply -n rhdh-operator -f - apiVersion: operators.coreos.com/v1 kind: OperatorGroup metadata: name: rhdh-operator-group EOF次のコードを使用して
Subscriptionリソースを作成します。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.5.3 EOF次のコマンドを実行して、作成した Operator が実行されていることを確認します。
kubectl -n rhdh-operator get pods -wOperator 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
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 アドオンのインストール を参照してください。
- Developer Hub インスタンスのドメイン名が設定されている。ドメイン名は、Route 53 上のホストゾーンエントリーにすることも、AWS の外部で管理することもできます。詳細は、Configuring Amazon Route 53 as your DNS service ドキュメントを参照してください。
- AWS Certificate Manager (ACM) に、希望するドメイン名のエントリーがある。証明書 ARN の記録は必ず保管してください。
-
registry.redhat.ioにサブスクライブされている。詳細は、Red Hat コンテナーレジストリーの認証 を参照してください。 -
現在の
kubeconfigで、EKS クラスターにコンテキストが設定されている。詳細は、Creating or updating a kubeconfig file for an Amazon EKS cluster を参照してください。 -
kubectlがインストールされている。詳細は、Installing or updating kubectl を参照してください。
手順
次のテンプレートを使用して、Developer Hub 設定ファイル
app-config.yamlを含むmy-rhdh-app-configconfig map を作成します。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-encoded文字列を値として持つ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 内にあるシークレット設定の一意の識別子を指定します。
重要各 Developer Hub インスタンスには、必ず一意の値の
BACKEND_SECRETを使用してください。次のコマンドを使用してキーを生成できます。
node-p'require("crypto").randomBytes(24).toString("base64")'Red Hat エコシステムカタログから PostgreSQL イメージをプルできるようにするには、Developer Hub インスタンスがデプロイされている namespace 内のデフォルトのサービスアカウントにイメージプルシークレットを追加します。
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>は、Developer Hub 内のシークレット設定の識別子を指定します。
次のテンプレートを使用して 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 インスタンスが使用できる状態になったことを示すまで待ちます。
第2章 Helm チャートを使用した EKS への Developer Hub のインストール リンクのコピーリンクがクリップボードにコピーされました!
Elastic Kubernetes Service (EKS) に Developer Hub Helm チャートをインストールすると、Developer Hub インスタンスのデプロイがオーケストレーションされます。これにより、AWS エコシステム内で堅牢な開発者プラットフォームが実現します。
前提条件
- AWS Application Load Balancer (ALB) アドオンがインストールされた EKS クラスターがある。詳細は、Application load balancing on Amazon Developer Hub および Installing the AWS Load Balancer Controller add-on を参照してください。
- Developer Hub インスタンスのドメイン名が設定されている。ドメイン名は、Route 53 上のホストゾーンエントリーにすることも、AWS の外部で管理することもできます。詳細は、Configuring Amazon Route 53 as your DNS service ドキュメントを参照してください。
- AWS Certificate Manager (ACM) に、希望するドメイン名のエントリーがある。証明書 ARN の記録は必ず保管してください。
-
registry.redhat.ioにサブスクライブされている。詳細は、Red Hat コンテナーレジストリーの認証 を参照してください。 -
現在の
kubeconfigで、EKS クラスターにコンテキストが設定されている。詳細は、Creating or updating a kubeconfig file for an Amazon EKS cluster を参照してください。 -
kubectlがインストールされている。詳細は、Installing or updating kubectl を参照してください。 - Helm 3 以降がインストールされている。詳細は、Using Helm with Amazon EKS を参照してください。
手順
ターミナルに移動し、次のコマンドを実行して、Developer Hub チャートを含む Helm チャートリポジトリーを、ローカルの Helm レジストリーに追加します。
helm repo add openshift-helm-charts https://charts.openshift.io/次のコマンドを使用してプルシークレットを作成します。
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 作成されたプルシークレットは、Red Hat Ecosystem から Developer Hub イメージをプルするために使用されます。
次のテンプレートを使用して、
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ターミナルで次のコマンドを実行し、最新バージョンの Helm Chart と前の手順で作成した value.yaml ファイルを使用して Developer Hub をデプロイします。
helm install rhdh \ openshift-helm-charts/redhat-developer-hub \ [--version 1.5.3] \ --values /path/to/values.yaml
最新のチャートバージョンは、https://github.com/openshift-helm-charts/charts/tree/main/charts/redhat/redhat/redhat-developer-hub を参照してください。
検証
DNS 名が応答し、Developer Hub インスタンスが使用できる状態になったことを示すまで待ちます。