22.3. OpenShift Ansible Playbook を使用した OpenShift Container Platform インスタンスのプロビジョニング


デプロイメントホストの作成および設定が完了したら、Ansible を使用して OpenShift Container Platform のデプロイメント用に環境を準備します。以下のサブセクションでは、OpenShift Container Platform を OpenStack に適切にデプロイできるように Ansible が設定され、特定の YAML ファイルが変更されます。

22.3.1. プロビジョニング用のインベントリーの準備

これまでの手順で openshift-ansible パッケージのインストールを完了したら、sample-inventory ディレクトリーが用意されます。 これをデプロイメントホストの cloud-user ホームディレクトリーにコピーします。

デプロイメントホストで、以下を実行します。

$ cp -r /usr/share/ansible/openshift-ansible/playbooks/openstack/sample-inventory/ ~/inventory

インベントリーディレクトリー内の all.yml ファイルには、RHOCP インスタンスを正常にプロビジョニングするために設定する必要のある複数の異なるパラメーターすべてが含まれます。OSEv3.yml ファイルには、all.yml ファイルで必要な一部の参照と、カスタマイズできる利用可能なすべての OpenShift Container Platform クラスターパラメーターが含まれます。

22.3.1.1. OpenShiftSDN の All YAML ファイル

all.yml ファイルには、特定のニーズに合わせて変更できるオプションが多数あります。このファイルに収集される情報は、OpenShift Container Platform の正常なデプロイメントに必要なインスタンスのプロビジョニングの部分に対応します。これらを注意深く確認するようにしてください。本書では All YAML ファイルの縮小バージョンを扱っており、適切なデプロイメントを実行するために設定する必要のある最重要のパラメーターに重点を置いています。

$ cat ~/inventory/group_vars/all.yml
---
openshift_openstack_clusterid: "openshift"
openshift_openstack_public_dns_domain: *"example.com"*
openshift_openstack_dns_nameservers: *["10.19.115.228"]*
openshift_openstack_public_hostname_suffix: "-public"
openshift_openstack_nsupdate_zone: "{{ openshift_openstack_public_dns_domain }}"

openshift_openstack_keypair_name: *"openshift"*
openshift_openstack_external_network_name: *"public"*

openshift_openstack_default_image_name: *"rhel75"*

## Optional (Recommended) - This removes the need for floating IPs
## on the OpenShift Cluster nodes
openshift_openstack_node_subnet_name: *<deployment-subnet-name>*
openshift_openstack_router_name: *<deployment-router-name>*
openshift_openstack_master_floating_ip: *false*
openshift_openstack_infra_floating_ip: *false*
openshift_openstack_compute_floating_ip: *false*
## End of Optional Floating IP section

openshift_openstack_num_masters: *3*
openshift_openstack_num_infra: *3*
openshift_openstack_num_cns: *0*
openshift_openstack_num_nodes: *2*

openshift_openstack_master_flavor: *"m1.master"*
openshift_openstack_default_flavor: *"m1.node"*

openshift_openstack_use_lbaas_load_balancer: *true*

openshift_openstack_docker_volume_size: "15"

# # Roll-your-own DNS
*openshift_openstack_external_nsupdate_keys:*
  public:
    *key_secret: '/alb8h0EAFWvb4i+CMA12w=='*
    *key_name: "update-key"*
    *key_algorithm: 'hmac-md5'*
    *server: '<ip-of-DNS>'*
  private:
    *key_secret: '/alb8h0EAFWvb4i+CMA12w=='*
    *key_name: "update-key"*
    *key_algorithm: 'hmac-md5'*
    *server: '<ip-of-DNS>'*

ansible_user: openshift

## cloud config
openshift_openstack_disable_root: true
openshift_openstack_user: openshift
注記

外部 DNS サーバーを使用することにより、プライベートおよびパブリックのセクションは DNS サーバーのパブリック IP アドレスを使用します。 DNS サーバーが OpenStack 環境内に置かれていないためです。

上記のアスタリスク (*) で囲まれる値は、OpenStack 環境および DNS サーバーに基づいて変更する必要があります。

All YAML ファイルの DNS の部分を適切に変更するには、DNS サーバーにログインし、以下のコマンドを実行してキー名、キーアルゴリズムおよびキーシークレットを取得します。

$ ssh <ip-of-DNS>
$ sudo -i
# cat /etc/named/<key-name.key>
key "update-key" {
	algorithm hmac-md5;
	secret "/alb8h0EAFWvb4i+CMA02w==";
};
注記

キー名は変わる可能性があり、上記はサンプルであることに注意してください。

22.3.1.2. KuryrSDN All YAML ファイル

以下の all.yml ファイルは、デフォルトの OpenShiftSDN ではなく Kuryr SDN を有効にします。以下の例は凝縮されたバージョンであり、デフォルトテンプレートを注意して確認する必要があることに注意してください。

$ cat ~/inventory/group_vars/all.yml
---
openshift_openstack_clusterid: "openshift"
openshift_openstack_public_dns_domain: *"example.com"*
openshift_openstack_dns_nameservers: *["10.19.115.228"]*
openshift_openstack_public_hostname_suffix: "-public"
openshift_openstack_nsupdate_zone: "{{ openshift_openstack_public_dns_domain }}"

openshift_openstack_keypair_name: *"openshift"*
openshift_openstack_external_network_name: *"public"*

openshift_openstack_default_image_name: *"rhel75"*

## Optional (Recommended) - This removes the need for floating IPs
## on the OpenShift Cluster nodes
openshift_openstack_node_subnet_name: *<deployment-subnet-name>*
openshift_openstack_router_name: *<deployment-router-name>*
openshift_openstack_master_floating_ip: *false*
openshift_openstack_infra_floating_ip: *false*
openshift_openstack_compute_floating_ip: *false*
## End of Optional Floating IP section

openshift_openstack_num_masters: *3*
openshift_openstack_num_infra: *3*
openshift_openstack_num_cns: *0*
openshift_openstack_num_nodes: *2*

openshift_openstack_master_flavor: *"m1.master"*
openshift_openstack_default_flavor: *"m1.node"*

## Kuryr configuration
openshift_use_kuryr: True
openshift_use_openshift_sdn: False
use_trunk_ports: True
os_sdn_network_plugin_name: cni
openshift_node_proxy_mode: userspace
kuryr_openstack_pool_driver: nested
openshift_kuryr_precreate_subports: 5

kuryr_openstack_public_net_id: *<public_ID>*

# To disable namespace isolation, comment out the next 2 lines
openshift_kuryr_subnet_driver: namespace
openshift_kuryr_sg_driver: namespace
# If you enable namespace isolation, `default` and `openshift-monitoring` become the
# global namespaces. Global namespaces can access all namespaces. All
# namespaces can access global namespaces.
# To make other namespaces global, include them here:
kuryr_openstack_global_namespaces: default,openshift-monitoring

# If OpenStack cloud endpoints are accessible over HTTPS, provide the CA certificate
kuryr_openstack_ca: *<path-to-ca-certificate>*

openshift_master_open_ports:
- service: dns tcp
  port: 53/tcp
- service: dns udp
  port: 53/udp
openshift_node_open_ports:
- service: dns tcp
  port: 53/tcp
- service: dns udp
  port: 53/udp

# To set the pod network CIDR range, uncomment the following property and set its value:
#
# openshift_openstack_kuryr_pod_subnet_prefixlen: 24
#
# The subnet prefix length value must be smaller than the CIDR value that is
# set in the inventory file as openshift_openstack_kuryr_pod_subnet_cidr.
# By default, this value is /24.

# openshift_portal_net is the range that OpenShift services and their associated Octavia
# load balancer VIPs use. Amphora VMs use Neutron ports in the range that is defined by
# openshift_openstack_kuryr_service_pool_start and openshift_openstack_kuryr_service_pool_end.
#
# The value of openshift_portal_net in the OSEv3.yml file must be within the range that is
# defined by openshift_openstack_kuryr_service_subnet_cidr. This range must be half
# of openshift_openstack_kuryr_service_subnet_cidr's range. This practice ensures that
# openshift_portal_net does not overlap with the range that load balancers' VMs use, which is
# defined by openshift_openstack_kuryr_service_pool_start and openshift_openstack_kuryr_service_pool_end.
#
# For reference only, copy the value in the next line from OSEv3.yml:
# openshift_portal_net: *"172.30.0.0/16"*

