Bug 1503708

Summary: [RFE] Integrate networking Heat templates and Kuryr-Kubernetes config templates into OpenShift Ansible
Product: OpenShift Container Platform Reporter: Antoni Segura Puimedon <asegurap>
Component: RFEAssignee: Antoni Segura Puimedon <asegurap>
Status: CLOSED CURRENTRELEASE QA Contact: Jon Uriarte <juriarte>
Severity: high Docs Contact:
Priority: high    
Version: unspecifiedCC: aos-bugs, jokerman, lpeer, mdulko, mmccomas, myllynen, oblaut, tsedovic, tzumainn
Target Milestone: ---Keywords: Triaged
Target Release: 3.10.0   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2018-12-20 21:41:28 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On: 1503243, 1503667    
Bug Blocks:    

Description Antoni Segura Puimedon 2017-10-18 14:57:47 UTC
Description of problem:

OpenShift on OpenStack with native OpenStack Neutron networking via Kuryr requires the creation and management of OpenStack Neutron resources in the deployment step. This RFE is about extending OpenShift Ansible Heat templates to create the necessary Neutron resources and using those resources to automatically configure most of the Kuryr-Kubernetes OpenShift Ansible Support.

Steps to Reproduce:
1. Place Kuryr usage options in the inventory
2. ansible-playbook playbooks/byo/config.yml -vvv

Actual results:
Not implemented

Expected results:
Have Kuryr-controller and CNI daemon ConfigMaps with the right configuration stemming from the Heat created resources.

Actual results:
Please include the entire output from the last TASK line through the end of output if an error is generated

Comment 1 Tomas Sedovic 2018-05-04 13:01:06 UTC
This has been implemented.

Testing instructions:

1. Configure the Kuryr SDN in the openshift-ansible inventory all.yml:

    openshift_use_kuryr: True
    openshift_use_openshift_sdn: False
    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
    use_trunk_ports: True
    os_sdn_network_plugin_name: cni
    openshift_node_proxy_mode: userspace
    openshift_hosted_manage_registry: false
    # # Kuryr needs to know the subnet you will be taking Floating IPs for the
    # loadbalancer services from.
    kuryr_openstack_public_subnet_id: cdbd1855-0b23-4ddc-8186-e10a963156b8
    openshift_kuryr_precreate_subports: 5
    openshift_kuryr_device_owner: compute:kuryr
    enable_kuryr_controller_probes: False
    enable_kuryr_cni_probes: False

2. Run the openshift-ansible/playbooks/openstack/openshift-cluster/provision_install.yml playbook

Verification:

1. The playbook must finish without errors.
2. Running `oc get pod -n openshift-infra` while SSHd into a master node. It should list one CNI pod for every OpenShift node and a single kuryr-controller pod

Comment 2 Jon Uriarte 2018-05-31 08:01:15 UTC
Verified in openshift-ansible-3.10.0-0.53.0.git.0.53fe016.el7.noarch and openshift-ansible-playbooks-3.10.0-0.53.0.git.0.53fe016.el7.noarch.

Verification steps:
1. Configure the Kuryr SDN in the openshift-ansible inventory all.yml:

    openshift_use_kuryr: True
    openshift_use_openshift_sdn: False
    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
    use_trunk_ports: True
    os_sdn_network_plugin_name: cni
    openshift_node_proxy_mode: userspace
    openshift_hosted_manage_registry: false
    # # Kuryr needs to know the subnet you will be taking Floating IPs for the
    # loadbalancer services from.
    kuryr_openstack_public_net_id: dd5a700a-a0bf-4e18-b6db-a59f4063f7b4
    openshift_kuryr_precreate_subports: 5
    openshift_kuryr_device_owner: compute:kuryr
    enable_kuryr_controller_probes: False
    enable_kuryr_cni_probes: False

2. Run the openshift-ansible openstack playbook (deployed 1 master, 1 infra and 2 app nodes)
3. Verify kuryr controller and cni pods are ready and running:
  [openshift@master-0 ~]$ oc get pod -n openshift-infra
  NAME                                READY     STATUS    RESTARTS   AGE
  bootstrap-autoapprover-0            1/1       Running   0          16h
  kuryr-cni-ds-bcvrp                  1/1       Running   0          16h
  kuryr-cni-ds-hnqw2                  1/1       Running   0          16h
  kuryr-cni-ds-jvn5x                  1/1       Running   0          16h
  kuryr-cni-ds-kjxnv                  1/1       Running   0          16h
  kuryr-controller-65c98f7444-vv5l8   1/1       Running   0          16h