SQL Server on Kubernetes with Ubuntu OS

minikube service mssql-deployment --url
x

These steps to be followed after the installation of Minikube on the Ubuntu server.
Please refer the below link to do the same(https://linuxhint.com/install-minikube-ubuntu/)

Post installation of Minikube start and check the status as in below.

Minikube Start and Status :



SQL Server and Kubernetes
This assumes that you have minikube up and running. The first thing you’re going to do is build a secret to pass into your deployment, for your SA password.

kubectl create secret generic mssql --from-literal=SA_PASSWORD="MyC0m9l&xP@ssw0rd"

The next thing you are going to do is build you persistent volume claim.

kind: PersistentVolumeClaim
 apiVersion: v1
 metadata:
   name: mssql-data-claim
 spec:
   accessModes:
   - ReadWriteOnce
   resources:
    requests:
     storage: 10Gi
You will save this text in a file. For the purposes of this posts, we will call it pv-claim.yaml. You will then run the kubectl apply -f pv-claim.yaml command. You will see the message “persistentvolumeclaim “mssql-data-claim” created
Next we are going to build our deployment and our load balancer.
apiVersion: v1
 kind: Service
 metadata:
   name: mssql-deployment
 spec:
   selector:
     app: mssql
   ports:
     - protocol: TCP
       port: 1433
       targetPort: 1433
   type: LoadBalancer
 ---
 apiVersion: apps/v1beta1
 kind: Deployment
 metadata:
   name: mssql-deployment
 spec:
   replicas: 1
   template:
     metadata:
      labels:
        app: mssql
    spec:
      terminationGracePeriodSeconds: 10
      containers:
      - name: mssql
        image: microsoft/mssql-server-linux
        ports:
        - containerPort: 1433
        env:
        - name: ACCEPT_EULA
          value: "Y"
        - name: SA_PASSWORD
          valueFrom:
            secretKeyRef:
              name: mssql
              key: SA_PASSWORD
        volumeMounts:
        - name: mssql-persistent-storage
          mountPath: /var/opt/mssql
      volumes:
      - name: mssql-persistent-storage
        persistentVolumeClaim:
          claimName: mssql-data-claim

We’re defining our service and load balancer at the beginning of the code. Next, we are defining our deployment, which specifies the container we’re going to use, which in this case it is the latest release of SQL Server 2017, and it picks up our predefined SA password. Finally, we are defining our volume mount and its path for where it will be mounted in the VM. Save this off to a file called sqldeployment.yaml. You will run the same kubectl apply -f sqldeployment.yaml to deploy this. You will see service “mssql-deployment” created and deployment “mssql-deployment” created. You can verify the deployments by running the below commands:




You’ll make note of that IP address and port for your SQL deployment. You do need to make note of that port, however, that IP address is not routable within that cluster. There is some weirdness here to running minikube. I’d like to thank the Database Avenger for this post which showed me how to connect to the kube.  Run the following command, which will give the IP address to connect to




Now you can connect to SQL Server using your SSMS using the SA password created at the top or use your sqlcmd after installing the mssql-tools on the Ubuntu machine. Have created a test database in this connection.





1 comment: