Copy the code below into a file named mssql.yaml
Apply the deployment file to your kubernetes cluster using:
sed -i s/TXlDMG05bCZ4UEBzc3cwcmQ = / $ ( pwgen -s 120 1 | base64 -w 0 ) / mssql.yaml ;
kubectl apply -f mssql.yaml
Note: username and password are base64 encoded and NOT encrypted.
Therefore do not store your credentials this way in a production environment, use
read -sep "Enter mssql sa password: " mssql_sa_pass; kubectl create secret generic mssql2 --from-literal = password = $mssql_sa_pass --type = kubernetes.io/basic-auth
instead of adding it to the deployment yaml file. Or even better use a proper secret store.
apiVersion : v1
data :
username : c2EK
password : TXlDMG05bCZ4UEBzc3cwcmQ=
kind : Secret
metadata :
name : mssql
type : kubernetes.io/basic-auth
---
apiVersion : apps/v1
kind : Deployment
metadata :
name : mssql-deployment
spec :
replicas : 1
selector :
matchLabels :
app : mssql
template :
metadata :
labels :
app : mssql
spec :
terminationGracePeriodSeconds : 10
containers :
- name : mssql
image : mcr.microsoft.com/mssql/server:latest
ports :
- containerPort : 1433
env :
- name : MSSQL_PID
value : " Developer"
- name : ACCEPT_EULA
value : " Y"
- name : SA_PASSWORD
valueFrom :
secretKeyRef :
name : mssql
key : password
volumeMounts :
- name : mssql
mountPath : /var/opt/mssql
volumes :
- name : mssql
hostPath :
path : /srv/mssql
type : DirectoryOrCreate
initContainers :
- name : install
image : busybox
command :
- chown
- " 10001:10001"
- " /work-dir"
volumeMounts :
- name : mssql
mountPath : " /work-dir"
---
apiVersion : v1
kind : Service
metadata :
name : mssql-deployment
spec :
selector :
app : mssql
ports :
- protocol : TCP
port : 1433
targetPort : 1433
type : LoadBalancer