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

云原生CI/CD框架Tekton國內部署方式

開源 云原生
Tekton 是一款功能非常強大而靈活的 CI/CD 開源的云原生框架。致力于提供全功能、標準化的云原生 CI/CD 解決方案。本文主要是通過流水線自動化的將tekton鏡像同步到騰訊云倉庫,并部署tekton.

[[436836]]

Tekton 是一款功能非常強大而靈活的 CI/CD 開源的云原生框架。致力于提供全功能、標準化的云原生 CI/CD 解決方案。【本文主要是通過流水線自動化的將tekton鏡像同步到騰訊云倉庫,并部署tekton】

應用鏡像

阿里云鏡像倉庫居然有限制...這次轉到騰訊云鏡像倉庫了;ccr.ccs.tencentyun.com/tektons/dashboard

Pipeline

借助GitHub Actions:

  1. 同步鏡像并生成鏡像映射文件(json):
  2. 收集鏡像映射文件為制品;
  1.  This is a basic workflow to help you get started with Actions 
  2.  
  3. name: Get Tekton Images 
  4. env: 
  5.   VERSION: v0.29.0 
  6.  
  7. on
  8.   push: 
  9.     paths: 
  10.       - '.github/workflows/tekton.yaml' 
  11.       - 'tekton/**' 
  12.  
  13. jobs: 
  14.   build: 
  15.     runs-on: ubuntu-18.04 
  16.     steps: 
  17.     - uses: actions/checkout@v2 
  18.     - name: build 
  19.       run: | 
  20.        
  21.         curl https://storage.googleapis.com/tekton-releases/pipeline/previous/${{ env.VERSION }}/release.yaml -o release.yaml 
  22.         grep  -v "#" release.yaml | grep -v "^$"  > release1.yaml  ; sed -i 's/\-\-\-/###/g' release1.yaml 
  23.         python3  tekton/get_tekton_images.py ${{ secrets.DOCKER_USER}} ${{ secrets.DOCKER_PASSWD}} 
  24.     - uses: actions/upload-artifact@v2 
  25.       with:  
  26.         name: ${{ env.VERSION }}-tekton-images 
  27.         path: tekton_images.json 

 

部署文件解析

1.下載release部署yaml;

2.解析Deployments對象中的images;

a.tekton-pipelines-controller

b.tekton-pipelines-webhook

c.tekton-dashboard(最新tag)

  1. gcr.io/tekton-releases/github.com/tektoncd/pipeline/cmd/controller:v0.29.0@sha256:72f79471f06d096cc53e51385017c9f0f7edbc87379bf415f99d4bd11cf7bc2b 
  2. gcr.io/tekton-releases/github.com/tektoncd/pipeline/cmd/kubeconfigwriter:v0.29.0@sha256:6d058f2203b9ab66f538cb586c7dc3b7cc31ae958a4135dd99e51799f24b06c9 
  3. gcr.io/tekton-releases/github.com/tektoncd/pipeline/cmd/git-init:v0.29.0@sha256:c0b0ed1cd81090ce8eecf60b936e9345089d9dfdb6ebdd2fd7b4a0341ef4f2b9 
  4. gcr.io/tekton-releases/github.com/tektoncd/pipeline/cmd/entrypoint:v0.29.0@sha256:66958b78766741c25e31954f47bc9fd53eaa28263506b262bf2cc6df04f18561 
  5. gcr.io/tekton-releases/github.com/tektoncd/pipeline/cmd/nop:v0.29.0@sha256:6a037d5ba27d9c6be32a9038bfe676fb67d2e4145b4f53e9c61fb3e69f06e816 
  6. gcr.io/tekton-releases/github.com/tektoncd/pipeline/cmd/imagedigestexporter:v0.29.0@sha256:e38dd0d32253fce5aaf1e501c0bc71facc3720564b7e97055921cc5390d612e0 
  7. gcr.io/tekton-releases/github.com/tektoncd/pipeline/cmd/pullrequest-init:v0.29.0@sha256:d28202fb8b33a1d4c05f261ef8dcbcdcf3b469887d4dad256ce91f73c917420e 
  8. gcr.io/google.com/cloudsdktool/cloud-sdk@sha256:27b2c22bf259d9bc1a291e99c63791ba0c27a04d2db0a43241ba0f1f20f4067f 
  9. gcr.io/distroless/base@sha256:aa4fd987555ea10e1a4ec8765da8158b5ffdfef1e72da512c7ede509bc9966c4 
  10. mcr.microsoft.com/powershell:nanoserver@sha256:b6d5ff841b78bdf2dfed7550000fd4f3437385b8fa686ec0f010be24777654d6 
  11. gcr.io/tekton-releases/github.com/tektoncd/pipeline/cmd/webhook:v0.29.0@sha256:46d5b90a7f4e9996351ad893a26bcbd27216676ad4d5316088ce351fb2c2c3dd 

用Python編寫一個數據解析腳本:

  1. import yaml 
  2. import json 
  3. import sys 
  4. import os 
  5.  
  6. class Tekton : 
  7.     def __init__(self, file_name, registry_user, registry_passwd): 
  8.         self.yaml_file = file_name 
  9.         self.arg_imgs = ["gcr.io/tekton-releases/github.com/tektoncd/dashboard/cmd/dashboard@sha256:95f71a2568ced67ec370b5360f88bec3280601908cac9e62dfbb801114480437"
  10.         self.split_str = "###" 
  11.         self.deployments = ["tekton-pipelines-controller""tekton-pipelines-webhook"
  12.         self.kind_type = "Deployment" 
  13.         self.target_registry = "ccr.ccs.tencentyun.com/tektons/" 
  14.         self.repos = [  "controller""kubeconfigwriter""git-init"
  15.                         "entrypoint","nop","imagedigestexporter",  
  16.                         "pullrequest-init""cloud-sdk""base""powershell""webhook"
  17.         self.result = [] 
  18.         self.registry_user = registry_user 
  19.         self.registry_passwd = registry_passwd 
  20.  
  21.     def load_yaml(self, data): 
  22.         content = yaml.load(data) 
  23.         return content 
  24.  
  25.     def load_json(self, data): 
  26.         content = json.loads(data) 
  27.         return content 
  28.  
  29.     def get_images(self): 
  30.         f = open(self.yaml_file, 'r').read() 
  31.         for i in f.split("###")[:-1]: 
  32.             try: 
  33.                 content = self.load_yaml(i.replace("###""")) 
  34.                 if content["kind"] == self.kind_type: 
  35.                     deploy_name = content["metadata"]["name"
  36.                     # 獲取image 
  37.                     if deploy_name in self.deployments: 
  38.                         img = content["spec"]["template"]["spec"]["containers"][0]["image"
  39.                         self.arg_imgs.append(img) 
  40.                     # 獲取參數中的images 
  41.                     if deploy_name == "tekton-pipelines-controller"
  42.                         arg_img =  content["spec"]["template"]["spec"]["containers"][0]["args"
  43.                         for a in arg_img: 
  44.                             if not a.startswith("-"): 
  45.                                 self.arg_imgs.append(a) 
  46.             except Exception as e: 
  47.                 print(e) 
  48.         return self.arg_imgs 
  49.  
  50.     def save_json_file(self, data, file_name): 
  51.         for i in self.arg_imgs: 
  52.             self.result.append({ 
  53.                 "s_image": i, 
  54.                 "t_image": self.target_registry + i.split("/")[-1].split("@")[0] 
  55.                 }) 
  56.         newdata = json.dumps(self.result, indent=4) 
  57.         a=open(file_name, 'w'
  58.         a.write(newdata) 
  59.         a.close() 
  60.  
  61.     def sync_images(self): 
  62.         f = open("tekton_images.json"'r').read() 
  63.         content = self.load_json(f) 
  64.         docker_login_cmd = "docker login -u {0} -p {1} {2}".format( 
  65.             self.registry_user, 
  66.             self.registry_passwd, 
  67.             self.target_registry.split("/")[0]) 
  68.         os.system(docker_login_cmd) 
  69.         for item in content: 
  70.             print("[GetImages] {}".format(item)) 
  71.             docker_pull_cmd = "docker pull {0}".format(item["s_image"]) 
  72.             docker_tag_cmd = "docker tag {0} {1}".format(item["s_image"], item["t_image"]) 
  73.             docker_push_cmd = "docker push {0}".format(item["t_image"]) 
  74.             os.system(docker_pull_cmd + "&&" + docker_tag_cmd + "&&" + docker_push_cmd ) 
  75.             print("[GetImagesDone] {}".format(item)) 
  76.          
  77. if __name__ == '__main__'
  78.     tekton = Tekton("release1.yaml", sys.argv[1], sys.argv[2]) 
  79.     images = tekton.get_images() 
  80.     tekton.save_json_file(images, "tekton_images.json"
  81.     tekton.sync_images() 

鏡像映射文件

s_image 原始鏡像名稱, t_image 目標鏡像名稱; 這里使用騰訊云的鏡像倉庫;

  1.     { 
  2.         "s_image""gcr.io/tekton-releases/github.com/tektoncd/pipeline/cmd/controller:v0.29.0@sha256:72f79471f06d096cc53e51385017c9f0f7edbc87379bf415f99d4bd11cf7bc2b"
  3.         "t_image""ccr.ccs.tencentyun.com/tektons/controller:v0.29.0" 
  4.     }, 
  5.     { 
  6.         "s_image""gcr.io/tekton-releases/github.com/tektoncd/pipeline/cmd/kubeconfigwriter:v0.29.0@sha256:6d058f2203b9ab66f538cb586c7dc3b7cc31ae958a4135dd99e51799f24b06c9"
  7.         "t_image""ccr.ccs.tencentyun.com/tektons/kubeconfigwriter:v0.29.0" 
  8.     }, 
  9.     { 
  10.         "s_image""gcr.io/tekton-releases/github.com/tektoncd/pipeline/cmd/git-init:v0.29.0@sha256:c0b0ed1cd81090ce8eecf60b936e9345089d9dfdb6ebdd2fd7b4a0341ef4f2b9"
  11.         "t_image""ccr.ccs.tencentyun.com/tektons/git-init:v0.29.0" 
  12.     }, 
  13.     { 
  14.         "s_image""gcr.io/tekton-releases/github.com/tektoncd/pipeline/cmd/entrypoint:v0.29.0@sha256:66958b78766741c25e31954f47bc9fd53eaa28263506b262bf2cc6df04f18561"
  15.         "t_image""ccr.ccs.tencentyun.com/tektons/entrypoint:v0.29.0" 
  16.     }, 
  17.     { 
  18.         "s_image""gcr.io/tekton-releases/github.com/tektoncd/pipeline/cmd/nop:v0.29.0@sha256:6a037d5ba27d9c6be32a9038bfe676fb67d2e4145b4f53e9c61fb3e69f06e816"
  19.         "t_image""ccr.ccs.tencentyun.com/tektons/nop:v0.29.0" 
  20.     }, 
  21.     { 
  22.         "s_image""gcr.io/tekton-releases/github.com/tektoncd/pipeline/cmd/imagedigestexporter:v0.29.0@sha256:e38dd0d32253fce5aaf1e501c0bc71facc3720564b7e97055921cc5390d612e0"
  23.         "t_image""ccr.ccs.tencentyun.com/tektons/imagedigestexporter:v0.29.0" 
  24.     }, 
  25.     { 
  26.         "s_image""gcr.io/tekton-releases/github.com/tektoncd/pipeline/cmd/pullrequest-init:v0.29.0@sha256:d28202fb8b33a1d4c05f261ef8dcbcdcf3b469887d4dad256ce91f73c917420e"
  27.         "t_image""ccr.ccs.tencentyun.com/tektons/pullrequest-init:v0.29.0" 
  28.     }, 
  29.     { 
  30.         "s_image""gcr.io/google.com/cloudsdktool/cloud-sdk@sha256:27b2c22bf259d9bc1a291e99c63791ba0c27a04d2db0a43241ba0f1f20f4067f"
  31.         "t_image""ccr.ccs.tencentyun.com/tektons/cloud-sdk" 
  32.     }, 
  33.     { 
  34.         "s_image""gcr.io/distroless/base@sha256:aa4fd987555ea10e1a4ec8765da8158b5ffdfef1e72da512c7ede509bc9966c4"
  35.         "t_image""ccr.ccs.tencentyun.com/tektons/base" 
  36.     }, 
  37.     { 
  38.         "s_image""mcr.microsoft.com/powershell:nanoserver@sha256:b6d5ff841b78bdf2dfed7550000fd4f3437385b8fa686ec0f010be24777654d6"
  39.         "t_image""ccr.ccs.tencentyun.com/tektons/powershell:nanoserver" 
  40.     }, 
  41.     { 
  42.         "s_image""gcr.io/tekton-releases/github.com/tektoncd/pipeline/cmd/webhook:v0.29.0@sha256:46d5b90a7f4e9996351ad893a26bcbd27216676ad4d5316088ce351fb2c2c3dd"
  43.         "t_image""ccr.ccs.tencentyun.com/tektons/webhook:v0.29.0" 
  44.     }, 
  45.     { 
  46.     "s_image""gcr.io/tekton-releases/github.com/tektoncd/dashboard/cmd/dashboard@sha256:95f71a2568ced67ec370b5360f88bec3280601908cac9e62dfbb801114480437"
  47.     "t_image""ccr.ccs.tencentyun.com/tektons/dashboard" 
  48.      
  49.     } 

鏡像映射文件可以在GitHubActions頁面下載:

下載鏡像腳本

解析上面生成的鏡像文件,docker pull下載對應的鏡像到本地;

  1. import json  
  2. import os 
  3.  
  4. class Tekton: 
  5.     def __init__(self): 
  6.         self.json_file = "tekton_images.json" 
  7.         self.target_registry = "ccr.ccs.tencentyun.com/tektons/" 
  8.         # self.registry_user = registry_user 
  9.         # self.registry_passwd = registry_passwd 
  10.  
  11.     def load_json(self, data): 
  12.         content = json.loads(data) 
  13.         return content 
  14.  
  15.     def down_images(self): 
  16.         f = open(self.json_file, 'r').read() 
  17.         content = self.load_json(f) 
  18.  
  19.         # docker_login_cmd = "docker login -u {0} -p {1} {2}".format( 
  20.         #             self.registry_user, 
  21.         #             self.registry_passwd, 
  22.         #             self.target_registry.split("/")[0]) 
  23.         for item in content: 
  24.             print("[GetImages] {}".format(item["t_image"])) 
  25.             docker_pull_cmd = "docker pull {0}".format(item["t_image"]) 
  26.             # docker_tag_cmd = "docker tag {0} {1}".format(item["t_image"], item["s_image"].split("@")[0]) 
  27.             os.system(docker_pull_cmd + "&&" + docker_tag_cmd ) 
  28.             print("[GetImagesDone] {}".format(item)) 
  29.  
  30. if __name__ == '__main__'
  31.     t = Tekton().down_images() 

部署Tekton

替換部署文件中的鏡像:

  1. 手動更新release.yaml中的鏡像;然后kubectl apply release.yaml 部署(后續有時間再優化腳本,實現自動更新release.yaml)
  2. 手動更新tekton-dashboard-release.yaml中的鏡像;然后部署;
  1. [root@master ~]# kubectl -n tekton-pipelines get pod 
  2. NAME                                          READY   STATUS    RESTARTS   AGE 
  3. tekton-dashboard-5c4b89d9-2z8g7               1/1     Running   0          21m 
  4. tekton-pipelines-controller-b96f647bb-gff69   1/1     Running   0          13h 
  5. tekton-pipelines-webhook-76bc9c97b9-cd2m4     1/1     Running   0          13h 

編寫一個Ingress來暴露tekton dashboard:

  1. apiVersion: extensions/v1beta1 
  2. kind: Ingress 
  3. metadata: 
  4.   name: tekton-service 
  5.   namespace: tekton-pipelines 
  6.   annotations: 
  7.     kubernetes.io/ingress.class: nginx 
  8.     nginx.ingress.kubernetes.io/proxy-body-size: 256m 
  9. spec: 
  10.   rules: 
  11.   - host: tekton.idevops.site 
  12.     http: 
  13.      paths: 
  14.      - path: / 
  15.        backend: 
  16.           serviceName: tekton-dashboard 
  17.           servicePort: 9097 

訪問UI頁面:

編寫Pipeline

  1. apiVersion: tekton.dev/v1beta1 
  2. kind: Task 
  3. metadata: 
  4.   name: tektoncd-task 
  5. spec: 
  6.   resources: 
  7.     inputs: 
  8.     - name: repo 
  9.       type: git 
  10.   steps: 
  11.   - name: run-test 
  12.     image: maven:3-jdk-8 
  13.     workingDir: /workspace/repo 
  14.     command: ["mvn"
  15.     args: ["clean""package"
  16. --- 
  17. apiVersion: tekton.dev/v1alpha1 
  18. kind: PipelineResource 
  19. metadata: 
  20.   name: tektoncd-resource 
  21. spec: 
  22.   type: git 
  23.   params: 
  24.     - name: url 
  25.       value: http://192.168.1.200/devops/devops-maven-service.git 
  26.     - name: revision 
  27.       value: master 
  28. --- 
  29. apiVersion: tekton.dev/v1beta1 
  30. kind: TaskRun 
  31. metadata: 
  32.   name: cdpipeline 
  33. spec: 
  34.   taskRef: 
  35.     name: tektoncd-task 
  36.   resources: 
  37.     inputs: 
  38.     - name: repo 
  39.       resourceRef: 
  40.         name: tektoncd-resource 

 

責任編輯:姜華 來源: DevOps云學堂
相關推薦

2021-06-09 05:44:45

云原生 CICD

2021-05-13 18:23:53

Tekton云原生Kubernetes

2023-05-04 16:03:50

KubernetesCI/CD集成

2020-10-21 14:10:28

工具測試開發

2021-07-27 08:01:22

CICD平臺

2021-07-09 06:40:59

TektonArgo CD GitOps

2022-04-25 08:07:45

TektonArgocdCI和CD

2022-02-22 09:00:00

軟件開發CI/CD 管道工具

2020-11-19 10:42:36

云遷移云平臺云計算

2023-04-02 21:49:10

開源Tekton

2023-05-09 16:20:54

藍綠部署CI/CD 管道自動化部署

2021-07-02 16:30:01

CICDDevOps

2024-11-06 14:40:18

2020-12-15 16:13:21

DevSecOpsCICD

2022-07-26 06:50:02

云原生JavaMicronaut

2019-08-12 13:47:41

GitHub代碼開發者

2018-09-07 11:12:19

CICD工具

2018-09-20 21:09:06

云原生CNBPS靈雀云

2023-01-30 15:55:08

2022-07-06 10:43:08

CI/CD自動化
點贊
收藏

51CTO技術棧公眾號

91免费国产网站| 国产一区二区三区精品久久久| gogogo免费高清日本写真| 国产色综合视频| 亚洲国产日韩在线| 精品视频久久久久久| 一区二区三区免费播放| 丝袜美腿av在线| 久久精品在这里| 成人妇女淫片aaaa视频| 日韩黄色在线视频| 久久理论电影| 日韩高清不卡av| 午夜视频在线观| 成人直播视频| 亚洲综合一二三区| 日韩av影视| 人人妻人人澡人人爽人人欧美一区 | 久久免费看少妇高潮v片特黄| 免费萌白酱国产一区二区三区| 欧美日韩一区中文字幕| 少妇高潮喷水在线观看| 黄色网址在线免费| 国产午夜精品一区二区三区视频| 97欧洲一区二区精品免费| 无码人妻丰满熟妇区bbbbxxxx| 综合在线一区| 中文在线资源观看视频网站免费不卡| 北京富婆泄欲对白| 国产视频一区二| 欧美三级日韩在线| 黄色动漫网站入口| 色女人在线视频| 中文字幕亚洲一区二区va在线| 欧美日韩精品综合| 天天摸天天干天天操| 国产福利一区在线| 91人人爽人人爽人人精88v| 免费一级a毛片| 亚洲免费网址| 97国产在线观看| 国产真人真事毛片| 午夜精品国产| 久久国产精品网站| 四虎永久免费地址| 禁断一区二区三区在线| 亚洲九九九在线观看| 日韩av无码一区二区三区不卡| 亚洲成人黄色| 日韩精品一区二区三区蜜臀| 亚洲三级在线观看视频| 国产亚洲人成a在线v网站| 日本高清不卡视频| 久久久久狠狠高潮亚洲精品| 一区二区三区短视频| 精品福利视频导航| 国自产拍偷拍精品啪啪一区二区| 女人让男人操自己视频在线观看| 亚洲成在人线免费| 成年人午夜视频在线观看| 7777kkk亚洲综合欧美网站| 亚洲一区二区免费视频| 九一国产精品视频| 美女扒开腿让男人桶爽久久软| 精品久久久一区二区| 欧美日韩激情视频在线观看| 男人的天堂免费在线视频| 色综合色狠狠天天综合色| 国产欧美高清在线| h1515四虎成人| 91精品国产免费| 18禁一区二区三区| 老司机成人在线| 国产亚洲精品久久久久动| 波多野结衣家庭教师在线观看| 欧美韩日高清| 欧美激情第1页| 少妇太紧太爽又黄又硬又爽| 日韩精品电影一区亚洲| 国产欧美精品一区二区三区-老狼| 91精品国自产| 成人激情文学综合网| 欧美日韩精品综合| gogo在线观看| 欧美日韩加勒比精品一区| 午夜免费精品视频| 精品国产乱码久久久久久樱花| 精品国产sm最大网站免费看| 91精品人妻一区二区三区| 欧美激情偷拍自拍| 久久久久亚洲精品成人网小说| 中文字幕超碰在线| 久久成人综合网| 国产亚洲欧美一区二区| 国产视频三级在线观看播放| 玉足女爽爽91| 青青在线免费观看视频| 久久久久久久久成人| 亚洲激情视频网| 黄色裸体一级片| 日韩午夜av| 91久久国产综合久久91精品网站 | 精品视频www| 波多野结衣久久久久| 99香蕉国产精品偷在线观看| 成人黄色av网站| 亚洲 欧美 激情 小说 另类| 日韩理论片一区二区| 国产青青在线视频| 成人在线视频国产| 亚洲人高潮女人毛茸茸| 九九热视频精品| 美女性感视频久久| 久久精品日产第一区二区三区精品版 | 九九热在线视频播放| 极品少妇一区二区三区精品视频| 久久99久久99精品蜜柚传媒| 国产精品一区二区三区视频网站| 日韩欧美亚洲范冰冰与中字| 色哟哟免费视频| 欧美大片aaaa| 国产精品久久久久久久久久久久久 | 日韩一区二区三区免费| 亚洲国产福利在线| 美女视频久久久| 日本不卡123| 欧美一区二区高清在线观看| cao在线视频| 精品少妇一区二区| 中国一级片在线观看| 日韩国产欧美在线播放| 蜜桃av色综合| 欧亚在线中文字幕免费| 亚洲成人激情在线观看| 欧美精品一级片| 国产精选一区二区三区| 综合色婷婷一区二区亚洲欧美国产| 成人免费看视频网站| 亚洲精品国精品久久99热| 欧美精品一区二区成人| 国产乱对白刺激视频不卡| 中文字幕黄色大片| 成人午夜在线| 最近2019中文字幕在线高清| 午夜精品三级久久久有码| 99精品视频中文字幕| 免费av手机在线观看| 国产精品99久久免费观看| 欧美人交a欧美精品| 亚洲第一视频在线| 亚洲最色的网站| 91九色蝌蚪porny| 在线成人欧美| 精品在线视频一区二区| 中文字幕人成乱码在线观看| 一区二区欧美在线| 特级西西444www大胆免费看| 亚洲欧洲精品成人久久奇米网| 亚洲综合伊人久久| 欧美三区视频| 国语精品免费视频| 超碰超碰人人人人精品| 国产午夜精品一区理论片飘花| 久久久久久久亚洲| 国产精品视频你懂的| 欧美成人福利在线观看| 仙踪林久久久久久久999| 亚洲一区二区中文| 久草在线视频福利| 日韩精品在线私人| 波多野结衣电影在线播放| 国产精品人妖ts系列视频| 91aaa精品| 国产欧美精品| 亚洲国产欧美不卡在线观看| 日韩免费大片| 久久久视频在线| 经典三级在线| 777亚洲妇女| 日本熟妇成熟毛茸茸| 久久久久久久免费视频了| 尤物国产在线观看| 欧美日韩亚洲国产精品| 国产福利久久| 欧美精品资源| 久久综合久久八八| 三级做a全过程在线观看| 精品视频123区在线观看| 久久婷婷一区二区| 国产色一区二区| 国产伦精品一区二区三区妓女下载 | 久久综合精品国产一区二区三区| 777一区二区| 99视频在线精品国自产拍免费观看| 日韩三级电影| av自拍一区| 国产精品视频资源| 第一福利在线视频| 色偷偷偷综合中文字幕;dd| 国产三级小视频| 在线观看av不卡| 国产一卡二卡在线| 国产精品久久久久影院色老大 | 久久久久国产精品人| 中文字幕色网站| 久久国产一二区| 欧美极品少妇无套实战| 欧美久久精品一级c片| 国产精品美女黄网| 日韩专区视频网站| 日韩免费在线看| aa国产成人| 久久综合网hezyo| 搞黄视频免费在线观看| 欧美精品一区二区三区四区| 一级黄色免费片| 在线亚洲一区观看| 久久精品国产亚洲AV无码麻豆| 国产亚洲欧美激情| 一本加勒比波多野结衣| 国产精品一区在线观看乱码| 午夜免费看毛片| 日本va欧美va欧美va精品| 亚洲熟妇av日韩熟妇在线| 欧美精品一卡| 男女h黄动漫啪啪无遮挡软件| 欧美美女一区| 欧洲高清一区二区| 少妇高潮一区二区三区| 国产日韩欧美一区二区| 99re6热只有精品免费观看| 91在线国产电影| 日韩深夜福利网站| 国产精品一二三视频| 婷婷六月国产精品久久不卡| 欧美与黑人午夜性猛交久久久| 99re6在线精品视频免费播放| 久久久久久有精品国产| 男女在线观看视频| 欧美人与性动交a欧美精品| 日本中文字幕在线观看| 最近2019中文字幕大全第二页| 在线免费观看黄色| 中文字幕亚洲欧美日韩高清| 第一页在线观看| 在线观看国产精品淫| 成人精品一区二区三区免费| 伊人久久男人天堂| 91大神xh98hx在线播放| 中文字幕日韩电影| 在线观看的av| 久久亚洲国产精品| 污片视频在线免费观看| 欧美国产第一页| 伦理av在线| 91成人在线播放| 欧美大片免费观看网址| 国产精品免费福利| 欧美韩国日本| 999在线观看免费大全电视剧| 国产成人高清精品免费5388| 国产亚洲欧美另类一区二区三区| 日本成人a网站| 日本一区二区三区四区在线观看 | 99久久免费观看| 亚洲激情午夜| 50路60路老熟妇啪啪| 美女视频黄久久| 亚洲视频在线不卡| 成a人片国产精品| 人妻体内射精一区二区| 国产精品久久久久aaaa| 婷婷色中文字幕| 欧美日韩免费在线观看| 波多野结衣高清在线| 欧美一级精品在线| 天堂av资源在线| 在线日韩欧美视频| a视频在线免费看| 91精品国产高清久久久久久91| 日韩av超清在线观看| 亚洲最大av网站| 精品一区免费| 最新视频 - x88av| 日韩一级精品| 涩涩网站在线看| 久久综合色播五月| 精品无码一区二区三区蜜臀| 亚洲不卡一区二区三区| 中文在线观看免费高清| 精品卡一卡二卡三卡四在线| 国产专区在线| 色综合久久精品亚洲国产| 成人性生活视频| eeuss一区二区三区| blacked蜜桃精品一区| 在线观看污视频| 视频一区二区中文字幕| 久久久久亚洲av片无码v| 久久夜色精品国产噜噜av| 日韩一级片大全| 色94色欧美sute亚洲线路一ni| www.香蕉视频| 国产一区二区三区在线视频| bl视频在线免费观看| 国产在线一区二区三区| 日韩啪啪网站| a级黄色片免费| 美女一区二区视频| 男人天堂av电影| 亚洲国产日韩在线一区模特| 96日本xxxxxⅹxxx17| 亚洲片av在线| 后进极品白嫩翘臀在线播放| 成人av番号网| 欧美日韩激情| 91视频最新入口| 豆国产96在线|亚洲| 手机av在线看| 欧美在线不卡视频| 天堂av在线免费观看| 久久免费视频在线观看| 不卡的国产精品| 亚洲精品永久www嫩草| 久久久久网站| 亚洲综合色一区| 欧美性xxxxxxx| 午夜福利视频一区二区| 久久免费视频观看| 国产精品极品| 日韩xxxx视频| 成人黄色一级视频| 国产真人真事毛片| 精品三级在线看| 日本在线视频中文有码| 亚洲自拍偷拍在线| 久久久9色精品国产一区二区三区| 午夜免费高清视频| 国产色综合久久| 国产一级片一区二区| 亚洲欧美中文日韩在线| 另类激情视频| 日产精品高清视频免费| 视频一区二区欧美| av黄色在线免费观看| 在线视频中文字幕一区二区| 精品av中文字幕在线毛片| 国产精品国产三级国产专播精品人 | 精品无码免费视频| 欧美不卡视频一区| 丁香花在线电影小说观看 | 亚洲永久精品唐人导航网址| 亚欧无线一线二线三线区别| 91首页免费视频| 性色av免费观看| 国产一区二区三区在线观看视频 | 久久久久久九九九九| 亚洲欧美视频| 亚洲精品国产91| 欧美日本视频在线| 9191在线播放| 国产激情一区二区三区在线观看 | 国产ts在线观看| 亚洲第一成人在线| 黄色av网站在线| 成人福利视频网| 国产精品国码视频| 日本japanese极品少妇| 色婷婷综合久久久久中文一区二区 | 波多野结衣二区三区| 精品国内自产拍在线观看| 奇米一区二区| 伊人成色综合网| 国产精品天干天干在观线| a网站在线观看| 4p变态网欧美系列| 91亚洲成人| 欧美双性人妖o0| 欧美日韩精品是欧美日韩精品| √天堂8在线网| 久久久久网址| 久久精品国产亚洲高清剧情介绍 | 久久精品国产一区二区三区日韩 | 色偷偷久久人人79超碰人人澡 | 欧美一性一乱一交一视频| 日韩成人精品一区二区| 农村末发育av片一区二区| 精品美女永久免费视频| 91美女视频在线| 国产精品乱码一区二区三区| 日韩成人av影视| 国产第一页第二页| 最近免费中文字幕视频2019| 国产精品一线| 日韩成人av免费| 大荫蒂欧美视频另类xxxx | 91av在线免费观看视频| 亚欧美无遮挡hd高清在线视频| 五月开心播播网| 日韩一级大片在线|