Argo CD 入门扫盲使用(一)

简介: Argo CD 入门扫盲使用

一、什么是 argo cd

Argo CD 是用于 Kubernetes 的声明性 GitOps 连续交付工具。

二、为什么使用 argo cd

Argo CD 可在指定的目标环境中自动部署所需的应用程序状态,应用程序部署可以在 Git 提交时跟踪对

分支,标签的更新,或固定到清单的特定版本。

三、argo cd 架构图

Argo CD 的主要职责是 CD(Continuous Delivery,持续交付),将应用部署到 Kubernetes 等环境

中,而 CI(Continuous Integration,持续集成)主要是交给 Jenkins,Gitlab CI 等工具来完成。

Argo CD 的架构图如下

四、Argo CD 使用

Argo CD 一般安装在 Kubernetes 集群中。

1、安装 Argo CD

使用以下命令在 argocd 命名空间部署 Argo CD:

# 创建命名空间
kubectl create namespace argocd 
# 部署    argo cd
wget https://raw.githubusercontent.com/argoproj/argo- 
cd/stable/manifests/install.yaml
kubectl apply -n argocd -f install.yaml

2、安装 Argo CD CLI

Argo CD CLI 是用于管理 Argo CD 的命令行工具,不同操作系统具体的安装方式可以参考 Argo CD CLI

Installation

Mac 系统可以直接使用 brew install 进行安装,如下

brew install argocd

3、发布 Argo CD 服务

默认情况下, Argo CD 服务不对外暴露服务,可以通过 LoadBalancer 或者 NodePort 类型的

Service、Ingress、Kubectl 端口转发等方式将 Argo CD 服务发布到 Kubernetes 集群外部。

这里使用以下命令通过 NodePort 服务的方式暴露 Argo CD 到集群外部:

kubectl patch svc argocd-server -n argocd -p '{"spec": {"type": "NodePort"}}'

现在已经将名字为 argocd-server 的 Service 改成 NodePort 类型了,可以在集群外部通过 <节点 IP>:<

随机生成的 NodePort 端口> 来访问 Argo CD。

浏览器输入 https://<节点 IP>:port 访问 Argo CD。

4、获取 Argo CD 密码

默认情况下 admin 帐号的初始密码是自动生成的,会以明文的形式存储在 Argo CD 安装的命名空间中

名为 argocd-initial-admin-secret 的 Secret 对象下的 password 字段下,可以用下面的命令获取:

kubectl -n argocd get secret \ 
argocd-initial-admin-secret \
-o jsonpath="{.data.password}" | base64 -d 
# 返回结果
kj8bDMiDTnsEfnjg

在浏览器输入密码登录 Argo CD,登录界面如下图:

登录后的界面如下所示:

5、准备 Git 仓库

在 Gitlab 上创建项目,取名为 argocd-lab,为了方便实验将仓库设置为 public 公共仓库。在仓库中创

建 quickstart 目录,在目录中创建两个 yaml 资源文件,分别是 myapp-deployment.yaml 和 myapp-

service.yaml。

gitlab 内容如下:

yaml 资源文件内容如下:

# myapp-deployment.yaml 
apiVersion: apps/v1 
kind: Deployment 
metadata:
 name: myapp 
spec:
 replicas: 1
 selector:
   matchLabels:
     app: myapp
 template:
   metadata:
     labels:
       app: myapp
   spec:
     containers:
     - image: registry.cn-shanghai.aliyuncs.com/public-namespace/myapp:v1
       name: myapp 
       ports:
       - containerPort: 80 
---
# myapp-service.yaml 
apiVersion: v1 
kind: Service 
metadata:
 name: myapp
spec:
 ports:
 - port: 80
   targetPort: 80 
   nodePort: 32060 
 type: NodePort 
 selector:
   app: myapp

6、创建 Argo CD App

首先创建一个命名空间 devops 用于 Argo CD 部署应用。

kubectl create ns devops

可以有三种方式创建 app,分别介绍如下:

