精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

GitOps 持續(xù)部署工具 Argo CD 初體驗

云計算
Argo CD 是一個為 Kubernetes 而生的,遵循聲明式 GitOps 理念的持續(xù)部署工具。Argo CD 可在 Git 存儲庫更改時自動同步和部署應用程序。

[[409076]]

Argo CD 是一個為 Kubernetes 而生的,遵循聲明式 GitOps 理念的持續(xù)部署工具。Argo CD 可在 Git 存儲庫更改時自動同步和部署應用程序。

Argo CD 遵循 GitOps 模式,使用 Git 倉庫作為定義所需應用程序狀態(tài)的真實來源,Argo CD 支持多種 Kubernetes 清單:

  • kustomize
  • helm charts
  • ksonnet applications
  • jsonnet files
  • Plain directory of YAML/json manifests

Any custom config management tool configured as a config management plugin

Argo CD 可在指定的目標環(huán)境中自動部署所需的應用程序狀態(tài),應用程序部署可以在 Git 提交時跟蹤對分支、標簽的更新,或固定到清單的指定版本。

架構

ArgoCD架構

Argo CD 是通過一個 Kubernetes 控制器來實現(xiàn)的,它持續(xù) watch 正在運行的應用程序并將當前的實時狀態(tài)與所需的目標狀態(tài)( Git 存儲庫中指定的)進行比較。已經(jīng)部署的應用程序的實際狀態(tài)與目標狀態(tài)有差異,則被認為是 OutOfSync 狀態(tài),Argo CD 會報告顯示這些差異,同時提供工具來自動或手動將狀態(tài)同步到期望的目標狀態(tài)。在 Git 倉庫中對期望目標狀態(tài)所做的任何修改都可以自動應用反饋到指定的目標環(huán)境中去。

下面簡單介紹下 Argo CD 中的幾個主要組件:

API 服務:API 服務是一個 gRPC/REST 服務,它暴露了 Web UI、CLI 和 CI/CD 系統(tǒng)使用的接口,主要有以下幾個功能:

  • 應用程序管理和狀態(tài)報告
  • 執(zhí)行應用程序操作(例如同步、回滾、用戶定義的操作)
  • 存儲倉庫和集群憑據(jù)管理(存儲為 K8S Secrets 對象)
  • 認證和授權給外部身份提供者
  • RBAC
  • Git webhook 事件的偵聽器/轉(zhuǎn)發(fā)器

倉庫服務:存儲倉庫服務是一個內(nèi)部服務,負責維護保存應用程序清單 Git 倉庫的本地緩存。當提供以下輸入時,它負責生成并返回 Kubernetes 清單:

  • 存儲 URL
  • revision 版本(commit、tag、branch)
  • 應用路徑
  • 模板配置:參數(shù)、ksonnet 環(huán)境、helm values.yaml 等

應用控制器:應用控制器是一個 Kubernetes 控制器,它持續(xù) watch 正在運行的應用程序并將當前的實時狀態(tài)與所期望的目標狀態(tài)( repo 中指定的)進行比較。它檢測應用程序的 OutOfSync 狀態(tài),并采取一些措施來同步狀態(tài),它負責調(diào)用任何用戶定義的生命周期事件的鉤子(PreSync、Sync、PostSync)。

功能

  • 自動部署應用程序到指定的目標環(huán)境
  • 支持多種配置管理/模板工具(Kustomize、Helm、Ksonnet、Jsonnet、plain-YAML)
  • 能夠管理和部署到多個集群
  • SSO 集成(OIDC、OAuth2、LDAP、SAML 2.0、GitHub、GitLab、Microsoft、LinkedIn)
  • 用于授權的多租戶和 RBAC 策略
  • 回滾/隨時回滾到 Git 存儲庫中提交的任何應用配置
  • 應用資源的健康狀況分析
  • 自動配置檢測和可視化
  • 自動或手動將應用程序同步到所需狀態(tài)
  • 提供應用程序活動實時視圖的 Web UI
  • 用于自動化和 CI 集成的 CLI
  • Webhook 集成(GitHub、BitBucket、GitLab)
  • 用于自動化的 AccessTokens
  • PreSync、Sync、PostSync Hooks,以支持復雜的應用程序部署(例如藍/綠和金絲雀發(fā)布)
  • 應用程序事件和 API 調(diào)用的審計
  • Prometheus 監(jiān)控指標
  • 用于覆蓋 Git 中的 ksonnet/helm 參數(shù)