openshift_openstack_kuryr_service_subnet_cidr: *"172.30.0.0/15"*
openshift_openstack_kuryr_service_pool_start: *"172.31.0.1"*
openshift_openstack_kuryr_service_pool_end: *"172.31.255.253"*

# End of Kuryr configuration

openshift_openstack_use_lbaas_load_balancer: *true*

openshift_openstack_docker_volume_size: "15"

# # Roll-your-own DNS
*openshift_openstack_external_nsupdate_keys:*
  public:
    *key_secret: '/alb8h0EAFWvb4i+CMA12w=='*
    *key_name: "update-key"*
    *key_algorithm: 'hmac-md5'*
    *server: '<ip-of-DNS>'*
  private:
    *key_secret: '/alb8h0EAFWvb4i+CMA12w=='*
    *key_name: "update-key"*
    *key_algorithm: 'hmac-md5'*
    *server: '<ip-of-DNS>'*

ansible_user: openshift

## cloud config
openshift_openstack_disable_root: true
openshift_openstack_user: openshift
注記

namespace の分離を使用している場合に、Kuryr-controller は各 namespace 用に新規の Neutron ネットワークおよびサブネットを作成します。

注記

Kuryr SDN が有効にされている場合に、ネットワークポリシーおよびノードポートサービスはサポートされません。

注記

Kuryr が有効にされている場合、OpenShift Container Platform サービスは OpenStack Octavia Amphora 仮想マシンで実装されます。

Octavia は UDP 負荷分散をサポートしません。UDP ポートを公開するサービスはサポートされません。

22.3.1.2.1. グローバル namespace アクセスの設定

kuryr_openstack_global_namespace パラメーターには、グローバル namespace を定義する一覧が含まれます。デフォルトで、default および openshift-monitoring namespace のみがこの一覧に含まれます。

OpenShift Container Platform 3.11 以前の z-release からアップグレードする場合は、グローバル namespace から他の namespace へのアクセスは、セキュリティーグループ *-allow_from_default で制御されることに注意してください。

remote_group_id ルール は、グローバル namespace から他の namespace へのアクセスを制御できますが、これを使用すると、スケーリングおよび接続の問題が生じる可能性があります。これらの問題を回避するには、*_allow_from_defaultremote_group_id を使用して remote_ip_prefix に切り替えます。

  1. コマンドラインから、ネットワークの subnetCIDR 値を取得します。

    $ oc get kuryrnets ns-default -o yaml | grep subnetCIDR
      subnetCIDR: 10.11.13.0/24
  2. この範囲の TCP および UDP ルールを作成します。

    $ openstack security group rule create --remote-ip 10.11.13.0/24 --protocol tcp openshift-ansible-openshift.example.com-allow_from_default
    $ openstack security group rule create --remote-ip 10.11.13.0/24 --protocol udp openshift-ansible-openshift.example.com-allow_from_default
  3. remote_group_id を使用するセキュリティーグループルールを削除します。

    $ openstack security group show *-allow_from_default | grep remote_group_id
    $ openstack security group rule delete REMOTE_GROUP_ID
表22.4 All YAML ファイルの変数の説明
変数説明

openshift_openstack_clusterid

クラスターの固有名

openshift_openstack_public_dns_domain

パブリック DNS ドメイン名

openshift_openstack_dns_nameservers

DNS ネームサーバーの IP

openshift_openstack_public_hostname_suffix

パブリックおよびプライベートの両方について DNS レコードのノードホスト名に接尾辞を追加します。

openshift_openstack_nsupdate_zone

OCP インスタンス IP で更新されるゾーン

openshift_openstack_keypair_name

OCP インスタンスにログインするために使用されるキーペア名

openshift_openstack_external_network_name

OpenStack パブリックネットワーク名

openshift_openstack_default_image_name

OCP インスタンスに使用される OpenStack イメージ

openshift_openstack_num_masters

デプロイするマスターノードの数

openshift_openstack_num_infra

デプロイするインフラストラクチャーノードの数

