Skip to content

NO-JIRA: vault KMS fake plugin#2164

Closed
gangwgr wants to merge 1 commit into
openshift:masterfrom
gangwgr:mock-vault-plugin
Closed

NO-JIRA: vault KMS fake plugin#2164
gangwgr wants to merge 1 commit into
openshift:masterfrom
gangwgr:mock-vault-plugin

Conversation

@gangwgr
Copy link
Copy Markdown
Contributor

@gangwgr gangwgr commented Apr 17, 2026

Add a mock Vault KMS v2 plugin for encryption e2e tests.

This introduces a lightweight mock KMS v2 plugin (mock-vault-plugin/) that mimics the vault-kube-kms command-line interface but performs local AES-256-GCM encryption with a static key. It allows the KMS encryption test infrastructure to validate the full API server encryption flow without requiring a real Vault Enterprise instance.

Summary by CodeRabbit

  • Tests
    • Added testing infrastructure for KMS encryption features, including a containerized mock vault-kube-kms plugin with flag compatibility, a CLI wrapper for translating between flag formats, build automation scripts, and SoftHSM configuration. This enables comprehensive testing of OpenShift KMS encryption integration scenarios.

@openshift-ci openshift-ci Bot requested review from p0lyn0mial and tkashem April 17, 2026 09:16
@openshift-ci
Copy link
Copy Markdown
Contributor

openshift-ci Bot commented Apr 17, 2026

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by: gangwgr
Once this PR has been reviewed and has the lgtm label, please assign dgrisonnet for approval. For more information see the Code Review Process.

The full list of commands accepted by this bot can be found here.

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Apr 17, 2026

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review

Walkthrough

Introduces a new mock vault KMS plugin implementation in test/library/encryption/kms/mock-vault-plugin/. The implementation provides a vault-kube-kms-compatible CLI wrapper that translates flags and executes the upstream mock-kms-plugin binary with baked-in SoftHSM configuration. Includes a multi-stage Dockerfile for container builds, Go wrapper code, build automation, and documentation.

Changes

Cohort / File(s) Summary
Container Build Infrastructure
test/library/encryption/kms/mock-vault-plugin/Dockerfile, test/library/encryption/kms/mock-vault-plugin/build-from-source.sh
Multi-stage Dockerfile compiling the Go wrapper binary and generating SoftHSM tokens; build script automates image construction and registry push with configurable registry/repo/tag/platform parameters.
Go Wrapper Application
test/library/encryption/kms/mock-vault-plugin/go.mod, test/library/encryption/kms/mock-vault-plugin/main.go
Go module and main program implementing vault-kube-kms CLI compatibility layer that translates --listen-address to -listen-addr, passes SoftHSM config path, and execs the upstream mock-kms-plugin binary.
Configuration & Documentation
test/library/encryption/kms/mock-vault-plugin/softhsm-config.json, test/library/encryption/kms/mock-vault-plugin/README.md
SoftHSM configuration file with library path and token credentials; README documenting flag translation behavior, build/deployment instructions, OpenShift integration example, and feature roadmap.

Sequence Diagram(s)

sequenceDiagram
    actor User
    participant Wrapper as vault-kube-kms<br/>(wrapper)
    participant Mock as mock-kms-plugin<br/>(upstream)
    participant SoftHSM as SoftHSM<br/>(token database)
    
    User->>Wrapper: invoke with vault-kube-kms flags<br/>(--listen-address, --timeout, etc.)
    Wrapper->>Wrapper: parse flags
    Wrapper->>Wrapper: translate --listen-address to -listen-addr<br/>inject -config-file-path
    Wrapper->>Mock: syscall.Exec() with translated args
    Mock->>Mock: initialize with SoftHSM config path
    Mock->>SoftHSM: load token & AES key config
    SoftHSM-->>Mock: token/key ready
    Mock-->>User: serve KMS requests
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

