sách gpt4 ăn đã đi

Khung CI/CD gốc trên nền tảng đám mây Phương pháp triển khai trong nước của Tekton

In lại Tác giả: qq735679552 Thời gian cập nhật: 27-09-2022 22:32:09 41 4
mua khóa gpt4 giày nike

CFSDN nhấn mạnh vào giá trị tạo ra nguồn mở và chúng tôi cam kết xây dựng nền tảng chia sẻ tài nguyên để mọi nhân viên CNTT có thể tìm thấy thế giới tuyệt vời của bạn tại đây.

Bài viết blog CFSDN này Các phương pháp triển khai trong nước của CI/CD framework Tekton gốc trên nền tảng đám mây được tác giả sưu tầm và biên soạn. Nếu các bạn quan tâm đến bài viết này thì nhớ like nhé.

Khung CI/CD gốc trên nền tảng đám mây Phương pháp triển khai trong nước của Tekton

Tekton là framework gốc đám mây mã nguồn mở CI/CD rất mạnh mẽ và linh hoạt. Cam kết cung cấp các giải pháp CI/CD gốc đám mây được chuẩn hóa và đầy đủ tính năng. [Bài viết này chủ yếu đồng bộ hóa hình ảnh tekton với kho Tencent Cloud thông qua tự động hóa đường ống và triển khai tekton].

Hình ảnh ứng dụng

Kho hình ảnh đám mây của Alibaba thực sự có những hạn chế... Lần này tôi chuyển sang Kho hình ảnh đám mây Tencent;ccr.ccs.tencentyun.com/tektons/dashboard.

Khung CI/CD gốc trên nền tảng đám mây Phương pháp triển khai trong nước của Tekton

Đường ống

Với hành động GitHub

  1. Đồng bộ hóa hình ảnh và tạo tệp ánh xạ hình ảnh (json):
  2. Thu thập các tệp ánh xạ hình ảnh dưới dạng tạo phẩm;
  1. Cái này một quy trình làm việc cơ bản ĐẾN giúp bạn bắt đầu với Hành động
  2. tên: Nhận hình ảnh Tekton
  3. môi trường:
  4. PHIÊN BẢN: v0.29.0
  5. TRÊN:
  6. xô:
  7. đường dẫn:
  8. - '.github/workflows/tekton.yaml'
  9. - 'tekton/**'
  10. việc làm:
  11. xây dựng:
  12. chạy-TRÊN: ubuntu-18.04
  13. các bước:
  14. - sử dụng: hành động/kiểm tra@v2
  15. - tên: xây dựng
  16. chạy: |
  17. curl https://storage.googleapis.com/tekton-releases/pipeline/previous/${{ env.VERSION }}/release.yaml -o release.yaml
  18. grep -v "#" phát hành.yaml | grep -v "^$" > release1.yaml ; sed -i 's/\-\-\-/###/g' phát hành1.yaml
  19. python3 tekton/get_tekton_images.py ${{ secrets.DOCKER_USER}} ${{ secrets.DOCKER_PASSWD}}
  20. - sử dụng: hành động/tải lên-artifact@v2
  21. với:
  22. tên: ${{ env.VERSION }}-tekton-images
  23. đường dẫn: tekton_images.json

Khung CI/CD gốc trên nền tảng đám mây Phương pháp triển khai trong nước của Tekton

Phân tích tập tin triển khai

1. Tải xuống bản triển khai phát hành yaml,

2. Phân tích hình ảnh trong đối tượng Triển khai,

a.tekton-pipelines-bộ điều khiển 。

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

