Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
50 changes: 50 additions & 0 deletions .github/workflows/helm-masakari.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
name: Helm GitHub Actions for Masakari

on:
pull_request:
paths:
- base-helm-configs/masakari/**
- base-kustomize/masakari/**
- .github/workflows/helm-masakari.yaml
jobs:
helm:
strategy:
matrix:
overlays:
- base
- aio
name: Helm
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- uses: azure/setup-helm@v3
with:
version: latest
token: "${{ secrets.GITHUB_TOKEN }}"
id: helm
- name: Kubectl Install
working-directory: /usr/local/bin/
run: |
if [ ! -f /usr/local/bin/kubectl ]; then
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
chmod +x ./kubectl
fi
- name: Pull OSH repositories
run: |
helm repo add openstack-helm https://tarballs.opendev.org/openstack/openstack-helm
helm repo update
- name: Run Helm Template
run: |
${{ steps.helm.outputs.helm-path }} template masakari openstack-helm/masakari \
--namespace=openstack \
--wait \
--timeout 120m \
-f ${{ github.workspace }}/base-helm-configs/masakari/masakari-helm-overrides.yaml \
--post-renderer ${{ github.workspace }}/base-kustomize/kustomize.sh \
--post-renderer-args masakari/${{ matrix.overlays }} > /tmp/rendered.yaml
- name: Return helm Build
uses: actions/upload-artifact@v4
with:
name: helm-masakari-artifact-${{ matrix.overlays }}
path: /tmp/rendered.yaml
3 changes: 3 additions & 0 deletions .original-images.json
Original file line number Diff line number Diff line change
Expand Up @@ -47,4 +47,7 @@
"quay.io/airshipit/freezer:2025.1-ubuntu_jammy",
"quay.io/airshipit/freezer-api:2025.1-ubuntu_jammy",
"quay.io/airshipit/blazar:2025.1-ubuntu_jammy"
"quay.io/airshipit/cloudkitty:2024.1-ubuntu_jammy"
"docker.io/openstackhelm/masakari:2024.1-ubuntu_jammy"
"docker.io/openstackhelm/masakari-monitors:2024.1-ubuntu_jammy"
]
5 changes: 2 additions & 3 deletions base-helm-configs/masakari/masakari-helm-overrides.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -14,15 +14,14 @@
images:
tags:
db_init: ghcr.io/rackerlabs/genestack-images/heat:2024.1-latest
db_sync: docker.io/openstackhelm/masakari:2024.1-ubuntu_jammy
db_sync: ghcr.io/rackerlabs/genestack-images/masakari-monitors:2024.1-latest
db_drop: ghcr.io/rackerlabs/genestack-images/heat:2024.1-latest
ks_endpoints: ghcr.io/rackerlabs/genestack-images/heat:2024.1-latest
ks_service: ghcr.io/rackerlabs/genestack-images/heat:2024.1-latest
ks_user: ghcr.io/rackerlabs/genestack-images/heat:2024.1-latest
masakari_api: ghcr.io/rackerlabs/genestack-images/masakari:2024.1-latest
masakari_engine: ghcr.io/rackerlabs/genestack-images/masakari:2024.1-latest
# TEMP HOST-MONITOR IMAGE TO FIX: https://review.opendev.org/c/openstack/masakari-monitors/+/951336
masakari_host_monitor: kernelpanic53/rackerlabs-masakari-monitors:zhmarvi-ubuntu_jammy_v1.0
masakari_host_monitor: ghcr.io/rackerlabs/genestack-images/masakari-monitors:2024.1-latest
masakari_process_monitor: ghcr.io/rackerlabs/genestack-images/masakari-monitors:2024.1-latest
masakari_instance_monitor: ghcr.io/rackerlabs/genestack-images/masakari-monitors:2024.1-latest
rabbit_init: docker.io/rabbitmq:3.13-management
Expand Down
52 changes: 52 additions & 0 deletions docs/openstack-cloudkitty.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
# Deploy Cloudkitty

OpenStack Cloudkitty is the rating and chargeback service for OpenStack
helps operators measure, rate, and bill tenants (projects) for the resources
they consume in an OpenStack cloud.
This document outlines the deployment of OpenStack Cloudkitty using Genestack.

## Create secrets

!!! note "Information about the secrets used"

Manual secret generation is only required if you haven't run the
`create-secrets.sh` script located in `/opt/genestack/bin`.

??? example "Example secret generation"

``` shell
kubectl --namespace openstack \
create secret generic cloudkitty-rabbitmq-password \
--type Opaque \
--from-literal=username="cloudkitty" \
--from-literal=password="$(< /dev/urandom tr -dc _A-Za-z0-9 | head -c${1:-64};echo;)"
kubectl --namespace openstack \
create secret generic cloudkitty-db-password \
--type Opaque \
--from-literal=password="$(< /dev/urandom tr -dc _A-Za-z0-9 | head -c${1:-32};echo;)"
kubectl --namespace openstack \
create secret generic cloudkitty-admin \
--type Opaque \
--from-literal=password="$(< /dev/urandom tr -dc _A-Za-z0-9 | head -c${1:-32};echo;)"
```

## Run the package deployment

!!! example "Run the Cloudkitty deployment Script `/opt/genestack/bin/install-cloudkitty.sh`"

``` shell
--8<-- "bin/install-cloudkitty.sh"
```

!!! tip

You may need to provide custom values to configure your OpenStack services.
For a simple single region or lab deployment you can supply an additional
overrides flag using the example found at
`base-helm-configs/aio-example-openstack-overrides.yaml`.

## Validate functionality

``` shell
kubectl --namespace openstack exec -ti openstack-admin-client -- openstack rating module list
```
53 changes: 53 additions & 0 deletions docs/openstack-masakari.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
# Deploy Masakari

OpenStack Masakari is the High Availability (HA) service for instances (VMs) in OpenStack.
Provides instance high availability by automatically recovering virtual machine workloads
Compute host failures (node crashes, hardware failure).
VM process failures (QEMU process crashes).
Guest OS failures (detected through monitoring agents). This document outlines the deployment of OpenStack Masakari using Genestack.

## Create secrets

!!! note "Information about the secrets used"

Manual secret generation is only required if you haven't run the
`create-secrets.sh` script located in `/opt/genestack/bin`.

??? example "Example secret generation"

``` shell
kubectl --namespace openstack \
create secret generic masakari-rabbitmq-password \
--type Opaque \
--from-literal=username="masakari" \
--from-literal=password="$(< /dev/urandom tr -dc _A-Za-z0-9 | head -c${1:-64};echo;)"
kubectl --namespace openstack \
create secret generic masakari-db-password \
--type Opaque \
--from-literal=password="$(< /dev/urandom tr -dc _A-Za-z0-9 | head -c${1:-32};echo;)"
kubectl --namespace openstack \
create secret generic masakari-admin \
--type Opaque \
--from-literal=password="$(< /dev/urandom tr -dc _A-Za-z0-9 | head -c${1:-32};echo;)"
```

## Run the package deployment

!!! example "Run the Masakari deployment Script `/opt/genestack/bin/install-masakari.sh`"

``` shell
--8<-- "bin/install-masakari.sh"
```

!!! tip

You may need to provide custom values to configure your OpenStack services.
For a simple single region or lab deployment you can supply an additional
overrides flag using the example found at
`base-helm-configs/aio-example-openstack-overrides.yaml`.

## Validate functionality

``` shell
kubectl --namespace openstack exec -ti openstack-admin-client -- openstack segment list
```
2 changes: 2 additions & 0 deletions mkdocs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -223,8 +223,10 @@ nav:
- PostgreSQL: infrastructure-postgresql.md
- Gnocchi: openstack-gnocchi.md
- Ceilometer: openstack-ceilometer.md
- Cloudkitty: openstack-cloudkitty.md
- Blazar: openstack-blazar.md
- Freezer: openstack-freezer.md
- Masakari: openstack-masakari.md
- Monitoring:
- Monitoring Overview: prometheus-monitoring-overview.md
- Getting Started: monitoring-getting-started.md
Expand Down
56 changes: 55 additions & 1 deletion scripts/hyperconverged-lab.sh
Original file line number Diff line number Diff line change
Expand Up @@ -658,7 +658,7 @@ conf:
EOF
fi

if [ ! -f "/etc/genestack/helm-configs/magnum/magnum-helm-overrides.yaml" ]; then
if [ ! -f "/etc/genestack/helm-configs/neutron/neutron-helm-overrides.yaml" ]; then
cat > /etc/genestack/helm-configs/neutron/neutron-helm-overrides.yaml <<EOF
---
pod:
Expand Down Expand Up @@ -756,6 +756,36 @@ conf:
EOF
fi

if [ ! -f "/etc/genestack/helm-configs/masakari/masakari-helm-overrides.yaml" ]; then
cat > /etc/genestack/helm-configs/masakari/masakari-helm-overrides.yaml <<EOF
---
pod:
resources:
enabled: false
conf:
masakari:
oslo_messaging_notifications:
driver: noop
EOF
fi

if [ ! -f "/etc/genestack/helm-configs/cloudkitty/cloudkitty-helm-overrides.yaml" ]; then
cat > /etc/genestack/helm-configs/cloudkitty/cloudkitty-helm-overrides.yaml <<EOF
---
pod:
resources:
enabled: false
conf:
cloudkitty:
oslo_messaging_notifications:
driver: noop
cloudkitty_api_uwsgi:
uwsgi:
processes: 1
threads: 1
EOF
fi

# This makes the services available from outside (thanks @busterswt for figuring this out)
if [ ! -f "/etc/genestack/helm-configs/global_overrides/endpoints.yaml" ]; then
cat > /etc/genestack/helm-configs/global_overrides/endpoints.yaml <<EOF
Expand Down Expand Up @@ -886,6 +916,26 @@ endpoints:
public: 443
scheme:
public: https
rating:
host_fqdn_override:
public:
tls: {}
host: cloudkitty.${GATEWAY_DOMAIN}
port:
api:
public: 443
scheme:
public: https
instance_ha:
host_fqdn_override:
public:
tls: {}
host: masakari.${GATEWAY_DOMAIN}
port:
api:
public: 443
scheme:
public: https
identity:
auth:
admin:
Expand All @@ -900,6 +950,8 @@ endpoints:
region_name: *region
ceilometer:
region_name: *region
cloudkitty:
region_name: *region
glance:
region_name: *region
gnocchi:
Expand All @@ -914,6 +966,8 @@ endpoints:
region_name: *region
magnum:
region_name: *region
masakari:
region_name: *region
neutron:
region_name: *region
nova:
Expand Down
1 change: 1 addition & 0 deletions scripts/openstack-components.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -14,3 +14,4 @@ components:
ceilometer: false
gnocchi: false
skyline: true
cloudkitty: false
3 changes: 3 additions & 0 deletions testing/deploy.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -336,6 +336,9 @@
- name: Install magnum
command: /opt/genestack/bin/install-magnum.sh

- name: Install masakari
command: /opt/genestack/bin/install-masakari.sh

- name: Wait 10 minutes for things to deploy
ansible.builtin.pause:
seconds: 600
Expand Down