Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
732fff1
Replace stackrox deploy scripts with roxie in start-acs
porridge Jun 30, 2026
03a3607
Add temporary test workflow for roxie start-acs
porridge Jun 30, 2026
1ba316d
Add workflow_dispatch trigger for testing
porridge Jun 30, 2026
406da5e
Skip properties and wait-for-images on workflow_dispatch
porridge Jun 30, 2026
23e5bdf
Allow jobs to proceed when wait-for-images/properties are skipped
porridge Jun 30, 2026
cd90b1f
Install roxctl if not in PATH before roxie deploy
porridge Jun 30, 2026
616261e
Add --early-readiness flag to roxie deploy
porridge Jun 30, 2026
b9787b6
Use premium-rwo storage class instead of faster
porridge Jun 30, 2026
c0a7274
Revert test-only workflow changes, keep only roxie install step
porridge Jul 1, 2026
5becf58
Revert "Revert test-only workflow changes, keep only roxie install step"
porridge Jul 1, 2026
52a3ffa
Restore test scaffolding, add roxie install for start-secured-cluster
porridge Jul 1, 2026
465185b
Replace deploy scripts with roxie in start-secured-cluster
porridge Jul 1, 2026
d5b4f6d
Skip Slack notifications when properties output is empty
porridge Jul 1, 2026
3dfcf7d
Fix secured-cluster deploy: propagate CA cert and API_ENDPOINT
porridge Jul 1, 2026
eb10e35
Use small resource profile for both central and secured cluster
porridge Jul 1, 2026
7c8ad6a
Use acs-defaults profile with custom resource overrides
porridge Jul 1, 2026
463af65
Match legacy HPA scaling and enable scanner v2
porridge Jul 1, 2026
f080ee0
Fix: SecuredCluster scanner uses AutoSense, not Enabled
porridge Jul 2, 2026
8f769d0
Align resource specs and HPA scaling with legacy deployment
porridge Jul 2, 2026
d86a4e4
Tidy workflow dispatch comments, config comments, input order
porridge Jul 2, 2026
4cb3535
Improve testing instructions with concrete example fields
porridge Jul 2, 2026
c2cbe4a
clean up envrc
porridge Jul 6, 2026
8bbcc3d
mkdir
porridge Jul 6, 2026
3d3837e
Pause operator reconciliation, match legacy central-db resources
porridge Jul 6, 2026
ae91988
Pin roxie version to v0.4.2 to avoid GitHub API rate limits
porridge Jul 6, 2026
d525279
Enable monitoring endpoints and sensor metrics scraping
porridge Jul 7, 2026
8fe110e
review comments
porridge Jul 8, 2026
d9f5c08
Remove test scaffolding from workflow, keep only essential changes
porridge Jul 13, 2026
80cd4f9
Bump roxie to v0.4.3, drop roxctl install
porridge Jul 13, 2026
d8bfcf2
Update start-acs.sh header comments for roxie flow
porridge Jul 13, 2026
94da706
Set clusterName: secured-cluster to match legacy deploy
porridge Jul 13, 2026
f4d4355
Revert "Set clusterName: secured-cluster to match legacy deploy"
porridge Jul 13, 2026
9155138
Keep CLUSTER env var and pass to roxie via --set
porridge Jul 13, 2026
edf348b
fix typo
porridge Jul 13, 2026
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
8 changes: 8 additions & 0 deletions .github/workflows/create-demo-clusters.yml
Comment thread
porridge marked this conversation as resolved.
Original file line number Diff line number Diff line change
Expand Up @@ -307,6 +307,7 @@ jobs:
outputs:
rox-password: ${{ steps.launch-central.outputs.rox-password }}
central-ip: ${{ steps.launch-central.outputs.central-ip }}
ca-cert: ${{ steps.launch-central.outputs.ca-cert }}
env:
NAME: ${{ inputs.cluster-with-fake-load-name }}
KUBECONFIG: artifacts/kubeconfig
Expand Down Expand Up @@ -342,6 +343,9 @@ jobs:
id: artifacts
run: |
infractl artifacts "${NAME//./-}" -d artifacts >> "$GITHUB_STEP_SUMMARY"
- uses: ./.actions/roxie/install-cli
with:
version: v0.4.3
- name: Launch central
id: launch-central
uses: ./.actions/release/start-acs
Expand Down Expand Up @@ -440,6 +444,9 @@ jobs:
registry: quay.io
username: ${{ secrets.QUAY_RHACS_ENG_RO_USERNAME }}
password: ${{ secrets.QUAY_RHACS_ENG_RO_PASSWORD }}
- uses: ./.actions/roxie/install-cli
with:
version: v0.4.3
- name: Launch secured cluster
id: launch-secured-cluster
uses: ./.actions/release/start-secured-cluster
Expand All @@ -451,6 +458,7 @@ jobs:
registry-password: ${{ secrets.QUAY_RHACS_ENG_RO_PASSWORD }}
rox-admin-password: ${{ needs.start-acs.outputs.rox-password }}
central-ip: ${{ needs.start-acs.outputs.central-ip }}
ca-cert: ${{ needs.start-acs.outputs.ca-cert }}

start-kube-burner-for-secured-cluster:
name: Start kube-burner for the secured cluster
Expand Down
18 changes: 6 additions & 12 deletions release/start-acs/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ inputs:
required: true
default: ""
stackrox-dir:
description: Where the stackrox directory is located
description: Where the stackrox directory is located (needed for monitoring chart)
required: true
default: ""
name:
Expand All @@ -42,24 +42,15 @@ runs:

- id: launch-central
env:
ROX_PRODUCT_BRANDING: RHACS_BRANDING
MAIN_IMAGE_TAG: ${{ inputs.main-image-tag }}
API_ENDPOINT: localhost:8000
STORAGE: pvc # Backing storage
STORAGE_CLASS: faster # Runs on an SSD type
STORAGE_SIZE: "100" # 100G
MONITORING_SUPPORT: "true" # Runs monitoring
LOAD_BALANCER: lb
SECURED_CLUSTER_AUTO_LOCK_PROCESS_BASELINES: "true"
ROX_ADMIN_USERNAME: admin

@JoukoVirtanen JoukoVirtanen Jul 8, 2026

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you comment in the PR why these environment variables are being removed and what impact removing them will have? Some of them may be in the roxie config. Others are being removed entirely.

Also there are comments for some of these in start-acs.sh. You will need to remove those.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added a table to the PR description, and updated the comments.

MONITORING_SUPPORT: "true"
PAGERDUTY_INTEGRATION_KEY: ${{ inputs.pagerduty-integration-key }}
ROX_ADMIN_USERNAME: admin
REGISTRY_USERNAME: ${{ inputs.registry-username }}
REGISTRY_PASSWORD: ${{ inputs.registry-password }}
KUBECONFIG: ${{ inputs.kubeconfig }}
STACKROX_DIR: ${{ inputs.stackrox-dir }}
NAME: ${{ inputs.name }}
ROX_TELEMETRY_STORAGE_KEY_V1: R5fMyO9n0gibSGzOXtlP2qCFWCGb8uoW
ROX_SCANNER_V4: "true"
run: |
set -uo pipefail
"${GITHUB_ACTION_PATH}/../../common/common.sh" \
Expand All @@ -73,3 +64,6 @@ outputs:
central-ip:
description: The ip address of central
value: ${{steps.launch-central.outputs.central-ip}}
ca-cert:
description: Base64-encoded Central CA certificate
value: ${{steps.launch-central.outputs.ca-cert}}
45 changes: 0 additions & 45 deletions release/start-acs/patch-central.json

This file was deleted.

45 changes: 0 additions & 45 deletions release/start-acs/patch-sensor.json

This file was deleted.

