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

使用Tekton的云原生CI/CD

云計算 云原生
我們都知道每個重大的項目都需要CI/CD,我很確定沒有必要解釋為什么。不過,在決定在何處構(gòu)建CI/CD時,有很多工具、平臺和解決方案可供選擇。

[[399353]]

本文轉(zhuǎn)載自微信公眾號「新鈦云服」,作者張春 翻譯。轉(zhuǎn)載本文請聯(lián)系新鈦云服公眾號。

我們都知道每個重大的項目都需要CI/CD,我很確定沒有必要解釋為什么。不過,在決定在何處構(gòu)建CI/CD時,有很多工具、平臺和解決方案可供選擇。您可以選擇Jenkins、Travis、CircleCI、Bamboo和許多其他的,但是如果您正在為運行在Kubernetes上的云本地應(yīng)用程序構(gòu)建CI/CD,那么使用適當(dāng)?shù)墓ぞ咄瑫r運行云本地CI/CD是很有意義的。

其中一個允許您在Kubernetes上本機運行CI/CD的解決方案是Tekton,因此在本文中,我們將開始關(guān)于使用Tekton構(gòu)建CI/CD的系列文章,首先介紹、安裝和定制Tekton,以開始我們在Kubernetes上使用云本地CI/CD的旅程。

TL;DR:使用Tekton啟動您的CI/CD所需的所有資源、腳本和文件都可以在https://github.com/MartinHeinz/tekton-kickstarter找到。

正如標(biāo)題和介紹所暗示的,Tekton是云原生CI/CD工具。它最初是在谷歌開發(fā)的,被稱為Knative管道。它在Kubernetes上作為一組自定義資源(crd)運行,如管道或任務(wù),其生命周期由Tekton的控制器管理。事實上,它本機運行在Kubernetes上,這使它成為管理/構(gòu)建/部署任何部署在Kubernetes上的應(yīng)用程序和資源的理想選擇。

這表明它適合管理Kubernetes的工作負(fù)載,但是為什么不使用其他更流行的工具呢?

常用的CI/CD解決方案,如Jenkins、Travis或Bamboo并不是為了在Kubernetes上運行而構(gòu)建的,或者缺乏與Kubernetes的適當(dāng)集成。這使得部署、維護和管理CI/CD工具本身以及使用它來部署任何kubernetes本地應(yīng)用程序變得困難和/或令人煩惱。

另一方面,由于Kubernetes運營商與所有其他容器化應(yīng)用程序并排在一起,因此Tekton可以非常輕松地進行部署,并且每個Tekton管道都是另一個Kubernetes資源,其管理方式與舊式Pod或Deployments相同。

這也使Tekton可以很好地與GitOps做法配合使用,因為您可以采用所有管道和配置并以git的形式進行維護,而對于至少一種上述工具則不能這么說。資源消耗也是如此-考慮到整個Tekton部署只是幾個pod-與其他CI / CD工具相比,在管道不運行時消耗很少的內(nèi)存和CPU。

話雖如此,很顯然,如果您要在Kubernetes上運行所有工作負(fù)載,那么最好在CI / CD中使用一些Kubernetes原生工具。Tekton是唯一的選擇嗎?不,當(dāng)然,您可以使用其他工具,其中之一就是JenkinsX,這是從本地開始使用Kubernetes進行持續(xù)交付的一種自以為是的方式。

它包含許多工具,如果您對替代工具沒有強烈的偏好,可以使您的生活更輕松,但是如果您要自定義技術(shù)堆棧,也可能會很煩人。盡管JenkinsX仍然在后臺使用Tekton,所以您最好還是學(xué)習(xí)使用Tekton,然后再決定是否還需要JenkinsX提供的所有其他組件

另一個選擇是Spinnaker,它是一個多云解決方案,已經(jīng)存在了很長一段時間。它使用插件來集成各種各樣的提供商,其中之一就是Kubernetes。但是,它不是一個構(gòu)建引擎——它不提供測試代碼、構(gòu)建應(yīng)用程序映像或?qū)⑺鼈兺扑偷絩egistry的工具,對于這些任務(wù),您仍然需要一些其他CI工具。

現(xiàn)在,讓我們仔細(xì)看看Tekton的組成-Tekton的核心僅包含幾個CustomResourceDefinitions(CRD),它們是Tasks和Pipelines,它們充當(dāng)TaskRuns和PipelineRuns的藍(lán)圖。這四個(加上其他一些即將被棄用或現(xiàn)在不相關(guān)的)足以開始運行一些管道和任務(wù)。

但是,考慮到大多數(shù)設(shè)置都需要構(gòu)建,部署以及因此還需要由某些事件觸發(fā)的管道,通常這還不夠。因此,我們還安裝了Tekton觸發(fā)器,該觸發(fā)器提供了其他資源,即-EventListener,TriggerBinding和TriggerTemplate。這三個資源為我們提供了偵聽特定事件(例如(GitHub)webhooks,CloudEvents或cron作業(yè)發(fā)送的事件)的方式,并啟動了特定的管道。

最后一個(也是非常可選的組件)是Tekton Dashboard,它是一個非常簡單的GUI,但是卻是檢查所有CRD(包括任務(wù),管道和觸發(fā)器)的非常方便的工具。它還允許搜索和過濾,這在查找TaskRun和PipelineRun時會很有幫助。您還可以使用它從現(xiàn)有的任務(wù)和管道創(chuàng)建TaskRun和PipelineRun。所有這些部分都由控制器部署和Pod管理,這些部署和Pod負(fù)責(zé)上述CRD的生命周期。

##Setting

考慮到Tekton由多個組件組成,安裝可能會有些復(fù)雜,并且可以通過多種方式完成。 通常,您至少要安裝管道和觸發(fā)器,最明顯的方法是使用原始Kubernetes清單安裝它,但是您可以采用更簡單的方法,并從OperatorHub安裝Tekton Operator,后者已經(jīng)包括所有部分。

作為任何安裝方法的前提,我們顯然需要一個集群,在這里,我們將使用KinD(Docker中的Kubernetes)進行本地管道開發(fā)。 我們將為KinD使用以下自定義配置,因為我們將需要部署Ingress控制器并公開端口80/443,以便能夠訪問Tekton Triggers事件偵聽器。

  1. # kind-tekton.yaml 
  2. kind: Cluster 
  3. apiVersion: kind.x-k8s.io/v1alpha4 
  4. nodes: 
  5. - role: control-plane 
  6.   kubeadmConfigPatches: 
  7.   - | 
  8.     kind: InitConfiguration 
  9.     nodeRegistration: 
  10.       kubeletExtraArgs: 
  11.         node-labels: "ingress-ready=true" 
  12.   extraPortMappings: 
  13.   - containerPort: 80 
  14.     hostPort: 80 
  15.     protocol: TCP 
  16.   - containerPort: 443 
  17.     hostPort: 443 

我們可以使用以下命令創(chuàng)建集群:

  1. ~ $ kind create cluster --name tekton --image=kindest/node:v1.20.2 --config=kind-tekton.yaml 
  2. ~ $ kubectl cluster-info --context kind-tekton 
  3. ~ $ kubectl config set-context kind-tekton 
  4. ~ $ kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/static/provider/kind/deploy.yaml 
  5. ~ $ kubectl wait --namespace ingress-nginx --for=condition=ready pod --selector=app.kubernetes.io/component=controller --timeout=90s 

現(xiàn)在,對于Tekton Pipeline和Triggers的實際部署-我提到了通過Tekton Operator進行安裝,這似乎是最快和最好的方式來啟動和運行預(yù)先配置的所有內(nèi)容,但是,該操作員(在撰寫本文時)沒有任何東西。實際文檔,因此您需要進行大量挖掘才能找到有關(guān)工作方式的任何解釋,對于我個人而言,這并不是什么大問題。但是,這里真正的問題是,OperatorHub中的Operator不是最新的,我找不到當(dāng)前的構(gòu)建/映像,這或多或少地使它無用。

我敢肯定,當(dāng)Tekton Operator更成熟時,這種情況會在某個時候改變(因此請注意它的存儲庫),但是在那之前,應(yīng)該使用其他安裝選項。如果您恰巧在OpenShift上運行,則可以使用的選項是Red Hat Pipeline Operator,它也是-Kubernetes Operator,但在這種情況下,由Red Hat策劃并為OpenShift定制。只需單擊幾下即可在Web控制臺中安裝它,因此,如果您可以訪問OpenShift群集,則應(yīng)嘗試一下。

使用此功能的一個缺點是發(fā)行周期較慢,因此您將不得不使用最新版本的Tekton。如果不能選擇OpenShift或只想在Kubernetes上運行,則使用原始清單進行安裝就可以了,這是這樣做的方式:

  1. ~ $ kubectl apply -f https://storage.googleapis.com/tekton-releases/pipeline/latest/release.yaml  # Deploy pipelines 
  2. ~ $ kubectl apply -f https://storage.googleapis.com/tekton-releases/triggers/latest/release.yaml  # Deploy triggers 
  3. ~ $ kubectl get svc,deploy --namespace tekton-pipelines --selector=app.kubernetes.io/part-of=tekton-pipelines 
  4. NAME                                  TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)                              AGE 
  5. service/tekton-pipelines-controller   ClusterIP   10.106.114.94   <none>        9090/TCP,8080/TCP                    2m13s 
  6. service/tekton-pipelines-webhook      ClusterIP   10.105.247.0    <none>        9090/TCP,8008/TCP,443/TCP,8080/TCP   2m13s 
  7.   
  8. NAME                                          READY   UP-TO-DATE   AVAILABLE   AGE 
  9. deployment.apps/tekton-pipelines-controller   1/1     1            1           2m13s 
  10. deployment.apps/tekton-pipelines-webhook      1/1     1            1           2m13s 

如果您希望在此安裝中也包含Tekton儀表板,那么您需要再應(yīng)用一組清單

  1. ~ $ kubectl apply -f https://storage.googleapis.com/tekton-releases/dashboard/latest/tekton-dashboard-release.yaml  # Deploy dashboard 
  2. ~ $ kubectl get svc,deploy -n tekton-pipelines --selector=app=tekton-dashboard 
  3. NAME                       TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)    AGE 
  4. service/tekton-dashboard   ClusterIP   10.111.144.87   <none>        9097/TCP   25s 
  5.   
  6. NAME                               READY   UP-TO-DATE   AVAILABLE   AGE 
  7. deployment.apps/tekton-dashboard   1/1     1            1           25s 

除此之外,我們還需要額外的入口才能到達(dá)儀表盤:

  1. apiVersion: networking.k8s.io/v1 
  2. kind: Ingress 
  3. metadata: 
  4.   name: dashboard 
  5.   namespace: tekton-pipelines 
  6.   annotations: 
  7.     nginx.ingress.kubernetes.io/rewrite-target: '/$2' 
  8. spec: 
  9.   rules: 
  10.     - http: 
  11.         paths: 
  12.           - path: /dashboard(/|$)(.*) 
  13.             pathType: Prefix 
  14.             backend: 
  15.               service: 
  16.                 name: tekton-dashboard 
  17.                 port: 
  18.                   number: 9097 

默認(rèn)情況下,先前應(yīng)用的儀表板資源默認(rèn)情況下是在tekton-pipelines命名空間中創(chuàng)建的,并且包括使用端口9097的名為tekton-dashboard的服務(wù),這是上面Ingress中引用的值。 此Ingress還具有重寫規(guī)則,以在/ dashboard / ...路徑而不是/處顯示儀表板。

這是因為我們要對事件偵聽器的Webhook使用默認(rèn)的/(根)路徑(后面將介紹主題)。要驗證Dashboard是否確實處于活動狀態(tài)并且一切都在運行,您可以瀏覽到localhost / dashboard /(假設(shè)您正在使用KinD),并且應(yīng)該看到類似以下內(nèi)容(減去實際管道):

如果所有這些設(shè)置似乎都花了很多力氣,那么您可以獲取tekton-kickstarter存儲庫并運行make,一分鐘之內(nèi)即可完成所有上述準(zhǔn)備。部署完成后,我們已經(jīng)完成所有(非常)基本的工作,因此,讓我們在CLI中四處看看,看看我們實際使用您所命令的內(nèi)容進行了部署...

探索自定義資源如果按照上述步驟進行操作(或僅使用了啟動存儲庫中的make target),那么您的集群中現(xiàn)在應(yīng)該有很多新資源。Tekton的所有組件將位于tekton-pipelines名稱空間中,并應(yīng)包括以下內(nèi)容:

  1. ~ $ kubectl get deploy,service,ingress,hpa -n tekton-pipelines 
  2. NAME                                                READY   UP-TO-DATE   AVAILABLE   AGE 
  3. deployment.apps/tekton-dashboard                    1/1     1            1           2m24s 
  4. deployment.apps/tekton-pipelines-controller         1/1     1            1           6m57s 
  5. deployment.apps/tekton-pipelines-webhook            1/1     1            1           6m57s 
  6. deployment.apps/tekton-triggers-controller          1/1     1            1           6m56s 
  7. deployment.apps/tekton-triggers-core-interceptors   1/1     1            1           6m56s 
  8. deployment.apps/tekton-triggers-webhook             1/1     1            1           6m56s 
  9.   
  10. NAME                                        TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)                              AGE 
  11. service/tekton-dashboard                    ClusterIP   10.108.143.42    <none>        9097/TCP                             2m24s 
  12. service/tekton-pipelines-controller         ClusterIP   10.98.218.218    <none>        9090/TCP,8080/TCP                    6m57s 
  13. service/tekton-pipelines-webhook            ClusterIP   10.101.192.94    <none>        9090/TCP,8008/TCP,443/TCP,8080/TCP   6m57s 
  14. service/tekton-triggers-controller          ClusterIP   10.98.189.205    <none>        9090/TCP                             6m56s 
  15. service/tekton-triggers-core-interceptors   ClusterIP   10.110.47.172    <none>        80/TCP                               6m56s 
  16. service/tekton-triggers-webhook             ClusterIP   10.111.209.100   <none>        443/TCP                              6m56s 
  17.   
  18. NAME                                  CLASS    HOSTS   ADDRESS     PORTS   AGE 
  19. ingress.networking.k8s.io/dashboard   <none>   *       localhost   80      2m24s 
  20.   
  21. NAME                                      REFERENCE                            TARGETS               MINPODS  MAXPODS  REPLICAS  AGE 
  22. hpa.autoscaling/tekton-pipelines-webhook  Deployment/tekton-pipelines-webhook  <unknown>/100%  1        5        1         6m57s 

這些包括所有部署,服務(wù)以及自動擴展程序,在請求數(shù)量更多的情況下,它們可以幫助提高可用性。 如果需要HA,那么您也可以查看docs部分,其中介紹了如何配置Tekton for HA。

除了上面顯示的資源之外,您還可以在默認(rèn)名稱空間中找到事件偵聽器及其資源。 它們可以與核心組件共享名稱空間,但是像這樣拆分它們可以使您根據(jù)使用的應(yīng)用程序/項目來保持管道及其webhooks的劃分:

  1. kubectl get deploy,service,ingress,hpa -n default 
  2. NAME                                     READY   UP-TO-DATE   AVAILABLE   AGE 
  3. deployment.apps/el-cron-listener         1/1     1            1           8m40s 
  4. deployment.apps/el-http-event-listener   1/1     1            1           8m40s 
  5.   
  6. NAME                             TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)    AGE 
  7. service/el-cron-listener         ClusterIP   10.100.238.60   <none>        8080/TCP   8m40s 
  8. service/el-http-event-listener   ClusterIP   10.98.88.164    <none>        8080/TCP   8m40s 
  9.   
  10. NAME                                      CLASS    HOSTS   ADDRESS     PORTS   AGE 
  11. ingress.networking.k8s.io/http-listener   <none>   *       localhost   80      8m40s 

Tekton的安裝還帶來了幾個CRD,這些CRD用于管理所有任務(wù),管道和觸發(fā)器:

  1. kubectl get crd | grep tekton 
  2. clustertasks.tekton.dev                      2021-02-27T20:23:35Z 
  3. clustertriggerbindings.triggers.tekton.dev   2021-02-27T20:23:36Z 
  4. conditions.tekton.dev                        2021-02-27T20:23:35Z 
  5. eventlisteners.triggers.tekton.dev           2021-02-27T20:23:36Z 
  6. extensions.dashboard.tekton.dev              2021-02-27T20:28:08Z 
  7. pipelineresources.tekton.dev                 2021-02-27T20:23:35Z 
  8. pipelineruns.tekton.dev                      2021-02-27T20:23:35Z 
  9. pipelines.tekton.dev                         2021-02-27T20:23:35Z 
  10. runs.tekton.dev                              2021-02-27T20:23:35Z 
  11. taskruns.tekton.dev                          2021-02-27T20:23:35Z 
  12. tasks.tekton.dev                             2021-02-27T20:23:35Z 
  13. triggerbindings.triggers.tekton.dev          2021-02-27T20:23:36Z 
  14. triggers.triggers.tekton.dev                 2021-02-27T20:23:36Z 
  15. triggertemplates.triggers.tekton.dev         2021-02-27T20:23:36Z 

您可以使用這些CRD使用kubectl get或kubectl describe列出和檢查任務(wù)和管道。對于Kubernetes的每個用戶,與資源進行交互的自然方法是使用kubectl,但是Tekton也擁有自己的CLI工具tkn。 您可以從此發(fā)行頁面下載它。此CLI允許您與Tekton資源進行交互,而不必處理CRD。 例如,您可以列出或檢查管道:

  1. ~ $ tkn pipeline list 
  2. NAME              AGE            LAST RUN    STARTED          DURATION    STATUS 
  3. database-backup   12 hours ago   job-qxcwc   39 minutes ago   8 minutes   Failed 
  4. deploy            12 hours ago   ---         ---              ---         --- 
  5.   
  6. ~ $ tkn pipeline describe deploy 
  7. # ... Long and verbose output 

除了檢查資源,你還可以使用它來啟動taskrun或PipelineRuns,然后讀取日志,而不需要查找單個的pod:

  1. ~ $ tkn task start send-to-webhook-slack 
  2. ? Value for param `webhook-secret` of type `string`? slack-webhook 
  3. ? Value for param `message` of type `string`? Hello There! 
  4. TaskRun started: send-to-webhook-slack-run-d5sxv 
  5.   
  6. In order to track the TaskRun progress run: 
  7. tkn taskrun logs send-to-webhook-slack-run-d5sxv -f -n default 
  8.   
  9. ~ $ tkn taskrun logs send-to-webhook-slack-run-d5sxv -f -n default 
  10. [post]   % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current 
  11. [post]                                  Dload  Upload   Total   Spent    Left  Speed 
  12. 100    23    0     0  100    23      0    111 --:--:-- --:--:-- --:--:--   111 

正如您在上面看到的,如果您一開始沒有指定參數(shù),它甚至?xí)崾灸斎雲(yún)?shù)!

不過,有一件事讓我非常惱火,那就是與kubectl相比,這個CLI工具使用的參數(shù)順序相反。kubectl的順序是kubectl ,而tkn是tkn ,這是一個非常方便的工具。

*本文翻譯自https://martinheinz.dev/blog/45

 

責(zé)任編輯:武曉燕 來源: 新鈦云服
相關(guān)推薦

2021-06-09 05:44:45

云原生 CICD

2021-11-26 08:14:05

云原生CICD

2023-05-04 16:03:50

KubernetesCI/CD集成

2022-02-22 09:00:00

軟件開發(fā)CI/CD 管道工具

2021-07-27 08:01:22

CICD平臺

2020-12-15 16:13:21

DevSecOpsCICD

2020-10-21 14:10:28

工具測試開發(fā)

2021-07-09 06:40:59

TektonArgo CD GitOps

2022-04-25 08:07:45

TektonArgocdCI和CD

2023-04-02 21:49:10

開源Tekton

2021-01-11 09:17:49

GitLabCIMonorepoDocker

2024-11-06 14:40:18

2022-04-14 07:51:39

TektonTaskRun

2018-09-07 11:12:19

CICD工具

2023-01-30 15:55:08

2023-04-18 08:17:11

GitLab持續(xù)集成

2021-07-02 16:30:01

CICDDevOps

2022-03-26 16:53:17

阻抗開發(fā)環(huán)境部署

2023-02-19 15:28:39

CI/CD 管道集成開發(fā)

2021-05-18 08:00:00

Kubernetes容器進程
點贊
收藏

51CTO技術(shù)棧公眾號

美女网站久久| yellow91字幕网在线| 亚洲人体大胆视频| 日韩影院精彩在线| 一本一本久久a久久精品综合小说| 91精品91久久久中77777老牛| 偷拍25位美女撒尿视频在线观看| 日韩高清国产一区在线| 不用播放器成人网| 亚洲一级中文字幕| 国产亚洲高清一区| f2c人成在线观看免费视频| 亚洲丝袜美腿一区| 欧美精品丝袜久久久中文字幕| 视频一区二区视频| 亚洲 另类 春色 国产| 看电视剧不卡顿的网站| 日韩动漫一区| 国产一区二区视频在线| 欧美精品18videos性欧| 欧美黄色激情视频| 日韩欧美中文在线观看| 91国偷自产一区二区开放时间| 男人天堂成人网| 精品国产一区二区三区久久久狼| 亚洲天堂2018av| 1024在线看片你懂得| 国产精品欧美极品| 蜜桃导航-精品导航| 国产黄a三级三级看三级| 久久久久.com| 91精品国产九九九久久久亚洲| 欧美特黄一级片| 国际精品欧美精品| 日韩乱码在线视频| 欧美久久久久久久久久久| 欧美激情不卡| 欧美亚洲尤物久久| 成年网站在线免费观看| 操人在线观看| 亚洲一级二级在线| 青青在线视频免费观看| а√中文在线8| 亚洲视频一区二区在线观看| 精品久久久久av影院| 欧美成人精品欧美一级乱| 国模私拍视频在线播放| 亚洲欧美一区二区三区国产精品 | 中文字幕永久在线| 国产视频亚洲| 欧洲成人午夜免费大片| 永久免费看片在线播放| 黄色欧美日韩| 欧美精品久久久久久久| 精品少妇久久久| 黄色av一区| 欧美激情国产精品| 国产精品a成v人在线播放| 亚洲视频福利| 午夜精品久久久久久99热| 国产午夜福利精品| 中文日韩欧美| 国产成人精品网站| 中文字幕一区二区三区四区免费看| 水野朝阳av一区二区三区| 国产91免费看片| 中文字幕 自拍偷拍| 久久精品国产精品亚洲精品| 成人免费淫片视频软件| 精品人妻无码一区二区三区蜜桃一| 国产一区二区三区免费观看| 成人在线免费网站| 香蕉视频黄在线观看| 26uuu成人网一区二区三区| 精品欧美一区二区精品久久| 嫩草研究院在线观看| 国产女人aaa级久久久级| 亚洲一区三区视频在线观看| av在线播放国产| 亚洲一区在线观看免费观看电影高清| 国产九九九九九| 欧美7777| 欧美一二三四在线| 一级国产黄色片| 色97色成人| 色综合久综合久久综合久鬼88| 日本少妇毛茸茸高潮| 手机精品视频在线观看| 91色在线观看| 亚洲欧美丝袜中文综合| 国产精品久久久久久久久久久免费看 | 欧美日韩一级黄| 中文字幕在线观看视频www| 欧美影院天天5g天天爽| 日韩在线视频免费观看高清中文| 久久久久久福利| 久久在线精品| 99re6热在线精品视频播放速度| 天天射天天色天天干| 国产精品免费免费| 丁香六月激情婷婷| 国产成人a视频高清在线观看| 精品国产三级电影在线观看| 精品一区二区6| 亚洲少妇在线| 亚洲www视频| 黄色在线观看网| 亚洲综合色婷婷| www.色就是色| 国内精品麻豆美女在线播放视频 | 中文字幕一区二区三区乱码| 九九精品调教| 777奇米成人网| 三级网站在线免费观看| 黄色另类av| 91久久久在线| av资源在线观看免费高清| 亚洲一级二级在线| 欧美在线a视频| 日本黄色精品| 青青久久aⅴ北条麻妃| 亚洲经典一区二区三区| 国产精品色哟哟网站| 久久久久久久激情| 日韩精品免费一区二区夜夜嗨 | 亚洲美女尤物影院| 精品国精品国产| 我要看黄色一级片| 日本欧美加勒比视频| 久久人人九九| а√天堂中文在线资源8| 日韩欧美国产wwwww| 欧美性生交大片| 毛片一区二区三区| 日韩精品一区二区三区四区五区 | 欧美午夜影院| 亚洲v日韩v综合v精品v| 少妇高潮惨叫久久久久| 伊人久久大香线蕉综合热线| 亚洲精品免费网站| 免费大片黄在线| 欧美日韩国产小视频在线观看| www在线观看免费视频| 亚洲一区久久| 免费在线成人av| 亚洲欧美电影| 亚洲精品视频免费在线观看| 国产成人一区二区三区影院在线| 国产.欧美.日韩| 国产 欧美 日本| 亚洲1区在线| 久久久久久久久久国产| 韩国av永久免费| 亚洲 欧美综合在线网络| 天天躁日日躁狠狠躁免费麻豆| 欧美日韩亚洲一区二区三区在线| 不卡视频一区| 麻豆mv在线观看| 日韩麻豆第一页| 一级片在线免费播放| 亚洲国产精华液网站w | 日本h片久久| www.日韩系列| 亚洲av无码片一区二区三区| 亚洲一二三四在线| 一二三不卡视频| 日韩二区在线观看| 一区二区免费电影| 天堂久久av| 国产91ⅴ在线精品免费观看| 国产在线高清| 91精品国产综合久久小美女| 妺妺窝人体色www在线下载| 成人激情校园春色| 欧美日韩一区二区在线免费观看 | 91欧美一区二区| 日韩免费高清在线| 香蕉av一区二区| 国产日韩一区二区三区| 日本精品在线中文字幕| 欧美成人国产va精品日本一级| 色窝窝无码一区二区三区成人网站| 色综合久久综合网97色综合| 国精品人伦一区二区三区蜜桃| 国产69精品久久99不卡| 色诱视频在线观看| 亚洲一区二区| 久热国产精品视频一区二区三区| 四虎国产精品永久在线国在线| 久久欧美在线电影| 国产福利片在线| 欧美精品一区二区在线播放| 9i精品福利一区二区三区| 亚洲精品综合在线| 国产精品扒开腿做爽爽| 国产麻豆一精品一av一免费| 国产婷婷一区二区三区| 国产精品99一区二区三区| 久久久人人爽| 麻豆精品在线| 国产精品久久久久久影视| 俄罗斯一级**毛片在线播放| 一本色道久久88综合亚洲精品ⅰ| 亚洲精品网站在线| 欧美日韩国产一二三| 久久99久久久久久久噜噜| 69xxx免费| 高清在线不卡av| 成人午夜激情av| 影音先锋久久| 最新欧美日韩亚洲| 一区二区导航| julia一区二区中文久久94| 呦呦视频在线观看| 先锋影音久久久| 日韩精品免费一区| 成人三级视频| 欧美国产一区二区在线| 亚洲伊人影院| 91精品在线观| 天天操天天干天天摸| 亚洲人吸女人奶水| www在线观看免费视频| 成人av在线网| 久久无码专区国产精品s| 国模一区二区三区白浆| 超碰在线97免费| 免费精品视频| 九一国产精品视频| 亚洲精品网站在线| 欧美日韩一区二区三区在线| 日韩精品1区2区| 亚洲va欧美va人人爽| 青娱乐国产在线| 亚洲日本青草视频在线怡红院| 国产黄色录像视频| 日本一区二区三区四区| x88av在线| 国产日韩欧美一区二区三区乱码 | 91av在线视频观看| yellow字幕网在线| 97在线观看视频国产| 福利小视频在线| 97欧美精品一区二区三区| 1234区中文字幕在线观看| 午夜精品久久久久久久男人的天堂| 青草在线视频| 孩xxxx性bbbb欧美| 小h片在线观看| 热草久综合在线| 成人开心激情| 国产精品专区h在线观看| 成人1区2区| 成人国产精品av| 欧美视频三区| 国产伦精品一区二区三区视频孕妇| 99re8这里有精品热视频免费| 国产精品久久久一区二区三区| 国内自拍欧美| 欧美性bbwbbwbbwhd| 精品亚洲成人| 做爰高潮hd色即是空| 欧美精品激情| 国产免费黄色av| 日本在线不卡视频一二三区| 永久免费的av网站| 高清成人在线观看| 国产www视频| 中文字幕一区在线观看视频| 欧美美女性生活视频| 成人欧美一区二区三区小说| 国产少妇在线观看| 亚洲一区二区黄色| 一级做a爰片久久毛片| 在线观看精品一区| 国产精品久久久久久久久毛片| 日韩精品一区二区三区中文不卡 | 黄色一区二区视频| 日韩一级精品视频在线观看| 好吊色一区二区| 国产亚洲免费的视频看| 国产在线观看免费麻豆| 国产69精品99久久久久久宅男| 色婷婷综合久久久中字幕精品久久| 国产日韩欧美电影在线观看| 亚洲国产一区二区三区网站| 蜜桃999成人看片在线观看| 9999国产精品| 无码中文字幕色专区| 麻豆成人91精品二区三区| 91精品国产高清91久久久久久 | 日本不卡视频在线| 真实乱偷全部视频| 国产婷婷色一区二区三区四区| 青娱乐在线视频免费观看| 色噜噜久久综合| 亚洲国产成人精品一区二区三区| 国产一区二区三区高清在线观看| 女人黄色免费在线观看| 国产精品久久久久久久av电影| 久久综合给合| 亚洲欧洲精品一区二区三区波多野1战4| 亚洲香蕉网站| 午夜国产福利在线观看| 久久综合久久综合久久| 九九九免费视频| 欧美亚洲国产一卡| 四虎电影院在线观看| 亚洲精品一区av| 91精品国产综合久久香蕉922| 激情小说一区| 超碰97免费观看| 首页欧美精品中文字幕| 国产xxxx视频| 亚洲欧美日韩国产成人精品影院| jizz国产在线| 精品亚洲永久免费精品 | 久久精品夜夜夜夜夜久久| 周于希免费高清在线观看| 97久久人人超碰caoprom欧美| 99久久99视频只有精品| 91av在线免费播放| 99精品黄色片免费大全| 久久免费小视频| 欧美一激情一区二区三区| 日本美女在线中文版| 国产精品旅馆在线| 国产剧情在线观看一区| 茄子视频成人免费观看| 成人av免费观看| 久久久久无码精品国产| 欧美一级欧美一级在线播放| 免费**毛片在线| 国产视频福利一区| 日韩av自拍| 成 人 黄 色 小说网站 s色| 国产精品欧美一级免费| 麻豆传媒网站在线观看| 亚洲激情77| 国产欧美日韩网站| 成人美女视频在线观看18| 国产探花在线播放| 欧美一级高清片在线观看| 成人免费网站在线观看视频| 国产日韩欧美综合| 日韩精品四区| 色一情一区二区三区| 国产精品日韩成人| 一级片一区二区三区| yellow中文字幕久久| 高清一区二区中文字幕| 老司机午夜网站| 国产另类ts人妖一区二区| 欧美久久久久久久久久久久| 精品捆绑美女sm三区 | 亚洲视频免费在线| 国产精品伊人久久| 久久99久久99精品中文字幕| 国产精东传媒成人av电影| 免费黄色日本网站| 久久久久亚洲综合| 在线观看毛片av| 操日韩av在线电影| 亚洲欧美日本国产| 日本www在线视频| 国产亚洲欧美色| 中文字幕精品在线观看| 久久久精品久久久| 超碰成人在线免费| 成年人视频在线免费| 国产精品天堂蜜av在线播放 | 川上优的av在线一区二区| 国产欧美日韩综合精品| 91精品推荐| 国产伦精品一区二区三区88av| 日韩欧美国产高清91| 91在线看片| 国产v亚洲v天堂无码| 午夜宅男久久久| 色偷偷www8888| 亚洲精品一线二线三线| 日韩一区二区三区免费| 丰满女人性猛交| 97se亚洲国产综合自在线不卡| 久久久999久久久| 欧美激情精品久久久久久变态| 国产欧美一区二区精品久久久| 一级黄色片国产| 精品久久久中文| 国产原厂视频在线观看| 久久99国产精品| 久久99国产精品免费网站| 日韩免费不卡视频| 最近2019年好看中文字幕视频| 老牛影视av一区二区在线观看| 欧美大尺度做爰床戏| 亚洲成人av福利| 成人影院在线观看| 日本一区二区三区精品视频| 懂色av一区二区三区免费观看|