<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[samip dave's DevOps blog]]></title><description><![CDATA[samip dave's DevOps blog]]></description><link>https://samipdave-devops.hashnode.dev</link><generator>RSS for Node</generator><lastBuildDate>Sat, 07 Nov 2026 11:47:52 GMT</lastBuildDate><atom:link href="https://samipdave-devops.hashnode.dev/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[SBOM generation commands]]></title><description><![CDATA[Now the generated sbom.xml file is not in human redable format so we will upload it in dependency-track tool which in starting we have run using docker…]]></description><link>https://samipdave-devops.hashnode.dev/sbom-generation-commands</link><guid isPermaLink="true">https://samipdave-devops.hashnode.dev/sbom-generation-commands</guid><dc:creator><![CDATA[samip dave]]></dc:creator><pubDate>Tue, 14 Oct 2025 18:51:35 GMT</pubDate><content:encoded><![CDATA[<pre><code class="lang-plaintext">docker run -d -p 8880:8080 --name dependency-track -v dependency-track:/data dependencytrack/bundled
</code></pre>
<pre><code class="lang-plaintext">then if its node based project then do npm install so it will download all dependency

npm install
</code></pre>
<pre><code class="lang-plaintext">Its node based project so need to install cyclonedx to generate SBOM so we install it 

sudo npm install -g cyclonedx-bom
</code></pre>
<pre><code class="lang-plaintext">now to generate SBOm from package.json to sbom.xml do

cyclonedx-bom -o bom.xml
</code></pre>
<p>Now the generated sbom.xml file is not in human redable format so we will upload it in dependency-track tool which in starting we have run using docker container.</p>
<h2 id="heading-command-for-generate-sbom-in-jenkins-pipeline">command for generate sbom in jenkins pipeline</h2>
<pre><code class="lang-plaintext">syft dir:. -o cyclonedx-json &gt; sbom.json
Ye command current directory ke packages scan karke sbom.json file banata hai in CycloneDX format.

Or ALternative

trivy fs --format cyclonedx --output sbom.json .

Command to generate and SBOM and scan in jenkins pipeline
Generate SBOM
syft dir:. -o cyclonedx-json &gt; sbom.json
Scan SBOM / Vulnerabilities
grype sbom:sbom.json

(Alternative tools)

Using Trivy for both:
trivy fs --format cyclonedx --output sbom.json .
trivy sbom sbom.json
</code></pre>
<p>/</p>
<h3 id="heading-for-sonar-scanning-commands-for-jenkins-pipeline">for sonar-scanning commands for jenkins pipeline</h3>
<pre><code class="lang-plaintext">🔹 For Maven Project
mvn sonar:sonar \
  -Dsonar.projectKey=your_project_key \
  -Dsonar.host.url=http://your-sonarqube-server:9000 \
  -Dsonar.login=your_token

🔹 For Gradle Project

./gradlew sonarqube \
  -Dsonar.projectKey=your_project_key \
  -Dsonar.host.url=http://your-sonarqube-server:9000 \
  -Dsonar.login=your_token

🔹 For Generic / Other Projects (using Sonar Scanner CLI)

sonar-scanner \
  -Dsonar.projectKey=your_project_key \
  -Dsonar.sources=. \
  -Dsonar.host.url=http://your-sonarqube-server:9000 \
  -Dsonar.login=your_token

✅ Short tip:
Use sonar-scanner for non-Maven/Gradle projects — bas token aur URL sahi do.
</code></pre>
<h3 id="heading-for-owasp-dependency-scan">for Owasp dependency scan</h3>
<pre><code class="lang-plaintext">🔹 For CLI (Generic Projects)
dependency-check.sh --project "MyProject" --scan . --format HTML --out reports/

🔹 For Maven Projects
mvn org.owasp:dependency-check-maven:check

🔹 For Gradle Projects
./gradlew dependencyCheckAnalyze


✅ Short tip:
Output report reports/dependency-check-report.html ya target/dependency-check-report.html mein milta hai.
</code></pre>
<h3 id="heading-for-sca-software-composition-analysis-tools">For SCA <strong>(Software Composition Analysis)</strong> tools</h3>
<pre><code class="lang-plaintext">🔹 Using Trivy (lightweight &amp; popular)
trivy fs . --scanners vuln,secret,license -f table -o sca-report.txt

👉 Scans your source code/dependencies for vulnerabilities, secrets, and license issues.

🔹 Using Syft + Grype combo
syft dir:. -o cyclonedx-json &gt; sbom.json
grype sbom:sbom.json -o table &gt; sca-report.txt

👉 Syft creates SBOM, Grype scans it for vulnerabilities

🔹 Using OWASP Dependency-Check (for Maven/Gradle)
mvn org.owasp:dependency-check-maven:check

and for GRADLE
./gradlew dependencyCheckAnalyze

✅ Short tip:
Syft + Grype or Trivy = modern, fast SCA tools;
OWASP Dependency-Check = traditional Java-based SCA.
</code></pre>
<h3 id="heading-for-trufflehog-use">for trufflehog Use</h3>
<pre><code class="lang-plaintext">Here are the short commands for TruffleHog (for secret scanning) 👇

🔹 Scan Local Directory
trufflehog filesystem .

🔹 Scan a Git Repository (local or remote)
trufflehog git file:///path/to/repo


or

trufflehog git https://github.com/your-org/your-repo.git

🔹 Scan with Output Report
trufflehog filesystem . --json &gt; trufflehog-report.json


