部署ArgoCD

官网

https://github.com/argoproj/argo-cd/releases/tag/v2.5.2

我部署的事Non-HA版本

kubectl create namespace argocd
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/v2.5.2/manifests/install.yaml

下载Argocd CLI

[root@master ~]# wget https://github.com/argoproj/argo-cd/releases/download/v2.5.2/argocd-linux-amd64
[root@master ~]# cp argocd-linux-amd64 /usr/bin/argocd
[root@master ~]# chmod +x /usr/bin/argocd
[root@master ~]# argocd --help

查看创建的资源

[root@master ~]# kubectl get pods -n argocd
NAME                                                READY   STATUS    RESTARTS   AGE
argocd-application-controller-0                     1/1     Running   0          5m40s
argocd-applicationset-controller-85dd79b7f7-xhf4j   1/1     Running   0          5m38s
argocd-dex-server-75bc5d74cf-87bf8                  1/1     Running   0          5m38s
argocd-notifications-controller-c75bcc7d4-zfkqb     1/1     Running   0          5m38s
argocd-redis-79c755c747-xb9fb                       1/1     Running   0          5m38s
argocd-repo-server-799cd5cb99-cbsz4                 1/1     Running   0          5m32s
argocd-server-7c64469857-t2c82                      1/1     Running   0          5m37s
[root@master ~]# kubectl get svc -n argocd
NAME                                      TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)                      AGE
argocd-applicationset-controller          ClusterIP   10.103.232.45   <none>        7000/TCP,8080/TCP            6m9s
argocd-dex-server                         ClusterIP   10.97.66.179    <none>        5556/TCP,5557/TCP,5558/TCP   6m9s
argocd-metrics                            ClusterIP   10.102.85.142   <none>        8082/TCP                     6m8s
argocd-notifications-controller-metrics   ClusterIP   10.111.197.81   <none>        9001/TCP                     6m8s
argocd-redis                              ClusterIP   10.105.0.205    <none>        6379/TCP                     6m8s
argocd-repo-server                        ClusterIP   10.108.12.65    <none>        8081/TCP,8084/TCP            6m8s
argocd-server                             ClusterIP   10.111.81.151   <none>        80/TCP,443/TCP               6m8s
argocd-server-metrics                     ClusterIP   10.102.35.24    <none>        8083/TCP                     6m8s

我们用istio-ingressgateway将argocd的服务暴露出去

[root@master ~]# kubectl get svc -n istio-system
NAME                   TYPE           CLUSTER-IP       EXTERNAL-IP    PORT(S)                                      AGE
istio-ingressgateway   LoadBalancer   10.110.219.229   10.211.55.30   15021:30657/TCP,80:30216/TCP,443:30877/TCP   16d
istiod                 ClusterIP      10.105.252.240   <none>         15010/TCP,15012/TCP,443/TCP,15014/TCP        16d
[root@master argocd]# kubectl apply -f 02-argocd-dashboard-virtualservice.yaml 
gateway.networking.istio.io/argocd-dashboard-gateway created
virtualservice.networking.istio.io/argocd-dashboard-virtualservice created
[root@master argocd]# cat 02-argocd-dashboard-virtualservice.yaml 
apiVersion: networking.istio.io/v1beta1
kind: Gateway
metadata:
  name: argocd-dashboard-gateway
  namespace: istio-system
spec:
  selector:
    app: istio-ingressgateway
  servers:
    - hosts:
        - "argocd.yang.com"
      port:
        number: 80
        name: http
        protocol: HTTP
      tls:
        httpsRedirect: true
    - hosts:
        - "argocd.yang.com"
      port:
        number: 443
        name: https
        protocol: HTTPS
      tls:
        mode: PASSTHROUGH
---
apiVersion: networking.istio.io/v1beta1
kind: VirtualService
metadata:
  name: argocd-dashboard-virtualservice
  namespace: argocd
spec:
  hosts:
  - "argocd.yang.com"
  gateways:
  - istio-system/argocd-dashboard-gateway
  tls:
  - match:
    - port: 443
      sniHosts:
      - argocd.yang.com
    route:
    - destination:
        host: argocd-server
        port:
          number: 443

做好域名解析,用浏览器访问

查看密码,账号admin 密码ln5sHFJmkPcqwueV直接登陆

[root@master argocd]# kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d; echo
ln5sHFJmkPcqwueV

修改密码,修改好之后 在网页端试试

[root@master argocd]# argocd login argocd.yang.com
WARNING: server certificate had error: x509: certificate is valid for localhost, argocd-server, argocd-server.argocd, argocd-server.argocd.svc, argocd-server.argocd.svc.cluster.local, not argocd.yang.com. Proceed insecurely (y/n)? y
Username: admin
Password: 
'admin:login' logged in successfully
Context 'argocd.yang.com' updated
[root@master argocd]# argocd account update-password
*** Enter password of currently logged in user (admin): 
*** Enter new password for user admin: 
*** Confirm new password for user admin: 
Password updated
Context 'argocd.yang.com' updated

 新建一个app

进入到新建的app中

点击SYNC

查看SYNC过程

部署完成

也可以查看Events喝Logs

查看资源

[root@master argocd]# kubectl get applications -n argocd
NAME        SYNC STATUS   HEALTH STATUS
guestbook   Synced        Healthy
[root@master argocd]# argocd app list
NAME              CLUSTER                         NAMESPACE  PROJECT  STATUS  HEALTH   SYNCPOLICY  CONDITIONS  REPO                                               PATH       TARGET
argocd/guestbook  https://kubernetes.default.svc  guestbook  default  Synced  Healthy  <none>      <none>      https://gitee.com/mageedu/argocd-example-apps.git  guestbook  HEAD
[root@master argocd]# argocd app get guestbook
Name:               argocd/guestbook
Project:            default
Server:             https://kubernetes.default.svc
Namespace:          guestbook
URL:                https://argocd.yang.com/applications/guestbook
Repo:               https://gitee.com/mageedu/argocd-example-apps.git
Target:             HEAD
Path:               guestbook
SyncWindow:         Sync Allowed
Sync Policy:        <none>
Sync Status:        Synced to HEAD (015edec)
Health Status:      Healthy

GROUP  KIND        NAMESPACE  NAME          STATUS  HEALTH   HOOK  MESSAGE
       Service     guestbook  guestbook-ui  Synced  Healthy        service/guestbook-ui unchanged
apps   Deployment  guestbook  guestbook-ui  Synced  Healthy        deployment.apps/guestbook-ui unchanged

 开启SYNC POLICY

修改同步策略

查看guestbook资源

[root@master argocd]# argocd app manifests guestbook
---
apiVersion: v1
kind: Service
metadata:
  labels:
    app.kubernetes.io/instance: guestbook
  name: guestbook-ui
  namespace: guestbook
spec:
  ports:
  - port: 80
    targetPort: 80
  selector:
    app: guestbook-ui

---
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app.kubernetes.io/instance: guestbook
  name: guestbook-ui
  namespace: guestbook
spec:
  replicas: 1
  revisionHistoryLimit: 3
  selector:
    matchLabels:
      app: guestbook-ui
  template:
    metadata:
      labels:
        app: guestbook-ui
    spec:
      containers:
      - image: gcr.io/heptio-images/ks-guestbook-demo:0.2
        name: guestbook-ui
        ports:
        - containerPort: 80
[root@master argocd]# kubectl get application guestbook -o yaml -n argocd
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  creationTimestamp: "2022-11-11T10:18:57Z"
  generation: 37
  name: guestbook
  namespace: argocd
  resourceVersion: "1536140"
  uid: 9d37a35a-703d-4ce5-8df2-8c2ae88b3225
spec:
  destination:
    namespace: guestbook
    server: https://kubernetes.default.svc
  project: default
  source:
    directory:
      jsonnet:
        tlas:
        - name: ""
          value: ""
    path: guestbook
    repoURL: https://gitee.com/mageedu/argocd-example-apps.git
    targetRevision: HEAD
  syncPolicy:
    automated:
      prune: true
      selfHeal: true
    syncOptions:
    - CreateNamespace=true
