Google Kubernetes Engine への Red Hat Developer Hub のインストール
Operator または Helm チャートを使用して、Google Kubernetes Engine (GKE) 上で Red Hat Developer Hub を実行します。
概要
はじめに リンクのコピーリンクがクリップボードにコピーされました!
次のいずれかの方法を使用して、Google Kubernetes Engine (GKE) に Red Hat Developer Hub をインストールできます。
- Red Hat Developer Hub Operator
- Red Hat Developer Hub Helm チャート
第1章 OLM フレームワークを使用した Developer Hub Operator のインストール リンクのコピーリンクがクリップボードにコピーされました!
Operator Lifecycle Manager (OLM) フレームワーク を使用して、Developer Hub Operator を GKE にインストールできます。その後、GKE に Developer Hub インスタンスをデプロイできます。
OLM の詳細は、Operator Lifecycle Manager (OLM) のドキュメントを参照してください。
前提条件
-
registry.redhat.ioにサブスクライブされている。詳細は、Red Hat コンテナーレジストリーの認証 を参照してください。 - Operator Lifecycle Manager (OLM) がインストールされている。インストールとトラブルシューティングの詳細は、How do I get Operator Lifecycle Manager? を参照してください。
-
kubectlがインストールされている。詳細は、kubetl のインストール を参照してください。 - Google Cloud CLI がインストールされている。詳細は、gcloud CLI のインストール を参照してください。
- Google アカウントにログインし、GKE Autopilot クラスターまたは GKE Standard クラスターを作成している。
手順
次のコマンドを使用して GKE クラスターに接続します。
gcloud container clusters get-credentials <cluster-name> \1 --location=<cluster-location>2 このコマンドは、Kubernetes クライアントが GKE クラスターを指定するように設定します。
ターミナルで次のコマンドを実行して、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リソースを作成します。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リソースを作成します。OperatorGroupリソースの例cat <<EOF | kubectl apply -n rhdh-operator -f - apiVersion: operators.coreos.com/v1 kind: OperatorGroup metadata: name: rhdh-operator-group EOF次のコードを使用して
Subscriptionリソースを作成します。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.1. Operator を使用して GKE に Developer Hub インスタンスをデプロイする リンクのコピーリンクがクリップボードにコピーされました!
Operator を使用して、Developer Hub インスタンスを GKE にデプロイできます。
前提条件
- クラスター管理者が Red Hat Developer Hub Operator をインストールしている。
-
registry.redhat.ioにサブスクライブされている。詳細は、Red Hat コンテナーレジストリーの認証 を参照してください。 -
kubectlがインストールされている。詳細は、kubetl のインストール を参照してください。 - Developer Hub インスタンスのドメイン名が設定されている。
- どの仮想マシン (VM) にも接続されていない静的な外部プレミアム IPv4 グローバル IP アドレスを予約している。詳細は、Reserve a new static external IP address を参照してください。
ドメイン名の DNS レコードが、予約済みの IP アドレスを指定するように設定されている。
注記IP アドレスと同じ値を持つ
Aレコードを作成する必要があります。このプロセスが伝播するまでに最大 1 時間かかる場合があります。
手順
次のテンプレートを使用して、
app-config.yamlDeveloper Hub 設定ファイルを含むapp-config.yamlconfig map を作成します。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>次の例に示すように、
<my_product_secrets>シークレットを作成し、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カスタムリソース (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>は、Developer Hub 内のシークレット設定の識別子を指定します。
次の例に示すように、Ingress にアタッチする必要がある
ManagedCertificateオブジェクトを作成して、Google マネージド証明書を設定します。apiVersion: networking.gke.io/v1 kind: ManagedCertificate metadata: name: <rhdh_certificate_name> spec: domains: - <rhdh_domain_name>Google マネージド証明書の設定の詳細は、Setting up a Google-managed certificate を参照してください。
HTTPS にリダイレクトするためのポリシーを設定するには、
FrontendConfigオブジェクトを作成します。このポリシーを Ingress にアタッチする必要があります。FrontendConfigオブジェクトの例apiVersion: networking.gke.io/v1beta1 kind: FrontendConfig metadata: name: <ingress_security_config> spec: sslPolicy: gke-ingress-ssl-policy-https redirectToHttps: enabled: trueHTTPS にリダイレクトするポリシーの設定の詳細は、HTTP から HTTPS へのリダイレクト を参照してください。
次のテンプレートを使用して Ingress リソースを作成し、必要に応じて名前をカスタマイズします。
Ingress リソース設定の例
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がプロビジョニングされるまで待ちます。このプロセスには数時間かかる場合があります。 -
https://<rhdh_domain_name>を使用して RHDH にアクセスします
関連情報
TLS を使用した Ingress を使用して GKE を設定する方法の詳細は、Secure GKE Ingress を参照してください。
第2章 Helm チャートを使用して GKE に Developer Hub をインストールする リンクのコピーリンクがクリップボードにコピーされました!
Google Kubernetes Engine (GKE) に Developer Hub Helm チャートをインストールすると、Developer Hub インスタンスのデプロイメントがオーケストレーションされ、GKE エコシステム内で堅牢な開発者プラットフォームが提供されます。
前提条件
-
registry.redhat.ioにサブスクライブされている。詳細は、Red Hat コンテナーレジストリーの認証 を参照してください。 -
kubectlがインストールされている。詳細は、kubetl のインストール を参照してください。 - Google Cloud CLI がインストールされている。詳細は、gcloud CLI のインストール を参照してください。
- Google アカウントにログインし、GKE Autopilot クラスターまたは GKE Standard クラスターを作成している。
- Developer Hub インスタンスのドメイン名が設定されている。
- どの仮想マシンにも接続されていない静的な外部プレミアム IPv4 グローバル IP アドレスを予約している。詳細は、Reserve a new static external IP address を参照してください。
ドメイン名の DNS レコードが、予約済みの IP アドレスを指定するように設定されている。
注記IP アドレスと同じ値を持つ
Aレコードを作成する必要があります。このプロセスが伝播するまでに最大 1 時間かかる場合があります。- Helm 3 以降がインストールされている。詳細は、Installing Helm を参照してください。
手順
ターミナルに移動し、次のコマンドを実行して、Developer Hub チャートを含む Helm チャートリポジトリーを、ローカルの Helm レジストリーに追加します。
helm repo add openshift-helm-charts https://charts.openshift.io/次のコマンドを使用してプルシークレットを作成します。
kubectl -n <your-namespace> create secret docker-registry rhdh-pull-secret \1 --docker-server=registry.redhat.io \ --docker-username=<user_name> \2 --docker-password=<password> \3 --docker-email=<email>4 作成されたプルシークレットは、Red Hat Ecosystem から Developer Hub イメージをプルするために使用されます。
Ingress にアタッチする必要がある
ManagedCertificateオブジェクトを作成して、Google 管理の証明書を設定します。ManagedCertificateオブジェクトを Ingress にアタッチする例apiVersion: networking.gke.io/v1 kind: ManagedCertificate metadata: name: <rhdh_certificate_name> spec: domains: - <rhdh_domain_name>Google マネージド証明書の設定の詳細は、Setting up a Google-managed certificate を参照してください。
HTTPS にリダイレクトするためのポリシーを設定するには、
FrontendConfigオブジェクトを作成します。このポリシーを Ingress にアタッチする必要があります。FrontendConfigオブジェクトを Ingress にアタッチする例apiVersion: networking.gke.io/v1beta1 kind: FrontendConfig metadata: name: <ingress_security_config> spec: sslPolicy: gke-ingress-ssl-policy-https redirectToHttps: enabled: trueHTTPS にリダイレクトするポリシーの設定の詳細は、HTTP から HTTPS へのリダイレクト を参照してください。
次のテンプレートを使用して、
values.yamlという名前のファイルを作成します。values.yamlファイルの例global: host: <rhdh_domain_name> route: enabled: false upstream: service: type: NodePort ingress: enabled: true annotations: 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> className: gce backstage: image: pullSecrets: - rhdh-pull-secret podSecurityContext: fsGroup: 2000 postgresql: image: pullSecrets: - rhdh-pull-secret primary: podSecurityContext: enabled: true fsGroup: 3000 volumePermissions: enabled: true最新バージョンの Helm チャートと
values.yamlファイルを使用して Developer Hub をデプロイするには、ターミナルで次のコマンドを実行します。helm -n <your_namespace> install -f values.yaml <your_deploy_name> \ openshift-helm-charts/redhat-developer-hub \ --version 1.5.3最新の Helm チャートバージョンは、この Helm Charts リポジトリーを参照してください。
検証
デプロイメントが完了していることを確認します。
kubectl get deploy <you_deploy_name>-developer-hub -n <your_namespace>サービスと Ingress が作成されたことを確認します。
kubectl get service -n <your_namespace> kubectl get ingress -n <your_namespace>注記ManagedCertificateがプロビジョニングされるまで待ちます。このプロセスには数時間かかる場合があります。-
https://<rhdh_domain_name>を使用して RHDH にアクセスします デプロイメントをアップグレードするには、次のコマンドを使用します。
helm -n <your_namespace> upgrade -f values.yaml <your_deploy_name> openshift-helm-charts/redhat-developer-hub --version <UPGRADE_CHART_VERSION>デプロイメントを削除するには、次のコマンドを使用します。
helm -n <your_namespace> delete <your_deploy_name>