幽默:K8S没有那么难,部署在Kubernetes上个人博客

21-03-18 banq

这位博主应该是第一个在博客和小型项目中使用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,而且会说“这是最好的!”。

 

1
猜你喜欢