Viết tập lệnh phân tích dữ liệu bằng Python:

  1. nhập yaml
  2. nhập json
  3. nhập khẩu hệ thống
  4. nhập khẩu chúng
  5. lớp Tekton:
  6. def __init__(self, tên_tệp, người_dùng_registry, mật_mật_registry):
  7. self.yaml_file = tên_tệp
  8. self.arg_imgs = ["gcr.io/tekton-releases/github.com/tektoncd/dashboard/cmd/dashboard@sha256:95f71a2568ced67ec370b5360f88bec3280601908cac9e62dfbb801114480437"]
  9. self.split_str = "###"
  10. tự triển khai = ["bộ điều khiển tekton-pipelines", "tekton-pipelines-webhook"]
  11. self.kind_type = "Triển khai"
  12. self.target_registry = "ccr.ccs.tencentyun.com/tektons/"
  13. self.repos = [ "bộ điều khiển", "kubeconfigwriter", "git-init",
  14. "điểm vào","không","imagedigestexporter",
  15. "pullrequest-init", "cloud-sdk", "căn cứ", "powershell", "móc treo"]
  16. tự.kết quả = []
  17. self.registry_user = người dùng đăng ký
  18. self.registry_passwd = mật khẩu đăng ký
  19. def load_yaml(bản thân, dữ liệu):
  20. nội dung = yaml.trọng tải(dữ liệu)
  21. trở lại nội dung
  22. def load_json(bản thân, dữ liệu):
  23. nội dung = json.loads(dữ liệu)
  24. trở lại nội dung
  25. def get_images(bản thân):
  26. f = mở(tệp yaml_self, 'r').đọc()
  27. Tôi TRONG f.chia("###")[:-1]:
  28. thử:
  29. nội dung = self.load_yaml(i.thay thế("###", ""))
  30. nếu nội dung["loại"] == loại_loại_bản_thân:
  31. tên_triển_khai = nội_dung["siêu dữ liệu"]["tên"]
  32. # Lấy hình ảnh
  33. nếu triển khai_tên TRONG tự triển khai:
  34. img = nội dung["đặc tả"]["bản mẫu"]["đặc tả"]["thùng chứa"][0]["hình ảnh"]
  35. self.arg_imgs.append(img)
  36. # Lấy hình ảnh trong tham số
  37. nếu deploy_name == "bộ điều khiển tekton-pipelines":
  38. arg_img = nội dung["đặc tả"]["bản mẫu"]["đặc tả"]["thùng chứa"][0]["đối số"]
  39. Một TRONG đối số_img:
  40. nếu như không a.bắt đầu bằng("-"):
  41. self.arg_imgs.append(a)
  42. ngoại trừ Ngoại lệ BẰNG Và:
  43. (các) bản in
  44. trở lại tự.arg_imgs
  45. def save_json_file(self, dữ liệu, tên_tệp):
  46. Tôi TRONG self.arg_imgs:
  47. self.result.append({
  48. "hình ảnh": Tôi,
  49. "t_image": self.target_registry + i.split("/")[-1].chia("@")[0]
  50. })
  51. newdata = json.dumps(self.result, thụt lề=4)
  52. một =mở(tên_tệp, 'TRONG')
  53. a.write(dữ liệu mới)
  54. Một.đóng()
  55. def sync_images(bản thân):
  56. f = mở("tekton_images.json", 'r').đọc()
  57. nội dung = self.load_json(f)
  58. docker_login_cmd = "docker đăng nhập -u {0} -p {1} {2}".định dạng(
  59. self.registry_user,
  60. self.registry_passwd,
  61. self.target_registry.split("/")[0])
  62. hệ điều hành(docker_login_cmd)
  63. mục TRONG nội dung:
  64. in("[Lấy hình ảnh] {}".format(mục))
  65. docker_pull_cmd = "kéo docker {0}".format(mục["hình ảnh"])
  66. docker_tag_cmd = "thẻ docker {0} {1}".format(mục["hình ảnh"], mục["t_image"])
  67. docker_push_cmd = "docker đẩy {0}".format(mục["t_image"])
  68. hệ điều hành(docker_pull_cmd + "&&" + docker_tag_cmd + "&&" + docker_push_cmd )
  69. in("[GetImagesDone] {}".format(mục))
  70. nếu __name__ == '__chủ yếu__':
  71. tekton = tekton("release1.yaml", sys.argv[1], sys.argv[2])
  72. hình ảnh = tekton.get_images()
  73. tekton.save_json_file(hình ảnh, "tekton_images.json")
  74. tekton.sync_images()

Tệp ánh xạ hình ảnh.

s_image là tên hình ảnh gốc, t_image là tên hình ảnh mục tiêu; kho hình ảnh của Tencent Cloud được sử dụng ở đây,

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

Có thể tải xuống tệp ánh xạ hình ảnh từ trang GitHubActions:

Khung CI/CD gốc trên nền tảng đám mây Phương pháp triển khai trong nước của Tekton

Tải xuống tập lệnh phản chiếu

Phân tích tệp hình ảnh được tạo ở trên, docker pull tải hình ảnh tương ứng về cục bộ,

  1. nhập json
  2. nhập khẩu chúng
  3. lớp Tekton:
  4. định nghĩa __init__(bản thân):
  5. self.json_file = "tekton_images.json"
  6. self.target_registry = "ccr.ccs.tencentyun.com/tektons/"
  7. # self.registry_user = người dùng đăng ký
  8. # self.registry_passwd = mật khẩu_registry
  9. def load_json(bản thân, dữ liệu):
  10. nội dung = json.loads(dữ liệu)
  11. trở lại nội dung
  12. def down_images(bản thân):
  13. f = mở(tệp self.json_file, 'r').đọc()
  14. nội dung = self.load_json(f)
  15. # docker_login_cmd = "docker đăng nhập -u {0} -p {1} {2}".định dạng(
  16. # self.registry_user,
  17. # self.registry_passwd,
  18. # self.target_registry.split("/")[0])
  19. mục TRONG nội dung:
  20. in("[Lấy hình ảnh] {}".format(mục["t_image"]))
  21. docker_pull_cmd = "kéo docker {0}".format(mục["t_image"])
  22. # docker_tag_cmd = "thẻ docker {0} {1}".format(mục["t_image"], mục["hình ảnh"].tách ra("@")[0])
  23. hệ điều hành(docker_pull_cmd + "&&" + docker_tag_cmd )
  24. in("[GetImagesDone] {}".format(mục))
  25. nếu __name__ == '__chủ yếu__':
  26. t = Tekton().down_images()

triển khai Tekton

Thay thế hình ảnh trong file triển khai

  1. Cập nhật hình ảnh trong bản phát hành.yaml theo cách thủ công; sau đó kubectl áp dụng bản phát hành.yaml để triển khai (sẽ có thời gian tối ưu hóa tập lệnh sau này để đạt được bản cập nhật tự động của bản phát hành.yaml)
  2. Cập nhật hình ảnh theo cách thủ công trong tekton-dashboard-release.yaml sau đó triển khai;
  1. [root@master ~]# kubectl -n tekton-pipelines lấy pod
  2. TÊN TRẠNG THÁI SẴN SÀNG KHỞI ĐỘNG LẠI TUỔI
  3. tekton-dashboard-5c4b89d9-2z8g7 1/1 Đang chạy 0 21m
  4. tekton-pipelines-controller-b96f647bb-gff69 1/1 Đang chạy 0 13h
  5. tekton-pipelines-webhook-76bc9c97b9-cd2m4 1/1 Đang chạy 0 13 giờ

Viết một Ingress để hiển thị bảng điều khiển tekton:

  1. apiVersion: phần mở rộng/v1beta1
  2. loại: Ingress
  3. siêu dữ liệu:
  4. tên: dịch vụ tekton
  5. không gian tên: tekton-pipelines
  6. chú thích:
  7. kubernetes.io/ingress.class: nginx
  8. nginx.ingress.kubernetes.io/proxy-body-kích cỡ: 256 phút
  9. đặc điểm kỹ thuật:
  10. quy tắc:
  11. - máy chủ: tekton.idevops.site
  12. http:
  13. đường dẫn:
  14. - con đường: /
  15. phần sau:
  16. Tên dịch vụ: tekton-dashboard
  17. dịch vụCổng: 9097

Truy cập trang giao diện người dùng:

Khung CI/CD gốc trên nền tảng đám mây Phương pháp triển khai trong nước của Tekton

Viết đường ống

  1. Phiên bản api: tekton.dev/v1beta1
  2. loại: Nhiệm vụ
  3. siêu dữ liệu:
  4. tên: tektoncd-task
  5. đặc điểm kỹ thuật:
  6. tài nguyên:
  7. đầu vào:
  8. - tên: kho lưu trữ
  9. loại: git
  10. các bước:
  11. - tên: chạy thử
  12. hình ảnh: maven:3-jdk-8
  13. workingDir: /workspace/repo
  14. yêu cầu: ["mvn"]
  15. các đối số: ["lau dọn", "bưu kiện"]
  16. ---
  17. Phiên bản api: tekton.dev/v1alpha1
  18. loại: PipelineResource
  19. siêu dữ liệu:
  20. tên: tektoncd-tài nguyên
  21. đặc điểm kỹ thuật:
  22. loại: git
  23. tham số:
  24. - tên: địa chỉ
  25. giá trị: http://192.168.1.200/devops/devops-maven-service.git
  26. - tên: ôn tập
  27. giá trị: chủ
  28. ---
  29. Phiên bản api: tekton.dev/v1beta1
  30. loại: TaskRun
  31. siêu dữ liệu:
  32. tên: cdpipeline
  33. đặc điểm kỹ thuật:
  34. nhiệm vụRef:
  35. tên: tektoncd-task
  36. tài nguyên:
  37. đầu vào:
  38. - tên: kho lưu trữ
  39. tham chiếu tài nguyên:
  40. tên: tektoncd-tài nguyên

Liên kết gốc: https://mp.weixin.qq.com/s/Rn44lRhaEC4YkUi2dD7TKg.

Cuối cùng, bài viết này về phương pháp triển khai trong nước của khung CI/CD gốc trên đám mây Tekton kết thúc tại đây. Nếu bạn muốn biết thêm về phương pháp triển khai trong nước của khung CI/CD gốc trên nền tảng đám mây Tekton, vui lòng tìm kiếm các bài viết CFSDN hoặc tiếp tục. duyệt các bài viết liên quan, tôi hy vọng bạn sẽ ủng hộ blog của tôi trong tương lai! .

41 4 0
qq735679552
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress