<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Getting Started on gNMIc Operator</title><link>https://fbe70dc2.gnmic-operator2.pages.dev/docs/getting-started/</link><description>Recent content in Getting Started on gNMIc Operator</description><generator>Hugo</generator><language>en-us</language><atom:link href="https://fbe70dc2.gnmic-operator2.pages.dev/docs/getting-started/index.xml" rel="self" type="application/rss+xml"/><item><title>Installation</title><link>https://fbe70dc2.gnmic-operator2.pages.dev/docs/getting-started/installation/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://fbe70dc2.gnmic-operator2.pages.dev/docs/getting-started/installation/</guid><description>&lt;h2 id="prerequisites">Prerequisites&lt;/h2>
&lt;ul>
&lt;li>Kubernetes cluster (v1.25+)&lt;/li>
&lt;li>kubectl configured to access your cluster&lt;/li>
&lt;li>&lt;a href="https://cert-manager.io/">cert-manager&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="installation-methods">Installation Methods&lt;/h2>
&lt;h3 id="method-1-quick-install-recommended">Method 1: Quick Install (Recommended)&lt;/h3>
&lt;p>Download and apply the pre-built manifest from the release:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Install a specific version&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># This includes CRDs, RBAC, webhooks, and the operator deployment&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>kubectl apply -f https://github.com/gnmic/operator/releases/download/v0.1.0/install.yaml
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="method-2-using-kustomize">Method 2: Using Kustomize&lt;/h3>
&lt;p>For more control over the installation, use kustomize with an overlay:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Create a kustomization.yaml&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>cat &lt;span style="color:#e6db74">&amp;lt;&amp;lt;EOF &amp;gt; kustomization.yaml
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74">apiVersion: kustomize.config.k8s.io/v1beta1
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74">kind: Kustomization
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74">resources:
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> - https://github.com/gnmic/operator/config/default?ref=v0.1.0
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74">images:
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> - name: controller
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> newName: ghcr.io/gnmic/operator
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> newTag: &amp;#34;0.1.0&amp;#34;
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74">EOF&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Apply&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>kubectl apply -k .
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="method-3-using-helm">Method 3: Using Helm&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Add the Helm repository (OCI)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>helm install gnmic-operator oci://ghcr.io/gnmic/operator/charts/gnmic-operator --version 0.1.0
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Or with custom values&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>helm install gnmic-operator oci://ghcr.io/gnmic/operator/charts/gnmic-operator &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> --version 0.1.0 &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> --namespace gnmic-system &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> --create-namespace &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span> --set resources.limits.memory&lt;span style="color:#f92672">=&lt;/span>512Mi
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>For a complete list of Helm chart configuration options, see the &lt;a href="https://fbe70dc2.gnmic-operator2.pages.dev/docs/reference/helm-chart/">Helm Chart Reference&lt;/a>.&lt;/p></description></item><item><title>Quick Start</title><link>https://fbe70dc2.gnmic-operator2.pages.dev/docs/getting-started/quick-start/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://fbe70dc2.gnmic-operator2.pages.dev/docs/getting-started/quick-start/</guid><description>&lt;p>This guide walks you through deploying a complete telemetry collection setup with gNMIc Operator.&lt;/p>
&lt;h2 id="overview">Overview&lt;/h2>
&lt;p>We&amp;rsquo;ll create:&lt;/p>
&lt;ol>
&lt;li>A &lt;strong>TargetProfile&lt;/strong> with connection settings&lt;/li>
&lt;li>A &lt;strong>Target&lt;/strong> pointing to a network device&lt;/li>
&lt;li>A &lt;strong>Subscription&lt;/strong> defining what data to collect&lt;/li>
&lt;li>An &lt;strong>Output&lt;/strong> to send data to Prometheus&lt;/li>
&lt;li>A &lt;strong>Pipeline&lt;/strong> connecting everything together&lt;/li>
&lt;li>A &lt;strong>Cluster&lt;/strong> to run the gNMIc collectors&lt;/li>
&lt;/ol>
&lt;h2 id="step-1-create-a-targetprofile">Step 1: Create a TargetProfile&lt;/h2>
&lt;p>The TargetProfile defines shared settings for connecting to devices:&lt;/p>



&lt;ul class="nav nav-tabs" id="tabs-0" role="tablist">
 &lt;li class="nav-item">
 &lt;button class="nav-link active"
 id="tabs-00-00-tab" data-bs-toggle="tab" data-bs-target="#tabs-00-00" role="tab"
 data-td-tp-persist="yaml" aria-controls="tabs-00-00" aria-selected="true">
 YAML
 &lt;/button>
 &lt;/li>&lt;li class="nav-item">
 &lt;button class="nav-link"
 id="tabs-00-01-tab" data-bs-toggle="tab" data-bs-target="#tabs-00-01" role="tab"
 data-td-tp-persist="bash" aria-controls="tabs-00-01" aria-selected="false">
 kubectl
 &lt;/button>
 &lt;/li>
&lt;/ul>

&lt;div class="tab-content" id="tabs-0-content">
 &lt;div class="tab-pane fade show active"
 id="tabs-00-00" role="tabpanel" aria-labelled-by="tabs-00-00-tab" tabindex="0">
 &lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">apiVersion&lt;/span>: &lt;span style="color:#ae81ff">operator.gnmic.dev/v1alpha1&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">kind&lt;/span>: &lt;span style="color:#ae81ff">TargetProfile&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">metadata&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">name&lt;/span>: &lt;span style="color:#ae81ff">default-profile&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">spec&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e"># Reference to a Secret containing username/password&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">credentialsRef&lt;/span>: &lt;span style="color:#ae81ff">device-credentials&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e"># TLS without server certificate verification&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">tls&lt;/span>: {}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e"># Connection timeout&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">timeout&lt;/span>: &lt;span style="color:#ae81ff">10s&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
 &lt;/div>
 &lt;div class="tab-pane fade"
 id="tabs-00-01" role="tabpanel" aria-labelled-by="tabs-00-01-tab" tabindex="0">
 &lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>cat &lt;span style="color:#e6db74">&amp;lt;&amp;lt; &amp;#39;EOF&amp;#39; | kubectl apply -f -
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74">apiVersion: operator.gnmic.dev/v1alpha1
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74">kind: TargetProfile
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74">metadata:
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> name: default-profile
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74">spec:
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> # Reference to a Secret containing username/password
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> credentialsRef: device-credentials
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> # TLS without server certificate verification
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> tls: {}
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> # Connection timeout
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> timeout: 10s
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74">EOF&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
 &lt;/div>
&lt;/div>

&lt;p>Create the credentials secret:&lt;/p></description></item><item><title>Development Guide</title><link>https://fbe70dc2.gnmic-operator2.pages.dev/docs/getting-started/development/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://fbe70dc2.gnmic-operator2.pages.dev/docs/getting-started/development/</guid><description>&lt;h2 id="prerequisites">Prerequisites&lt;/h2>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>Tool&lt;/th>
 &lt;th>Version&lt;/th>
 &lt;th>Purpose&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>&lt;a href="https://go.dev/dl/">Go&lt;/a>&lt;/td>
 &lt;td>1.25+&lt;/td>
 &lt;td>Compile the operator&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;a href="https://docs.docker.com/get-docker/">Docker&lt;/a>&lt;/td>
 &lt;td>20+&lt;/td>
 &lt;td>Build container images&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;a href="https://kubernetes.io/docs/tasks/tools/">kubectl&lt;/a>&lt;/td>
 &lt;td>1.25+&lt;/td>
 &lt;td>Interact with the cluster&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;a href="https://kind.sigs.k8s.io/">Kind&lt;/a>&lt;/td>
 &lt;td>0.20+&lt;/td>
 &lt;td>Local Kubernetes cluster&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;a href="https://containerlab.dev">Containerlab&lt;/a>&lt;/td>
 &lt;td>0.54+&lt;/td>
 &lt;td>Lab topologies with real network devices&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;a href="https://gnmic.openconfig.net">gNMIc CLI&lt;/a>&lt;/td>
 &lt;td>0.38+&lt;/td>
 &lt;td>Configure lab nodes via gNMI Set&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;h2 id="repository-layout">Repository Layout&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-text" data-lang="text">&lt;span style="display:flex;">&lt;span>.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>├── api/v1alpha1/ # CRD type definitions and deepcopy methods
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>├── cmd/main.go # Operator entrypoint
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>├── config/
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>│ ├── crd/ # Generated CRD manifests
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>│ ├── default/ # Kustomize overlay that combines everything
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>│ ├── manager/ # Controller Deployment and Service
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>│ ├── rbac/ # ClusterRole, ServiceAccount, Bindings
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>│ ├── webhook/ # Webhook configuration
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>│ ├── certmanager/ # cert-manager Issuer and Certificate
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>│ └── samples/ # Example CRs
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>├── internal/
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>│ ├── controller/ # Reconcilers (Cluster, Pipeline, TargetState, …)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>│ ├── gnmic/ # gNMIc client helpers (config builder, SSE, …)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>│ ├── utils/ # Shared utilities
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>│ └── webhook/ # Admission webhook handlers
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>├── helm/ # Helm chart
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>├── lab/dev/ # Development lab (Containerlab topology + operator resources)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>├── Dockerfile
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>└── Makefile
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="initial-setup">Initial Setup&lt;/h2>
&lt;p>Clone the repository and run the one-time setup that creates a Kind cluster, installs cert-manager, builds the operator image, loads it, and deploys it:&lt;/p></description></item></channel></rss>