PageSourceSearch

https://solanica.io/docs/assets/js/4f78d815.4ed9c610.js

js solanica.io collected 2026-10-04 05:18:35 UTC 8,925 bytes, 1 lines download raw bytes

1"use strict";(self.webpackChunksolanica_docs=self.webpackChunksolanica_docs||[]).push([["9615"],{4200(e,n,t){t.r(n),t.d(n,{metadata:()=>s,default:()=>h,frontMatter:()=>l,contentTitle:()=>i,toc:()=>c,assets:()=>o});var s=JSON.parse('{"id":"mssql-operator/installation","title":"Installation","description":"The MSSQL Operator is distributed as a Helm chart from the Solanica OCI","source":"@site/docs/mssql-operator/installation.md","sourceDirName":"mssql-operator","slug":"/mssql-operator/installation","permalink":"/docs/mssql-operator/installation","draft":false,"unlisted":false,"editUrl":"https://github.com/solanicaio/docs/tree/main/docs/mssql-operator/installation.md","tags":[],"version":"current","sidebarPosition":2,"frontMatter":{"id":"installation","title":"Installation","sidebar_label":"Installation","sidebar_position":2},"sidebar":"docsSidebar","previous":{"title":"Overview","permalink":"/docs/mssql-operator/overview"},"next":{"title":"Custom Resources","permalink":"/docs/mssql-operator/custom-resources"}}'),r=t(4848),a=t(8453);let l={id:"installation",title:"Installation",sidebar_label:"Installation",sidebar_position:2},i="Installation",o={},c=[{value:"Prerequisites",id:"prerequisites",level:2},{value:"Authenticate",id:"authenticate",level:2},{value:"Install the operator",id:"install-the-operator",level:2},{value:"Configuration",id:"configuration",level:2},{value:"Uninstall",id:"uninstall",level:2},{value:"Next steps",id:"next-steps",level:2}];function d(e){let n={a:"a",admonition:"admonition",blockquote:"blockquote",code:"code",h1:"h1",h2:"h2",header:"header",li:"li",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,a.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.header,{children:(0,r.jsx)(n.h1,{id:"installation",children:"Installation"})}),"\n",(0,r.jsxs)(n.p,{children:["The MSSQL Operator is distributed as a Helm chart from the Solanica OCI\nregistry. Installing it deploys the controller and registers the\n",(0,r.jsx)(n.code,{children:"MSSQLInstance"}),", ",(0,r.jsx)(n.code,{children:"MSSQLAvailabilityGroup"}),", ",(0,r.jsx)(n.code,{children:"MSSQLBackup"}),", ",(0,r.jsx)(n.code,{children:"MSSQLBackupSchedule"}),",\nand ",(0,r.jsx)(n.code,{children:"MSSQLRestore"})," CRDs."]}),"\n",(0,r.jsx)(n.admonition,{title:"Private distribution",type:"info",children:(0,r.jsxs)(n.p,{children:["The MSSQL Operator is ",(0,r.jsx)(n.strong,{children:"not publicly available"}),". Both the Helm chart and the\ncontroller image are hosted in a private registry, so you need access\ncredentials from Solanica to install it. If you don't have credentials yet,\n",(0,r.jsx)(n.a,{href:"https://solanica.io/contact-us",children:"contact us"})," to request access."]})}),"\n",(0,r.jsx)(n.h2,{id:"prerequisites",children:"Prerequisites"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["A Kubernetes cluster (v1.27+) and ",(0,r.jsx)(n.code,{children:"kubectl"})," configured for it"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.a,{href:"https://helm.sh/",children:"Helm"})," v3.8+ (OCI support)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.a,{href:"https://cert-manager.io/docs/installation/",children:"cert-manager"})," \u2014 required for the\noperator's webhook and metrics serving certificates"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Solanica registry credentials"})," (see ",(0,r.jsx)(n.a,{href:"#authenticate",children:"Authenticate"})," below)"]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"Install cert-manager if it is not already present:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"helm repo add jetstack https://charts.jetstack.io --force-update\nhelm install cert-manager jetstack/cert-manager \\\n  --namespace cert-manager --create-namespace \\\n  --set crds.enabled=true\n"})}),"\n",(0,r.jsx)(n.h2,{id:"authenticate",children:"Authenticate"}),"\n",(0,r.jsxs)(n.p,{children:["Solanica provides you with a username and access token for the private registry\n(",(0,r.jsx)(n.code,{children:"ghcr.io/solanicaio"}),"). Use them for both pulling the chart and pulling the\ncontroller image."]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"1. Log in to the registry"})," so Helm can pull the chart:"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"helm registry login ghcr.io \\\n  --username <your-username> \\\n  --password <your-access-token>\n"})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"2. Create an image pull Secret"})," in the operator's namespace so the cluster\ncan pull the controller image:"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"kubectl create namespace mssql-operator-system\n\nkubectl create secret docker-registry solanica-registry \\\n  --docker-server=ghcr.io \\\n  --docker-username=<your-username> \\\n  --docker-password=<your-access-token> \\\n  --namespace mssql-operator-system\n"})}),"\n",(0,r.jsx)(n.p,{children:"You'll reference this Secret when installing the chart (below)."}),"\n",(0,r.jsxs)(n.blockquote,{children:["\n",(0,r.jsxs)(n.p,{children:["Don't have credentials? ",(0,r.jsx)(n.a,{href:"https://solanica.io/contact-us",children:"Contact us"})," to request\naccess to the MSSQL Operator."]}),"\n"]}),"\n",(0,r.jsx)(n.h2,{id:"install-the-operator",children:"Install the operator"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"helm install mssql-operator \\\n  oci://ghcr.io/solanicaio/charts/mssql-operator \\\n  --version 0.1.9 \\\n  --namespace mssql-operator-system --create-namespace \\\n  --set manager.imagePullSecrets[0].name=solanica-registry\n"})}),"\n",(0,r.jsx)(n.p,{children:"Verify the controller is running and the CRDs are registered:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"kubectl get pods -n mssql-operator-system\nkubectl get crds | grep mssql.solanica.io\n"})}),"\n",(0,r.jsx)(n.h2,{id:"configuration",children:"Configuration"}),"\n",(0,r.jsxs)(n.p,{children:["Common values you may want to override with ",(0,r.jsx)(n.code,{children:"--set"})," or a values file:"]}),"\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{children:"Value"}),(0,r.jsx)(n.th,{children:"Default"}),(0,r.jsx)(n.th,{children:"Description"})]})}),(0,r.jsxs)(n.tbody,{children:[(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:(0,r.jsx)(n.code,{children:"certManager.enabled"})}),(0,r.jsx)(n.td,{children:(0,r.jsx)(n.code,{children:"true"})}),(0,r.jsx)(n.td,{children:"Use cert-manager for webhook/metrics certs"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:(0,r.jsx)(n.code,{children:"webhook.enabled"})}),(0,r.jsx)(n.td,{children:(0,r.jsx)(n.code,{children:"true"})}),(0,r.jsx)(n.td,{children:"Enable the validating/mutating admission webhook"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:(0,r.jsx)(n.code,{children:"serviceAccount.create"})}),(0,r.jsx)(n.td,{children:(0,r.jsx)(n.code,{children:"true"})}),(0,r.jsx)(n.td,{children:"Create the controller ServiceAccount"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:(0,r.jsx)(n.code,{children:"rbac.create"})}),(0,r.jsx)(n.td,{children:(0,r.jsx)(n.code,{children:"true"})}),(0,r.jsx)(n.td,{children:"Create ClusterRole/ClusterRoleBinding"})]})]})]}),"\n",(0,r.jsx)(n.h2,{id:"uninstall",children:"Uninstall"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"helm uninstall mssql-operator -n mssql-operator-system\n"})}),"\n",(0,r.jsxs)(n.p,{children:["Uninstalling the chart does not delete existing ",(0,r.jsx)(n.code,{children:"MSSQLInstance"})," /\n",(0,r.jsx)(n.code,{children:"MSSQLAvailabilityGroup"})," resources or their PersistentVolumeClaims \u2014 remove those\nseparately if you want to re
1claim storage."]}),"\n",(0,r.jsx)(n.h2,{id:"next-steps",children:"Next steps"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.a,{href:"/get-started",children:"Get Started"})," \u2014 deploy your first instance end to end."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.a,{href:"/docs/mssql-operator/custom-resources",children:"Custom Resources"})," \u2014 the API model."]}),"\n"]})]})}function h(e={}){let{wrapper:n}={...(0,a.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(d,{...e})}):d(e)}},8453(e,n,t){t.d(n,{R:()=>l,x:()=>i});var s=t(6540);let r={},a=s.createContext(r);function l(e){let n=s.useContext(a);return s.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function i(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:l(e.components),s.createElement(a.Provider,{value:n},e.children)}}}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.