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:
@@ -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
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
Reference in New Issue
Block a user