3 כלים לאוטומציה מלאה ל־Kubernetes על AWS עם Terraform, Ansible ו־Cloudflare

תמונה שמתארת תהליך עבודה ב אמזון עם קוברנטיקס טרה פורם אנסיבל ו קלאודפלייר

עודכן לאחרונה: 31 מרץ, 2026

אוטומציה בענן

במאמר הזה נציג תהליך אוטומטי מלא לפריסת אשכול Kubernetes בענן AWS, עם אינטגרציה ל־Cloudflare Tunnel — פתרון שמאפשר גישה מאובטחת לשירותים חיצוניים, ללא צורך בפתיחת פורטים או הקמת Load Balancer.

כל המידע פה הוא חלק ממה שנלמד אצלנו ב קורס Devops ומיושם אצלנו בקבוצה שיש בה חברת פיתוח חברת השמה ומכללה ללימודי מקצועות ההיטק.

התמונה הגדולה – Infrastructure as Code בעולם ה־DevOps

 

DevOps מודרני נשען על שתי טכנולוגיות מפתח:

  • Terraform לניהול תשתיות כקוד (IaC) בעננים שונים.
  • Ansible לאוטומציה של קונפיגורציות והתקנת יישומים על שרתים.

בפרויקט זה משלבים את שתי הגישות — תשתית ודיפלוימנט — בתהליך אוטומטי אחד שמקצר משמעותית את הזמן עד להרצת אשכול Kubernetes פעיל.

סקירה: רכיבי המערכת

Terraform – שכבת התשתית

Terraform אחראי על יצירת סביבת AWS:

  • VPC עם תתי־רשתות, Security Groups ו־Route Tables.
  • שני שרתים מבוססי EC2 — אחד כ־Control Plane ואחד כ־Worker Node.
  • אינטגרציה אוטומטית עם Cloudflare להגדרת Tunnel מאובטח.
  • ייצוא קובצי קונפיגורציה (YAML) לשימוש בשלב הבא של Ansible ו־Kubernetes.

Ansible – שכבת ההתקנה והקונפיגורציה

לאחר הפריסה הראשונית Terraform מייצא קובצי YAML ומעביר את השליטה ל־Ansible שמבצע:

  • התקנת Kubernetes על שני השרתים.
  • הצטרפות ה־Worker Node לקלסטר.
  • התקנת Docker ותצורת Cloudflare Tunnel על ה־Control Node.
  • העתקת תיקיית kubernetes/ עם קובצי דיפלוימנט ו־Ingress.

Kubernetes ויישומי הדגמה

בתיקיית kubernetes/ נמצאים כל קובצי ה־YAML הנדרשים לפריסת השירותים:

  • אפליקציית Flask לדוגמה.
  • Jenkins כפתרון CI/CD אינטגרלי לקלסטר.
  • קובצי Ingress לנתב בין השירותים.
  • הגדרת Cloudflare Tunnel לגישה מאובטחת אל Jenkins ו־Flask דרך דומיינים:

שלבי ההפעלה בקצרה

  1. התקנת דרישות מוקדמות (AWS CLI, Terraform, Ansible, חשבון Cloudflare).
  2. הרצת הסקריפט start.sh שמפעיל את Terraform ולאחריו את Ansible.
  3. לאחר כמה דקות – אשכול Kubernetes פעיל עם יישומים נגישים דרך Cloudflare.

השילוב של Terraform ו־Ansible מייצר תהליך End-to-End מלא — החל מהקמת שרתים בענן, דרך התקנת Kubernetes, ועד לפריסת יישומים וחשיפתם לעולם החיצון. זהו מודל מצוין לפרויקטים לימודיים, מערכות DevOps, או הקמת תשתית בסיסית לארגון חדש.

פרויקט אוטומציה ב AWS

הפרויקט הזה הוא חלק מתשתית העבודה שלנו ב Real Time Group והוא עוזר לנו לנהל שרתי סטודנטים שרתי פיתוח ושרתי פרודקשן שלנו ושל לקוחות שלנו.

שלב 1: יצירת תשתית AWS עם Terraform

השלב הראשון בתהליך הוא להגדיר תשתית כקוד (IaC). ניצור VPC, רשתות משנה ו־EC2 Instances שישמשו את ה־Control Plane וה־Worker Node.

קובץ main.tf לדוגמה:

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"

  }

}

 

קובץ outputs.tf:

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 יספק לנו תשתית מלאה ושני שרתים מוכנים להמשך פריסה.

שלב 2: התקנה אוטומטית של Kubernetes בעזרת Ansible

 

בשלב זה נשתמש ב־Ansible Playbook כדי להגדיר את השרתים, להתקין עליהם Docker ו־Kubernetes, ולצרף את ה־Worker Node לקלסטר.

דוגמה ל־ansible/playbook.yaml:

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 }}"

 

יצירת פקודת ההצטרפות (Join Command)

לאחר הפעלת ה־Playbook, Ansible שומר את פקודת ה־join מה־Control Node ומריץ אותה ב־Worker Node באופן אוטומטי.

שלב 3: אינטגרציה עם Cloudflare Tunnel

 

כדי לאפשר גישה מאובטחת לשירותים כמו Jenkins ו־Flask, נשתמש ב־Cloudflare Tunnel.
Terraform ייצור קובץ cloudflared.yaml, ו־Ansible יתקין את הסוכן (cloudflared).

קובץ cloudflared.yaml לדוגמה:

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:

שלב 4: פריסת האפליקציות על Kubernetes

 

ניצור בתיקיית kubernetes/ את כל קובצי ה־YAML להטמעת האפליקציות.

דוגמה ל־kubernetes/flask-deployment.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

 

קובץ Ingress לדוגמה:

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"

 

הסבר קצר:

  • הסקריפט שומר על תהליך סגור מתחילתו ועד סופו.
  • ניתן להפעיל אותו ישירות עם:
    bash

chmod +x start.sh

./start.sh

  •  
  • בסיום ההפעלה יהיו זמינים שירותי Kubernetes מלאים, כולל Flask ו־Jenkins, מגובים על ידי Cloudflare Tunnel.

 

סיכום: אוטומציה מלאה של פריסת Kubernetes ב-AWS

המאמר מציג מתודולוגיית 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 של צוותי הפיתוח.


תחומי לימוד הכי מבוקשים בהייטק בשנת 2026

© כל הזכויות שמורות Real Time Group