This documentation is for a release that is no longer maintained
See documentation for the latest supported version.Microsoft Azure Kubernetes Service への Red Hat Developer Hub のインストール
概要
第1章 Azure Kubernetes Service (AKS) への Red Hat Developer Hub のインストール
次のいずれかの方法を使用して、Microsoft Azure Kubernetes Service (AKS) に Red Hat Developer Hub をインストールできます。
- Red Hat Developer Hub Operator
- Red Hat Developer Hub Helm チャート
1.1. Operator を使用した AKS への Developer Hub のデプロイ
Red Hat Developer Hub Operator を使用して、AKS に Developer Hub をデプロイできます。
手順
rhdh-operator-<VERSION>.yaml
という名前の Red Hat Developer Hub Operator マニフェストファイルを取得し、次のフラグメントを追加してdb-statefulset.yaml
とdeployment.yaml
のデフォルト設定を変更します。securityContext: fsGroup: 300
securityContext: fsGroup: 300
Copy to Clipboard Copied! マニフェストで指定された場所は次のとおりです。
db-statefulset.yaml: | spec.template.spec deployment.yaml: | spec.template.spec
db-statefulset.yaml: | spec.template.spec deployment.yaml: | spec.template.spec
Copy to Clipboard Copied! 変更した Operator マニフェストを Kubernetes クラスターに適用します。
kubectl apply -f rhdh-operator-<VERSION>.yaml
kubectl apply -f rhdh-operator-<VERSION>.yaml
Copy to Clipboard Copied! 注記前のコマンドの実行はクラスター範囲であり、適切なクラスター権限が必要です。
次の例に示すように、Red Hat 認証情報を使用して
rhdh-pull-secret
という名前のImagePull Secret
を作成し、保護されたregistry.redhat.io
からイメージにアクセスします。kubectl -n <your_namespace> create secret docker-registry rhdh-pull-secret \ --docker-server=registry.redhat.io \ --docker-username=<redhat_user_name> \ --docker-password=<redhat_password> \ --docker-email=<email>
kubectl -n <your_namespace> create secret docker-registry rhdh-pull-secret \ --docker-server=registry.redhat.io \ --docker-username=<redhat_user_name> \ --docker-password=<redhat_password> \ --docker-email=<email>
Copy to Clipboard Copied! rhdh-ingress.yaml
という名前の Ingress マニフェストファイルを作成し、次のように Developer Hub サービス名を指定します。apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: rhdh-ingress namespace: <your_namespace> spec: ingressClassName: webapprouting.kubernetes.azure.com rules: - http: paths: - path: / pathType: Prefix backend: service: name: backstage-<your-CR-name> port: name: http-backend
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: rhdh-ingress namespace: <your_namespace> spec: ingressClassName: webapprouting.kubernetes.azure.com rules: - http: paths: - path: / pathType: Prefix backend: service: name: backstage-<your-CR-name> port: name: http-backend
Copy to Clipboard Copied! 作成した Ingress をデプロイするには、次のコマンドを実行します。
kubectl -n <your_namespace> apply -f rhdh-ingress.yaml
kubectl -n <your_namespace> apply -f rhdh-ingress.yaml
Copy to Clipboard Copied! 次の例を使用して、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://<app_address> backend: auth: keys: - secret: "${BACKEND_SECRET}" baseUrl: https://<app_address> cors: origin: https://<app_address>
apiVersion: v1 kind: ConfigMap metadata: name: app-config-rhdh data: "app-config-rhdh.yaml": | app: title: Red Hat Developer Hub baseUrl: https://<app_address> backend: auth: keys: - secret: "${BACKEND_SECRET}" baseUrl: https://<app_address> cors: origin: https://<app_address>
Copy to Clipboard Copied! secrets-rhdh
という名前のシークレットを作成し、次の例に示すように、Base64-encoded
文字列値のBACKEND_SECRET
という名前のキーを追加します。apiVersion: v1 kind: Secret metadata: name: secrets-rhdh stringData: BACKEND_SECRET: "xxx"
apiVersion: v1 kind: Secret metadata: name: secrets-rhdh stringData: BACKEND_SECRET: "xxx"
Copy to Clipboard Copied! rhdh.yaml
という名前のカスタムリソース (CR) マニフェストファイルを作成し、次のように以前に作成したrhdh-pull-secret
を追加します。apiVersion: rhdh.redhat.com/v1alpha1 kind: Backstage metadata: name: <your-rhdh-cr> spec: application: imagePullSecrets: - rhdh-pull-secret appConfig: configMaps: - name: "app-config-rhdh" extraEnvs: secrets: - name: "secrets-rhdh"
apiVersion: rhdh.redhat.com/v1alpha1 kind: Backstage metadata: name: <your-rhdh-cr> spec: application: imagePullSecrets: - rhdh-pull-secret appConfig: configMaps: - name: "app-config-rhdh" extraEnvs: secrets: - name: "secrets-rhdh"
Copy to Clipboard Copied! CR マニフェストを namespace に適用します。
kubectl -n <your_namespace> apply -f rhdh.yaml
kubectl -n <your_namespace> apply -f rhdh.yaml
Copy to Clipboard Copied! -
URL:
https://<app_address>
を使用して、デプロイした Developer Hub にアクセスします。ここで、<app_address> は、前に取得した Ingress アドレス (たとえば、https://108.141.70.228
) です。 オプション: CR を削除するには、次のコマンドを実行します。
kubectl -n <your_namespace> delete -f rhdh.yaml
kubectl -n <your_namespace> delete -f rhdh.yaml
Copy to Clipboard Copied!
1.2. Helm チャートを使用した AKS への Developer Hub のデプロイ
Developer Hub アプリケーションを Azure Kubernetes Services (AKS) にデプロイすると、アプリケーションのビルド、テスト、デプロイのための包括的なソリューションにアクセスできます。
前提条件
- アクティブなサブスクリプションを持つ Microsoft Azure アカウントがある。
- Azure CLI がインストールされている。
-
kubectl
CLI がインストールされている。 -
kubectl
を使用してクラスターにログインしており、developer
またはadmin
権限を持っている。 - Helm 3 以降がインストールされている。
AKS の詳細と基本的な Developer Hub デプロイメントの比較
-
権限の問題: Developer Hub コンテナーでは、特定の操作を試行したときに権限関連のエラー (
Permission denied
など) が発生する可能性があります。このエラーは、PodSpec.securityContext
のfsGroup
を調整することで解決できます。 Ingress 設定: AKS では、インストールした Developer Hub インスタンスにアクセスするために、Ingress を設定することが不可欠です。Developer Hub インスタンスにアクセスするには、次のコマンドを使用して、NGINX ベースの Ingress コントローラーであるルーティングアドオンを有効にする必要があります。
az aks approuting enable --resource-group <your_ResourceGroup> --name <your_ClusterName>
az aks approuting enable --resource-group <your_ResourceGroup> --name <your_ClusterName>
Copy to Clipboard Copied! ヒントAzure CLI 拡張機能
aks-preview
のインストールが必要な場合があります。拡張機能が自動的にインストールされない場合は、次のコマンドを使用して手動でインストールする必要があります。az extension add --upgrade -n aks-preview --allow-preview true
az extension add --upgrade -n aks-preview --allow-preview true
Copy to Clipboard Copied! 注記Ingress コントローラーをインストールすると、Ingress コントローラーを含む
app-routing-system
namespace がクラスターにデプロイされます。後で Developer Hub アプリケーションにアクセスできるように、インストールした Ingress コントローラーからの Developer Hub アプリケーションのアドレス (たとえば、108.141.70.228) をメモしておきます。これは、後で<app_address>
として参照されます。kubectl get svc nginx --namespace app-routing-system -o jsonpath='{.status.loadBalancer.ingress[0].ip}'
kubectl get svc nginx --namespace app-routing-system -o jsonpath='{.status.loadBalancer.ingress[0].ip}'
Copy to Clipboard Copied! namespace の管理: 次のコマンドを使用して、AKS で Developer Hub デプロイメントの専用 namespace を作成できます。
kubectl create namespace <your_namespace>
kubectl create namespace <your_namespace>
Copy to Clipboard Copied!
手順
次のコマンドを実行して AKS にログインします。
az login [--tenant=<optional_directory_name>]
az login [--tenant=<optional_directory_name>]
Copy to Clipboard Copied! 次のコマンドを実行してリソースグループを作成します。
az group create --name <resource_group_name> --location <location>
az group create --name <resource_group_name> --location <location>
Copy to Clipboard Copied! ヒント次のコマンドを実行すると、利用可能なリージョンをリスト表示できます。
az account list-locations -o table
az account list-locations -o table
Copy to Clipboard Copied! 次のコマンドを実行して AKS クラスターを作成します。
az aks create \ --resource-group <resource_group_name> \ --name <cluster_name> \ --enable-managed-identity \ --generate-ssh-keys
az aks create \ --resource-group <resource_group_name> \ --name <cluster_name> \ --enable-managed-identity \ --generate-ssh-keys
Copy to Clipboard Copied! 追加オプションは
--help
を参照してください。次のコマンドを実行してクラスターに接続します。
az aks get-credentials --resource-group <resource_group_name> --name <cluster_name>
az aks get-credentials --resource-group <resource_group_name> --name <cluster_name>
Copy to Clipboard Copied! 上記のコマンドは、Kubernetes クライアントを設定し、AKS クラスターを指すように
kubeconfig
の現在のコンテキストを設定します。ターミナルを開き、次のコマンドを実行して Helm チャートリポジトリーを追加します。
helm repo add openshift-helm-charts https://charts.openshift.io/
helm repo add openshift-helm-charts https://charts.openshift.io/
Copy to Clipboard Copied! <rhdh> namespace を作成してアクティブ化します。
DEPLOYMENT_NAME=<redhat-developer-hub> NAMESPACE=<rhdh> kubectl create namespace ${NAMESPACE} kubectl config set-context --current --namespace=${NAMESPACE}
DEPLOYMENT_NAME=<redhat-developer-hub> NAMESPACE=<rhdh> kubectl create namespace ${NAMESPACE} kubectl config set-context --current --namespace=${NAMESPACE}
Copy to Clipboard Copied! 次のコマンドを実行して、Red Hat Ecosystem から Developer Hub イメージをプルするために使用するプルシークレットを作成します。
kubectl -n $NAMESPACE create secret docker-registry rhdh-pull-secret \ --docker-server=registry.redhat.io \ --docker-username=<redhat_user_name> \ --docker-password=<redhat_password> \ --docker-email=<email>
kubectl -n $NAMESPACE create secret docker-registry rhdh-pull-secret \ --docker-server=registry.redhat.io \ --docker-username=<redhat_user_name> \ --docker-password=<redhat_password> \ --docker-email=<email>
Copy to Clipboard Copied! 次のテンプレートを使用して、
values.yaml
という名前のファイルを作成します。global: host: <app_address> route: enabled: false upstream: ingress: enabled: true className: webapprouting.kubernetes.azure.com host: backstage: image: pullSecrets: - rhdh-pull-secret podSecurityContext: fsGroup: 3000 postgresql: image: pullSecrets: - rhdh-pull-secret primary: podSecurityContext: enabled: true fsGroup: 3000 volumePermissions: enabled: true
global: host: <app_address> route: enabled: false upstream: ingress: enabled: true className: webapprouting.kubernetes.azure.com host: backstage: image: pullSecrets: - rhdh-pull-secret podSecurityContext: fsGroup: 3000 postgresql: image: pullSecrets: - rhdh-pull-secret primary: podSecurityContext: enabled: true fsGroup: 3000 volumePermissions: enabled: true
Copy to Clipboard Copied! 次のコマンドを実行して、Helm チャートを使用して Developer Hub をインストールします。
helm -n $NAMESPACE install -f values.yaml $DEPLOYMENT_NAME openshift-helm-charts/redhat-developer-hub --version 1.2.6
helm -n $NAMESPACE install -f values.yaml $DEPLOYMENT_NAME openshift-helm-charts/redhat-developer-hub --version 1.2.6
Copy to Clipboard Copied! デプロイメントのステータスを確認します。
kubectl get deploy $DEPLOYMENT_NAME -n $NAMESPACE
kubectl get deploy $DEPLOYMENT_NAME -n $NAMESPACE
Copy to Clipboard Copied! クラスターの Developer Hub データベースパスワードとルーターベース URL の値を使用して、Developer Hub Helm チャートのインスタンスを設定します。
PASSWORD=$(kubectl get secret redhat-developer-hub-postgresql -o jsonpath="{.data.password}" | base64 -d) CLUSTER_ROUTER_BASE=$(kubectl get route console -n openshift-console -o=jsonpath='{.spec.host}' | sed 's/^[^.]*\.//') helm upgrade $DEPLOYMENT_NAME -i "https://github.com/openshift-helm-charts/charts/releases/download/redhat-redhat-developer-hub-1.2.6/redhat-developer-hub-1.2.6.tgz" \ --set global.clusterRouterBase="$CLUSTER_ROUTER_BASE" \ --set global.postgresql.auth.password="$PASSWORD"
PASSWORD=$(kubectl get secret redhat-developer-hub-postgresql -o jsonpath="{.data.password}" | base64 -d) CLUSTER_ROUTER_BASE=$(kubectl get route console -n openshift-console -o=jsonpath='{.spec.host}' | sed 's/^[^.]*\.//') helm upgrade $DEPLOYMENT_NAME -i "https://github.com/openshift-helm-charts/charts/releases/download/redhat-redhat-developer-hub-1.2.6/redhat-developer-hub-1.2.6.tgz" \ --set global.clusterRouterBase="$CLUSTER_ROUTER_BASE" \ --set global.postgresql.auth.password="$PASSWORD"
Copy to Clipboard Copied! 次のコマンドを実行して、実行中の Developer Hub インスタンスの URL を表示します。
echo "https://$DEPLOYMENT_NAME-$NAMESPACE.$CLUSTER_ROUTER_BASE"
echo "https://$DEPLOYMENT_NAME-$NAMESPACE.$CLUSTER_ROUTER_BASE"
Copy to Clipboard Copied!
検証
- 実行中の Developer Hub インスタンスの URL をブラウザーで開き、Developer Hub を使用します。
アップグレード
デプロイメントをアップグレードするには、次のコマンドを実行します。
helm upgrade $DEPLOYMENT_NAME -i https://github.com/openshift-helm-charts/charts/releases/download/redhat-redhat-developer-hub-1.2.6/redhat-developer-hub-1.2.6.tgz
helm upgrade $DEPLOYMENT_NAME -i https://github.com/openshift-helm-charts/charts/releases/download/redhat-redhat-developer-hub-1.2.6/redhat-developer-hub-1.2.6.tgz
Copy to Clipboard Copied!
削除
デプロイメントを削除するには、次のコマンドを実行します。
helm -n $NAMESPACE delete $DEPLOYMENT_NAME
helm -n $NAMESPACE delete $DEPLOYMENT_NAME
Copy to Clipboard Copied!