• Products
  • Solutions
  • Customers
  • Resources
  • Company
  • Pricing
  • Download
Try Playground
  • Deploy NCache Resources in AKS
  • Deploy NCache in AKS Through Operator
  • Create NCache Operator in AKS
Show / Hide Table of Contents
  • Deploying NCache in Azure Kubernetes Service
  • Create Azure Resource Group
  • Create Kubernetes Cluster in Azure
  • Deploy NCache Resources in AKS
    • Manually Deploy NCache in AKS
      • Create NCache Deployment in AKS
      • Create Discovery Service for NCache Clients in AKS
      • Create Gateway Service for NCache Management in AKS
    • Deploy NCache in AKS Through Operator
      • Create Service Account in AKS
      • Create Role Definition in AKS
      • Create Role Binding in AKS
      • Create NCache Operator in AKS
      • Create Custom Resource in AKS
  • Create NCache Client Deployment in AKS
  • Create Cache Cluster in AKS
  • Monitor NCache Cluster and Clients in AKS
  • Adding Cache Servers in AKS at Runtime
  • Removing Cache Severs in AKS at Runtime

Create Operator in Kubernetes

An Operator is a custom controller running inside a pod that watches over the cluster you created.

To run an operator inside your Kubernetes cluster, you need to create and deploy a manifest file containing the desired metadata. Follow the steps mentioned in this chapter to understand how to create a file that contains NCache-related operator specifications and deploy this file in your cluster.

Create Operator Manifest File

The manifest file for the operator, ncache_operator.yaml, contains the operator pod's specification that includes the following information:

  • Storage
  • Persistent Volume
  • Container image of the Operator to be deployed

The layout of your ncache_operator.yaml should be:

Note

The parameters required to create this YAML file, ready to be deployed, are explained in the Properties section.

kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: storage
provisioner: kubernetes.io/no-provisioner
volumeBindingMode: WaitForFirstConsumer
---
kind: PersistentVolume
apiVersion: v1
metadata:
  name: persistvolume
spec:
  capacity:
    storage: 25M            # change as per your requirement
  accessModes:
  - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  storageClassName: storage
  nfs:
    path: /path/volume      # replace this with the path to the volume to mount
    server: 10.10.10.10
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:           # change according to your node names
          - node1
          - node2
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: persistvolume-claim
spec:
  accessModes:
  - ReadWriteOnce
  storageClassName: storage
  resources:
    requests:
      storage: 25M          # change as per your requirement
---
kind: Deployment
apiVersion: apps/v1
metadata:
  name: ncache-operator
spec:
  replicas: 1
  selector:
    matchLabels:
      name: ncache-operator
  template:
    metadata:
      labels:
        name: ncache-operator
    spec:
      serviceAccountName: ncache-operator
      tolerations:
      - key: "node-role.kubernetes.io/master"
        effect: "NoSchedule"
        operator: "Exists"
      nodeSelector:
        "kubernetes.io/os": linux
      initContainers:
        - name: check-for-read-write-permissions
          image: mcr.microsoft.com/powershell:latest
          command: ['/bin/bash', '-c', 'if [ $(stat -L -c "%a" $OP_MOUNT_PATH) == 777 ]; then exit 0; else exit 1; fi;']
          volumeMounts:
            - name: my-persistent-storage
              mountPath: /alachisoft/ncache-operator
          env:
            - name: OP_MOUNT_PATH
              value: "/alachisoft/ncache-operator"
      containers:
        - name: ncache-operator
          # Replace this with the built image name
          image: ncache-operator:latest
          imagePullPolicy: IfNotPresent
          env:
            - name: WATCH_NAMESPACE
              valueFrom:
                fieldRef:
                  fieldPath: metadata.namespace
            - name: POD_NAME
              valueFrom:
                fieldRef:
                  fieldPath: metadata.name
            - name: OPERATOR_NAME
              value: "ncache-operator"
            - name: OP_MOUNT_PATH
              value: "/alachisoft/ncache-operator"
          volumeMounts:
            - name: my-persistent-storage
              mountPath: /alachisoft/ncache-operator
      volumes:
        - name: my-persistent-storage
          persistentVolumeClaim:
            claimName: persistvolume-claim
Important
  • You need to make sure that the requested storage is available on the same node on which you are deploying the operator.
  • It is recommended to not use local storage if you have multiple replicas of the operator inside the cluster.

Deploy NCache Operator in Kubernetes

To deploy the created Operator deployment file in Kubernetes, run the following command in the cloud shell:

kubectl create -f [dir]/ncache_operator.yaml

This will create an Operator as a pod inside your cluster with the name specified in the YAML file. To verify, you can execute the following command:

kubectl get deployments

Properties

The properties required to create role binding in Kubernetes are explained below:

Parameter Description
-kind This can be many different types like a Deployment, a StorageClass, PersistentVolume or PersistentVolumeClaim.
-apiVersion Specifies the version of the kind and it depends on the underlying version of Kubernetes.
-name Specifies the name of the deployment.
-provisioner Specifies which provisioner should be used to define the storage class objects.
-volumeBindingMode Specifies when volume binding and dynamic provisioning should occur.
-capacity Specifies the overall capacity of the volume to be mounted.
-accessModes Specifies the access mode of the persistent volume to be mounted.
-persistentVolumeReclaimPolicy Specifies what to do with the volume after it has been released of its claim.
-storageClassName Specifies the name of the storage class. If not provided, the cluster will use default storage class inside the cluster.
-storageClassName Specifies the name of the storage class. If not provided, the cluster will use default storage class inside the cluster.
-nodeAffinity Specifies constraints that limit which nodes this volume can be accessed from.
-replicas Specifies the number of replica pods to be created at the time of deployment.
-selector Specifies labels to filter the set of volumes.
-template Specifies the template of the deployment pod.
-template.spec.serviceAccountName Specifies the name of the service account that you specified when creating service_account.yaml.
-template.spec.tolerations Specifies the pod to schedule onto nodes with matching taints.
-template.spec.nodeSelector Specifies the node on which the underlying container needs to be hosted.
-template.spec.initContainers Specifies the details of specialized containers that run before the actual container to verify whether NCache has read/write access to the persistent storage.
-template.spec.containers Specifies the details of the actual container on which NCache operator needs to be run.
-template.spec.volumes Specifies the persistent volume set earlier with the container that runs the operator.

This operator deployment does not include the spec required to deploy desired resources in the cluster. To do that, you need to define custom resources in your cluster, the steps of which have been explained in the next chapter.

See Also

Create Custom Resource in Kubernetes
Create Role Definition in Kubernetes
Create Service Account in Kubernetes

In This Article
  • Create Operator Manifest File
  • Deploy NCache Operator in Kubernetes
  • Properties
  • See Also

Contact Us

PHONE

+1 (214) 764-6933   (US)

+44 20 7993 8327   (UK)

 
EMAIL

sales@alachisoft.com

support@alachisoft.com

NCache
  • NCache Enterprise
  • NCache Professional
  • Edition Comparison
  • NCache Architecture
  • Benchmarks
Download
Pricing
Try Playground

Deployments
  • Cloud (SaaS & Software)
  • On-Premises
  • Kubernetes
  • Docker
Technical Use Cases
  • ASP.NET Sessions
  • ASP.NET Core Sessions
  • Pub/Sub Messaging
  • Real-Time ASP.NET SignalR
  • Internet of Things (IoT)
  • NoSQL Database
  • Stream Processing
  • Microservices
Resources
  • Magazine Articles
  • Third-Party Articles
  • Articles
  • Videos
  • Whitepapers
  • Shows
  • Talks
  • Blogs
  • Docs
Customer Case Studies
  • Testimonials
  • Customers
Support
  • Schedule a Demo
  • Forum (Google Groups)
  • Tips
Company
  • Leadership
  • Partners
  • News
  • Events
  • Careers
Contact Us

  • EnglishChinese (Simplified)FrenchGermanItalianJapaneseKoreanPortugueseSpanish

  • Contact Us
  •  
  • Sitemap
  •  
  • Terms of Use
  •  
  • Privacy Policy
© Copyright Alachisoft 2002 - 2025. All rights reserved. NCache is a registered trademark of Diyatech Corp.
Back to top