22.3. OpenShift Ansible 플레이북을 사용하여 OpenShift Container Platform 인스턴스 프로비저닝


배포 호스트의 생성 및 구성이 완료되면 Ansible을 사용하여 OpenShift Container Platform 배포를 위한 환경을 준비합니다. 다음 하위 섹션에서 Ansible이 구성되고 특정 YAML 파일이 OpenStack 배포 시 OpenShift Container Platform을 성공적으로 수행하도록 수정됩니다.

22.3.1. 프로비저닝을 위한 인벤토리 준비

이전 단계를 통해 openshift-ansible 패키지를 설치하면 배포 호스트의 cloud -user 홈 디렉터리에 복사할 sample- inventory 디렉터리가 있습니다.

배포 호스트에서

$ 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 file

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 서버를 사용하므로 private 및 public 섹션에서는 DNS 서버가 OpenStack 환경에 있지 않으므로 DNS 서버의 공용 IP 주소를 사용합니다.

별표(*)로 묶은 위의 값은 OpenStack 환경과 DNS 서버를 기반으로 수정해야 합니다.

모든 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 모든 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
참고

네임스페이스 격리를 사용하는 경우 Kuryr-controller는 각 네임스페이스에 대해 새 Neutron 네트워크 및 서브넷을 생성합니다.

참고

Kuryr SDN이 활성화되면 네트워크 정책 및 노드 포트 서비스가 지원되지 않습니다.

참고

Kuryr가 활성화되면 OpenStack Octavia Amphora VM을 통해 OpenShift Container Platform 서비스가 구현됩니다.

Octavia는 UDP 로드 밸런싱을 지원하지 않습니다. UDP 포트를 노출하는 서비스는 지원되지 않습니다.

22.3.1.2.1. 글로벌 네임 스페이스 액세스 구성

The kuryr_openstack_global_namespace 매개 변수에는 글로벌 네임스페이스를 정의하는 목록이 포함되어 있습니다. 기본적으로 defaultopenshift-monitoring 네임스페이스만 이 목록에 포함되어 있습니다.

OpenShift Container Platform 3.11의 이전 z-release에서 업그레이드하는 경우 글로벌 네임스페이스의 다른 네임스페이스에 대한 액세스는 보안 그룹 *-allow_from_default 에서 제어합니다.

remote_group_id 규칙은 글로벌 네임스페이스에서 다른 네임스페이스에 대한 액세스를 제어할 수 있지만 를 사용하면 확장 및 연결 문제가 발생할 수 있습니다. 이러한 문제를 방지하려면 *_allow_from _default에서 remote_ ip_prefix로 remote_ group_ id 를 사용하지 마십시오.

  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. 모든 YAML 파일의 변수에 대한 설명
Variable설명

openshift_openstack_clusterid

클러스터 ID 이름

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

인스턴스 IP 주소로 DNS 업데이트

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 입니다. 유동 IP를 마스터 노드에 할당하지 않으려면 false 로 설정해야 합니다.

openshift_openstack_infra_floating_ip

기본값은 true 입니다. 유동 IP를 인프라 노드에 할당하지 않으려면 false 로 설정해야 합니다.

openshift_openstack_compute_floating_ip

기본값은 true 입니다. 유동 IP를 계산 노드에 할당하지 않으려면 false 로 설정해야 합니다.

openshift_use_openshift_sdn

openshift-sdn을 비활성화하려면 false 로 설정해야 합니다

openshift_use_kuryr

kuryr sdn을 사용하려면 true 로 설정해야 합니다

use_trunk_ports

트렁크 포트가 있는 OpenStack VM을 생성하려면 true 로 설정해야 합니다(Kuryr에서 필요)

os_sdn_network_plugin_name

SDN 동작 선택. kuryr에 대해 to cni 를 설정해야 합니다

openshift_node_proxy_mode

Kuryr의 사용자 공간으로 설정해야 합니다

openshift_master_open_ports

Kuryr를 사용할 때 VM에서 열 포트

kuryr_openstack_public_net_id

Kuryr의 필요성. FIP가 가져오는 퍼블릭 OpenStack 네트워크의 ID

openshift_kuryr_subnet_driver

Kuryr 서브넷 드라이버. 네임스페이스 당 서브넷을 생성하기 위한 네임스페이스여야 합니다.

openshift_kuryr_sg_driver

Kuryr 보안 그룹 드라이버. 네임스페이스 격리를 위한 네임스페이스 여야 합니다

kuryr_openstack_global_namespaces

네임스페이스 격리에 사용할 글로벌 네임스페이스입니다. 기본값은 defaultopenshift-monitoring 입니다.

kuryr_openstack_ca

클라우드의 CA 인증서 경로입니다. HTTPS를 통해 OpenStack 클라우드 엔드포인트에 액세스할 수 있는 경우 필요합니다.

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은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.