<!-- CANARY: REQ=REQ-DOCS-001; FEATURE="Docs"; ASPECT=Documentation; STATUS=TESTED; OWNER=docs; UPDATED=2026-01-15 -->
<h2 id="geode-on-microsoft-azure" class="position-relative d-flex align-items-center group">
<span>Geode on Microsoft Azure</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="geode-on-microsoft-azure"
aria-haspopup="dialog"
aria-label="Share link: Geode on Microsoft Azure">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h2><div id="headingShareModal" class="heading-share-modal" role="dialog" aria-modal="true" aria-labelledby="headingShareTitle" hidden>
<div class="hsm-dialog" role="document">
<div class="hsm-header">
<h2 id="headingShareTitle" class="h6 mb-0 fw-bold">Share this section</h2>
<button type="button" class="hsm-close" aria-label="Close">
<i class="fa-solid fa-xmark"></i>
</button>
</div>
<div class="hsm-body">
<label for="headingShareInput" class="form-label small text-muted mb-1 text-uppercase fw-bold" style="font-size: 0.7rem; letter-spacing: 0.5px;">Permalink</label>
<div class="input-group mb-4 hsm-url-group">
<input id="headingShareInput" type="text" class="form-control font-monospace" readonly aria-readonly="true" style="font-size: 0.85rem;" />
<button class="btn btn-primary hsm-copy" type="button" aria-label="Copy" title="Copy">
<i class="fa-duotone fa-clipboard" aria-hidden="true"></i>
</button>
</div>
<div class="small fw-bold mb-2 text-muted text-uppercase" style="font-size: 0.7rem; letter-spacing: 0.5px;">Share via</div>
<div class="hsm-share-grid">
<a id="share-twitter" class="btn btn-outline-secondary w-100" target="_blank" rel="noopener noreferrer">
<i class="fa-brands fa-twitter me-2"></i>Twitter
</a>
<a id="share-linkedin" class="btn btn-outline-secondary w-100" target="_blank" rel="noopener noreferrer">
<i class="fa-brands fa-linkedin me-2"></i>LinkedIn
</a>
<a id="share-facebook" class="btn btn-outline-secondary w-100" target="_blank" rel="noopener noreferrer">
<i class="fa-brands fa-facebook me-2"></i>Facebook
</a>
</div>
</div>
</div>
</div>
<style>
.heading-share-modal {
position: fixed;
inset: 0;
display: flex;
justify-content: center;
align-items: center;
background: rgba(0, 0, 0, 0.6);
z-index: 1050;
padding: 1rem;
backdrop-filter: blur(4px);
-webkit-backdrop-filter: blur(4px);
}
.heading-share-modal[hidden] { display: none !important; }
.hsm-dialog {
max-width: 420px;
width: 100%;
background: var(--bs-body-bg, #fff);
color: var(--bs-body-color, #212529);
border: 1px solid var(--bs-border-color, rgba(0,0,0,0.1));
border-radius: 1rem;
box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25);
overflow: hidden;
animation: hsm-fade-in 0.2s ease-out;
}
@keyframes hsm-fade-in {
from { opacity: 0; transform: scale(0.95); }
to { opacity: 1; transform: scale(1); }
}
[data-bs-theme="dark"] .hsm-dialog {
background: #1e293b;
border-color: rgba(255,255,255,0.1);
color: #f8f9fa;
}
.hsm-header {
display: flex;
justify-content: space-between;
align-items: center;
padding: 1rem 1.5rem;
border-bottom: 1px solid var(--bs-border-color, rgba(0,0,0,0.1));
background: rgba(0,0,0,0.02);
}
[data-bs-theme="dark"] .hsm-header {
background: rgba(255,255,255,0.02);
border-color: rgba(255,255,255,0.1);
}
.hsm-close {
background: transparent;
border: none;
color: inherit;
opacity: 0.5;
padding: 0.25rem 0.5rem;
border-radius: 0.25rem;
font-size: 1.2rem;
line-height: 1;
transition: opacity 0.2s;
}
.hsm-close:hover {
opacity: 1;
}
.hsm-body {
padding: 1.5rem;
}
.hsm-url-group {
display: flex !important;
align-items: stretch;
}
.hsm-url-group .form-control {
flex: 1;
min-width: 0;
margin: 0;
background: var(--bs-secondary-bg, #f8f9fa);
border-color: var(--bs-border-color, #dee2e6);
border-top-right-radius: 0;
border-bottom-right-radius: 0;
height: 42px;
}
.hsm-url-group .btn {
flex: 0 0 auto;
margin: 0;
margin-left: -1px;
border-top-left-radius: 0;
border-bottom-left-radius: 0;
height: 42px;
display: flex;
align-items: center;
justify-content: center;
padding: 0 1.25rem;
z-index: 2;
}
[data-bs-theme="dark"] .hsm-url-group .form-control {
background: #0f172a;
border-color: #334155;
color: #e2e8f0;
}
.hsm-share-grid {
display: flex;
flex-direction: column;
gap: 0.5rem;
}
.hsm-share-grid .btn {
display: flex;
align-items: center;
justify-content: center;
font-size: 0.9rem;
padding: 0.6rem;
border-color: var(--bs-border-color);
width: 100%;
}
[data-bs-theme="dark"] .hsm-share-grid .btn {
color: #e2e8f0;
border-color: #475569;
}
[data-bs-theme="dark"] .hsm-share-grid .btn:hover {
background: #334155;
border-color: #cbd5e1;
}
</style>
<script>
(function(){
const modal = document.getElementById('headingShareModal');
if(!modal) return;
const input = modal.querySelector('#headingShareInput');
const copyBtn = modal.querySelector('.hsm-copy');
const twitter = modal.querySelector('#share-twitter');
const linkedin = modal.querySelector('#share-linkedin');
const facebook = modal.querySelector('#share-facebook');
const closeBtn = modal.querySelector('.hsm-close');
let lastFocus=null;
let trapBound=false;
function buildUrl(id){ return window.location.origin + window.location.pathname + '#' + id; }
function isOpen(){ return !modal.hasAttribute('hidden'); }
function hydrate(id){
const url=buildUrl(id);
input.value=url;
const enc=encodeURIComponent(url);
const text=encodeURIComponent(document.title);
if(twitter) twitter.href=`https://twitter.com/intent/tweet?url=${enc}&text=${text}`;
if(linkedin) linkedin.href=`https://www.linkedin.com/sharing/share-offsite/?url=${enc}`;
if(facebook) facebook.href=`https://www.facebook.com/sharer/sharer.php?u=${enc}`;
}
function openModal(id){
lastFocus=document.activeElement;
hydrate(id);
if(!isOpen()){
modal.removeAttribute('hidden');
}
requestAnimationFrame(()=>{ input.focus(); });
trapFocus();
}
function closeModal(){
if(!isOpen()) return;
modal.setAttribute('hidden','');
if(lastFocus && typeof lastFocus.focus==='function') lastFocus.focus();
}
function copyCurrent(){
try{ navigator.clipboard.writeText(input.value).then(()=>feedback(true),()=>fallback()); }
catch(e){ fallback(); }
}
function fallback(){ input.select(); try{ document.execCommand('copy'); feedback(true);}catch(e){ feedback(false);} }
function feedback(ok){ if(!copyBtn) return; const icon=copyBtn.querySelector('i'); if(!icon) return; const prev=copyBtn.getAttribute('data-prev')||icon.className; if(!copyBtn.getAttribute('data-prev')) copyBtn.setAttribute('data-prev',prev); icon.className= ok ? 'fa-duotone fa-clipboard-check':'fa-duotone fa-circle-exclamation'; setTimeout(()=>{ icon.className=prev; },1800); }
function handleShareClick(e){ e.preventDefault(); const btn=e.currentTarget; const id=btn.getAttribute('data-share-target'); if(id) openModal(id); }
function bindShareButtons(){
document.querySelectorAll('.h-share').forEach(btn=>{
if(!btn.dataset.hShareBound){ btn.addEventListener('click', handleShareClick); btn.dataset.hShareBound='1'; }
});
}
bindShareButtons();
if(document.readyState==='loading'){
document.addEventListener('DOMContentLoaded', bindShareButtons);
} else {
requestAnimationFrame(bindShareButtons);
}
document.addEventListener('click', function(e){
const shareBtn=e.target.closest && e.target.closest('.h-share');
if(shareBtn && !shareBtn.dataset.hShareBound){ handleShareClick.call(shareBtn, e); }
}, true);
document.addEventListener('click', e=>{
if(e.target===modal) closeModal();
if(e.target.closest && e.target.closest('.hsm-close')){ e.preventDefault(); closeModal(); }
if(copyBtn && (e.target===copyBtn || (e.target.closest && e.target.closest('.hsm-copy')))) { e.preventDefault(); copyCurrent(); }
});
document.addEventListener('keydown', e=>{ if(e.key==='Escape' && isOpen()) closeModal(); });
function trapFocus(){
if(trapBound) return;
trapBound=true;
modal.addEventListener('keydown', f=>{ if(f.key==='Tab' && isOpen()){ const focusable=[...modal.querySelectorAll('a[href],button,input,textarea,select,[tabindex]:not([tabindex="-1"])')].filter(el=>!el.hasAttribute('disabled')); if(!focusable.length) return; const first=focusable[0]; const last=focusable[focusable.length-1]; if(f.shiftKey && document.activeElement===first){ f.preventDefault(); last.focus(); } else if(!f.shiftKey && document.activeElement===last){ f.preventDefault(); first.focus(); } } });
}
if(closeBtn) closeBtn.addEventListener('click', e=>{ e.preventDefault(); closeModal(); });
})();
</script><p>Microsoft Azure provides enterprise-grade cloud infrastructure for deploying Geode graph database with comprehensive managed services, global reach, hybrid cloud capabilities, and deep integration with Microsoft’s ecosystem. This guide covers production-ready deployment patterns, best practices, and Azure-specific optimizations.</p>
<h3 id="azure-deployment-options" class="position-relative d-flex align-items-center group">
<span>Azure Deployment Options</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="azure-deployment-options"
aria-haspopup="dialog"
aria-label="Share link: Azure Deployment Options">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h3>
<h4 id="azure-virtual-machines" class="position-relative d-flex align-items-center group">
<span>Azure Virtual Machines</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="azure-virtual-machines"
aria-haspopup="dialog"
aria-label="Share link: Azure Virtual Machines">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><p>Deploy Geode on dedicated VMs for maximum control and performance.</p>
<p><strong>Recommended VM Series</strong>:</p>
<p><strong>General Purpose (Development/Testing)</strong>:</p>
<ul>
<li><strong>D-Series v5</strong>: Balanced compute and memory
<ul>
<li>D4s_v5: 4 vCPUs, 16 GB RAM (small workloads)</li>
<li>D8s_v5: 8 vCPUs, 32 GB RAM (medium workloads)</li>
<li>D16s_v5: 16 vCPUs, 64 GB RAM (large workloads)</li>
</ul>
</li>
</ul>
<p><strong>Memory Optimized (Production)</strong>:</p>
<ul>
<li><strong>E-Series v5</strong>: High memory-to-CPU ratio for graph workloads
<ul>
<li>E8s_v5: 8 vCPUs, 64 GB RAM</li>
<li>E16s_v5: 16 vCPUs, 128 GB RAM</li>
<li>E32s_v5: 32 vCPUs, 256 GB RAM</li>
</ul>
</li>
</ul>
<p><strong>Compute Optimized</strong>:</p>
<ul>
<li><strong>F-Series v2</strong>: High CPU performance for query-intensive workloads
<ul>
<li>F8s_v2: 8 vCPUs, 16 GB RAM</li>
<li>F16s_v2: 16 vCPUs, 32 GB RAM</li>
</ul>
</li>
</ul>
<p><strong>Storage Optimized</strong>:</p>
<ul>
<li><strong>L-Series v3</strong>: Large local NVMe storage
<ul>
<li>L8s_v3: 8 vCPUs, 64 GB RAM, 1.92 TB NVMe</li>
<li>L16s_v3: 16 vCPUs, 128 GB RAM, 3.84 TB NVMe</li>
</ul>
</li>
</ul>
<h4 id="azure-kubernetes-service-aks" class="position-relative d-flex align-items-center group">
<span>Azure Kubernetes Service (AKS)</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="azure-kubernetes-service-aks"
aria-haspopup="dialog"
aria-label="Share link: Azure Kubernetes Service (AKS)">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><p>Deploy Geode on AKS for automatic scaling, rolling updates, and orchestration.</p>
<p><strong>Benefits</strong>:</p>
<ul>
<li>Managed Kubernetes control plane</li>
<li>Auto-scaling (HPA and Cluster Autoscaler)</li>
<li>Integration with Azure Active Directory</li>
<li>Built-in monitoring with Azure Monitor</li>
<li>Automatic security patches and updates</li>
</ul>
<p><strong>Node Pool Configuration</strong>:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Create AKS cluster with system node pool</span>
</span></span><span class="line"><span class="cl">az aks create <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --resource-group geode-rg <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --name geode-cluster <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --node-count <span class="m">3</span> <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --node-vm-size Standard_D4s_v5 <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --enable-managed-identity <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --enable-cluster-autoscaler <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --min-count <span class="m">3</span> <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --max-count <span class="m">10</span> <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --network-plugin azure <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --enable-addons monitoring <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --location eastus
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Add memory-optimized node pool for Geode</span>
</span></span><span class="line"><span class="cl">az aks nodepool add <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --resource-group geode-rg <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --cluster-name geode-cluster <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --name geodepool <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --node-count <span class="m">3</span> <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --node-vm-size Standard_E8s_v5 <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --node-taints <span class="nv">workload</span><span class="o">=</span>geode:NoSchedule <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --labels <span class="nv">workload</span><span class="o">=</span>geode <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --enable-cluster-autoscaler <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --min-count <span class="m">3</span> <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --max-count <span class="m">12</span>
</span></span></code></pre></div>
<h4 id="azure-container-instances-aci" class="position-relative d-flex align-items-center group">
<span>Azure Container Instances (ACI)</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="azure-container-instances-aci"
aria-haspopup="dialog"
aria-label="Share link: Azure Container Instances (ACI)">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><p>Quick deployment for development and testing:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Deploy single Geode instance</span>
</span></span><span class="line"><span class="cl">az container create <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --resource-group geode-rg <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --name geode-dev <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --image geodedb/geode:latest <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --cpu <span class="m">4</span> <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --memory <span class="m">16</span> <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --ports <span class="m">3141</span> <span class="m">8443</span> <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --dns-name-label geode-dev <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --environment-variables <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> <span class="nv">GEODE_LOG_LEVEL</span><span class="o">=</span>info <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --location eastus
</span></span></code></pre></div>
<h3 id="vm-deployment-guide" class="position-relative d-flex align-items-center group">
<span>VM Deployment Guide</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="vm-deployment-guide"
aria-haspopup="dialog"
aria-label="Share link: VM Deployment Guide">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h3>
<h4 id="single-instance-deployment" class="position-relative d-flex align-items-center group">
<span>Single-Instance Deployment</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="single-instance-deployment"
aria-haspopup="dialog"
aria-label="Share link: Single-Instance Deployment">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><p><strong>1. Create Resource Group</strong>:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">az group create <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --name geode-rg <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --location eastus
</span></span></code></pre></div><p><strong>2. Create Virtual Network</strong>:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">az network vnet create <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --resource-group geode-rg <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --name geode-vnet <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --address-prefix 10.0.0.0/16 <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --subnet-name geode-subnet <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --subnet-prefix 10.0.1.0/24
</span></span></code></pre></div><p><strong>3. Create Network Security Group</strong>:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">az network nsg create <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --resource-group geode-rg <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --name geode-nsg
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Allow QUIC (3141)</span>
</span></span><span class="line"><span class="cl">az network nsg rule create <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --resource-group geode-rg <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --nsg-name geode-nsg <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --name AllowQuic <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --priority <span class="m">100</span> <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --source-address-prefixes <span class="s1">'*'</span> <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --destination-port-ranges <span class="m">3141</span> <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --protocol Udp <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --access Allow
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Allow HTTPS (8443)</span>
</span></span><span class="line"><span class="cl">az network nsg rule create <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --resource-group geode-rg <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --nsg-name geode-nsg <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --name AllowHttps <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --priority <span class="m">101</span> <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --source-address-prefixes <span class="s1">'*'</span> <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --destination-port-ranges <span class="m">8443</span> <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --protocol Tcp <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --access Allow
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Allow SSH</span>
</span></span><span class="line"><span class="cl">az network nsg rule create <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --resource-group geode-rg <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --nsg-name geode-nsg <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --name AllowSsh <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --priority <span class="m">102</span> <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --source-address-prefixes <span class="s1">'YOUR_IP/32'</span> <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --destination-port-ranges <span class="m">22</span> <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --protocol Tcp <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --access Allow
</span></span></code></pre></div><p><strong>4. Create VM with Premium SSD</strong>:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">az vm create <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --resource-group geode-rg <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --name geode-vm-01 <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --image Ubuntu2204 <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --size Standard_E8s_v5 <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --vnet-name geode-vnet <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --subnet geode-subnet <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --nsg geode-nsg <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --storage-sku Premium_LRS <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --os-disk-size-gb <span class="m">128</span> <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --data-disk-sizes-gb <span class="m">512</span> <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --admin-username azureuser <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --ssh-key-values ~/.ssh/id_rsa.pub <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --public-ip-sku Standard
</span></span></code></pre></div><p><strong>5. Install Geode</strong>:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># SSH into VM</span>
</span></span><span class="line"><span class="cl">ssh azureuser@<VM_PUBLIC_IP>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Install Docker</span>
</span></span><span class="line"><span class="cl">curl -fsSL https://get.docker.com -o get-docker.sh
</span></span><span class="line"><span class="cl">sh get-docker.sh
</span></span><span class="line"><span class="cl">sudo usermod -aG docker <span class="nv">$USER</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Mount data disk</span>
</span></span><span class="line"><span class="cl">sudo mkfs.ext4 /dev/sdc
</span></span><span class="line"><span class="cl">sudo mkdir /data
</span></span><span class="line"><span class="cl">sudo mount /dev/sdc /data
</span></span><span class="line"><span class="cl"><span class="nb">echo</span> <span class="s1">'/dev/sdc /data ext4 defaults 0 0'</span> <span class="p">|</span> sudo tee -a /etc/fstab
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Run Geode</span>
</span></span><span class="line"><span class="cl">docker run -d <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --name geode <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --restart always <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> -p 3141:3141/udp <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> -p 8443:8443/tcp <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> -v /data:/var/lib/geode <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> -e <span class="nv">GEODE_DATA_DIR</span><span class="o">=</span>/var/lib/geode <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> geodedb/geode:latest serve --listen 0.0.0.0:3141
</span></span></code></pre></div>
<h4 id="high-availability-deployment" class="position-relative d-flex align-items-center group">
<span>High-Availability Deployment</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="high-availability-deployment"
aria-haspopup="dialog"
aria-label="Share link: High-Availability Deployment">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><p>Deploy multiple VMs with Azure Load Balancer:</p>
<p><strong>1. Create Availability Set</strong>:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">az vm availability-set create <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --resource-group geode-rg <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --name geode-avset <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --platform-fault-domain-count <span class="m">2</span> <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --platform-update-domain-count <span class="m">5</span>
</span></span></code></pre></div><p><strong>2. Create Load Balancer</strong>:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">az network lb create <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --resource-group geode-rg <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --name geode-lb <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --sku Standard <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --vnet-name geode-vnet <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --subnet geode-subnet <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --backend-pool-name geode-backend <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --frontend-ip-name geode-frontend
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Create health probe</span>
</span></span><span class="line"><span class="cl">az network lb probe create <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --resource-group geode-rg <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --lb-name geode-lb <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --name geode-health <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --protocol tcp <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --port <span class="m">8443</span> <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --interval <span class="m">30</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Create load balancing rule (QUIC)</span>
</span></span><span class="line"><span class="cl">az network lb rule create <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --resource-group geode-rg <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --lb-name geode-lb <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --name GeodeQuic <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --protocol Udp <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --frontend-port <span class="m">3141</span> <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --backend-port <span class="m">3141</span> <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --frontend-ip-name geode-frontend <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --backend-pool-name geode-backend <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --probe-name geode-health
</span></span></code></pre></div><p><strong>3. Create Multiple VMs</strong>:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="k">for</span> i in <span class="o">{</span>1..3<span class="o">}</span><span class="p">;</span> <span class="k">do</span>
</span></span><span class="line"><span class="cl"> az vm create <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --resource-group geode-rg <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --name geode-vm-0<span class="nv">$i</span> <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --availability-set geode-avset <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --image Ubuntu2204 <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --size Standard_E8s_v5 <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --vnet-name geode-vnet <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --subnet geode-subnet <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --nsg geode-nsg <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --storage-sku Premium_LRS <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --os-disk-size-gb <span class="m">128</span> <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --data-disk-sizes-gb <span class="m">512</span> <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --admin-username azureuser <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --ssh-key-values ~/.ssh/id_rsa.pub <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --lb-name geode-lb <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --backend-pool-name geode-backend
</span></span><span class="line"><span class="cl"><span class="k">done</span>
</span></span></code></pre></div>
<h3 id="aks-deployment" class="position-relative d-flex align-items-center group">
<span>AKS Deployment</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="aks-deployment"
aria-haspopup="dialog"
aria-label="Share link: AKS Deployment">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h3>
<h4 id="kubernetes-manifests" class="position-relative d-flex align-items-center group">
<span>Kubernetes Manifests</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="kubernetes-manifests"
aria-haspopup="dialog"
aria-label="Share link: Kubernetes Manifests">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><p><strong>Namespace and ConfigMap</strong>:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="c"># namespace.yaml</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">apiVersion</span><span class="p">:</span><span class="w"> </span><span class="l">v1</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">kind</span><span class="p">:</span><span class="w"> </span><span class="l">Namespace</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">metadata</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l">geode</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nn">---</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="c"># configmap.yaml</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">apiVersion</span><span class="p">:</span><span class="w"> </span><span class="l">v1</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">kind</span><span class="p">:</span><span class="w"> </span><span class="l">ConfigMap</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">metadata</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l">geode-config</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">namespace</span><span class="p">:</span><span class="w"> </span><span class="l">geode</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">data</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">geode.conf</span><span class="p">:</span><span class="w"> </span><span class="p">|</span><span class="sd">
</span></span></span><span class="line"><span class="cl"><span class="sd"> log_level = "info"
</span></span></span><span class="line"><span class="cl"><span class="sd"> data_dir = "/var/lib/geode"
</span></span></span><span class="line"><span class="cl"><span class="sd"> listen_addr = "0.0.0.0:3141"</span><span class="w">
</span></span></span></code></pre></div><p><strong>StatefulSet with Azure Disk</strong>:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="c"># statefulset.yaml</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">apiVersion</span><span class="p">:</span><span class="w"> </span><span class="l">apps/v1</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">kind</span><span class="p">:</span><span class="w"> </span><span class="l">StatefulSet</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">metadata</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l">geode</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">namespace</span><span class="p">:</span><span class="w"> </span><span class="l">geode</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">spec</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">serviceName</span><span class="p">:</span><span class="w"> </span><span class="l">geode</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">replicas</span><span class="p">:</span><span class="w"> </span><span class="m">3</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">selector</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">matchLabels</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">app</span><span class="p">:</span><span class="w"> </span><span class="l">geode</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">template</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">metadata</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">labels</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">app</span><span class="p">:</span><span class="w"> </span><span class="l">geode</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">spec</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">nodeSelector</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">workload</span><span class="p">:</span><span class="w"> </span><span class="l">geode</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">tolerations</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">key</span><span class="p">:</span><span class="w"> </span><span class="l">workload</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">operator</span><span class="p">:</span><span class="w"> </span><span class="l">Equal</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">value</span><span class="p">:</span><span class="w"> </span><span class="l">geode</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">effect</span><span class="p">:</span><span class="w"> </span><span class="l">NoSchedule</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">containers</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l">geode</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">image</span><span class="p">:</span><span class="w"> </span><span class="l">geodedb/geode:latest</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">ports</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">containerPort</span><span class="p">:</span><span class="w"> </span><span class="m">3141</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">protocol</span><span class="p">:</span><span class="w"> </span><span class="l">UDP</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l">quic</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">containerPort</span><span class="p">:</span><span class="w"> </span><span class="m">8443</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">protocol</span><span class="p">:</span><span class="w"> </span><span class="l">TCP</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l">https</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">env</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l">GEODE_DATA_DIR</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">value</span><span class="p">:</span><span class="w"> </span><span class="l">/var/lib/geode</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l">GEODE_LOG_LEVEL</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">value</span><span class="p">:</span><span class="w"> </span><span class="l">info</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">resources</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">requests</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">memory</span><span class="p">:</span><span class="w"> </span><span class="s2">"32Gi"</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">cpu</span><span class="p">:</span><span class="w"> </span><span class="s2">"4"</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">limits</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">memory</span><span class="p">:</span><span class="w"> </span><span class="s2">"64Gi"</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">cpu</span><span class="p">:</span><span class="w"> </span><span class="s2">"8"</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">volumeMounts</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l">data</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">mountPath</span><span class="p">:</span><span class="w"> </span><span class="l">/var/lib/geode</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l">config</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">mountPath</span><span class="p">:</span><span class="w"> </span><span class="l">/etc/geode</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">livenessProbe</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">httpGet</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">path</span><span class="p">:</span><span class="w"> </span><span class="l">/health</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">port</span><span class="p">:</span><span class="w"> </span><span class="m">8443</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">scheme</span><span class="p">:</span><span class="w"> </span><span class="l">HTTPS</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">initialDelaySeconds</span><span class="p">:</span><span class="w"> </span><span class="m">30</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">periodSeconds</span><span class="p">:</span><span class="w"> </span><span class="m">10</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">readinessProbe</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">httpGet</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">path</span><span class="p">:</span><span class="w"> </span><span class="l">/ready</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">port</span><span class="p">:</span><span class="w"> </span><span class="m">8443</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">scheme</span><span class="p">:</span><span class="w"> </span><span class="l">HTTPS</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">initialDelaySeconds</span><span class="p">:</span><span class="w"> </span><span class="m">10</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">periodSeconds</span><span class="p">:</span><span class="w"> </span><span class="m">5</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">volumes</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l">config</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">configMap</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l">geode-config</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">volumeClaimTemplates</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">metadata</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l">data</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">spec</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">accessModes</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w"> </span><span class="s2">"ReadWriteOnce"</span><span class="w"> </span><span class="p">]</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">storageClassName</span><span class="p">:</span><span class="w"> </span><span class="l">managed-premium</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">resources</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">requests</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">storage</span><span class="p">:</span><span class="w"> </span><span class="l">512Gi</span><span class="w">
</span></span></span></code></pre></div><p><strong>Service (Internal Load Balancer)</strong>:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="c"># service.yaml</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">apiVersion</span><span class="p">:</span><span class="w"> </span><span class="l">v1</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">kind</span><span class="p">:</span><span class="w"> </span><span class="l">Service</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">metadata</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l">geode</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">namespace</span><span class="p">:</span><span class="w"> </span><span class="l">geode</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">annotations</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">service.beta.kubernetes.io/azure-load-balancer-internal</span><span class="p">:</span><span class="w"> </span><span class="s2">"true"</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">spec</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">type</span><span class="p">:</span><span class="w"> </span><span class="l">LoadBalancer</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">selector</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">app</span><span class="p">:</span><span class="w"> </span><span class="l">geode</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">ports</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l">quic</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">port</span><span class="p">:</span><span class="w"> </span><span class="m">3141</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">protocol</span><span class="p">:</span><span class="w"> </span><span class="l">UDP</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l">https</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">port</span><span class="p">:</span><span class="w"> </span><span class="m">8443</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">protocol</span><span class="p">:</span><span class="w"> </span><span class="l">TCP</span><span class="w">
</span></span></span></code></pre></div><p><strong>HorizontalPodAutoscaler</strong>:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="c"># hpa.yaml</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">apiVersion</span><span class="p">:</span><span class="w"> </span><span class="l">autoscaling/v2</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">kind</span><span class="p">:</span><span class="w"> </span><span class="l">HorizontalPodAutoscaler</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">metadata</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l">geode</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">namespace</span><span class="p">:</span><span class="w"> </span><span class="l">geode</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">spec</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">scaleTargetRef</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">apiVersion</span><span class="p">:</span><span class="w"> </span><span class="l">apps/v1</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">kind</span><span class="p">:</span><span class="w"> </span><span class="l">StatefulSet</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l">geode</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">minReplicas</span><span class="p">:</span><span class="w"> </span><span class="m">3</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">maxReplicas</span><span class="p">:</span><span class="w"> </span><span class="m">12</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">metrics</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">type</span><span class="p">:</span><span class="w"> </span><span class="l">Resource</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">resource</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l">cpu</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">target</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">type</span><span class="p">:</span><span class="w"> </span><span class="l">Utilization</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">averageUtilization</span><span class="p">:</span><span class="w"> </span><span class="m">70</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">type</span><span class="p">:</span><span class="w"> </span><span class="l">Resource</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">resource</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l">memory</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">target</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">type</span><span class="p">:</span><span class="w"> </span><span class="l">Utilization</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">averageUtilization</span><span class="p">:</span><span class="w"> </span><span class="m">80</span><span class="w">
</span></span></span></code></pre></div><p><strong>Deploy to AKS</strong>:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Get AKS credentials</span>
</span></span><span class="line"><span class="cl">az aks get-credentials <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --resource-group geode-rg <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --name geode-cluster
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Apply manifests</span>
</span></span><span class="line"><span class="cl">kubectl apply -f namespace.yaml
</span></span><span class="line"><span class="cl">kubectl apply -f configmap.yaml
</span></span><span class="line"><span class="cl">kubectl apply -f statefulset.yaml
</span></span><span class="line"><span class="cl">kubectl apply -f service.yaml
</span></span><span class="line"><span class="cl">kubectl apply -f hpa.yaml
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Verify deployment</span>
</span></span><span class="line"><span class="cl">kubectl get pods -n geode
</span></span><span class="line"><span class="cl">kubectl get svc -n geode
</span></span></code></pre></div>
<h3 id="storage-options" class="position-relative d-flex align-items-center group">
<span>Storage Options</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="storage-options"
aria-haspopup="dialog"
aria-label="Share link: Storage Options">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h3>
<h4 id="azure-managed-disks" class="position-relative d-flex align-items-center group">
<span>Azure Managed Disks</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="azure-managed-disks"
aria-haspopup="dialog"
aria-label="Share link: Azure Managed Disks">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><p><strong>Premium SSD (P-Series)</strong>:</p>
<ul>
<li>P30: 1 TB, 5000 IOPS, 200 MB/s</li>
<li>P40: 2 TB, 7500 IOPS, 250 MB/s</li>
<li>P50: 4 TB, 7500 IOPS, 250 MB/s</li>
<li>P60: 8 TB, 16000 IOPS, 500 MB/s</li>
</ul>
<p>Best for production Geode workloads with predictable performance.</p>
<p><strong>Premium SSD v2</strong>:</p>
<ul>
<li>Configurable IOPS and throughput independent of size</li>
<li>Up to 64 TB per disk</li>
<li>Up to 80,000 IOPS and 1,200 MB/s per disk</li>
</ul>
<p>Ideal for high-performance requirements.</p>
<p><strong>Ultra Disk</strong>:</p>
<ul>
<li>Up to 64 TB per disk</li>
<li>Up to 160,000 IOPS and 4,000 MB/s</li>
<li>Sub-millisecond latency</li>
</ul>
<p>For extreme performance needs (financial services, real-time analytics).</p>
<h4 id="azure-files" class="position-relative d-flex align-items-center group">
<span>Azure Files</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="azure-files"
aria-haspopup="dialog"
aria-label="Share link: Azure Files">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><p>SMB or NFS file shares for shared storage:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Create storage account</span>
</span></span><span class="line"><span class="cl">az storage account create <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --resource-group geode-rg <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --name geodestorage <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --sku Premium_LRS <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --kind FileStorage
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Create file share</span>
</span></span><span class="line"><span class="cl">az storage share create <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --account-name geodestorage <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --name geode-backup <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --quota <span class="m">1024</span>
</span></span></code></pre></div>
<h4 id="azure-blob-storage" class="position-relative d-flex align-items-center group">
<span>Azure Blob Storage</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="azure-blob-storage"
aria-haspopup="dialog"
aria-label="Share link: Azure Blob Storage">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><p>For backups and long-term archival:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Create storage account</span>
</span></span><span class="line"><span class="cl">az storage account create <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --resource-group geode-rg <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --name geodebackup <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --sku Standard_LRS <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --kind StorageV2 <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --access-tier Hot
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Create container</span>
</span></span><span class="line"><span class="cl">az storage container create <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --account-name geodebackup <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --name geode-backups
</span></span></code></pre></div>
<h3 id="monitoring-and-observability" class="position-relative d-flex align-items-center group">
<span>Monitoring and Observability</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="monitoring-and-observability"
aria-haspopup="dialog"
aria-label="Share link: Monitoring and Observability">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h3>
<h4 id="azure-monitor-integration" class="position-relative d-flex align-items-center group">
<span>Azure Monitor Integration</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="azure-monitor-integration"
aria-haspopup="dialog"
aria-label="Share link: Azure Monitor Integration">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><p><strong>Enable Container Insights for AKS</strong>:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">az aks enable-addons <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --resource-group geode-rg <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --name geode-cluster <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --addons monitoring
</span></span></code></pre></div><p><strong>Create Log Analytics Workspace</strong>:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">az monitor log-analytics workspace create <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --resource-group geode-rg <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --workspace-name geode-logs <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --location eastus
</span></span></code></pre></div><p><strong>Custom Metrics</strong>:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Install Azure Monitor Agent on VM</span>
</span></span><span class="line"><span class="cl">az vm extension <span class="nb">set</span> <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --resource-group geode-rg <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --vm-name geode-vm-01 <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --name AzureMonitorLinuxAgent <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --publisher Microsoft.Azure.Monitor
</span></span></code></pre></div><p><strong>KQL Queries for Geode</strong>:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">// Query latency percentiles
</span></span><span class="line"><span class="cl">ContainerLog
</span></span><span class="line"><span class="cl">| where ContainerName contains "geode"
</span></span><span class="line"><span class="cl">| where LogEntry contains "query_duration"
</span></span><span class="line"><span class="cl">| extend Duration = extract("duration=([0-9.]+)", 1, LogEntry)
</span></span><span class="line"><span class="cl">| summarize
</span></span><span class="line"><span class="cl"> p50=percentile(todouble(Duration), 50),
</span></span><span class="line"><span class="cl"> p95=percentile(todouble(Duration), 95),
</span></span><span class="line"><span class="cl"> p99=percentile(todouble(Duration), 99)
</span></span><span class="line"><span class="cl"> by bin(TimeGenerated, 5m)
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">// Connection count
</span></span><span class="line"><span class="cl">ContainerLog
</span></span><span class="line"><span class="cl">| where ContainerName contains "geode"
</span></span><span class="line"><span class="cl">| where LogEntry contains "connection_count"
</span></span><span class="line"><span class="cl">| extend Count = extract("count=([0-9]+)", 1, LogEntry)
</span></span><span class="line"><span class="cl">| summarize avg(toint(Count)) by bin(TimeGenerated, 1m)
</span></span></code></pre></div>
<h4 id="application-insights" class="position-relative d-flex align-items-center group">
<span>Application Insights</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="application-insights"
aria-haspopup="dialog"
aria-label="Share link: Application Insights">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><p>Instrument Geode clients with Application Insights:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="c1"># Python client with App Insights</span>
</span></span><span class="line"><span class="cl"><span class="kn">from</span> <span class="nn">azure.monitor.opentelemetry</span> <span class="kn">import</span> <span class="n">configure_azure_monitor</span>
</span></span><span class="line"><span class="cl"><span class="kn">import</span> <span class="nn">geode_client</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="n">configure_azure_monitor</span><span class="p">(</span>
</span></span><span class="line"><span class="cl"> <span class="n">connection_string</span><span class="o">=</span><span class="s2">"InstrumentationKey=..."</span>
</span></span><span class="line"><span class="cl"><span class="p">)</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="n">client</span> <span class="o">=</span> <span class="n">geode_client</span><span class="o">.</span><span class="n">open_database</span><span class="p">()</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">async</span> <span class="k">with</span> <span class="n">client</span><span class="o">.</span><span class="n">connection</span><span class="p">()</span> <span class="k">as</span> <span class="n">conn</span><span class="p">:</span>
</span></span><span class="line"><span class="cl"> <span class="n">result</span><span class="p">,</span> <span class="n">_</span> <span class="o">=</span> <span class="k">await</span> <span class="n">conn</span><span class="o">.</span><span class="n">query</span><span class="p">(</span><span class="s2">"MATCH (u:User) RETURN COUNT(u)"</span><span class="p">)</span>
</span></span></code></pre></div>
<h4 id="metrics-dashboards" class="position-relative d-flex align-items-center group">
<span>Metrics Dashboards</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="metrics-dashboards"
aria-haspopup="dialog"
aria-label="Share link: Metrics Dashboards">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><p>Create Azure Dashboard for Geode metrics:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">az portal dashboard create <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --resource-group geode-rg <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --name geode-dashboard <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --input-path dashboard.json
</span></span></code></pre></div>
<h3 id="security" class="position-relative d-flex align-items-center group">
<span>Security</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="security"
aria-haspopup="dialog"
aria-label="Share link: Security">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h3>
<h4 id="azure-active-directory-integration" class="position-relative d-flex align-items-center group">
<span>Azure Active Directory Integration</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="azure-active-directory-integration"
aria-haspopup="dialog"
aria-label="Share link: Azure Active Directory Integration">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><p><strong>Managed Identity for AKS</strong>:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Enable managed identity</span>
</span></span><span class="line"><span class="cl">az aks update <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --resource-group geode-rg <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --name geode-cluster <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --enable-managed-identity
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Grant Key Vault access</span>
</span></span><span class="line"><span class="cl">az keyvault set-policy <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --name geode-keyvault <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --object-id <span class="k">$(</span>az aks show -g geode-rg -n geode-cluster <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --query identityProfile.kubeletidentity.objectId -o tsv<span class="k">)</span> <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --secret-permissions get list
</span></span></code></pre></div>
<h4 id="azure-key-vault" class="position-relative d-flex align-items-center group">
<span>Azure Key Vault</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="azure-key-vault"
aria-haspopup="dialog"
aria-label="Share link: Azure Key Vault">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><p>Store TLS certificates and secrets:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Create Key Vault</span>
</span></span><span class="line"><span class="cl">az keyvault create <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --resource-group geode-rg <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --name geode-keyvault <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --location eastus
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Store TLS certificate</span>
</span></span><span class="line"><span class="cl">az keyvault certificate import <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --vault-name geode-keyvault <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --name geode-tls-cert <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --file geode-cert.pfx
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Store database password</span>
</span></span><span class="line"><span class="cl">az keyvault secret <span class="nb">set</span> <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --vault-name geode-keyvault <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --name geode-admin-password <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --value <span class="s2">"SecurePassword123!"</span>
</span></span></code></pre></div><p><strong>Access from Kubernetes</strong>:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="c"># Use CSI driver for secrets</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">apiVersion</span><span class="p">:</span><span class="w"> </span><span class="l">v1</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">kind</span><span class="p">:</span><span class="w"> </span><span class="l">SecretProviderClass</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">metadata</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l">geode-secrets</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">namespace</span><span class="p">:</span><span class="w"> </span><span class="l">geode</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">spec</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">provider</span><span class="p">:</span><span class="w"> </span><span class="l">azure</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">parameters</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">keyvaultName</span><span class="p">:</span><span class="w"> </span><span class="l">geode-keyvault</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">objects</span><span class="p">:</span><span class="w"> </span><span class="p">|</span><span class="sd">
</span></span></span><span class="line"><span class="cl"><span class="sd"> array:
</span></span></span><span class="line"><span class="cl"><span class="sd"> - |
</span></span></span><span class="line"><span class="cl"><span class="sd"> objectName: geode-tls-cert
</span></span></span><span class="line"><span class="cl"><span class="sd"> objectType: secret
</span></span></span><span class="line"><span class="cl"><span class="sd"> - |
</span></span></span><span class="line"><span class="cl"><span class="sd"> objectName: geode-admin-password
</span></span></span><span class="line"><span class="cl"><span class="sd"> objectType: secret</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">tenantId</span><span class="p">:</span><span class="w"> </span><span class="s2">"YOUR_TENANT_ID"</span><span class="w">
</span></span></span></code></pre></div>
<h4 id="network-security" class="position-relative d-flex align-items-center group">
<span>Network Security</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="network-security"
aria-haspopup="dialog"
aria-label="Share link: Network Security">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><p><strong>Private Endpoints</strong>:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Create private endpoint for storage</span>
</span></span><span class="line"><span class="cl">az network private-endpoint create <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --resource-group geode-rg <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --name geode-storage-pe <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --vnet-name geode-vnet <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --subnet geode-subnet <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --private-connection-resource-id <span class="k">$(</span>az storage account show <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> -g geode-rg -n geodestorage --query id -o tsv<span class="k">)</span> <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --group-id file <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --connection-name geode-storage-connection
</span></span></code></pre></div><p><strong>Azure Firewall</strong>:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Create firewall</span>
</span></span><span class="line"><span class="cl">az network firewall create <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --resource-group geode-rg <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --name geode-firewall <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --location eastus
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Create application rules</span>
</span></span><span class="line"><span class="cl">az network firewall application-rule create <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --firewall-name geode-firewall <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --resource-group geode-rg <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --collection-name geode-rules <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --name AllowGeode <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --protocols <span class="nv">Https</span><span class="o">=</span><span class="m">8443</span> <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --source-addresses 10.0.0.0/16 <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --target-fqdns geode.example.com <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --priority <span class="m">100</span> <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --action Allow
</span></span></code></pre></div>
<h3 id="backup-and-disaster-recovery" class="position-relative d-flex align-items-center group">
<span>Backup and Disaster Recovery</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="backup-and-disaster-recovery"
aria-haspopup="dialog"
aria-label="Share link: Backup and Disaster Recovery">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h3>
<h4 id="azure-backup" class="position-relative d-flex align-items-center group">
<span>Azure Backup</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="azure-backup"
aria-haspopup="dialog"
aria-label="Share link: Azure Backup">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><p><strong>VM Backup</strong>:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Create Recovery Services vault</span>
</span></span><span class="line"><span class="cl">az backup vault create <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --resource-group geode-rg <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --name geode-backup-vault <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --location eastus
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Enable backup for VM</span>
</span></span><span class="line"><span class="cl">az backup protection enable-for-vm <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --resource-group geode-rg <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --vault-name geode-backup-vault <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --vm geode-vm-01 <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --policy-name DefaultPolicy
</span></span></code></pre></div>
<h4 id="geo-redundant-backup" class="position-relative d-flex align-items-center group">
<span>Geo-Redundant Backup</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="geo-redundant-backup"
aria-haspopup="dialog"
aria-label="Share link: Geo-Redundant Backup">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Backup to Blob Storage with GRS</span>
</span></span><span class="line"><span class="cl">az storage account create <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --resource-group geode-rg <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --name geodebackupgrs <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --sku Standard_GRS <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --location eastus
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Automated backup script</span>
</span></span><span class="line"><span class="cl"><span class="c1">#!/bin/bash</span>
</span></span><span class="line"><span class="cl"><span class="nv">DATE</span><span class="o">=</span><span class="k">$(</span>date +%Y%m%d-%H%M%S<span class="k">)</span>
</span></span><span class="line"><span class="cl">docker <span class="nb">exec</span> geode geode backup --output /tmp/backup-<span class="nv">$DATE</span>.tar.gz
</span></span><span class="line"><span class="cl">az storage blob upload <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --account-name geodebackupgrs <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --container-name backups <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --name backup-<span class="nv">$DATE</span>.tar.gz <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --file /tmp/backup-<span class="nv">$DATE</span>.tar.gz
</span></span></code></pre></div>
<h3 id="cost-optimization" class="position-relative d-flex align-items-center group">
<span>Cost Optimization</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="cost-optimization"
aria-haspopup="dialog"
aria-label="Share link: Cost Optimization">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h3>
<h4 id="reserved-instances" class="position-relative d-flex align-items-center group">
<span>Reserved Instances</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="reserved-instances"
aria-haspopup="dialog"
aria-label="Share link: Reserved Instances">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><p>Save up to 72% with 3-year reservations:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Purchase VM reservation</span>
</span></span><span class="line"><span class="cl">az reservations reservation-order purchase <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --reservation-order-id ORDER_ID <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --sku Standard_E8s_v5 <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --location eastus <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --quantity <span class="m">3</span> <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --term P3Y
</span></span></code></pre></div>
<h4 id="spot-instances-for-development" class="position-relative d-flex align-items-center group">
<span>Spot Instances for Development</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="spot-instances-for-development"
aria-haspopup="dialog"
aria-label="Share link: Spot Instances for Development">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Create spot VM (up to 90% savings)</span>
</span></span><span class="line"><span class="cl">az vm create <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --resource-group geode-dev-rg <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --name geode-dev-spot <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --priority Spot <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --max-price -1 <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --eviction-policy Deallocate <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --size Standard_D4s_v5 <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --image Ubuntu2204
</span></span></code></pre></div>
<h4 id="auto-shutdown" class="position-relative d-flex align-items-center group">
<span>Auto-Shutdown</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="auto-shutdown"
aria-haspopup="dialog"
aria-label="Share link: Auto-Shutdown">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Schedule VM shutdown</span>
</span></span><span class="line"><span class="cl">az vm auto-shutdown <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --resource-group geode-rg <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --name geode-dev-vm <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --time <span class="m">1900</span> <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --timezone <span class="s2">"Pacific Standard Time"</span>
</span></span></code></pre></div>
<h4 id="storage-tiering" class="position-relative d-flex align-items-center group">
<span>Storage Tiering</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="storage-tiering"
aria-haspopup="dialog"
aria-label="Share link: Storage Tiering">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Move old backups to Cool tier</span>
</span></span><span class="line"><span class="cl">az storage blob set-tier <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --account-name geodebackup <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --container-name backups <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --name old-backup.tar.gz <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --tier Cool
</span></span></code></pre></div>
<h3 id="related-topics" class="position-relative d-flex align-items-center group">
<span>Related Topics</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="related-topics"
aria-haspopup="dialog"
aria-label="Share link: Related Topics">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h3><ul>
<li><strong><a
href="/tags/cloud/"
>Cloud</a>
</strong>: General cloud deployment strategies</li>
<li><strong><a
href="/tags/aws/"
>AWS</a>
</strong>: Amazon Web Services deployment</li>
<li><strong><a
href="/tags/gcp/"
>GCP</a>
</strong>: Google Cloud Platform deployment</li>
<li><strong><a
href="/tags/kubernetes/"
>Kubernetes</a>
</strong>: Kubernetes orchestration</li>
<li><strong><a
href="/tags/docker/"
>Docker</a>
</strong>: Container deployment</li>
<li><strong><a
href="/tags/monitoring/"
>Monitoring</a>
</strong>: Monitoring and observability</li>
<li><strong><a
href="/tags/security/"
>Security</a>
</strong>: Security best practices</li>
<li><strong><a
href="/tags/high-availability/"
>High Availability</a>
</strong>: HA architecture</li>
</ul>
<h3 id="further-reading" class="position-relative d-flex align-items-center group">
<span>Further Reading</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="further-reading"
aria-haspopup="dialog"
aria-label="Share link: Further Reading">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h3><ul>
<li><strong>Azure Deployment Guide</strong>: <code>/docs/deployment/azure/</code></li>
<li><strong>AKS Best Practices</strong>: <code>/docs/deployment/aks/</code></li>
<li><strong>Azure Monitor Integration</strong>: <code>/docs/monitoring/azure-monitor/</code></li>
<li><strong>Security on Azure</strong>: <code>/docs/security/azure-security/</code></li>
</ul>
<h3 id="conclusion" class="position-relative d-flex align-items-center group">
<span>Conclusion</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="conclusion"
aria-haspopup="dialog"
aria-label="Share link: Conclusion">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h3><p>Microsoft Azure provides a comprehensive platform for deploying Geode graph database at any scale. From simple VM deployments to sophisticated AKS clusters with auto-scaling, Azure’s managed services, global infrastructure, and deep integration with Microsoft ecosystem make it an excellent choice for enterprise Geode deployments.</p>
<p>Key advantages of Azure for Geode:</p>
<ul>
<li>Enterprise-grade managed services (AKS, Storage, Monitor)</li>
<li>Hybrid cloud capabilities with Azure Arc</li>
<li>Deep integration with Microsoft 365 and Active Directory</li>
<li>Comprehensive compliance certifications</li>
<li>Global network with 60+ regions</li>
</ul>
Related Articles
No articles found with this tag yet.
Back to Home