✅ Short tip:
Use TruffleHog to detect secrets, keys, tokens etc. in code or commit history — works great in CI/CD pipelines like Jenkins too.
</code></pre>
<h3 id="heading-owasp-zap-dast-scanning">owasp Zap DAST scanning</h3>
<h3 id="heading-quick-active-scan-cli">🔹 <strong>Quick Active Scan (CLI)</strong></h3>
<pre><code class="lang-plaintext">zap.sh -cmd -quickurl http://your-target-url -quickout zap-report.html
</code></pre>
<p>(Windows ke liye:)</p>
<pre><code class="lang-plaintext">zap.bat -cmd -quickurl http://your-target-url -quickout zap-report.html
</code></pre>
<hr />
<h3 id="heading-baseline-scan-recommended-for-cicd-like-jenkins">🔹 <strong>Baseline Scan (recommended for CI/CD like Jenkins)</strong></h3>
<pre><code class="lang-plaintext">zap-baseline.py -t http://your-target-url -r zap-baseline-report.html
</code></pre>
<hr />
<h3 id="heading-full-active-scan">🔹 <strong>Full Active Scan</strong></h3>
<pre><code class="lang-plaintext">zap-full-scan.py -t http://your-target-url -r zap-fullscan-report.html
</code></pre>
<hr />
<p>✅ <strong>Short tip:</strong></p>
<ul>
<li><p><strong>Baseline scan</strong> → safe (no attack, passive check)</p>
</li>
<li><p><strong>Full scan</strong> → aggressive (tests vulnerabilities deeply)</p>
</li>
<li><p>Reports usually save as HTML (viewable in Jenkins artifacts).</p>
</li>
</ul>
<h5 id="heading-you-said">You said:</h5>
<p><a target="_blank" href="http://zap-full-scan.py">zap-full-scan.py</a> this .py file we need to instal or it is auto added while installing tool ?</p>
<h6 id="heading-chatgpt-said">ChatGPT said:</h6>
<p>Good question 👏</p>
<p>When you install <strong>OWASP ZAP</strong>, those Python scripts like <a target="_blank" href="http://zap-full-scan.py"><code>zap-full-scan.py</code></a>, <a target="_blank" href="http://zap-baseline.py"><code>zap-baseline.py</code></a>, and <a target="_blank" href="http://zap-api-scan.py"><code>zap-api-scan.py</code></a> are <strong>automatically included</strong> — you <strong>don’t need to install them separately</strong> ✅</p>
<p>Here’s how it works:</p>
<ul>
<li><p>These scripts come bundled with the <strong>official ZAP Docker image</strong> or the <strong>ZAP installation package</strong>.</p>
</li>
<li><p>If you’re using <strong>ZAP via Docker (recommended for CI/CD)</strong> → you can run them directly, e.g. 👇</p>
<pre><code class="lang-plaintext">  docker run -t owasp/zap2docker-stable zap-full-scan.py -t http://your-target-url -r report.html
</code></pre>
</li>
<li><p>If you installed <strong>ZAP locally</strong>, they’ll be found inside your ZAP install directory, for example:</p>
<pre><code class="lang-plaintext">  /usr/share/zaproxy/
</code></pre>
<p>  or</p>
<pre><code class="lang-plaintext">  C:\Program Files\OWASP\Zed Attack Proxy\
</code></pre>
</li>
</ul>
<hr />
<p>✅ <strong>Short summary:</strong><br />No need to install <a target="_blank" href="http://zap-full-scan.py"><code>zap-full-scan.py</code></a> separately — it’s part of OWASP ZAP (especially in Docker image or full installation).</p>
<h5 id="heading-you-said-1">You said:</h5>
<p>there is few scan types in owasp zap whats that something like spider scan and other</p>
<h6 id="heading-chatgpt-said-1">ChatGPT said:</h6>
<p>Great question 👍 — OWASP ZAP (Zed Attack Proxy) has <strong>multiple scan types</strong>, each serving a different purpose in the DAST process.<br />Here’s a <strong>short and clear breakdown in Hinglish + English</strong> 👇</p>
<hr />
<h3 id="heading-1-spider-scan">🕷️ <strong>1. Spider Scan</strong></h3>
<ul>
<li><p><strong>Purpose:</strong> Crawls the target website to discover all URLs, links, and parameters.</p>
</li>
<li><p><strong>Think of it as:</strong> “Site map banata hai” before scanning.</p>
</li>
<li><p><strong>Command example:</strong></p>
<pre><code class="lang-plaintext">  zap-cli spider http://your-target-url
</code></pre>
</li>
</ul>
<hr />
<h3 id="heading-2-active-scan">⚡ <strong>2. Active Scan</strong></h3>
<ul>
<li><p><strong>Purpose:</strong> Actively attacks discovered URLs to find vulnerabilities (SQLi, XSS, etc.).</p>
</li>
<li><p><strong>Think of it as:</strong> “Actual penetration test” part.</p>
</li>
<li><p><strong>Command example:</strong></p>
<pre><code class="lang-plaintext">  zap-cli active-scan http://your-target-url
</code></pre>
</li>
</ul>
<hr />
<h3 id="heading-3-passive-scan">🧭 <strong>3. Passive Scan</strong></h3>
<ul>
<li><p><strong>Purpose:</strong> Analyzes HTTP traffic <strong>without attacking</strong> — safe scan.</p>
</li>
<li><p><strong>Think of it as:</strong> “Observation only, no damage.”</p>
</li>
<li><p><strong>Automatically runs</strong> whenever ZAP is proxying traffic.</p>
</li>
</ul>
<hr />
<h3 id="heading-4-ajax-spider">📑 <strong>4. AJAX Spider</strong></h3>
<ul>
<li><p><strong>Purpose:</strong> Special spider that can crawl <strong>JavaScript-heavy (AJAX / SPA)</strong> apps (e.g., React, Angular).</p>
</li>
<li><p><strong>Useful for:</strong> Modern web apps where normal spider misses dynamic links.</p>
</li>
<li><p><strong>Command example:</strong></p>
<pre><code class="lang-plaintext">  zap-cli ajax-spider http://your-target-url
</code></pre>
</li>
</ul>
<hr />
<h3 id="heading-5-api-scan">🧩 <strong>5. API Scan</strong></h3>
<ul>
<li><p><strong>Purpose:</strong> Scans APIs (OpenAPI/Swagger/GraphQL).</p>
</li>
<li><p><strong>Command example:</strong></p>
<pre><code class="lang-plaintext">  zap-api-scan.py -t http://your-api/swagger.json -f openapi -r api-report.html
</code></pre>
</li>
</ul>
<hr />
<p>✅ <strong>Quick Summary Table:</strong></p>
<div class="hn-table">
<table>
<thead>
<tr>
<td>Scan Type</td><td>Purpose (Short)</td><td>Attack?</td><td>Best For</td></tr>
</thead>
<tbody>
<tr>
<td>Spider</td><td>Find all URLs/links</td><td>❌ No</td><td>Any site</td></tr>
<tr>
<td>Passive Scan</td><td>Analyze traffic only</td><td>❌ No</td><td>Safe scan</td></tr>
<tr>
<td>Active Scan</td><td>Test vulnerabilities</td><td>✅ Yes</td><td>Security testing</td></tr>
<tr>
<td>AJAX Spider</td><td>Crawl JavaScript-heavy apps</td><td>❌ No</td><td>SPAs</td></tr>
<tr>
<td>API Scan</td><td>Test API endpoints (Swagger/OpenAPI)</td><td>✅ Yes</td><td>APIs</td></tr>
</tbody>
</table>
</div><h3 id="heading-we-have-diff-command-for-each-in-cicd-jenkins-pipeline-or-single-command-will-do-all">we have diff command for each in cicd jenkins pipeline or single command will do all ?</h3>
<h3 id="heading-option-1-single-command-recommended-for-cicd">🔹 <strong>Option 1: Single Command (Recommended for CI/CD)</strong></h3>
<p>If you just want a <strong>complete scan (Spider + Active + Passive)</strong> automatically —<br />use <strong>ZAP’s ready-made scripts</strong> like these 👇</p>
<h4 id="heading-baseline-scan-safe-quick-passive-only">✅ <strong>Baseline scan (safe, quick, passive only)</strong></h4>
<pre><code class="lang-plaintext">zap-baseline.py -t http://your-target-url -r zap-baseline-report.html
</code></pre>
<ul>
<li><p>Does <strong>Spider + Passive Scan</strong></p>
</li>
<li><p>Safe for CI — no active attacks</p>
</li>
</ul>
<h4 id="heading-full-scan-complete-dast">✅ <strong>Full scan (complete DAST)</strong></h4>
<pre><code class="lang-plaintext">zap-full-scan.py -t http://your-target-url -r zap-fullscan-report.html
</code></pre>
<ul>
<li><p>Does <strong>Spider + Active + Passive Scan</strong></p>
</li>
<li><p>Recommended for nightly or staging scans</p>
</li>
</ul>
<p>👉 <strong>So yes</strong>, these <code>.py</code> scripts are <strong>all-in-one commands</strong> — no need to run each scan type separately in CI/CD.</p>
<hr />
<h3 id="heading-option-2-individual-commands-advanced-custom-flow">🔹 <strong>Option 2: Individual Commands (Advanced / Custom Flow)</strong></h3>
<p>If you want more control (for example, separate stages in Jenkins), you can run them manually:</p>
<pre><code class="lang-plaintext">zap-cli spider http://your-target-url
zap-cli active-scan http://your-target-url
zap-cli report -o zap-report.html -f html
</code></pre>
<p>But this is rarely needed unless you’re doing very fine-grained orchestration.</p>
<hr />
<p>✅ <strong>Short Summary (Hinglish mein):</strong></p>
<ul>
<li><p><strong>CI/CD mein ek hi command kaafi hai</strong> → <a target="_blank" href="http://zap-baseline.py"><code>zap-baseline.py</code></a> (safe) ya <a target="_blank" href="http://zap-full-scan.py"><code>zap-full-scan.py</code></a> (deep scan).</p>
</li>
<li><p><strong>Alag commands tabhi chahiye</strong> jab tum scan flow customize karna chahte ho (manual spider, selective attack, etc.).</p>
</li>
</ul>
<h3 id="heading-what-possibility-scan-result-it-will-give-us-in-output-means-what-main-check-it-will-cover">what possibility scan result it will give us in output means what main check it will cover</h3>
<p>Let’s break down what <strong>OWASP ZAP scan results</strong> actually cover — i.e., <em>what kinds of issues or checks you’ll see in the output report</em> (HTML, XML, JSON, etc.).</p>
<hr />
<h2 id="heading-owasp-zap-scan-output-main-checks-covered">⚡ <strong>OWASP ZAP Scan Output – Main Checks Covered</strong></h2>
<h3 id="heading-1-authentication-amp-session-issues">🔹 <strong>1. Authentication &amp; Session Issues</strong></h3>
<ul>
<li><p>Missing or weak login protection</p>
</li>
<li><p>Session ID exposed in URL or cookies</p>
</li>
<li><p>Insecure cookie flags (<code>HttpOnly</code>, <code>Secure</code>, <code>SameSite</code>) missing</p>
</li>
<li><p>Predictable session tokens</p>
</li>
</ul>
<hr />
<h3 id="heading-2-input-validation-injection-attacks">🔹 <strong>2. Input Validation / Injection Attacks</strong></h3>
<ul>
<li><p><strong>SQL Injection</strong></p>
</li>
<li><p><strong>Cross-Site Scripting (XSS)</strong> – reflected, stored, or DOM-based</p>
</li>
<li><p><strong>Command Injection</strong> or <strong>Path Traversal</strong></p>
</li>
<li><p><strong>LDAP / XML / NoSQL Injection</strong> (if applicable)</p>
</li>
</ul>
<hr />
<h3 id="heading-3-cross-site-request-forgery-csrf">🔹 <strong>3. Cross-Site Request Forgery (CSRF)</strong></h3>
<ul>
<li><p>Detects forms or endpoints missing CSRF tokens</p>
</li>
<li><p>Checks for weak anti-CSRF implementation</p>
</li>
</ul>
<hr />
<h3 id="heading-4-security-headers-missing">🔹 <strong>4. Security Headers Missing</strong></h3>
<ul>
<li><p>Missing headers like:</p>
<ul>
<li><p><code>X-Frame-Options</code></p>
</li>
<li><p><code>X-Content-Type-Options</code></p>
</li>
<li><p><code>Content-Security-Policy</code></p>
</li>
<li><p><code>Strict-Transport-Security</code></p>
</li>
</ul>
</li>
<li><p>These headers prevent clickjacking, MIME sniffing, and other attacks</p>
</li>
</ul>
<hr />
<h3 id="heading-5-sensitive-data-exposure">🔹 <strong>5. Sensitive Data Exposure</strong></h3>
<ul>
<li><p>Checks for:</p>
<ul>
<li><p>Information leakage (e.g., stack traces, debug info)</p>
</li>
<li><p>Hardcoded secrets or API keys in responses</p>
</li>
<li><p>Exposed server banners (<code>Server: Apache/2.4.7</code>, etc.)</p>
</li>
<li><p>HTTP instead of HTTPS links</p>
</li>
</ul>
</li>
</ul>
<hr />
<h3 id="heading-6-broken-access-control">🔹 <strong>6. Broken Access Control</strong></h3>
<ul>
<li><p>Endpoints accessible without authentication</p>
</li>
<li><p>Privilege escalation vulnerabilities</p>
</li>
<li><p>Hidden URLs or admin paths exposed</p>
</li>
</ul>
<hr />
<h3 id="heading-7-insecure-communication">🔹 <strong>7. Insecure Communication</strong></h3>
<ul>
<li><p>HTTP pages instead of HTTPS</p>
</li>
<li><p>Weak SSL/TLS configuration (if configured with SSL plugin)</p>
</li>
</ul>
<hr />
<h3 id="heading-8-miscellaneous-checks">🔹 <strong>8. Miscellaneous Checks</strong></h3>
<ul>
<li><p>Redirects without validation</p>
</li>
<li><p>Open redirects</p>
</li>
<li><p>Form autocomplete enabled</p>
</li>
<li><p>Misconfigured or open APIs</p>
</li>
</ul>
<hr />
<h2 id="heading-report-structure-typical-output">📊 <strong>Report Structure (Typical Output)</strong></h2>
<p>When you generate a ZAP report (<code>zap-fullscan-report.html</code>), you’ll see sections like:</p>
<ul>
<li><p><strong>Alert Summary</strong> → High, Medium, Low, Informational</p>
</li>
<li><p><strong>Alert Details</strong> → Description, URL affected, parameter, evidence, and fix recommendation</p>
</li>
<li><p><strong>Statistics</strong> → Number of requests, time taken, scan progress</p>
</li>
</ul>
<hr />
<p>✅ <strong>Short summary (Hinglish mein):</strong><br />OWASP ZAP tumhe mostly <strong>web app ke real-world security flaws</strong> batata hai — jaise:</p>
<blockquote>
<p>XSS, SQLi, missing headers, CSRF, session flaws, info leaks, insecure cookies, access control issues, etc.</p>
</blockquote>
<hr />
<p>Would you like me to give you a <strong>sample Jenkins HTML report snippet</strong> (how it looks when attached as artifact)?</p>
<h5 id="heading-you-said-2">You said:</h5>
<p>ok then what is this command and when to use if you have given then is it wrong ? zap-cli --api-key=$ZAP_API quick-scan --self-contained <a target="_blank" href="http://staging.my-app.com">http://staging.my-app.com</a></p>
<h6 id="heading-chatgpt-said-2">ChatGPT said:</h6>
<p>Ah yes 😄 — let me clarify this properly. That command you wrote is <strong>not wrong</strong>, it’s just a <strong>different way of running ZAP scans</strong> using the <code>zap-cli</code> tool instead of <a target="_blank" href="http://zap-full-scan.py"><code>zap-full-scan.py</code></a> or <a target="_blank" href="http://zap-baseline.py"><code>zap-baseline.py</code></a>.</p>
<hr />
<h3 id="heading-command-you-gave">🔹 <strong>Command You Gave</strong></h3>
<pre><code class="lang-plaintext">zap-cli --api-key=$ZAP_API quick-scan --self-contained http://staging.my-app.com
</code></pre>
<h3 id="heading-breakdown">🔹 <strong>Breakdown</strong></h3>
<ul>
<li><p><code>zap-cli</code> → A Python CLI wrapper around ZAP (lets you control ZAP from command line easily)</p>
</li>
<li><p><code>--api-key=$ZAP_API</code> → Authenticates to ZAP API (needed if ZAP is running in daemon mode)</p>
</li>
<li><p><code>quick-scan</code> → Runs a <strong>simple scan</strong> (spider + active scan in one go)</p>
</li>
<li><p><code>--self-contained</code> → Launches a ZAP daemon in the background, runs the scan, and shuts it down automatically</p>
</li>
<li><p><a target="_blank" href="http://staging.my-app.com"><code>http://staging.my-app.com</code></a> → Target URL</p>
</li>
</ul>
<hr />
<h3 id="heading-when-to-use">🔹 <strong>When to Use</strong></h3>
<ul>
<li><p><strong>CI/CD / Jenkins pipelines</strong> → when you want a <strong>lightweight scan</strong> without manually starting ZAP GUI or daemon</p>
</li>
<li><p><strong>Quick checks / staging deployments</strong> → gives a faster overview of vulnerabilities</p>
</li>
<li><p><strong>Not for deep production testing</strong> → use <a target="_blank" href="http://zap-full-scan.py"><code>zap-full-scan.py</code></a> for thorough, full DAST</p>
</li>
</ul>
<hr />
<h3 id="heading-key-differences-vs-zap-full-scanpyhttpzap-full-scanpy">🔹 <strong>Key Differences vs</strong> <a target="_blank" href="http://zap-full-scan.py"><code>zap-full-scan.py</code></a></h3>
<div class="hn-table">
<table>
<thead>
<tr>
<td>Feature</td><td><code>zap-cli quick-scan</code></td><td><a target="_blank" href="http://zap-full-scan.py"><code>zap-full-scan.py</code></a></td></tr>
</thead>
<tbody>
<tr>
<td>Setup</td><td>Lightweight, auto-launch</td><td>Full ZAP scan script</td></tr>
<tr>
<td>Scan Depth</td><td>Quick scan (basic spider + active)</td><td>Deep scan, more checks, optional plugins</td></tr>
<tr>
<td>CI/CD Friendly</td><td>Yes</td><td>Yes</td></tr>
<tr>
<td>Customization</td><td>Limited</td><td>More options (AJAX Spider, API scan, scan policy, etc.)</td></tr>
</tbody>
</table>
</div><hr />
<p>✅ <strong>Short Summary:</strong></p>
<ul>
<li><p><strong>Not wrong</strong> — it’s a valid, quick way to scan in Jenkins.</p>
</li>
<li><p><strong>Use</strong> <code>zap-cli quick-scan</code> → for fast, self-contained scans.</p>
</li>
<li><p><strong>Use</strong> <a target="_blank" href="http://zap-full-scan.py"><code>zap-full-scan.py</code></a> → for thorough, production/staging scans with more coverage.</p>
</li>
</ul>
]]></content:encoded></item><item><title><![CDATA[Strimzii - Kafka - Keda]]></title><description><![CDATA[Kafka cluster already chal raha hai (on-prem / Kubernetes me operator ke through / external service)? Aapki consumer application (jo Kafka se data read…]]></description><link>https://samipdave-devops.hashnode.dev/strimzii-kafka-keda</link><guid isPermaLink="true">https://samipdave-devops.hashnode.dev/strimzii-kafka-keda</guid><dc:creator><![CDATA[samip dave]]></dc:creator><pubDate>Mon, 22 Sep 2025 18:17:47 GMT</pubDate><content:encoded><![CDATA[<h1 id="heading-this-article-is-for-creating-kafka-cluster-using-kubernetes-specific-tool-for-kafka-strimzi-and-scalling-it-with-event-driven">This article is for Creating Kafka cluster using kubernetes specific tool for kafka Strimzi and scalling it with event driven.</h1>
<h1 id="heading-humara-setup-ka-idea">🔹 Humara Setup ka idea</h1>
<ol>
<li><p>Kafka cluster already chal raha hai (on-prem / Kubernetes me operator ke through / external service)?</p>
</li>
<li><p>Aapki <strong>consumer application</strong> (jo Kafka se data read karti hai) Kubernetes me deploy hai?</p>
</li>
<li><p>Topic ke partitions ka count aapne decide kar liya hai (maan lo 15 jaise humne discuss kiya tha)?  </p>
</li>
</ol>
<p>    🔹 KEDA ke liye zaroori cheez</p>
<p>    KEDA scaling ka kaam karega <strong>consumer lag</strong> ke basis par.<br />    Iske liye hume KEDA ke scaler me ye info deni padti hai:</p>
<ul>
<li><p><strong>Kafka bootstrap servers</strong> (kafka:9092 jaisa)</p>
</li>
<li><p><strong>Consumer group id</strong> (jo aapki app use karti hai)</p>
</li>
<li><p><strong>Topic name</strong> (rides)</p>
</li>
<li><p><strong>Thresholds</strong> (kitna lag hone par pods scale up/down honge)</p>
</li>
<li><p><strong>Max replicas</strong> (jo partitions ke barabar ya uske kareeb hoga)</p>
</li>
</ul>
<hr />
<h3 id="heading-flow-kya-hoga">🔹 Flow kya hoga</h3>
<ol>
<li><p>Aapke paas ek <strong>Deployment</strong> hoga consumer app ka.</p>
</li>
<li><p>Us Deployment par KEDA ek <strong>ScaledObject</strong> lagayega.</p>
</li>
</ol>
<p>KEDA lag monitor karega aur Deployment ke replicas adjust karega.  </p>
<p><strong>Pehle Kafka ke basics clear karte hain (deployment aur design related), fir uspe KEDA ko chipka denge.</strong></p>
<h1 id="heading-step-1-kafka-ke-core-concepts-recap">🟢 Step 1: Kafka ke Core Concepts (recap)</h1>
<ol>
<li><p><strong>Topic</strong> → ek subject jisme messages store hote hain (e.g. <code>rides</code>)</p>
</li>
<li><p><strong>Partition</strong> → topic ke andar parallel lanes (processing ke liye)</p>
</li>
<li><p><strong>Broker</strong> → ek Kafka server (jo partitions ko store karta hai)</p>
</li>
<li><p><strong>Replication</strong> → safety ke liye har partition ke multiple copies alag brokers par</p>
</li>
<li><p><strong>Consumer Group</strong> → ek app/worker set jo topic ka data process karta hai</p>
</li>
</ol>
<hr />
<h1 id="heading-step-2-kafka-kubernetes-me-kaise-deploy-hota-hai">🟢 Step 2: Kafka Kubernetes me kaise deploy hota hai?</h1>
<p>Kafka ko manually deploy karna mushkil hai, isliye log <strong>Operators</strong> use karte hain. Do common hain:</p>
<ul>
<li><p><strong>Strimzi Kafka Operator</strong> (open source, k8s native)</p>
</li>
<li><p><strong>Confluent Operator</strong> (enterprise)</p>
</li>
</ul>
<p>Sabse simple aur popular → <strong>Strimzi</strong>.</p>
<hr />
<h1 id="heading-step-3-minimal-strimzi-kafka-cluster-example">🟢 Step 3: Minimal Strimzi Kafka Cluster Example</h1>
<pre><code class="lang-plaintext"># Kafka Cluster
apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
metadata:
  name: my-cluster
spec:
  kafka:
    version: 3.6.0
    replicas: 3  # 3 brokers
    listeners:
      - name: plain
        port: 9092
        type: internal
        tls: false
    config:
      offsets.topic.replication.factor: 3
      transaction.state.log.replication.factor: 3
      transaction.state.log.min.isr: 2
      log.message.format.version: "3.6"
    storage:
      type: ephemeral
  zookeeper:
    replicas: 3
    storage:
      type: ephemeral
  entityOperator:
    topicOperator: {}
    userOperator: {}
</code></pre>
<p><strong>🟢 Step 4: Kafka Topic Create with Strimzi</strong></p>
<pre><code class="lang-plaintext">apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaTopic
metadata:
  name: rides
  labels:
    strimzi.io/cluster: my-cluster
spec:
  partitions: 15         # parallelism
  replicas: 3            # safety
  config:
    retention.ms: 604800000   # 7 days
</code></pre>
<p><strong>🟢 Step 5: Kafka User (Consumer App ke liye)</strong></p>
<pre><code class="lang-plaintext">apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaUser
metadata:
  name: my-consumer
  labels:
    strimzi.io/cluster: my-cluster
spec:
  authentication:
    type: scram-sha-512
  authorization:
    type: simple
    acls:
      - resource:
          type: topic
          name: rides
          patternType: literal
        operation: Read
      - resource:
          type: group
          name: my-consumer-group
          patternType: literal
        operation: Read
</code></pre>
<h1 id="heading-step-6-application-consumer-side">🟢 Step 6: Application Consumer Side</h1>
<ul>
<li><p>Consumer app ko deploy karte waqt aapko dena hoga:</p>
<ul>
<li><p><code>bootstrapServers</code> = <code>my-cluster-kafka-bootstrap:9092</code></p>
</li>
<li><p><code>topic</code> = <code>rides</code></p>
</li>
<li><p><a target="_blank" href="http://group.id"><code>group.id</code></a> = <code>my-consumer-group</code></p>
</li>
<li><p><code>username/password</code> = <code>my-consumer</code> KafkaUser se</p>
</li>
</ul>
</li>
</ul>
<hr />
<h2 id="heading-abhi-tak-result">✅ Abhi tak result</h2>
<ul>
<li><p>Aapke paas ek <strong>Kafka cluster</strong> (3 brokers + Zookeeper)</p>
</li>
<li><p>Ek <strong>topic rides (15 partitions)</strong></p>
</li>
<li><p>Ek <strong>Kafka user (my-consumer)</strong> jo us topic se messages consume kar sakta hai</p>
</li>
</ul>
<hr />
<h1 id="heading-ia"> </h1>
<p>**Now We are getting Question in our mind jo pehle hona chaye tha par abhi huva but no worry  </p>
<p>ye strimzi kya hai , kyu use kar rhe hai and uske use kar ne k fayde kya hai wo batado and any other information of strizi you think i need to know fir keda par aate hai**</p>
<h1 id="heading-ia-1"> </h1>
<h1 id="heading-strimzi-kya-hai">🔹 Strimzi kya hai?</h1>
<ul>
<li><p><strong>Strimzi = Kafka Operator for Kubernetes</strong></p>
</li>
<li><p>Ek <strong>open-source CNCF project</strong> hai.</p>
</li>
<li><p>Ye Kubernetes ke CRDs (Custom Resource Definitions) use karke Kafka manage karta hai.</p>
</li>
<li><p>Matlab aap Kafka cluster ko asani se <code>yaml</code> likh kar bana, update aur manage kar sakte ho.</p>
</li>
</ul>
<hr />
<h1 id="heading-strimzi-kyu-use-karte-hain-fayde">🔹 Strimzi kyu use karte hain? (fayde)</h1>
<ol>
<li><p><strong>Easy Kafka Deployment</strong></p>
<ul>
<li><p>Normally Kafka setup karna tough hai (brokers, Zookeeper, configs).</p>
</li>
<li><p>Strimzi ke saath aap ek simple YAML likho → Kafka cluster deploy ho jata hai.</p>
</li>
</ul>
</li>
<li><p><strong>Self-healing &amp; Auto management</strong></p>
<ul>
<li><p>Agar koi broker crash ho jaye → Strimzi automatically naya broker bana deta hai.</p>
</li>
<li><p>Broker IDs, configs, networking sab handle ho jata hai.</p>
</li>
</ul>
</li>
<li><p><strong>Topic &amp; User as Kubernetes objects</strong></p>
<ul>
<li><p>KafkaTopic aur KafkaUser resources ke through topics/users manage kar sakte ho (YAML se hi).</p>
</li>
<li><p>ACLs (permissions) bhi declarative tareeke se define kar sakte ho.</p>
</li>
</ul>
</li>
<li><p><strong>Scaling &amp; Rolling Updates</strong></p>
<ul>
<li><p>Brokers ko scale up/down karna YAML change karke easy ho jata hai.</p>
</li>
<li><p>Config updates rolling fashion me apply hote hain → downtime kam.</p>
</li>
</ul>
</li>
<li><p><strong>Security</strong></p>
<ul>
<li>TLS encryption, SASL authentication, ACL-based authorization → sab built-in.</li>
</ul>
</li>
<li><p><strong>Monitoring</strong></p>
<ul>
<li>Prometheus &amp; Grafana integration ke saath aata hai → metrics aur monitoring easy ho jati hai.</li>
</ul>
</li>
</ol>
<hr />
<h1 id="heading-strimzi-ke-crds-jo-aap-use-karoge">🔹 Strimzi ke CRDs (jo aap use karoge)</h1>
<ul>
<li><p><strong>Kafka</strong> → cluster deploy karne ke liye</p>
</li>
<li><p><strong>KafkaTopic</strong> → topics manage karne ke liye</p>
</li>
<li><p><strong>KafkaUser</strong> → users manage karne ke liye</p>
</li>
<li><p><strong>KafkaConnect</strong> → Kafka Connect cluster banane ke liye</p>
</li>
<li><p><strong>KafkaMirrorMaker</strong> → cross-cluster replication ke liye</p>
</li>
</ul>
<hr />
<h1 id="heading-kab-use-kare-strimzi">🔹 Kab use kare Strimzi?</h1>
<ul>
<li><p>Agar aap <strong>Kubernetes pe Kafka run kar rahe ho</strong> → Strimzi best option hai.</p>
</li>
<li><p>Agar aap cloud managed Kafka (jaise Confluent Cloud, AWS MSK, Azure EventHub) use karte ho → tab Strimzi ki zarurat nahi.</p>
</li>
</ul>
<hr />
<h1 id="heading-limitations-bhi-hain">🔹 Limitations bhi hain</h1>
<ul>
<li><p>Ye <strong>Kubernetes dependent</strong> hai (on-prem bare metal servers pe directly use nahi hoga).</p>
</li>
<li><p>Agar aap already ek cloud provider ka managed Kafka le rahe ho (jaise AWS MSK), to Strimzi ki zarurat nahi.</p>
</li>
<li><p>Large scale clusters me tuning karna thoda complex ho sakta hai (storage, networking).</p>
</li>
</ul>
<hr />
<h2 id="heading-to-summarize">✅ To Summarize</h2>
<ul>
<li><p><strong>Strimzi</strong> ek Kubernetes operator hai jo Kafka ko deploy/manage karna easy banata hai.</p>
</li>
<li><p>Fayde: easy deployment, self-healing, security, monitoring, declarative config, YAML-based management.</p>
</li>
<li><h1 id="heading-ye-aapko-kafka-ko-kubernetes-native-banata-hai">Ye aapko Kafka ko <strong>Kubernetes-native</strong> banata hai.</h1>
</li>
</ul>
<p>    NEXT  </p>
<p>    Aap Strimzi use karke Kafka cluster banayenge → topic banayenge (<code>rides</code>, 15 partitions) → consumer app deploy karenge → aur uske upar <strong>KEDA</strong> lagayenge taaki pods auto-scale ho.</p>
<hr />
<h1 id="heading-ab-keda-ka-role">🔹 Ab KEDA ka role</h1>
<ol>
<li><p>KEDA Kafka ke <strong>consumer lag (pending messages)</strong> monitor karega.</p>
</li>
<li><p>Agar lag high hai → consumer app ke pods (Deployment replicas) <strong>scale up</strong>.</p>
</li>
<li><p>Agar lag kam hai → pods <strong>scale down</strong> (even 1 tak).</p>
</li>
<li><p>Iska max limit aap decide karenge (jo partitions count se zyada nahi hona chahiye).</p>
</li>
</ol>
<hr />
<h1 id="heading-keda-ke-liye-do-main-yaml-hote-hain">🔹 KEDA ke liye do main YAML hote hain</h1>
<ol>
<li><p><strong>Deployment</strong> → aapki consumer app</p>
<ul>
<li><p>Ye Kafka se messages consume karegi</p>
</li>
<li><p>Normal k8s Deployment jaisa hi hoga</p>
</li>
</ul>
</li>
<li><p><strong>ScaledObject (KEDA ka resource)</strong></p>
<ul>
<li><p>Isme define hota hai scaling ka trigger (Kafka lag)</p>
</li>
<li><p>Isme set karte ho: bootstrap server, topic, consumer group, lag threshold, min/max replicas</p>
</li>
</ul>
</li>
</ol>
<hr />
<h1 id="heading-flow-example">🔹 Flow Example</h1>
<p>    Maan lo:</p>
<ul>
<li><p>Topic = <code>rides</code></p>
</li>
<li><p>Partitions = 15</p>
</li>
<li><p>Consumer group = <code>my-consumer-group</code></p>
</li>
<li><p>Aap chahte ho pods min=1 se max=15 tak auto-scale karein</p>
</li>
</ul>
<p>    To jab traffic zyada hoga → pods 15 tak jayenge<br />    Jab traffic kam hoga → pods 1 tak aa jayenge<br />    Kafka ka load efficiently process hoga.</p>
<h1 id="heading-ia-2"> </h1>
<p>Now: <strong>Deployment + KEDA ScaledObject ka YAML</strong>  </p>
<h1 id="heading-step-1-consumer-app-deployment">🟢 Step 1: Consumer App Deployment</h1>
<p>Ye aapka Kafka consumer app hai jo topic <code>rides</code> se read karega. (Yahan example image liya hai, aap apni app ka image daloge)</p>
<pre><code class="lang-plaintext">apiVersion: apps/v1
kind: Deployment
metadata:
  name: kafka-consumer
  labels:
    app: kafka-consumer
spec:
  replicas: 1   # KEDA isko manage karega, aap manually replicas mat badhao
  selector:
    matchLabels:
      app: kafka-consumer
  template:
    metadata:
      labels:
        app: kafka-consumer
    spec:
      containers:
        - name: consumer
          image: myrepo/kafka-consumer:latest   # 👈 apna image
          env:
            - name: BOOTSTRAP_SERVERS
              value: "my-cluster-kafka-bootstrap:9092"  # Strimzi bootstrap service
            - name: TOPIC
              value: "rides"
            - name: GROUP_ID
              value: "my-consumer-group"
            - name: USERNAME
              valueFrom:
                secretKeyRef:
                  name: my-consumer   # Strimzi KafkaUser se aaya secret
                  key: sasl.jaas.config
            # ⚠️ Upar ka secret config aapke auth method ke hisaab se change hoga
</code></pre>
<h1 id="heading-step-2-keda-scaledobject">🟢 Step 2: KEDA ScaledObject</h1>
<p>Ye KEDA resource hai jo lag dekh ke replicas adjust karega.</p>
<pre><code class="lang-plaintext">apiVersion: keda.sh/v1alpha1
kind: ScaledObject
metadata:
  name: kafka-consumer-scaledobject
spec:
  scaleTargetRef:
    name: kafka-consumer   # 👈 Ye Deployment ka naam
  minReplicaCount: 1
  maxReplicaCount: 15      # 👈 Topic partitions = 15
  triggers:
    - type: kafka
      metadata:
        bootstrapServers: my-cluster-kafka-bootstrap:9092
        consumerGroup: my-consumer-group
        topic: rides
        lagThreshold: "100"   # 👈 Agar 100 pending messages per partition se zyada hue to scale karega
</code></pre>
<h1 id="heading-flow-ab-hoga">🔹 Flow ab hoga:</h1>
<ol>
<li><p>Kafka me jab backlog (lag) &gt; 100 messages per partition ho → KEDA pods increase karega.</p>
</li>
<li><p>Max pods = 15 (kyunki partitions = 15) → har pod ek partition le lega.</p>
</li>
<li><p>Jab backlog 0 ho → pods wapas <strong>1</strong> tak reduce ho jayenge.</p>
</li>
</ol>
<hr />
<h1 id="heading-notes">🔹 Notes</h1>
<ul>
<li><p>Aapko <strong>KEDA install karna hoga</strong> (<code>helm install kedacore/keda</code>)</p>
</li>
<li><p>LagThreshold ko tune karna hoga (traffic ke hisaab se)</p>
</li>
<li><p>Agar aap partitions future me badhate ho → <code>maxReplicaCount</code> bhi accordingly update karna hoga</p>
</li>
<li><p>Auth config (SASL/PLAIN, TLS) aapke KafkaUser se aayega (jo Strimzi banayega)</p>
</li>
</ul>
]]></content:encoded></item><item><title><![CDATA[some use full command]]></title><description><![CDATA[To restart all images. docker restart $(docker ps -aq) To remove all Docker images in one shot docker rmi -f $(docker images -q) remove all containers…]]></description><link>https://samipdave-devops.hashnode.dev/some-use-full-command</link><guid isPermaLink="true">https://samipdave-devops.hashnode.dev/some-use-full-command</guid><dc:creator><![CDATA[samip dave]]></dc:creator><pubDate>Tue, 09 Sep 2025 04:01:58 GMT</pubDate><content:encoded><![CDATA[<pre><code class="lang-plaintext">To restart all images.
docker restart $(docker ps -aq)