核心概念

  • Application:應用,一組由資源清單定義的 Kubernetes 資源,這是一個 CRD 資源對象
  • Application source type:用來構建應用的工具
  • Target state:目標狀態(tài),指應用程序所需的期望狀態(tài),由 Git 存儲庫中的文件表示
  • Live state:實時狀態(tài),指應用程序?qū)崟r的狀態(tài),比如部署了哪些 Pods 等真實狀態(tài)
  • Sync status:同步狀態(tài)表示實時狀態(tài)是否與目標狀態(tài)一致,部署的應用是否與 Git 所描述的一樣?
  • Sync:同步指將應用程序遷移到其目標狀態(tài)的過程,比如通過對 Kubernetes 集群應用變更
  • Sync operation status:同步操作狀態(tài)指的是同步是否成功
  • Refresh:刷新是指將 Git 中的最新代碼與實時狀態(tài)進行比較,弄清楚有什么不同
  • Health:應用程序的健康狀況,它是否正常運行?能否為請求提供服務?
  • Tool:工具指從文件目錄創(chuàng)建清單的工具,例如 Kustomize 或 Ksonnet 等
  • Configuration management tool:配置管理工具
  • Configuration management plugin:配置管理插件

安裝

當然前提是需要有一個 kubectl 可訪問的 Kubernetes 的集群,直接使用下面的命令即可,這里我們安裝最新的穩(wěn)定版 v2.0.4:

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

如果你要用在生產(chǎn)環(huán)境,則可以使用下面的命令部署一個 HA 高可用的版本:

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

這將創(chuàng)建一個新的命名空間 argocd,Argo CD 的服務和應用資源都將部署到該命名空間。

  1. $ kubectl get pods -n argocd 
  2. NAME                                  READY   STATUS    RESTARTS   AGE 
  3. argocd-application-controller-0       1/1     Running   0          15m 
  4. argocd-dex-server-76ff776f97-ds7mm    1/1     Running   0          15m 
  5. argocd-redis-747b678f89-w99wf         1/1     Running   0          15m 
  6. argocd-repo-server-6fc4456c89-586zl   1/1     Running   0          15m 
  7. argocd-server-7d57bc994b-kkwsd        1/1     Running   0          15m 
  • 如果你對 UI、SSO、多集群管理這些特性不感興趣,只想把應用變更同步到集群中,那么你可以使用 --disable-auth 標志來禁用認證,可以通過命令 kubectl patch deploy argocd-server -n argocd -p '[{"op": "add", "path": "/spec/template/spec/containers/0/command/-", "value": "--disable-auth"}]' --type json 來實現(xiàn)。

然后我們可以在本地安裝 CLI 工具方便操作 Argo CD,我們可以在 Argo CD Git 倉庫發(fā)布頁面(https://github.com/argoproj/argo-cd/releases/latest)查看最新版本的 Argo CD 或運行以下命令來獲取版本:

  1. VERSION=$(curl --silent "https://api.github.com/repos/argoproj/argo-cd/releases/latest" | grep '"tag_name"' | sed -E 's/.*"([^"]+)".*/\1/') 

VERSION 在下面的命令中替換為你要下載的 Argo CD 版本:

  1. curl -sSL -o /usr/local/bin/argocd https://github.com/argoproj/argo-cd/releases/download/$VERSION/argocd-linux-amd64 

為 argocd CLI 賦予可執(zhí)行權限:

  1. $ chmod +x /usr/local/bin/argocd 
  2. $ argocd version 
  3. argocd: v2.0.4+0842d44 
  4.   BuildDate: 2021-06-23T01:29:55Z 
  5.   GitCommit: 0842d448107eb1397b251e63ec4d4bc1b4efdd6e 
  6.   GitTreeState: clean 
  7.   GoVersion: go1.16 
  8.   Compiler: gc 
  9.   Platform: darwin/amd64 
  10. argocd-server: v2.0.4+0842d44 
  11.   BuildDate: 2021-06-23T01:27:53Z 
  12.   GitCommit: 0842d448107eb1397b251e63ec4d4bc1b4efdd6e 
  13.   GitTreeState: clean 
  14.   GoVersion: go1.16 
  15.   Compiler: gc 
  16.   Platform: linux/amd64 
  17.   Ksonnet Version: v0.13.1 
  18.   Kustomize Version: v3.9.4 2021-02-09T19:22:10Z 
  19.   Helm Version: v3.5.1+g32c2223 
  20.   Kubectl Version: v0.20.4 
  21.   Jsonnet Version: v0.17.0 

現(xiàn)在我們就可以使用 argocd 命令了。

如果你是 Mac,則可以直接使用 brew install argocd 進行安裝。

Argo CD 會運行一個 gRPC 服務(由 CLI 使用)和 HTTP/HTTPS 服務(由 UI 使用),這兩種協(xié)議都由 argocd-server 服務在以下端口進行暴露:

  • 443 - gRPC/HTTPS
  • 80 - HTTP(重定向到 HTTPS)

我們可以通過配置 Ingress 的方式來對外暴露服務,這里我們?nèi)匀皇褂?Traefik 的 IngressRoute 進行配置,其他 Ingress 控制器的配置可以參考官方文檔 https://argo-cd.readthedocs.io/en/stable/operator-manual/ingress/ 進行配置。

