国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频

Tekton 與 Argo CD 結(jié)合實現(xiàn) GitOps

共 31809字,需瀏覽 64分鐘

 ·

2021-07-10 10:25

前面我們使用 Tekton 完成了應(yīng)用的 CI/CD 流程,但是 CD 是在 Tekton 的任務(wù)中去完成的,現(xiàn)在我們使用 GitOps 的方式來改造我們的流水線,將 CD 部分使用 Argo CD 來完成。

這里我們要先去回顧下前面的 Tekton 實戰(zhàn)部分的內(nèi)容,整個流水線包括 clone、test、build、docker、deploy、rollback 幾個部分的任務(wù),最后的 deploy 和 rollback 屬于 CD 部分,我們只需要這部分使用 Argo CD 來構(gòu)建即可。

首先我們將項目 http://git.k8s.local/course/devops-demo.git 倉庫中的 Helm Chart 模板單獨提取出來放到一個獨立的倉庫中 http://git.k8s.local/course/devops-demo-deploy,這樣方便和 Argo CD 進行對接,整個項目下面只有用于應(yīng)用部署的 Helm Chart 模板。

首先在 Argo CD 上面添加該倉庫:

然后創(chuàng)建新應(yīng)用,首先可以創(chuàng)建一個項目,在 Argo CD 中有一個 AppProject 的 CRD,表示應(yīng)用程序的邏輯分組,它由以下幾個關(guān)鍵屬性組成:

  • sourceRepos:項目中的應(yīng)用程序可以從中獲取清單的倉庫引用
  • destinations:項目中的應(yīng)用可以部署到的集群和命名空間
  • roles:項目內(nèi)資源訪問定義的角色
apiVersion: argoproj.io/v1alpha1
kind: AppProject
metadata:
  # 項目名
  name: demo
  namespace: argocd
spec:
  # 目標
  destinations:
    # 此項目的服務(wù)允許部署的 namespace,這里為全部
  - namespace: '*'
    # 此項目允許部署的集群,這里為默認集群,即為Argo CD部署的當前集群
    server: https://kubernetes.default.svc
  # 允許的數(shù)據(jù)源
  sourceRepos:
  - http://git.k8s.local/course/devops-demo-deploy.git

更多配置信息可以前往文檔 https://argo-cd.readthedocs.io/en/stable/operator-manual/declarative-setup/ 查看,項目創(chuàng)建完成后,在該項目下創(chuàng)建一個 Application,代表環(huán)境中部署的應(yīng)用程序?qū)嵗?/p>

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: devops-demo
  namespace: argocd
spec:
  destination:
    namespace: default
    server: 'https://kubernetes.default.svc'
  project: demo
  source:
    path: helm  # 從 Helm 存儲庫創(chuàng)建應(yīng)用程序時,chart 必須指定 path
    repoURL: 'http://git.k8s.local/course/devops-demo-deploy.git'
    targetRevision: HEAD
    helm:
      parameters:
        - name: replicaCount
          value: '2'
      valueFiles:
        - my-values.yaml

這里我們定義了一個名為 devops-demo 的應(yīng)用,應(yīng)用源來自于 helm 路徑,使用的是 my-values.yaml 文件,此外還可以通過 source.helm.parameters 來配置參數(shù),同步策略我們?nèi)匀贿x擇使用手動的方式,我們可以在 Tekton 的任務(wù)中去手動觸發(fā)同步。上面的資源對象創(chuàng)建完成后應(yīng)用就會處于 OutOfSync 狀態(tài),因為集群中還沒部署該應(yīng)用。

現(xiàn)在接下來我們?nèi)バ薷闹暗?Tekton 流水線,之前的 Pipeline 流水線如下所示:

# pipeline.yaml
apiVersion: tekton.dev/v1beta1
kind: Pipeline
metadata:
  name: pipeline
spec:
  workspaces: # 聲明 workspaces
    - name: go-repo-pvc
  params:
    # 定義代碼倉庫
    - name: git_url
    - name: revision
      type: string
      default: "master"
    # 定義鏡像參數(shù)
    - name: image
    - name: registry_url
      type: string
      default: "harbor.k8s.local"
    - name: registry_mirror
      type: string
      default: "https://ot2k4d59.mirror.aliyuncs.com/"
    # 定義 helm charts 參數(shù)
    - name: charts_dir
    - name: release_name
    - name: release_namespace
      default: "default"
    - name: overwrite_values
      default: ""
    - name: values_file
      default: "values.yaml"
  tasks: # 添加task到流水線中
    - name: clone
      taskRef:
        name: git-clone
      workspaces:
        - name: output
          workspace: go-repo-pvc
      params:
        - name: url
          value: $(params.git_url)
        - name: revision
          value: $(params.revision)
    - name: test
      taskRef:
        name: test
    - name: build # 編譯二進制程序
      taskRef:
        name: build
      runAfter: # 測試任務(wù)執(zhí)行之后才執(zhí)行 build task
        - test
        - clone
      workspaces: # 傳遞 workspaces
        - name: go-repo
          workspace: go-repo-pvc
    - name: docker # 構(gòu)建并推送 Docker 鏡像
      taskRef:
        name: docker
      runAfter:
        - build
      workspaces: # 傳遞 workspaces
        - name: go-repo
          workspace: go-repo-pvc
      params: # 傳遞參數(shù)
        - name: image
          value: $(params.image)
        - name: registry_url
          value: $(params.registry_url)
        - name: registry_mirror
          value: $(params.registry_mirror)
    - name: deploy # 部署應(yīng)用
      taskRef:
        name: deploy
      runAfter:
        - docker
      workspaces:
        - name: source
          workspace: go-repo-pvc
      params:
        - name: charts_dir
          value: $(params.charts_dir)
        - name: release_name
          value: $(params.release_name)
        - name: release_namespace
          value: $(params.release_namespace)
        - name: overwrite_values
          value: $(params.overwrite_values)
        - name: values_file
          value: $(params.values_file)
    - name: rollback # 回滾
      taskRef:
        name: rollback
      when:
        - input: "$(tasks.deploy.results.helm-status)"
          operator: in
          values: ["failed"]
      params:
        - name: release_name
          value: $(params.release_name)
        - name: release_namespace
          value: $(params.release_namespace)

