云原生下基于K8S声明式GitOps持续部署工具ArgoCD实战-上( 二 )

  • 自动或手动将应用程序同步到所需状态
  • 提供应用程序活动实时视图的 Web UI
  • 用于自动化和 CI 集成的 CLI
  • Webhook 集成(GitHub、BitBucket、GitLab)
  • 用于自动化的 AccessTokens
  • PreSync、Sync、PostSync Hooks,以支持复杂的应用程序部署(例如蓝/绿和金丝雀发布)
  • 应用程序事件和 API 调用的审计
  • Prometheus 监控指标
  • 用于覆盖 Git 中的 ksonnet/helm 参数
  • 核心概念
    • Application:应用,一组由资源清单定义的 Kubernetes 资源,这是一个 CRD 资源对象
      Application source type:用来构建应用的工具
      Target state:目标状态,指应用程序所需的期望状态,由 Git 存储库中的文件表示
      Live state:实时状态,指应用程序实时的状态,比如部署了哪些 Pods 等真实状态
      Sync status:同步状态表示实时状态是否与目标状态一致,部署的应用是否与 Git 所描述的一样?
      Sync:同步指将应用程序迁移到其目标状态的过程,比如通过对 Kubernetes 集群应用变更
      Sync operation status:同步操作状态指的是同步是否成功
      Refresh:刷新是指将 Git 中的最新代码与实时状态进行比较,弄清楚有什么不同
      Health:应用程序的健康状况,它是否正常运行?能否为请求提供服务?
      Tool:工具指从文件目录创建清单的工具,例如 Kustomize 或 Ksonnet 等
      Configuration management tool:配置管理工具
      Configuration management plugin:配置管理插件
    环境准备概述需要安装K8S集群,前面文章我们分别使用KubeAdmin和Rancher部署过完整K8S集群,如果是建议测试的可以使用Kubekey快速部署一个AllInOne单节点K8S,Kubekey为kubesphere下子项目,后面在安装K9S以命令行界面方式查看和管理K8S集群 。
    安装Kubekeymkdir kubekeycd kubekey# 下载最新版本v2.2.2wget https://github.com/kubesphere/kubekey/releases/download/v2.2.2/kubekey-v2.2.2-linux-amd64.tar.gztar -xvf kubekey-v2.2.2-linux-amd64.tar.gz# 解压完为有文件名为kk可执行文件,查看版本信息./kk version
    云原生下基于K8S声明式GitOps持续部署工具ArgoCD实战-上

    文章插图
    创建K8Sexport KKZONE=cn# 生成配置./kk create config --name kk-k8s
    云原生下基于K8S声明式GitOps持续部署工具ArgoCD实战-上

    文章插图

    云原生下基于K8S声明式GitOps持续部署工具ArgoCD实战-上

    文章插图
    修改config-kk-k8s.yaml内容如下,viconfig-kk-k8s.yaml
    apiVersion: kubekey.kubesphere.io/v1alpha2kind: Clustermetadata:name: kk-k8sspec:hosts:- {name: k8snode, address: 192.168.50.95, internalAddress: 192.168.50.95, user: root, password: "zijimima"}roleGroups:etcd:- k8snodecontrol-plane:- k8snodeworker:- k8snodecontrolPlaneEndpoint:## Internal loadbalancer for apiservers# internalLoadbalancer: haproxydomain: kk-k8s.api.comaddress: ""port: 6443kubernetes:version: v1.23.8clusterName: cluster.localautoRenewCerts: truecontainerManager: dockeretcd:type: kubekeynetwork:plugin: calicokubePodsCIDR: 10.233.64.0/18kubeServiceCIDR: 10.233.0.0/18## multus support. https://github.com/k8snetworkplumbingwg/multus-cnimultusCNI:enabled: falseregistry:privateRegistry: ""namespaceOverride: ""registryMirrors: []insecureRegistries: []addons: []开始创建集群
    setenforce 0yum install socat conntrack ebtables ipset./kk create cluster -f config-kk-k8s.yaml
    云原生下基于K8S声明式GitOps持续部署工具ArgoCD实战-上

    文章插图
    等待一段时间安装,安装完成后打印安装完成的日志
    云原生下基于K8S声明式GitOps持续部署工具ArgoCD实战-上

    文章插图
    yum install bash-completion -y# 安装Kubectl 这个之前文章有,这里就不再说明echo "source <(kubectl completion bash)" >> ~/.bashrcsource ~/.bashrc

    经验总结扩展阅读