diff --git a/ansible/playbooks/deploy-cinder-netapp-volumes-reference.yaml b/ansible/playbooks/deploy-cinder-netapp-volumes-reference.yaml index e9a769d9..b01931b6 100644 --- a/ansible/playbooks/deploy-cinder-netapp-volumes-reference.yaml +++ b/ansible/playbooks/deploy-cinder-netapp-volumes-reference.yaml @@ -101,8 +101,8 @@ group: root mode: "{{ item.mode | default('0644') }}" loop: - - src: "{{ playbook_dir }}/templates/cinder-netapp-volume.service" - dest: /etc/systemd/system/cinder-netapp-volume.service + - src: "{{ playbook_dir }}/templates/cinder-volume-netapp.service" + dest: /etc/systemd/system/cinder-volume-netapp.service - src: "{{ playbook_dir }}/templates/sudoers" dest: /etc/sudoers.d/cinder-volume mode: "0440" @@ -142,19 +142,37 @@ value: "{{ ansible_fqdn }}" create: true + - name: Create the cinder-volume-netapp configuration stage file + ansible.builtin.copy: + src: "/etc/cinder/cinder.conf.stage" + dest: "/etc/cinder/netapp-cinder.conf.stage" + owner: root + group: root + mode: "0644" + remote_src: true + - name: Ensure the backend configuration is set to our expected value changed_when: false community.general.ini_file: - path: "/etc/cinder/cinder.conf.stage" + path: "/etc/cinder/netapp-cinder.conf.stage" section: DEFAULT option: enabled_backends value: "{{ cinder_backend_name }}" create: true + - name: Override host value in netapp-cinder.conf.stage + community.general.ini_file: + path: "/etc/cinder/netapp-cinder.conf.stage" + section: DEFAULT + option: host + value: cinder-volume-netapp-worker + mode: '0644' + state: present + - name: Create the cinder-volume-netapp configuration ansible.builtin.copy: - src: "/etc/cinder/cinder.conf.stage" - dest: "/etc/cinder/cinder.conf" + src: "/etc/cinder/netapp-cinder.conf.stage" + dest: "/etc/cinder/netapp-cinder.conf" owner: root group: root mode: "0644" @@ -168,12 +186,6 @@ {% set rendered_backend = {} %} {% for backend in cinder_backend_name.split(',') %} {% set default_backend = (_kubernetes_cinder_etc_secret.resources[0].data['backends.conf'] | b64decode | community.general.from_ini)[backend] %} - {% set network_interface = hostvars[inventory_hostname][cinder_storage_network_interface]['ipv4']['address'] | default(ansible_default_ipv4.address) %} - {% set network_interface_secondary = hostvars[inventory_hostname][cinder_storage_network_interface_secondary]['ipv4']['address'] %} - {% set _ = default_backend.__setitem__("target_ip_address", network_interface) %} - {% if (custom_multipath | bool) %} - {% set _ = default_backend.__setitem__("iscsi_secondary_ip_addresses", network_interface_secondary) %} - {% endif %} {% set _ = rendered_backend.__setitem__(backend, default_backend) %} {% endfor %} {{ rendered_backend }} @@ -185,18 +197,12 @@ owner: root group: root mode: "0644" - notify: - - Restart cinder-volume-netapp systemd services - - name: Create the cinder-volume-netapp overrides configuration - ansible.builtin.copy: - content: | - [DEFAULT] - host = cinder-volume-netapp-worker - dest: "/etc/cinder/netapp-cinder.conf" - owner: root - group: root - mode: "0644" + - name: Replace yaml safe qos policy key in netapp-backends configuration + ansible.builtin.replace: + path: /etc/cinder/netapp-backends.conf + regexp: 'netapp_qos_policy_group' + replace: 'netapp:qos_policy_group' notify: - Restart cinder-volume-netapp systemd services @@ -214,3 +220,13 @@ value: "/etc/cinder/rootwrap.d" notify: - Restart cinder-volume-netapp systemd services + + - name: Remove netapp-cinder conf staging file + ansible.builtin.file: + path: /etc/cinder/netapp-cinder.conf.stage + state: absent + + - name: Remove cinder conf staging file + ansible.builtin.file: + path: /etc/cinder/cinder.conf.stage + state: absent diff --git a/ansible/playbooks/deploy-cinder-volumes-reference.yaml b/ansible/playbooks/deploy-cinder-volumes-reference.yaml index a8ddd15b..f684aeca 100644 --- a/ansible/playbooks/deploy-cinder-volumes-reference.yaml +++ b/ansible/playbooks/deploy-cinder-volumes-reference.yaml @@ -219,3 +219,8 @@ owner: root group: root mode: "0644" + + - name: Remove cinder conf staging file + ansible.builtin.file: + path: /etc/cinder/cinder.conf.stage + state: absent diff --git a/ansible/playbooks/templates/cinder-volume-netapp.service b/ansible/playbooks/templates/cinder-volume-netapp.service index 190d4ade..ae005c23 100644 --- a/ansible/playbooks/templates/cinder-volume-netapp.service +++ b/ansible/playbooks/templates/cinder-volume-netapp.service @@ -7,7 +7,7 @@ After = syslog.target Type = simple User = cinder Group = cinder -ExecStart = /opt/cinder/bin/cinder-volume --config-file /etc/cinder/cinder.conf --config-file /etc/cinder/netapp-cinder.conf --config-file /etc/cinder/netapp-backends.conf +ExecStart = /opt/cinder/bin/cinder-volume --config-file /etc/cinder/netapp-cinder.conf --config-file /etc/cinder/netapp-backends.conf ExecReload = /bin/kill -HUP $MAINPID # Give a reasonable amount of time for the server to start up/shut down TimeoutSec = 120 diff --git a/base-helm-configs/barbican/barbican-helm-overrides.yaml b/base-helm-configs/barbican/barbican-helm-overrides.yaml index c618a175..65f96221 100644 --- a/base-helm-configs/barbican/barbican-helm-overrides.yaml +++ b/base-helm-configs/barbican/barbican-helm-overrides.yaml @@ -35,18 +35,18 @@ helm3_hook: true images: tags: - bootstrap: docker.io/openstackhelm/heat:2024.1-ubuntu_jammy - dep_check: quay.io/airshipit/kubernetes-entrypoint:v1.0.0 - scripted_test: docker.io/openstackhelm/heat:2024.1-ubuntu_jammy - db_init: docker.io/openstackhelm/heat:2024.1-ubuntu_jammy - barbican_db_sync: docker.io/openstackhelm/barbican:2024.1-ubuntu_jammy - db_drop: docker.io/openstackhelm/heat:2024.1-ubuntu_jammy - ks_user: docker.io/openstackhelm/heat:2024.1-ubuntu_jammy - ks_service: docker.io/openstackhelm/heat:2024.1-ubuntu_jammy - ks_endpoints: docker.io/openstackhelm/heat:2024.1-ubuntu_jammy - barbican_api: docker.io/openstackhelm/barbican:2024.1-ubuntu_jammy - rabbit_init: docker.io/rabbitmq:3.13-management - image_repo_sync: docker.io/docker:17.07.0 + bootstrap: "quay.io/rackspace/rackerlabs-heat:2024.1-ubuntu_jammy" + dep_check: "quay.io/rackspace/rackerlabs-kubernetes-entrypoint:v1.0.0" + scripted_test: "quay.io/rackspace/rackerlabs-heat:2024.1-ubuntu_jammy" + db_init: "quay.io/rackspace/rackerlabs-heat:2024.1-ubuntu_jammy" + barbican_db_sync: "quay.io/rackspace/rackerlabs-barbican:2024.1-ubuntu_jammy" + db_drop: "quay.io/rackspace/rackerlabs-heat:2024.1-ubuntu_jammy" + ks_user: "quay.io/rackspace/rackerlabs-heat:2024.1-ubuntu_jammy" + ks_service: "quay.io/rackspace/rackerlabs-heat:2024.1-ubuntu_jammy" + ks_endpoints: "quay.io/rackspace/rackerlabs-heat:2024.1-ubuntu_jammy" + barbican_api: "quay.io/rackspace/rackerlabs-barbican:2024.1-ubuntu_jammy" + rabbit_init: "quay.io/rackspace/rackerlabs-rabbitmq:3.13-management" + image_repo_sync: "quay.io/rackspace/rackerlabs-docker:17.07.0" pull_policy: "IfNotPresent" local_registry: active: false diff --git a/base-helm-configs/ceilometer/ceilometer-helm-overrides.yaml b/base-helm-configs/ceilometer/ceilometer-helm-overrides.yaml index 2d5f1302..252831c7 100644 --- a/base-helm-configs/ceilometer/ceilometer-helm-overrides.yaml +++ b/base-helm-configs/ceilometer/ceilometer-helm-overrides.yaml @@ -23,17 +23,17 @@ labels: images: tags: - test: docker.io/xrally/xrally-openstack:2.0.0 - ceilometer_db_sync: ghcr.io/rackerlabs/genestack/ceilometer:2024.1-ubuntu_jammy - rabbit_init: docker.io/rabbitmq:3.7-management - ks_user: docker.io/openstackhelm/heat:2024.1-ubuntu_jammy - ks_service: docker.io/openstackhelm/heat:2024.1-ubuntu_jammy - ceilometer_central: ghcr.io/rackerlabs/genestack/ceilometer:2024.1-ubuntu_jammy - ceilometer_compute: ghcr.io/rackerlabs/genestack/ceilometer:2024.1-ubuntu_jammy - ceilometer_ipmi: ghcr.io/rackerlabs/genestack/ceilometer:2024.1-ubuntu_jammy - ceilometer_notification: ghcr.io/rackerlabs/genestack/ceilometer:2024.1-ubuntu_jammy - dep_check: quay.io/airshipit/kubernetes-entrypoint:v1.0.0 - image_repo_sync: docker.io/docker:17.07.0 + test: "quay.io/rackspace/rackerlabs-xrally-openstack:2.0.0" + ceilometer_db_sync: "quay.io/rackspace/rackerlabs-ceilometer:2024.1-ubuntu_jammy" + rabbit_init: "quay.io/rackspace/rackerlabs-rabbitmq:3.13-management" + ks_user: "quay.io/rackspace/rackerlabs-heat:2024.1-ubuntu_jammy" + ks_service: "quay.io/rackspace/rackerlabs-heat:2024.1-ubuntu_jammy" + ceilometer_central: "quay.io/rackspace/rackerlabs-ceilometer:2024.1-ubuntu_jammy" + ceilometer_compute: "quay.io/rackspace/rackerlabs-ceilometer:2024.1-ubuntu_jammy" + ceilometer_ipmi: "quay.io/rackspace/rackerlabs-ceilometer:2024.1-ubuntu_jammy" + ceilometer_notification: "quay.io/rackspace/rackerlabs-ceilometer:2024.1-ubuntu_jammy" + dep_check: "quay.io/rackspace/rackerlabs-kubernetes-entrypoint:v1.0.0" + image_repo_sync: "quay.io/rackspace/rackerlabs-docker:17.07.0" pull_policy: "Always" local_registry: active: false diff --git a/base-helm-configs/cinder/cinder-helm-overrides.yaml b/base-helm-configs/cinder/cinder-helm-overrides.yaml index b64959d7..bda3dd10 100644 --- a/base-helm-configs/cinder/cinder-helm-overrides.yaml +++ b/base-helm-configs/cinder/cinder-helm-overrides.yaml @@ -25,24 +25,24 @@ release_group: null images: tags: - db_init: "docker.io/openstackhelm/heat:2024.1-ubuntu_jammy" - cinder_db_sync: "docker.io/openstackhelm/cinder:2024.1-ubuntu_jammy" - db_drop: "docker.io/openstackhelm/heat:2024.1-ubuntu_jammy" - ks_user: "docker.io/openstackhelm/heat:2024.1-ubuntu_jammy" - ks_service: "docker.io/openstackhelm/heat:2024.1-ubuntu_jammy" - ks_endpoints: "docker.io/openstackhelm/heat:2024.1-ubuntu_jammy" - cinder_api: "docker.io/openstackhelm/cinder:2024.1-ubuntu_jammy" - bootstrap: "docker.io/openstackhelm/heat:2024.1-ubuntu_jammy" - cinder_scheduler: "docker.io/openstackhelm/cinder:2024.1-ubuntu_jammy" - cinder_volume: "docker.io/openstackhelm/cinder:2024.1-ubuntu_jammy" - cinder_volume_usage_audit: "docker.io/openstackhelm/cinder:2024.1-ubuntu_jammy" - cinder_storage_init: "docker.io/openstackhelm/ceph-config-helper:latest-ubuntu_focal" - cinder_backup: "docker.io/openstackhelm/cinder:2024.1-ubuntu_jammy" - cinder_backup_storage_init: "docker.io/openstackhelm/ceph-config-helper:latest-ubuntu_focal" - test: docker.io/xrally/xrally-openstack:2.0.0 - rabbit_init: docker.io/rabbitmq:3.7-management - dep_check: quay.io/airshipit/kubernetes-entrypoint:v1.0.0 - image_repo_sync: docker.io/docker:17.07.0 + db_init: "quay.io/rackspace/rackerlabs-heat:2024.1-ubuntu_jammy" + cinder_db_sync: "quay.io/rackspace/rackerlabs-cinder:2024.1-ubuntu_jammy" + db_drop: "quay.io/rackspace/rackerlabs-heat:2024.1-ubuntu_jammy" + ks_user: "quay.io/rackspace/rackerlabs-heat:2024.1-ubuntu_jammy" + ks_service: "quay.io/rackspace/rackerlabs-heat:2024.1-ubuntu_jammy" + ks_endpoints: "quay.io/rackspace/rackerlabs-heat:2024.1-ubuntu_jammy" + cinder_api: "quay.io/rackspace/rackerlabs-cinder:2024.1-ubuntu_jammy" + bootstrap: "quay.io/rackspace/rackerlabs-heat:2024.1-ubuntu_jammy" + cinder_scheduler: "quay.io/rackspace/rackerlabs-cinder:2024.1-ubuntu_jammy" + cinder_volume: "quay.io/rackspace/rackerlabs-cinder:2024.1-ubuntu_jammy" + cinder_volume_usage_audit: "quay.io/rackspace/rackerlabs-cinder:2024.1-ubuntu_jammy" + cinder_storage_init: "quay.io/rackspace/rackerlabs-ceph-config-helper:latest-ubuntu_jammy" + cinder_backup: "quay.io/rackspace/rackerlabs-cinder:2024.1-ubuntu_jammy" + cinder_backup_storage_init: "quay.io/rackspace/rackerlabs-ceph-config-helper:latest-ubuntu_jammy" + test: "quay.io/rackspace/rackerlabs-xrally-openstack:2.0.0" + rabbit_init: "quay.io/rackspace/rackerlabs-rabbitmq:3.13-management" + dep_check: "quay.io/rackspace/rackerlabs-kubernetes-entrypoint:v1.0.0" + image_repo_sync: "quay.io/rackspace/rackerlabs-docker:17.07.0" pull_policy: "IfNotPresent" local_registry: active: false diff --git a/base-helm-configs/designate/designate-helm-overrides.yaml b/base-helm-configs/designate/designate-helm-overrides.yaml index 65f6d63e..52ca1c50 100644 --- a/base-helm-configs/designate/designate-helm-overrides.yaml +++ b/base-helm-configs/designate/designate-helm-overrides.yaml @@ -43,22 +43,22 @@ labels: images: tags: - bootstrap: docker.io/openstackhelm/heat:2023.1-ubuntu_jammy - db_init: docker.io/openstackhelm/heat:2023.1-ubuntu_jammy - db_drop: docker.io/openstackhelm/heat:2023.1-ubuntu_jammy - rabbit_init: docker.io/rabbitmq:3.7-management - ks_user: docker.io/openstackhelm/heat:2023.1-ubuntu_jammy - ks_service: docker.io/openstackhelm/heat:2023.1-ubuntu_jammy - ks_endpoints: docker.io/openstackhelm/heat:2023.1-ubuntu_jammy - dep_check: quay.io/airshipit/kubernetes-entrypoint:v1.0.0 - designate_db_sync: docker.io/openstackhelm/designate:2024.1-ubuntu_jammy - designate_api: docker.io/openstackhelm/designate:2024.1-ubuntu_jammy - designate_central: docker.io/openstackhelm/designate:2024.1-ubuntu_jammy - designate_mdns: docker.io/openstackhelm/designate:2024.1-ubuntu_jammy - designate_worker: docker.io/openstackhelm/designate:2024.1-ubuntu_jammy - designate_producer: docker.io/openstackhelm/designate:2024.1-ubuntu_jammy - designate_sink: docker.io/openstackhelm/designate:2024.1-ubuntu_jammy - image_repo_sync: docker.io/docker:17.07.0 + bootstrap: "quay.io/rackspace/rackerlabs-heat:2024.1-ubuntu_jammy" + db_init: "quay.io/rackspace/rackerlabs-heat:2024.1-ubuntu_jammy" + db_drop: "quay.io/rackspace/rackerlabs-heat:2024.1-ubuntu_jammy" + rabbit_init: "quay.io/rackspace/rackerlabs-rabbitmq:3.13-management" + ks_user: "quay.io/rackspace/rackerlabs-heat:2024.1-ubuntu_jammy" + ks_service: "quay.io/rackspace/rackerlabs-heat:2024.1-ubuntu_jammy" + ks_endpoints: "quay.io/rackspace/rackerlabs-heat:2024.1-ubuntu_jammy" + dep_check: "quay.io/rackspace/rackerlabs-kubernetes-entrypoint:v1.0.0" + designate_db_sync: "quay.io/rackspace/rackerlabs-designate:2024.1-ubuntu_jammy" + designate_api: "quay.io/rackspace/rackerlabs-designate:2024.1-ubuntu_jammy" + designate_central: "quay.io/rackspace/rackerlabs-designate:2024.1-ubuntu_jammy" + designate_mdns: "quay.io/rackspace/rackerlabs-designate:2024.1-ubuntu_jammy" + designate_worker: "quay.io/rackspace/rackerlabs-designate:2024.1-ubuntu_jammy" + designate_producer: "quay.io/rackspace/rackerlabs-designate:2024.1-ubuntu_jammy" + designate_sink: "quay.io/rackspace/rackerlabs-designate:2024.1-ubuntu_jammy" + image_repo_sync: "quay.io/rackspace/rackerlabs-docker:17.07.0" pull_policy: "IfNotPresent" local_registry: active: false diff --git a/base-helm-configs/glance/glance-helm-overrides.yaml b/base-helm-configs/glance/glance-helm-overrides.yaml index 27508e9c..23c684b8 100644 --- a/base-helm-configs/glance/glance-helm-overrides.yaml +++ b/base-helm-configs/glance/glance-helm-overrides.yaml @@ -16,21 +16,21 @@ release_group: null images: tags: - test: docker.io/xrally/xrally-openstack:2.0.0 - glance_storage_init: docker.io/openstackhelm/ceph-config-helper:latest-ubuntu_xenial - glance_metadefs_load: "docker.io/openstackhelm/glance:2024.1-ubuntu_jammy" - db_init: "docker.io/openstackhelm/heat:2024.1-ubuntu_jammy" - glance_db_sync: "docker.io/openstackhelm/glance:2024.1-ubuntu_jammy" - db_drop: "docker.io/openstackhelm/heat:2024.1-ubuntu_jammy" - ks_user: "docker.io/openstackhelm/heat:2024.1-ubuntu_jammy" - ks_service: "docker.io/openstackhelm/heat:2024.1-ubuntu_jammy" - ks_endpoints: "docker.io/openstackhelm/heat:2024.1-ubuntu_jammy" - rabbit_init: docker.io/rabbitmq:3.7-management - glance_api: "docker.io/openstackhelm/glance:2024.1-ubuntu_jammy" + test: "quay.io/rackspace/rackerlabs-xrally-openstack:2.0.0" + glance_storage_init: "quay.io/rackspace/rackerlabs-ceph-config-helper:latest-ubuntu_jammy" + glance_metadefs_load: "quay.io/rackspace/rackerlabs-glance:2024.1-ubuntu_jammy" + db_init: "quay.io/rackspace/rackerlabs-heat:2024.1-ubuntu_jammy" + glance_db_sync: "quay.io/rackspace/rackerlabs-glance:2024.1-ubuntu_jammy" + db_drop: "quay.io/rackspace/rackerlabs-heat:2024.1-ubuntu_jammy" + ks_user: "quay.io/rackspace/rackerlabs-heat:2024.1-ubuntu_jammy" + ks_service: "quay.io/rackspace/rackerlabs-heat:2024.1-ubuntu_jammy" + ks_endpoints: "quay.io/rackspace/rackerlabs-heat:2024.1-ubuntu_jammy" + rabbit_init: "quay.io/rackspace/rackerlabs-rabbitmq:3.13-management" + glance_api: "quay.io/rackspace/rackerlabs-glance:2024.1-ubuntu_jammy" # Bootstrap image requires curl - bootstrap: "docker.io/openstackhelm/heat:2024.1-ubuntu_jammy" - dep_check: quay.io/airshipit/kubernetes-entrypoint:v1.0.0 - image_repo_sync: docker.io/docker:17.07.0 + bootstrap: "quay.io/rackspace/rackerlabs-heat:2024.1-ubuntu_jammy" + dep_check: "quay.io/rackspace/rackerlabs-kubernetes-entrypoint:v1.0.0" + image_repo_sync: "quay.io/rackspace/rackerlabs-docker:17.07.0" pull_policy: "IfNotPresent" local_registry: active: false diff --git a/base-helm-configs/gnocchi/gnocchi-helm-overrides.yaml b/base-helm-configs/gnocchi/gnocchi-helm-overrides.yaml index a9a09c11..16086cf0 100644 --- a/base-helm-configs/gnocchi/gnocchi-helm-overrides.yaml +++ b/base-helm-configs/gnocchi/gnocchi-helm-overrides.yaml @@ -36,19 +36,19 @@ release_group: null images: tags: - dep_check: quay.io/airshipit/kubernetes-entrypoint:v1.0.0 - gnocchi_storage_init: docker.io/openstackhelm/ceph-config-helper:latest-ubuntu_focal - db_init_indexer: docker.io/library/postgres:14.5 - db_init: ghcr.io/rackerlabs/genestack/gnocchi:2024.1-ubuntu_jammy - db_sync: ghcr.io/rackerlabs/genestack/gnocchi:2024.1-ubuntu_jammy - ks_user: docker.io/openstackhelm/heat:2024.1-ubuntu_jammy - ks_service: docker.io/openstackhelm/heat:2024.1-ubuntu_jammy - ks_endpoints: docker.io/openstackhelm/heat:2024.1-ubuntu_jammy - gnocchi_api: ghcr.io/rackerlabs/genestack/gnocchi:2024.1-ubuntu_jammy - gnocchi_statsd: ghcr.io/rackerlabs/genestack/gnocchi:2024.1-ubuntu_jammy - gnocchi_metricd: ghcr.io/rackerlabs/genestack/gnocchi:2024.1-ubuntu_jammy - gnocchi_resources_cleaner: ghcr.io/rackerlabs/genestack/gnocchi:2024.1-ubuntu_jammy - image_repo_sync: docker.io/library/docker:17.07.0 + dep_check: "quay.io/rackspace/rackerlabs-kubernetes-entrypoint:v1.0.0" + gnocchi_storage_init: "quay.io/rackspace/rackerlabs-ceph-config-helper:latest-ubuntu_jammy" + db_init_indexer: "quay.io/rackspace/rackerlabs-postgres:14.5" + db_init: "quay.io/rackspace/rackerlabs-gnocchi:2024.1-ubuntu_jammy" + db_sync: "quay.io/rackspace/rackerlabs-gnocchi:2024.1-ubuntu_jammy" + ks_user: "quay.io/rackspace/rackerlabs-heat:2024.1-ubuntu_jammy" + ks_service: "quay.io/rackspace/rackerlabs-heat:2024.1-ubuntu_jammy" + ks_endpoints: "quay.io/rackspace/rackerlabs-heat:2024.1-ubuntu_jammy" + gnocchi_api: "quay.io/rackspace/rackerlabs-gnocchi:2024.1-ubuntu_jammy" + gnocchi_statsd: "quay.io/rackspace/rackerlabs-gnocchi:2024.1-ubuntu_jammy" + gnocchi_metricd: "quay.io/rackspace/rackerlabs-gnocchi:2024.1-ubuntu_jammy" + gnocchi_resources_cleaner: "quay.io/rackspace/rackerlabs-gnocchi:2024.1-ubuntu_jammy" + image_repo_sync: "quay.io/rackspace/rackerlabs-docker:17.07.0" pull_policy: "Always" local_registry: active: false diff --git a/base-helm-configs/heat/heat-helm-overrides.yaml b/base-helm-configs/heat/heat-helm-overrides.yaml index ed234e1c..9439c180 100644 --- a/base-helm-configs/heat/heat-helm-overrides.yaml +++ b/base-helm-configs/heat/heat-helm-overrides.yaml @@ -23,23 +23,23 @@ labels: images: tags: - bootstrap: "docker.io/openstackhelm/heat:2024.1-ubuntu_jammy" - db_init: "docker.io/openstackhelm/heat:2024.1-ubuntu_jammy" - db_drop: "docker.io/openstackhelm/heat:2024.1-ubuntu_jammy" - ks_user: "docker.io/openstackhelm/heat:2024.1-ubuntu_jammy" - ks_service: "docker.io/openstackhelm/heat:2024.1-ubuntu_jammy" - ks_endpoints: "docker.io/openstackhelm/heat:2024.1-ubuntu_jammy" - heat_db_sync: "ghcr.io/rackerlabs/genestack/heat-rxt:2024.1-ubuntu_jammy" - heat_api: "ghcr.io/rackerlabs/genestack/heat-rxt:2024.1-ubuntu_jammy" - heat_cfn: "ghcr.io/rackerlabs/genestack/heat-rxt:2024.1-ubuntu_jammy" - heat_cloudwatch: "ghcr.io/rackerlabs/genestack/heat-rxt:2024.1-ubuntu_jammy" - heat_engine: "ghcr.io/rackerlabs/genestack/heat-rxt:2024.1-ubuntu_jammy" - heat_engine_cleaner: "ghcr.io/rackerlabs/genestack/heat-rxt:2024.1-ubuntu_jammy" - heat_purge_deleted: "ghcr.io/rackerlabs/genestack/heat-rxt:2024.1-ubuntu_jammy" - test: docker.io/xrally/xrally-openstack:2.0.0 - rabbit_init: docker.io/rabbitmq:3.7-management - dep_check: quay.io/airshipit/kubernetes-entrypoint:v1.0.0 - image_repo_sync: docker.io/docker:17.07.0 + bootstrap: "quay.io/rackspace/rackerlabs-heat:2024.1-ubuntu_jammy" + db_init: "quay.io/rackspace/rackerlabs-heat:2024.1-ubuntu_jammy" + db_drop: "quay.io/rackspace/rackerlabs-heat:2024.1-ubuntu_jammy" + ks_user: "quay.io/rackspace/rackerlabs-heat:2024.1-ubuntu_jammy" + ks_service: "quay.io/rackspace/rackerlabs-heat:2024.1-ubuntu_jammy" + ks_endpoints: "quay.io/rackspace/rackerlabs-heat:2024.1-ubuntu_jammy" + heat_db_sync: "quay.io/rackspace/rackerlabs-heat:2024.1-ubuntu_jammy" + heat_api: "quay.io/rackspace/rackerlabs-heat:2024.1-ubuntu_jammy" + heat_cfn: "quay.io/rackspace/rackerlabs-heat:2024.1-ubuntu_jammy" + heat_cloudwatch: "quay.io/rackspace/rackerlabs-heat:2024.1-ubuntu_jammy" + heat_engine: "quay.io/rackspace/rackerlabs-heat:2024.1-ubuntu_jammy" + heat_engine_cleaner: "quay.io/rackspace/rackerlabs-heat:2024.1-ubuntu_jammy" + heat_purge_deleted: "quay.io/rackspace/rackerlabs-heat:2024.1-ubuntu_jammy" + test: "quay.io/rackspace/rackerlabs-xrally-openstack:2.0.0" + rabbit_init: "quay.io/rackspace/rackerlabs-rabbitmq:3.13-management" + dep_check: "quay.io/rackspace/rackerlabs-kubernetes-entrypoint:v1.0.0" + image_repo_sync: "quay.io/rackspace/rackerlabs-docker:17.07.0" pull_policy: "IfNotPresent" local_registry: active: false diff --git a/base-helm-configs/horizon/horizon-helm-overrides.yaml b/base-helm-configs/horizon/horizon-helm-overrides.yaml index 09a13807..b69256eb 100644 --- a/base-helm-configs/horizon/horizon-helm-overrides.yaml +++ b/base-helm-configs/horizon/horizon-helm-overrides.yaml @@ -18,13 +18,13 @@ --- images: tags: - db_init: docker.io/openstackhelm/heat:2024.1-ubuntu_jammy - db_drop: docker.io/openstackhelm/heat:2024.1-ubuntu_jammy - horizon_db_sync: docker.io/openstackhelm/horizon:2023.1-ubuntu_jammy - horizon: docker.io/openstackhelm/horizon:2023.1-ubuntu_jammy - test: docker.io/openstackhelm/osh-selenium:latest-ubuntu_focal - dep_check: quay.io/airshipit/kubernetes-entrypoint:v1.0.0 - image_repo_sync: docker.io/docker:17.07.0 + db_init: "quay.io/rackspace/rackerlabs-heat:2024.1-ubuntu_jammy" + db_drop: "quay.io/rackspace/rackerlabs-heat:2024.1-ubuntu_jammy" + horizon_db_sync: "quay.io/rackspace/rackerlabs-horizon:2024.1-ubuntu_jammy" + horizon: "quay.io/rackspace/rackerlabs-horizon:2024.1-ubuntu_jammy" + test: "quay.io/rackspace/rackerlabs-osh-selenium:latest-ubuntu_jammy" + dep_check: "quay.io/rackspace/rackerlabs-kubernetes-entrypoint:v1.0.0" + image_repo_sync: "quay.io/rackspace/rackerlabs-docker:17.07.0" pull_policy: "IfNotPresent" local_registry: active: false diff --git a/base-helm-configs/keystone/keystone-helm-overrides.yaml b/base-helm-configs/keystone/keystone-helm-overrides.yaml index 716d145f..214ba982 100644 --- a/base-helm-configs/keystone/keystone-helm-overrides.yaml +++ b/base-helm-configs/keystone/keystone-helm-overrides.yaml @@ -18,23 +18,23 @@ helm3_hook: true images: tags: - bootstrap: "docker.io/openstackhelm/heat:2024.1-ubuntu_jammy" - db_init: "docker.io/openstackhelm/heat:2024.1-ubuntu_jammy" - db_drop: "docker.io/openstackhelm/heat:2024.1-ubuntu_jammy" - keystone_api: "ghcr.io/rackerlabs/keystone-rxt:2024.1-ubuntu_jammy-1720466623" - keystone_bootstrap: "docker.io/openstackhelm/heat:2024.1-ubuntu_jammy" - keystone_credential_rotate: "ghcr.io/rackerlabs/keystone-rxt:2024.1-ubuntu_jammy-1720466623" - keystone_credential_setup: "ghcr.io/rackerlabs/keystone-rxt:2024.1-ubuntu_jammy-1720466623" - keystone_db_sync: "ghcr.io/rackerlabs/keystone-rxt:2024.1-ubuntu_jammy-1720466623" - keystone_domain_manage: "ghcr.io/rackerlabs/keystone-rxt:2024.1-ubuntu_jammy-1720466623" - keystone_fernet_rotate: "ghcr.io/rackerlabs/keystone-rxt:2024.1-ubuntu_jammy-1720466623" - keystone_fernet_setup: "ghcr.io/rackerlabs/keystone-rxt:2024.1-ubuntu_jammy-1720466623" - ks_user: "docker.io/openstackhelm/heat:2024.1-ubuntu_jammy" - test: docker.io/xrally/xrally-openstack:2.0.0 - rabbit_init: docker.io/rabbitmq:3.7-management - keystone_credential_cleanup: "docker.io/aedan/heat:2024.1-ubuntu_jammy" - dep_check: quay.io/airshipit/kubernetes-entrypoint:v1.0.0 - image_repo_sync: docker.io/docker:17.07.0 + bootstrap: "quay.io/rackspace/rackerlabs-heat:2024.1-ubuntu_jammy" + db_init: "quay.io/rackspace/rackerlabs-heat:2024.1-ubuntu_jammy" + db_drop: "quay.io/rackspace/rackerlabs-heat:2024.1-ubuntu_jammy" + keystone_api: "quay.io/rackspace/rackerlabs-keystone-rxt:2024.1-ubuntu_jammy-1720466623" + keystone_bootstrap: "quay.io/rackspace/rackerlabs-heat:2024.1-ubuntu_jammy" + keystone_credential_rotate: "quay.io/rackspace/rackerlabs-keystone-rxt:2024.1-ubuntu_jammy-1720466623" + keystone_credential_setup: "quay.io/rackspace/rackerlabs-keystone-rxt:2024.1-ubuntu_jammy-1720466623" + keystone_db_sync: "quay.io/rackspace/rackerlabs-keystone-rxt:2024.1-ubuntu_jammy-1720466623" + keystone_domain_manage: "quay.io/rackspace/rackerlabs-keystone-rxt:2024.1-ubuntu_jammy-1720466623" + keystone_fernet_rotate: "quay.io/rackspace/rackerlabs-keystone-rxt:2024.1-ubuntu_jammy-1720466623" + keystone_fernet_setup: "quay.io/rackspace/rackerlabs-keystone-rxt:2024.1-ubuntu_jammy-1720466623" + ks_user: "quay.io/rackspace/rackerlabs-heat:2024.1-ubuntu_jammy" + test: "quay.io/rackspace/rackerlabs-xrally-openstack:2.0.0" + rabbit_init: "quay.io/rackspace/rackerlabs-rabbitmq:3.13-management" + keystone_credential_cleanup: "quay.io/rackspace/rackerlabs-heat:2024.1-ubuntu_jammy" + dep_check: "quay.io/rackspace/rackerlabs-kubernetes-entrypoint:v1.0.0" + image_repo_sync: "quay.io/rackspace/rackerlabs-docker:17.07.0" pull_policy: "IfNotPresent" local_registry: active: false diff --git a/base-helm-configs/magnum/magnum-helm-overrides.yaml b/base-helm-configs/magnum/magnum-helm-overrides.yaml index d585501f..24b811d9 100644 --- a/base-helm-configs/magnum/magnum-helm-overrides.yaml +++ b/base-helm-configs/magnum/magnum-helm-overrides.yaml @@ -31,18 +31,18 @@ labels: images: tags: - bootstrap: docker.io/openstackhelm/heat:2024.1-ubuntu_jammy - db_init: docker.io/openstackhelm/heat:2024.1-ubuntu_jammy - magnum_db_sync: docker.io/openstackhelm/magnum:2024.1-ubuntu_jammy - db_drop: docker.io/openstackhelm/heat:2024.1-ubuntu_jammy - rabbit_init: docker.io/rabbitmq:3.13-management - ks_user: docker.io/openstackhelm/heat:2024.1-ubuntu_jammy - ks_service: docker.io/openstackhelm/heat:2024.1-ubuntu_jammy - ks_endpoints: docker.io/openstackhelm/heat:2024.1-ubuntu_jammy - magnum_api: docker.io/openstackhelm/magnum:2024.1-ubuntu_jammy - magnum_conductor: docker.io/openstackhelm/magnum:2024.1-ubuntu_jammy - dep_check: quay.io/airshipit/kubernetes-entrypoint:v1.0.0 - image_repo_sync: docker.io/docker:17.07.0 + bootstrap: "quay.io/rackspace/rackerlabs-heat:2024.1-ubuntu_jammy" + db_init: "qyay.io/rackspace/rackerlabs-heat:2024.1-ubuntu_jammy" + magnum_db_sync: "quay.io/rackspace/rackerlabs-magnum:2024.1-ubuntu_jammy" + db_drop: "qyay.io/rackspace/rackerlabs-heat:2024.1-ubuntu_jammy" + rabbit_init: "quay.io/rackspace/rackerlabs-rabbitmq:3.13-management" + ks_user: "quay.io/rackspace/rackerlabs-heat:2024.1-ubuntu_jammy" + ks_service: "quay.io/rackspace/rackerlabs-heat:2024.1-ubuntu_jammy" + ks_endpoints: "quay.io/rackspace/rackerlabs-heat:2024.1-ubuntu_jammy" + magnum_api: "quay.io/rackspace/rackerlabs-magnum:2024.1-ubuntu_jammy" + magnum_conductor: "quay.io/rackspace/rackerlabs-magnum:2024.1-ubuntu_jammy" + dep_check: "quay.io/rackspace/rackerlabs-kubernetes-entrypoint:v1.0.0" + image_repo_sync: "quay.io/rackspace/rackerlabs-docker:17.07.0" pull_policy: "IfNotPresent" local_registry: active: false diff --git a/base-helm-configs/neutron/neutron-helm-overrides.yaml b/base-helm-configs/neutron/neutron-helm-overrides.yaml index f0225811..f06df466 100644 --- a/base-helm-configs/neutron/neutron-helm-overrides.yaml +++ b/base-helm-configs/neutron/neutron-helm-overrides.yaml @@ -2,34 +2,34 @@ release_group: null images: tags: - bootstrap: "docker.io/openstackhelm/heat:2024.1-ubuntu_jammy" - db_init: "docker.io/openstackhelm/heat:2024.1-ubuntu_jammy" - db_drop: "docker.io/openstackhelm/heat:2024.1-ubuntu_jammy" - ks_user: "docker.io/openstackhelm/heat:2024.1-ubuntu_jammy" - ks_service: "docker.io/openstackhelm/heat:2024.1-ubuntu_jammy" - ks_endpoints: "docker.io/openstackhelm/heat:2024.1-ubuntu_jammy" - neutron_db_sync: "docker.io/openstackhelm/neutron:2024.1-ubuntu_jammy" - neutron_dhcp: "docker.io/openstackhelm/neutron:2024.1-ubuntu_jammy" - neutron_l3: "docker.io/openstackhelm/neutron:2024.1-ubuntu_jammy" - neutron_l2gw: "docker.io/openstackhelm/neutron:2024.1-ubuntu_jammy" - neutron_linuxbridge_agent: "docker.io/openstackhelm/neutron:2024.1-ubuntu_jammy" - neutron_metadata: "docker.io/openstackhelm/neutron:2024.1-ubuntu_jammy" - neutron_ovn_metadata: "docker.io/openstackhelm/neutron:2024.1-ubuntu_jammy" - neutron_openvswitch_agent: "docker.io/openstackhelm/neutron:2024.1-ubuntu_jammy" - neutron_server: "docker.io/openstackhelm/neutron:2024.1-ubuntu_jammy" - neutron_rpc_server: "docker.io/openstackhelm/neutron:2024.1-ubuntu_jammy" - neutron_bagpipe_bgp: "docker.io/openstackhelm/neutron:2024.1-ubuntu_jammy" - neutron_netns_cleanup_cron: "docker.io/openstackhelm/neutron:2024.1-ubuntu_jammy" - test: docker.io/xrally/xrally-openstack:2.0.0 - purge_test: docker.io/openstackhelm/ospurge:latest - rabbit_init: docker.io/rabbitmq:3.7-management - netoffload: ghcr.io/vexxhost/netoffload:v1.0.1 + bootstrap: "quay.io/rackspace/rackerlabs-heat:2024.1-ubuntu_jammy" + db_init: "quay.io/rackspace/rackerlabs-heat:2024.1-ubuntu_jammy" + db_drop: "quay.io/rackspace/rackerlabs-heat:2024.1-ubuntu_jammy" + ks_user: "quay.io/rackspace/rackerlabs-heat:2024.1-ubuntu_jammy" + ks_service: "quay.io/rackspace/rackerlabs-heat:2024.1-ubuntu_jammy" + ks_endpoints: "quay.io/rackspace/rackerlabs-heat:2024.1-ubuntu_jammy" + neutron_db_sync: "quay.io/rackspace/rackerlabs-neutron:2024.1-ubuntu_jammy" + neutron_dhcp: "quay.io/rackspace/rackerlabs-neutron:2024.1-ubuntu_jammy" + neutron_l3: "quay.io/rackspace/rackerlabs-neutron:2024.1-ubuntu_jammy" + neutron_l2gw: "quay.io/rackspace/rackerlabs-neutron:2024.1-ubuntu_jammy" + neutron_linuxbridge_agent: "quay.io/rackspace/rackerlabs-neutron:2024.1-ubuntu_jammy" + neutron_metadata: "quay.io/rackspace/rackerlabs-neutron:2024.1-ubuntu_jammy" + neutron_ovn_metadata: "quay.io/rackspace/rackerlabs-neutron:2024.1-ubuntu_jammy" + neutron_openvswitch_agent: "quay.io/rackspace/rackerlabs-neutron:2024.1-ubuntu_jammy" + neutron_server: "quay.io/rackspace/rackerlabs-neutron:2024.1-ubuntu_jammy" + neutron_rpc_server: "quay.io/rackspace/rackerlabs-neutron:2024.1-ubuntu_jammy" + neutron_bagpipe_bgp: "quay.io/rackspace/rackerlabs-neutron:2024.1-ubuntu_jammy" + neutron_netns_cleanup_cron: "quay.io/rackspace/rackerlabs-neutron:2024.1-ubuntu_jammy" + test: "quay.io/rackspace/rackerlabs-xrally-openstack:2.0.0" + purge_test: "quay.io/rackspace/rackerlabs-ospurge:latest" + rabbit_init: "quay.io/rackspace/rackerlabs-rabbitmq:3.13-management" + netoffload: "quay.io/rackspace/rackerlabs-netoffload:v1.0.1" neutron_sriov_agent: docker.io/openstackhelm/neutron:stein-18.04-sriov neutron_sriov_agent_init: docker.io/openstackhelm/neutron:stein-18.04-sriov neutron_bgp_dragent: docker.io/openstackhelm/neutron:stein-ubuntu_bionic neutron_ironic_agent: docker.io/openstackhelm/neutron:stein-ubuntu_bionic - dep_check: quay.io/airshipit/kubernetes-entrypoint:v1.0.0 - image_repo_sync: docker.io/docker:17.07.0 + dep_check: "quay.io/rackspace/rackerlabs-kubernetes-entrypoint:v1.0.0" + image_repo_sync: "quay.io/rackspace/rackerlabs-docker:17.07.0" pull_policy: "IfNotPresent" local_registry: active: false diff --git a/base-helm-configs/nova/nova-helm-overrides.yaml b/base-helm-configs/nova/nova-helm-overrides.yaml index f6ef793f..2ff58a1d 100644 --- a/base-helm-configs/nova/nova-helm-overrides.yaml +++ b/base-helm-configs/nova/nova-helm-overrides.yaml @@ -52,33 +52,33 @@ labels: images: pull_policy: IfNotPresent tags: - bootstrap: "docker.io/openstackhelm/heat:2024.1-ubuntu_jammy" - db_drop: "docker.io/openstackhelm/heat:2024.1-ubuntu_jammy" - db_init: "docker.io/openstackhelm/heat:2024.1-ubuntu_jammy" - ks_user: "docker.io/openstackhelm/heat:2024.1-ubuntu_jammy" - ks_service: "docker.io/openstackhelm/heat:2024.1-ubuntu_jammy" - ks_endpoints: "docker.io/openstackhelm/heat:2024.1-ubuntu_jammy" - nova_api: "ghcr.io/rackerlabs/genestack/nova-efi:2024.1-ubuntu_jammy" - nova_cell_setup: "ghcr.io/rackerlabs/genestack/nova-efi:2024.1-ubuntu_jammy" - nova_cell_setup_init: "docker.io/openstackhelm/heat:2024.1-ubuntu_jammy" - nova_compute: "ghcr.io/rackerlabs/genestack/nova-efi:2024.1-ubuntu_jammy" - nova_compute_ssh: "ghcr.io/rackerlabs/genestack/nova-efi:2024.1-ubuntu_jammy" - nova_conductor: "ghcr.io/rackerlabs/genestack/nova-efi:2024.1-ubuntu_jammy" - nova_db_sync: "ghcr.io/rackerlabs/genestack/nova-efi:2024.1-ubuntu_jammy" - nova_novncproxy: "ghcr.io/rackerlabs/genestack/nova-efi:2024.1-ubuntu_jammy" - nova_novncproxy_assets: "ghcr.io/rackerlabs/genestack/nova-efi:2024.1-ubuntu_jammy" - nova_scheduler: "ghcr.io/rackerlabs/genestack/nova-efi:2024.1-ubuntu_jammy" - nova_spiceproxy: "ghcr.io/rackerlabs/genestack/nova-efi:2024.1-ubuntu_jammy" - nova_spiceproxy_assets: "ghcr.io/rackerlabs/genestack/nova-efi:2024.1-ubuntu_jammy" - nova_service_cleaner: "docker.io/openstackhelm/ceph-config-helper:latest-ubuntu_focal" - dep_check: 'quay.io/airshipit/kubernetes-entrypoint:v1.0.0' - rabbit_init: docker.io/rabbitmq:3.7-management - nova_archive_deleted_rows: "ghcr.io/rackerlabs/genestack/nova-efi:2024.1-ubuntu_jammy" + bootstrap: "quay.io/rackspace/rackerlabs-heat:2024.1-ubuntu_jammy" + db_drop: "quay.io/rackspace/rackerlabs-heat:2024.1-ubuntu_jammy" + db_init: "quay.io/rackspace/rackerlabs-heat:2024.1-ubuntu_jammy" + ks_user: "quay.io/rackspace/rackerlabs-heat:2024.1-ubuntu_jammy" + ks_service: "quay.io/rackspace/rackerlabs-heat:2024.1-ubuntu_jammy" + ks_endpoints: "quay.io/rackspace/rackerlabs-heat:2024.1-ubuntu_jammy" + nova_api: "quay.io/rackspace/rackerlabs-nova-efi:2024.1-ubuntu_jammy" + nova_cell_setup: "quay.io/rackspace/rackerlabs-nova-efi:2024.1-ubuntu_jammy" + nova_cell_setup_init: "quay.io/rackspace/rackerlabs-heat:2024.1-ubuntu_jammy" + nova_compute: "quay.io/rackspace/rackerlabs-nova-efi:2024.1-ubuntu_jammy" + nova_compute_ssh: "quay.io/rackspace/rackerlabs-nova-efi:2024.1-ubuntu_jammy" + nova_conductor: "quay.io/rackspace/rackerlabs-nova-efi:2024.1-ubuntu_jammy" + nova_db_sync: "quay.io/rackspace/rackerlabs-nova-efi:2024.1-ubuntu_jammy" + nova_novncproxy: "quay.io/rackspace/rackerlabs-nova-efi:2024.1-ubuntu_jammy" + nova_novncproxy_assets: "quay.io/rackspace/rackerlabs-nova-efi:2024.1-ubuntu_jammy" + nova_scheduler: "quay.io/rackspace/rackerlabs-nova-efi:2024.1-ubuntu_jammy" + nova_spiceproxy: "quay.io/rackspace/rackerlabs-nova-efi:2024.1-ubuntu_jammy" + nova_spiceproxy_assets: "quay.io/rackspace/rackerlabs-nova-efi:2024.1-ubuntu_jammy" + nova_service_cleaner: "quay.io/rackspace/rackerlabs-ceph-config-helper:latest-ubuntu_jammy" + dep_check: "quay.io/rackspace/rackerlabs-kubernetes-entrypoint:v1.0.0" + rabbit_init: "quay.io/rackspace/rackerlabs-rabbitmq:3.13-management" + nova_archive_deleted_rows: "quay.io/rackspace/rackerlabs-nova-efi:2024.1-ubuntu_jammy" nova_compute_ironic: 'docker.io/kolla/ubuntu-source-nova-compute-ironic:wallaby' - nova_storage_init: 'docker.io/openstackhelm/ceph-config-helper:latest-ubuntu_focal' - test: docker.io/xrally/xrally-openstack:2.0.0 - image_repo_sync: docker.io/docker:17.07.0 - nova_wait_for_computes_init: gcr.io/google_containers/hyperkube-amd64:v1.11.6 + nova_storage_init: "quay.io/rackspace/rackerlabs-ceph-config-helper:latest-ubuntu_jammy" + test: "quay.io/rackspace/rackerlabs-xrally-openstack:2.0.0" + image_repo_sync: "quay.io/rackspace/rackerlabs-docker:17.07.0" + nova_wait_for_computes_init: "quay.io/rackspace/rackerlabs-hyperkube-amd64:v1.11.6" local_registry: active: false exclude: diff --git a/base-helm-configs/octavia/octavia-helm-overrides.yaml b/base-helm-configs/octavia/octavia-helm-overrides.yaml index 6db7c8a7..9a1b98b8 100644 --- a/base-helm-configs/octavia/octavia-helm-overrides.yaml +++ b/base-helm-configs/octavia/octavia-helm-overrides.yaml @@ -20,22 +20,22 @@ labels: images: tags: - test: docker.io/xrally/xrally-openstack:2.0.0 - bootstrap: "docker.io/openstackhelm/heat:2024.1-ubuntu_jammy" - db_init: "docker.io/openstackhelm/heat:2024.1-ubuntu_jammy" - db_drop: "docker.io/openstackhelm/heat:2024.1-ubuntu_jammy" - rabbit_init: docker.io/rabbitmq:3.7-management - ks_user: "docker.io/openstackhelm/heat:2024.1-ubuntu_jammy" - ks_service: "docker.io/openstackhelm/heat:2024.1-ubuntu_jammy" - ks_endpoints: "docker.io/openstackhelm/heat:2024.1-ubuntu_jammy" - dep_check: quay.io/airshipit/kubernetes-entrypoint:v1.0.0 - image_repo_sync: docker.io/docker:17.07.0 - octavia_db_sync: ghcr.io/rackerlabs/genestack/octavia-ovn:master-ubuntu_jammy - octavia_api: ghcr.io/rackerlabs/genestack/octavia-ovn:master-ubuntu_jammy - octavia_worker: ghcr.io/rackerlabs/genestack/octavia-ovn:master-ubuntu_jammy - octavia_housekeeping: ghcr.io/rackerlabs/genestack/octavia-ovn:master-ubuntu_jammy - octavia_health_manager: ghcr.io/rackerlabs/genestack/octavia-ovn:master-ubuntu_jammy - octavia_health_manager_init: "docker.io/openstackhelm/heat:2024.1-ubuntu_jammy" + test: "quay.io/rackspace/rackerlabs-xrally-openstack:2.0.0" + bootstrap: "quay.rackspace.com/rackerlabs-heat:2024.1-ubuntu_jammy" + db_init: "quay.rackspace.com/rackerlabs-heat:2024.1-ubuntu_jammy" + db_drop: "quay.rackspace.com/rackerlabs-heat:2024.1-ubuntu_jammy" + rabbit_init: "quay.io/rackspace/rackerlabs-rabbitmq:3.13-management" + ks_user: "quay.rackspace.com/rackerlabs-heat:2024.1-ubuntu_jammy" + ks_service: "quay.rackspace.com/rackerlabs-heat:2024.1-ubuntu_jammy" + ks_endpoints: "quay.rackspace.com/rackerlabs-heat:2024.1-ubuntu_jammy" + dep_check: "quay.io/rackspace/rackerlabs-kubernetes-entrypoint:v1.0.0" + image_repo_sync: "quay.io/rackspace/rackerlabs-docker:17.07.0" + octavia_db_sync: "quay.io/rackspace/rackerlabs-octavia-ovn:master-ubuntu_jammy" + octavia_api: "quay.io/rackspace/rackerlabs-octavia-ovn:master-ubuntu_jammy" + octavia_worker: "quay.io/rackspace/rackerlabs-octavia-ovn:master-ubuntu_jammy" + octavia_housekeeping: "quay.io/rackspace/rackerlabs-octavia-ovn:master-ubuntu_jammy" + octavia_health_manager: "quay.io/rackspace/rackerlabs-octavia-ovn:master-ubuntu_jammy" + octavia_health_manager_init: "quay.rackspace.com/rackerlabs-heat:2024.1-ubuntu_jammy" openvswitch_vswitchd: docker.io/kolla/centos-source-openvswitch-vswitchd:rocky pull_policy: "IfNotPresent" local_registry: diff --git a/base-helm-configs/placement/placement-helm-overrides.yaml b/base-helm-configs/placement/placement-helm-overrides.yaml index a1bf1cc6..a77a6ad5 100644 --- a/base-helm-configs/placement/placement-helm-overrides.yaml +++ b/base-helm-configs/placement/placement-helm-overrides.yaml @@ -11,15 +11,15 @@ labels: images: pull_policy: IfNotPresent tags: - placement: "docker.io/openstackhelm/placement:2024.1-ubuntu_jammy" - ks_user: "docker.io/openstackhelm/heat:2024.1-ubuntu_jammy" - ks_service: "docker.io/openstackhelm/heat:2024.1-ubuntu_jammy" - ks_endpoints: "docker.io/openstackhelm/heat:2024.1-ubuntu_jammy" - db_init: "docker.io/openstackhelm/heat:2024.1-ubuntu_jammy" - db_drop: "docker.io/openstackhelm/heat:2024.1-ubuntu_jammy" - placement_db_sync: "docker.io/openstackhelm/placement:2024.1-ubuntu_jammy" - dep_check: "quay.io/airshipit/kubernetes-entrypoint:v1.0.0" - image_repo_sync: "docker.io/docker:17.07.0" + placement: "quay.io/rackspace/rackerlabs-placement:2024.1-ubuntu_jammy" + ks_user: "quay.io/rackspace/rackerlabs-heat:2024.1-ubuntu_jammy" + ks_service: "quay.io/rackspace/rackerlabs-heat:2024.1-ubuntu_jammy" + ks_endpoints: "quay.io/rackspace/rackerlabs-heat:2024.1-ubuntu_jammy" + db_init: "quay.io/rackspace/rackerlabs-heat:2024.1-ubuntu_jammy" + db_drop: "quay.io/rackspace/rackerlabs-heat:2024.1-ubuntu_jammy" + placement_db_sync: "quay.io/rackspace/rackerlabs-placement:2024.1-ubuntu_jammy" + dep_check: "quay.io/rackspace/rackerlabs-kubernetes-entrypoint:v1.0.0" + image_repo_sync: "quay.io/rackspace/rackerlabs-docker:17.07.0" local_registry: active: false exclude: diff --git a/base-kustomize/glance/base/hpa-glance-api.yaml b/base-kustomize/glance/base/hpa-glance-api.yaml index d014579e..9bb7eed8 100644 --- a/base-kustomize/glance/base/hpa-glance-api.yaml +++ b/base-kustomize/glance/base/hpa-glance-api.yaml @@ -17,7 +17,7 @@ spec: name: memory target: type: AverageValue - averageValue: 200Mi + averageValue: 500Mi type: Resource scaleTargetRef: apiVersion: apps/v1 diff --git a/base-kustomize/heat/base/hpa-heat-engine.yaml b/base-kustomize/heat/base/hpa-heat-engine.yaml index 93a9218c..4a0b510b 100644 --- a/base-kustomize/heat/base/hpa-heat-engine.yaml +++ b/base-kustomize/heat/base/hpa-heat-engine.yaml @@ -16,7 +16,7 @@ spec: - resource: name: memory target: - averageValue: 100Mi + averageValue: 500Mi type: Value type: Resource scaleTargetRef: diff --git a/base-kustomize/keystone/base/hpa-keystone-api.yaml b/base-kustomize/keystone/base/hpa-keystone-api.yaml index 66d1df1b..e2c3a4a1 100644 --- a/base-kustomize/keystone/base/hpa-keystone-api.yaml +++ b/base-kustomize/keystone/base/hpa-keystone-api.yaml @@ -17,7 +17,7 @@ spec: name: memory target: type: AverageValue - averageValue: 400Mi + averageValue: 500Mi type: Resource scaleTargetRef: apiVersion: apps/v1 diff --git a/base-kustomize/neutron/base/hpa-neutron-server.yaml b/base-kustomize/neutron/base/hpa-neutron-server.yaml index 450074b2..f91920c7 100644 --- a/base-kustomize/neutron/base/hpa-neutron-server.yaml +++ b/base-kustomize/neutron/base/hpa-neutron-server.yaml @@ -10,14 +10,14 @@ spec: - resource: name: cpu target: - averageUtilization: 50 + averageUtilization: 70 type: Utilization type: Resource - resource: name: memory target: type: AverageValue - averageValue: 500Mi + averageValue: 2048Mi type: Resource scaleTargetRef: apiVersion: apps/v1 diff --git a/base-kustomize/nova/base/hpa-nova-conductor.yaml b/base-kustomize/nova/base/hpa-nova-conductor.yaml index 229f8013..3fcca9bc 100644 --- a/base-kustomize/nova/base/hpa-nova-conductor.yaml +++ b/base-kustomize/nova/base/hpa-nova-conductor.yaml @@ -10,7 +10,7 @@ spec: - resource: name: cpu target: - averageUtilization: 50 + averageUtilization: 70 type: Utilization type: Resource - resource: diff --git a/base-kustomize/nova/base/hpa-nova-scheduler.yaml b/base-kustomize/nova/base/hpa-nova-scheduler.yaml index ce5d25bc..0c23d567 100644 --- a/base-kustomize/nova/base/hpa-nova-scheduler.yaml +++ b/base-kustomize/nova/base/hpa-nova-scheduler.yaml @@ -10,14 +10,14 @@ spec: - resource: name: cpu target: - averageUtilization: 50 + averageUtilization: 70 type: Utilization type: Resource - resource: name: memory target: type: AverageValue - averageValue: 500Mi + averageValue: 1024Mi type: Resource scaleTargetRef: apiVersion: apps/v1 diff --git a/base-kustomize/octavia/base/hpa-octavia-api.yaml b/base-kustomize/octavia/base/hpa-octavia-api.yaml index 3fa87357..1b8ee40f 100644 --- a/base-kustomize/octavia/base/hpa-octavia-api.yaml +++ b/base-kustomize/octavia/base/hpa-octavia-api.yaml @@ -13,6 +13,12 @@ spec: averageUtilization: 50 type: Utilization type: Resource + - resource: + name: memory + target: + averageValue: 500Mi + type: Value + type: Resource scaleTargetRef: apiVersion: apps/v1 kind: Deployment diff --git a/base-kustomize/octavia/base/hpa-octavia-worker.yaml b/base-kustomize/octavia/base/hpa-octavia-worker.yaml index b37770e2..b5abd9d0 100644 --- a/base-kustomize/octavia/base/hpa-octavia-worker.yaml +++ b/base-kustomize/octavia/base/hpa-octavia-worker.yaml @@ -13,6 +13,12 @@ spec: averageUtilization: 50 type: Utilization type: Resource + - resource: + name: memory + target: + averageValue: 500Mi + type: Value + type: Resource scaleTargetRef: apiVersion: apps/v1 kind: Deployment diff --git a/base-kustomize/placement/base/hpa-placement-api.yaml b/base-kustomize/placement/base/hpa-placement-api.yaml index 0469134e..c057e220 100644 --- a/base-kustomize/placement/base/hpa-placement-api.yaml +++ b/base-kustomize/placement/base/hpa-placement-api.yaml @@ -13,6 +13,12 @@ spec: averageUtilization: 50 type: Utilization type: Resource + - resource: + name: memory + target: + averageValue: 500Mi + type: Value + type: Resource scaleTargetRef: apiVersion: apps/v1 kind: Deployment diff --git a/base-kustomize/skyline/base/deployment-apiserver.yaml b/base-kustomize/skyline/base/deployment-apiserver.yaml index 01e091d2..2be95c3c 100644 --- a/base-kustomize/skyline/base/deployment-apiserver.yaml +++ b/base-kustomize/skyline/base/deployment-apiserver.yaml @@ -108,7 +108,7 @@ spec: memory: "4096Mi" requests: cpu: "0.25" - memory: "64Mi" + memory: "128Mi" command: - bash - -c diff --git a/base-kustomize/skyline/base/hpa-skyline-apiserver.yaml b/base-kustomize/skyline/base/hpa-skyline-apiserver.yaml index e9076dea..efed6277 100644 --- a/base-kustomize/skyline/base/hpa-skyline-apiserver.yaml +++ b/base-kustomize/skyline/base/hpa-skyline-apiserver.yaml @@ -13,6 +13,12 @@ spec: averageUtilization: 50 type: Utilization type: Resource + - resource: + name: memory + target: + averageValue: 500Mi + type: Value + type: Resource scaleTargetRef: apiVersion: apps/v1 kind: Deployment diff --git a/docs/assets/images/grafana-explore.png b/docs/assets/images/grafana-explore.png new file mode 100644 index 00000000..1db14662 Binary files /dev/null and b/docs/assets/images/grafana-explore.png differ diff --git a/docs/assets/images/grafana-search.png b/docs/assets/images/grafana-search.png new file mode 100644 index 00000000..e814962f Binary files /dev/null and b/docs/assets/images/grafana-search.png differ diff --git a/docs/genestack-logging.md b/docs/genestack-logging.md new file mode 100644 index 00000000..a7a3bc85 --- /dev/null +++ b/docs/genestack-logging.md @@ -0,0 +1,72 @@ +#@ Genestack Logging + +[TOC] + +### Overview + +Genestack logging is a straight forward system that collects, stores and provides an interface to search and read logs on-demand. The storage backend is open to fit the needs of your deployment, so whether backing up to Openstack Swift, S3, Ceph, or file-share, Genestack logging can fit in your environment. + +Out of box Genestack logging is comprised of three separate technologies: + +- [Fluentbit](https://fluentbit.io/), a fast and lightweight telemetry agent for logs, metrics, and traces for Linux, macOS, Windows, and BSD family operating systems. Fluentbit grabs log entries immediately from your Kubernetes application and ships them to Loki for aggregation +- [Loki](https://github.com/grafana/loki), a log aggregation system for Kubernetes that stores logs in a time series database and is often used with Grafana to visualize them. +- [Grafana](https://grafana.com/), enables you to query, visualize, alert on, and explore your metrics, logs, and traces. + +These components are easily replaceable so that implementation in your existing environment is simple as possible. For example, Grafana needs not to be your dashboard if your environment you are licensed for Splunk. + +### Architecture + +![grafan architecture](assets/images/grafana-explore.png) + +### Configuration + +All configurations for Loki and FluentBit are in [genestack/base-helm-configs/loki](https://github.com/rackerlabs/genestack/tree/main/base-helm-configs/loki). Review the default deployment settings and overrides for your needs. + +### FluentBit, Loki, and Storage Operations + +Let's break down the process of how Fluent Bit, Kubernetes, Loki, and OpenStack Swift interact to efficiently collect and store application logs: + +1. Log Generation in Kubernetes: + + Kubernetes applications run within pods, which are the smallest deployable units of computing that contain one or more containers. Applications generate logs as part of their normal operation, recording events, errors, and other relevant information. + +2. Fluent Bit as the Log Collector: + + Fluent Bit is deployed as a **DaemonSet** in Kubernetes, ensuring it runs on every node of the cluster. It acts as a lightweight log collector, efficiently gathering logs from various sources, including application pods. It can parse and enrich logs with additional metadata, such as timestamps, hostnames, and Kubernetes labels. + +3. Sending Logs to Loki: + + Loki is configured as the output destination for Fluent Bit, which sends the collected and enriched logs to Loki which in turn indexes the logs, allowing for efficient querying and searching later. + +4. Loki's Role in Long-Term Storage: + + Loki can retain logs for a specified duration, depending on your configuration. Loki chunks the application logs it has received into large objects which are then sent via HTTP/HTTPS calls to Openstack Swift to reduce long-term storage costs and maintain historical data. + +5. OpenStack Swift as Object Storage: + + OpenStack Swift, or other S3-Compatible storage solutions such Ceph, provides object storage leveraging Swift's durability and scalability to store archived logs for extended periods. + +### Key Benefits of This Architecture: + +- Efficient Log Collection: Fluent Bit's lightweight design and efficient data transfer mechanisms ensure timely log collection. +- Scalable Log Aggregation: Loki's distributed architecture can handle large volumes of logs and scale horizontally to meet increasing demands. +- Flexible Log Retention: Loki's ability to archive logs to object storage provides a cost-effective solution for long-term retention. +- Powerful Log Querying: Loki's query language allows for complex log analysis and troubleshooting. +- Secure and Reliable Storage: OpenStack Swift offers durable and secure object storage for critical log data. + +### Accessing Log Information through Grafana + +The logs that Loki stores for us can be searched and read though Grafana. From the left-side menu bars, select 'Explore' to enter queries in Grafana. + +Start by selecting from the '**Label Filter**' drop-down for the application area of logs you want to search from. These are keyed on labels determined in the Kubernetes deployment. For example, the 'application' choice will allow you to choose all Openstack services by name (nova, cinder, etc ). All label filters are defined in base-helm-configs and can be referenced there. Only one selection is allowed per exporession, so you will need to select press the **+** to add more selections for refined searches. Then you enter the text you are searching for with its search qualifier ( line contains, line does not continue, etc). The example here shows searching for a server UUID in Nova: + +![grafana search](assets/images/grafana-search.png) + + Label matching operators are as follows: + +- `=`: exactly equal +- `!=`: not equal +- `=~`: regex matches +- `!~`: regex does not match + +Extensive documentation for query is available in the [Grafana](https://grafana.com/docs/loki/latest/query/) pages. diff --git a/docs/monitoring-info.md b/docs/monitoring-info.md new file mode 100644 index 00000000..05ea8d05 --- /dev/null +++ b/docs/monitoring-info.md @@ -0,0 +1,175 @@ +# Genestack Monitoring + +Genestack is made up of a vast array of components working away to provide a Kubernetes and OpenStack cloud infrastructure +to serve our needs. Here we'll discuss in a bit more detail about how we're monitoring these components and what that +looks like. + +## Overview + +In this document we'll dive a bit deeper into the components and how they're being used, for a quick overview take a look +at the [Monitoring Overview](prometheus-monitoring-overview.md) documentation. + +The following tooling are what was chosen as part of Genestack's default monitoring workflow primarily for their open-sourced nature and ease of integration. +These tools are not an absolute requirement and can easily be replaced by tooling of the end users choice as they see fit. + +## Prometheus + +Prometheus is the heavy lifter in Genestack when it comes to monitoring. We rely on Prometheus to monitor and collect metrics +for everything from the node/host health itself to Kubernetes stats and even OpenStack service metrics and operations. + +Prometheus is an open-source systems monitoring and alerting toolkit built in 2012. It joined the Cloud Native Computing Foundation in 2016 as the second hosted project, after Kubernetes. + +Prometheus is a powerful system that collects and stores its metrics as time series data, i.e. metrics information is stored with the timestamp at which it was recorded, alongside optional key-value pairs called labels. + +To read more about Prometheus from the official source take a look at [Prometheus Docs](https://prometheus.io). + +To install Prometheus within the Genestack workflow we make use of the helm charts found in the kube-prometheus-stack. + + +## The Kube Prometheus Stack + +Genestack takes full advantage of [Helm](https://helm.sh/) and [Kustomize maninfests](https://kustomize.io/) to build a production grade Kubernetes and OpenStack Cloud. +When it comes to monitoring Genestack this is no different, Genestack makes use of the [Prometheus Community's](https://github.com/prometheus-community) [kube-prometheus-stack](https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack). + +The kube-prometheus-stack provides an easy to operate end-to-end Kubernetes cluster monitoring system with Prometheus using the [Prometheus Operator](https://github.com/prometheus-operator/prometheus-operator). + +The kube-prometheus-stack offers many components that make monitoring fairly straight forward, scalable and easy to maintain. +In Genestack we have opted to make use of a subset of the components. As our needs change we may make further use of more of the components that the kube-prometheus-stack provides. +At the time of writing the primary components Genestack is not making use of as part of the kube-prometheus-stack are [Thanos](https://thanos.io/), a HA, long term storage Prometheus setup and [Grafana](https://grafana.com/), a metrics and alerting visualization platform. + +Thanos hasn't been a need or priority to setup by default in Genestack but is available to anyone utilizing Genestack by configuring the ThanosService section found in the [prometheus-helm-overrides.yaml](https://github.com/rackerlabs/genestack/blob/main/base-helm-configs/prometheus/prometheus-helm-overrides.yaml) in the Genestack repo. +For configuration documentation of Thanos view the [Thanos Docs](https://thanos.io/tip/thanos/getting-started.md/). + +As for Grafana, we install this separately to fit our needs with datasources, custom routes, auth and certs. To see more information about how we're installing Grafana as part of the Genestack workflow see: [Grafana README](https://github.com/rackerlabs/genestack/blob/main/base-helm-configs/grafana/README.md) and the installation documentation found at [Install Grafana](grafana.md). + +Some of the components that we do take advantage of are the [Prometheus Operator](https://github.com/prometheus-operator/prometheus-operator), [AlertManager](https://prometheus.io/docs/alerting/latest/alertmanager/) +and various custom resource definitions(CRD). These CRD's include the AlertManagerConfig, PrometheusRule and things like the ServiceMonitors, which allows for dynamic service monitoring configured outside the traditional Prometheus configuration methods. +For a more complete list and their definitions view: [Prometheus Operator Design](https://prometheus-operator.dev/docs/getting-started/design/). + +To install the kube-prometheus-stack as part of Genestack's workflow view the [Installing Prometheus Doc](prometheus.md). + +As for the metrics themselves they are largely provided by 'exporters' which simply export the data exposed by various services we wish to monitor in order for Prometheus to injest them. +The kube-prometheus-stack provides a set of key exporters deployed by default, such as, node-exporter and kube-state-metrics, that Genestack relies on to monitor its infrastructure. + +## Metric Exporters + +Genestack makes heavy use of prometheus exporters as there are many services that require monitoring. Below is the list of exporters Genestack deploys to monitor its systems. + +* ### Node Exporter: +The [node-exporter](https://github.com/prometheus/node_exporter) is geared toward hardware and OS metrics exposed by *NIX kernels. +The node-exporter exposes many important metrics by default such as cpu, hwmon, meminfo, loadavg and many more. For a full list view the [node-exporter README](https://github.com/prometheus/node_exporter?tab=readme-ov-file#collectors). + +* ### Kube State Metrics: +The [kube-state-metrics](https://github.com/kubernetes/kube-state-metrics) service provides metrics regarding the health of Kubernetes objects such as deployments, nodes and pods. +The kube-state-metrics service provides detailed information about the health and state of Kubernetes components and objects such as ConfigMaps, Jobs, Nodes, Deployments and many many more. +View the [kube-state-docs](https://github.com/kubernetes/kube-state-metrics/tree/main/docs) for a complete list and further information. + +Beyond those two highly important ones installed by default are many more equally important metric exporters that we install as part of Genestack's workflow that we'll go over next. + +* ### MariaDB/MySQL Exporter: +Genestack uses a couple different database solutions to run OpenStack or just for general storage capabilities, the most prominent of them is MySQL or more specifically within Genestack MariaDB and Galera. +When installing [MariaDB](infrastructure-mariadb.md) as part of Genestack's workflow it is default to enable metrics which deploys its own service monitor as part of the [mariadb-operator](https://mariadb-operator.github.io/mariadb-operator/latest/) helm charts. +This is great if you have already installed Prometheus, if not the MariaDB deploy will fail and there may be other potential database disrupting issues if you have a need to update metrics settings alone. It is encouraged to install the [Mysql Exporter](prometheus-mysql-exporter.md) as a separate exporter that can be updated without having to run MariaDB deploy/update commands. +The [mysql-exporter](https://github.com/prometheus/mysqld_exporter) is provided by the prometheus organization and is also what's used within the MariaDB Operator. When installed separately via the Genestack [Mysql Exporter](prometheus-mysql-exporter.md) installation instructions the [prometheus-mysql-exporter](https://github.com/prometheus-community/helm-charts/tree/main/charts/prometheus-mysql-exporter) helm charts are used. +The mysql-exporter provides many important metrics related to the overall health and operation of your MariaDB/Galera cluster. You can view more details about what's exported in the [mysqld-exporter README](https://github.com/prometheus/mysqld_exporter?tab=readme-ov-file#mysql-server-exporter-). + +* ### Postgres Exporter: +Genestack also makes use of PostgreSQL for a limited set of services. At the time of writing only [Gnocchi](openstack-gnocchi.md) is making use of it. It's still an important part of the system and requires monitoring. +To do so we make use of the Prometheus community helm charts [prometheus-postgres-exporter](https://github.com/prometheus-community/helm-charts/tree/main/charts/prometheus-postgres-exporter) and it's installed as part of Genestack's workflow by following the [Postgres Exporter](prometheus-postgres-exporter.md). +Further information about the exporter and the metrics it collects and exposes can be found in the [postgres_exporter](https://github.com/prometheus-community/postgres_exporter/blob/master/README.md) documentation. + +* ### RabbitMQ Exporter: +Many OpenStack services require RabbitMQ to operate and is part of Genestack's infrastructure deployment. [RabbitMQ](infrastructure-rabbitmq.md) cluster can be finicky at times and it's important to be able to monitor it. +Genestack makes use of the Prometheus community's [prometheus-rabbitmq-exporter](https://github.com/prometheus-community/helm-charts/tree/main/charts/prometheus-rabbitmq-exporter) helm charts and is installed as part of Genestack's workflow via [RabbitMQ Exporter](prometheus-rabbitmq-exporter.md). +The RabbitMQ exporter provides many detailed metrics such as channels, connections and queues. View a complete list of the metrics exposed in the [RabbitMQ Exporter Docs](https://github.com/kbudde/rabbitmq_exporter/blob/main/metrics.md). + +* ### Memcached Exporter: +Many OpenStack services make use of Memcached as a caching layer which is part of Genestack's infrastructure deployment found in the [Memcached Deployment Doc](infrastructure-memcached.md). +We monitor Memcached utilizing Prometheus community's helm chart for the [prometheus-memcached-exporter](https://github.com/prometheus-community/helm-charts/tree/main/charts/prometheus-memcached-exporter). +The memcached-exporter offers many metrics for things like uptime, connections and limits. For a full list view the [Memcached Exporter Docs](https://github.com/prometheus/memcached_exporter/blob/master/README.md#collectors). + +* ### BlackBox Exporter: +The blackbox exporter allows blackbox probing of endpoints over HTTP, HTTPS, DNS, TCP, ICMP and gRPC. This exporter is ideally deployed cross region in order to check the service health across the network. +Deploying it as part of the cluster it's monitoring does still have its benefits as it will reach out the gateways and back in to provide some context about the health of your services. This can also serve as a simple way to check endpoint cert expiration. +Install this exporter following the documentation found at [BlackBox Deployment Doc](prometheus-blackbox-exporter.md). For more information regarding the BlackBox exporter see the upstream [BlackBox Exporter Doc](https://github.com/prometheus/blackbox_exporter) + +* ### OVN Monitoring: +OVN is installed a bit differently compared to the rest of the services as you can see in the [OVN Deployment Doc](infrastructure-ovn-setup.md). The installation ends up installing [Kube-OVN](https://github.com/kubeovn/kube-ovn) which exposes metrics about its operations. +However, at this point, there's no way for Prometheus to scrape those metrics. The way Genestack achieves this is by applying ServiceMonitor CRD's so Prometheus knows how to find and scrape these services for metric collection. +In the [Kube-OVN Deployment Doc](https://docs.rackspacecloud.com/prometheus-kube-ovn/) we see a simple command to apply the contents of [prometheus-ovn](https://github.com/rackerlabs/genestack/tree/main/base-kustomize/prometheus-ovn). +The contents are a set of ServiceMonitor manifests that define labels, namespaces and names to match to a service to monitor which is percisely what a [ServiceMonitor](https://prometheus-operator.dev/docs/api-reference/api/#monitoring.coreos.com/v1.ServiceMonitor) CRD is designed to do. +You can view more information about the metrics provided in the [Kube-OVN Metrics Doc](https://kubeovn.github.io/docs/stable/en/reference/metrics/). +Once we've ran the apply command we will have installed ServiceMonitors for Kube-OVN services: + * CNI + * Controller + * OVN + * Pinger + + You can view more information about OVN monitoring in the [OVN Monitoring Introduction Docs](ovn-monitoring-introduction.md). + +* ### Nginx Gateway Monitoring: +Genestack makes use of the [Nginx Gateway Fabric](https://github.com/nginxinc/nginx-gateway-fabric/tree/main/charts/nginx-gateway-fabric) for its implementation of [Kubernetes Gateway API](https://gateway-api.sigs.k8s.io/). Genestack deploys this as part of its infrastructure, view the [Nginx Gateway Deployment Doc](infrastructure-gateway-api.md) for more information. +Nginx Gateway does expose important metrics for us to gather but it does not do so via a service. Instead we must make use another Prometheus CRD the [PodMonitor](https://prometheus-operator.dev/docs/getting-started/design/#podmonitor). +The install is similar to the above OVN monitoring as you can see in the [Nginx Gateway Exporter Deployment Doc](prometheus-nginx-gateway.md). The primary difference is the need to target and match on a pod that's exposing the metrics rather than a service. +You can view more information about the metrics exposed by the Nginx Gateway by viewing the [Nginx Gateway Fabric Docs](https://docs.nginx.com/nginx-gateway-fabric/how-to/monitoring/prometheus/). + +* ### OpenStack Metrics: +OpenStack Metrics are a bit different compared to the rest of the exporters as there's no single service, pod or deployment that exposes Prometheus metrics for collection. Instead, Genestack uses the [OpenStack Exporter](https://github.com/openstack-exporter/openstack-exporter) to gather the metrics for us. +The OpenStack exporter reaches out to all the configured OpenStack services, queries their API for stats and packages them as metrics Prometheus can then process. The OpenStack exporter is configurable and can collect metrics from just about every OpenStack service such as Keystone, Nova, Octavia etc.. +View the [OpenStack Exporter Deployment Doc](prometheus-openstack-metrics-exporter.md) for more information on how to configure and deploy the exporter in the Genestack workflow. +You can view more information about the OpenStack exporter in general and what metrics are collected in the [OpenStack Exporter Doc](https://github.com/openstack-exporter/openstack-exporter?tab=readme-ov-file#metrics). + +* ### Ceph Monitoring: +[Ceph](https://rook.io/docs/rook/latest-release/Getting-Started/intro/) comes with its own set of optimized collectors and exporters. In terms of deploying [Ceph Internally](storage-ceph-rook-internal.md) there is nothing for us to do. The service and ServiceMonitor CRD's are created and metrics will be available in Prometheus assuming metric collection is enabled in the helm chart. +If we are deploying [Ceph externally](storage-ceph-rook-external.md) then we will want to add another Prometheus CRD, the [ScrapeConfig](https://prometheus-operator.dev/docs/getting-started/design/#scrapeconfig). +The ScrapeConfig allows us to define external sources for Prometheus to scrape. + !!! example "Example ScrapeConfig for external Ceph monitoring" + + ``` yaml + apiVersion: monitoring.coreos.com/v1alpha1 + kind: ScrapeConfig + metadata: + name: external-ceph-monitor + namespace: prometheus + labels: + prometheus: sys\em-monitoring-prometheus + spec: + staticConfigs: + - labels: + job: prometheus + targets: + - 192.12.34.567:9283 + ``` +With this example we can simply apply it to the cluster and Prometheus will soon begin scraping metrics for our external Ceph cluster. +We can see additional information about the Ceph exporter at the [Ceph Github Docs](https://github.com/rook/rook/blob/master/design/ceph/ceph-exporter.md). +For additional information regarding the metrics collected and exposed from Ceph clusters view the [Ceph Telemetry Doc](https://github.com/rook/rook/blob/master/design/ceph/ceph-telemetry.md?plain=1). + +* ### Push Gateway: +The [Prometheus Push Gateway](https://github.com/prometheus/pushgateway) is used to gather metrics from short-lived jobs, like Kubernetes CronJobs. +It's not capable of turning Prometheus into a push-based monitoring system and should only be used when there is no other way to collect the desired metrics. +Currently, in Genestack the push gateway is only being used to gather stats from the OVN-Backup CronJob as noted in the [Pushgateway Deployment Doc](prometheus-pushgateway.md). + +* ### Textfile Collector: +It's possible to gather node/host metrics that aren't exposed by any of the above exporters by utilizing the [Node Exporter Textfile Collector](https://github.com/prometheus/node_exporter?tab=readme-ov-file#textfile-collector). +Currently, in Genestack the textfile-collector is used to collect kernel-taint stats. To view more information about the textfile-collector and how to deploy your own custom exporter view the [Custom Metrics Deployment Doc](prometheus-custom-node-metrics.md). + +This is currently the complete list of exporters and monitoring callouts deployed within the Genestack workflow. That said, Genestack is constantly evolving and list may grow or change entirely as we look to further improve our systems! +With all these metrics available we need a way to visualize them to get a better picture of our systems and their health, we'll discuss that next! + + +## Visualization + +In Genestack we deploy [Grafana](https://grafana.com/) as our default visualization tool. Grafana is open-sourced tooling which aligns well with the Genestack ethos while providing seamless visualization of the metrics generated by our systems. +Grafana also plays well with Prometheus and [Loki](infrastructure-loki.md), the default logging tooling deployed in Genestacks workflow, with various datasource plugins making integration a breeze. +Installing [Grafana](grafana.md) within Genestack is fairly straight forward, just follow the [Grafana Deployment Doc](grafana.md). + +As things stand now, the Grafana deployment does not deploy dashboards as part of the default deployment instructions. However, there are dashboards available found in the [etc directory](https://github.com/rackerlabs/genestack/tree/main/etc/grafana-dashboards) of the Genestack repo that can be installed manually. +The dashboards available cover just about every exporter/metric noted here and then some. Some of the dashboards may not be complete or may not provide the desired view. Please feel free to adjust them as needed and submit a PR to [Genestack repo](https://github.com/rackerlabs/genestack) if they may help others! + + +## Next Steps + +With what's deployed as part of our Genestack workflow today we get a fairly clear view of all our systems that allows us to properly monitor our Genestack cluster. +As we begin to expand to more regions or add other services that exist outside of our cluster, such as Swift, with its own monitoring systems a need may arise for tooling not provided within Genestack. +For example, Grafana may not provide all the features we'd like in a dashboard and we may want to find something that could combine multiple regions while being able to provide automation activity on alerts and way to notify support and on-call team members. +At that point it may be time to look at replacing certain tooling or running them in conjunction with things like [Dynatrace](https://www.dynatrace.com/) or [Datadog](https://www.datadoghq.com/) or any of the many tools available to fit our needs. diff --git a/docs/openstack-cinder-lvmisci.md b/docs/openstack-cinder-lvmisci.md index 66381dd5..640f5dcc 100644 --- a/docs/openstack-cinder-lvmisci.md +++ b/docs/openstack-cinder-lvmisci.md @@ -117,6 +117,38 @@ root@openstack-node-0:~# kubectl --namespace openstack exec -ti openstack-admin- +-------------+--------------------------------------+ ``` +!!! warning + + You must define and apply the volume type QoS policies **before** creating a volume within your new volume type (`lvmdriver-1`). Also, any additional volume provisioning specifications like the minimum and maximum size for the volume type must be set **before** creating a volume within your new volume type (`lvmdriver-1`). + +In order to apply a QoS policy to the `lvmdriver-1` volume type, you must first create the QoS policy. + +``` shell +root@openstack-node-0:~# kubectl --namespace openstack exec -ti openstack-admin-client -- openstack volume qos create --consumer "both" --property "read_iops_sec_per_gb=1" --property "write_iops_sec_per_gb=1" lvmdriver-1-iops ++------------+-----------------------------------------------------+ +| Field | Value | ++------------+-----------------------------------------------------+ +| consumer | both | +| id | b35fdf9c-d5bd-40f9-ae3a-8605c246ef2e | +| name | lvmdriver-1-iops | +| properties | read_iops_sec_per_gb='1', write_iops_sec_per_gb='1' | ++------------+-----------------------------------------------------+ +``` + +Once you have created the QoS policy, apply it to the `lvmdriver-1` volume type. +The command will utilize the `QOS_ID` and `VOLUME_TYPE_ID`. + +``` shell +root@openstack-node-0:~# kubectl --namespace openstack exec -ti openstack-admin-client -- openstack volume qos associate b35fdf9c-d5bd-40f9-ae3a-8605c246ef2e 6af6ade2-53ca-4260-8b79-1ba2f208c91d +``` + +Set any additional volume provisioning specifications like the minimum and maximum volume size. These specifications are set in the volume type. The following commands constrain the `lvmdriver-1` volume type to a size between 10 GB and 2 TB. + +``` shell +root@openstack-node-0:~# kubectl --namespace openstack exec -ti openstack-admin-client -- openstack volume type set --property provisioning:min_vol_size=10 6af6ade2-53ca-4260-8b79-1ba2f208c91d +root@openstack-node-0:~# kubectl --namespace openstack exec -ti openstack-admin-client -- openstack volume type set --property provisioning:max_vol_size=2048 6af6ade2-53ca-4260-8b79-1ba2f208c91d +``` + ## Validate functionality If wanted, create a test volume to tinker with diff --git a/docs/openstack-cinder-netapp-worker.md b/docs/openstack-cinder-netapp-worker.md index b2f9b042..b4abf9bf 100644 --- a/docs/openstack-cinder-netapp-worker.md +++ b/docs/openstack-cinder-netapp-worker.md @@ -24,7 +24,7 @@ The NetApp ONTAP driver requires a backend configuration to be set in the Kubern netapp_storage_protocol: iscsi netapp_transport_type: http netapp_vserver: - netapp:qos_policy_group: + netapp_qos_policy_group: netapp_dedup: True netapp_compression: True netapp_thick_provisioned: True @@ -40,7 +40,7 @@ The NetApp ONTAP driver requires a backend configuration to be set in the Kubern netapp_storage_protocol: iscsi netapp_transport_type: http netapp_vserver: - netapp:qos_policy_group: + netapp_qos_policy_group: netapp_dedup: True netapp_compression: True netapp_thick_provisioned: True @@ -56,7 +56,10 @@ The NetApp ONTAP driver requires a backend configuration to be set in the Kubern - **`SERVER_NAME_OR_ADDRESS`**: The address of the NetApp storage system. This can be either an IP address or a fully qualified domain name (FQDN). - **`SERVER_PORT`**: The port number used for communication with the NetApp storage system. Common ports are `80` for HTTP and `443` for HTTPS. - **`VSERVER`**: Specifies the virtual storage server (Vserver) on the NetApp storage system that will serve the volumes. -- **`QOS_POLICY`**: The Quality of Service (QoS) policy group name that will be applied to volumes for this backend. +- **`QOS_POLICY_GROUP`**: The Quality of Service (QoS) policy group name that will be applied to volumes for this backend. + +!!! note + The Cinder backends configuration file utilizes a colon (:) in the variable name `netapp:qos_policy_group`, but it has been replaced in the Helm overrides file with an underscore. Helm recognizes a colon (:) as a special character and renders it as an equal (=) sign. This is undesired behavior for the final rendering of the Cinder backends configuration file, and the Ansible playbook replaces the underscore with a colon (:). The extra spec requires the colon (:) in its name because it is used by the NetAppdriver to assign the QoS policy group to the OpenStack Block Storage volume after it has been provisioned. See [NetApp unified driver](https://docs.openstack.org/cinder/latest/configuration/block-storage/drivers/netapp-volume-driver.html) for more detailed information on the NetApp driver extra specs. ## Host Setup diff --git a/etc/grafana-dashboards/openstack_metrics.json b/etc/grafana-dashboards/openstack_metrics.json index b273baa5..495e1f1a 100644 --- a/etc/grafana-dashboards/openstack_metrics.json +++ b/etc/grafana-dashboards/openstack_metrics.json @@ -168,8 +168,9 @@ "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, + "editorMode": "code", "exemplar": true, - "expr": "count(last_over_time(openstack_nova_agent_state{adminState=\"enabled\"}[1h]))-sum(last_over_time(openstack_nova_agent_state{adminState=\"enabled\"}[1h]))", + "expr": "count(last_over_time(openstack_nova_agent_state{adminState=\"enabled\", hostname!~\".*.a30.*|.*.h100.*|.*.p40.*|.*gpu.*\"}[1h]))-sum(last_over_time(openstack_nova_agent_state{adminState=\"enabled\", hostname!~\".*.a30.*|.*.h100.*|.*.p40.*|.*gpu.*\"}[1h]))", "format": "time_series", "hide": false, "instant": true, @@ -294,8 +295,9 @@ "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, + "editorMode": "code", "exemplar": true, - "expr": "last_over_time(openstack_nova_agent_state{adminState=\"enabled\"}[1h])", + "expr": "last_over_time(openstack_nova_agent_state{adminState=\"enabled\", hostname!~\".*.a30.*|.*.h100.*|.*.p40.*|.*gpu.*\"}[1h])", "format": "table", "instant": true, "interval": "", @@ -431,7 +433,7 @@ }, "editorMode": "code", "exemplar": true, - "expr": "sum(last_over_time(openstack_nova_agent_state{adminState=\"enabled\"}[1h]))", + "expr": "sum(last_over_time(openstack_nova_agent_state{adminState=\"enabled\", hostname!~\".*.a30.*|.*.h100.*|.*.p40.*|.*gpu.*\"}[1h]))", "format": "time_series", "hide": false, "instant": true, @@ -867,7 +869,8 @@ "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, - "expr": "count(last_over_time(openstack_neutron_agent_state{adminState=\"up\"}[1h]))-sum(last_over_time(openstack_neutron_agent_state{adminState=\"up\"}[1h]))", + "editorMode": "code", + "expr": "count(last_over_time(openstack_neutron_agent_state{adminState=\"up\", hostname!~\".*.a30.*|.*.h100.*|.*.p40.*|.*gpu.*\"}[1h]))-sum(last_over_time(openstack_neutron_agent_state{adminState=\"up\", hostname!~\".*.a30.*|.*.h100.*|.*.p40.*|.*gpu.*\"}[1h]))", "format": "time_series", "hide": false, "instant": true, @@ -994,8 +997,9 @@ "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, + "editorMode": "code", "exemplar": true, - "expr": "last_over_time(openstack_neutron_agent_state[1h])", + "expr": "last_over_time(openstack_neutron_agent_state{hostname!~\".*.a30.*|.*.h100.*|.*.p40.*|.*gpu.*\"}[1h])", "format": "table", "instant": true, "interval": "", @@ -1130,7 +1134,8 @@ "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, - "expr": "sum(last_over_time(openstack_neutron_agent_state{adminState=\"up\"}[1h]))", + "editorMode": "code", + "expr": "sum(last_over_time(openstack_neutron_agent_state{adminState=\"up\", hostname!~\".*.a30.*|.*.h100.*|.*.p40.*|.*gpu.*\"}[1h]))", "format": "time_series", "hide": false, "instant": true, @@ -1257,7 +1262,7 @@ "uid": "${DS_PROMETHEUS}" }, "editorMode": "code", - "expr": "sum(openstack_placement_resource_usage{resourcetype=\"VCPU\"})", + "expr": "sum(openstack_placement_resource_usage{resourcetype=\"VCPU\", hostname!~\".*.a30.*|.*.h100.*|.*.p40.*|.*gpu.*\"})", "format": "time_series", "interval": "", "intervalFactor": 1, @@ -1272,7 +1277,7 @@ }, "editorMode": "code", "exemplar": true, - "expr": "sum(openstack_placement_resource_total{resourcetype=\"VCPU\"})", + "expr": "sum(openstack_placement_resource_total{resourcetype=\"VCPU\", hostname!~\".*.a30.*|.*.h100.*|.*.p40.*|.*gpu.*\"})", "format": "time_series", "interval": "", "intervalFactor": 1, @@ -1286,7 +1291,7 @@ "uid": "${DS_PROMETHEUS}" }, "editorMode": "code", - "expr": "sum(openstack_placement_resource_total{resourcetype=\"VCPU\"}) * 6", + "expr": "sum(openstack_placement_resource_total{resourcetype=\"VCPU\", hostname!~\".*.a30.*|.*.h100.*|.*.p40.*|.*gpu.*\"}) * 6", "hide": false, "instant": false, "legendFormat": "overcommit vcpu availability", @@ -1387,7 +1392,7 @@ }, "editorMode": "code", "exemplar": true, - "expr": "sum(openstack_placement_resource_usage{resourcetype=\"MEMORY_MB\"}) / 1024 / 1024", + "expr": "sum(openstack_placement_resource_usage{resourcetype=\"MEMORY_MB\", hostname!~\".*.a30.*|.*.h100.*|.*.p40.*|.*gpu.*\"}) / 1024 / 1024", "format": "time_series", "interval": "", "intervalFactor": 1, @@ -1402,7 +1407,7 @@ }, "editorMode": "code", "exemplar": true, - "expr": "sum(openstack_placement_resource_total{resourcetype=\"MEMORY_MB\"}) / 1024 / 1024", + "expr": "sum(openstack_placement_resource_total{resourcetype=\"MEMORY_MB\", hostname!~\".*.a30.*|.*.h100.*|.*.p40.*|.*gpu.*\"}) / 1024 / 1024", "format": "time_series", "interval": "", "intervalFactor": 1, @@ -1503,7 +1508,7 @@ "uid": "${DS_PROMETHEUS}" }, "editorMode": "code", - "expr": "count(openstack_nova_server_status{status=\"ACTIVE\"})", + "expr": "count(openstack_nova_server_status{status=\"ACTIVE\", hypervisor_hostname!~\".*.a30.*|.*.h100.*|.*.p40.*|.*gpu.*\"})", "format": "time_series", "interval": "", "intervalFactor": 1, @@ -1518,7 +1523,7 @@ }, "editorMode": "code", "exemplar": true, - "expr": "count(openstack_nova_server_status)", + "expr": "count(openstack_nova_server_status{hypervisor_hostname!~\".*.a30.*|.*.h100.*|.*.p40.*|.*gpu.*\"})", "format": "time_series", "interval": "", "intervalFactor": 1, @@ -1769,7 +1774,7 @@ }, "editorMode": "code", "exemplar": true, - "expr": "sum(openstack_placement_resource_usage{resourcetype=\"DISK_GB\"}) / 1024", + "expr": "sum(openstack_placement_resource_usage{resourcetype=\"DISK_GB\", hostname!~\".*.a30.*|.*.h100.*|.*.p40.*|.*gpu.*\"}) / 1024", "format": "time_series", "interval": "", "intervalFactor": 1, @@ -1783,7 +1788,7 @@ "uid": "${DS_PROMETHEUS}" }, "editorMode": "code", - "expr": "sum(openstack_placement_resource_total{resourcetype=\"DISK_GB\"}) / 1024", + "expr": "sum(openstack_placement_resource_total{resourcetype=\"DISK_GB\", hostname!~\".*.a30.*|.*.h100.*|.*.p40.*|.*gpu.*\"}) / 1024", "hide": false, "instant": false, "legendFormat": "local storage total", @@ -2362,9 +2367,9 @@ "exemplar": false, "expr": "openstack_neutron_ports", "format": "table", - "instant": false, + "instant": true, "legendFormat": "__auto", - "range": true, + "range": false, "refId": "A" } ], @@ -2401,7 +2406,7 @@ "x": 12, "y": 57 }, - "id": 82, + "id": 83, "options": { "colorMode": "value", "graphMode": "area", @@ -2427,7 +2432,7 @@ }, "editorMode": "code", "exemplar": false, - "expr": "openstack_neutron_routers", + "expr": "openstack_neutron_security_groups", "format": "table", "instant": true, "legendFormat": "__auto", @@ -2435,7 +2440,7 @@ "refId": "A" } ], - "title": "Routers", + "title": "Security Groups", "type": "stat" }, { @@ -2532,10 +2537,10 @@ "gridPos": { "h": 4, "w": 4, - "x": 20, - "y": 57 + "x": 0, + "y": 61 }, - "id": 83, + "id": 79, "options": { "colorMode": "value", "graphMode": "area", @@ -2561,7 +2566,7 @@ }, "editorMode": "code", "exemplar": false, - "expr": "openstack_neutron_security_groups", + "expr": "openstack_neutron_networks", "format": "table", "instant": true, "legendFormat": "__auto", @@ -2569,7 +2574,7 @@ "refId": "A" } ], - "title": "Security Groups", + "title": "Networks", "type": "stat" }, { @@ -2589,10 +2594,6 @@ { "color": "green", "value": null - }, - { - "color": "red", - "value": 80 } ] }, @@ -2603,10 +2604,10 @@ "gridPos": { "h": 4, "w": 4, - "x": 0, + "x": 4, "y": 61 }, - "id": 79, + "id": 81, "options": { "colorMode": "value", "graphMode": "area", @@ -2632,7 +2633,7 @@ }, "editorMode": "code", "exemplar": false, - "expr": "openstack_neutron_networks", + "expr": "openstack_neutron_subnets", "format": "table", "instant": true, "legendFormat": "__auto", @@ -2640,7 +2641,7 @@ "refId": "A" } ], - "title": "Networks", + "title": "Subnets", "type": "stat" }, { @@ -2670,10 +2671,10 @@ "gridPos": { "h": 4, "w": 4, - "x": 4, + "x": 8, "y": 61 }, - "id": 81, + "id": 82, "options": { "colorMode": "value", "graphMode": "area", @@ -2699,7 +2700,7 @@ }, "editorMode": "code", "exemplar": false, - "expr": "openstack_neutron_subnets", + "expr": "openstack_neutron_routers", "format": "table", "instant": true, "legendFormat": "__auto", @@ -2707,7 +2708,7 @@ "refId": "A" } ], - "title": "Subnets", + "title": "Routers", "type": "stat" }, { @@ -3623,10 +3624,10 @@ "exemplar": false, "expr": "sum(openstack_nova_limits_vcpus_used)", "format": "table", - "instant": false, + "instant": true, "interval": "", "legendFormat": "__auto", - "range": true, + "range": false, "refId": "A" } ], @@ -3726,7 +3727,7 @@ }, "editorMode": "code", "exemplar": true, - "expr": "(((openstack_placement_resource_usage{resourcetype=\"VCPU\"} * openstack_placement_resource_total{resourcetype=\"VCPU\"}) / 100) / (openstack_placement_resource_total{resourcetype=\"VCPU\"} * 6) * 100)", + "expr": "(((openstack_placement_resource_usage{resourcetype=\"VCPU\", hostname!~\".*.a30.*|.*.h100.*|.*.p40.*|.*gpu.*\"} * openstack_placement_resource_total{resourcetype=\"VCPU\", hostname!~\".*.a30.*|.*.h100.*|.*.p40.*|.*gpu.*\"}) / 100) / (openstack_placement_resource_total{resourcetype=\"VCPU\", hostname!~\".*.a30.*|.*.h100.*|.*.p40.*|.*gpu.*\"} * 6) * 100)", "format": "time_series", "hide": false, "interval": "", @@ -3833,7 +3834,7 @@ }, "editorMode": "code", "exemplar": true, - "expr": "openstack_placement_resource_usage{resourcetype=\"MEMORY_MB\"} / 1024 / 1024", + "expr": "openstack_placement_resource_usage{resourcetype=\"MEMORY_MB\", hostname!~\".*.a30.*|.*.h100.*|.*.p40.*|.*gpu.*\"} / 1024 / 1024", "format": "time_series", "hide": false, "interval": "", @@ -3851,6 +3852,7 @@ "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, + "description": "Details of instances that are stuck in a state other than ACTIVE", "fieldConfig": { "defaults": { "color": { @@ -3868,7 +3870,8 @@ "mode": "absolute", "steps": [ { - "color": "green" + "color": "green", + "value": null }, { "color": "red", @@ -4030,7 +4033,8 @@ "mode": "absolute", "steps": [ { - "color": "yellow" + "color": "yellow", + "value": null }, { "color": "red", @@ -4108,15 +4112,15 @@ }, "editorMode": "code", "exemplar": false, - "expr": "openstack_nova_server_status", + "expr": " openstack_nova_server_status", "format": "table", "instant": true, "legendFormat": "__auto", - "range": true, + "range": false, "refId": "A" } ], - "title": "Instance Details", + "title": "Non-Active Instance Details", "transformations": [ { "id": "filterFieldsByName", @@ -4237,7 +4241,8 @@ "mode": "absolute", "steps": [ { - "color": "green" + "color": "green", + "value": null }, { "color": "red", @@ -4279,7 +4284,7 @@ }, "editorMode": "code", "exemplar": true, - "expr": "openstack_placement_resource_usage{resourcetype=\"DISK_GB\"} / 1024", + "expr": "openstack_placement_resource_usage{resourcetype=\"DISK_GB\", hostname!~\".*.a30.*|.*.h100.*|.*.p40.*|.*gpu.*\"} / 1024", "format": "time_series", "interval": "", "intervalFactor": 1, @@ -4366,7 +4371,8 @@ "mode": "absolute", "steps": [ { - "color": "green" + "color": "green", + "value": null }, { "color": "red", @@ -4465,7 +4471,8 @@ "mode": "absolute", "steps": [ { - "color": "green" + "color": "green", + "value": null }, { "color": "red", @@ -4532,7 +4539,8 @@ "mode": "absolute", "steps": [ { - "color": "green" + "color": "green", + "value": null } ] }, @@ -4576,7 +4584,7 @@ "format": "table", "instant": true, "legendFormat": "__auto", - "range": true, + "range": false, "refId": "A" } ], @@ -4599,7 +4607,8 @@ "mode": "absolute", "steps": [ { - "color": "green" + "color": "green", + "value": null } ] }, @@ -4640,11 +4649,11 @@ }, "editorMode": "code", "exemplar": false, - "expr": "sum(openstack_cinder_limits_volume_used_gb)", + "expr": "sum(openstack_cinder_limits_volume_used_gb) ", "format": "table", "instant": true, "legendFormat": "__auto", - "range": true, + "range": false, "refId": "A" } ], @@ -4667,7 +4676,8 @@ "mode": "absolute", "steps": [ { - "color": "green" + "color": "green", + "value": null } ] }, @@ -4708,11 +4718,11 @@ }, "editorMode": "code", "exemplar": false, - "expr": "sum(openstack_glance_image_bytes)", + "expr": "sum(openstack_glance_image_bytes) ", "format": "table", "instant": true, "legendFormat": "__auto", - "range": true, + "range": false, "refId": "A" } ], @@ -4747,7 +4757,8 @@ "mode": "absolute", "steps": [ { - "color": "green" + "color": "green", + "value": null }, { "color": "red", @@ -4793,9 +4804,9 @@ "exemplar": false, "expr": "openstack_identity_domains ", "format": "table", - "instant": false, + "instant": true, "legendFormat": "__auto", - "range": true, + "range": false, "refId": "A" } ], @@ -4817,7 +4828,8 @@ "mode": "absolute", "steps": [ { - "color": "green" + "color": "green", + "value": null }, { "color": "red", @@ -4863,9 +4875,9 @@ "exemplar": false, "expr": "openstack_identity_users", "format": "table", - "instant": false, + "instant": true, "legendFormat": "__auto", - "range": true, + "range": false, "refId": "A" } ], @@ -4887,7 +4899,8 @@ "mode": "absolute", "steps": [ { - "color": "green" + "color": "green", + "value": null }, { "color": "red", @@ -4935,7 +4948,7 @@ "format": "table", "instant": true, "legendFormat": "__auto", - "range": true, + "range": false, "refId": "A" } ], @@ -4957,7 +4970,8 @@ "mode": "absolute", "steps": [ { - "color": "green" + "color": "green", + "value": null }, { "color": "red", @@ -5005,7 +5019,7 @@ "format": "table", "instant": true, "legendFormat": "__auto", - "range": true, + "range": false, "refId": "A" } ], @@ -5027,7 +5041,8 @@ "mode": "absolute", "steps": [ { - "color": "green" + "color": "green", + "value": null }, { "color": "red", @@ -5075,7 +5090,7 @@ "format": "table", "instant": true, "legendFormat": "__auto", - "range": true, + "range": false, "refId": "A" } ], @@ -5110,7 +5125,8 @@ "mode": "absolute", "steps": [ { - "color": "green" + "color": "green", + "value": null }, { "color": "red", @@ -5154,7 +5170,7 @@ }, "editorMode": "code", "exemplar": false, - "expr": "openstack_loadbalancer_total_loadbalancers[1h]", + "expr": "openstack_loadbalancer_total_loadbalancers", "format": "table", "instant": true, "legendFormat": "__auto", @@ -5181,7 +5197,8 @@ "mode": "absolute", "steps": [ { - "color": "green" + "color": "green", + "value": null }, { "color": "red", @@ -5252,7 +5269,8 @@ "mode": "absolute", "steps": [ { - "color": "green" + "color": "green", + "value": null }, { "color": "red", @@ -5296,7 +5314,7 @@ }, "editorMode": "code", "exemplar": false, - "expr": "openstack_loadbalancer_total_amphorae[1h]", + "expr": "openstack_loadbalancer_total_amphorae", "format": "table", "instant": true, "legendFormat": "__auto", @@ -5323,7 +5341,8 @@ "mode": "absolute", "steps": [ { - "color": "green" + "color": "green", + "value": null }, { "color": "red", @@ -5393,7 +5412,8 @@ "mode": "absolute", "steps": [ { - "color": "green" + "color": "green", + "value": null }, { "color": "red", @@ -5437,7 +5457,7 @@ }, "editorMode": "code", "exemplar": false, - "expr": "openstack_loadbalancer_total_pools[1h]", + "expr": "openstack_loadbalancer_total_pools", "format": "table", "instant": true, "legendFormat": "__auto", @@ -5464,7 +5484,8 @@ "mode": "absolute", "steps": [ { - "color": "green" + "color": "green", + "value": null }, { "color": "red", @@ -5550,7 +5571,7 @@ ] }, "time": { - "from": "now-2d", + "from": "now-24h", "to": "now" }, "timepicker": { @@ -5581,6 +5602,6 @@ "timezone": "", "title": "OpenStack Exporter", "uid": "YZCsB1Qmy", - "version": 68, + "version": 85, "weekStart": "" } diff --git a/mkdocs.yml b/mkdocs.yml index a69ec846..bb1a08d2 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -233,6 +233,7 @@ nav: - Gnocchi: metering-gnocchi.md - Billing Tenants: metering-billing.md - Chargebacks: metering-chargebacks.md + - Logging Overview: genestack-logging.md - Infrastructure: - Etcd Backup: etcd-backup.md - OVN introduction: ovn-intro.md @@ -244,6 +245,8 @@ nav: - MariaDB Operations: infrastructure-mariadb-ops.md - Adding New Node: adding-new-node.md - Host Aggregates: openstack-host-aggregates.md + - Monitoring and Alerting: + - Monitoring Information: monitoring-info.md - Third Party Tools: - OSIE: extra-osie.md - OpenStack: