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
+6 -7
View File
@@ -3,10 +3,9 @@ set -x
uv run ansible-playbook -i inventory.ini playbooks/01-setup.yml
uv run ansible-playbook -i inventory.ini playbooks/02-copy-k8s-files.yml
uv run ansible-playbook -i inventory.ini playbooks/03-argo-cd.yml
uv run ansible-playbook -i inventory.ini playbooks/04-secrets.yml --vault-password-file playbooks/00-vault-pwd.txt
uv run ansible-playbook -i inventory.ini playbooks/05-cert-manager.yml
uv run ansible-playbook -i inventory.ini playbooks/06-prometheus-operator.yml
uv run ansible-playbook -i inventory.ini playbooks/07-scylla-operator.yml
uv run ansible-playbook -i inventory.ini playbooks/08-scylla-cluster.yml
uv run ansible-playbook -i inventory.ini playbooks/09-scylla-manager.yml
uv run ansible-playbook -i inventory.ini playbooks/03-cert-manager.yml
uv run ansible-playbook -i inventory.ini playbooks/04-prometheus-operator.yml
uv run ansible-playbook -i inventory.ini playbooks/05-scylla-operator.yml
uv run ansible-playbook -i inventory.ini playbooks/06-scylla-cluster.yml
uv run ansible-playbook -i inventory.ini playbooks/07-scylla-manager.yml
uv run ansible-playbook -i inventory.ini playbooks/08-payphone.yml --vault-password-file playbooks/00-vault-pwd.txt
+14 -8
View File
@@ -1,9 +1,15 @@
$ANSIBLE_VAULT;1.1;AES256
38636132613135376633623839643865386338396334373937333864633666313934343339343562
3733313938383137336163613439643535303663306130340a386237326433666239383830333262
63626130613136373263666163656436376533376239653632316565346136623138313361643430
6638666133346536330a356666316134326430633435663566316566303239653138393836363335
35383339383739333263636135356463346233346363326331353137313732356237313139386230
65386235346462323565353030333236613965333066366232353132626566353037336563383932
38643462653233653339626137663735396466636635383531636130633964653264313838313366
62633338363063613661
64616462323461653039363034636361393337346266623366663961323739303861323433323631
3332313133646535666330346339653066656362396535340a316565323735386331623038653333
31366561363433363731323739303362323635383832356132303334363366323034326563393631
3165643138353266380a663563366137643463333934373939643530656163306262613261383237
63323063613662393832373737663133313238373039343231646561343436343363643031333335
61313631326162656465613666616365393462666661353665376564633732306434366134346466
64356238393939373032653636663861396336373031653232643664613031383838363962333165
62666139613363356331623536626638396663656134366639613731346335616665356662366164
34343439313732616238303335323639623436326432333962313133343836306566313563313966
64383237366562653733643466613532316464353332343736663862633238666338363062623463
66333239343234306261336237363933666232386434643637343234666533343033363530656130
35396530316136616664623739653765633130373865363235313439626231623437363534633061
33313764393766666137343962613132626533616532633864313261316264616139343037623831
3536616432363862633638303431373064346335303731313335
-15
View File
@@ -127,21 +127,6 @@
enabled: true
state: started
- name: Install Helm in All Nodes
hosts: all
become: true
tasks:
- name: Download Helm Installation Script
ansible.builtin.get_url:
url: https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
dest: /tmp/get_helm.sh
mode: '0755'
- name: Run helm installer
ansible.builtin.command: /tmp/get_helm.sh
args:
creates: /usr/local/bin/helm
- name: Wait for All K3s Nodes to Become Ready
hosts: init
become: true
-18
View File
@@ -1,18 +0,0 @@
- name: Set up ArgoCD
hosts: init
become: true
gather_facts: false
tasks:
- name: Create ArgoCD namespace
kubernetes.core.k8s:
api_version: v1
kind: Namespace
name: argocd
kubeconfig: /etc/rancher/k3s/k3s.yaml
- name: Apply ArgoCD installation manifest
kubernetes.core.k8s:
state: present
src: /tmp/k8s/ansible/argo-cd/01-argo-cd.yml
namespace: argocd
kubeconfig: /etc/rancher/k3s/k3s.yaml
@@ -15,7 +15,7 @@
- name: Apply Cert-Manager YAML
kubernetes.core.k8s:
state: present
src: "/tmp/k8s/ansible/scylla/01-cert-manager.yml"
src: "/tmp/k8s/scylla/01-cert-manager.yml"
kubeconfig: /etc/rancher/k3s/k3s.yaml
- name: Wait for Cert-Manager CRDs
@@ -10,7 +10,7 @@
tasks:
- name: Apply Prometheus operator server-side
ansible.builtin.command: |
kubectl apply --server-side -f /tmp/k8s/ansible/scylla/02-prometheus-operator.yml -n prometheus-operator
kubectl apply --server-side -f /tmp/k8s/scylla/02-prometheus-operator.yml -n prometheus-operator
environment:
KUBECONFIG: /etc/rancher/k3s/k3s.yaml
changed_when: false
-25
View File
@@ -1,25 +0,0 @@
- name: Set up repository secrets
hosts: init
become: true
gather_facts: false
vars_files:
- 00-vault.yml
tasks:
- name: Add private Git repo credentials to ArgoCD
kubernetes.core.k8s:
state: present
definition:
apiVersion: v1
kind: Secret
metadata:
name: payphone-repo-creds
namespace: argocd
labels:
argocd.argoproj.io/secret-type: repository
type: Opaque
stringData:
type: git
url: https://git.nyeki.dev/payphone/payphone.git
username: "{{ gitlab_username }}"
password: "{{ gitlab_pat }}"
kubeconfig: /etc/rancher/k3s/k3s.yaml
@@ -13,7 +13,7 @@
tasks:
- name: Apply Scylla Operator YAML
ansible.builtin.command: |
kubectl apply --server-side -f /tmp/k8s/ansible/scylla/03-scylla-operator.yml -n scylla-operator
kubectl apply --server-side -f /tmp/k8s/scylla/03-scylla-operator.yml -n scylla-operator
environment:
KUBECONFIG: /etc/rancher/k3s/k3s.yaml
changed_when: false
@@ -36,7 +36,7 @@
- name: Apply Scylla NodeConfig YAML
kubernetes.core.k8s:
state: present
src: "/tmp/k8s/ansible/scylla/04-scylla-node-config.yml"
src: "/tmp/k8s/scylla/04-scylla-node-config.yml"
namespace: scylla-operator
kubeconfig: /etc/rancher/k3s/k3s.yaml
@@ -47,7 +47,7 @@
- name: Find Scylla CSI Driver K8s YAMLs on Remote Host
ansible.builtin.find:
paths: /tmp/k8s/ansible/scylla
paths: /tmp/k8s/scylla
patterns: "05-*.yml"
file_type: file
register: scylla_csi_driver_files
@@ -6,8 +6,8 @@
- name: Set Up ArgoCD Application for Scylla Cluster
kubernetes.core.k8s:
state: present
src: /tmp/k8s/ansible/argo-cd/02-scylla-app.yml
namespace: argocd
src: /tmp/k8s/06-scylla-cluster.yml
namespace: scylla
kubeconfig: /etc/rancher/k3s/k3s.yaml
- name: Wait for Scylla Cluster Application
@@ -5,7 +5,7 @@
- name: Apply Scylla Manager YAML
kubernetes.core.k8s:
state: present
src: "/tmp/k8s/ansible/scylla/06-scylla-manager.yml"
src: "/tmp/k8s/scylla/07-scylla-manager.yml"
kubeconfig: /etc/rancher/k3s/k3s.yaml
- name: Wait for Scylla Manager Deployment
+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