現(xiàn)在我們需要去掉最后的 deploy 和 rollback 兩個任務(wù),當 Docker 鏡像構(gòu)建推送完成后,我們只需要去修改部署代碼倉庫中的 values 文件,然后再去手動觸發(fā) Argo CD 同步狀態(tài)即可(如果開啟了自動同步這一步都可以省略了),而回滾操作直接在 Argo CD 中去操作即可,不需要定義一個單獨的 Task 任務(wù)。

定義一個如下所示的 Taks 任務(wù):

apiVersion: tekton.dev/v1alpha1
kind: Task
metadata:
  name: sync
spec:
  volumes:
  - name: argocd-secret
    secret:
      secretName: $(inputs.params.argocd_secret)
  params:
    - name: argocd_url
      description: "The URL of the ArgoCD server"
    - name: argocd_secret
      description: "The secret containing the username and password for the tekton task to connect to argo"
    - name: commit_id
      description: "The commit ID to update"
    - name: app_name
      description: "The name of the argo app to update"
    - name: app_revision
      default: "HEAD"
      description: "The revision of the argo app to update"
  steps:
  - name: deploy
    image: argoproj/argocd
    volumeMounts:
    - name: argocd-secret
      mountPath: /var/secret
    command:
    - sh
    args:
    - -ce
    - |
      set -e
      echo "update commit id"
      argocd login --insecure $(params.argocd_url) --username $(/bin/cat /var/secret/username) --password $(/bin/cat /var/secret/password)
      argocd app sync $(params.app_name) --revision $(params.app_revision)
      argocd app wait $(params.app_name) --health

由于我們這里只需要修改 Helm Chart 的 Values 文件中的 image.tag 參數(shù),最好的方式當然還是在一個 Task 中去修改 values.yaml 文件并 commit 到 Repo 倉庫中去,當然也可以為了簡單直接在 Argo CD 的應(yīng)用側(cè)配置參數(shù)即可,比如可以使用 argocd app set 命令來為應(yīng)用配置參數(shù),然后下面再用 argocd app sync 命令手動觸發(fā)同步操作,這里其實就可以有很多操作了,比如我們可以根據(jù)某些條件來判斷是否需要部署,滿足條件后再執(zhí)行 sync 操作,最后使用 wait 命令等待應(yīng)用部署完成。

除了通過手動 argocd app set 的方式來配置參數(shù)之外,可能更好的方式還是直接去修改 Repo 倉庫中的 values 值,這樣在源代碼倉庫中有一個版本記錄,我們可以新建如下所示的一個任務(wù)用來修改 values 值:

apiVersion: tekton.dev/v1beta1
kind: Task
metadata:
  name: change-manifests
spec:
  params:
    - name: git_url
      description: Git repository containing manifest files to update
    - name: git_email
      default: [email protected]
    - name: git_name
      default: Tekton Pipeline
    - name: git_manifest_dir
      description: Manifests files dir
    - name: tool_image
      default: cnych/helm-kubectl-curl-git-jq-yq
    - name: image_tag
      description: Deploy docker image tag
  steps:
    - name: git-push
      image: $(params.tool_image)
      env:
        - name: GIT_USERNAME
          valueFrom:
            secretKeyRef:
              name: gitlab-auth
              key: username
              optional: true
        - name: GIT_PASSWORD
          valueFrom:
            secretKeyRef:
              name: gitlab-auth
              key: password
              optional: true
      command: ["/bin/bash"]
      args:
        - -c
        - |
          set -eu
          echo Load environment variables from previous steps
          source /workspace/env-config
          git config --global user.email "$(params.git_email)"
          git config --global user.name "$(params.git_name)"
          git clone --branch master --depth 1 http://${GIT_USERNAME}:${GIT_PASSWORD}@$(params.git_url) repo
          cd "repo/$(params.git_manifest_dir)"
          ls -l
          echo old value:
          cat my-values.yaml | yq r - 'image.tag'
          echo replacing with new value:
          echo $(params.image_tag)
          yq w --inplace my-values.yaml 'image.tag' "$(params.image_tag)"
          echo verifying new value
          yq r my-values.yaml 'image.tag'
          if ! git diff-index --quiet HEAD --; then
            git status
            git add .
            git commit -m "helm values updated by tekton pipeline in change-manifests task"
            git push
          else
              echo "no changes, git repository is up to date"
          fi

現(xiàn)在我們的流水線就變成了如下所示的清單:

# pipeline.yaml
apiVersion: tekton.dev/v1beta1
kind: Pipeline
metadata:
  name: pipeline
