5.3 Microsoft AzureコンテナインスタンスへのOpenText eDirectoryコンテナのデプロイ

OpenText eDirectoryは、Microsoft AzureコンテナインスタンスへのOpenText eDirectoryコンテナのデプロイをサポートしています。デプロイメントプロセスはシンプルで、時間効率が向上します。OpenText eDirectoryコンテナは、自己完結型であり、独自に実行できるDockerイメージとしてレジストリにプッシュされます。このセクションでは、AzureにOpenText eDirectory Dockerイメージをデプロイするプロセスについて説明します。

5.3.1 コンテナのデプロイのチェックリスト

Azureコンテナをデプロイ用にセットアップするには、次のチェックリストの手順を実行することをお勧めします。

チェックリストの項目

  1. OpenText eDirectory Dockerコンテナのイメージを保存および管理するために、Azureコンテナレジストリを作成する必要があります。https://portal.azure.com/のAzureポータルにサインインし、「Azure portalを使用してAzureコンテナレジストリを作成する」の手順に従ってコンテナレジストリを作成します。

  1. 次に、Azureストレージアカウントを設定する必要があります。このアカウントには、HTTPまたはHTTPS経由で世界中のどこからでもアクセスできるすべてのデータが保存されます。Azure portalにサインインし、「Azure Storageアカウントを作成する」の手順に従ってAzureストレージアカウントを作成します。

  1. ストレージアカウントを作成したら、Azureファイル共有を作成します。共有ファイルシステムは、コンテナが実行するインスタンスに関係なく、コンテナがファイルシステムにアクセスするために必要です。Azureファイル共有を作成する際の考慮事項とプロセスの詳細については、「Azureファイル共有を作成する方法」を参照してください。

  1. 仮想ネットワークを作成する必要があります。Azure Virtual Networkを使用すると、Azure仮想マシン(VM)などの多くの種類のAzureリソースが、Azureインターネット内で相互に、またオンプレミスのネットワークと安全に通信することができます。仮想ネットワークの作成に関するページの手順に従います。

  1. 次に、OpenText eDirectory Dockerイメージをコンテナレジストリにプッシュします。詳細については、DockerイメージのAzureコンテナレジストリへのプッシュを参照してください。

  1. OpenText eDirectory DockerイメージのtarballにバンドルされているYAMLファイルを編集して保存します。詳細については、YAML設定ファイルの編集を参照してください。

  1. 最後に、このYAMLファイルを使用してAzureコンテナインスタンスを作成します。詳細については、Azureコンテナインスタンスの作成を参照してください。

DockerイメージのAzureコンテナレジストリへのプッシュ

DockerイメージをAzureコンテナレジストリにプッシュするには:

  1. OpenText eDirectory Dockerイメージのtarballをソフトウェアライセンスとダウンロードポータルからダウンロードします。

  2. ダウンロードしたビルドをuntarしてDockerイメージを抽出し、次のコマンドを使用してローカルDockerレジストリにロードします。

    tar -xvf eDirectory_93x_Container.tar.gz
    docker load --input eDirectory_93x/eDirectory_93x.tar.gz

    このdocker loadコマンドは、tarアーカイブからedirectory:9.3.xという名前のDockerイメージをロードします。

  3. 次のコマンドを使用して、Dockerイメージにレジストリ名をタグ付けします。

    Docker tag edirectory:<image-id> <registry-name>.azurecr.io/<repository-name-tag>

    各要素は次のように指定します。

    edirectory:<image-id>は、ローカルのDockerイメージIDです。

    <registry-name>は、プライベートレジストリの名前です。

    <repository-name-tag>は、Dockerイメージに割り当てるタグです。

    例: docker tag edirectory:93x myazureregistry.azurecr.io/edir93

  4. 次のコマンドを使用して、Dockerイメージをレジストリにプッシュします。

    docker push <registry-name>.azurecr.io/<repository-name-tag>

    各要素は次のように指定します。

    <registry-name>は、プライベートレジストリの名前です。

    <repository-name-tag>は、Dockerイメージに割り当てたタグです。

    例: docker push myazureregistry.azurecr.io/edir93x

YAML設定ファイルの編集

YAMLファイルは、コンテナグループをすばやく簡単に作成または更新する手段です。Azureコマンドラインでaz container createコマンドを実行すると、YAMLファイルからグループの設定が読み込まれます。Azureコンテナインスタンスを作成する前に、OpenText eDirectory DockerイメージのtarballにバンドルされているYAMLファイルを編集してアップロードする必要があります。

