468 字
2 分鐘
Azure DevOps 部署到 GKE (3) — kubectl
2023-03-26
無標籤

要做到DevOps自動部署,一定要先學會如何手動部署到K8s,kubectl是官方出的cli工具,透過kubectl可以完全操作K8s叢集。


常見指令#

Kubernetes是由各種resource組成,包含容器架構調度,以下說明一些常用到kubectl 指令。

  • 查看常用的Resource:kubectl get all

  • 查看所有節點:kubectl get node

  • 查看Pod資訊:kubectl describe pod <pod_name>

  • 查看Pod log:kubectl logs <pod_name>

  • 進入Pod:kubectl exe -it <pod_name> -- /bin/bash

  • 部署、更新resource:kubectl apply -f <file_name>.yml


kubectl apply#

我們模擬上一篇的作法,將NGINX部署為deployment,並在ingress使用Google簽署的憑證,我們先在Cloud Shell建立一個nginx.yml

apiVersion: apps/v1
kind: Deployment
metadata:
name: deployment-nginx-3
spec:
replicas: 1
selector:
matchLabels:
app: pod-nginx-3
template:
metadata:
labels:
app: pod-nginx-3
spec:
containers:
- name: nginx
image: nginx:1.23
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: service-nginx-3
spec:
type: ClusterIP
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
app: pod-nginx-3
---
apiVersion: networking.gke.io/v1
kind: ManagedCertificate
metadata:
name: cert-nginx-3
spec:
domains:
- nginx-3.twcanhelp.me
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ingress-nginx-3
annotations:
networking.gke.io/managed-certificates: cert-nginx-3
spec:
rules:
- host: nginx-3.twcanhelp.me
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: service-nginx-3
port:
number: 80

接下來下kubectl apply -f nginx.yml,成功部署會顯示如下

這時候看看ingress是否有能到Publci IP,用kubectl get ingress,剛剛部署的ingress-nginx-3還沒拿到,需要再等一下。

等了幾分鐘後,就會出現IP了。

接著就去上一筆DNS的A紀錄,我是用Cloudflare管DNS,由於我們用Google幫我們簽的憑證,不要開Proxy

再來就可以訪問看看網址,Google簽署憑證會需要時間,大概快十分鐘,過一段時間在看看網站就好了。


GCP後台#

用指令部署跟在網頁部署其實是一樣的,剛剛指令部署的結果,也會在GCP後台出現。


結語#

要學習如何用yml部署,就得學會看懂其中的內容,包含常用到的DeploymentServiceIngress等,可以多閱讀官方的文件。