468 字
2 分鐘
Azure DevOps 部署到 GKE (3) — kubectl
要做到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/v1kind: Deploymentmetadata: name: deployment-nginx-3spec: 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: v1kind: Servicemetadata: name: service-nginx-3spec: type: ClusterIP ports: - port: 80 protocol: TCP targetPort: 80 selector: app: pod-nginx-3
---apiVersion: networking.gke.io/v1kind: ManagedCertificatemetadata: name: cert-nginx-3spec: domains: - nginx-3.twcanhelp.me
---apiVersion: networking.k8s.io/v1kind: Ingressmetadata: name: ingress-nginx-3 annotations: networking.gke.io/managed-certificates: cert-nginx-3spec: 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部署,就得學會看懂其中的內容,包含常用到的Deployment、Service、Ingress等,可以多閱讀官方的文件。