次のセクションでは、主要なプロパティを強調するコメント(#記号付き)を含む、YAMLファイルのスキーマを示します。このスキーマのプロパティの説明については、「プロパティ値」セクションを参照してください。

name:  # Provide the name of the container group
apiVersion: '2019-12-01'
properties: # Properties of container group
  containers: # The containers within the container group
  - name: test-edir93 # Provide a name of container instance
    properties: # Properties of a container instance
      image: myazureregistry.azurecr.io/edir93 # Provide the name of the container image used to create the container instance
      command:
      - /start.sh #Not optional
      - 'new -t 93edir1 -n novell -a admin.novell -w xx -S server1 -i -B @1524 -o 1028 -O 1030 -L 1389 -l 1636 --configure-eba-now no' #Sample command 
      ports: # External-facing ports exposed on the instance, must also be set in group ipAddress property 
      - protocol: tcp
        port: 1030 #HTTPS port. Depends on the parameter provided in command for -O
      - protocol: tcp
        port: 1389 #LDAP port. Depends on the parameter provided in command for -L
      environmentVariables:
      - name: YAML_MODE #Mandatory variable. Required if yaml file is used for configuring edirectory
        value: '1'
      resources: # Minimum resource requirements of the instance
        requests:
          memoryInGB: 2
          cpu: 1.5
      volumeMounts: # Array of volume mounts for the instance
      - name: configvolume
        mountPath: /config #Mandatory. Do not change this path.
  imageRegistryCredentials: # Credentials to pull a private image
  - server: myazureregistry.azurecr.io #Provide the image registry server name
    username: myazureregistry #Provide the image registry username    password: xxxx #Provide the image registry password
  #restartPolicy: Never #Optional  
  ipAddress: # IP address configuration of container group
    ports:
    - protocol: tcp
      port: 1030 #HTTPS port. Depends on the parameter provided in command for -O
    - protocol: tcp
      port: 1389 #LDAP port. Depends on the parameter provided in command for -L
    type: Private
  networkProfile: # Virtual network profile for container group
    id: subscriptions/xxx-xxx-xxx/resourceGroups/myresourcegroup/providers/Microsoft.Network/networkProfiles/aci-network-profile-VirtualNetmy-containersubnet   
#Can be found by running the command, az network profile list --resource-group myResourceGroup --query [0].id --output tsv, if no output then run the first time using azure cloud shell 
  osType: Linux
  volumes: # Array of volumes available to the instances
  - name: configvolume
    azureFile:
      shareName: testshare  #Provide the name of the Azure File share to be mounted as a volume
      storageAccountName: myfileshare  #Provide name of the storage account
      storageAccountKey: xxx_xxx #Provide storage account access key

プロパティ値

次の表は、スキーマで設定する必要がある値を示しています。

名前

型

必須

値

containerGroupsオブジェクト

Name

文字列

対応

コンテナグループの名前。コンテナ名も指定できます。

apiVersion

enum

対応

リソースAPIのバージョン。たとえば、「2019-12-01」のように指定します。

プロパティ

object

対応

コンテナグループのプロパティ。propertiesでサポートされる値を探すには、この表のContainerGroupPropertiesオブジェクトを参照してください。

ContainerGroupPropertiesオブジェクト

containers

array

対応

コンテナグループ内のコンテナ。containersでサポートされる値を探すには、この表のContainerオブジェクトを参照してください。

imageRegistryCredentials

array

非対応

コンテナグループの作成に使用されるイメージレジストリ資格情報。imageRegistryCredentialsでサポートされる値を探すには、この表のImageRegistryCredentialオブジェクトを参照してください。

restartPolicy

enum

非対応

コンテナグループ内のすべてのコンテナに対するポリシーを再起動します。

  • - Always: 常に再起動

  • - OnFailure: 失敗時に再起動

  • - Never: 再起動しない

ipAddress

object

非対応

コンテナグループのIPアドレスのタイプ。ipAddressでサポートされる値を探すには、この表のIPAddressオブジェクトを参照してください。

osType

enum

対応

コンテナグループ内のコンテナに必要なオペレーティングシステムのタイプ。- WindowsまたはLinux

volumes

array

非対応

このコンテナグループ内のコンテナによってマウントできるボリュームのリスト。volumesでサポートされる値を探すには、この表のVolumeオブジェクトを参照してください。

コンテナオブジェクト

name

文字列

対応

コンテナインスタンスの、ユーザが指定した名前。たとえば、「test-edir93」とします。

プロパティ

object

対応

コンテナインスタンスのプロパティ。propertiesでサポートされる値を探すには、この表のContainerPropertiesオブジェクトを参照してください。

ContainerPropertiesオブジェクト

image

文字列

対応

コンテナインスタンスの作成に使用するイメージの名前。たとえば、myazureregistry.azurecr.io/edir93 (ステップ 3)。

command

array

非対応

コンテナインスタンス内で実行するコマンドをexec形式で指定します。OpenText eDirectory Dockerコンテナは、Dockerコマンドでndsconfigユーティリティのすべてのパラメータを受け入れます。ndsconfigユーティリティの詳細については、ndsconfigユーティリティを参照してください。

ports

array

非対応

コンテナインスタンスの公開ポート。portsでサポートされる値を探すには、この表のContainerPortオブジェクトを参照してください。

environmentVariables

array

非対応

コンテナインスタンスで設定する環境変数。environmentVariablesでサポートされる値を探すには、この表のEnvironmentVariableオブジェクトを参照してください。

リソース

object

対応

コンテナインスタンスのリソース要件。resourcesでサポートされる値を探すには、この表のResourceRequirementsオブジェクトを参照してください。

volumeMounts

array

非対応

コンテナインスタンスで使用可能なボリュームマウント。volumeMountsでサポートされる値を探すには、この表のVolumeMountオブジェクトを参照してください。

ContainerPortオブジェクト

プロトコル

enum

非対応

ポートに関連付けられているプロトコル。- TCPまたはUDP

port

integer

対応

ポート番号。

EnvironmentVariableオブジェクト

name

文字列

対応

環境変数の名前。

value

文字列

非対応

環境変数の値。

ResourceRequirementsオブジェクト

要求

object

対応

このコンテナインスタンスのリソース要求。requestsでサポートされている値を探すには、この表のResourceRequestsオブジェクトを参照してください。

ResourceRequestsオブジェクト

memoryInGB

number

対応

このコンテナインスタンスのメモリ要求(GB)。

cpu

number

対応

このコンテナインスタンスのCPU要求。

VolumeMountオブジェクト

name

文字列

対応

ボリュームマウントの名前。

mountPath

文字列

対応

ボリュームをマウントするコンテナ内のパス。コロン(:)は含めないでください。

ImageRegistryCredentialオブジェクト

サーバ

文字列

対応

Dockerイメージのレジストリサーバ。「http」や「https」などのプロトコルは付けません。チェックリストのステップ1で作成したレジストリ名を指定します(「コンテナのデプロイのチェックリスト」を参照)。

ユーザ名

文字列

非対応

プライベートレジストリのユーザ名。詳細については、ユーザ名情報の検索方法に関するページを参照してください。

password

文字列

非対応

プライベートレジストリのパスワード。詳細については、Azureレジストリパスワードの検索方法に関するページを参照してください。

IPAddressオブジェクト

ports

array

対応

コンテナグループに公開されているポートのリスト。portsでサポートされる値を探すには、この表のPortオブジェクトを参照してください。

type

enum

対応

IPがパブリックインターネットに公開されているか、プライベートVNETに公開されているかを示します。- PublicまたはPrivate

Portオブジェクト

プロトコル

enum

非対応

ポートに関連付けられているプロトコル。- TCPまたはUDP

port

integer

対応

ポート番号。

Volumeオブジェクト

name

文字列

対応

ボリュームの名前。

azureFile

object

非対応

Azureファイルボリューム。azureFileでサポートされる値を探すには、この表のAzureFileVolumeオブジェクトを参照してください。

AzureFileVolumeオブジェクト

shareName

文字列

対応

ボリュームとしてマウントするAzureファイル共有の名前。チェックリストのステップ3で作成したストレージファイル共有名を指定します(「コンテナのデプロイのチェックリスト」を参照)。

storageAccountName

文字列

対応

Azureファイル共有を含むストレージアカウントの名前。

storageAccountKey

文字列

非対応

Azureファイル共有へのアクセスに使用されるストレージアカウントのアクセスキー。ストレージアカウントキーを見つけるには、「アカウントのアクセスキーを表示する」を参照してください。

Azureコンテナインスタンスの作成

次のコマンドを実行して、前に編集したYAMLファイルを使用してコンテナグループ内にコンテナを作成します。

az container create --resource-group <MyResourceGroup> --name <container-instance-name>  --file <containerGroup.yaml>

各要素は次のように指定します。

<MyResourceGroup>は、リソースグループの名前を表します。必須フィールド。

<container-instance-name>は、コンテナグループ内のコンテナインスタンスの名前を表します。

<containerGroup.yaml>は、入力ファイルへのパスを表します。

例: az container create --resource-group MyResourcegroup --name edir93 --file edir-azure-conf.yaml