🚥 Pre-merge checks | ✅ 11 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (11 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'vault KMS fake plugin' accurately describes the main change: adding a mock Vault KMS plugin for testing encryption flows.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Stable And Deterministic Test Names ✅ Passed The pull request does not introduce any Ginkgo test files with test names.
Test Structure And Quality ✅ Passed PR adds mock Vault KMS plugin infrastructure but contains no Ginkgo test files, making the test code quality check not applicable.
Microshift Test Compatibility ✅ Passed PR adds mock KMS plugin utility, build tooling, and documentation but no Ginkgo e2e test files or patterns.
Single Node Openshift (Sno) Test Compatibility ✅ Passed PR adds mock Vault KMS plugin infrastructure (binary, container, build scripts, config) with no Ginkgo e2e tests.
Topology-Aware Scheduling Compatibility ✅ Passed PR adds only test utility code (Go wrapper, Dockerfile, build scripts, config) with no deployment manifests, operators, controllers, or scheduling constraints.
Ote Binary Stdout Contract ✅ Passed The mock-vault-plugin is a KMS service binary, not an OTE test binary. It runs as a container service called by the API server during encryption tests, not a test runner communicating with openshift-tests via JSON.
Ipv6 And Disconnected Network Test Compatibility ✅ Passed This pull request does not add any Ginkgo e2e tests. The files added are: a vault-kube-kms CLI wrapper (main.go), a Dockerfile for building a container image, a build script, a README with documentation, a go.mod module definition, and a SoftHSM configuration file. None of these contain Ginkgo test patterns (It(), Describe(), Context(), When(), etc.), so the IPv6 and disconnected network compatibility check is not applicable to this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 3

🧹 Nitpick comments (4)
test/library/encryption/kms/mock-vault-plugin/main.go (2)

128-136: Calling os.Exit(1) in the goroutine may race with graceful shutdown.

When a shutdown signal arrives, grpcService.Shutdown() calls GracefulStop(), which causes ListenAndServe() to return. However, the error returned by ListenAndServe() after a graceful stop is typically nil or a benign "server closed" error—not a fatal condition. Exiting with code 1 here could preempt the clean shutdown path.

♻️ Suggested fix: track server error via channel
+	errCh := make(chan error, 1)
 	go func() {
-		if err := grpcService.ListenAndServe(); err != nil {
-			fmt.Fprintf(os.Stderr, "gRPC server error: %v\n", err)
-			os.Exit(1)
-		}
+		errCh <- grpcService.ListenAndServe()
 	}()
 
-	<-ctx.Done()
-	grpcService.Shutdown()
+	select {
+	case err := <-errCh:
+		if err != nil {
+			fmt.Fprintf(os.Stderr, "gRPC server error: %v\n", err)
+			os.Exit(1)
+		}
+	case <-ctx.Done():
+		grpcService.Shutdown()
+	}
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@test/library/encryption/kms/mock-vault-plugin/main.go` around lines 128 -
136, The goroutine that runs grpcService.ListenAndServe currently calls
os.Exit(1) on any error which can race with graceful shutdown; change it to send
the returned error to a dedicated errCh (e.g., make errCh := make(chan error,1))
instead of exiting, then in the main routine select on ctx.Done() and errCh to
distinguish real Serve errors from normal shutdown, calling
grpcService.Shutdown() on ctx.Done() and only exit/non-zero when errCh yields an
actual fatal error; reference grpcService.ListenAndServe, grpcService.Shutdown,
and the new errCh in your changes.

141-150: os.Interrupt is redundant with syscall.SIGINT on Unix.

On Unix systems, os.Interrupt maps to SIGINT. Registering both is harmless but unnecessary.

♻️ Suggested fix
-	signal.Notify(signalChan, syscall.SIGTERM, syscall.SIGINT, os.Interrupt)
+	signal.Notify(signalChan, syscall.SIGTERM, syscall.SIGINT)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@test/library/encryption/kms/mock-vault-plugin/main.go` around lines 141 -
150, In withShutdownSignal, remove the redundant os.Interrupt from the
signal.Notify call (keep syscall.SIGTERM and syscall.SIGINT) so the function
registers only SIGTERM and SIGINT; update the signal.Notify invocation in the
withShutdownSignal function accordingly to avoid duplicate registration on Unix.
test/library/encryption/kms/mock-vault-plugin/go.mod (1)

1-1: Module path doesn't match the repository.

The module is declared as github.com/gangwgr/mock-vault-kms but it's being added to openshift/library-go. Consider using a path under the target repository to avoid import path confusion.

♻️ Suggested fix
-module github.com/gangwgr/mock-vault-kms
+module github.com/openshift/library-go/test/library/encryption/kms/mock-vault-plugin
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@test/library/encryption/kms/mock-vault-plugin/go.mod` at line 1, The module
path in go.mod ("module github.com/gangwgr/mock-vault-kms") does not match the
repository; update the module declaration in go.mod to a path under the target
repository (for example change the module line to a path under
openshift/library-go that reflects the package location) so imports resolve
correctly; edit the module line in go.mod to the repository-correct module path
and run `go mod tidy` to refresh module metadata (look for the module
declaration in go.mod to change).
test/library/encryption/kms/mock-vault-plugin/Dockerfile (1)

1-3: Consider running as non-root for defense in depth.

The static analysis tool flagged that the container runs as root by default. While this is a test-only mock plugin, running as non-root is a security best practice. With a scratch base, you can specify a numeric UID.

♻️ Suggested fix
 FROM scratch
+USER 65532:65532
 COPY mock-vault-kms /vault-kube-kms
 ENTRYPOINT ["/vault-kube-kms"]

Note: UID 65532 is commonly used as a "nonroot" user in distroless/minimal images. Ensure the socket path has appropriate permissions if this change is applied.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@test/library/encryption/kms/mock-vault-plugin/Dockerfile` around lines 1 - 3,
The image runs the mock-vault-kms binary as root by default; update the
Dockerfile to run as a non-root numeric UID (e.g. USER 65532) so /vault-kube-kms
executes unprivileged, and ensure the plugin’s socket path (the directory where
the plugin writes its socket) is owned and writable by that UID (adjust
ownership/permissions during build or have the binary create the socket with the
correct mode) so the plugin can still bind the socket when running as USER
65532.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@test/library/encryption/kms/mock-vault-plugin/build-from-source.sh`:
- Around line 1-9: The README refers to ./build-and-push.sh but the script in
the repo is named build-from-source.sh; fix this by either renaming
build-from-source.sh to build-and-push.sh (preserve executable bit and existing
variables like FULL_IMAGE and SCRIPT_DIR) or update the README to reference
build-from-source.sh (and any CI/job configs) so names match; ensure any calls
to the script (e.g., in CI or docs) are updated accordingly.

In `@test/library/encryption/kms/mock-vault-plugin/README.md`:
- Around line 54-56: The README references a non-existent script name; update
the invocation in README.md to use the actual script filename by replacing
occurrences of "./build-and-push.sh" with "./build-from-source.sh" so the
documented command matches the real script (look for the code block containing
./build-and-push.sh and change it to ./build-from-source.sh).
- Around line 60-62: Update the README example command to call the correct
script: replace the incorrect ./build-and-push.sh invocation with
./build-from-source.sh in the mock-vault-plugin README example (the block
showing REGISTRY=... IMAGE_NAME=... TAG=... ./build-and-push.sh) so the
documented example matches the actual script name.

---

Nitpick comments:
In `@test/library/encryption/kms/mock-vault-plugin/Dockerfile`:
- Around line 1-3: The image runs the mock-vault-kms binary as root by default;
update the Dockerfile to run as a non-root numeric UID (e.g. USER 65532) so
/vault-kube-kms executes unprivileged, and ensure the plugin’s socket path (the
directory where the plugin writes its socket) is owned and writable by that UID
(adjust ownership/permissions during build or have the binary create the socket
with the correct mode) so the plugin can still bind the socket when running as
USER 65532.

In `@test/library/encryption/kms/mock-vault-plugin/go.mod`:
- Line 1: The module path in go.mod ("module github.com/gangwgr/mock-vault-kms")
does not match the repository; update the module declaration in go.mod to a path
under the target repository (for example change the module line to a path under
openshift/library-go that reflects the package location) so imports resolve
correctly; edit the module line in go.mod to the repository-correct module path
and run `go mod tidy` to refresh module metadata (look for the module
declaration in go.mod to change).

In `@test/library/encryption/kms/mock-vault-plugin/main.go`:
- Around line 128-136: The goroutine that runs grpcService.ListenAndServe
currently calls os.Exit(1) on any error which can race with graceful shutdown;
change it to send the returned error to a dedicated errCh (e.g., make errCh :=
make(chan error,1)) instead of exiting, then in the main routine select on
ctx.Done() and errCh to distinguish real Serve errors from normal shutdown,
calling grpcService.Shutdown() on ctx.Done() and only exit/non-zero when errCh
yields an actual fatal error; reference grpcService.ListenAndServe,
grpcService.Shutdown, and the new errCh in your changes.
- Around line 141-150: In withShutdownSignal, remove the redundant os.Interrupt
from the signal.Notify call (keep syscall.SIGTERM and syscall.SIGINT) so the
function registers only SIGTERM and SIGINT; update the signal.Notify invocation
in the withShutdownSignal function accordingly to avoid duplicate registration
on Unix.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository: openshift/coderabbit/.coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: d25b8f93-1210-4aea-9c5c-5f7fb37cb4c3

📥 Commits

Reviewing files that changed from the base of the PR and between d2db42c and 112881d.

⛔ Files ignored due to path filters (1)
  • test/library/encryption/kms/mock-vault-plugin/go.sum is excluded by !**/*.sum
📒 Files selected for processing (5)
  • test/library/encryption/kms/mock-vault-plugin/Dockerfile
  • test/library/encryption/kms/mock-vault-plugin/README.md
  • test/library/encryption/kms/mock-vault-plugin/build-from-source.sh
  • test/library/encryption/kms/mock-vault-plugin/go.mod
  • test/library/encryption/kms/mock-vault-plugin/main.go

Comment on lines +1 to +9
#!/usr/bin/env bash
set -euo pipefail

REGISTRY="${REGISTRY:-quay.io}"
REPO="${REPO:-openshifttest}"
IMAGE_NAME="${IMAGE_NAME:-mock-kms-plugin-vault}"
TAG="${TAG:-latest}"
FULL_IMAGE="${REGISTRY}/${REPO}/${IMAGE_NAME}:${TAG}"
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Script name mismatch with README documentation.

The README references ./build-and-push.sh but this file is named build-from-source.sh. Either rename the script or update the README.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@test/library/encryption/kms/mock-vault-plugin/build-from-source.sh` around
lines 1 - 9, The README refers to ./build-and-push.sh but the script in the repo
is named build-from-source.sh; fix this by either renaming build-from-source.sh
to build-and-push.sh (preserve executable bit and existing variables like
FULL_IMAGE and SCRIPT_DIR) or update the README to reference
build-from-source.sh (and any CI/job configs) so names match; ensure any calls
to the script (e.g., in CI or docs) are updated accordingly.

Comment thread test/library/encryption/kms/mock-vault-plugin/README.md
Comment thread test/library/encryption/kms/mock-vault-plugin/README.md
// service so the KMS plugin lifecycle controller can be tested without a
// real Vault Enterprise instance.
//
// Reference: https://github.com/kubernetes/kms/tree/main/internal/plugins/_mock
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.

I would prefer to reuse https://github.com/kubernetes/kubernetes/tree/master/staging/src/k8s.io/kms/internal/plugins/_mock instead of creating our own mock.

is there a way to wrap the original mock into a new binary?

@gangwgr gangwgr force-pushed the mock-vault-plugin branch from 112881d to c8729c3 Compare April 17, 2026 12:32
Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 2

🧹 Nitpick comments (1)
test/library/encryption/kms/mock-vault-plugin/Dockerfile (1)

1-1: Pin base images instead of :latest for reproducible builds.

Lines 1 and 6 use mutable tags, which can change behavior without code changes and make failures hard to reproduce. Prefer explicit version tags (builder) and digest pinning (runtime image).

♻️ Suggested direction
-FROM golang:latest AS builder
+FROM golang:1.24.2 AS builder
...
-FROM quay.io/openshifttest/mock-kms-plugin:latest
+FROM quay.io/openshifttest/mock-kms-plugin@sha256:<pinned_digest>

Also applies to: 6-6

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@test/library/encryption/kms/mock-vault-plugin/Dockerfile` at line 1, The
Dockerfile uses mutable image tags (e.g., "FROM golang:latest AS builder") which
makes builds unreproducible; update the build stage and the runtime stage (the
second FROM at line 6) to use specific, immutable tags or digests (for example a
concrete Go version tag like "golang:1.20.7" for the builder and a versioned
image or digest for the runtime) so builds are reproducible and stability is
ensured; locate the "AS builder" stage and the later runtime FROM and replace
":latest" with explicit version tags or digests.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@test/library/encryption/kms/mock-vault-plugin/main.go`:
- Line 43: After calling flag.Parse() in main(), add a fast-fail check that
inspects flag.Args(); if len(flag.Args()) > 0 write a clear error message to
stderr and terminate with os.Exit(2) to reject unexpected positional arguments
(use flag.Parse(), flag.Args(), and os.Exit(2) to implement).

In `@test/library/encryption/kms/mock-vault-plugin/README.md`:
- Around line 13-30: The fenced code block containing the architecture diagram
(the triple-backtick block that begins with "Lifecycle controller passes Vault
flags" and ends with "SoftHSM / PKCS#11 encryption on unix socket") is missing a
language tag; add the language identifier `text` after the opening ``` so the
block becomes ```text to satisfy MD040 linting while leaving the diagram
contents unchanged.

---

Nitpick comments:
In `@test/library/encryption/kms/mock-vault-plugin/Dockerfile`:
- Line 1: The Dockerfile uses mutable image tags (e.g., "FROM golang:latest AS
builder") which makes builds unreproducible; update the build stage and the
runtime stage (the second FROM at line 6) to use specific, immutable tags or
digests (for example a concrete Go version tag like "golang:1.20.7" for the
builder and a versioned image or digest for the runtime) so builds are
reproducible and stability is ensured; locate the "AS builder" stage and the
later runtime FROM and replace ":latest" with explicit version tags or digests.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository: openshift/coderabbit/.coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 8bdbb20d-827e-49f6-a419-0518b23a2cd8

📥 Commits

Reviewing files that changed from the base of the PR and between 112881d and c8729c3.

📒 Files selected for processing (5)
  • test/library/encryption/kms/mock-vault-plugin/Dockerfile
  • test/library/encryption/kms/mock-vault-plugin/README.md
  • test/library/encryption/kms/mock-vault-plugin/build-from-source.sh
  • test/library/encryption/kms/mock-vault-plugin/go.mod
  • test/library/encryption/kms/mock-vault-plugin/main.go
✅ Files skipped from review due to trivial changes (2)
  • test/library/encryption/kms/mock-vault-plugin/go.mod
  • test/library/encryption/kms/mock-vault-plugin/build-from-source.sh

_ = flag.String("log-level", "info", "(ignored) Log level")
_ = flag.String("metrics-port", "8080", "(ignored) Metrics/health port")
_ = flag.Bool("disable-runtime-metrics", false, "(ignored) Disable Go runtime metrics")
flag.Parse()
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Fail fast on unexpected positional arguments.

Line 43 parses flags, but any extra positional args are silently ignored. This can hide misconfigured invocation parameters in test infra. Consider rejecting non-empty flag.Args() with exit code 2.

💡 Proposed fix
 flag.Parse()
+if len(flag.Args()) > 0 {
+	fmt.Fprintf(os.Stderr, "vault-kube-kms wrapper: unexpected positional args: %v\n", flag.Args())
+	os.Exit(2)
+}
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
flag.Parse()
flag.Parse()
if len(flag.Args()) > 0 {
fmt.Fprintf(os.Stderr, "vault-kube-kms wrapper: unexpected positional args: %v\n", flag.Args())
os.Exit(2)
}
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@test/library/encryption/kms/mock-vault-plugin/main.go` at line 43, After
calling flag.Parse() in main(), add a fast-fail check that inspects flag.Args();
if len(flag.Args()) > 0 write a clear error message to stderr and terminate with
os.Exit(2) to reject unexpected positional arguments (use flag.Parse(),
flag.Args(), and os.Exit(2) to implement).

Comment on lines +13 to +30
```
Lifecycle controller passes Vault flags
/vault-kube-kms (this wrapper)
--listen-address=unix://... → translates to -listen-addr
--vault-address=... → dropped
--transit-key=... → dropped
... → dropped
▼ syscall.Exec
/usr/local/bin/mock-kms-plugin (upstream Kubernetes mock)
-listen-addr=unix://...
-config-file-path=/etc/softhsm-config.json
SoftHSM / PKCS#11 encryption on unix socket
```
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Add a language to the fenced block to satisfy markdown linting.

Line 13 opens a fenced block without a language tag (MD040). Use text for this architecture diagram.

📝 Proposed fix
-```
+```text
 Lifecycle controller passes Vault flags
         │
         ▼
 /vault-kube-kms                              (this wrapper)
@@
 SoftHSM / PKCS#11 encryption on unix socket
</details>

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 markdownlint-cli2 (0.22.0)</summary>

[warning] 13-13: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

</details>

</details>

<details>
<summary>🤖 Prompt for AI Agents</summary>

Verify each finding against the current code and only fix it if needed.

In @test/library/encryption/kms/mock-vault-plugin/README.md around lines 13 -
30, The fenced code block containing the architecture diagram (the
triple-backtick block that begins with "Lifecycle controller passes Vault flags"
and ends with "SoftHSM / PKCS#11 encryption on unix socket") is missing a
language tag; add the language identifier text after the opening so the block becomestext to satisfy MD040 linting while leaving the diagram
contents unchanged.


</details>

<!-- fingerprinting:phantom:poseidon:hawk:226787d8-6535-4b83-9d1f-5d931752c947 -->

<!-- This is an auto-generated comment by CodeRabbit -->

@gangwgr gangwgr changed the title vault KMS fake plugin NO-JIRA: vault KMS fake plugin Apr 20, 2026
@openshift-ci-robot openshift-ci-robot added the jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. label Apr 20, 2026
@openshift-ci-robot
Copy link
Copy Markdown

@gangwgr: This pull request explicitly references no jira issue.

Details

In response to this:

Add a mock Vault KMS v2 plugin for encryption e2e tests.

This introduces a lightweight mock KMS v2 plugin (mock-vault-plugin/) that mimics the vault-kube-kms command-line interface but performs local AES-256-GCM encryption with a static key. It allows the KMS encryption test infrastructure to validate the full API server encryption flow without requiring a real Vault Enterprise instance.

Summary by CodeRabbit

  • Tests

  • Added a mock KMS plugin for testing encryption flows, plus tooling to build and publish its container image for test environments.

  • Documentation

  • Added comprehensive README documenting plugin behavior, accepted flags, build/run instructions, and how to deploy it for lifecycle testing.

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

@gangwgr gangwgr force-pushed the mock-vault-plugin branch from c8729c3 to cd6e791 Compare April 22, 2026 14:22

func main() {
listenAddr := flag.String("listen-address", "unix:///var/run/kmsplugin/kms.sock", "gRPC listen address")
configFile := flag.String("config-file-path", defaultConfigFile, "SoftHSM config file path")
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Plugin lifecycle is supposed to be pass Vault compatible arguments and it won't pass config-file-path. Can't we internalize this directly in the code? or my statement is far from reality?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

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.

@ardaguclu do we need to remove --config-file-path as a CLI flag and just hardcode the default path directly in the code?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Just hardcoding to that path is not enough. Wrapper image needs to prepare this config as well. So that consumer just passes vault flags.

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.

Agreed, updated

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

♻️ Duplicate comments (1)
test/library/encryption/kms/mock-vault-plugin/README.md (1)

13-13: ⚠️ Potential issue | 🟡 Minor

Add language tag to fenced code block.

The fenced code block containing the architecture diagram is missing a language specifier, which triggers a markdown linting warning (MD040).

📝 Proposed fix
-```
+```text
 Lifecycle controller passes Vault flags
         │
         ▼
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@test/library/encryption/kms/mock-vault-plugin/README.md` at line 13, The
fenced code block in README.md is missing a language tag causing MD040; update
the opening fence for the architecture diagram (the triple backticks that
precede the diagram) to include a language identifier such as text (e.g., change
``` to ```text) so the block is explicitly marked and the markdown lint warning
is resolved.
🧹 Nitpick comments (1)
test/library/encryption/kms/mock-vault-plugin/Dockerfile (1)

1-1: Pin image versions for reproducible builds.

Both the builder (golang:latest) and base image (quay.io/openshifttest/mock-kms-plugin:latest) use the :latest tag, which can cause non-deterministic builds when upstream images change.

📌 Proposed fix to pin specific versions
-FROM golang:latest AS builder
+FROM golang:1.23 AS builder
 WORKDIR /workspace
 COPY main.go go.mod ./
 RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags="-s -w" -o /vault-kube-kms .

-FROM quay.io/openshifttest/mock-kms-plugin:latest
+FROM quay.io/openshifttest/mock-kms-plugin:v1.0.0
 COPY --from=builder /vault-kube-kms /vault-kube-kms
 ENTRYPOINT ["/vault-kube-kms"]

Note: Replace v1.0.0 with the actual tagged version of the base image.

Also applies to: 6-6

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@test/library/encryption/kms/mock-vault-plugin/Dockerfile` at line 1, The
Dockerfile uses unpinned images (FROM golang:latest and the base image
quay.io/openshifttest/mock-kms-plugin:latest) which causes non-reproducible
builds; update the Dockerfile to replace these :latest tags with specific,
tested image tags (e.g., golang:1.20.7 or your approved Go version and the
concrete quay.io/openshifttest/mock-kms-plugin:vX.Y.Z) so builds are
deterministic—change the FROM lines accordingly and ensure any related CI/build
docs are updated to reference the pinned tags used.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Duplicate comments:
In `@test/library/encryption/kms/mock-vault-plugin/README.md`:
- Line 13: The fenced code block in README.md is missing a language tag causing
MD040; update the opening fence for the architecture diagram (the triple
backticks that precede the diagram) to include a language identifier such as
text (e.g., change ``` to ```text) so the block is explicitly marked and the
markdown lint warning is resolved.

---

Nitpick comments:
In `@test/library/encryption/kms/mock-vault-plugin/Dockerfile`:
- Line 1: The Dockerfile uses unpinned images (FROM golang:latest and the base
image quay.io/openshifttest/mock-kms-plugin:latest) which causes
non-reproducible builds; update the Dockerfile to replace these :latest tags
with specific, tested image tags (e.g., golang:1.20.7 or your approved Go
version and the concrete quay.io/openshifttest/mock-kms-plugin:vX.Y.Z) so builds
are deterministic—change the FROM lines accordingly and ensure any related
CI/build docs are updated to reference the pinned tags used.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository: openshift/coderabbit/.coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 509ee8cf-59ea-4658-9a69-e707ea0d4599

📥 Commits

Reviewing files that changed from the base of the PR and between c8729c3 and cd6e791.

📒 Files selected for processing (5)
  • test/library/encryption/kms/mock-vault-plugin/Dockerfile
  • test/library/encryption/kms/mock-vault-plugin/README.md
  • test/library/encryption/kms/mock-vault-plugin/build-from-source.sh
  • test/library/encryption/kms/mock-vault-plugin/go.mod
  • test/library/encryption/kms/mock-vault-plugin/main.go
✅ Files skipped from review due to trivial changes (3)
  • test/library/encryption/kms/mock-vault-plugin/go.mod
  • test/library/encryption/kms/mock-vault-plugin/build-from-source.sh
  • test/library/encryption/kms/mock-vault-plugin/main.go

Copy link
Copy Markdown
Member

@bertinatto bertinatto left a comment

Choose a reason for hiding this comment

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

The entrypoint should be able to run the following params for the lifecycle code, however, it's currently returning an error because it can't read a softhsm file:

$ mock-vault-plugin ❯ podman run --rm -it quay.io/bertinatto/mock-kms-plugin-vault:latest
    -listen-address=unix:///tmp/kmsplugin/kms-1.sock \
    -vault-address=vault-address \
    -vault-namespace=vault-namespace \
    -transit-mount=transit-mount \
    -transit-key=transit-key \
    -log-level=debug-extended \
    -approle-role-id=1234-1234-1234 \
    -approle-secret-id-path=/tmp/secret-id
vault-kube-kms wrapper: translating Vault flags → upstream mock
vault-kube-kms wrapper: exec /usr/local/bin/mock-kms-plugin [-listen-addr=unix:///var/run/kmsplugin/kms.sock -config-file-path=/etc/softhsm-config.json]
panic: failed to create remote service: could not open config file: /etc/softhsm-config.json: open /etc/softhsm-config.json: no such file or directory

goroutine 1 [running]:
main.main()
	/workspace/kms/internal/plugins/_mock/plugin.go:48 +0x205
bash: -listen-address=unix:///tmp/kmsplugin/kms-1.sock: No such file or directory

COPY main.go go.mod ./
RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags="-s -w" -o /vault-kube-kms .

FROM quay.io/openshifttest/mock-kms-plugin:latest
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Should we use our standard CI base images instead?

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.

we can use, but it provides the upstream mock binary and SoftHSM library that our wrapper exec's into our image so we don't want want to installation of softshm that's why I didn't use


The wrapper binary (`/vault-kube-kms`) accepts all vault-kube-kms flags, translates
the relevant ones, and `exec`s the upstream `mock-kms-plugin` binary. This allows the
OpenShift plugin lifecycle controller to use this image as a drop-in `VaultImage`
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

nit: for now there's is no plugin lifecycle controller

- Wrapper is a static Go binary (~2MB, no CGO)
- Base image is the upstream `quay.io/openshifttest/mock-kms-plugin` (Alpine + SoftHSM)
- Encryption is handled by upstream mock via SoftHSM/PKCS#11
- Init container is still needed to unpack SoftHSM tokens
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

How does this work? Will be able to simply call the wrapper or there needs to be some preprocessing?

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.

no preprocessing needed — the wrapper can be called directly.

## Running as VaultImage (lifecycle controller)

The lifecycle controller reads `VaultImage` from the APIServer CRD and
automatically writes a static pod manifest to each control-plane node:
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

The plugin lifecycle will create sidecar containers that run alongside the apiservers, it won't write static pod manifests.

}
}
}
}'
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

This doesn't currently work because we don't have the api yet.

@gangwgr gangwgr force-pushed the mock-vault-plugin branch from cd6e791 to a223fc8 Compare April 23, 2026 05:25
@gangwgr
Copy link
Copy Markdown
Contributor Author

gangwgr commented Apr 23, 2026

@bertinatto updated pr

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 2

♻️ Duplicate comments (2)
test/library/encryption/kms/mock-vault-plugin/README.md (2)

13-30: ⚠️ Potential issue | 🟡 Minor

Add a language tag to the diagram block.

This still triggers MD040. text is enough here.

📝 Proposed fix
-```
+```text
 Operator passes Vault flags via sidecar injection
         │
         ▼
 /vault-kube-kms                              (this wrapper)
@@
 SoftHSM / PKCS#11 encryption on unix socket
</details>

<details>
<summary>🤖 Prompt for AI Agents</summary>

Verify each finding against the current code and only fix it if needed.

In @test/library/encryption/kms/mock-vault-plugin/README.md around lines 13 -
30, The fenced diagram block in the README (the code block that starts with
"Operator passes Vault flags via sidecar injection" and contains lines like
"/vault-kube-kms") is missing a language tag and triggers MD040; update that
fenced code block by adding the language tag "text" after the opening triple
backticks (i.e., change totext) so the linter accepts the diagram.


</details>

---

`14-14`: _⚠️ Potential issue_ | _🟡 Minor_

**Mark the VaultImage flow as planned, not current.**

The diagram and the `oc patch` example read like a working integration, but this path is not available yet. Please label it as future work or remove the copy-pasteable example for now.
 

<details>
<summary>📝 Proposed wording</summary>

```diff
-Operator passes Vault flags via sidecar injection
+Planned flow once VaultImage integration exists
```

```diff
-## Running as VaultImage
+## Planned VaultImage integration

-The operator reads `VaultImage` from the APIServer CRD and injects the
-KMS plugin as a sidecar into API server pods:
+Once the API/operator wiring exists, the intended flow is:
```
</details>


Also applies to: 88-106

<details>
<summary>🤖 Prompt for AI Agents</summary>

```
Verify each finding against the current code and only fix it if needed.

In `@test/library/encryption/kms/mock-vault-plugin/README.md` at line 14, The
README currently presents the "VaultImage" flow (the line "Operator passes Vault
flags via sidecar injection" plus the oc patch example and diagram) as an active
integration; update the wording to mark this flow as planned/future work (e.g.,
prepend "Planned:" or "Future work:" to the heading/section and add a short note
that the oc patch example is not yet functional) or remove the copy-pasteable oc
patch example entirely; locate the section by searching for the "Operator passes
Vault flags via sidecar injection" text, the "VaultImage" flow references, and
the oc patch snippet in the README and change the language accordingly.
```

</details>

</blockquote></details>

</blockquote></details>

<details>
<summary>🤖 Prompt for all review comments with AI agents</summary>

Verify each finding against the current code and only fix it if needed.

Inline comments:
In @test/library/encryption/kms/mock-vault-plugin/Dockerfile:

  • Around line 1-4: The Dockerfile currently forces an amd64 binary in the
    builder stage by setting GOOS=linux GOARCH=amd64 in the RUN that produces
    /vault-kube-kms, which will fail on arm64 nodes; update the RUN in the builder
    stage (the line that runs go build and produces /vault-kube-kms) to build for
    the image's target platform instead — either remove the GOARCH/GOOS overrides so
    the binary is built for the build environment or wire in the build-time platform
    via build args/BUILDPLATFORM and use that to set GOOS/GOARCH (or use docker
    buildx multi-platform builds) so the produced /vault-kube-kms matches the node
    architecture.
  • Around line 8-21: The SoftHSM token generation stage uses alpine:latest which
    may differ from the runtime image and cause ABI incompatibilities; update the
    Dockerfile to use the runtime image as the base for the keygen stage by
    replacing "FROM alpine:latest AS softhsm-keygen" with "FROM
    quay.io/openshifttest/mock-kms-plugin:latest AS softhsm-keygen", then adjust or
    remove the apk/softhsm/opensc installs if the runtime image already provides
    them, preserving the token creation steps that write /var/lib/softhsm/tokens and
    /etc/softhsm2.conf so the COPY --from=softhsm-keygen targets remain valid.

Duplicate comments:
In @test/library/encryption/kms/mock-vault-plugin/README.md:

  • Around line 13-30: The fenced diagram block in the README (the code block that
    starts with "Operator passes Vault flags via sidecar injection" and contains
    lines like "/vault-kube-kms") is missing a language tag and triggers MD040;
    update that fenced code block by adding the language tag "text" after the
    opening triple backticks (i.e., change totext) so the linter accepts the
    diagram.
  • Line 14: The README currently presents the "VaultImage" flow (the line
    "Operator passes Vault flags via sidecar injection" plus the oc patch example
    and diagram) as an active integration; update the wording to mark this flow as
    planned/future work (e.g., prepend "Planned:" or "Future work:" to the
    heading/section and add a short note that the oc patch example is not yet
    functional) or remove the copy-pasteable oc patch example entirely; locate the
    section by searching for the "Operator passes Vault flags via sidecar injection"
    text, the "VaultImage" flow references, and the oc patch snippet in the README
    and change the language accordingly.

</details>

<details>
<summary>🪄 Autofix (Beta)</summary>

Fix all unresolved CodeRabbit comments on this PR:

- [ ] <!-- {"checkboxId": "4b0d0e0a-96d7-4f10-b296-3a18ea78f0b9"} --> Push a commit to this branch (recommended)
- [ ] <!-- {"checkboxId": "ff5b1114-7d8c-49e6-8ac1-43f82af23a33"} --> Create a new PR with the fixes

</details>

---

<details>
<summary>ℹ️ Review info</summary>

<details>
<summary>⚙️ Run configuration</summary>

**Configuration used**: Repository: openshift/coderabbit/.coderabbit.yaml

**Review profile**: CHILL

**Plan**: Pro Plus

**Run ID**: `875df7d1-9dc4-43f2-90ed-057b9e880fe0`

</details>

<details>
<summary>📥 Commits</summary>

Reviewing files that changed from the base of the PR and between cd6e7910c8b3fb7911b9edc461f297f06f092e11 and a223fc8d5435c88b1e1786220594a4951559da59.

</details>

<details>
<summary>📒 Files selected for processing (7)</summary>

* `test/library/encryption/kms/mock-vault-plugin/Dockerfile`
* `test/library/encryption/kms/mock-vault-plugin/README.md`
* `test/library/encryption/kms/mock-vault-plugin/build-from-source.sh`
* `test/library/encryption/kms/mock-vault-plugin/go.mod`
* `test/library/encryption/kms/mock-vault-plugin/main.go`
* `test/library/encryption/kms/mock-vault-plugin/mock-vault-plugin`
* `test/library/encryption/kms/mock-vault-plugin/softhsm-config.json`

</details>

<details>
<summary>✅ Files skipped from review due to trivial changes (3)</summary>

* test/library/encryption/kms/mock-vault-plugin/go.mod
* test/library/encryption/kms/mock-vault-plugin/softhsm-config.json
* test/library/encryption/kms/mock-vault-plugin/build-from-source.sh

</details>

<details>
<summary>🚧 Files skipped from review as they are similar to previous changes (1)</summary>

* test/library/encryption/kms/mock-vault-plugin/main.go

</details>

</details>

<!-- This is an auto-generated comment by CodeRabbit for review status -->

Comment thread test/library/encryption/kms/mock-vault-plugin/Dockerfile Outdated
Comment thread test/library/encryption/kms/mock-vault-plugin/Dockerfile Outdated
@gangwgr gangwgr force-pushed the mock-vault-plugin branch from a223fc8 to 3ddf8aa Compare April 23, 2026 05:54
@openshift-ci
Copy link
Copy Markdown
Contributor

openshift-ci Bot commented Apr 23, 2026

@gangwgr: all tests passed!

Full PR test history. Your PR dashboard.

Details

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here.

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

♻️ Duplicate comments (1)
test/library/encryption/kms/mock-vault-plugin/Dockerfile (1)

20-27: ⚠️ Potential issue | 🟠 Major

Run the final image as non-root.

Line 20-Line 27 defines no USER, so the container defaults to root. Please drop privileges in the final stage and adjust file permissions accordingly.

🔧 Proposed hardening change
 FROM quay.io/openshifttest/mock-kms-plugin:latest

 COPY softhsm-config.json /etc/softhsm-config.json
 COPY --from=softhsm-keygen /var/lib/softhsm/tokens /var/lib/softhsm/tokens
 COPY --from=softhsm-keygen /etc/softhsm2.conf /etc/softhsm2.conf

 COPY --from=builder /vault-kube-kms /vault-kube-kms
+RUN chgrp -R 0 /var/lib/softhsm /etc/softhsm2.conf /vault-kube-kms && \
+    chmod -R g=u /var/lib/softhsm /etc/softhsm2.conf /vault-kube-kms
+USER 1001
 ENTRYPOINT ["/vault-kube-kms"]
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@test/library/encryption/kms/mock-vault-plugin/Dockerfile` around lines 20 -
27, The final Dockerfile stage runs as root by default; create a non-root user
(e.g., vaultkms) and switch to it before the ENTRYPOINT, ensuring all copied
files/executables (/vault-kube-kms, /var/lib/softhsm/tokens, /etc/softhsm2.conf,
/etc/softhsm-config.json) are chowned and have appropriate restrictive
permissions so the non-root user can read/execute them; update ownership and
permissions in the final stage (using chown/chmod on those unique artifacts) and
add a USER vaultkms line prior to ENTRYPOINT ["/vault-kube-kms"] so the
container drops privileges.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Duplicate comments:
In `@test/library/encryption/kms/mock-vault-plugin/Dockerfile`:
- Around line 20-27: The final Dockerfile stage runs as root by default; create
a non-root user (e.g., vaultkms) and switch to it before the ENTRYPOINT,
ensuring all copied files/executables (/vault-kube-kms, /var/lib/softhsm/tokens,
/etc/softhsm2.conf, /etc/softhsm-config.json) are chowned and have appropriate
restrictive permissions so the non-root user can read/execute them; update
ownership and permissions in the final stage (using chown/chmod on those unique
artifacts) and add a USER vaultkms line prior to ENTRYPOINT ["/vault-kube-kms"]
so the container drops privileges.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository: openshift/coderabbit/.coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 7f845ad8-44c7-4fab-a6cc-96a1ad875669

📥 Commits

Reviewing files that changed from the base of the PR and between a223fc8 and 3ddf8aa.

📒 Files selected for processing (7)
  • test/library/encryption/kms/mock-vault-plugin/Dockerfile
  • test/library/encryption/kms/mock-vault-plugin/README.md
  • test/library/encryption/kms/mock-vault-plugin/build-from-source.sh
  • test/library/encryption/kms/mock-vault-plugin/go.mod
  • test/library/encryption/kms/mock-vault-plugin/main.go
  • test/library/encryption/kms/mock-vault-plugin/mock-vault-plugin
  • test/library/encryption/kms/mock-vault-plugin/softhsm-config.json
✅ Files skipped from review due to trivial changes (3)
  • test/library/encryption/kms/mock-vault-plugin/go.mod
  • test/library/encryption/kms/mock-vault-plugin/softhsm-config.json
  • test/library/encryption/kms/mock-vault-plugin/build-from-source.sh
🚧 Files skipped from review as they are similar to previous changes (1)
  • test/library/encryption/kms/mock-vault-plugin/main.go


FROM quay.io/openshifttest/mock-kms-plugin:latest

COPY softhsm-config.json /etc/softhsm-config.json
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

This is exactly what I suggested. Thanks. It is better to check that everything works properly.

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.

it is working, but we have to check with @bertinatto changes

@p0lyn0mial
Copy link
Copy Markdown
Contributor

an alternative to this PR #2173

@gangwgr
Copy link
Copy Markdown
Contributor Author

gangwgr commented Apr 23, 2026

/close

@openshift-ci openshift-ci Bot closed this Apr 23, 2026
@openshift-ci
Copy link
Copy Markdown
Contributor

openshift-ci Bot commented Apr 23, 2026

@gangwgr: Closed this PR.

Details

In response to this:

/close

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

jira/valid-reference Indicates that this PR references a valid Jira ticket of any type.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants