2.4. クラウドでの Dev Spaces のインストール
Red Hat OpenShift Dev Spaces をクラウドでデプロイして実行します。
前提条件
- OpenShift Dev Spaces をデプロイする OpenShift クラスター。
-
dsc
: Red Hat OpenShift Dev Spaces のコマンドラインツール。「dsc 管理ツールのインストール」 を参照してください。
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 をインストールし、有効化します。
前提条件
-
helm
: Kubernetes のパッケージマネージャー。Installing Helm を参照してください。 -
az
: Microsoft Azure CLI コマンドラインツール。How to install Microsoft Azure CLI を参照してください。 -
kubelogin
: 認証情報プラグイン。How to install kubelogin を参照してください。
2.4.2.1. OpenShift Dev Spaces インストールに向けた Microsoft Azure の準備
OpenShift Dev Spaces インストールに向けた Microsoft Azure の準備
手順
Microsoft Azure にログインします。
az login
リソースグループを作成します (場所をリスト表示するには、
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
クラスター管理者グループを作成します。
# Azure Active Directory group name AAD_GROUP_NAME=AKSAdmins az ad group create --display-name $AAD_GROUP_NAME --mail-nickname $AAD_GROUP_NAME
現在のユーザーをクラスター管理者グループに追加します。
az ad group member add --group $AAD_GROUP_NAME \ --member-id $(az ad signed-in-user show --query id --output tsv)
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
クラスターにアクセスするためのユーザー認証情報を取得します。
az aks get-credentials \ --resource-group $ECLIPSE_CHE_RESOURCE_GROUP \ --name $AKS_CLUSTER_NAME \ --admin
Microsoft Azure CLI を使用するように
kubelogin
を設定します。kubelogin convert-kubeconfig -l azurecli
クラスター内の Pod を表示します。
oc get pods --all-namespaces
- 検証
実行状態のすべての Pod が表示されます。
2.4.2.2. Microsoft Azure Kubernetes Service への NGINX Ingress Controller のインストール
次の手順に従って、NGINX Ingress Controller を Microsoft Azure Kubernetes Service にインストールします。
手順
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
外部 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 をインストールする方法を説明します。
手順
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 を設定します。作業を開始する前に、ドメインが登録されていることを確認してください。
前提条件
- 登録されたドメイン。
手順
ドメイン名を定義します。
export DOMAIN_NAME=azr.my-ide.cloud
DNS ゾーンを作成します。
az network dns zone create \ --resource-group $ECLIPSE_CHE_RESOURCE_GROUP \ --name $DOMAIN_NAME
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 証明書を作成するには、次の手順に従ってください。
手順
サービスプリンシパルを作成します。
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)
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"
openshift-devspaces namespace を作成します。
oc create namespace openshift-devspaces
サービスアカウントシークレットを作成します。
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
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証明書を作成します。
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 にクライアントアプリケーションを登録するについて説明します。
手順
アプリケーションを作成します。
# 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
アプリケーショングループのメンバーシップ要求を更新します。
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 にインストールします。
手順
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
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
OpenShift Dev Spaces クラスターインスタンスに移動します。
$ dsc dashboard:open