327 lines
9.7 KiB
JSON
327 lines
9.7 KiB
JSON
{
|
|
"apiVersion": "apps/v1",
|
|
"kind": "Deployment",
|
|
"metadata": {
|
|
"labels": {
|
|
"app": "asterisk"
|
|
},
|
|
"name": "asterisk",
|
|
"namespace": "telephony"
|
|
},
|
|
"spec": {
|
|
"progressDeadlineSeconds": 600,
|
|
"replicas": 1,
|
|
"revisionHistoryLimit": 10,
|
|
"selector": {
|
|
"matchLabels": {
|
|
"app": "asterisk"
|
|
}
|
|
},
|
|
"strategy": {
|
|
"type": "Recreate"
|
|
},
|
|
"template": {
|
|
"metadata": {
|
|
"annotations": {
|
|
"kubectl.kubernetes.io/restartedAt": "2026-06-16T13:09:51-05:00"
|
|
},
|
|
"labels": {
|
|
"app": "asterisk"
|
|
}
|
|
},
|
|
"spec": {
|
|
"containers": [
|
|
{
|
|
"image": "localhost/andrius/asterisk:latest",
|
|
"imagePullPolicy": "Never",
|
|
"livenessProbe": {
|
|
"failureThreshold": 3,
|
|
"initialDelaySeconds": 15,
|
|
"periodSeconds": 10,
|
|
"successThreshold": 1,
|
|
"tcpSocket": {
|
|
"port": 8088
|
|
},
|
|
"timeoutSeconds": 1
|
|
},
|
|
"name": "asterisk",
|
|
"ports": [
|
|
{
|
|
"containerPort": 5060,
|
|
"name": "sip-udp",
|
|
"protocol": "UDP"
|
|
},
|
|
{
|
|
"containerPort": 5060,
|
|
"name": "sip-tcp",
|
|
"protocol": "TCP"
|
|
},
|
|
{
|
|
"containerPort": 8088,
|
|
"name": "ari",
|
|
"protocol": "TCP"
|
|
}
|
|
],
|
|
"readinessProbe": {
|
|
"failureThreshold": 3,
|
|
"httpGet": {
|
|
"httpHeaders": [
|
|
{
|
|
"name": "Authorization",
|
|
"value": "Basic Zmxvd2VyY29yZTpibHVlamF5LWFzdGVyaXNrLWFyaQ=="
|
|
}
|
|
],
|
|
"path": "/ari/asterisk/info",
|
|
"port": 8088,
|
|
"scheme": "HTTP"
|
|
},
|
|
"initialDelaySeconds": 10,
|
|
"periodSeconds": 5,
|
|
"successThreshold": 1,
|
|
"timeoutSeconds": 1
|
|
},
|
|
"resources": {
|
|
"limits": {
|
|
"cpu": "1",
|
|
"memory": "512Mi"
|
|
},
|
|
"requests": {
|
|
"cpu": "100m",
|
|
"memory": "128Mi"
|
|
}
|
|
},
|
|
"terminationMessagePath": "/dev/termination-log",
|
|
"terminationMessagePolicy": "File",
|
|
"volumeMounts": [
|
|
{
|
|
"mountPath": "/etc/asterisk/modules.conf",
|
|
"name": "config-modules",
|
|
"subPath": "modules.conf"
|
|
},
|
|
{
|
|
"mountPath": "/etc/asterisk/http.conf",
|
|
"name": "config-http",
|
|
"subPath": "http.conf"
|
|
},
|
|
{
|
|
"mountPath": "/etc/asterisk/ari.conf",
|
|
"name": "config-ari",
|
|
"subPath": "ari.conf"
|
|
},
|
|
{
|
|
"mountPath": "/etc/asterisk/manager.conf",
|
|
"name": "config-manager",
|
|
"subPath": "manager.conf"
|
|
},
|
|
{
|
|
"mountPath": "/etc/asterisk/pjsip.conf",
|
|
"name": "config-pjsip",
|
|
"subPath": "pjsip.conf"
|
|
},
|
|
{
|
|
"mountPath": "/etc/asterisk/extensions.conf",
|
|
"name": "config-extensions",
|
|
"subPath": "extensions.conf"
|
|
},
|
|
{
|
|
"mountPath": "/etc/asterisk/rtp.conf",
|
|
"name": "config-rtp",
|
|
"subPath": "rtp.conf"
|
|
},
|
|
{
|
|
"mountPath": "/var/spool/asterisk",
|
|
"name": "asterisk-data"
|
|
},
|
|
{
|
|
"mountPath": "/var/log/asterisk",
|
|
"name": "asterisk-logs"
|
|
},
|
|
{
|
|
"mountPath": "/var/lib/asterisk/sounds/en",
|
|
"name": "sounds"
|
|
},
|
|
{
|
|
"mountPath": "/var/lib/asterisk/sounds/tts",
|
|
"name": "shared-tts"
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"dnsConfig": {
|
|
"nameservers": [
|
|
"10.43.0.10"
|
|
],
|
|
"options": [
|
|
{
|
|
"name": "ndots",
|
|
"value": "2"
|
|
}
|
|
],
|
|
"searches": [
|
|
"telephony.svc.cluster.local",
|
|
"svc.cluster.local",
|
|
"cluster.local"
|
|
]
|
|
},
|
|
"dnsPolicy": "None",
|
|
"hostAliases": [
|
|
{
|
|
"hostnames": [
|
|
"downloads.asterisk.org"
|
|
],
|
|
"ip": "165.22.184.19"
|
|
}
|
|
],
|
|
"initContainers": [
|
|
{
|
|
"command": [
|
|
"sh",
|
|
"-c",
|
|
"set -eu\nif [ -f /sounds/en/vm-goodbye.ulaw ] || [ -f /sounds/en/vm-goodbye.gsm ]; then\n echo \"Sounds already present \u00e2\u20ac\u201d skipping download.\"\n exit 0\nfi\necho \"Installing curl + tar...\"\napk add --no-cache curl tar gzip >/dev/null\ncd /tmp\necho \"Downloading Asterisk core sounds (en, ulaw) 1.6.1...\"\n# -k: cluster egress goes through a step-ca MITM for outbound TLS\n# that this pod does not trust. The tarball is a public artifact \u00e2\u20ac\u201d\n# integrity is checked downstream by Asterisk at playback time.\ncurl -fksSLO https://downloads.asterisk.org/pub/telephony/sounds/releases/asterisk-core-sounds-en-ulaw-1.6.1.tar.gz\necho \"Extracting to /sounds/en ...\"\nmkdir -p /sounds/en\ntar -xzf asterisk-core-sounds-en-ulaw-1.6.1.tar.gz -C /sounds/en\necho \"Done \u00e2\u20ac\u201d $(ls /sounds/en | wc -l) files installed.\"\n"
|
|
],
|
|
"image": "alpine:3.20",
|
|
"imagePullPolicy": "IfNotPresent",
|
|
"name": "install-sounds",
|
|
"resources": {},
|
|
"terminationMessagePath": "/dev/termination-log",
|
|
"terminationMessagePolicy": "File",
|
|
"volumeMounts": [
|
|
{
|
|
"mountPath": "/sounds/en",
|
|
"name": "sounds"
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"restartPolicy": "Always",
|
|
"schedulerName": "default-scheduler",
|
|
"securityContext": {
|
|
"fsGroup": 0
|
|
},
|
|
"terminationGracePeriodSeconds": 30,
|
|
"volumes": [
|
|
{
|
|
"configMap": {
|
|
"defaultMode": 420,
|
|
"items": [
|
|
{
|
|
"key": "modules.conf",
|
|
"path": "modules.conf"
|
|
}
|
|
],
|
|
"name": "asterisk-config"
|
|
},
|
|
"name": "config-modules"
|
|
},
|
|
{
|
|
"configMap": {
|
|
"defaultMode": 420,
|
|
"items": [
|
|
{
|
|
"key": "http.conf",
|
|
"path": "http.conf"
|
|
}
|
|
],
|
|
"name": "asterisk-config"
|
|
},
|
|
"name": "config-http"
|
|
},
|
|
{
|
|
"configMap": {
|
|
"defaultMode": 420,
|
|
"items": [
|
|
{
|
|
"key": "ari.conf",
|
|
"path": "ari.conf"
|
|
}
|
|
],
|
|
"name": "asterisk-config"
|
|
},
|
|
"name": "config-ari"
|
|
},
|
|
{
|
|
"configMap": {
|
|
"defaultMode": 420,
|
|
"items": [
|
|
{
|
|
"key": "manager.conf",
|
|
"path": "manager.conf"
|
|
}
|
|
],
|
|
"name": "asterisk-config"
|
|
},
|
|
"name": "config-manager"
|
|
},
|
|
{
|
|
"configMap": {
|
|
"defaultMode": 420,
|
|
"items": [
|
|
{
|
|
"key": "pjsip.conf",
|
|
"path": "pjsip.conf"
|
|
}
|
|
],
|
|
"name": "asterisk-config"
|
|
},
|
|
"name": "config-pjsip"
|
|
},
|
|
{
|
|
"configMap": {
|
|
"defaultMode": 420,
|
|
"items": [
|
|
{
|
|
"key": "extensions.conf",
|
|
"path": "extensions.conf"
|
|
}
|
|
],
|
|
"name": "asterisk-config"
|
|
},
|
|
"name": "config-extensions"
|
|
},
|
|
{
|
|
"configMap": {
|
|
"defaultMode": 420,
|
|
"items": [
|
|
{
|
|
"key": "rtp.conf",
|
|
"path": "rtp.conf"
|
|
}
|
|
],
|
|
"name": "asterisk-config"
|
|
},
|
|
"name": "config-rtp"
|
|
},
|
|
{
|
|
"name": "asterisk-data",
|
|
"persistentVolumeClaim": {
|
|
"claimName": "asterisk-data"
|
|
}
|
|
},
|
|
{
|
|
"emptyDir": {},
|
|
"name": "asterisk-logs"
|
|
},
|
|
{
|
|
"emptyDir": {},
|
|
"name": "sounds"
|
|
},
|
|
{
|
|
"hostPath": {
|
|
"path": "/tmp/tts-audio",
|
|
"type": "DirectoryOrCreate"
|
|
},
|
|
"name": "shared-tts"
|
|
},
|
|
{
|
|
"hostPath": {
|
|
"path": "/tmp/tts-audio",
|
|
"type": "DirectoryOrCreate"
|
|
},
|
|
"name": "tts-shared"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|