1111env :
1212 IMAGE_NAME : vite-react-app
1313 NAMESPACE : production
14+ NODE_PORT : 30080
1415
1516jobs :
1617 test :
8081 microk8s ctr image import /tmp/app-image-latest.tar
8182 rm /tmp/app-image-latest.tar
8283
83- - name : Verify Image in MIcroK8s
84+ - name : Verify Image in MicroK8s
8485 run : |
8586 echo "Images available in MicroK8s:"
8687 microk8s ctr images ls | grep ${{ env.IMAGE_NAME }}
@@ -102,6 +103,31 @@ jobs:
102103 run : |
103104 microk8s kubectl apply -f k8s/ --namespace=${{ env.NAMESPACE }}
104105
106+ - name : Configure external access
107+ run : |
108+ EXTERNAL_IP=$(curl -s ifconfig.me)
109+ echo "External IP: $EXTERNAL_IP"
110+
111+ # Update service with external IP
112+ cat <<EOF | microk8s kubectl apply -f -
113+ apiVersion: v1
114+ kind: Service
115+ metadata:
116+ name: vite-react-app-service
117+ namespace: ${{ env.NAMESPACE }}
118+ spec:
119+ type: NodePort
120+ externalIPs:
121+ - $EXTERNAL_IP
122+ selector:
123+ app: vite-react-app
124+ ports:
125+ - protocol: TCP
126+ port: 80
127+ targetPort: 80
128+ nodePort: ${{ env.NODE_PORT }}
129+ EOF
130+
105131 - name : Wait for rollout
106132 run : |
107133 microk8s kubectl rollout status deployment/vite-react-app \
@@ -122,27 +148,31 @@ jobs:
122148 - name : Get service URL
123149 id : service-url
124150 run : |
125- NODE_PORT=$(microk8s kubectl get service vite-react-app-service -n ${{ env.NAMESPACE }} -o jsonpath='{.spec.ports[0].nodePort}')
126- NODE_IP=$(microk8s kubectl get nodes -o jsonpath='{.items[0].status.addresses[?(@.type=="InternalIP")].address}')
127- echo "url=http://$NODE_IP:$NODE_PORT" >> $GITHUB_OUTPUT
128- echo "Application URL: http://$NODE_IP:$NODE_PORT"
151+ EXTERNAL_IP=$(curl -s ifconfig.me)
152+ echo "url=http://$EXTERNAL_IP:${{ env.NODE_PORT }}" >> $GITHUB_OUTPUT
153+ echo "Application URL: http://$EXTERNAL_IP:${{ env.NODE_PORT }}"
129154
130155 - name : Deployment Summary
131156 run : |
132- NODE_PORT=$(microk8s kubectl get service vite-react-app-service -n ${{ env.NAMESPACE }} -o jsonpath='{.spec.ports[0].nodePort}')
133- NODE_IP=$(microk8s kubectl get nodes -o jsonpath='{.items[0].status.addresses[?(@.type=="InternalIP")].address}')
157+ EXTERNAL_IP=$(curl -s ifconfig.me)
134158
135159 echo "## Deployment Status :rocket:" >> $GITHUB_STEP_SUMMARY
136160 echo "" >> $GITHUB_STEP_SUMMARY
137161 echo "**Namespace:** ${{ env.NAMESPACE }}" >> $GITHUB_STEP_SUMMARY
138162 echo "**Image:** ${{ steps.image-tag.outputs.tag }}" >> $GITHUB_STEP_SUMMARY
139163 echo "**Commit:** ${{ github.sha }}" >> $GITHUB_STEP_SUMMARY
140- echo "**URL:** http://$NODE_IP:$NODE_PORT" >> $GITHUB_STEP_SUMMARY
164+ echo "**External URL:** http://$EXTERNAL_IP:${{ env.NODE_PORT }}" >> $GITHUB_STEP_SUMMARY
165+ echo "**NodePort:** ${{ env.NODE_PORT }}" >> $GITHUB_STEP_SUMMARY
141166 echo "" >> $GITHUB_STEP_SUMMARY
142167 echo "### Pods Status" >> $GITHUB_STEP_SUMMARY
143168 echo '```' >> $GITHUB_STEP_SUMMARY
144169 microk8s kubectl get pods --namespace=${{ env.NAMESPACE }} >> $GITHUB_STEP_SUMMARY
145170 echo '```' >> $GITHUB_STEP_SUMMARY
171+ echo "" >> $GITHUB_STEP_SUMMARY
172+ echo "### Service Status" >> $GITHUB_STEP_SUMMARY
173+ echo '```' >> $GITHUB_STEP_SUMMARY
174+ microk8s kubectl get svc --namespace=${{ env.NAMESPACE }} >> $GITHUB_STEP_SUMMARY
175+ echo '```' >> $GITHUB_STEP_SUMMARY
146176
147177 - name : Cleanup old images
148178 run : |
0 commit comments