ubuntu

Ubuntu Kubernetes 自动化运维如何实现

小樊
45
2025-12-16 15:38:37
栏目: 智能运维

Ubuntu 上落地 Kubernetes 自动化运维的路线图


一 架构与工具选型


二 快速落地步骤


三 自动化脚本与 GitOps 示例

#!/usr/bin/env bash
set -euo pipefail

usage() { echo "用法: $0 <manifest.yaml|chart.tgz> [upgrade|rollback]"; exit 1; }
[[ $# -lt 1 ]] && usage

MANIFEST=$1
ACTION=${2:-apply}

case "$ACTION" in
  apply)
    kubectl apply -f "$MANIFEST"
    if [[ "$MANIFEST" == *.yaml || "$MANIFEST" == *.yml ]]; then
      NAME=$(yq e '.metadata.name // ""' "$MANIFEST")
      KIND=$(yq e '.kind // ""' "$MANIFEST")
      [[ -n "$NAME" && -n "$KIND" ]] && kubectl rollout status "$KIND/$NAME" --timeout=300s
    fi
    ;;
  rollback)
    if [[ "$MANIFEST" == *.yaml || "$MANIFEST" == *.yml ]]; then
      NAME=$(yq e '.metadata.name // ""' "$MANIFEST")
      KIND=$(yq e '.kind // ""' "$MANIFEST")
      [[ -n "$NAME" && -n "$KIND" ]] && kubectl rollout undo "$KIND/$NAME"
    fi
    ;;
  *) usage ;;
esac
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: myapp
  namespace: argocd
spec:
  project: default
  source:
    repoURL: https://github.com/org/repo.git
    targetRevision: HEAD
    path: k8s/overlays/prod
  destination:
    server: https://kubernetes.default.svc
    namespace: default
  syncPolicy:
    automated:
      prune: true
      selfHeal: true
    syncOptions:
      - CreateNamespace=true

四 监控告警与日志实践


五 权限安全与备份恢复

0
看了该问题的人还看了