当前位置:   article > 正文

云原生实践(二):Kubernetes GitOps 动手实验_flux create source git podinfo

flux create source git podinfo

背景

GitOps是一种实现持续交付的模型,它的核心思想是将应用系统的声明性基础架构和应用程序存放在Git的版本控制库中。

对于日常维护,我比较关心是否有一个完整的声明,可以反应出 Kubernetes 集群中的资源情况。而不是每个应用去单独描述和发布。我这次使用 Flux 来做练习。

Flux 核心概念

Source

Source defines the origin of a repository containing the desired state of the system and the requirements to obtain it (e.g. credentials, version selectors). For example, the latest tag available from a Git repository over SSH.1.x

Reconciliation

Reconciliation refers to ensuring that a given state (e.g. application running in the cluster, infrastructure) matches a desired state declaratively defined somewhere (e.g. a Git repository).

官方示例练习

 1. 准备一个 Kubernetes 集群,直接使用 Azure 的服务

2. 使用 Az cli 登录,并获取到 access token

  1. az login -t <租户ID>
  2. az aks get-credentials -n <集群名称> -g <资源组名称>

3. 查看一下目前集群的信息,也证明我们上一步获取到的 token 是正确的

4. 我们这次动手实验选用的 GitOps 工具是 Flux ,首先安装他的 cli ,用管理员执行以下命令。 

choco install flux

检查一下是否安装成功

5. 创建一个用于管理代码的 repo ,虽然初始化的时候可以自动创建,不过考虑到一会儿需要准备的个人访问令牌的权限问题,我还是提前手动创建好。创建好的 repo 如下: 

6. 准备 Github 个人访问令牌

7. 启动 Flux 

  1. flux bootstrap github `
  2. --owner=mayong43111 `
  3. --repository=dapr-aks-poc `
  4. --branch=main `
  5. --path=./clusters/dapr-cluster `
  6. --personal

安装完效果如下:

检查 repo ,发现新增加了一些文件

8. 将源代码 clone,并在本地计算机执行命令添加示例

  1. flux create source git podinfo `
  2. --url=https://github.com/stefanprodan/podinfo `
  3. --branch=master `
  4. --interval=30s `
  5. --export > ./clusters/dapr-cluster/podinfo-source.yaml

提交代码仓库 

git add -A && git commit -m "add dev cluster" && git push

9. 增加一个部署

  1. flux create kustomization podinfo `
  2. --target-namespace=default `
  3. --source=podinfo `
  4. --path="./kustomize" `
  5. --prune=true `
  6. --interval=5m `
  7. --export > ./clusters/dapr-cluster/podinfo-kustomization.yaml

10. 启动监视

flux get kustomizations --watch

11. 提交代码

  1. git add -A && git commit -m "Add podinfo Kustomization"
  2. git push

并观测到变化

查看 workload

扩展练习

1. 增加一个自己的源,这里使用的是 GitRepository

  1. flux create source git dapr-poc `
  2. --url=https://github.com/mayong43111/dapr-aks-poc `
  3. --branch=main `
  4. --interval=30s `
  5. --export > ./clusters/dapr-cluster/dapr-source.yaml

2. 在代码库根目录下增加一个 aspnetapp.yaml 文件

  1. apiVersion: v1
  2. kind: Pod
  3. metadata:
  4. name: aspnetapp
  5. labels:
  6. app: aspnetapp
  7. spec:
  8. containers:
  9. - image: "mcr.microsoft.com/dotnet/core/samples:aspnetapp"
  10. name: aspnetapp-image
  11. ports:
  12. - containerPort: 80
  13. protocol: TCP
  14. ---
  15. apiVersion: v1
  16. kind: Service
  17. metadata:
  18. name: aspnetapp
  19. spec:
  20. selector:
  21. app: aspnetapp
  22. ports:
  23. - protocol: TCP
  24. port: 80
  25. targetPort: 80
  26. ---
  27. apiVersion: networking.k8s.io/v1
  28. kind: Ingress
  29. metadata:
  30. name: aspnetapp
  31. annotations:
  32. kubernetes.io/ingress.class: azure/application-gateway
  33. spec:
  34. rules:
  35. - http:
  36. paths:
  37. - path: /
  38. backend:
  39. service:
  40. name: aspnetapp
  41. port:
  42. number: 80
  43. pathType: Exact

3. 增加一个 Reconciliation ,这里使用的是 Kustomization

  1. flux create kustomization dapr-poc `
  2. --target-namespace=dapr-poc `
  3. --source=dapr-poc `
  4. --path="./dapr" `
  5. --prune=true `
  6. --interval=5m `
  7. --export > ./clusters/dapr-cluster/dapr-kustomization.yaml

查看结果,发现出现了一个错误,找不到名称为 dapr-poc 的 namespace

 4. 在 dapr 文件夹下增加 namespace.yaml

  1. apiVersion: v1
  2. kind: Namespace
  3. metadata:
  4. name: dapr-poc

5. 这次通过命令查看

 kubectl -n dapr-poc get pods,deployments,services

本次动手实验结束。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/483386
推荐阅读
相关标签
  

闽ICP备14008679号