幽默:K8S沒有那麼難,部署在Kubernetes上個人部落格

發表於2021-03-18

這位博主應該是第一個在部落格和小型專案中使用Kubernetes的人,是不是有點大炮轟蚊子的感覺。他認為:

毫無疑問,Kubernetes是做了很多的引擎蓋下複雜的事情。但是,作為終端使用者,我不會遇到這種複雜性。在花了幾個小時通過官方教程學習了關鍵概念之後,日常使用起來確實非常容易。

例如,此部落格的整個部署配置包含在此yml 檔案中:

apiVersion: v1
kind: Service
metadata:
  name: blog
spec:
  ports:
    - port: 80
  selector:
    app: blog
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: blog
spec:
  selector:
    matchLabels:
      app: blog
  replicas: 2
  template:
    metadata:
      labels:
        app: blog
    spec:
      containers:
        - image: marcusbuffett/blog:latest
          name: blog
          ports:
            - containerPort: 80
              name: blog
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: blog
  annotations:
    kubernetes.io/tls-acme: "true"
    cert-manager.io/cluster-issuer: letsencrypt
    konghq.com/override: "https-only"
spec:
  tls:
    - secretName: blog-tls
      hosts:
        - mbuffett.com
  rules:
    - host: mbuffett.com
      http: &http_rules
        paths:
          - backend:
              serviceName: blog
              servicePort: 80

只有50行,完全是自包含的。它比在AWS控制檯中單擊要好得多,而且易於使用,因為我所需的一切都在那個檔案中。如果我需要更新任何內容,我所要做的就是編輯該檔案並執行k apply -f deploy.yml(kubectl別名為k)。

在我的專案中,我有一個像這樣的指令碼:

#!/bin/bash
docker build -t marcusbuffett/blog:latest .
docker push marcusbuffett/blog:latest
kubectl rollout restart deployment blog

如果要部署,請執行./deploy.sh。滾動部署開始。如果失敗,將使用最新的工作版本。對於我的大多數副專案,我可以像這樣複製配置和部署指令碼,並使該專案在生產環境中的啟動和執行比其他解決方案更快。

從Ansible劇本到Docker Compose,再到Heroku,再到AWS,再到裸機,我在部署技術方面經歷了幾次嘗試。我只是說這是為了說明我已經嘗試過替代方法,我不僅在第一輪跳入Kubernetes,而且會說“這是最好的!”。

 

相關文章