第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.securityContextfsGroup を調整することで解決できます。
    • 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>

4.1.1. Helm チャートを使用して Azure Kubernetes Service (AKS) に Red Hat Developer Hub をデプロイする

Helm を使用して Developer Hub を AKS にデプロイできます。

手順

  1. ターミナルを開き、次のコマンドを実行して Helm チャートリポジトリーを追加します。

    helm repo add openshift-helm-charts https://charts.openshift.io/
  2. 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>
  3. 次のテンプレートを使用して、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
  4. Helm Chart をインストールするには、次のコマンドを実行します。

    helm -n <your_namespace> install -f values.yaml <your_deploy_name> openshift-helm-charts/redhat-developer-hub --version 1.1.1
  5. デプロイメントのステータスを確認します。

    kubectl get deploy <your_deploy_name>-developer-hub -n <your_namespace>
  6. URL: https://<app_address> を使用して、デプロイした Developer Hub にアクセスします。ここで、<app_address> は、前に取得した Ingress アドレス (たとえば、https://108.141.70.228) です。
  7. デプロイメントをアップグレードまたは削除するには、次のコマンドを実行します。

    アップグレードコマンド

    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 をデプロイできます。

手順

  1. rhdh-operator-<VERSION>.yaml という名前の Red Hat Developer Hub Operator マニフェストファイルを取得し、次のフラグメントを追加して db-statefulset.yamldeployment.yaml のデフォルト設定を変更します。

    securityContext:
      fsGroup: 300

    マニフェストで指定された場所は次のとおりです。

    db-statefulset.yaml: | spec.template.spec
    deployment.yaml: | spec.template.spec
  2. 変更した Operator マニフェストを Kubernetes クラスターに適用します。

    kubectl apply -f rhdh-operator-<VERSION>.yaml
    注記

    前のコマンドの実行はクラスター範囲であり、適切なクラスター権限が必要です。

  3. 次の例に示すように、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>
  4. 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
  5. 作成した Ingress をデプロイするには、次のコマンドを実行します。

    kubectl -n <your_namespace> apply -f rhdh-ingress.yaml
  6. 次の例を使用して、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>
  7. secrets-rhdh という名前のシークレットを作成し、次の例に示すように、Base64-encoded 文字列値の BACKEND_SECRET という名前のキーを追加します。

    apiVersion: v1
    kind: Secret
    metadata:
      name: secrets-rhdh
    stringData:
      BACKEND_SECRET: "xxx"
  8. 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"
  9. CR マニフェストを namespace に適用します。

    kubectl -n <your_namespace> apply -f rhdh.yaml
  10. URL: https://<app_address> を使用して、デプロイした Developer Hub にアクセスします。ここで、<app_address> は、前に取得した Ingress アドレス (たとえば、https://108.141.70.228) です。
  11. オプション: CR を削除するには、次のコマンドを実行します。

    kubectl -n <your_namespace> delete -f rhdh.yaml
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.