Installation

Install gNMIc Operator on your Kubernetes cluster

Prerequisites

  • Kubernetes cluster (v1.25+)
  • kubectl configured to access your cluster
  • cert-manager

Installation Methods

Download and apply the pre-built manifest from the release:

# Install a specific version
# This includes CRDs, RBAC, webhooks, and the operator deployment
kubectl apply -f https://github.com/gnmic/operator/releases/download/v0.1.0/install.yaml

Method 2: Using Kustomize

For more control over the installation, use kustomize with an overlay:

# Create a kustomization.yaml
cat <<EOF > kustomization.yaml
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
  - https://github.com/gnmic/operator/config/default?ref=v0.1.0
images:
  - name: controller
    newName: ghcr.io/gnmic/operator
    newTag: "0.1.0"
EOF

# Apply
kubectl apply -k .

Method 3: Using Helm

# Add the Helm repository (OCI)
helm install gnmic-operator oci://ghcr.io/gnmic/operator/charts/gnmic-operator --version 0.1.0

# Or with custom values
helm install gnmic-operator oci://ghcr.io/gnmic/operator/charts/gnmic-operator \
  --version 0.1.0 \
  --namespace gnmic-system \
  --create-namespace \
  --set resources.limits.memory=512Mi

For a complete list of Helm chart configuration options, see the Helm Chart Reference.

Customization

Custom Namespace

# kustomization.yaml
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
  - https://github.com/gnmic/operator/config/default?ref=v0.1.0
namespace: my-namespace
namePrefix: my-
images:
  - name: controller
    newName: ghcr.io/gnmic/operator
    newTag: "0.1.0"

Custom Resources

# kustomization.yaml
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
  - https://github.com/gnmic/operator/config/default?ref=v0.1.0
images:
  - name: controller
    newName: ghcr.io/gnmic/operator
    newTag: "0.1.0"
patches:
  - target:
      kind: Deployment
      name: controller-manager
    patch: |
      - op: replace
        path: /spec/template/spec/containers/0/resources
        value:
          limits:
            cpu: "1"
            memory: 512Mi
          requests:
            cpu: 100m
            memory: 128Mi

Pre-built Overlays

Example overlays are available in the repository:

OverlayDescription
config/overlays/custom-namespaceDeploy to a custom namespace
config/overlays/without-certmanagerDevelopment mode without cert-manager
config/overlays/productionProduction-ready with increased resources

Verify Installation

Check that the operator is running:

kubectl get pods -n gnmic-system

You should see output similar to:

NAME                                           READY   STATUS    RESTARTS   AGE
gnmic-controller-manager-xxxxx-xxxxx           1/1     Running   0          30s

Check the CRDs are installed:

kubectl get crds | grep gnmic

Installing cert-manager

cert-manager is required for webhooks and TLS features.

# Install cert-manager
kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.17.0/cert-manager.yaml

# Wait for cert-manager to be ready
kubectl wait --for=condition=Available deployment --all -n cert-manager --timeout=120s

For more installation options, see the cert-manager documentation.

Uninstall

To remove the operator:

# If installed with quick install
kubectl delete -f https://github.com/gnmic/operator/releases/download/v0.1.0/install.yaml

# If installed with Helm
helm uninstall gnmic-operator

# If installed with kustomize
kubectl delete -k .

To remove CRDs (this will delete all gNMIc resources!):

kubectl delete -f https://github.com/gnmic/operator/releases/download/v0.1.0/crds.yaml

Next Steps