spec:
  workspaces: # 聲明 workspaces
    - name: go-repo-pvc
  params:
    # 定義代碼倉庫
    - name: git_url
    - name: git_infra_url
    - name: revision
      type: string
      default: "master"
    # 定義鏡像參數(shù)
    - name: image
    - name: image_tag
    - name: registry_url
      type: string
      default: "harbor.k8s.local"
    - name: registry_mirror
      type: string
      default: "https://ot2k4d59.mirror.aliyuncs.com/"
    - name: git_manifest_dir
      default: "helm"
    # 定義 argocd 參數(shù)
    - name: argocd_url
    - name: argocd_secret
    - name: app_name
    - name: app_revision
      type: string
      default: "HEAD"
  tasks: # 添加task到流水線中
    - name: clone
      taskRef:
        name: git-clone
      workspaces:
        - name: output
          workspace: go-repo-pvc
      params:
        - name: url
          value: $(params.git_url)
        - name: revision
          value: $(params.revision)
    - name: test
      taskRef:
        name: test
    - name: build # 編譯二進制程序
      taskRef:
        name: build
      runAfter: # 測試任務(wù)執(zhí)行之后才執(zhí)行 build task
        - test
        - clone
      workspaces: # 傳遞 workspaces
        - name: go-repo
          workspace: go-repo-pvc
    - name: docker # 構(gòu)建并推送 Docker 鏡像
      taskRef:
        name: docker
      runAfter:
        - build
      workspaces: # 傳遞 workspaces
        - name: go-repo
          workspace: go-repo-pvc
      params: # 傳遞參數(shù)
        - name: image
          value: $(params.image):$(params.image_tag)
        - name: registry_url
          value: $(params.registry_url)
        - name: registry_mirror
          value: $(params.registry_mirror)
    - name: manifests
      taskRef:
        name: change-manifests
      runAfter:
        - docker
      params:
      - name: git_url
        value: $(params.git_infra_url)
      - name: git_manifest_dir
        value: $(params.git_manifest_dir)
      - name: image_tag
        value: $(params.image_tag)
    - name: sync
      taskRef:
        name: sync
      runAfter:
        - manifests
      params:
      - name: argocd_url
        value: $(params.argocd_url)
      - name: argocd_secret
        value: $(params.argocd_secret)
      - name: app_name
        value: $(params.app_name)
      - name: app_revision
        value: $(params.app_revision)

最后創(chuàng)建用于 Argo CD 登錄使用的 Secret 對象:

apiVersion: v1
kind: Secret
metadata:
  name: argocd-auth
type: Opaque
stringData:
  username: admin
  password: admin321

最后修改 Tekton Triggers 中的 Template,如下所示:

# gitlab-template.yaml
apiVersion: triggers.tekton.dev/v1alpha1
kind: TriggerTemplate
metadata:
  name: gitlab-template
spec:
  params: # 定義參數(shù),和 TriggerBinding 中的保持一致
    - name: gitrevision
    - name: gitrepositoryurl
  resourcetemplates: # 定義資源模板
    - apiVersion: tekton.dev/v1beta1
      kind: PipelineRun # 定義 pipeline 模板
      metadata:
        generateName: gitlab-run- # TaskRun 名稱前綴
      spec:
        serviceAccountName: tekton-build-sa
        pipelineRef:
          name: pipeline
        workspaces:
          - name: go-repo-pvc
            persistentVolumeClaim:
              claimName: go-repo-pvc
        params:
          - name: git_url
            value: $(tt.params.gitrepositoryurl)
          - name: git_infra_url
            value: git.k8s.local/course/devops-demo-deploy.git
          - name: image
            value: "harbor.k8s.local/course/devops-demo"
          - name: image_tag
            value: "$(tt.params.gitrevision)"
          - name: argocd_url
            value: argocd.k8s.local
          - name: argocd_secret
            value: argocd-auth
          - name: app_name
            value: devops-demo

現(xiàn)在我們的整個流水線就更加精簡了?,F(xiàn)在我們?nèi)?yīng)用倉庫中修改下源代碼并提交就可以觸發(fā)我們的流水線了。

可以看到當我們提交代碼后,整個流水線構(gòu)建會一直卡在最后的 sync 任務(wù),這是因為我們執(zhí)行了 argocd app wait $(params.app_name) --health 這個命令,需要等待應(yīng)用健康后才會退出。

$ curl devops-demo.k8s.local
{"msg":"Hello Tekton + ArgoCD On GitLab"}

但實際上上面我們的應(yīng)用已經(jīng)部署成功了,只是 Argo CD 的健康檢查沒有通過,Argo CD 為幾種標準的 Kubernetes 資源提供了內(nèi)置的健康策略,然后將這些策略作為一個整體呈現(xiàn)在應(yīng)用的健康狀態(tài)中,比如會檢查副本數(shù)是否正常,PVC 是否綁定等,而對于 Ingress 資源會檢查 status.loadBalancer.ingress 列表是否非空,需要至少有一個 hostname 或 IP 值,而我們這里部署的 Ingress 中的值為空:

$ kubectl get ingress devops-demo -o yaml
apiVersion: extensions/v1beta1
kind: Ingress
......
spec:
  rules:
  - host: devops-demo.k8s.local
    http:
      paths:
      - backend:
          serviceName: devops-demo
          servicePort: http
        path: /
        pathType: ImplementationSpecific
status:
  loadBalancer: {}

所以健康檢查一直不通過,在 Argo CD 頁面上也可以證實是 Ingress 導致健康檢查沒通過:

這個時候需要我們?nèi)プ远x Ingress 資源的監(jiān)控檢查方式,Argo CD 支持用 Lua 來編寫檢查規(guī)則,修改 Argo CD 的 Configmap 配置文件:

$ kubectl edit cm -n argocd argocd-cm
# 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
data:
  resource.customizations: |  # 定制 Ingress 資源的健康檢查方式
    extensions/Ingress:
        health.lua: |
          hs = {}
          hs.status = "Healthy"
          return hs
......

修改完成后,我們的應(yīng)用就會變成健康狀態(tài)了。