由于 Traefik 它可以在同一端口處理 TCP 和 HTTP 連接,所以我們不需要定義多個 IngressRoute 來暴露 HTTP 和 gRPC 服務,然后應在禁用 TLS 的情況下運行 API 服務,編輯 argocd-server Deployment 以將 --insecure 標志添加到 argocd-server 命令中:

  1. spec: 
  2.   template: 
  3.     spec: 
  4.       containers: 
  5.       - name: argocd-server 
  6.         command: 
  7.         - argocd-server 
  8.         - --staticassets 
  9.         - /shared/app 
  10.         - --repo-server 
  11.         - argocd-repo-server:8081 
  12.         - --insecure  # 需要禁用 tls,否則會 `redirected you too many times` 

然后創(chuàng)建如下所的 IngressRoute 資源對象即可,我們創(chuàng)建了一個 redirect-https 的中間件,可以讓 http 服務強制跳轉(zhuǎn)到 https 服務去:

  1. apiVersion: traefik.containo.us/v1alpha1 
  2. kind: Middleware 
  3. metadata: 
  4.   name: redirect-https 
  5.   namespace: argocd 
  6. spec: 
  7.   redirectScheme: 
  8.     scheme: https 
  9. --- 
  10. apiVersion: traefik.containo.us/v1alpha1 
  11. kind: IngressRoute 
  12. metadata: 
  13.   name: argocd-server-http 
  14.   namespace: argocd 
  15. spec: 
  16.   entryPoints: 
  17.     - web 
  18.   routes: 
  19.     - kind: Rule 
  20.       match: Host(`argocd.k8s.local`) 
  21.       priority: 10 
  22.       middlewares: 
  23.         - name: redirect-https 
  24.       services: 
  25.         - name: argocd-server 
  26.           port: 80 
  27.     - kind: Rule 
  28.       match: Host(`argocd.k8s.local`) && Headers(`Content-Type`, `application/grpc`) 
  29.       priority: 11 
  30.       middlewares: 
  31.         - name: redirect-https 
  32.       services: 
  33.         - name: argocd-server 
  34.           port: 80 
  35.           scheme: h2c 
  36. --- 
  37. apiVersion: traefik.containo.us/v1alpha1 
  38. kind: IngressRoute 
  39. metadata: 
  40.   name: argocd-server 
  41.   namespace: argocd 
  42. spec: 
  43.   entryPoints: 
  44.     - websecure 
  45.   routes: 
  46.     - kind: Rule 
  47.       match: Host(`argocd.k8s.local`) 
  48.       priority: 10 
  49.       services: 
  50.         - name: argocd-server 
  51.           port: 80 
  52.     - kind: Rule 
  53.       match: Host(`argocd.k8s.local`) && Headers(`Content-Type`, `application/grpc`) 
  54.       priority: 11 
  55.       services: 
  56.         - name: argocd-server 
  57.           port: 80 
  58.           scheme: h2c 
  59.   tls: 
  60.     certResolver: default 
  61.     options: {} 

創(chuàng)建完成后,我們就可以通過 argocd.k8s.local 來訪問 Argo CD 服務了,不過需要注意我們這里配置的證書是自簽名的,所以在第一次訪問的時候會提示不安全,強制跳轉(zhuǎn)即可:

argocd ui

默認情況下 admin 帳號的初始密碼是自動生成的,會以明文的形式存儲在 Argo CD 安裝的命名空間中名為 password 的 Secret 對象下的 argocd-initial-admin-secret 字段下,我們可以用下面的命令來獲取:

  1. kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d && echo 