openshift_openstack_num_cns

デプロイするコンテナーネイティブストレージノードの数

openshift_openstack_num_nodes

デプロイするアプリケーションノードの数

openshift_openstack_master_flavor

マスターインスタンスに使用される OpenStack フレーバーの名前

openshift_openstack_default_flavor

特定のフレーバーが指定されていない場合に、すべてのインスタンスに使用される Openstack フレーバーの名前

openshift_openstack_use_lbaas_load_balancer

Octavia ロードバランサーを有効にするブール値 (Octavia はインストールされる必要があります)

openshift_openstack_docker_volume_size

Docker ボリュームの最小サイズ (必要な変数)

openshift_openstack_external_nsupdate_keys

DNS のインスタンス IP アドレスでの更新

ansible_user

OpenShift Container Platform をデプロイするために使用される Ansible ユーザー。"openshift" は必須の名前であり、変更することはできません。

openshift_openstack_disable_root

ルートアクセスを無効にするブール値

openshift_openstack_user

このユーザーで使用される OCP インスタンス

openshift_openstack_node_subnet_name

デプロイメントに使用する既存 OpenShift サブネットの名前。これはデプロイメントホストに使用されるものと同じサブネット名である必要があります。

openshift_openstack_router_name

デプロイメントに使用する既存 OpenShift ルーターの名前。これはデプロイメントホストに使用されるものと同じルーター名である必要があります。

openshift_openstack_master_floating_ip

デフォルトは true です。マスターノードに割り当てられた Floating IP が不要な場合は false に設定される必要があります。

openshift_openstack_infra_floating_ip

デフォルトは true です。インフラストラクチャーノードに割り当てられた Floating IP が不要な場合は false に設定される必要があります。

openshift_openstack_compute_floating_ip

デフォルトは true です。コンピュートノードに割り当てられた Floating IP が不要な場合は false に設定される必要があります。

openshift_use_openshift_sdn

openshift-sdn を無効にする必要がある場合には、false に設定される必要があります。

openshift_use_kuryr

kuryr sdn を有効にする必要がある場合には、true に設定される必要があります。

use_trunk_ports

(kuryr で必要な) トランクポートで OpenStack 仮想マシンを作成するには、true に設定される必要があります。

os_sdn_network_plugin_name

SDN 動作の選択。kuryr について cni に設定される必要があります。

openshift_node_proxy_mode

kuryr について userspace に設定される必要があります。

openshift_master_open_ports

kuryr を使用する場合に仮想マシンで開かれるポート

kuryr_openstack_public_net_id

kuryr で必要です。FIP が取得されるパブリック OpenStack ネットワークの ID です。

openshift_kuryr_subnet_driver

kuryr サブネットドライバー。namespace ごとにサブネットを作成するには namespace にする必要があります。

openshift_kuryr_sg_driver

kuryr セキュリティーグループドライバー。namespace を分離するには namespace にする必要があります。

kuryr_openstack_global_namespaces

namespace の分離に使用するグローバル namespace。デフォルト値は defaultopenshift-monitoring です。

kuryr_openstack_ca

クラウドの CA 証明書へのパスです。OpenStack クラウドエンドポイントが HTTPS 経由でアクセス可能な場合に必須です。

22.3.1.3. OSEv3 YAML ファイル

OSEv3 YAML ファイルは、OpenShift のインストールに関連するすべての異なるパラメーターおよびカスタマイズを指定します。

以下は、正常なデプロイメントに必要なすべての変数を含むファイルの縮小バージョンです。特定の OpenShift Container Platform デプロイメントに必要なカスタマイズの内容によって、追加の変数が必要になる場合があります。

$ cat ~/inventory/group_vars/OSEv3.yml
---

openshift_deployment_type: openshift-enterprise
openshift_release: v3.11
oreg_url: registry.access.redhat.com/openshift3/ose-${component}:${version}
openshift_examples_modify_imagestreams: true
oreg_auth_user: <oreg_auth_user>
oreg_auth_password: <oreg_auth_pw>
# The following is required if you want to deploy the Operator Lifecycle Manager (OLM)
openshift_additional_registry_credentials: [{'host':'registry.connect.redhat.com','user':'REGISTRYCONNECTUSER','password':'REGISTRYCONNECTPASSWORD','test_image':'mongodb/enterprise-operator:0.3.2'}]