如果需要回滾,則可以直接在 Argo CD 頁面上點擊 HISTORY AND ROLLBACK 安裝查看部署的歷史記錄選擇回滾的版本即可:

可以查看整個 Tekton 流水線的狀態(tài):

$ tkn pr describe gitlab-run-vdlm6
Name:              gitlab-run-vdlm6
Namespace:         default
Pipeline Ref:      pipeline
Service Account:   tekton-build-sa
Timeout:           1h0m0s
Labels:
 tekton.dev/pipeline=pipeline
 triggers.tekton.dev/eventlistener=gitlab-listener
 triggers.tekton.dev/trigger=gitlab-push-events-trigger
 triggers.tekton.dev/triggers-eventid=eeda9157-5eb3-4399-be4b-88955cb56764

???  Status

STARTED         DURATION    STATUS
4 minutes ago   2 minutes   Succeeded

?? Resources

 No resources

? Params

 NAME              VALUE
 ? git_url         http://git.k8s.local/course/devops-demo.git
 ? git_infra_url   git.k8s.local/course/devops-demo-deploy.git
 ? image           harbor.k8s.local/course/devops-demo
 ? image_tag       332798d9e28422341fd64704ab9b54b944d77084
 ? argocd_url      argocd.k8s.local
 ? argocd_secret   argocd-auth
 ? app_name        devops-demo

?? Results

 No results

?? Workspaces

 NAME            SUB PATH   WORKSPACE BINDING
 ? go-repo-pvc   ---        PersistentVolumeClaim (claimName=go-repo-pvc)

??  Taskruns

 NAME                                 TASK NAME   STARTED         DURATION     STATUS
 ? gitlab-run-vdlm6-sync-svmxl        sync        3 minutes ago   42 seconds   Succeeded
 ? gitlab-run-vdlm6-manifests-d297d   manifests   3 minutes ago   26 seconds   Succeeded
 ? gitlab-run-vdlm6-docker-g2tqx      docker      4 minutes ago   48 seconds   Succeeded
 ? gitlab-run-vdlm6-build-mkcrd       build       4 minutes ago   9 seconds    Succeeded
 ? gitlab-run-vdlm6-test-gjr4c        test        4 minutes ago   4 seconds    Succeeded
 ? gitlab-run-vdlm6-clone-57vpw       clone       4 minutes ago   8 seconds    Succeeded

最后用一張圖來總結(jié)下我們使用 Tekton 結(jié)合 Argo CD 來實現(xiàn) GitOps 的工作流:




K8S 進階訓練營


 點擊屏末  | 即刻學習


掃描二維碼獲取

更多云原生知識





k8s 技術(shù)圈





瀏覽 80
點贊
評論
收藏
分享

手機掃一掃分享

分享
舉報
評論
圖片
表情
推薦
點贊
評論
收藏
分享

手機掃一掃分享

分享
舉報

感谢您访问我们的网站,您可能还对以下资源感兴趣:

