2.4. クラウドでの Dev Spaces のインストール


Red Hat OpenShift Dev Spaces をクラウドでデプロイして実行します。

前提条件

2.4.1. クラウドでの OpenShift Dev Spaces のデプロイ

dsc ツールを使用してクラウドで OpenShift Dev Spaces Server を起動するには、以下の手順に従ってください。

2.4.2. Microsoft Azure での Dev Spaces のインストールとセットアップ

Microsoft Azure は、Microsoft が管理するデータセンターを通じてアプリケーションとサービスをビルド、テスト、デプロイ、管理するためのクラウドコンピューティングサービスです。

以下の手順に従って、Microsoft Azure に OpenShift Dev Spaces をインストールし、有効化します。

前提条件

2.4.2.1. OpenShift Dev Spaces インストールに向けた Microsoft Azure の準備

OpenShift Dev Spaces インストールに向けた Microsoft Azure の準備

手順

  1. Microsoft Azure にログインします。

    az login
  2. リソースグループを作成します (場所をリスト表示するには、az account list-locations コマンドを使用します)。

    # Resource group name
    ECLIPSE_CHE_RESOURCE_GROUP=eclipse-che
    
    # Azure region
    AZURE_REGION=centralus
    
    az group create --name $ECLIPSE_CHE_RESOURCE_GROUP --location $AZURE_REGION
  3. クラスター管理者グループを作成します。

    # Azure Active Directory group name
    AAD_GROUP_NAME=AKSAdmins
    
    az ad group create --display-name $AAD_GROUP_NAME --mail-nickname $AAD_GROUP_NAME
  4. 現在のユーザーをクラスター管理者グループに追加します。

    az ad group member add --group $AAD_GROUP_NAME \
      --member-id $(az ad signed-in-user show --query id --output tsv)
  5. Microsoft Entra 統合クラスターを作成します。

    # Azure Kubernetes Service cluster name
    AKS_CLUSTER_NAME=eclipse-che
    
    az aks create \
      --resource-group $ECLIPSE_CHE_RESOURCE_GROUP \
      --name $AKS_CLUSTER_NAME \
      --enable-aad \
      --aad-admin-group-object-ids $(az ad group list --query "[?displayName=='$AAD_GROUP_NAME'].id" --output tsv) \
      --generate-ssh-keys
  6. クラスターにアクセスするためのユーザー認証情報を取得します。

    az aks get-credentials \
      --resource-group $ECLIPSE_CHE_RESOURCE_GROUP \
      --name $AKS_CLUSTER_NAME \
      --admin
  7. Microsoft Azure CLI を使用するように kubelogin を設定します。

    kubelogin convert-kubeconfig -l azurecli
  8. クラスター内の Pod を表示します。

    oc get pods --all-namespaces
  9. 検証

実行状態のすべての Pod が表示されます。

2.4.2.2. Microsoft Azure Kubernetes Service への NGINX Ingress Controller のインストール

次の手順に従って、NGINX Ingress Controller を Microsoft Azure Kubernetes Service にインストールします。

手順

  1. NGINX Ingress Controller をインストールします。

    helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
    helm repo update
    
    helm install ingress-nginx ingress-nginx/ingress-nginx \
      --wait \
      --create-namespace \
      --namespace ingress-nginx \
      --set controller.service.annotations."service\.beta\.kubernetes\.io/azure-load-balancer-health-probe-request-path"=/healthz
  2. 外部 IP を待ちます。正確な外部 IP アドレスが表示される前に、外部 IP の <pending> ステータスが表示されることに注意してください。

    oc get services ingress-nginx-controller --namespace ingress-nginx
    NAME                                 TYPE           CLUSTER-IP     EXTERNAL-IP     PORT(S)                      AGE
    ingress-nginx-controller             LoadBalancer   10.0.65.52     XX.XXX.XX.XXX   80:31104/TCP,443:32552/TCP   13m

2.4.2.3. Microsoft Azure Kubernetes Service への cert-manager のインストール

