deploymeny.yaml文件详见:

 https://gitee.com/hbhe0316/test1234/blob/master/dev/deployment.yaml

service.yaml文件详见:

 https://gitee.com/hbhe0316/test1234/blob/master/dev/service.yaml

在K8S MASTER节点创建applicaiton.yaml文件

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: myapp-argo-application
  namespace: argocd
spec:
  project: default
  source:
    repoURL: https://gitee.com/hbhe0316/test1234.git
    targetRevision: HEAD
    path: dev
  destination: 
    server: https://kubernetes.default.svc
    namespace: myapp
  syncPolicy:
    syncOptions:
    - CreateNamespace=true
    automated:
      selfHeal: true
      prune: true
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.

参数解释:

syncPolicy : 指定自动同步策略和频率,不配置时需要手动触发同步。

syncOptions : 定义同步方式。

CreateNamespace=true : 如果不存在这个 namespace,就会自动创建它。

automated : 检测到实际状态与期望状态不一致时,采取的同步措施。

selfHeal : 当集群世纪状态不符合期望状态时,自动同步。

prune : 自动同步时,删除 Git 中不存在的资源。

Argo CD 默认情况下每 3 分钟会检测 Git 仓库一次,用于判断应用实际状态是否和 Git 中声明的期望状态一致,如果不一致,状态就转换为 OutOfSync。默认情况下并不会触发更新,除非通过 syncPolicy 配置了自动同步。

path:为gitea的dev目录下的两个文件。

执行命令:

[root@k8s-master 0810]# kubectl create -f application.yaml 
application.argoproj.io/myapp-argo-application created
[root@k8s-master 0810]# kubectl get po,svc -n myapp
NAME                         READY   STATUS    RESTARTS   AGE
pod/myapp-5d9f5b6754-524qn   1/1     Running   0          18s
pod/myapp-5d9f5b6754-gzs6p   1/1     Running   0          18s

NAME                    TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)   AGE
service/myapp-service   ClusterIP   10.101.195.4   <none>        88/TCP    18s
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
[root@k8s-master 0810]# kubectl edit svc myapp-service -n myapp
# Please edit the object below. Lines beginning with a '#' will be ignored,
# and an empty file will abort the edit. If an error occurs while saving this file will be
# reopened with the relevant failures.
#
apiVersion: v1
kind: Service
metadata:
  annotations:
    kubectl.kubernetes.io/last-applied-configuration: |
      {"apiVersion":"v1","kind":"Service","metadata":{"annotations":{},"labels":{"app.kubernetes.io/instance":"myapp-argo-application"},"name":"myapp-service","namespace":"myapp"},"spec":{"ports":[{"port":88,"protocol":"TCP","targetPort":80}],"selector":{"app":"myapp"}}}
  creationTimestamp: "2024-08-10T03:30:49Z"
  labels:
    app.kubernetes.io/instance: myapp-argo-application
  name: myapp-service
  namespace: myapp
  resourceVersion: "62799"
  uid: dcf79bd7-2c7a-4dc2-94b5-e0c9aa119d5d
spec:
  clusterIP: 10.101.195.4
  clusterIPs:
  - 10.101.195.4
  externalTrafficPolicy: Cluster
  internalTrafficPolicy: Cluster
  ipFamilies:
  - IPv4
  ipFamilyPolicy: SingleStack
  ports:
  - nodePort: 30225
    port: 8888
    protocol: TCP
    targetPort: 80
  selector:
    app: myapp
  sessionAffinity: None
  type: NodePort
status:
  loadBalancer: {}
  • 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.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
[root@k8s-master 0810]# kubectl get po,svc -n myapp -o wide
NAME                         READY   STATUS    RESTARTS   AGE   IP              NODE         NOMINATED NODE   READINESS GATES
pod/myapp-5d9f5b6754-524qn   1/1     Running   0          10m   10.244.58.231   k8s-node02   <none>           <none>
pod/myapp-5d9f5b6754-gzs6p   1/1     Running   0          10m   10.244.85.221   k8s-node01   <none>           <none>

NAME                    TYPE       CLUSTER-IP     EXTERNAL-IP   PORT(S)          AGE   SELECTOR
service/myapp-service   NodePort   10.101.195.4   <none>        8888:30225/TCP   10m   app=myapp
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.

访问Nginx

argocd创建demo_f5

argocd创建demo_f5_02