方式一:使用 UI 创建 App

Application Name: 自定义的应用名。

Project: 使用默认创建好的 default 项目。

SYNC POLICY:  同步方式,可以选择自动或者手动,这里我们选择手动同步。

Repository URL: 项目的 Git 地址。

Revision: 分支名。

Path: yaml 资源文件所在的相对路径。

Cluster URL: Kubernetes API Server 的访问地址,由于 Argo CD 和下发应用的 Kubernetes 集群是同 一个,因此可以直接使用 http://kubernetes.default.svc 来访问。关于 Kubernetes 中 DNS 解析规则可 以查看 Pod 与 Service 的 DNS。

Namespace: 部署应用的命名空间。

创建完成后如下图所示,此时处于 OutOfSync 的状态:


相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。 &nbsp; &nbsp; 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
目录
相关文章
|
开发工具 git Perl
Argo CD 入门扫盲使用(二)
Argo CD 入门扫盲使用
615 0
|
Kubernetes Devops jenkins
ArgoCD 简明教程
ArgoCD 简明教程
3441 0
ArgoCD 简明教程
|
Kubernetes 负载均衡 安全
【K8S系列】深入解析k8s 网络插件—kube-router
【K8S系列】深入解析k8s 网络插件—kube-router
2574 1
|
机器学习/深度学习 存储 监控
EFK部署及应用
EFK部署及应用
685 1
|
7月前
|
Kubernetes 应用服务中间件 API
Nginx Ingress 退役,详细版迁移指引来啦
Ingress NGINX 退役引发开发者们的强烈关注,官方已经提供了完备的应对措施,迁移到 Gateway API,以及20+ Ingress 控制器。但实施迁移的时候,企业还会希望了解新的 Ingress 控制器是否兼容 Ingress NGINX 的注解,迁移过程中如何进行灰度切流,遇到流量损失如何快速回滚等,以保障迁移过程平滑,不影响线上业务。因此,本文将提供基于实操的应对方案,以阿里云云原生 API 网关(Higress 企业版)为例,按步骤详细阐述迁移的操作过程。
888 64
|
消息中间件 存储 Kubernetes
K8S环境快速部署Kafka(K8S外部可访问)
本文通过实战展示了如何在K8S环境部署kafka集群,并且K8S环境外部也能使用此服务
4872 1
K8S环境快速部署Kafka(K8S外部可访问)
|
Kubernetes NoSQL Redis
k8s快速部署Redis单机
k8s快速部署Redis单机
|
存储 Linux 持续交付
史上最全 Terraform 入门教程,助你无坑入门!
【10月更文挑战第26天】这是一个全面的 Terraform 入门教程,涵盖了 Terraform 的基本概念、安装步骤、基础配置、变量和输出变量的使用、模块的定义与使用,以及状态管理。通过实例讲解如何创建本地文件资源和 AWS S3 桶,帮助初学者快速上手并掌握 Terraform 的核心功能。
4452 8
|
Kubernetes 监控 数据可视化
k8s学习--使用argo-rollouts实现金丝雀发布
k8s学习--使用argo-rollouts实现金丝雀发布
1103 1
|
容器 Perl Kubernetes
深入 Kubernetes 网络:实战K8s网络故障排查与诊断策略
本文介绍了Kubernetes网络的基础知识和故障排查经验,重点讨论了私有化环境中Kubernetes网络的挑战。首先,文章阐述了Kubernetes网络模型的三大核心要素:Pod网络、Service网络和CNI,并强调了其在容器通信和服务发现中的作用。接着,通过三个具体的故障案例,展示了网络冲突、主节点DNS配置更改导致的服务中断以及容器网络抖动问题的解决过程,强调了网络规划、配置管理和人员培训的重要性。最后,提到了KubeSkoop exporter工具在监控和定位网络抖动问题中的应用。通过这些案例,读者可以深入了解Kubernetes网络的复杂性,并学习到实用的故障排查方法。
149296 19

热门文章

最新文章