Microsoft Azure Kubernetes Service に cert-manager をインストールする方法を説明します。

手順

  1. cert-manager をインストールします。

    helm repo add jetstack https://charts.jetstack.io
    helm repo update
    
    helm install cert-manager jetstack/cert-manager \
      --wait \
      --create-namespace \
      --namespace cert-manager \
      --set installCRDs=true

2.4.2.4. Microsoft Azure での DNS の設定

Microsoft Azure で DNS を設定します。作業を開始する前に、ドメインが登録されていることを確認してください。

前提条件

  • 登録されたドメイン。

手順

  1. ドメイン名を定義します。

    export DOMAIN_NAME=azr.my-ide.cloud
  2. DNS ゾーンを作成します。

    az network dns zone create \
      --resource-group $ECLIPSE_CHE_RESOURCE_GROUP \
      --name $DOMAIN_NAME
  3. DNS レコードセットを作成します。

    az network dns record-set a add-record \
      --resource-group $ECLIPSE_CHE_RESOURCE_GROUP \
      --zone-name $DOMAIN_NAME \
      --record-set-name "*" \
      --ipv4-address $(oc get service -n ingress-nginx ingress-nginx-controller -o=jsonpath='{.status.loadBalancer.ingress[0].ip}')

GoDaddy などのレジストラーを使用する場合は、次の 2 つの DNS レコードをレジストラーに追加し、Ingress Controller の IP アドレスを指すようにする必要があります: * type: A * names: @ and *

+ .追加リソース

2.4.2.5. Microsoft Azure の devspace 向け Let's Encrypt 証明書の作成

Microsoft Azure の OpenShift Dev Spaces 向けに Let's Encrypt 証明書を作成するには、次の手順に従ってください。

手順

  1. サービスプリンシパルを作成します。

    CERT_MANAGER_SERVICE_PRINCIPAL_NAME=cert-manager-eclipse-che
    CERT_MANAGER_SERVICE_PRINCIPAL_APP_ID=$(az ad sp create-for-rbac --name $CERT_MANAGER_SERVICE_PRINCIPAL_NAME --query "appId" --output tsv)
  2. DNS ゾーンへのアクセスを許可します。

    az role assignment create \
      --assignee $CERT_MANAGER_SERVICE_PRINCIPAL_APP_ID \
      --scope $(az network dns zone show --name $DOMAIN_NAME --resource-group $ECLIPSE_CHE_RESOURCE_GROUP --query "id" --output tsv) \
      --role "DNS Zone Contributor"
  3. openshift-devspaces namespace を作成します。

    oc create namespace openshift-devspaces
  4. サービスアカウントシークレットを作成します。

    oc create secret generic azuredns-config \
      --from-literal=clientSecret=$(az ad sp create-for-rbac --name $CERT_MANAGER_SERVICE_PRINCIPAL_NAME --query "password" --output tsv) \
      --namespace openshift-devspaces
  5. Issuer を作成し、MY_EMAIL_ADDRESS を有効なアドレスに置き換えます。

    oc apply -f - << EOF
    apiVersion: cert-manager.io/v1
    kind: Issuer
    metadata:
      name: devspaces-letsencrypt
      namespace: openshift-devspaces
    spec:
      acme:
        solvers:
        - dns01:
            azureDNS:
              clientID: $CERT_MANAGER_SERVICE_PRINCIPAL_APP_ID
              clientSecretSecretRef:
                name: azuredns-config
                key: clientSecret
              subscriptionID: $(az account show --query "id" --output tsv)
              tenantID: $(az account show --query "tenantId" --output tsv)
              resourceGroupName: $ECLIPSE_CHE_RESOURCE_GROUP
              hostedZoneName: $DOMAIN_NAME
        email: MY_EMAIL_ADDRESS
        privateKeySecretRef:
          name: letsencrypt
        server: https://acme-v02.api.letsencrypt.org/directory
    EOF
  6. 証明書を作成します。

    oc apply -f - << EOF
    apiVersion: cert-manager.io/v1
    kind: Certificate
    metadata:
      name: che-tls
      namespace: openshift-devspaces
    spec:
      secretName: che-tls
      issuerRef:
        name: devspaces-letsencrypt
        kind: Issuer
      commonName: '$DOMAIN_NAME'
      dnsNames:
      - '$DOMAIN_NAME'
      - '*.$DOMAIN_NAME'
      usages:
        - server auth
        - digital signature
        - key encipherment
        - key agreement
        - data encipherment
    EOF

GoDaddy などのレジストラーを使用する場合は、レジストラーで次の DNS レコードを複製する必要があります: * type: TXT * name: _acme-challenge

+ .追加リソース

2.4.2.6. Microsoft Entra ID へのクライアントアプリケーションの登録

Microsoft Entra ID にクライアントアプリケーションを登録するについて説明します。

手順

  1. アプリケーションを作成します。

    # Eclipse Che Application display name
    ECLIPSE_CHE_APPLICATION_DISPLAY_NAME="Eclipse Che"
    
    az ad app create \
      --display-name $ECLIPSE_CHE_APPLICATION_DISPLAY_NAME \
      --enable-access-token-issuance \
      --required-resource-accesses '[{"resourceAccess":[{"id":"34a47c2f-cd0d-47b4-a93c-2c41130c671c","type":"Scope"}],"resourceAppId":"6dae42f8-4368-4678-94ff-3960e28e3630"},{"resourceAccess":[{"id":"e1fe6dd8-ba31-4d61-89e7-88639da4683d","type":"Scope"}],"resourceAppId":"00000003-0000-0000-c000-000000000000"}]' \
      --optional-claims '{"accessToken":[{"additionalProperties":[],"essential":false,"name":"groups","source":null}]}'  \
      --sign-in-audience AzureADMyOrg \
      --web-redirect-uris https://$DOMAIN_NAME/oauth/callback
  2. アプリケーショングループのメンバーシップ要求を更新します。

    az ad app update \
      --id $(az ad app list --query "[?displayName=='$ECLIPSE_CHE_APPLICATION_DISPLAY_NAME'].id" --output tsv) \
      --set groupMembershipClaims=SecurityGroup

2.4.2.7. OpenShift Dev Spaces の Microsoft Azure Kubernetes Service へのインストール

OpenShift Dev Spaces を Microsoft Azure Kubernetes Service にインストールします。

手順

  1. CheCluster パッチ YAML ファイルを準備します。

    cat > che-cluster-patch.yaml << EOF
    spec:
      networking:
        auth:
          identityProviderURL: "https://sts.windows.net/$(az account show --query "tenantId" --output tsv)/v2.0/"
          identityToken: access_token
          oAuthClientName: $(az ad app list --query "[?displayName=='$ECLIPSE_CHE_APPLICATION_DISPLAY_NAME'].appId" --output tsv)
          oAuthSecret: $(az ad app credential reset --id $ECLIPSE_CHE_APPLICATION_ID --query "password" --output tsv)
          oAuthScope: openid email profile 6dae42f8-4368-4678-94ff-3960e28e3630/user.read
          gateway:
            deployment:
              containers:
              - env:
                - name: OAUTH2_PROXY_INSECURE_OIDC_ALLOW_UNVERIFIED_EMAIL
                  value: "true"
                name: oauth-proxy
      components:
        cheServer:
          extraProperties:
            CHE_OIDC_AUTH__SERVER__URL: "https://sts.windows.net/$(az account show --query "tenantId" --output tsv)/v2.0/"
            CHE_OIDC_EMAIL__CLAIM: unique_name
    EOF
  2. OpenShift Dev Spaces をデプロイします。

    chectl server:deploy \
           --platform=k8s \
           --che-operator-cr-patch-yaml=che-cluster-patch.yaml \
           --skip-oidc-provider-check \
           --skip-cert-manager \
           --domain=$DOMAIN_NAME
  3. OpenShift Dev Spaces クラスターインスタンスに移動します。

    $ dsc dashboard:open
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

© 2024 Red Hat, Inc.