第4章 Red Hat Developer Hub と Microsoft Azure Kubernetes Service (AKS) の統合
Developer Hub を Microsoft Azure Kubernetes Service と統合すると、開発が大幅に進歩し、アプリケーションをビルド、デプロイ、および管理するための合理化された環境が提供されます。
この統合には、次のいずれかの方法を使用した AKS 上の Developer Hub のデプロイメントが必要です。
- Helm チャート
- Red Hat Developer Hub Operator
4.1. Azure Kubernetes Service (AKS) への Red Hat Developer Hub のデプロイ
Developer Hub アプリケーションを Azure Kubernetes Services (AKS) にデプロイすると、アプリケーションのビルド、テスト、デプロイのための包括的なソリューションにアクセスできます。
前提条件
- アクティブなサブスクリプションを持つ Azure アカウントがある。
マシンに Azure CLI をインストールし、リソースグループとクラスターを設定した。詳細は、How to install the Azure CLI を参照してください。
次の手順を実行して、リソースグループとクラスターを設定できます。
Azure にアクセスするには、次のコマンドを使用して、指定されたテナントにログインしていることを確認します。
az login [--tenant=<optional-directory-name>]
リソースグループを作成するには、次のコマンドを実行します。
az group create --name <your_ResourceGroup> --location <location>
ヒントaz account list-locations -o table
を使用して、利用可能なリージョンを取得できます。AKS クラスターを作成します。
az aks create \ --resource-group <your_ResourceGroup> \ --name <your_ClusterName> \ --enable-managed-identity \ --generate-ssh-keys
追加オプションについては
--help
を参照してください。クラスターに接続します。
az aks get-credentials --resource-group <your_ResourceGroup> --name <your_ClusterName>
上記のコマンドは、Kubernetes クライアントを設定し、AKS クラスターを指すように
kubeconfig
の現在のコンテキストを設定します。
-
kubectl
がインストールされている。詳細は、Installing or updating kubectl を参照してください。 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>
ヒントAzure CLI 拡張機能
aks-preview
のインストールが必要な場合があります。拡張機能が自動的にインストールされない場合は、次のコマンドを使用して手動でインストールする必要があります。az extension add --upgrade -n aks-preview --allow-preview true
注記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}'
namespace の管理: 次のコマンドを使用して、AKS で Developer Hub デプロイメントの専用 namespace を作成できます。
kubectl create namespace <your_namespace>
-
権限の問題: Developer Hub コンテナーでは、特定の操作を試行したときに権限関連のエラー (
4.1.1. Helm チャートを使用して Azure Kubernetes Service (AKS) に Red Hat Developer Hub をデプロイする
Helm を使用して Developer Hub を AKS にデプロイできます。
手順
ターミナルを開き、次のコマンドを実行して Helm チャートリポジトリーを追加します。
helm repo add openshift-helm-charts https://charts.openshift.io/
ImagePull Secret
を作成するには、次のコマンドを実行します。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>
次のテンプレートを使用して、
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
Helm Chart をインストールするには、次のコマンドを実行します。
helm -n <your_namespace> install -f values.yaml <your_deploy_name> openshift-helm-charts/redhat-developer-hub --version 1.1.1
デプロイメントのステータスを確認します。
kubectl get deploy <your_deploy_name>-developer-hub -n <your_namespace>
-
URL:
https://<app_address>
を使用して、デプロイした Developer Hub にアクセスします。ここで、<app_address> は、前に取得した Ingress アドレス (たとえば、https://108.141.70.228
) です。 デプロイメントをアップグレードまたは削除するには、次のコマンドを実行します。
アップグレードコマンド
helm -n <your_namespace> upgrade -f values.yaml <your_deploy_name> openshift-helm-charts/redhat-developer-hub --version 1.1.1
削除コマンド
helm -n <your_namespace> delete <your_deploy_name>
4.1.2. Operator を使用して Azure Kubernetes Service (AKS) に Red Hat 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
マニフェストで指定された場所は次のとおりです。
db-statefulset.yaml: | spec.template.spec deployment.yaml: | spec.template.spec
変更した Operator マニフェストを Kubernetes クラスターに適用します。
kubectl apply -f rhdh-operator-<VERSION>.yaml
注記前のコマンドの実行はクラスター範囲であり、適切なクラスター権限が必要です。
次の例に示すように、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>
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
作成した Ingress をデプロイするには、次のコマンドを実行します。
kubectl -n <your_namespace> apply -f rhdh-ingress.yaml
次の例を使用して、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>
secrets-rhdh
という名前のシークレットを作成し、次の例に示すように、Base64-encoded
文字列値のBACKEND_SECRET
という名前のキーを追加します。apiVersion: v1 kind: Secret metadata: name: secrets-rhdh stringData: BACKEND_SECRET: "xxx"
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"
CR マニフェストを namespace に適用します。
kubectl -n <your_namespace> apply -f rhdh.yaml
-
URL:
https://<app_address>
を使用して、デプロイした Developer Hub にアクセスします。ここで、<app_address> は、前に取得した Ingress アドレス (たとえば、https://108.141.70.228
) です。 オプション: CR を削除するには、次のコマンドを実行します。
kubectl -n <your_namespace> delete -f rhdh.yaml