To remove all Docker images in one shot
docker rmi -f $(docker images -q)

remove all containers first (to ensure images can be deleted):
docker rm -f $(docker ps -aq) &amp;&amp; docker rmi -f $(docker images -q)

Last 20-30 logs of docker container
docker logs &lt;container id&gt; --tail 30
</code></pre>
]]></content:encoded></item><item><title><![CDATA[tetragon snippets]]></title><description><![CDATA[Here are the most important fields to keep when designing policies around enforcement: process.binary → the actual executable (/usr/bin/sleep, /bin/bash…]]></description><link>https://samipdave-devops.hashnode.dev/tetragon-snippets</link><guid isPermaLink="true">https://samipdave-devops.hashnode.dev/tetragon-snippets</guid><dc:creator><![CDATA[samip dave]]></dc:creator><pubDate>Mon, 08 Sep 2025 16:30:19 GMT</pubDate><content:encoded><![CDATA[<pre><code class="lang-plaintext">this is process logs that will collected by ebpf system


{
  "process_exec": {
    "process": {
      "exec_id": "aXAtMTkyLTE2OC0yNi00Mi5lYzIuaW50ZXJuYWw6MTE0MDc1MTE4MzczNTo5NTYy",
      "pid": 9562,
      "uid": 0,
      "cwd": "/",
      "binary": "/usr/bin/sleep",
      "arguments": "infinity",
      "flags": "execve rootcwd clone inInitTree",
      "start_time": "2025-09-06T14:15:23.429928979Z",
      "auid": 4294967295,
      "pod": {
        "namespace": "default",
        "name": "sleepy",
        "container": {
          "id": "containerd://0220ba0f817a9075e33063e5f088dac22eaa11b46842b42e1f0f70044f615f15",
          "name": "sleepy",
          "image": {
            "id": "docker.io/library/ubuntu@sha256:9cbed754112939e914291337b5e554b07ad7c392491dba6daf25eef1332a22e8",
            "name": "docker.io/library/ubuntu:latest"
          },
          "start_time": "2025-09-06T14:15:23Z",
          "pid": 1,
          "security_context": {}
        },
        "pod_labels": {
          "run": "sleepy"
        },
        "workload": "sleepy",
        "workload_kind": "Pod"
      },
      "docker": "0220ba0f817a9075e33063e5f088dac",
      "parent_exec_id": "aXAtMTkyLTE2OC0yNi00Mi5lYzIuaW50ZXJuYWw6MTEzODgzMzE2OTQ1Mjo5NDk4",
      "tid": 9562,
      "in_init_tree": true
    },
    "parent": {
      "exec_id": "aXAtMTkyLTE2OC0yNi00Mi5lYzIuaW50ZXJuYWw6MTEzODgzMzE2OTQ1Mjo5NDk4",
      "pid": 9498,
      "uid": 0,
      "cwd": "/run/containerd/io.containerd.runtime.v2.task/k8s.io/acbdc0ff29ff8d29aff06385a8e9b5bd4ca80fc626e3a683d743d2923db225d6",
      "binary": "/usr/bin/containerd-shim-runc-v2",
      "arguments": "-namespace k8s.io -id acbdc0ff29ff8d29aff06385a8e9b5bd4ca80fc626e3a683d743d2923db225d6 -address /run/containerd/containerd.sock",
      "flags": "execve clone",
      "start_time": "2025-09-06T14:15:21.511914007Z",
      "auid": 4294967295,
      "parent_exec_id": "aXAtMTkyLTE2OC0yNi00Mi5lYzIuaW50ZXJuYWw6MTEzODgyMzEwNDUyMzo5NDg5",
      "tid": 9498,
      "in_init_tree": false
    }
  },
  "node_name": "ip-192-168-26-42.ec2.internal",
  "time": "2025-09-06T14:15:23.429928417Z",
  "node_labels": {
    "alpha.eksctl.io/cluster-name": "myeks-8",
    "alpha.eksctl.io/nodegroup-name": "ng-fb6baf33",
    "beta.kubernetes.io/arch": "amd64",
    "beta.kubernetes.io/instance-type": "t3.medium",
    "beta.kubernetes.io/os": "linux",
    "eks.amazonaws.com/capacityType": "ON_DEMAND",
    "eks.amazonaws.com/nodegroup": "ng-fb6baf33",
    "eks.amazonaws.com/nodegroup-image": "ami-0329ac7d12d171324",
    "eks.amazonaws.com/sourceLaunchTemplateId": "lt-0d5f20521207a4f85",
    "eks.amazonaws.com/sourceLaunchTemplateVersion": "1",
    "failure-domain.beta.kubernetes.io/region": "us-east-1",
    "failure-domain.beta.kubernetes.io/zone": "us-east-1a",
    "k8s.io/cloud-provider-aws": "a45db77541dc5d0a0f1385074b60166a",
    "kubernetes.io/arch": "amd64",
    "kubernetes.io/hostname": "ip-192-168-26-42.ec2.internal",
    "kubernetes.io/os": "linux",
    "node.kubernetes.io/instance-type": "t3.medium",
    "topology.ebs.csi.aws.com/zone": "us-east-1a",
    "topology.k8s.aws/zone-id": "use1-az1",
    "topology.kubernetes.io/region": "us-east-1",
    "topology.kubernetes.io/zone": "us-east-1a"
  }
}
</code></pre>
<p>Here are the <strong>most important fields to keep</strong> when designing policies around enforcement:</p>
<hr />
<h3 id="heading-process-amp-execution-context">🔹 Process &amp; Execution Context</h3>
<ul>
<li><p><code>process.binary</code> → the actual executable (<code>/usr/bin/sleep</code>, <code>/bin/bash</code>, etc.)</p>
</li>
<li><p><code>process.arguments</code> → arguments passed to the binary (e.g., <code>sleep infinity</code>)</p>
</li>
<li><p><code>process.uid</code> → which user ran the process (<code>0</code> = root)</p>
</li>
<li><p><code>process.cwd</code> → working directory (sometimes important for distinguishing behavior)</p>
</li>
<li><p><code>process.flags</code> → useful for detecting execve, setuid, init process, etc.</p>
</li>
</ul>
<hr />
<h3 id="heading-container-pod-context">🔹 Container / Pod Context</h3>
<ul>
<li><p><code>process.pod.namespace</code> → Kubernetes namespace</p>
</li>
<li><p><a target="_blank" href="http://process.pod.name"><code>process.pod.name</code></a> → Pod name</p>
</li>
<li><p><a target="_blank" href="http://process.pod.container.name"><code>process.pod.container.name</code></a> → Container name</p>
</li>
<li><p><a target="_blank" href="http://process.pod.container.image.name"><code>process.pod.container.image.name</code></a> → Image name (<a target="_blank" href="http://docker.io/library/ubuntu:latest"><code>docker.io/library/ubuntu:latest</code></a>)</p>
</li>
<li><p><code>process.pod.pod_labels</code> → Kubernetes labels (for selecting workloads via policies)</p>
</li>
<li><p><code>process.pod.workload_kind</code> → Pod, Deployment, DaemonSet, etc.</p>
</li>
</ul>
<hr />
<h3 id="heading-parent-process-context">🔹 Parent Process Context</h3>
<ul>
<li><p><code>parent.binary</code> → helps detect container runtimes or unexpected parent processes</p>
</li>
<li><p><code>parent.exec_id</code> → trace lineage of execution</p>
</li>
</ul>
<hr />
<h3 id="heading-node-cluster-context">🔹 Node / Cluster Context</h3>
<ul>
<li><p><code>node_name</code> → node where the event occurred</p>
</li>
<li><p><code>node_labels</code> → useful for scoping policies to node groups, zones, instance types, etc.</p>
</li>
</ul>
<hr />
<h3 id="heading-event-metadata">🔹 Event Metadata</h3>
<ul>
<li><p><code>time</code> → event timestamp (critical for audit trails)</p>
</li>
<li><p><code>process.exec_id</code> → unique identifier for correlation</p>
</li>
<li><p><code>parent_exec_id</code> → trace back execution chains</p>
</li>
</ul>
<hr />
<p>✅ <strong>In practice</strong>, the <em>core fields</em> most often used for enforcement are:</p>
<ul>
<li><p><strong>Binary / arguments</strong></p>
</li>
<li><p><strong>Pod namespace / name / labels</strong></p>
</li>
<li><p><strong>Container image</strong></p>
</li>
<li><p><strong>User (UID)</strong></p>
</li>
<li><p><strong>Parent binary</strong></p>
</li>
<li><p><strong>Node name</strong> (if node-specific policies are needed)</p>
</li>
</ul>
<p>install tetragon CLI and move its binary to /usr/loval/bin/</p>
<pre><code class="lang-plaintext"># Download the latest tetra (Linux x86_64 example)
curl -L https://github.com/cilium/tetragon/releases/latest/download/tetra-linux-amd64.tar.gz -o tetra.tar.gz

# Extract and move to /usr/local/bin
tar -xvf tetra.tar.gz
sudo mv tetra /usr/local/bin/

# Verify
tetra version
</code></pre>
<p>now check logs</p>
<pre><code class="lang-plaintext">kubectl logs -f -n kube-system ds/tetragon -c export-stdout | tetra getevents -o compact
</code></pre>
]]></content:encoded></item><item><title><![CDATA[Jenkins installation on Ec2 , ubuntu server]]></title><description><![CDATA[Jenkins requires Java in order to run, yet certain distributions don’t include this by default, and some Java versions are incompatible with Jenkins. There…]]></description><link>https://samipdave-devops.hashnode.dev/jenkins-installation-on-ec2-ubuntu-server</link><guid isPermaLink="true">https://samipdave-devops.hashnode.dev/jenkins-installation-on-ec2-ubuntu-server</guid><category><![CDATA[Devops]]></category><category><![CDATA[Devops articles]]></category><category><![CDATA[Jenkins]]></category><category><![CDATA[Jenkins-installation]]></category><dc:creator><![CDATA[samip dave]]></dc:creator><pubDate>Wed, 21 Jun 2023 15:05:46 GMT</pubDate><content:encoded><![CDATA[<h3 id="heading-installation-of-java"><strong>Installation of Java</strong></h3>
<p>Jenkins requires Java in order to run, yet certain distributions don’t include this by default, and <a target="_blank" href="https://www.jenkins.io/doc/administration/requirements/java/">some Java versions are incompatible</a> with Jenkins.</p>
<p>There are multiple Java implementations that you can use. <a target="_blank" href="https://openjdk.java.net/">OpenJDK</a> is the most popular one at the moment, and we will use it in this guide.</p>
<p>Update the Debian apt repositories, install OpenJDK 11, and check the installation with the following commands:</p>
<h1 id="heading-java-install">Java install</h1>
<pre><code class="lang-plaintext">sudo apt update