openshift_master_default_subdomain: "apps.{{ (openshift_openstack_clusterid|trim == '') | ternary(openshift_openstack_public_dns_domain, openshift_openstack_clusterid + '.' + openshift_openstack_public_dns_domain) }}"

openshift_master_cluster_public_hostname: "console.{{ (openshift_openstack_clusterid|trim == '') | ternary(openshift_openstack_public_dns_domain, openshift_openstack_clusterid + '.' + openshift_openstack_public_dns_domain) }}"

#OpenStack Credentials:
openshift_cloudprovider_kind: openstack
openshift_cloudprovider_openstack_auth_url: "{{ lookup('env','OS_AUTH_URL') }}"
openshift_cloudprovider_openstack_username: "{{ lookup('env','OS_USERNAME') }}"
openshift_cloudprovider_openstack_password: "{{ lookup('env','OS_PASSWORD') }}"
openshift_cloudprovider_openstack_tenant_name: "{{ lookup('env','OS_PROJECT_NAME') }}"
openshift_cloudprovider_openstack_blockstorage_version: v2
openshift_cloudprovider_openstack_domain_name: "{{ lookup('env','OS_USER_DOMAIN_NAME') }}"
openshift_cloudprovider_openstack_conf_file: <path_to_local_openstack_configuration_file>

#Use Cinder volume for Openshift registry:
openshift_hosted_registry_storage_kind: openstack
openshift_hosted_registry_storage_access_modes: ['ReadWriteOnce']
openshift_hosted_registry_storage_openstack_filesystem: xfs
openshift_hosted_registry_storage_volume_size: 30Gi


openshift_hosted_registry_storage_openstack_volumeID: d65209f0-9061-4cd8-8827-ae6e2253a18d
openshift_hostname_check: false
ansible_become: true

#Setting SDN (defaults to ovs-networkpolicy) not part of OSEv3.yml
#For more info, on which to choose, visit:
#https://docs.openshift.com/container-platform/3.11/architecture/networking/sdn.html#overview
networkPluginName: redhat/ovs-networkpolicy
#networkPluginName: redhat/ovs-multitenant

#Configuring identity providers with Ansible
#For initial cluster installations, the Deny All identity provider is configured
#by default. It is recommended to be configured with either htpasswd
#authentication, LDAP authentication, or Allowing all authentication (not recommended)
#For more info, visit:
#https://docs.openshift.com/container-platform/3.10/install_config/configuring_authentication.html#identity-providers-ansible
#Example of Allowing All
#openshift_master_identity_providers: [{'name': 'allow_all', 'login': 'true', 'challenge': 'true', 'kind': 'AllowAllPasswordIdentityProvider'}]


#Optional Metrics (uncomment below lines for installation)

#openshift_metrics_install_metrics: true
#openshift_metrics_cassandra_storage_type: dynamic
#openshift_metrics_storage_volume_size: 25Gi
#openshift_metrics_cassandra_nodeselector: {"node-role.kubernetes.io/infra":"true"}
#openshift_metrics_hawkular_nodeselector: {"node-role.kubernetes.io/infra":"true"}
#openshift_metrics_heapster_nodeselector: {"node-role.kubernetes.io/infra":"true"}

#Optional Aggregated Logging (uncomment below lines for installation)

#openshift_logging_install_logging: true
#openshift_logging_es_pvc_dynamic: true
#openshift_logging_es_pvc_size: 30Gi
#openshift_logging_es_cluster_size: 3
#openshift_logging_es_number_of_replicas: 1
#openshift_logging_es_nodeselector: {"node-role.kubernetes.io/infra":"true"}
#openshift_logging_kibana_nodeselector: {"node-role.kubernetes.io/infra":"true"}
#openshift_logging_curator_nodeselector: {"node-role.kubernetes.io/infra":"true"}

一覧表示されている変数のいずれかについての詳細は、OpenShift-Ansible ホストインベントリーのサンプル を参照してください。

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

© 2024 Red Hat, Inc.