Microsoft Azure Kubernetes Service への Red Hat Developer Hub のインストール
Operator または Helm チャートを使用して、Microsoft 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章 Operator を使用した AKS への Developer Hub のデプロイ
Red Hat Developer Hub Operator を使用して、AKS に Developer Hub をデプロイできます。
手順
次の例に示すように、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: my-rhdh-project 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: my-rhdh-project 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.yaml
を含むmy-rhdh-app-config
config map を作成します。apiVersion: v1 kind: ConfigMap metadata: name: my-rhdh-app-config data: "app-config.yaml": | app: title: Red Hat Developer Hub baseUrl: https://<app_address> backend: auth: externalAccess: - type: legacy options: subject: legacy-default-config secret: "${BACKEND_SECRET}" baseUrl: https://<app_address> cors: origin: https://<app_address>
apiVersion: v1 kind: ConfigMap metadata: name: my-rhdh-app-config data: "app-config.yaml": | app: title: Red Hat Developer Hub baseUrl: https://<app_address> backend: auth: externalAccess: - type: legacy options: subject: legacy-default-config secret: "${BACKEND_SECRET}" baseUrl: https://<app_address> cors: origin: https://<app_address>
Copy to Clipboard Copied! 次の例に示すように、
<my_product_secrets>
シークレットを作成し、Base64-encoded
文字列値を持つBACKEND_SECRET
という名前のキーを追加します。apiVersion: v1 kind: Secret metadata: name: <my_product_secrets> stringData: BACKEND_SECRET: "xxx"
apiVersion: v1 kind: Secret metadata: name: <my_product_secrets>
1 stringData: BACKEND_SECRET: "xxx"
Copy to Clipboard Copied! - 1
<my_product_secrets>
は、任意の Developer Hub シークレット名です。<my_product_secrets>
は、Developer Hub 内のシークレット設定の識別子を指定します。
次のように、
<your-rhdh-cr>
という名前のBackstage
カスタムリソース (CR) マニフェストファイルを作成し、以前に作成したrhdh-pull-secret
を含めます。apiVersion: rhdh.redhat.com/v1alpha3 kind: Backstage metadata: name: <your-rhdh-cr> spec: application: imagePullSecrets: - rhdh-pull-secret appConfig: configMaps: - name: my-rhdh-app-config extraEnvs: secrets: - name: <my_product_secrets>
apiVersion: rhdh.redhat.com/v1alpha3 kind: Backstage metadata: name: <your-rhdh-cr> spec: application: imagePullSecrets: - rhdh-pull-secret appConfig: configMaps: - name: my-rhdh-app-config extraEnvs: secrets: - name: <my_product_secrets>
1 Copy to Clipboard Copied! - 1
<my_product_secrets>
は、任意の Developer Hub シークレット名です。<my_product_secrets>
は、Developer Hub 内のシークレット設定の識別子を指定します。
CR マニフェストを namespace に適用します。
kubectl -n my-rhdh-project apply -f rhdh.yaml
kubectl -n my-rhdh-project 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 my-rhdh-project delete -f rhdh.yaml
kubectl -n my-rhdh-project delete -f rhdh.yaml
Copy to Clipboard Copied!
第2章 Helm チャートを使用した AKS への Developer Hub のデプロイ
Developer Hub アプリケーションを Azure Kubernetes Service (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! <my-rhdh-project> 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.5.3
helm -n $NAMESPACE install -f values.yaml $DEPLOYMENT_NAME openshift-helm-charts/redhat-developer-hub --version 1.5.3
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.5.3/redhat-developer-hub-1.5.3.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.5.3/redhat-developer-hub-1.5.3.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.5.3/redhat-developer-hub-1.5.3.tgz
helm upgrade $DEPLOYMENT_NAME -i https://github.com/openshift-helm-charts/charts/releases/download/redhat-redhat-developer-hub-1.5.3/redhat-developer-hub-1.5.3.tgz
Copy to Clipboard Copied!
削除
デプロイメントを削除するには、次のコマンドを実行します。
helm -n $NAMESPACE delete $DEPLOYMENT_NAME
helm -n $NAMESPACE delete $DEPLOYMENT_NAME
Copy to Clipboard Copied!