使用用戶名 admin 和上面輸出的密碼即可登錄 Dashboard,同樣我們也可以通過 ArgoCD CLI 命令行工具進行登錄:

  1. $ argocd login argocd.k8s.local 
  2.  
  3. WARNING: server certificate had error: x509: certificate is valid for e2d1e856c987c94f3c918276921a61ba.6a98e1283291d1b7a23d19e240b6ee89.traefik.defaultnot argocd.k8s.local. Proceed insecurely (y/n)? y 
  4. Username: admin 
  5. Password
  6. 'admin:login' logged in successfully 
  7. Context 'argocd.k8s.local' updated 

CLI 登錄成功后,可以使用如下所示命令更改密碼:

  1. $ argocd account update-password 
  2. *** Enter current password
  3. *** Enter new password
  4. *** Confirm new password
  5. Password updated 
  6. Context 'argocd.k8s.local' updated 

配置集群

由于 Argo CD 支持部署應用到多集群,所以如果你要將應用部署到外部集群的時候,需要先將外部集群的認證信息注冊到 Argo CD 中,如果是在內(nèi)部部署(運行 Argo CD 的同一個集群,默認不需要配置),應該使用 https://kubernetes.default.svc 作為應用的 K8S APIServer 地址。

首先列出當前 kubeconfig 中的所有集群上下文:

  1. kubectl config get-contexts -o name 

從列表中選擇一個上下文名稱并將其提供給 argocd cluster add CONTEXTNAME,比如對于 docker-desktop上下文,運行:

  1. argocd cluster add docker-desktop 

上述命令會將 ServiceAccount (argocd-manager) 安裝到該 kubectl 上下文的 kube-system 命名空間中,并將 ServiceAccount 綁定到管理員級別的 ClusterRole,Argo CD 使用此 ServiceAccount 令牌來執(zhí)行任務管理(部署/監(jiān)控)。

  • argocd-manager-role 可以修改 Role 的規(guī)則,使其僅對有限的一組命名空間、組、種類具有 create、update、patch、delete 等權限,但是對于 Argo CD 需要 get,list,watch 的權限在 ClusterRole 范圍內(nèi)。

創(chuàng)建應用

Git 倉庫 https://github.com/argoproj/argocd-example-apps.git 是一個包含留言簿應用程序的示例庫,我們可以用該應用來演示 Argo CD 的工作原理。

通過 CLI 創(chuàng)建應用

我們可以通過 argocd app create xxx 命令來創(chuàng)建一個應用:

  1. $ argocd app create --help 
  2. Create an application 
  3.  
  4. Usage: 
  5.   argocd app create APPNAME [flags] 
  6.  
  7. Examples: 
  8.  
  9.         # Create a directory app 
  10.         argocd app create guestbook --repo https://github.com/argoproj/argocd-example-apps.git --path guestbook --dest-namespace default --dest-server https://kubernetes.default.svc --directory-recurse 
  11.  
  12.         # Create a Jsonnet app 
  13.         argocd app create jsonnet-guestbook --repo https://github.com/argoproj/argocd-example-apps.git --path jsonnet-guestbook --dest-namespace default --dest-server https://kubernetes.default.svc --jsonnet-ext-str replicas=2 
  14.  
  15.         # Create a Helm app 
  16.         argocd app create helm-guestbook --repo https://github.com/argoproj/argocd-example-apps.git --path helm-guestbook --dest-namespace default --dest-server https://kubernetes.default.svc --helm-set replicaCount=2 
  17.  
  18.         # Create a Helm app from a Helm repo 
  19.         argocd app create nginx-ingress --repo https://kubernetes-charts.storage.googleapis.com --helm-chart nginx-ingress --revision 1.24.3 --dest-namespace default --dest-server https://kubernetes.default.svc 
  20.  
  21.         # Create a Kustomize app 
  22.         argocd app create kustomize-guestbook --repo https://github.com/argoproj/argocd-example-apps.git --path kustomize-guestbook --dest-namespace default --dest-server https://kubernetes.default.svc --kustomize-image gcr.io/heptio-images/ks-guestbook-demo:0.1 
  23.  
  24.         # Create a app using a custom tool: 
  25.         argocd app create ksane --repo https://github.com/argoproj/argocd-example-apps.git --path plugins/kasane --dest-namespace default --dest-server https://kubernetes.default.svc --config-management-plugin kasane 
  26.  
  27.  
  28. Flags: 
  29. ...... 

直接執(zhí)行如下所示命令即可:

  1. $ argocd app create guestbook --repo https://github.com/argoproj/argocd-example-apps.git --path guestbook --dest-server https://kubernetes.default.svc --dest-namespace default 
  2. application 'guestbook' created 