status:
  health:
    status: Healthy
  history:
  - deployStartedAt: "2022-11-11T10:26:08Z"
    deployedAt: "2022-11-11T10:26:12Z"
    id: 0
    revision: 015edec9578d1eff5d2703ca0b7dc119bddf3a7d
    source:
      directory:
        jsonnet:
          tlas:
          - name: ""
            value: ""
      path: guestbook
      repoURL: https://gitee.com/mageedu/argocd-example-apps.git
      targetRevision: HEAD
  - deployStartedAt: "2022-11-11T11:02:16Z"
    deployedAt: "2022-11-11T11:02:16Z"
    id: 1
    revision: 015edec9578d1eff5d2703ca0b7dc119bddf3a7d
    source:
      directory:
        jsonnet:
          tlas:
          - name: ""
            value: ""
      path: guestbook
      repoURL: https://gitee.com/mageedu/argocd-example-apps.git
      targetRevision: HEAD
  operationState:
    finishedAt: "2022-11-11T11:02:16Z"
    message: successfully synced (all tasks run)
    operation:
      initiatedBy:
        username: admin
      retry: {}
      sync:
        revision: 015edec9578d1eff5d2703ca0b7dc119bddf3a7d
        syncOptions:
        - CreateNamespace=true
        syncStrategy:
          hook: {}
    phase: Succeeded
    startedAt: "2022-11-11T11:02:16Z"
    syncResult:
      resources:
      - group: ""
        hookPhase: Running
        kind: Service
        message: service/guestbook-ui unchanged
        name: guestbook-ui
        namespace: guestbook
        status: Synced
        syncPhase: Sync
        version: v1
      - group: apps
        hookPhase: Running
        kind: Deployment
        message: deployment.apps/guestbook-ui unchanged
        name: guestbook-ui
        namespace: guestbook
        status: Synced
        syncPhase: Sync
        version: v1
      revision: 015edec9578d1eff5d2703ca0b7dc119bddf3a7d
      source:
        directory:
          jsonnet:
            tlas:
            - name: ""
              value: ""
        path: guestbook
        repoURL: https://gitee.com/mageedu/argocd-example-apps.git
        targetRevision: HEAD
  reconciledAt: "2022-11-11T11:26:39Z"
  resources:
  - health:
      status: Healthy
    kind: Service
    name: guestbook-ui
    namespace: guestbook
    status: Synced
    version: v1
  - group: apps
    health:
      status: Healthy
    kind: Deployment
    name: guestbook-ui
    namespace: guestbook
    status: Synced
    version: v1
  sourceType: Directory
  summary:
    images:
    - gcr.io/heptio-images/ks-guestbook-demo:0.2
  sync:
    comparedTo:
      destination:
        namespace: guestbook
        server: https://kubernetes.default.svc
      source:
        directory:
          jsonnet:
            tlas:
            - name: ""
              value: ""
        path: guestbook
        repoURL: https://gitee.com/mageedu/argocd-example-apps.git
        targetRevision: HEAD
    revision: 015edec9578d1eff5d2703ca0b7dc119bddf3a7d
    status: Synced

删除资源

[root@master argocd]# argocd app delete guestbook
Are you sure you want to delete 'guestbook' and all its resources? [y/n] y
application 'guestbook' deleted
[root@master argocd]# argocd app list
NAME  CLUSTER  NAMESPACE  PROJECT  STATUS  HEALTH  SYNCPOLICY  CONDITIONS  REPO  PATH  TARGET

命令行创建guestbook

[root@master argocd]# argocd app create guestbook --repo https://gitee.com/mageedu/argocd-example-apps.git --path guestbook --dest-server https://kubernetes.default.svc --dest-namespace guestbook --sync-option createnamespace=true --sync-policy automatic
application 'guestbook' created

登陆web端可以看到已经创建完成了

posted @ 2022-11-11 19:48  Maniana  阅读(286)  评论(0编辑  收藏  举报