sudo apt install openjdk-11-jre

java -version
</code></pre>
<p>The commands for installing Jenkins are Run after installing JAVA only</p>
<pre><code class="lang-plaintext">curl -fsSL https://pkg.jenkins.io/debian/jenkins.io-2023.key | sudo tee \
  /usr/share/keyrings/jenkins-keyring.asc &gt; /dev/null

echo deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] \
  https://pkg.jenkins.io/debian binary/ | sudo tee \
  /etc/apt/sources.list.d/jenkins.list &gt; /dev/null

sudo apt-get update

sudo apt-get install jenkins
</code></pre>
<h3 id="heading-start-jenkins"><strong>Start Jenkins</strong></h3>
<p>check status of jenkins</p>
<pre><code class="lang-plaintext">sudo systemctl status jenkins
</code></pre>
<p>we can enable Jenkins service if it's disabled.</p>
<pre><code class="lang-plaintext">sudo systemctl enable jenkins
</code></pre>
<p>we can start Jenkins if it's stopped by the command</p>
<pre><code class="lang-plaintext">sudo systemctl start jenkins
</code></pre>
<h3 id="heading-installation-of-docker-and-add-it-in-sudoer-group-add-jenkins-in-sudoers-grp">Installation of Docker and add it in sudoer group, add jenkins in sudoers grp</h3>
<pre><code class="lang-plaintext">Docker installation command

sudo apt-get install docker.io
</code></pre>
<pre><code class="lang-plaintext">add docker in sudoers group
sudo usermod -aG docker $USER &amp;&amp; newgrp docker
</code></pre>
<pre><code class="lang-plaintext">for jenkins pipeline add jenkins to docker group
sudo usermod -a -G docker jenkins
</code></pre>
]]></content:encoded></item></channel></rss>