Multiple things

Remove ArgoCD and Helm dependencies, add everything unnecessary to .dockerignore, add support for DB authentication in Payphone's CLI, make Scylla be fully managed by Ansible, add Payphone deployment ansible file
This commit is contained in:
2025-08-18 01:06:03 -03:00
parent 5fe3878471
commit fcb1a786be
37 changed files with 294 additions and 26917 deletions
+108
View File
@@ -0,0 +1,108 @@
- name: Build and Push Payphone
hosts: localhost
gather_facts: false
tasks:
- name: Get Cargo Project Metadata
ansible.builtin.command: cargo metadata --no-deps --format-version 1
register: cargo_metadata
changed_when: false
- name: Parse version
ansible.builtin.set_fact:
app_version: "v{{ (cargo_metadata.stdout | from_json).packages[0].version }}"
- name: Build and Push the Docker image
community.docker.docker_image:
source: build
build:
path: "{{ playbook_dir }}/../"
name: registry.nyeki.dev/payphone/payphone
tag: "{{ app_version }}"
push: true
- name: Deploy Payphone
hosts: init
become: true
gather_facts: false
vars_files:
- 00-vault.yml
tasks:
- name: Create Payphone Namespace
kubernetes.core.k8s:
state: present
definition:
apiVersion: v1
kind: Namespace
metadata:
name: payphone
kubeconfig: /etc/rancher/k3s/k3s.yaml
- name: Create Bot Token Secret
kubernetes.core.k8s:
state: present
namespace: payphone
definition:
apiVersion: v1
kind: Secret
metadata:
name: payphone-secrets
type: Opaque
stringData:
PAYPHONE_TOKEN: "{{ bot_token }}"
kubeconfig: /etc/rancher/k3s/k3s.yaml
- name: Set Git credentials
ansible.builtin.command: |
kubectl create secret docker-registry payphone-git-credentials \
--docker-server=registry.nyeki.dev \
--docker-username={{ gitlab_username }} \
--docker-password={{ gitlab_pat }} \
--docker-email={{ gitlab_email }} \
-n payphone
- name: Apply Payphone Deployment
kubernetes.core.k8s:
state: present
namespace: payphone
definition:
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: payphone
labels:
app: payphone
spec:
serviceName: payphone
replicas: "{{ bot_shards }}"
selector:
matchLabels:
app: payphone
template:
metadata:
labels:
app: payphone
spec:
containers:
- name: payphone
image: registry.nyeki.dev/payphone/payphone:latest
imagePullPolicy: "Always"
args: ["start", "--shard", "$(SHARD_ID):$(SHARD_COUNT)", "--database-addr", "scylla-client"]
envFrom:
- secretRef:
name: payphone-secrets
env:
- name: SHARD_ID
valueFrom:
fieldRef:
fieldPath: metadata.labels['apps.kubernetes.io/pod-index']
- name: SHARD_COUNT
value: "{{ bot_shards | string }}"
resources:
limits:
cpu: "1000m"
memory: "1Gi"
requests:
cpu: "250m"
memory: "100Mi"
imagePullSecrets:
- name: payphone-git-credentials