רגע! לפני שהולכים... 👋
אל תפספסו! מסלולי לימוד נפתחים בקרוב - מקומות מוגבלים
| מסלול Machine Learning | 12/04 |
| מסלול Computer Vision | 12/04 |
| מסלול RT Embedded Linux | 15/04 |
| מסלול Cyber | 15/04 |
| מסלול Full Stack | 03/05 |
✓ ייעוץ אישי ללא התחייבות | תשובה תוך 24 שעות

עודכן לאחרונה: 31 מרץ, 2026
במאמר הזה נציג תהליך אוטומטי מלא לפריסת אשכול Kubernetes בענן AWS, עם אינטגרציה ל־Cloudflare Tunnel — פתרון שמאפשר גישה מאובטחת לשירותים חיצוניים, ללא צורך בפתיחת פורטים או הקמת Load Balancer.
כל המידע פה הוא חלק ממה שנלמד אצלנו ב קורס Devops ומיושם אצלנו בקבוצה שיש בה חברת פיתוח חברת השמה ומכללה ללימודי מקצועות ההיטק.
DevOps מודרני נשען על שתי טכנולוגיות מפתח:
בפרויקט זה משלבים את שתי הגישות — תשתית ודיפלוימנט — בתהליך אוטומטי אחד שמקצר משמעותית את הזמן עד להרצת אשכול Kubernetes פעיל.
Terraform אחראי על יצירת סביבת AWS:
לאחר הפריסה הראשונית Terraform מייצא קובצי YAML ומעביר את השליטה ל־Ansible שמבצע:
בתיקיית kubernetes/ נמצאים כל קובצי ה־YAML הנדרשים לפריסת השירותים:
השילוב של Terraform ו־Ansible מייצר תהליך End-to-End מלא — החל מהקמת שרתים בענן, דרך התקנת Kubernetes, ועד לפריסת יישומים וחשיפתם לעולם החיצון. זהו מודל מצוין לפרויקטים לימודיים, מערכות DevOps, או הקמת תשתית בסיסית לארגון חדש.
הפרויקט הזה הוא חלק מתשתית העבודה שלנו ב Real Time Group והוא עוזר לנו לנהל שרתי סטודנטים שרתי פיתוח ושרתי פרודקשן שלנו ושל לקוחות שלנו.
השלב הראשון בתהליך הוא להגדיר תשתית כקוד (IaC). ניצור VPC, רשתות משנה ו־EC2 Instances שישמשו את ה־Control Plane וה־Worker Node.
text
provider "aws" {
region = "us-east-1"
}
resource "aws_vpc" "k8s_vpc" {
cidr_block = "10.0.0.0/16"
tags = {
Name = "k8s-vpc"
}
}
resource "aws_subnet" "k8s_subnet" {
vpc_id = aws_vpc.k8s_vpc.id
cidr_block = "10.0.1.0/24"
availability_zone = "us-east-1a"
tags = {
Name = "k8s-subnet"
}
}
resource "aws_instance" "control_node" {
ami = "ami-0c02fb55956c7d316"
instance_type = "t3.medium"
subnet_id = aws_subnet.k8s_subnet.id
key_name = var.ssh_key_name
tags = {
Name = "control-node"
}
}
resource "aws_instance" "worker_node" {
ami = "ami-0c02fb55956c7d316"
instance_type = "t3.medium"
subnet_id = aws_subnet.k8s_subnet.id
key_name = var.ssh_key_name
tags = {
Name = "worker-node"
}
}
text
output "control_node_ip" {
value = aws_instance.control_node.public_ip
}
output "worker_node_ip" {
value = aws_instance.worker_node.public_ip
}
לאחר יצירת הקבצים נריץ:
bash
terraform init
terraform apply -auto-approve
Terraform יספק לנו תשתית מלאה ושני שרתים מוכנים להמשך פריסה.
בשלב זה נשתמש ב־Ansible Playbook כדי להגדיר את השרתים, להתקין עליהם Docker ו־Kubernetes, ולצרף את ה־Worker Node לקלסטר.
text
---
- hosts: control
become: true
tasks:
- name: Install kubeadm, kubelet and kubectl
apt:
name:
- kubelet
- kubeadm
- kubectl
state: present
update_cache: yes
- name: Initialize control plane
shell: |
kubeadm init --apiserver-advertise-address={{ ansible_host }} --pod-network-cidr=10.244.0.0/16
mkdir -p ~/.kube
cp /etc/kubernetes/admin.conf ~/.kube/config
- name: Install Flannel network plugin
shell: kubectl apply -f https://github.com/coreos/flannel/raw/master/Documentation/kube-flannel.yml
- hosts: worker
become: true
tasks:
- name: Join worker node to cluster
shell: "{{ hostvars['control'].join_command }}"
לאחר הפעלת ה־Playbook, Ansible שומר את פקודת ה־join מה־Control Node ומריץ אותה ב־Worker Node באופן אוטומטי.
כדי לאפשר גישה מאובטחת לשירותים כמו Jenkins ו־Flask, נשתמש ב־Cloudflare Tunnel.
Terraform ייצור קובץ cloudflared.yaml, ו־Ansible יתקין את הסוכן (cloudflared).
text
tunnel: "k8s-tunnel"
credentials-file: /root/.cloudflared/creds.json
ingress:
- hostname: flask.log-forge.com
service: http://127.0.0.1:5000
- hostname: jenkins.log-forge.com
service: http://127.0.0.1:8080
- service: http_status:404
לאחר הפעלה, ניתן לגשת לשירותים דרך Cloudflare:
ניצור בתיקיית kubernetes/ את כל קובצי ה־YAML להטמעת האפליקציות.
text
apiVersion: apps/v1
kind: Deployment
metadata:
name: flask-app
spec:
replicas: 2
selector:
matchLabels:
app: flask
template:
metadata:
labels:
app: flask
spec:
containers:
- name: flask
image: ofirrt/flask-demo:latest
ports:
- containerPort: 5000
---
apiVersion: v1
kind: Service
metadata:
name: flask-service
spec:
selector:
app: flask
ports:
- port: 80
targetPort: 5000
type: ClusterIP
text
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: flask-ingress
spec:
rules:
- host: flask.log-forge.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: flask-service
port:
number: 80
באמצעות שלושת הכלים החזקים הללו — Terraform, Ansible ו־Kubernetes — ניתן להקים סביבה מלאה בענן AWS בלחיצת כפתור אחת בלבד.
השילוב עם Cloudflare Tunnel מוסיף שכבת אבטחה חכמה ופריסה חיצונית מיידית.
מערכת זו מהווה בסיס מעולה ללימודי DevOps מתקדמים, קורסים בנושא IaC, או תרגול מעשי עבור מהנדסי תשתיות שרוצים להבין איך מחברים אוטומציה, ענן ואבטחה בתהליך אחד רציף.
סקריפט ההפעלה המלא – start.sh
הסקריפט הבא מפשט לחלוטין את תהליך הפריסה: הוא מפעיל את Terraform לבניית התשתית, מייצא את כתובות ה־IP, ולאחר מכן את Ansible לקונפיגורציה והתקנת Kubernetes.
bash
#!/bin/bash
set -e
echo "🚀 Starting Terraform + Ansible Kubernetes deployment..."
ROOT_DIR=$(pwd)
# שלב 1: הפעלת Terraform
cd terraform
echo "🧱 Initializing Terraform..."
terraform init -input=false
terraform apply -auto-approve
CONTROL_IP=$(terraform output -raw control_node_ip)
WORKER_IP=$(terraform output -raw worker_node_ip)
echo "✅ Terraform infrastructure ready!"
echo "Control Node: $CONTROL_IP"
echo "Worker Node: $WORKER_IP"
# שלב 2: עדכון inventory של Ansible
cd ../ansible
cat > inventory.ini <<EOF
[control]
$CONTROL_IP ansible_user=ubuntu
[worker]
$WORKER_IP ansible_user=ubuntu
EOF
# שלב 3: הפעלת Ansible להרצת Kubernetes
echo "⚙️ Running Ansible Playbook..."
ansible-playbook -i inventory.ini playbook.yaml
echo "✨ Deployment Complete!"
echo "Access your applications:"
echo "Flask App: https://flask.log-forge.com"
echo "Jenkins: https://jenkins.log-forge.com"
chmod +x start.sh
./start.sh
המאמר מציג מתודולוגיית Infrastructure as Code (IaC) מתקדמת להקמת סביבת Kubernetes על גבי תשתית AWS, תוך שילוב שלושה כלים מרכזיים באקו-סיסטם של ה-DevOps:
Terraform: משמש להקמת התשתית הפיזית (Provisioning). הכלי מאפשר הגדרה של ה-VPC, רשתות המשנה (Subnets) ושרתי ה-EC2 בצורה קודבילית, מה שמבטיח עקביות ויכולת שחזור של הסביבה בלחיצת כפתור.
Ansible: אחראי על ניהול התצורה (Configuration Management). לאחר שהשרתים באוויר, Ansible מבצע אוטומציה של התקנת ה-Nodes, הגדרת ה-Kubeadm וחיבור ה-Worker Nodes לקלסטר, ללא צורך בהתערבות ידנית.
Cloudflare Tunnel: מספק פתרון אבטחה מודרני לגישה מרחוק. במקום לחשוף פורטים לעולם החיצון, השימוש ב-Tunnel מאפשר גישה מאובטחת ומוצפנת לשירותי הקלסטר דרך רשת Cloudflare.
השורה התחתונה: שילוב הכלים הללו מאפשר לארגונים להקים סביבות פיתוח וייצור מורכבות ב-AWS תוך פחות מ-30 דקות, תוך צמצום טעויות אנוש, שיפור האבטחה והגברת מהירות ה-Delivery של צוותי הפיתוח.