Compare commits
5 commits
custom_mod
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d4c622295c | ||
|
|
2b6ad07c36 | ||
|
|
270c32ba9d | ||
|
|
d5446ba359 | ||
|
|
27680d9145 |
21 changed files with 34 additions and 316 deletions
|
|
@ -1,9 +0,0 @@
|
|||
Перед запуском убедитесь, что вы задали токены SWARM_TOKEN_MANAGER и SWARM_TOKEN_WORKER в вашем окружении:
|
||||
```sh
|
||||
export SWARM_TOKEN_MANAGER=your-manager-token-here
|
||||
export SWARM_TOKEN_WORKER=your-worker-token-here
|
||||
```
|
||||
Запустите плейбук командой:
|
||||
```sh
|
||||
ansible-playbook -i inventory.yml site.yml
|
||||
```
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
docker_version: '20.10'
|
||||
swarm_token_manager: "{{ lookup('env', 'SWARM_TOKEN_MANAGER') }}"
|
||||
swarm_token_worker: "{{ lookup('env', 'SWARM_TOKEN_WORKER') }}"
|
||||
manager_ip: '{{ hostvars["manager1"]["ansible_host"] }}'
|
||||
|
|
@ -1,11 +0,0 @@
|
|||
all:
|
||||
hosts:
|
||||
manager1:
|
||||
ansible_host: x.x.x.x
|
||||
worker1:
|
||||
ansible_host: y.y.y.y
|
||||
worker2:
|
||||
ansible_host: z.z.z.z
|
||||
vars:
|
||||
ansible_user: root
|
||||
ansible_become: true
|
||||
|
|
@ -1,17 +0,0 @@
|
|||
---
|
||||
- name: Update apt cache
|
||||
become: yes
|
||||
apt:
|
||||
update_cache: yes
|
||||
|
||||
- name: Install necessary packages for Docker installation
|
||||
become: yes
|
||||
apt:
|
||||
name: "{{ item }}"
|
||||
state: present
|
||||
loop:
|
||||
- apt-transport-https
|
||||
- ca-certificates
|
||||
- curl
|
||||
- gnupg-agent
|
||||
- software-properties-common
|
||||
|
|
@ -1,25 +0,0 @@
|
|||
---
|
||||
- name: Add Docker official repository key
|
||||
become: yes
|
||||
apt_key:
|
||||
url: https://download.docker.com/linux/debian/gpg
|
||||
state: present
|
||||
|
||||
- name: Add Docker stable repository
|
||||
become: yes
|
||||
apt_repository:
|
||||
repo: deb [arch=amd64] https://download.docker.com/linux/debian {{ ansible_distribution_release }} stable
|
||||
state: present
|
||||
|
||||
- name: Install Docker CE
|
||||
become: yes
|
||||
apt:
|
||||
name: "docker-ce={{ docker_version }}*"
|
||||
state: latest
|
||||
|
||||
- name: Start and enable Docker service
|
||||
become: yes
|
||||
systemd:
|
||||
name: docker
|
||||
enabled: yes
|
||||
state: started
|
||||
|
|
@ -1,24 +0,0 @@
|
|||
---
|
||||
- block:
|
||||
- name: Initialize the Docker Swarm on Manager node
|
||||
become: yes
|
||||
command: >
|
||||
docker swarm init
|
||||
--advertise-addr {{ manager_ip }}
|
||||
register: result
|
||||
when: inventory_hostname == 'manager1'
|
||||
|
||||
- set_fact:
|
||||
join_command: "{{ result.stdout_lines[-1].split(':')[1].strip() }}"
|
||||
when: inventory_hostname == 'manager1' and result is success
|
||||
|
||||
- debug:
|
||||
msg: "Swarm initialized successfully with token: {{ join_command }}"
|
||||
when: inventory_hostname == 'manager1' and result is success
|
||||
|
||||
- block:
|
||||
- name: Join Worker nodes to Swarm cluster
|
||||
become: yes
|
||||
shell: |
|
||||
echo "{{ join_command }}" | docker swarm join --token {{ swarm_token_worker }} {{ manager_ip }}:2377
|
||||
when: inventory_hostname != 'manager1'
|
||||
|
|
@ -1,13 +0,0 @@
|
|||
---
|
||||
- name: Setup Docker Swarm Cluster
|
||||
hosts: all
|
||||
gather_facts: true
|
||||
become: true
|
||||
|
||||
pre_tasks:
|
||||
- include_role:
|
||||
name: common
|
||||
|
||||
roles:
|
||||
- role: docker
|
||||
- role: swarm
|
||||
|
|
@ -1,7 +0,0 @@
|
|||
kube_version: v1.25.3
|
||||
docker_version: 20.10.21
|
||||
etcd_version: 3.5.6
|
||||
cni_plugin_version: v3.24.0
|
||||
helm_version: v3.11.3
|
||||
pod_network_cidr: 192.168.0.0/16
|
||||
service_cluster_ip_range: 10.96.0.0/12
|
||||
|
|
@ -1,12 +0,0 @@
|
|||
all:
|
||||
children:
|
||||
masters:
|
||||
hosts:
|
||||
master1:
|
||||
ansible_host: x.x.x.x
|
||||
workers:
|
||||
hosts:
|
||||
worker1:
|
||||
ansible_host: a.a.a.a
|
||||
worker2:
|
||||
ansible_host: b.b.b.b
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
---
|
||||
- name: Deploy Kafka & Zookeeper clusters
|
||||
hosts: all
|
||||
become: true
|
||||
roles:
|
||||
- kafka
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
---
|
||||
- name: Install Kubernetes components
|
||||
hosts: all
|
||||
become: true
|
||||
roles:
|
||||
- k8s
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
---
|
||||
- name: Prepare servers for Kubernetes
|
||||
hosts: all
|
||||
become: true
|
||||
roles:
|
||||
- prepare
|
||||
|
|
@ -1,8 +0,0 @@
|
|||
---
|
||||
- name: Download Calico manifest
|
||||
get_url:
|
||||
url: "https://docs.projectcalico.org/manifests/calico.yaml"
|
||||
dest: /tmp/calico.yaml
|
||||
|
||||
- name: Apply Calico configuration
|
||||
command: kubectl apply -f /tmp/calico.yaml
|
||||
|
|
@ -1,52 +0,0 @@
|
|||
---
|
||||
- name: Install Docker
|
||||
package:
|
||||
name: docker.io
|
||||
version: "{{ docker_version }}"
|
||||
state: present
|
||||
|
||||
- name: Install Kubelet/Kubectl/Kubeadm
|
||||
package:
|
||||
name: ["kubelet","kubectl","kubeadm"]
|
||||
version: "{{ kube_version }}-00"
|
||||
state: present
|
||||
|
||||
- name: Pull images for Kubernetes
|
||||
command: kubeadm config images pull --kubernetes-version "{{ kube_version }}"
|
||||
|
||||
- name: Initiate Kubernetes cluster on Master node
|
||||
command: >-
|
||||
kubeadm init
|
||||
--apiserver-advertise-address={{ ansible_default_ipv4.address }}
|
||||
--pod-network-cidr={{ pod_network_cidr }}
|
||||
--ignore-preflight-errors=Swap
|
||||
register: output
|
||||
changed_when: "'Kubeadm completed the bootstrap of control plane node' in output.stdout"
|
||||
run_once: true
|
||||
delegate_to: master1
|
||||
|
||||
- name: Copy admin credentials from master
|
||||
fetch:
|
||||
src: "/etc/kubernetes/admin.conf"
|
||||
dest: "./admin.conf"
|
||||
flat: yes
|
||||
run_once: true
|
||||
delegate_to: master1
|
||||
|
||||
- name: Create .kube directory if not exists
|
||||
file:
|
||||
path: ~/.kube
|
||||
state: directory
|
||||
mode: '0755'
|
||||
|
||||
- name: Copy kubeconfig to local machine
|
||||
copy:
|
||||
src: ./admin.conf
|
||||
dest: ~/.kube/config
|
||||
owner: "{{ ansible_user_id }}"
|
||||
group: "{{ ansible_user_gid }}"
|
||||
mode: '0644'
|
||||
|
||||
- name: Deploy Calico network plugin
|
||||
import_role:
|
||||
name: calico
|
||||
|
|
@ -1,14 +0,0 @@
|
|||
---
|
||||
- name: Render Kafka deployment YAML files
|
||||
template:
|
||||
src: "{{ item }}.j2"
|
||||
dest: "/tmp/{{ item }}.yaml"
|
||||
loop:
|
||||
- kafka
|
||||
- zookeeper
|
||||
|
||||
- name: Deploy Kafka using Kubernetes resources
|
||||
command: kubectl apply -f /tmp/{{ item }}.yaml
|
||||
loop:
|
||||
- kafka
|
||||
- zookeeper
|
||||
|
|
@ -1,35 +0,0 @@
|
|||
apiVersion: apps/v1
|
||||
kind: StatefulSet
|
||||
metadata:
|
||||
name: kafka
|
||||
spec:
|
||||
replicas: 2
|
||||
selector:
|
||||
matchLabels:
|
||||
app: kafka
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: kafka
|
||||
spec:
|
||||
containers:
|
||||
- name: kafka
|
||||
image: kafka:latest
|
||||
env:
|
||||
- name: KAFKA_ZOOKEEPER_CONNECT
|
||||
value: zookeeper-headless:2181
|
||||
ports:
|
||||
- containerPort: 9092
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: kafka-service
|
||||
spec:
|
||||
type: NodePort
|
||||
selector:
|
||||
app: kafka
|
||||
ports:
|
||||
- protocol: TCP
|
||||
port: 9092
|
||||
targetPort: 9092
|
||||
|
|
@ -1,31 +0,0 @@
|
|||
apiVersion: apps/v1
|
||||
kind: StatefulSet
|
||||
metadata:
|
||||
name: zookeeper
|
||||
spec:
|
||||
replicas: 2
|
||||
selector:
|
||||
matchLabels:
|
||||
app: zookeeper
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: zookeeper
|
||||
spec:
|
||||
containers:
|
||||
- name: zookeeper
|
||||
image: zoo:latest
|
||||
ports:
|
||||
- containerPort: 2181
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: zookeeper-headless
|
||||
spec:
|
||||
clusterIP: None
|
||||
selector:
|
||||
app: zookeeper
|
||||
ports:
|
||||
- port: 2181
|
||||
targetPort: 2181
|
||||
|
|
@ -1,34 +0,0 @@
|
|||
---
|
||||
- name: Ensure OS packages are up-to-date
|
||||
apt:
|
||||
upgrade: dist
|
||||
update_cache: yes
|
||||
|
||||
- name: Disable swap
|
||||
sysctl:
|
||||
name: vm.swappiness
|
||||
value: 0
|
||||
state: present
|
||||
reload: yes
|
||||
|
||||
- name: Enable kernel modules required by Kubernetes
|
||||
modprobe:
|
||||
name: "{{ item }}"
|
||||
state: present
|
||||
loop:
|
||||
- overlay
|
||||
- br_netfilter
|
||||
|
||||
- name: Load iptables rules permanently
|
||||
lineinfile:
|
||||
path: /etc/modules-load.d/kubernetes.conf
|
||||
create: yes
|
||||
regexp: '^{{ item }}$'
|
||||
line: '{{ item }}'
|
||||
loop:
|
||||
- overlay
|
||||
- br_netfilter
|
||||
|
||||
- name: Set SELinux in permissive mode
|
||||
selinux:
|
||||
state: permissive
|
||||
|
|
@ -1,8 +1,30 @@
|
|||
FROM python:3.12-slim-bookworm:latest
|
||||
FROM python:3.12-slim
|
||||
|
||||
RUN apt-get update
|
||||
|
||||
RUN apt-get install -y --no-install-recommends \
|
||||
build-essential \
|
||||
cmake \
|
||||
pkg-config \
|
||||
git \
|
||||
libsm6 \
|
||||
libxext6 \
|
||||
ffmpeg \
|
||||
ibgtk2.0-dev \
|
||||
libavcodec-dev \
|
||||
libavformat-dev \
|
||||
libswscale-dev
|
||||
|
||||
COPY ./docker_requirements.txt /requirements.txt
|
||||
|
||||
RUN pip install -r /requirements.txt
|
||||
|
||||
COPY . /app
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
ENTRYPOINT ["python"]
|
||||
|
||||
CMD ["src/app.py"]
|
||||
|
||||
# ENTRYPOINT ["sh", "src/entrypoint.sh"] # WSGI - gunicorn prod run
|
||||
10
master-node/README.md
Normal file
10
master-node/README.md
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
Build master-node image (on Windows)
|
||||
```shell
|
||||
docker buildx build -t master-node .
|
||||
```
|
||||
|
||||
Run master-node
|
||||
```shell
|
||||
docker run -p 5010:5010 master-node
|
||||
```
|
||||
|
||||
|
|
@ -5,11 +5,11 @@ requests-oauthlib == 1.3.0
|
|||
Flask == 3.0.2
|
||||
Flask-HTTPAuth == 4.8.0
|
||||
Flask-APScheduler == 1.13.1
|
||||
numpy == 1.26.2
|
||||
pandas == 1.4.2
|
||||
Werkzeug == 3.0.1
|
||||
paramiko == 3.4.0
|
||||
tabulate == 0.9.0
|
||||
psycopg2-binary == 2.9.9
|
||||
pydantic==2.6.3
|
||||
PyYAML == 6.0
|
||||
websockets==12.0
|
||||
Loading…
Reference in a new issue