combined-registry.yaml 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. apiVersion: v1
  2. kind: Namespace
  3. metadata:
  4. name: registry
  5. ---
  6. apiVersion: v1
  7. kind: Secret
  8. metadata:
  9. name: registry-auth
  10. namespace: registry
  11. type: Opaque
  12. data:
  13. # 注意:这里要填 base64 编码后的 htpasswd 内容
  14. htpasswd: YWRtaW46JDJ5JDEwJEs4NlE4NnkycU5VUWdCM3lEMlEuN1k5N2w4cW9hRTlGcWp3bXlLaQ==
  15. ---
  16. apiVersion: v1
  17. kind: PersistentVolumeClaim
  18. metadata:
  19. name: registry-pvc
  20. namespace: registry
  21. spec:
  22. accessModes:
  23. - ReadWriteOnce
  24. resources:
  25. requests:
  26. storage: 10Gi
  27. ---
  28. apiVersion: apps/v1
  29. kind: Deployment
  30. metadata:
  31. name: registry
  32. namespace: registry
  33. spec:
  34. replicas: 1
  35. selector:
  36. matchLabels:
  37. app: registry
  38. template:
  39. metadata:
  40. labels:
  41. app: registry
  42. spec:
  43. containers:
  44. - name: registry
  45. image: registry.cn-hangzhou.aliyuncs.com/zhongpengqun/wanderer:amd64-linux-docker-registry-v2
  46. ports:
  47. - containerPort: 5000
  48. env:
  49. - name: REGISTRY_AUTH
  50. value: "htpasswd"
  51. - name: REGISTRY_AUTH_HTPASSWD_REALM
  52. value: "Registry Realm"
  53. - name: REGISTRY_AUTH_HTPASSWD_PATH
  54. value: "/auth/htpasswd"
  55. - name: REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY
  56. value: "/var/lib/registry"
  57. # --- 关键:Registry 跨域配置 ---
  58. - name: REGISTRY_HTTP_HEADERS_ACCESS_CONTROL_ALLOW_ORIGIN
  59. value: '["http://47.113.186.215:30501"]'
  60. - name: REGISTRY_HTTP_HEADERS_ACCESS_CONTROL_ALLOW_METHODS
  61. value: '["GET", "POST", "PUT", "DELETE", "OPTIONS"]'
  62. - name: REGISTRY_HTTP_HEADERS_ACCESS_CONTROL_ALLOW_HEADERS
  63. value: '["Authorization", "Accept", "Content-Type", "Origin"]'
  64. - name: REGISTRY_HTTP_HEADERS_ACCESS_CONTROL_ALLOW_CREDENTIALS
  65. value: '["true"]'
  66. - name: REGISTRY_HTTP_HEADERS_ACCESS_CONTROL_EXPOSE_HEADERS
  67. value: '["Docker-Content-Digest", "Location"]'
  68. volumeMounts:
  69. - name: auth
  70. mountPath: /auth
  71. - name: data
  72. mountPath: /var/lib/registry
  73. volumes:
  74. - name: auth
  75. secret:
  76. secretName: registry-auth
  77. - name: data
  78. persistentVolumeClaim:
  79. claimName: registry-pvc
  80. ---
  81. apiVersion: v1
  82. kind: Service
  83. metadata:
  84. name: registry
  85. namespace: registry
  86. spec:
  87. type: NodePort
  88. selector:
  89. app: registry
  90. ports:
  91. - port: 5000
  92. targetPort: 5000
  93. nodePort: 30500
  94. ---
  95. apiVersion: apps/v1
  96. kind: Deployment
  97. metadata:
  98. name: registry-ui
  99. namespace: registry
  100. spec:
  101. replicas: 1
  102. selector:
  103. matchLabels:
  104. app: registry-ui
  105. template:
  106. metadata:
  107. labels:
  108. app: registry-ui
  109. spec:
  110. containers:
  111. - name: registry-ui
  112. image: registry.cn-hangzhou.aliyuncs.com/zhongpengqun/wanderer:linux-amd64-docker-registry-ui-2.6.0
  113. ports:
  114. - containerPort: 80
  115. env:
  116. - name: REGISTRY_URL
  117. value: "http://registry:5000"
  118. - name: REGISTRY_TITLE
  119. value: "K3s Private Registry"
  120. - name: SINGLE_REGISTRY
  121. value: "true"
  122. - name: REGISTRY_HOST
  123. value: "registry"
  124. - name: REGISTRY_PORT
  125. value: "5000"
  126. - name: CORS_ALLOW_ORIGIN
  127. value: "http://47.113.186.215:30501"
  128. - name: CORS_ALLOW_CREDENTIALS
  129. value: "true"
  130. - name: CORS_ALLOW_METHODS
  131. value: "GET, POST, PUT, DELETE, OPTIONS"
  132. - name: CORS_ALLOW_HEADERS
  133. value: "Origin, X-Requested-With, Content-Type, Accept, Authorization"
  134. ---
  135. apiVersion: v1
  136. kind: Service
  137. metadata:
  138. name: registry-ui
  139. namespace: registry
  140. spec:
  141. type: NodePort
  142. selector:
  143. app: registry-ui
  144. ports:
  145. - port: 80
  146. targetPort: 80
  147. nodePort: 30501