Skip to content

Commit

Permalink
38. Automatic deploy to Kubernetes with Github Action
Browse files Browse the repository at this point in the history
  • Loading branch information
Chanon2000 committed Jun 25, 2024
1 parent d3cc19c commit ecffbbf
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 5 deletions.
22 changes: 19 additions & 3 deletions .github/workflows/deploys.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,20 @@ on:

jobs:

build:
deploy: # เปลี่ยนชื่อเป็น deploy เนื่องจากเราจะไม่ได้ทำแค่ build แล้ว แต่เราจะ deploy ด้วย
name: Build image
runs-on: ubuntu-latest

steps:
- name: Check out code
uses: actions/checkout@v2

# install kubectl
- uses: azure/setup-kubectl@v3 # ใช้ action นี้จาก https://github.com/marketplace/actions/kubectl-tool-installer # โดยหลักๆคือเพิ่ม install kubectl เท่านั้น # ซึ่ง action นี้ก็จะทำการ install kubectl ลง github runner machine
with:
version: 'v1.28.2'
id: install

- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v1 # ปัจจุบันจะเป็น v4 มั้งซึ่งตั้งแต่ v2 เป็นต้นไปมันให้ใช้เป็น OIDC เพื่อ connect กับ Github action ซึ่งมันยาก เลยยังใช้ v1 ไปก่อน ในการเรียน course นี้
with:
Expand All @@ -35,6 +41,16 @@ jobs:
REPOSITORY: simplebank
IMAGE_TAG: ${{ github.sha }}
run: |
docker build -t $REGISTRY/$REPOSITORY:$IMAGE_TAG .
docker push $REGISTRY/$REPOSITORY:$IMAGE_TAG
docker build -t $REGISTRY/$REPOSITORY:$IMAGE_TAG -t latest .
docker push -a $REGISTRY/$REPOSITORY
# build image แล้ว push ไปที่ ECR

# deploy docker image จาก ECR ไปที่ EKS cluster
- name: Deploy image to Amazon EKS
# รัน deploy resources ต่างๆขึ้น cluster
run: |
kubectl apply -f eks/aws-auth.yaml
kubectl apply -f eks/deployment.yaml
kubectl apply -f eks/service.yaml
kubectl apply -f eks/issuer.yaml
kubectl apply -f eks/ingress.yaml
3 changes: 2 additions & 1 deletion eks/aws-auth.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,5 @@ data:
username: github-ci
groups:
- system:masters
# arn:aws:iam::668543706981:user/github-ci เอามาจาก IAM นะ
# arn:aws:iam::668543706981:user/github-ci เอามาจาก IAM นะ
# ในอนาคตคุณอาจเพิ่ม user เพื่อ gant access ได้ที่ file นี้
4 changes: 3 additions & 1 deletion eks/deployment.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,9 @@ spec: # เพื่อกำหนด deployment object
spec: # spec ของ pod # ซึ่งคือจุดที่บอก deployment ว่าจะ deploy containers ยังไง นั้นเอง
containers:
- name: simple-bank-api # ชื่อของ container
image: 668543706981.dkr.ecr.ap-southeast-1.amazonaws.com/simplebank:692c638cd088f048e0a5c6e6d2bad86c2ffda9da # คือ image url จากใน ECR ใน simplebank repository # copy มาวางได้เลย
image: 668543706981.dkr.ecr.ap-southeast-1.amazonaws.com/simplebank:latest # คือ image url จากใน ECR ใน simplebank repository # copy มาวางได้เลย
# 692c638cd088f048e0a5c6e6d2bad86c2ffda9da คือ tag ของ image ซึ่งมันเอามาจาก git commit hash นั้นเอง
# เพื่อเอา image ที่มี tag คือ latest มา deploy แทน
imagePullPolicy: Always # เพื่อให้มั้นใจว่่า kubernetes จะ pull latest image จาก ECR เสมอก่อนที่จะ deploy container
ports:
- containerPort: 8080 # คือ port ที่ container จะ export ไปที่ network

0 comments on commit ecffbbf

Please sign in to comment.