国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频 欧美一区二区三区四| 在线观看老湿视频福利| 91嫖妓站街埯店老熟女| 中文av网站| AV在线不卡中文| 久久久久久网| 国产h在线观看| 国产免费看片| 国产操逼大全| 亚洲天堂影音先锋| 十八无码成人免费网站| 在线不卡无码| 欧美99在线| 亚洲一区二区三区在线++中国| 露脸丨91丨九色露脸| 亚洲中文字幕免费| 国产性爱在线视频| 东北老女人操逼视频| 青青草成人在线观看| 青青草网站在线观看| 日韩无码第四页| 欧美自拍视频| 日韩国产欧美精品一区| 搡BBBB搡BBBB搡BBB| 欧美成人大香蕉| 高清无码在线不卡| 波多野结衣无码高清视频| 中文字幕乱码中文乱码91| 另类TS人妖一区二区三区| 日韩无码中文字| 国产精品AV网站| 国产香蕉视屏| 国产天天操| 国产va| 丁香av| 伊人久久爱| 亚洲AV无码国产综合专区| 中文字幕在线一区二区a| 中文字幕精品一级A片| 国产免费AV片在线无码| 国产成人tv| 人妻精品电影| 日韩美毛片| 天天操夜夜操| 日韩A片一级无码免费蜜桃| 91在线无码| 成人欧美| 无码福利电影| 91久久视频| av在线资源网| 免费av在线播放| 精品无码人妻一区二区| 啊v在线| 翔田千里| 一本无码中文字幕| 蜜臀久久久99久久久久久久| 伊大香蕉| 99久久婷婷国产综合精品| 日韩人成| 91无码人妻东京热精品一区| 亚洲无码黄色片| 日韩中字无码| 97精产国品久久蜜桃臀| 99久久精彩视频| 亚洲情在线| 999久久久久| 最美孕交vivoestv另类| 插插插插网| 妓女不卡| 中文字幕人妻精品一区| 大屌一区二区三区| 手机看片福利一区二区| 中文字幕日韩无码电影| 瘦精品无码一区二区三区四区五区六区七区八区 | 牛牛在线精品视频| 日韩一级性爱视频| 日本午夜无码| 欧美在线视频网| japanese在线观看| 想要xx视频| 婷婷五月天啪啪| 午夜乱伦福利| 亚洲色图网站| 亚洲在线成人视频| 久久久久久久久久久国产| 免费日韩无码| 99热这里只有精品7| 国产jizz| www.豆花视频成人版| 亚洲天堂高清| 亚州高清无码视频| 在线免费观看无码| 伊人影院在线视频| 蜜桃av色偷偷av老熟女| 中文精品字幕人妻熟女| 成人三级在线观看| 亚洲中文字幕网| 欧美性爱一区二区| 第一页在线| 亚洲成人黄色电影| 青青在线视频| 免费看日韩毛片| 欧美色大香蕉| 国产在线观看97| 亚洲一本色道中文无码| 中文字幕成人在线播放| 国产无码做爱视频| 欧美日韩在线观看中文字幕| 日韩成人免费在线观看| 成人爽爽视频| 91丨熟女丨对白| 亚洲1区2区| 国产学生妹在线播放| 香蕉操逼视频| 在线无码AV| 亚洲插逼| 色aV牛牛在线观看| 亚洲AV无码一区毛片AV| 成人亚洲精品一区二区三区| 亚洲videos| 国语偷拍| 色色操| 大香蕉AV在线观看| 国产精品1区2区| 极品人妻疯狂3p超刺激| 黄片大全在线观看| 日韩一页| 超碰天天干天天摸| 91精品国产一区| 少妇人妻一级A毛片| 欧美成人手机在线观看| 麻豆精品传媒2021md| 免费无码婬片AAAA片老婦| Japanese在线观看| 青春草在线视频观看| 91精品视频在线播放| 国产精品9| 亚洲中字幕新| 人人人操人人| 超碰永久| 中文字幕北条麻妃在线| 国产黄色片视频| 中文字幕一区二区三区免费2023| 中文字幕av无码| 午夜AV在线| 国产AV自拍-久| 日韩一级性爱| 综合黄色| 夜夜嗨Av禁果Av粉嫩AV懂色Av | 亚洲五月婷| 伊人99| 欧美日韩国产尤物主播精品| 开心五月婷| 91免费观看网站| 欧美日逼片| 特级艺体西西444WWw| 午夜无码av| 亚洲激情网站| 天天色免费视频| 欧美日韩高清一区| 国产一级性爱| 欧美黄色性爱| 国产一区二区三区在线视频| 无码人妻丰满熟妇| 欧美,日韩,日| 岛国av无码免费| 精品国内视频| 免费观看黄色视频网站| 精品国产区| 国产第四页| 国产日本欧美韩国久久久久| 俺也去射| 亚洲第一色| 九色PORN视频成人蝌蚪自拍| 韩国高清无码视频| 91探花秘在线播放| 在线观看成人三级片| 亚洲一区高清| 久久九热| 成人无码网站| 天天操天天操| 欧美性爱a视频| 欧美日韩一区在线观看| 麻豆自拍偷拍| 日韩毛| 亚洲精品一区二区三区蜜桃| 一卡二卡在线视频| 五月婷婷色播| 日逼免费视频| 国产无码一区| 女人的天堂网| 九色蝌蚪视频| 亚洲综合在线网| 成人免费毛片AAAAAA片| 国产欧美一区二区三区国产幕精品 | 全国最大成人网站| 最新国产第一页| 在线视频播放| 久久久久久久久久成人永久免费视频| 国产成人无码区免费AV片在线| 波多野结衣黄色视频| 麻豆一区视频| 水蜜桃成人网| 另类老妇奶BBBBwBB| 亚洲成人A片| 国产精品久久久久久久免牛肉蒲| 欧美日韩综合网| 精品国产欧美| 青青草无码成人天堂免费| 潮喷av| 久草超碰| 尤物av在线| 日韩AV中文字幕在线播放| 精品视频无码| 欧美A片在线观看| 成人精品A片免费网站| 日逼视| 成人亚洲在线| 国产va| 69av视频在线观看| 777大香蕉| 7777影视电视剧在线观看官网 | 囯产精品99久久久久久WWW| 翔田千里AV在线| AV日逼网| 日韩免费片| 亚洲区成人777777精品| 3D动漫精品啪啪一区二区免费| 欧美东京热视频| 日韩精品在线视频观看| 欧美大香蕉在线视频| 一级片在线播放| 97精品人妻一区二区三区香蕉农| 真人无码| 爱爱91| 无码小黄片| 亚洲黄色电影在线| 亚洲高清AV| 亚洲成人少妇老妇a视频在线 | 天堂中文在线观看| 日韩中文字幕区| 男人的天堂手机在线| 亚洲精品内射| 日韩网站在线| 91丨九色丨国产在线| 暗呦网一区二区三区| 91丨牛牛丨国产人妻| 成人免费网站在线观看| 人人搞人人摸| 老司机永久免费91| 97人人爽人人爽人人爽人人爽 | 欧美黄色一级| 伊人激情五月| 无卡无码| 骚小姨子无码| 蜜臀久久精品久久久久| 91成人电影在线| 一级A片免费黄色视频| 中文无码AV在线| 日韩无码免费看| 99久久精品国产毛片| 欧美成人网址在线观看| 六月丁香视频| 雾水情缘电影港片| 国产69精品久久| 猛男大粗猛爽H男人味| 就去se超碰| 免费一级网站| 淫五月| 国产V精品| 日韩一级毛| 青青青视频在线| 少妇搡BBBB搡BBB搡打电话| 国产操逼图| 青青草精品| 黄网91| 视频二区| 影音先锋一区二区| 人人爱人人操人人干| 日本精品无码a62v在线| 黄色视频在线免费观看高清视频| 中文字幕在线观看有码| www.偷拍| 手机看片1024久久| av在线观看中文字幕| 丁香婷婷男人天堂| 黄色电影网页| 成人无码毛片| 国产字幕在线观看| 波多野结衣高清无码视频| 就去se超碰| 国产AV无码精品| jiujiuav| 99都是精品| 欧美VA| 日韩精品在线免费视频| 免费欧美黄色| 亚洲网站在线| 亚洲日韩精品成人无码专区AV| 久久成人小电影| 中字一区人妻水多多| 99reav| 国产又黄又爽| 欧美亚洲国产一区二区三区| 日韩有码第一页| 日韩无码破解| 无码秘人妻一区二区三-百度 | 国产性爱自拍一下| 东京热黄色电影| 99热网站| 亚洲毛片亚洲毛片亚洲毛片| 高清无码在线免费| 西西444WWW无码大胆在线观看 | AA片网站| 国产黄色视频免费观看| 中文字幕亚洲中文字幕| 色99视频| 中文无码人妻少妇| 女生操逼网站| 久久黄色视频| 91麻豆精品无码| 无码视频网站| 欧美性猛交XXXXⅩXX| 青娱乐成人| 91亚洲日韩| 欧美久久网| 青青草社区视频| 国产乱妇乱子伦视频免费观看让女人 | 色欲91| 日韩一区二区三区在线观看| 蜜桃视频日韩| 特级黄色片| 国产精品被狂躁到高潮| 午夜黄色电影| 扒开让我91看片在线看| 特级西西WWW444人体聚色| 免费AV网站在线| 2018天天干天天操| 狠狠色噜噜狠狠狠7777米奇网| 爱操逼网| 国产伦子伦一级A片免费看老牛| 亚洲无码人妻| 嫩BBB槡BBBB槡BBB小号| 欧美啪啪啪| 久久久女女女女999久久| 欧美色址| 自拍第一页| 欧美18禁网站| 久久久女女女女999久久| 国产精品99久久久久久成人| 久久亚洲Aⅴ成人无码国产丝袜| 久草视频首页| 国产性爱图| 超碰人人爽| 中文字幕永久在线视频v1.0| 天天色天天爱| 欧洲黄网| 免费三级网站| 99精品9| 性久久久久久| 亚洲天堂无码av| 日本乱伦视频| 尤物视频在线观看视频| 91人妻人人澡人人爽| 国产精品每日更新| 国产久久久| 亚洲综合中文字幕在线| 国产嫩草久久久一二三久久免费观看| 日韩视频――中文字幕| 免费看欧美成人A片| 老婆中文字幕乱码中文乱码| 先锋影音男人| 日本不卡视频在线| 成人动漫一区| 老司机免费视频| 性免费网站| 538在线视频| 青青草原成人在线视频| 中文字幕AV在线| 久9视频| 天天操人人妻| 黄色一级在线观看| 夜夜天天人人| 操b在线观看| 91美女在线视频| 久热精品视频| 亚洲一级毛| 无套免费视频欧美| 国产又爽又黄在线看视频| 亚洲色成人中文字幕在线| 欧美日韩成人在线视频| 黑人毛片91久久久久久| 中文字幕三区| av在线中文| 天天精品无码| 激情久久久| 国产探花一区二区三区| 亚洲无码高清在线观看| 亚洲精品秘一区二区三区在线观看 | 亚洲午夜视频| 99人妻在线| 男人操女人网站| 无码人妻一区二区三区免费n狂飙 性猛交AAAA片免费看蜜桃视频 | 黑人AV在线播放| 欧美日韩在线一区| 成人自拍视频在线| 日本无码在线| 日欧无码| 成人无码日本动漫电影| 黄色一级免费| 88在线无码精品秘入口九色| 999reav| 麻豆av在线观看| 日韩精品一| jizzjizz国产| 亚洲AV成人无码AV小说| 安徽妇搡BBBB搡BBBB,另类老妇| 天天操天天插| 狠狠操婷婷| 久久肏| 欧美成人精品在线| 大香蕉在线播| 欧美一级日韩一级| 亚洲中文字幕免费在线观看| 日韩无码91| 操逼网站免费看| 777大香蕉| 韩国三级AV| 国产黄色在线免费观看| 靠逼网站免费观看| 自慰喷水流白浆中文字幕| 高清无码做爱视频| 激情视频在线播放| 欧美日韩高清| 成人av中文字幕| 免费的黄色视频网站| 操碰在线| 九九精品视频在线观看| 亚洲免费av在线| 国产女人在线| 欧一美一色一伦一A片| 国产看色免费| 狠狠躁日日躁夜夜躁A片无码视频| 性无码一区二区三区在线观看| 日韩极品视频在线| 麻豆av在线| 西西444WWW无码大胆知乎| 欧美性爱无码在线| 大肉大捧一进一出两腿| 一级黄色小视频| 起碰在线视频| 欧美激情五月| 精品色| 野花Av| 亚洲成人网站在线观看| AV片在线免费观看| AV黑人| 国产日本欧美韩国久久久久| 国产精品一区在线| 日韩无码视频观看| 国产AV日韩AⅤ亚洲AV中文| 99这里只有精品视频| 青青草无码在线| 成人尤物网站| 中文字幕+乱码+中文乱码91| 五月婷婷六月色| 亚洲综合一区二区三区| 久久91| 91精品国产综合久久蜜臀使用方法 | 久久性爱视频| 男人色天堂网| 二区精品| 久久午夜无码鲁丝午夜精品| 玖玖成人| 一道本一区二区三区| 少妇厨房愉情理伦BD在线观| 日韩精品一区二区三区免费观看高清| 亚洲天堂成人网| 黄页av| 人人澡人人妻人人爽| 中文字幕在线观看视频www| 国产秘精品一区二区三区免费| 成人国产无码| 麻豆传媒视频观看| 91av免费观看| 小视频你懂的| 中文一区在线观看| 欧美日韩有码视频网址大全| 午夜精品18视频国产17c| 日韩一区二区不卡| 免费看片av| 亚洲无码影视| 成人久久视频| 偷拍-91爱爱| 91大屁股| 中文字幕你懂的在线三级| 黑人操白人| 国产卡一卡二| 欧美AAAAAAAA| 丁香五月激情中文字幕| 天天色天天干天天日| AV无码免费一区二区三区不卡| 婷婷五月色播| 操骚B| 国产传媒在线观看| 偷拍欧美日韩| 天天狠狠操| 韩日午夜| 九色视频在线观看| 亚洲青草| 天堂资源中文在线| 亚洲欧美在线视频观看| 俺来了俺去也| 午夜A片| 国产又色又爽又黄又免费| 欧美日韩国产性爱| 台湾无码精品| 奶大丰满一乱一视频一区二区三区在| 国产精品福利视频| 91久久久久国产一区二区| 亚洲一级黄色大片| 少妇三级| 褒姒AV无玛| jiujiuav| 一级黄片免费观看| 99久re热视频精品98| 91精品少妇| 久久久久久久香蕉视频| 亚洲无码免费观看视频| 69精品无码成人久久久久久| 国产欧美日韩在线视频| 中文字幕第27页| 亚洲国产剧情| 波多野结衣性爱视频| 国产精品成人无码| 成人精品一区二区三区中文字幕| 国产无码高清在线| 亚洲成人在线一区| 美少妇AV| 中文字幕乱妇无码Av在线| 超碰三级| 开心老牛熟| 成人在线第一页| 国产福利合集| 看一级黄色毛片| 久久久精品电影| 国产妞干网| 玖玖资源网站| 中文字幕AV第一页| 欧美AAA| 五月天激情网址| 国产又爽又黄免费视频网站| 亚洲玖玖爱| 伊人影院在线视频| 色视频在线观看免费| 中国丰满妇BBwBBwHD| 亚洲日韩成人AV| 成人国产欧美日韩在线视频| 亚洲性爱电影| 操逼大香蕉| 日本二区三区| 欧美激情影院| 日韩久久高清| 国产精品女人777777| 无码日韩成人| 中文字幕乱伦日本| 国产大鸡吧| 91AV在线看| 综合国产| 国产免费一级片| 亚州无码免费| 亚洲AV成人片色在线观看高潮 | 大香蕉久久久久久久| 日韩无码久| 日韩中文字幕在线| 一区二区三区视频在线观看| 免费一级做a爱片毛片A片小说| 九九精品视频在线播放| 欧美高潮视频| 中文字幕日本成人| 日韩一区二区视频在线观看| 亚洲成人福利电影| 翔田千里被躁120分钟| 男女日逼| 91精品久久人妻一区二区夜夜夜| 成人免费黄色| 无码人妻中文字幕| 日韩操逼逼| 学生妹毛片视频| 国产性色AV| 激情五月天综合网| 午夜一级| 蜜乳AV一区二区三区| 仙踪林777777野大粗| 在线免费观看黄色视频| 天堂中文在线资源| 亚洲国产高清无码| 亚洲无aV在线中文字幕| 91人人在线| 亚洲黄色一区| 久久99国产精品| 草逼视频免费看| 四季AV之日韩人妻无码| 第一色网站| 一级片操逼| 色哟哟一区二区三区四区| 国产在线久久久| 国产一级婬片A片免费妖精视频 | 日韩黄色视频| 国精产品一区二区三区| 久久精品免费观看| 五月丁香激情视频| 日韩高清毛片| 九一九色国产| 国产三级午夜理伦三级| 激情五月天在线观看| 国产区欧美去区在线| 亚洲无码视频看看| 91最新地址| 永久m3u8在线观看| 国产日韩二区| 国产精品一区二区在线播放| 国产熟女AV| 免费看黄色录像| 国产欧美一| 黑人av在线观看| 国产一区二区三区成人| 亚洲精品国产精品乱码视99| 欧美国产日韩另类| 日韩性爱视频| 精品无码国产一区二区三区51安| 欧美精产国品一二三区| 热99精品| 玉米地一级婬片A片| 无码h| 99综合网| 无码人妻一区二区一牛影视| 老司机免费视频| 色哟哟av| 午夜黄色电影| 日韩人妻无码一区二区三区99 | 蜜臀激情| 亚洲综合免费观看高清完整| 少妇无码中文| 蜜桃av秘一区二区三区| 日本三级片免费观看| 欧美综合亚洲图片综合区| 专业操美女视频网站| 人人妻人人澡人人爽久久con| 超级碰碰碰碰碰碰碰碰碰| 国产福利视频| 日本高清一区二区高清免费视频| 杨晨晨不雅视频| 日本成人性爱视频网站一区| 欧美韩日高清精彩视频| 国产中文字幕亚洲综合欧美| 内射午夜福利在线免费观看视频 | 在线播放JUY-925被丈夫上司侵犯的第7天 | 九九久久精品视频| 神马午夜三级| 91在线免费播放| 欧美日韩一区在线观看| 日韩精品成人av| 老太婆擦BBBB撩BBBB| a片一级片| 亚洲无码蜜桃| 日日骚av一区二区三区| 精品国产久| 国产精品揄拍500视频| 成人小说一区二区三区| 亚洲高清无码在线免费观看| 3p绿帽黑人看自己老婆| 亚洲第一免费视频| 九色国产| 黄片免费观看视频| 制服丝袜人妻| 国产三级片视频| 少妇做爱视频| 中文字幕片av| 手机看片福利一区二区| 亚洲A网站| 97人妻人人操| 特级西西444www| henhengan| 在线观看无码高清视频| 一插菊花网| 97精品欧美91久久久久久久| 成人AV三级片| 熟女视频91| 97视频在线观看免费| 在线观看你懂得| 久久亚洲成人| 欧美成人精品欧美一级乱黄| 日韩欧美视频| 六月婷婷深爱| 五月天激情综合| 精品国产免费无码久久噜噜噜AV| 欧美色图自拍| 国产乱╳╳AⅤ毛片| 亚洲天堂无码AV| 看黄片com| 麻豆视频一区| 久久久无码精品亚洲| 亚洲国产高清无码| 成人电影一区二区三区| 亚洲AV成人片色在线观看麻豆 | 男人天堂无码av| 国产一区二区三区视频在线| 免费av播放| 国产精品美女在线观看| 黄色a级片| 亚洲国产成人91PORN| 青春草在线视频观看| 日韩精品成人电影| 国产大鸡吧| 中文字幕你懂的在线三级| 91天天综合在线| 日韩无码三级视频| 日韩不卡一区二区三区| 亚洲色婷婷五月天| 婷婷深爱| 亚洲精品播放| 四川少妇搡bbbbb搡多人| 欧美三级片在线观看| 超碰在线进入| 亚洲免费视频在线看| av一区在线观看| 草榴在线视频| 男人亚洲天堂| 翔田千里av| 99激情| 欧美色视频网| 91无码高清视频| www.99热视频| 免费日韩毛片| 青青操网| 午夜黄色电影| 在线观看亚洲| 先锋影音男人| 精品国精品自拍自在线| 嫩草入口| 国产三级在线观看视频| www.第四色| 99热综合| 好吊视频一区二区三区红桃视频you | 人人爱人人爽人人操| 不卡的AV| 亚洲色欲av| 国产免费自拍视频| 91麻豆国产| 嫩BBB嗓BBBB榛BBBB| 国产国产国产在线无码视频| 99操逼视频| 欧美日韩中文字幕在线视频| 2025av天堂网| AAA片| 无码免费视频| 99久久综合国产精品二区| 亚洲AV无码久久久| 北条麻纪无码视频| 国产AV不卡| 亚洲精品秘一区二区三区蜜桃久| 久久精品禁一区二区三区四区五区| 综合天堂| 中文字幕成人网站| 久久久久久久久久久成人| 人妻p| 国产做爱导航| A免费观看| 蜜臀网| 手机看片1024旧版| 特级特黄AAAAAAAA片| 大香蕉一级红色片青青河边草| 久久综合婷婷| 粉嫩av一区二区白浆| 日本一区二区三区免费观看| 伊人久久网站| 欧美激情四射老司机| 日韩av成人| 特色毛片| 无码一区二| 操人妻视频| 欧美精品18videosex性欧美 | 亚洲福利在线观看视频| 久久er热| 在线免费看AV片| 少妇性受XXXX黑人XYX性爽| 高清无码免费不卡| 国产一级AV国产免费| 欧美视频免费| 国产精品aaa| 久久大香蕉91| 60分钟上大床又黄又爽| 熟妇在线观看| 国产精品久久AV电影| jizz在线视频| 东方av在线免费观看| 97精品在线| 成年人在线观看| 安微妇搡BBBB搡BBBB日| 永久精品| 西西444WWW无码大胆| 久久伊人大香蕉| 夜夜撸夜夜操| 欧美日韩性爱网站| 99视频在线观看免费| 一本大道香蕉av久久精东影业| 精品久草| 谁有毛片网址| 中文字幕网址在线| 字幕一区二区久久人妻网站| 久久久久久久久久久国产精品| 久久熟女嫩草成人片免费| 操欧美逼| 无码精品黄色片| 亚洲无码av网站| 亚洲免费黄色视频| 高清无码在线观看视频| 人人人操人人| 在线播放国产精品| 亚洲日韩中字| 高清无码一区| 久久久老熟女一区二区三区91| 无码潮喷| 婷婷五月av| 国产精品熟女| 免费尻屄视频| 国产精品欧美精品| 亚洲有码中文字幕| 三级视频网址| 久久一区二区三区四区五区 | 69式荫蒂被添全过程频| 肏亚洲美女| 色999亚洲人成色| 边吃边摸| 欧美一区二区无码视频| 久久艹精品视频| 青青草原视频在线| 欧美老妇操逼| 就去色色五月天| 久久久xxx| 亚洲中文网| 快播激情小说| 动漫啪啪视频| 国产精品免费看| 五月天av在线观看| 亚洲免费小黄片| 色天使亚洲| 亚洲日韩中文字幕| 国产系列精品AV| 无卡无码| 无码视频在线播放| AV手机天堂| 操欧美美女| 大乳奶一级婬片A片| 国产视频97| 婷婷社区五月天| 在线观看国产| 欧美日韩无| 91亚洲高清| 青误乐在线播放| 五月激情天| 看看AV| 最美孕交vivoestv另类| 在线亚洲一区| 免费AV大全| 日韩精品久| 坏男人内射老太太| 国产精品久久久精品| 精品无码在线观看视频| 玖玖爱在线精品视频| 无码国产精品一区二区免费96| 午夜无码免费| 操逼福利视频| 亚洲色情视频| 伊人色综合网| 中文字幕Av在线| AV在线不卡中文| 成人精品一区二区三区无码视频 | 99精品自拍| 91麻豆影院| 欧洲毛片基地c区| 你懂的视频在线播放| 亚洲色五月| 无码专区av| 91视频在线免费看| 欧美无人区码suv| 丁香花五月天| 3344gc在线观看入口| 日韩无码久| 国产亚洲色婷婷久久99精品| 欧美老妇另类| 在线A片免费观看| 国产中文在线观看| 乳揉みま痴汉电车羽月希免费观看 | 乳揉みま痴汉电车羽月希免费观看 | 亚洲性夜夜天天天天天天| 久久久精品网站| 中文字幕永久免费| 综合天堂|