127 changes: 127 additions & 0 deletions release/start-acs/roxie-config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,127 @@
# Resource requests, limits, and scaling settings below are tuned to match
# the previous deploy-scripts-based flow. They may be adjusted in the future
# to better resemble a typical customer deployment.
central:
namespace: stackrox
pauseReconciliation: true
spec:
central:
exposure:
loadBalancer:
enabled: true
monitoring:
exposeEndpoint: Enabled
resources:
requests:
memory: "3Gi"
cpu: "2"
limits:
memory: "12Gi"
cpu: "4"
db:
resources:
requests:
cpu: "1"
memory: "1Gi"
limits:
cpu: "8"
memory: "16Gi"
persistence:
persistentVolumeClaim:
storageClassName: premium-rwo
size: "100Gi"
scanner:
scannerComponent: Enabled
analyzer:
scaling:
autoScaling: Enabled
minReplicas: 1
maxReplicas: 5
replicas: 1
monitoring:
exposeEndpoint: Enabled
customize:
envVars:
- name: MUTEX_WATCHDOG_TIMEOUT_SECS
value: "0"
- name: ROX_EXTERNAL_IPS
value: "true"
- name: ROX_NETWORK_GRAPH_EXTERNAL_IPS
value: "true"
- name: ROX_AUTO_LOCK_PROCESS_BASELINES
value: "true"
- name: ROX_BASELINE_GENERATION_DURATION
value: "3m"
- name: ROX_TELEMETRY_STORAGE_KEY_V1
value: "R5fMyO9n0gibSGzOXtlP2qCFWCGb8uoW"
Comment thread
porridge marked this conversation as resolved.
scannerV4:
scannerComponent: Enabled
monitoring:
exposeEndpoint: Enabled
db:
resources:
requests:
cpu: "500m"
indexer:
resources:
requests:
cpu: "400m"
scaling:
autoScaling: Disabled
replicas: 1
matcher:
resources:
requests:
cpu: "400m"
scaling:
autoScaling: Disabled
replicas: 1
securedCluster:
namespace: stackrox
pauseReconciliation: true
spec:
sensor:
resources:
requests:
memory: "3Gi"
cpu: "2"
limits:
memory: "12Gi"
cpu: "4"
scannerV4:
monitoring:
exposeEndpoint: Enabled
overlays:
- apiVersion: v1
kind: Service
name: sensor
patches:
- path: spec.ports[-1]
value: |
name: monitoring
port: 9090
protocol: TCP
targetPort: 9090
- apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
name: sensor
patches:
- path: spec.ingress[-1]
value: |
ports:
- port: 9090
protocol: TCP
processBaselines:
autoLock: Enabled
customize:
envVars:
- name: MUTEX_WATCHDOG_TIMEOUT_SECS
value: "0"
- name: ROX_FAKE_KUBERNETES_WORKLOAD
value: "long-running"
- name: ROX_NETFLOW_BATCHING
value: "true"
- name: ROX_NETFLOW_CACHE_LIMITING
value: "true"
- name: ROX_FAKE_WORKLOAD_STORAGE
value: "/var/cache/stackrox/pebble.db"
63 changes: 31 additions & 32 deletions release/start-acs/start-acs.sh
Original file line number Diff line number Diff line change
@@ -1,24 +1,21 @@
#!/usr/bin/env bash
#
# Start ACS central and secured cluster and patch it so that it can be used for the long running cluster
# Deploy ACS (Central + SecuredCluster) to a long-running cluster using roxie.
# Most configuration is in roxie-config.yaml alongside this script.
#
# When running locally there should be a kubeconfig created.
# When running locally there are some environment variables that should be set
#
# export NAME=<cluster name>
# export KUBECONFIG=/tmp/${NAME}/kubeconfig
#
# export ROX_IMAGE_FLAVOR=RHACS_BRANDING
# export MAIN_IMAGE_TAG=<tag>
# export API_ENDPOINT=localhost:8000
# export STORAGE=pvc # Backing storage
# export STORAGE_CLASS=faster # Runs on an SSD type
# export STORAGE_SIZE=100 # 100G
# export MONITORING_SUPPORT=true # Runs monitoring
# export LOAD_BALANCER=lb
# export MONITORING_SUPPORT=true
# export ROX_ADMIN_USERNAME=admin
# export STACKROX_DIR=<stackrox dir>
# export PAGERDUTY_INTEGRATION_KEY=<PagerDuty release engineering integration key>
# export REGISTRY_USERNAME=<quay.io username>
# export REGISTRY_PASSWORD=<quay.io password>
#
# export GITHUB_OUTPUT=delete-log-github-output.txt
# export GITHUB_STEP_SUMMARY=delete-log-start-acs.txt
Expand All @@ -27,41 +24,43 @@ set -euo pipefail

SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"

# shellcheck source=/dev/null
source "${STACKROX_DIR}"/deploy/common/deploy.sh

if kubectl -n stackrox get deploy/central; then
gh_log error "Central is already running. It means that you are trying to deploy ACS to a cluster where it is already deployed. This can happen if you try to create a long-running cluster for a release candicate when the such a cluster already exists. Try looking for another workflow that created the cluster."
gh_log error "Central is already running. It means that you are trying to deploy ACS to a cluster where it is already deployed. This can happen if you try to create a long-running cluster for a release candidate when the such a cluster already exists. Try looking for another workflow that created the cluster."
exit 1
fi

gh_log notice "Deploying central..."
"${STACKROX_DIR}"/deploy/k8s/central.sh

gh_log notice "Forwarding central port..."
kubectl -n stackrox port-forward deploy/central 8000:8443 > /dev/null 2>&1 &
sleep 20

gh_log notice "Deploying sensor..."
"${STACKROX_DIR}"/deploy/k8s/sensor.sh

gh_log notice "Patching sensor deployment..."
kubectl -n stackrox patch deploy/sensor --patch-file="${SCRIPT_DIR}/patch-sensor.json"
gh_log notice "Deploying ACS with roxie..."
roxie_envrc="$(mktemp)"
Comment thread
porridge marked this conversation as resolved.
roxie deploy \
--verbose \
--tag "$MAIN_IMAGE_TAG" \
--config "${SCRIPT_DIR}/roxie-config.yaml" \
--envrc "$roxie_envrc" \
--early-readiness

gh_log notice "Patching central deployment..."
kubectl -n stackrox patch deploy/central --patch-file="${SCRIPT_DIR}/patch-central.json"

CENTRAL_IP=$(kubectl -n stackrox get svc/central-loadbalancer -o json | jq -r '.status.loadBalancer.ingress[0] | .ip // .hostname')
# shellcheck source=/dev/null
source "$roxie_envrc"
Comment thread
porridge marked this conversation as resolved.
rm -f "$roxie_envrc"
CENTRAL_IP="${API_ENDPOINT%:*}"
gh_log notice "CENTRAL_IP=$CENTRAL_IP"

API_ENDPOINT="${CENTRAL_IP}:443"
wait_for_central "${API_ENDPOINT}"

ROX_ADMIN_PASSWORD=$(cat "${STACKROX_DIR}"/deploy/k8s/central-deploy/password)
if [[ "${MONITORING_SUPPORT:-}" == "true" ]]; then
gh_log notice "Deploying monitoring stack..."
monitoring_values="$(mktemp)"
envsubst < "${STACKROX_DIR}/deploy/charts/monitoring/values.yaml" > "$monitoring_values"
helm dependency update "${STACKROX_DIR}/deploy/charts/monitoring"
helm upgrade -n stackrox --install stackrox-monitoring \
"${STACKROX_DIR}/deploy/charts/monitoring" \
--values "$monitoring_values" \
--set persistence.type=pvc \
--set exposure.type=none
rm -f "$monitoring_values"
fi

# Don't mask the password: masked values are not passed to the runner.
gh_output rox-password "$ROX_ADMIN_PASSWORD"
gh_output central-ip "$CENTRAL_IP"
gh_output ca-cert "$(base64 -w0 < "$ROX_CA_CERT_FILE")"

gh_log notice "Creating access-rhacs secret with the username and the password..."
kubectl -n stackrox create secret generic access-rhacs \
Expand Down
Loading
Loading