【学习记录】ArgoCD GitOps 实践三:Git 项目组织方法

在根目录创建 ApplicationSet

在 Git 仓库根目录下创建 argo-apps.yaml 的文件,定义 ArgoCD 的 ApplicationSet:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
apiVersion: argoproj.io/v1alpha1
kind: ApplicationSet
metadata:
  name: apps-mycluster # ApplicationSet 名称,建议带集群名称后缀
  namespace: argocd
spec:
  goTemplate: true
  goTemplateOptions: ["missingkey=error"]
  generators:
    - git: # 通过当前Git仓库的apps目录下的子目录自动生成Application
        repoURL: git@yourgit.com:your-org/your-repo.git
        revision: HEAD
        directories:
          - path: apps/*
  template:
    metadata:
      name: "{{.path.basename}}-mycluster" # 自动创建的Application的名称格式为: 目录名-集群名
      namespace: argocd
    spec:
      project: default
      source:
        repoURL: git@yourgit.com:your-org/your-repo.git
        targetRevision: HEAD
        path: "apps/{{.path.basename}}" # 自动生成的 Application 使用的 YAML 内容在对应子目录下
      destination:
        name: mycluster # Application 被部署的目的集群
      syncPolicy:
        automated:
          prune: true
          selfHeal: true
Read more...

【学习记录】如何在不容器进行抓包,学习使用ksniff

Kubernetes 环境中遇到网络问题需要抓包排查怎么办? 传统做法是登录 Pod 所在节点,然后 进入容器 netns,最后使用节点上 tcpdump 工具进行抓包。 整个过程比较繁琐,好在社区出现了 ksniff 这个小工具, 它是一个 kubectl 插件,可以让我们在 Kubernetes 中抓包变得更简单快捷。

本文将介绍如何使用 ksniff 这个工具来对 Pod 进行抓包。

安装

Read more...

【学习记录】在容器中使用crontab

准备 crontab 配置文件

新建一个名为crontab的配置文件,写定时任务规则:

1
* * * * * echo "Crontab is working" > /proc/1/fd/1

/proc/1/fd/1表示输出到容器主进程的标准输出,这样我们可以利用 kubectl logs 来查看到执行日志。

准备 Dockerfile

  • CentOS 镜像
1
2
3
4
5
6
7
8
9
FROM docker.io/centos:7

RUN yum -y install crontabs && rm -rf /etc/cron.*/*

ADD crontab /etc/crontab
RUN chmod 0644 /etc/crontab
RUN crontab /etc/crontab

CMD ["crond", "-n"]
Read more...