vector — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited vector (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
WizTelemetry Data Pipeline is an extension based on vector (https://vector.dev/) that provides the ability to collect, transform, and route observability data. It is a core dependency for other WizTelemetry extensions like Logging, Auditing, Events, and Notification.
REQUIRED: Complete all steps in order before generating InstallPlan.
#### Step 1: Get Available Clusters and Confirm Target
⚠️ CRITICAL: DO NOT proceed until target clusters are determined.
Step 1.1: Get available clusters
kubectl get clusters -o jsonpath='{.items[*].metadata.name}'Step 1.2: Determine target clusters
Ask user (if not specified):
Available clusters: host, dev
Which clusters do you want to deploy Vector to?#### Step 2: Get OpenSearch Endpoint and Credentials (MUST DO)
Ask user for (if not provided):
http://<node-ip>:30920 or https://opensearch.example.com:9200admin)DO NOT proceed to Step 3 until user provides both endpoint and credentials.
#### Step 3: Get Latest Vector Version (if not provided by user)
MUST do this to get the latest version:
kubectl get extensionversions -l kubesphere.io/extension-ref=vector -o jsonpath='{range .items[*]}{.spec.version}{"\n"}{end}' | sort -V | tail -1This outputs the latest version (e.g., 1.1.4). Note this down - you'll use it in the InstallPlan.
⚠️ IMPORTANT: Complete prerequisite steps (1-3) BEFORE this step.
⚠️ CRITICAL: InstallPlan `metadata.name` MUST be `vector`. DO NOT use any other name.
Based on your selections:
⚠️ CRITICAL: `config` field is YAML format. You MUST:
⚠️ CRITICAL: All placeholders MUST be replaced with actual values. DO NOT leave them as placeholders.
#### Template
apiVersion: kubesphere.io/v1alpha1
kind: InstallPlan
metadata:
name: vector
spec:
extension:
name: vector
version: <VECTOR_VERSION> # From Step 3
enabled: true
upgradeStrategy: Manual
config: |
agent:
sinks:
opensearch:
auth:
strategy: basic
user: <OPENSEARCH_USER>
password: <OPENSEARCH_PASSWORD>
endpoints:
- <OPENSEARCH_ENDPOINT>
clusterScheduling:
placement:
clusters:
- <TARGET_CLUSTERS>Replace placeholders:
<VECTOR_VERSION>: From Step 2 (e.g., 1.1.4)<OPENSEARCH_ENDPOINT>: User-provided endpoint (e.g., http://<node-ip>:30920)<OPENSEARCH_USER>: User-provided username (default: admin)<OPENSEARCH_PASSWORD>: User-provided password<TARGET_CLUSTERS>: User-confirmed cluster names⚠️ DO NOT generate InstallPlan until all placeholders have real values.
After applying InstallPlan, you MUST wait for deployment to complete:
# Wait for Vector pods to be ready (on each cluster)
kubectl wait --for=condition=Ready pods -n kubesphere-logging-system -l app.kubernetes.io/instance=vector --timeout=300s
# Verify deployment status
kubectl get pods -n kubesphere-logging-system -l app.kubernetes.io/instance=vectorShow deployment summary to user:
#### Enable Metrics Export
apiVersion: kubesphere.io/v1alpha1
kind: InstallPlan
metadata:
name: vector
spec:
extension:
name: vector
version: <VECTOR_VERSION> # From Step 2
enabled: true
upgradeStrategy: Manual
config: |
agent:
sinks:
opensearch:
auth:
strategy: basic
user: <OPENSEARCH_USER>
password: <OPENSEARCH_PASSWORD>
endpoints:
- <OPENSEARCH_ENDPOINT>
exportMetrics:
enabled: true
clusterScheduling:
placement:
clusters:
- <TARGET_CLUSTERS>| Parameter | Type | Default | Description |
|---|---|---|---|
agent.role | string | "Agent" | Role identifier |
agent.image.tag | string | "0.53.0-debian" | Vector image tag |
agent.resources.requests.cpu | string | "100m" | CPU request |
agent.resources.requests.memory | string | "100Mi" | Memory request |
agent.resources.limits.cpu | string | "2000m" | CPU limit |
agent.resources.limits.memory | string | "2000Mi" | Memory limit |
agent.service.ports | list | see values.yaml | Service ports |
agent.exportMetrics.enabled | bool | false | Enable metrics export |
| Parameter | Type | Required | Description |
|---|---|---|---|
agent.sinks.opensearch.endpoints | list | Yes | OpenSearch endpoint URLs |
agent.sinks.opensearch.auth.strategy | string | Yes | Authentication strategy (set to basic) |
agent.sinks.opensearch.auth.user | string | Yes | Username for authentication |
agent.sinks.opensearch.auth.password | string | Yes | Password for authentication |
agent.sinks.opensearch.tls.verify | bool | No | Enable TLS verification (default: false) |
Example:
agent:
sinks:
opensearch:
endpoints:
- http://<node-ip>:30920
auth:
strategy: basic
user: admin
password: admin
tls:
verify: falseIf Docker root directory is not /var/lib:
agent:
extraVolumes:
- name: docker-root
hostPath:
path: /path/to/docker
type: ''
extraVolumeMounts:
- name: docker-root
mountPath: /path/to/docker# View extension installation status
kubectl get installplan vector
# View extension version
kubectl get extensionversions -l kubesphere.io/extension-ref=vector# View all Vector pods
kubectl get pods -n kubesphere-logging-system -l app.kubernetes.io/name=vector
# View agent pods
kubectl get pods -n kubesphere-logging-system -l app.kubernetes.io/name=vector,app.kubernetes.io/component=agent# View agent logs
kubectl logs -n kubesphere-logging-system -l app.kubernetes.io/name=vector,app.kubernetes.io/component=agent --tail=100apiVersion: kubesphere.io/v1alpha1
kind: InstallPlan
metadata:
name: vector
spec:
extension:
name: vector
version: <VECTOR_VERSION>
enabled: true
upgradeStrategy: Manual
config: |
agent:
sinks:
opensearch:
auth:
strategy: basic
user: <OPENSEARCH_USER>
password: <OPENSEARCH_PASSWORD>
endpoints:
- <OPENSEARCH_ENDPOINT>
clusterScheduling:
placement:
clusters:
- <TARGET_CLUSTERS>Uninstall from all clusters:
kubectl delete installplan vectorUninstall from specific cluster:
To remove Vector from a specific cluster, update the InstallPlan by removing that cluster from clusterScheduling.placement.clusters:
apiVersion: kubesphere.io/v1alpha1
kind: InstallPlan
metadata:
name: vector
spec:
extension:
name: vector
version: <VECTOR_VERSION>
enabled: true
upgradeStrategy: Manual
config: |
agent:
sinks:
opensearch:
auth:
strategy: basic
user: <OPENSEARCH_USER>
password: <OPENSEARCH_PASSWORD>
endpoints:
- <OPENSEARCH_ENDPOINT>
clusterScheduling:
placement:
clusters:
- <REMAINING_CLUSTERS> # Remove the cluster you want to uninstall frominstallationMode: Multicluster:agent (tag: agent) is deployed to all selected member clusters# View Vector configmap
kubectl get configmap -n kubesphere-logging-system -l app.kubernetes.io/name=vector
# View specific config
kubectl get configmap -n kubesphere-logging-system vector-config -o yaml# Check if sinks are configured correctly
kubectl get secret -n kubesphere-logging-system vector-sinks -o yaml| Issue | Solution |
|---|---|
| Pods not starting | Check if OpenSearch is accessible |
| Data not flowing | Verify sink configuration and network connectivity |
| Agent not on member cluster | Check multicluster installation settings |
| Out of memory | Increase resource limits in configuration |
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.