通過 UI 創(chuàng)建應用

除了可以通過 CLI 工具來創(chuàng)建應用,我們也可以通過 UI 界面來創(chuàng)建,定位到 argocd.k8s.local 頁面,登錄后,點擊 +New App 新建應用按鈕,如下圖:

New App

將應用命名為 guestbook,使用 default project,并將同步策略設置為 Manual:

配置應用

然后在下面配置 Repository URL 為 https://github.com/argoproj/argocd-example-apps.git,由于某些原因我們這里使用遷移到 Gitee 上面的倉庫地址 https://gitee.com/cnych/argocd-example-apps,將 Revision 設置為 HEAD,并將路徑設置為 guestbook:

配置Repo

然后下面的 Destination 部分,將 cluster 設置為 in-cluster 和 namespace 為 default:

配置集群

填寫完以上信息后,點擊頁面上方的 Create 安裝,即可創(chuàng)建 guestbook 應用,創(chuàng)建完成后可以看到當前應用的處于 OutOfSync 狀態(tài):

guestbook application

部署應用

由于上面我們在創(chuàng)建應用的時候使用的同步策略為 Manual,所以應用創(chuàng)建完成后沒有自動部署,需要我們手動去部署應用。同樣可以通過 CLI 和 UI 界面兩種同步方式。

使用 CLI 同步

應用創(chuàng)建完成后,我們可以通過如下所示命令查看其狀態(tài):

  1. $ argocd app get guestbook 
  2. Name:               guestbook 
  3. Project:            default 
  4. Server:             https://kubernetes.default.svc 
  5. Namespace:          default 
  6. URL:                https://argocd.k8s.local/applications/guestbook 
  7. Repo:               https://gitee.com/cnych/argocd-example-apps 
  8. Target:             HEAD 
  9. Path:               guestbook 
  10. SyncWindow:         Sync Allowed 
  11. Sync Policy:        <none> 
  12. Sync Status:        OutOfSync from HEAD (53e28ff) 
  13. Health Status:      Missing 
  14.  
  15. GROUP  KIND        NAMESPACE  NAME          STATUS     HEALTH   HOOK  MESSAGE 
  16.        Service     default    guestbook-ui  OutOfSync  Missing 
  17. apps   Deployment  default    guestbook-ui  OutOfSync  Missing 

應用程序狀態(tài)為初始 OutOfSync 狀態(tài),因為應用程序尚未部署,并且尚未創(chuàng)建任何 Kubernetes 資源。要同步(部署)應用程序,可以執(zhí)行如下所示命令:

  1. argocd app sync guestbook 

此命令從 Git 倉庫中檢索資源清單并執(zhí)行 kubectl apply 部署應用,執(zhí)行上面命令后 guestbook 應用便會運行在集群中了,現(xiàn)在我們就可以查看其資源組件、日志、事件和評估其健康狀態(tài)了。

通過 UI 同步

直接添加 UI 界面上應用的 Sync 按鈕即可開始同步:

sync 操作

同步完成后可以看到我們的資源狀態(tài):

Sync 完成

還可以有不同的視角進行查看:

Sync 完成

也可以通過 kubectl 查看到我們部署的資源:

  1. ➜  ~ kubectl get pods 
  2. NAME                                      READY   STATUS      RESTARTS   AGE 
  3. guestbook-ui-6c96fb4bdc-nmk9b             1/1     Running     0          2m22s 
  4. ➜  ~ kubectl get svc 
  5. NAME                 TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)    AGE 
  6. guestbook-ui         ClusterIP   10.96.32.11     <none>        80/TCP     11m 
  7. kubernetes           ClusterIP   10.96.0.1       <none>        443/TCP    41d 

和我們從 Git 倉庫中同步 guestbook 目錄下面的資源狀態(tài)也是同步的,證明同步成功了。

期望狀態(tài)

 

責任編輯:姜華 來源: k8s技術圈
相關推薦

2022-08-16 22:39:01

Argo CDKubernetes

2021-07-09 06:40:59

TektonArgo CD GitOps

2023-03-14 16:35:52

2023-09-27 08:24:49

2024-09-11 09:25:00

2024-05-22 08:03:15

2021-12-08 12:20:55

KubernetesGitOpsLinux

2022-08-18 17:07:00

sopsGitOps

2021-06-24 07:20:21

Linked GitOps Argo CD

2024-08-07 10:14:35

2021-06-09 05:44:45

云原生 CICD

2023-07-07 07:29:53

Kubernetes容器

2023-03-06 21:19:19

2012-05-16 10:50:17

Windows Pho

2022-02-17 11:52:05

?Argo CD漏洞Kubernetes

2009-08-01 09:06:35

UbuntuOneLinux開源操作系統(tǒng)

2009-03-09 15:12:39

XenServer安裝

2023-01-10 08:37:45

Docker開發(fā)架構

2023-07-15 08:01:38

2010-11-22 10:31:17

Sencha touc
點贊
收藏

51CTO技術棧公眾號

九九热免费在线| 亚洲乱码国产一区三区| 黄色成人一级片| 久久xxxx精品视频| 俺去亚洲欧洲欧美日韩| 中文字幕无人区二| 婷婷激情一区| 一区二区三区在线观看欧美| 国产欧美一区二区三区另类精品| 无码人妻丰满熟妇奶水区码| 亚洲欧美综合久久久| 亚洲第一区在线| 污污的网站18| 国产一二三在线| 国产精品国产三级国产aⅴ中文| 国产精品一区二区欧美黑人喷潮水| 亚洲中文无码av在线| 欧美午夜不卡影院在线观看完整版免费| 亚洲欧美国产一区二区三区| 色诱av手机版| 欧美亚洲人成在线| 色综合天天性综合| 九九热只有这里有精品| 日本在线视频网| 久久夜色精品一区| 亚洲资源在线看| 成人黄色免费网| 亚洲一区日韩| 国内偷自视频区视频综合| 国产精品精品软件男同| 欧美一站二站| 国产午夜精品理论片a级探花| 极品白嫩的小少妇| 国产精品高清一区二区 | 国产精品第56页| 久久社区一区| 在线成人中文字幕| 成人午夜剧场视频网站| 成人在线tv视频| 欧美va在线播放| 日本黄色www| 日韩免费在线电影| 欧美人牲a欧美精品| 五月天婷婷激情视频| 快播电影网址老女人久久| 日韩欧美国产中文字幕| 国产精品后入内射日本在线观看| 国产区美女在线| 一区二区在线电影| 糖心vlog在线免费观看| aa在线视频| 亚洲精品乱码久久久久久久久 | 午夜在线视频| 中文字幕欧美三区| 亚洲一区尤物| а√天堂在线官网| 亚洲一区在线电影| 欧美 日韩 亚洲 一区| 波多野结衣久久| 午夜精品免费在线观看| 少妇av一区二区三区无码| 春色校园综合激情亚洲| 欧美午夜激情在线| 日韩欧美在线免费观看视频| 91福利精品在线观看| 欧美午夜寂寞影院| 天天久久综合网| 136福利精品导航| 欧美精品一区二区三区蜜桃视频| 白嫩情侣偷拍呻吟刺激| 加勒比色老久久爱综合网| 日韩av影片在线观看| a天堂中文字幕| 91av精品| 668精品在线视频| 成人午夜精品视频| 国产一区二区日韩精品| 国产经品一区二区| 麻豆av电影在线观看| 中文字幕巨乱亚洲| 日韩黄色片在线| 成人线上视频| 555www色欧美视频| 亚洲成年人在线观看| 蜜桃国内精品久久久久软件9| 国产一区二区三区高清在线观看| 成人在线观看小视频| 亚洲激情自拍| 国产精品女主播| 亚洲av无码乱码国产麻豆| 99九九99九九九视频精品| 色一情一乱一伦一区二区三区丨| 97caopron在线视频| 欧美日韩国产精品专区| 国产亚洲视频一区| 精品视频在线你懂得| 伊人亚洲福利一区二区三区| 久久久国产精品黄毛片| 日本aⅴ免费视频一区二区三区 | 亚洲色图美女| 欧美成人合集magnet| 国内自拍视频在线播放| 国产精品自拍av| 日本在线播放不卡| 国产盗摄在线视频网站| 欧美视频一区二区| 美女又爽又黄视频毛茸茸| 91精品国产91久久久久久黑人| 国色天香2019中文字幕在线观看| 亚洲一级av毛片| 99久久精品免费精品国产| 国产日本欧美在线| 桃子视频成人app| 亚洲精美色品网站| 亚洲人成伊人成综合网久久久| 亚洲男人的天堂一区二区| 精品一二三四在线| 欧美在线免费| 91在线一区| 丝袜在线视频| 成人av无码一区二区三区| 免费无码毛片一区二区app| 熟妇无码乱子成人精品| 久久精品在线免费视频| wwwxx欧美| 国内精品伊人久久| 亚洲性无码av在线| 在线免费观看日韩欧美| 综合色天天鬼久久鬼色| 精品一二线国产| 亚洲三级影院| 四季av一区二区三区免费观看| 成人午夜毛片| 久草在线视频资源| 91亚洲欧美激情| 免费无遮挡无码永久在线观看视频| 18深夜在线观看免费视频| av一区二区三区四区电影| 色偷偷综合社区| 亚洲精品美女久久久| 成人性教育视频在线观看| 天天操天天操天天操天天| 粉嫩绯色av一区二区在线观看| 一区二区不卡在线视频 午夜欧美不卡'| 91在线三级| 亚洲电影免费观看高清完整版在线观看| 永久免费看mv网站入口| 精品国产av 无码一区二区三区| 精品欧美一区二区久久久久| 国产 中文 字幕 日韩 在线| 婷婷激情5月天| 久久久久久久激情| 超级碰在线观看| 国产精品日韩二区| 国产精品美女无圣光视频| 欧美一级淫片播放口| 久久久久这里只有精品| 伦伦影院午夜日韩欧美限制| 中文字幕在线成人| 日韩精品视频在线免费观看| 91精品国产综合久久香蕉的特点| 7777精品伊人久久久大香线蕉超级流畅 | 国产精品日韩一区二区三区| 国产精品露脸自拍| 国产精品99一区| 欧美精品一区二区三区久久久| 日韩一区和二区| 欧美日韩一区小说| 午夜伦理一区二区| 自拍偷自拍亚洲精品播放| 日韩电影免费一区| 日韩亚洲欧美在线观看| 欧美激情视频二区| 国内精品写真在线观看| 日韩a级黄色片| 无码少妇一区二区三区| 国产精品久久久久久久久久新婚 | 伊人亚洲综合网| 亚洲人成小说网站色在线 | 国产精品久久免费| 亚洲一区二区三区四区在线观看| 国产精品一区二区人妻喷水| 天堂久久一区二区三区| 亚洲国产精品女人| 狼人天天伊人久久| 国产精品视频一| 色女人在线视频| 亚洲午夜久久久久久久| 国产sm主人调教女m视频| 黑人巨大精品欧美一区二区免费| 精品熟妇无码av免费久久| 国产成a人无v码亚洲福利| 久久久久久久久久福利| 欧美成熟视频| 色一情一乱一伦一区二区三区丨| 在线日韩成人| 成人黄色片在线| 亚洲少妇视频| 欧美日韩成人在线视频| 99re在线视频| 亚洲精品国精品久久99热一| 国产精品毛片一区二区在线看舒淇| 污片在线观看一区二区| 97在线观看免费高| 久久久久久久久免费| 国产成人精品一区二区在线小狼| 久久精品午夜| 国产高清av在线播放| 婷婷久久国产对白刺激五月99| 久久久婷婷一区二区三区不卡| 精品视频在线观看网站| 国产成人精品免高潮在线观看 | 亚洲一区自拍偷拍| 蜜桃av免费在线观看| 91在线视频网址| 美女又黄又免费的视频| 麻豆精品精品国产自在97香蕉| 免费毛片小视频| 亚洲激精日韩激精欧美精品| 法国空姐在线观看免费| 日韩片欧美片| 日韩中文字幕一区二区| 亚洲婷婷影院| 久久香蕉综合色| 狠狠一区二区三区| 成人免费在线一区二区三区| 亚洲欧美专区| 国产精品丝袜久久久久久不卡| 久久青青视频| 欧美在线性爱视频 | 亚洲视频tv| 一本色道久久综合狠狠躁篇怎么玩 | 另类激情亚洲| 成人中文字幕在线播放| 亚洲精品影视| 国产精品专区在线| 国产综合自拍| 黄色成人在线看| 亚洲看片免费| 欧美 国产 综合| 国产日韩欧美三区| 97国产在线播放| av成人天堂| 免费黄色日本网站| 亚洲影音一区| 日韩毛片在线免费看| 三级影片在线观看欧美日韩一区二区| 精品国产免费av| 久久aⅴ乱码一区二区三区| 波多野结衣家庭教师在线播放| 日韩视频久久| 日韩视频免费在线播放| 蜜桃视频一区二区三区在线观看| 冲田杏梨av在线| 久久99日本精品| 被黑人猛躁10次高潮视频| 国产a精品视频| 你懂得在线视频| 国产视频一区在线观看| 久久精品色妇熟妇丰满人妻| 中文字幕永久在线不卡| 午夜免费激情视频| 亚洲动漫第一页| 秋霞精品一区二区三区| 欧美亚洲免费在线一区| 99热这里只有精| 精品国产在天天线2019| 青青草免费在线| 正在播放国产一区| 中文字幕在线观看播放| 97超级碰碰碰久久久| 久久久久久久性潮| 高清不卡日本v二区在线| 琪琪久久久久日韩精品| 视频一区二区三区在线观看| 亚洲成人免费| 亚洲美免无码中文字幕在线| 久久亚洲精品伦理| 99精品视频国产| aaa欧美色吧激情视频| 成年人在线免费看片| 国产精品视频免费看| 国产一二三四在线| 欧美艳星brazzers| 亚洲h视频在线观看| 亚洲网址你懂得| 超碰在线观看免费| 热re99久久精品国产66热| 国产精品久久久久久av公交车| 精品一区二区三区视频日产| 欧美高清视频手机在在线| 欧美 日韩 国产在线观看| 另类中文字幕网| 精品国产人妻一区二区三区| 国产精品国产三级国产三级人妇| 国产性70yerg老太| 欧美午夜电影一区| 无码国精品一区二区免费蜜桃| 日韩在线观看免费全集电视剧网站| 欧美xxxx性xxxxx高清| 国产精品久久久久久久久久小说 | 欧美 激情 在线| 国产一区三区三区| 丰满少妇高潮一区二区| 亚洲国产sm捆绑调教视频 | 超薄肉色丝袜足j调教99| 香蕉国产精品偷在线观看不卡| 99视频在线观看视频| 国产视频亚洲色图| 日本少妇性高潮| 91精品国产综合久久香蕉麻豆| 你懂的视频在线| 久久免费福利视频| 国产色99精品9i| 午夜精品一区二区三区在线观看| 亚洲精品看片| 一级黄色片毛片| 亚洲精品视频在线| 91国产免费视频| 亚洲午夜国产成人av电影男同| 国产资源在线观看入口av| 999视频在线免费观看| 大色综合视频网站在线播放| 能在线观看的av| 不卡av免费在线观看| 三级影片在线看| 欧美高清性hdvideosex| 福利片在线看| 国产成人涩涩涩视频在线观看| 网红女主播少妇精品视频| 91国视频在线| 91视频com| 国产专区第一页| 日韩成人网免费视频| 日韩激情电影| 久久伊人资源站| 国产精品亚洲综合久久| 欧美做受喷浆在线观看| 亚洲成人免费电影| 欧美熟妇另类久久久久久不卡 | 伊人久久青草| 捆绑调教美女网站视频一区| 毛片久久久久久| 欧美日韩不卡一区二区| av资源种子在线观看| 国产欧美在线观看| 天堂美国久久| 欧美性猛交乱大交| 亚洲夂夂婷婷色拍ww47| 亚洲精品喷潮一区二区三区| 欧美激情视频在线观看| eeuss鲁片一区二区三区| 国产日本在线播放| 99久久精品国产观看| 中文字幕精品三级久久久| 亚洲社区在线观看| 99久久综合国产精品二区| 中文字幕一区二区三区乱码| 国产制服丝袜一区| 久久久久久国产精品免费播放| 精品国产成人在线影院| 久久男人天堂| 亚洲高清资源综合久久精品| 久久超碰97人人做人人爱| 老女人性淫交视频| 亚洲国产成人av在线| 极品美女一区| 艳母动漫在线观看| 97se亚洲国产综合自在线不卡| 9i精品福利一区二区三区| 中文字幕亚洲国产| 视频一区在线| 日韩精品一区二区三区久久| 国产精品天美传媒| 性一交一乱一色一视频麻豆| 2021久久精品国产99国产精品| 成人免费在线播放| 黄页网站在线看| 91福利资源站| 日本小视频在线免费观看| 久久精品国产综合精品| 美女网站视频久久| 国产真人真事毛片| 亚洲图片欧洲图片av| 一区二区三区视频播放| 激情综合网俺也去| 亚洲精品乱码久久久久久黑人| 欧美一区二区视频| 成人天堂噜噜噜| 亚洲一区二区免费看| 97在线观看视频免费| 亚洲精品久久久久久久久| 日韩亚洲国产免费| 欧美 日韩精品| 亚洲精品成人天堂一二三| 美国成人毛片| 国产精品免费一区二区三区四区 | 一色道久久88加勒比一| 日韩一级在线观看| 亚洲成人av观看|