From a071606b0b1d6e21373e7e3423ce3bcf4097613d Mon Sep 17 00:00:00 2001 From: Pragadeeswaran Sathyanarayanan Date: Fri, 26 Jan 2024 14:39:34 +0530 Subject: [PATCH] CRs for uni-alpha Signed-off-by: Pragadeeswaran Sathyanarayanan --- automation/vars/uni01alpha.yaml | 34 ++++ dt/uni01alpha/README.md | 11 ++ dt/uni01alpha/edpm/kustomization.yaml | 20 ++ dt/uni01alpha/kustomization.yaml | 164 ++++++++++++++++ dt/uni01alpha/namespace.yaml | 12 ++ examples/dt/uni01alpha/.gitignore | 1 + examples/dt/uni01alpha/README.md | 112 +++++++++++ examples/dt/uni01alpha/control-plane.md | 53 ++++++ examples/dt/uni01alpha/data-plane.md | 62 ++++++ examples/dt/uni01alpha/edpm/.gitignore | 1 + .../dt/uni01alpha/edpm/kustomization.yaml | 9 + examples/dt/uni01alpha/edpm/values.yaml | 155 +++++++++++++++ examples/dt/uni01alpha/kustomization.yaml | 10 + examples/dt/uni01alpha/nncp/.gitignore | 1 + .../dt/uni01alpha/nncp/kustomization.yaml | 23 +++ examples/dt/uni01alpha/nncp/values.yaml | 176 ++++++++++++++++++ examples/dt/uni01alpha/service-values.yaml | 62 ++++++ lib/control-plane/openstackcontrolplane.yaml | 24 +++ 18 files changed, 930 insertions(+) create mode 100644 automation/vars/uni01alpha.yaml create mode 100644 dt/uni01alpha/README.md create mode 100644 dt/uni01alpha/edpm/kustomization.yaml create mode 100644 dt/uni01alpha/kustomization.yaml create mode 100644 dt/uni01alpha/namespace.yaml create mode 100644 examples/dt/uni01alpha/.gitignore create mode 100644 examples/dt/uni01alpha/README.md create mode 100644 examples/dt/uni01alpha/control-plane.md create mode 100644 examples/dt/uni01alpha/data-plane.md create mode 100644 examples/dt/uni01alpha/edpm/.gitignore create mode 100644 examples/dt/uni01alpha/edpm/kustomization.yaml create mode 100644 examples/dt/uni01alpha/edpm/values.yaml create mode 100644 examples/dt/uni01alpha/kustomization.yaml create mode 100644 examples/dt/uni01alpha/nncp/.gitignore create mode 100644 examples/dt/uni01alpha/nncp/kustomization.yaml create mode 100644 examples/dt/uni01alpha/nncp/values.yaml create mode 100644 examples/dt/uni01alpha/service-values.yaml diff --git a/automation/vars/uni01alpha.yaml b/automation/vars/uni01alpha.yaml new file mode 100644 index 000000000..fa417907e --- /dev/null +++ b/automation/vars/uni01alpha.yaml @@ -0,0 +1,34 @@ +--- +vas: + uni01alpha: + stages: + - path: examples/dt/uni01alpha/nncp + validations: + - >- + oc -n openstack wait nncp + -l osp/nncm-config-type=standard + --for jsoonpath='{.status.conditions[0].reason}'=SuccessfullyConfigured + --timeout=60s + values: + - name: network-values + src_file: values.yaml + build_output: nncp.yaml + + - path: examples/dt/uni01alpha + validations: + - >- + oc -n openstack wait openstackcontrolplane + controlplane + --for condition=Ready + values: + - name: network-values + src_file: none + build_output: control-plane.yaml + + - path: examples/dt/uni01alpha/edpm + validations: + - >- + oc -n openstack wait openstackdataplanedeployment + edpm-deployment + --for condition=Ready + --timeout=1200s diff --git a/dt/uni01alpha/README.md b/dt/uni01alpha/README.md new file mode 100644 index 000000000..d89f09682 --- /dev/null +++ b/dt/uni01alpha/README.md @@ -0,0 +1,11 @@ +# Deployed Topology - Alpha + +If you are looking for information on how to deploy the alpha based DT, then +please the [README](../../examples/dt/uni01alpha/README.md) in the examples +directory. + +This directory `dt/uni01alpha/`, exists so that the +[kustomization.yaml](../../examples/dt/uni01alpha/kustomization.yaml) in +the examples directory of uni01alpha topology, reference it by path as a +component. It's contents are likely uninteresting unless you want to understand +how kustomize was implemented in this repository. diff --git a/dt/uni01alpha/edpm/kustomization.yaml b/dt/uni01alpha/edpm/kustomization.yaml new file mode 100644 index 000000000..6830999ea --- /dev/null +++ b/dt/uni01alpha/edpm/kustomization.yaml @@ -0,0 +1,20 @@ +--- +apiVersion: kustomize.config.k8s.io/v1alpha1 +kind: Component + +transformers: +- |- + apiVersion: builtin + kind: NamespaceTransformer + metadata: + name: _ignored_ + namespace: openstack + setRoleBindingSubjects: none + unsetOnly: true + fieldSpecs: + - path: metadata/name + kind: Namespace + create: true + +components: +- ../../../lib/dataplane diff --git a/dt/uni01alpha/kustomization.yaml b/dt/uni01alpha/kustomization.yaml new file mode 100644 index 000000000..ecc8ca366 --- /dev/null +++ b/dt/uni01alpha/kustomization.yaml @@ -0,0 +1,164 @@ +--- +apiVersion: kustomize.config.k8s.io/v1alpha1 +kind: Component + +transformers: + - |- + apiVersion: builtin + kind: NamespaceTransformer + metadata: + name: _ignored_ + namespace: openstack + setRoleBindingSubjects: none + unsetOnly: true + fieldSpecs: + - path: metadata/name + kind: Namespace + create: true + +components: + - ../../lib/networking + - ../../lib/control-plane + +replacements: + - source: + kind: ConfigMap + name: service-values + fieldPath: data.cinderVolumes.customServiceConfig + targets: + - select: + kind: OpenStackControlPlane + fieldPaths: + - spec.cinder.template.cinderVolumes.customServiceConfig + + - source: + kind: ConfigMap + name: service-values + fieldPath: data.cinderBackup.customServiceConfig + targets: + - select: + kind: OpenStackControlPlane + fieldPaths: + - spec.cinder.template.cinderBackup.customServiceConfig + options: + create: true + + - source: + kind: ConfigMap + name: service-values + fieldPath: data.cinderBackup.replicas + targets: + - select: + kind: OpenStackControlPlane + fieldPaths: + - spec.cinder.template.cinderBackup.replicas + options: + create: true + + - source: + kind: ConfigMap + name: service-values + fieldPath: data.glance.default.replicas + targets: + - select: + kind: OpenStackControlPlane + fieldPaths: + - spec.glance.template.glanceAPIs.default.replicas + options: + create: true + + - source: + kind: ConfigMap + name: service-values + fieldPath: data.glance.customServiceConfig + targets: + - select: + kind: OpenStackControlPlane + fieldPaths: + - spec.glance.template.customServiceConfig + options: + create: true + + - source: + kind: ConfigMap + name: service-values + fieldPath: data.glance.default.replicas + targets: + - select: + kind: OpenStackControlPlane + fieldPaths: + - spec.glance.template.glanceAPIs.default.replicas + options: + create: true + + - source: + kind: ConfigMap + name: service-values + fieldPath: data.swift.enabled + targets: + - select: + kind: OpenStackControlPlane + fieldPaths: + - spec.swift.enabled + options: + create: true + + - source: + kind: ConfigMap + name: service-values + fieldPath: data.ironic.enabled + targets: + - select: + kind: OpenStackControlPlane + fieldPaths: + - spec.ironic.enabled + options: + create: true + + - source: + kind: ConfigMap + name: service-values + fieldPath: data.octavia.enabled + targets: + - select: + kind: OpenStackControlPlane + fieldPaths: + - spec.octavia.enabled + options: + create: true + + - source: + kind: ConfigMap + name: service-values + fieldPath: data.telemetry.enabled + targets: + - select: + kind: OpenStackControlPlane + fieldPaths: + - spec.telemetry.enabled + options: + create: true + + - source: + kind: ConfigMap + name: service-values + fieldPath: data.telemetry.autoscaling.enabled + targets: + - select: + kind: OpenStackControlPlane + fieldPaths: + - spec.telemetry.template.autoscaling.enabled + options: + create: true + + - source: + kind: ConfigMap + name: service-values + fieldPath: data.telemetry.ceilometer.enabled + targets: + - select: + kind: OpenStackControlPlane + fieldPaths: + - spec.telemetry.template.ceilometer.enabled + options: + create: true diff --git a/dt/uni01alpha/namespace.yaml b/dt/uni01alpha/namespace.yaml new file mode 100644 index 000000000..60a6e8c42 --- /dev/null +++ b/dt/uni01alpha/namespace.yaml @@ -0,0 +1,12 @@ +--- +apiVersion: builtin +kind: NamespaceTransformer +metadata: + name: _ignored_ + namespace: openstack +setRoleBindingSubjects: none +unsetOnly: true +fieldSpecs: + - path: metadata/name + kind: Namespace + create: true diff --git a/examples/dt/uni01alpha/.gitignore b/examples/dt/uni01alpha/.gitignore new file mode 100644 index 000000000..3df8f53be --- /dev/null +++ b/examples/dt/uni01alpha/.gitignore @@ -0,0 +1 @@ +control-plane.yaml diff --git a/examples/dt/uni01alpha/README.md b/examples/dt/uni01alpha/README.md new file mode 100644 index 000000000..a4759e6aa --- /dev/null +++ b/examples/dt/uni01alpha/README.md @@ -0,0 +1,112 @@ +# Deployed Topology - Alpha + +This document contains a list of integration test suites that would be +executed against the below specified topology of Red Hat OpenStack Services +on OpenShift. It also contains a collection of custom resources (CRs) for +deploying the test environment. + +## Purpose + +This topology is used for executing integration tests that evaluate the +`default` backends of the below mentioned services. + +## Environment + +### Nodes + +| Role | Machine Type | Count | +| ---- | ------------ | ----- | +| Compact OpenShift | vm | 3 | +| OpenStack Compute | vm | 2 | +| Networker | vm | 3 | +| Test nodes | vm | 2 | + +### Networks + +| Name | Type | Interface | +| ---- | ---- | --------- | +| Provisioning | untagged | nic1 | +| Machine | untagged | nic2 | +| RH OSP | trunk | nic3 | + +#### Networks in RH OSP + +| Name | Type | +| ---- | ---- | +| ctlplane | untagged | +| internalapi | VLAN tagged | +| Storage | VLAN tagged | +| Tenant | VLAN tagged | + +### Services, enabled features and configurations + +| Service | configuration | Lock-in coverage? | +| ---------------- | ---------------- | ------------------ | +| Cinder | LVM/iSCSI/lioadm | Must have | +| Cinder Backup | Swift | Must have | +| Glance | Swift | Must have | +| Swift | (default) | Must have | +| Octavia | (amphora) | Must have | +| Horizon | N/A | Must have | +| Barbican | (default) | Must have | +| Telemetry | | Must have | +| Ironic | | Must have | + +#### Support services + +The following table lists services which are not the main focus of the testing +(which may be covered by additional scenarios), but are required for the DT to +work properly and can be deployed with any/default configuration. + +| Service | Reason | +| ---------------- |------------------ | +| Neutron | needed by other services | +| Nova | needed by scenario testing | +| Keystone | needed by all services | + +### Additional configuration + +- Always-on, default services and features: TLSe +- Two additional fake baremetal nodes +- Availability zones for OVN + +#### iSCSI + +It is assumed *iSCSI* services are enabled in all nodes participating in the +Red Hat OpenShift cluster. If not, a `MachineConfig` similar to the below one +is applied. The node needs to be *rebooted* after applying the configuration. + +```YAML +--- +apiVersion: machineconfiguration.openshift.io/v1 +kind: MachineConfig +metadata: + labels: + machineconfiguration.openshift.io/role: worker + service: cinder + name: 90-master-cinder-enable-iscsid +spec: + config: + ignition: + version: 3.2.0 + systemd: + units: + - enabled: true + name: iscsid.service +``` + +## Testing + +| Test framework | When to run | Special configuration | +| ---------------- | -------------------- | ----------------------| +| relevant volume tests | tempest stage | | +| relevant image tests | tempest stage | | +| relevant object-storage tests | tempest stage | | +| relevant octavia tests | tempest stage | | +| horizon integration | own stage (post-tempest)| | + +## Workflow + +1. [Install the OpenStack K8S operators and their dependencies](../../common/README.md) +2. [Configure and deploy the OpenStack control plane](control-plane.md) +3. [Configure and deploy the OpenStack data plane](data-plane.md) diff --git a/examples/dt/uni01alpha/control-plane.md b/examples/dt/uni01alpha/control-plane.md new file mode 100644 index 000000000..53170a87d --- /dev/null +++ b/examples/dt/uni01alpha/control-plane.md @@ -0,0 +1,53 @@ +# Configuring networking and deploy the OpenStack control plane + +## Assumptions + +- A storage class called `local-storage` should already exist. + +## Initialize + +Switch to the "openstack" namespace + +```bash +oc project openstack +``` + +Change to the delta directory + +```bash +cd architecture/examples/dt/uni01alpha +``` + +Edit [service-values.yaml](service-values.yaml) and +[nncp/values.yaml](nncp/values.yaml). + +Apply node network configuration + +```bash +pushd nncp +kustomize build nncp > nncp.yaml +oc apply -f nncp.yaml +oc wait nncp \ + -l osp/nncm-config-types=standard \ + --for jsonpath='{.status.conditions[0].reason}'=SuccessfullyConfigured \ + --timeout=300s +popd +``` + +Generate the control-plane and networking CRs. + +```bash +kustomize build > control-plane.yaml +``` + +## Create CRs + +```bash +oc apply -f control-plane.yaml +``` + +Wait for control plane to be available + +```bash +oc wait osctlplane controlplane --for condition=Ready --timeout=600s +``` diff --git a/examples/dt/uni01alpha/data-plane.md b/examples/dt/uni01alpha/data-plane.md new file mode 100644 index 000000000..9b3a3bd48 --- /dev/null +++ b/examples/dt/uni01alpha/data-plane.md @@ -0,0 +1,62 @@ +# Deploying the OpenStack dataplane + +## Assumptions + +- The [control plane](../control-plane.md) has been successfully deployed. + +## Initialize + +Switch to the "openstack" namespace + +```bash +oc project openstack +``` + +Change to the alpha's edpm directory + +```bash +cd architecture/examples/dt/unified/alpha/edpm +``` + +Modify the [values.yaml](values.yaml) with the following information + +- SSH keys to be used for accessing the deployed compute nodes. +- SSH keys to be use for Nova migration. + +> All values must be in base64 encoded format. + +### Compute access + +1. Set `data['authorized']` with the value of all OpenStack Compute host SSH + keys. +2. Set `data['private']` with the contents of the SSH private key to be used + for accessing the dataplane compute nodes. +3. Set `data['public']` with the contents of the SSH public key used for + accessing the dataplane compute nodes. + +### Nova migration + +1. Set `data['nova']['migration']['ssh_keys']['private']` with the content of + the SSH private key to be used for potential future migration. +2. Set `data['nova']['migration']['ssh_keys']['public']` with the content of + the SSH public key to be used for potential future migration. + +## CRs + +Generate the dataplane CRs. + +```bash +kustomize build > dataplane.yaml +``` + +## Create CRs + +```bash +oc apply -f dataplane.yaml +``` + +Wait for dataplane deployment to finish + +```bash +oc wait osdpd edpm-deployment --for condition=Ready --timeout=1200s +``` diff --git a/examples/dt/uni01alpha/edpm/.gitignore b/examples/dt/uni01alpha/edpm/.gitignore new file mode 100644 index 000000000..644fb5d06 --- /dev/null +++ b/examples/dt/uni01alpha/edpm/.gitignore @@ -0,0 +1 @@ +dataplane.yaml diff --git a/examples/dt/uni01alpha/edpm/kustomization.yaml b/examples/dt/uni01alpha/edpm/kustomization.yaml new file mode 100644 index 000000000..faa31e31a --- /dev/null +++ b/examples/dt/uni01alpha/edpm/kustomization.yaml @@ -0,0 +1,9 @@ +--- +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization + +components: + - ../../../../dt/uni01alpha/edpm/ + +resources: + - values.yaml diff --git a/examples/dt/uni01alpha/edpm/values.yaml b/examples/dt/uni01alpha/edpm/values.yaml new file mode 100644 index 000000000..576661283 --- /dev/null +++ b/examples/dt/uni01alpha/edpm/values.yaml @@ -0,0 +1,155 @@ +--- +apiVersion: v1 +kind: ConfigMap + +metadata: + name: edpm-values + annotations: + config.kubernetes.io/local-config: "true" + +data: + ssh_keys: + authorized: _replaced_ + private: _replaced_ + public: _replaced_ + + nova: + migration: + ssh_keys: + private: _replaced_ + public: _replaced_ + + nodeset: + ansible: + ansibleUser: cloud-admin + ansiblePort: 22 + ansibleVars: + service_net_map: + nova_api_network: internalapi + nova_libvirt_network: internalapi + timesync_ntp_servers: + - hostname: clock.redhat.com + edpm_network_config_hide_sensitive_logs: false + edpm_network_config_template: | + --- + {% set mtu_list = [ctlplane_mtu] %} + {% for network in role_networks %} + {{ mtu_list.append(lookup('vars', networks_lower[network] ~ '_mtu')) }} + {%- endfor %} + {% set min_viable_mtu = mtu_list | max %} + network_config: + - type: ovs_bridge + name: {{ neutron_physical_bridge_name }} + mtu: {{ min_viable_mtu }} + use_dhcp: false + dns_servers: {{ ctlplane_dns_nameservers }} + domain: {{ dns_search_domains }} + addresses: + - ip_netmask: {{ ctlplane_ip }}/{{ ctlplane_cidr }} + routes: {{ ctlplane_host_routes }} + members: + - type: interface + name: nic2 + mtu: {{ min_viable_mtu }} + primary: true + {% for network in role_networks %} + - type: vlan + mtu: {{ lookup('vars', networks_lower[network] ~ '_mtu') }} + vlan_id: {{ lookup('vars', networks_lower[network] ~ '_vlan_id') }} + addresses: + - ip_netmask: + {{ lookup('vars', networks_lower[network] ~ '_ip') }}/{{ lookup('vars', networks_lower[network] ~ '_cidr') }} + routes: {{ lookup('vars', networks_lower[network] ~ '_host_routes') }} + {% endfor %} + neutron_physical_bridge_name: br-ex + neutron_public_interface_name: eth0 + + edpm_nodes_validation_validate_controllers_icmp: false + edpm_nodes_validation_validate_gateway_icmp: false + + edpm_selinux_mode: enforcing + edpm_sshd_allowed_ranges: + - 192.168.122.0/24 + edpm_sshd_configure_firewall: true + + enable_debug: false + gather_facts: false + + image_tag: 18.0 + registry_url: registry-proxy.engineering.redhat.com/rh-osbs + container_prefix: rhosp18-openstack + + edpm_iscsid_image: '{{ registry_url }}/{{ container_prefix }}-iscsid:{{ image_tag }}' + edpm_logrotate_crond_image: '{{ registry_url }}/{{ container_prefix }}-cron:{{ image_tag }}' + edpm_neutron_metadata_agent_image: '{{ registry_url }}/{{ container_prefix }}-neutron-metadata-agent-ovn:{{ image_tag }}' + edpm_nova_compute_container_image: '{{ registry_url }}/{{ container_prefix }}-nova-compute:{{ image_tag }}' + edpm_nova_libvirt_container_image: '{{ registry_url }}/{{ container_prefix }}-nova-libvirt:{{ image_tag }}' + edpm_libvirt_image: '{{ registry_url }}/{{ container_prefix }}-nova-libvirt:{{ image_tag }}' + edpm_ovn_controller_agent_image: '{{ registry_url }}/{{ container_prefix }}-ovn-controller:{{ image_tag }}' + edpm_ovn_metadata_agent_image: '{{ registry_url }}/{{ container_prefix }}-neutron-metadata-agent-ovn:{{ image_tag }}' + + nodes: + edpm-compute-0: + ansible: + ansibleHost: 192.168.122.100 + hostName: edpm-compute-0 + networks: + - defaultRoute: true + fixedIP: 192.168.122.100 + name: ctlplane + subnetName: ctlplaneSubnet + - name: internalapi + subnetName: internalApiSubnet + - name: storage + subnetName: storageSubnet + - name: tenant + subnetName: tenantSubnet + + edpm-compute-1: + ansible: + ansibleHost: 192.168.122.101 + hostName: edpm-compute-1 + networks: + - defaultRoute: true + fixedIP: 192.168.122.101 + name: ctlplane + subnetName: ctlplaneSubnet + - name: internalapi + subnetName: internalApiSubnet + - name: storage + subnetName: storageSubnet + - name: tenant + subnetName: tenantSubnet + + edpm-compute-2: + ansible: + ansibleHost: 192.168.122.102 + hostName: edpm-compute-2 + networks: + - defaultRoute: true + fixedIP: 192.168.122.102 + name: ctlplane + subnetName: ctlplaneSubnet + - name: internalapi + subnetName: internalApiSubnet + - name: storage + subnetName: storageSubnet + - name: tenant + subnetName: tenantSubnet + + services: + - repo-setup + - download-cache + - bootstrap + - reboot-os + - configure-network + - validate-network + - install-os + - configure-os + - run-os + - reboot-os + - ovn + - neutron-metadata + - libvirt + - nova + - telemetry diff --git a/examples/dt/uni01alpha/kustomization.yaml b/examples/dt/uni01alpha/kustomization.yaml new file mode 100644 index 000000000..3c95ea72e --- /dev/null +++ b/examples/dt/uni01alpha/kustomization.yaml @@ -0,0 +1,10 @@ +--- +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization + +components: + - ../../../dt/uni01alpha/ + +resources: + - nncp/values.yaml + - service-values.yaml diff --git a/examples/dt/uni01alpha/nncp/.gitignore b/examples/dt/uni01alpha/nncp/.gitignore new file mode 100644 index 000000000..51ed8a956 --- /dev/null +++ b/examples/dt/uni01alpha/nncp/.gitignore @@ -0,0 +1 @@ +nncp.yaml diff --git a/examples/dt/uni01alpha/nncp/kustomization.yaml b/examples/dt/uni01alpha/nncp/kustomization.yaml new file mode 100644 index 000000000..71d3bfc41 --- /dev/null +++ b/examples/dt/uni01alpha/nncp/kustomization.yaml @@ -0,0 +1,23 @@ +--- +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization + +transformers: + - |- + apiVersion: builtin + kind: NamespaceTransformer + metadata: + name: _ignored_ + namespace: openstack + setRoleBindingSubjects: none + unsetOnly: true + fieldSpecs: + - path: metadata/name + kind: Namespace + create: true + +components: + - ../../../../lib/nncp + +resources: + - values.yaml diff --git a/examples/dt/uni01alpha/nncp/values.yaml b/examples/dt/uni01alpha/nncp/values.yaml new file mode 100644 index 000000000..2c26d96ec --- /dev/null +++ b/examples/dt/uni01alpha/nncp/values.yaml @@ -0,0 +1,176 @@ +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: network-values + annotations: + config.kubernetes.io/local-config: "true" +data: + node_0: + name: master-0 + ctlplane_ip: 192.168.122.10 + internalapi_ip: 172.17.0.10 + storage_ip: 172.18.0.10 + tenant_ip: 172.19.0.10 + node_1: + name: master-1 + ctlplane_ip: 192.168.122.11 + internalapi_ip: 172.17.0.11 + storage_ip: 172.18.0.11 + tenant_ip: 172.19.0.11 + node_3: + name: master-2 + ctlplane_ip: 192.168.122.12 + internalapi_ip: 172.17.0.12 + storage_ip: 172.18.0.12 + tenant_ip: 172.19.0.12 + + ctlplane: + dnsDomain: ctlplane.rh.openstack.com + subnets: + - allocationRanges: + - end: 192.168.122.150 + start: 192.168.122.100 + cidr: 192.168.122.0/24 + gateway: 192.168.122.1 + name: ctlplaneSubnet + prefix-length: 24 + iface: enp3s0 + mtu: 1500 + lb_addresses: + - 192.168.122.80-192.168.122.90 + endpoint_annotations: + metallb.universe.tf/address-pool: ctlplane + metallb.universe.tf/allow-shared-ip: ctlplane + metallb.universe.tf/loadBalancerIPs: 192.168.122.80 + net-attach-def: | + { + "cniVersion": "0.3.1", + "name": "ctlplane", + "master": "enp1s0", + "ipam": { + "type": "whereabouts", + "range": "192.168.122.0/24", + "range_start": "192.168.122.30", + "range_end": "192.168.122.70" + } + } + internalapi: + dnsDomain: internalapi.rh.openstack.com + subnets: + - allocationRanges: + - end: 172.17.0.200 + start: 172.17.0.100 + cidr: 172.17.0.0/24 + name: internalApiSubnet + vlan: 20 + mtu: 1500 + prefix-length: 24 + iface: enp3s0.20 + vlan: 20 + base_iface: enp3s0 + lb_addresses: + - 172.17.0.80-172.17.0.90 + endpoint_annotations: + metallb.universe.tf/address-pool: internalapi + metallb.universe.tf/allow-shared-ip: internalapi + metallb.universe.tf/loadBalancerIPs: 172.17.0.80 + net-attach-def: | + { + "cniVersion": "0.3.1", + "name": "internalapi", + "type": "macvlan", + "master": "internalapi", + "ipam": { + "type": "whereabouts", + "range": "172.17.0.0/24", + "range_start": "172.17.0.30", + "range_end": "172.17.0.70" + } + } + storage: + dnsDomain: storage.rh.openstack.com + subnets: + - allocationRanges: + - end: 172.18.0.200 + start: 172.18.0.100 + cidr: 172.18.0.0/24 + name: storageSubnet + vlan: 21 + mtu: 1500 + prefix-length: 24 + iface: enp3s0.21 + vlan: 21 + base_iface: enp3s0 + lb_addresses: + - 172.18.0.80-172.18.0.90 + net-attach-def: | + { + "cniVersion": "0.3.1", + "name": "storage", + "type": "macvlan", + "master": "storage", + "ipam": { + "type": "whereabouts", + "range": "172.18.0.0/24", + "range_start": "172.18.0.30", + "range_end": "172.18.0.70" + } + } + tenant: + dnsDomain: tenant.rh.openstack.com + subnets: + - allocationRanges: + - end: 172.19.0.200 + start: 172.19.0.100 + cidr: 172.19.0.0/24 + name: tenantSubnet + vlan: 22 + mtu: 1500 + prefix-length: 24 + iface: enp3s0.22 + vlan: 22 + base_iface: enp3s0 + lb_addresses: + - 172.19.0.80-172.19.0.90 + net-attach-def: | + { + "cniVersion": "0.3.1", + "name": "tenant", + "type": "macvlan", + "master": "tenant", + "ipam": { + "type": "whereabouts", + "range": "172.19.0.0/24", + "range_start": "172.19.0.30", + "range_end": "172.19.0.70" + } + } + dns-resolver: + config: + server: + - 192.168.122.1 + search: [] + options: + - key: server + values: + - 192.168.122.1 + + routes: + config: + - destination: 0.0.0.0/0 + next-hop-address: 192.168.122.1 + next-hop-interface: enp2s0 + + rabbitmq: + endpoint_annotations: + metallb.universe.tf/address-pool: internalapi + metallb.universe.tf/loadBalancerIPs: 172.17.0.85 + + rabbitmq-cell1: + endpoint_annotations: + metallb.universe.tf/address-pool: internalapi + metallb.universe.tf/loadBalancerIPs: 172.17.0.86 + + lbServiceType: LoadBalancer + storageClass: host-nfs-storageclass diff --git a/examples/dt/uni01alpha/service-values.yaml b/examples/dt/uni01alpha/service-values.yaml new file mode 100644 index 000000000..9f18a9102 --- /dev/null +++ b/examples/dt/uni01alpha/service-values.yaml @@ -0,0 +1,62 @@ +--- +apiVersion: v1 +kind: ConfigMap + +metadata: + name: service-values + annotations: + config.kubernetes.io/local-config: "true" + +data: + cinderVolumes: + customServiceConfig: | + [DEFAULT] + enabled_backends = lvm + + [lvm] + image_volume_cache_enabled = false + volume_driver = cinder.volume.drivers.lvm.LVMVolumeDriver + volume_group = cinder-volumes + target_protocol = iscsi + target_helper = lioadm + volume_backend_name = lvm_iscsi + + cinderBackup: + customServiceConfig: | + [DEFAULT] + backup_driver = cinder.backup.drivers.swift + replicas: 1 + + glance: + customServiceConfig: | + [DEFAULT] + enabled_backends = default_backend:swift + + [glance_store] + default_backend = default_backend + + [default_backend] + swift_store_create_container_on_put = True + swift_store_auth_version = 3 + swift_store_auth_address = {{ .KeystoneInternalURL }} + swift_store_endpoint_type = internalURL + swift_store_user = service:glance + swift_store_key = {{ .ServicePassword }} + default: + replicas: 1 + + ironic: + enabled: true + + swift: + enabled: true + + octavia: + enabled: true + + telemetry: + enabled: true + autoscaling: + enabled: true + ceilometer: + enabled: true diff --git a/lib/control-plane/openstackcontrolplane.yaml b/lib/control-plane/openstackcontrolplane.yaml index 45d8dfc52..bb0584b18 100644 --- a/lib/control-plane/openstackcontrolplane.yaml +++ b/lib/control-plane/openstackcontrolplane.yaml @@ -179,3 +179,27 @@ spec: ringReplicas: 1 swiftStorage: replicas: 1 + telemetry: + enabled: false + template: + metricStorage: + enabled: false + monitoringStack: + alertingEnabled: true + scrapeInterval: 30s + storage: + strategy: persistent + retention: 24h + persistent: + pvcStorageRequest: 20G + autoscaling: + enabled: false + aodh: + passwordSelectors: + databaseInstance: openstack + memcachedInstance: memcached + secret: osp-secret + heatInstance: heat + ceilometer: + enabled: false + secret: osp-secret