2016-08-03 21 views
8

Tôi đang cố gắng sử dụng Minikube để phát triển kubernetes cục bộ. Tôi đã thiết lập môi trường Docker tôi để sử dụng daemon Docker chạy trong Minikube VM cung cấp (boot2docker) như đề xuất:Không thể kéo hình ảnh docker từ repo riêng khi sử dụng Minikube

eval $(minikube docker-env) 

Nó thiết lập các biến môi trường:

export DOCKER_TLS_VERIFY="1" 
export DOCKER_HOST="tcp://192.168.99.100:2376" 
export DOCKER_CERT_PATH="/home/jasonwhite/.minikube/certs" 

Khi tôi cố gắng để kéo một hình ảnh từ kho Docker tin của chúng tôi:

docker pull oururl.com:5000/myimage:v1 

tôi nhận được lỗi này:

Error response from daemon: Get https://oururl.com:5000/v1/_ping: x509: certificate signed by unknown authority 

Có vẻ như tôi cần thêm chứng chỉ gốc ca đáng tin cậy, nhưng đã không thành công trong nỗ lực của tôi.

tôi có thể nhấn phạt kho với curl sử dụng gốc cert ca của chúng tôi:

curl --cacert /etc/ssl/ca/ca.pem https://oururl.com:5000/v1/_ping 
+0

Bạn đang cố gắng kéo hình ảnh trên máy cục bộ của mình hay bạn đang cố tạo một Kubernetes Pod có thể kéo hình ảnh từ trong máy ảo? – springle

+0

Lần đầu tiên tôi gặp sự cố khi cố gắng tạo nhóm cần thiết để kéo hình ảnh từ kho lưu trữ riêng tư để tạo, do đó, VM đã cố kéo hình ảnh khi gặp sự cố không thể xác minh x509 chứng chỉ –

Trả lời

3

tôi đã đưa ra một công việc xung quanh cho tình hình với các đề xuất từ ​​các nguồn:

https://github.com/docker/machine/issues/1799

https://github.com/docker/machine/issues/1872

Tôi đã đăng nhập vào máy ảo Minikube (minikube ssh) và chỉnh sửa tệp /usr/local/etc/ssl/certs/ca-certificates.crt bằng cách gắn thêm chứng nhận của riêng mình.

sau đó tôi khởi động lại daemon Docker trong khi vẫn trong VM: sudo /etc/init.d/docker restart

Đây không phải là rất tao nhã ở chỗ nếu tôi khởi động lại Minikube VM, tôi cần phải lặp lại các bước thủ công mỗi lần.

Thay vào đó, tôi cũng đã cố gắng đặt tùy chọn --insecure-registry myurl.com:5000 trong biến môi trường DOCKER_OPTS (trình khởi động lại được khởi động lại), nhưng điều này không hiệu quả đối với tôi.

+1

Bây giờ bạn có thể sử dụng minikube start --insecure-registry = '' nhưng trước tiên bạn cần chạy minikube xóa để có cụm mới. – KyleHodgetts

0

Các Kubernetes documentation về vấn đề này là khá tốt.

Tùy thuộc vào nơi lưu trữ docker riêng của bạn được lưu trữ, giải pháp sẽ trông hơi khác một chút. Tài liệu này giải thích cách xử lý từng loại kho lưu trữ.

Nếu bạn muốn một cách tiếp cận tự động để xử lý xác thực này, bạn sẽ muốn sử dụng bí mật Kubernetes và chỉ định imagePullSecrets cho Pod của bạn.

+0

Cảm ơn bạn đã phản hồi, nhưng tôi đang gặp sự cố khi chạy trình neoer chạy trên máy ảo Minikube để kết nối với repo của chúng tôi (hãy để một mình bất kỳ chức năng Kubernetes nào được xây dựng trên đầu). Tôi tin rằng tôi cần phải bằng cách nào đó có được docker daemon trong Minkube VM để sử dụng một cert cert mà tôi có thể cung cấp. –

0

Có vẻ như câu hỏi của bạn có liên quan nhiều đến Docker hơn Kubernetes. Docker CLI hỗ trợ một số TLS-related options. Vì bạn đã có cert CA, một cái gì đó như thế này nên làm việc:

docker --tlsverify --tlscacert=/etc/ssl/ca/ca.pem pull oururl.com:5000/myimage:v1 
+0

Cảm ơn bạn đã phản hồi. Tôi đã thử thực hiện lệnh mà bạn đã cung cấp, nhưng tôi vẫn gặp lỗi "chứng chỉ x509: chứng chỉ do cơ quan không xác định". Tôi thậm chí không đặt DOCKER_TLS_VERIFY, và DOCKER_CERT_PATH, và vẫn còn lỗi tương tự. Tôi chỉ có thể giả định rằng có một cái gì đó về daemon Docker chạy trong máy ảo đó là phức tạp những điều ở đây. –

1

Tôi đã không thể tìm thấy dù sao để có được chứng chỉ vào vm minikube. Tuy nhiên, minikube có một tham số dòng lệnh để vượt qua trong một đăng ký không an toàn.

minikube start --insecure-registry=<HOST>:5000 

Sau đó, để định cấu hình xác thực trên sổ đăng ký, hãy tạo bí mật.

kubectl create secret docker-registry tp-registry --docker-server=<REGISTRY>:5000 --docker-username=<USERNAME> --docker-password=<PASSWORD> --docker-email=<EMAIL> --insecure-skip-tls-verify=true 

Thêm bí mật vào tài khoản dịch vụ mặc định như được mô tả trong kubernetes docs.

1

Đối với một registry http này bước công trình cho tôi:

1) minikube ssh

2) chỉnh sửa /var/lib/boot2docker/profile và thêm vào $ EXTRA_ARGS --insecure-registry yourdomain.com:5000

3) khởi động lại daemon Docker sudo /etc/init.d/docker restart

0

Bạn cần phải chỉnh sửa /etc/default/docker để trông giống như vậy:

# Docker Upstart and SysVinit configuration file 

# 
# THIS FILE DOES NOT APPLY TO SYSTEMD 
# 
# Please see the documentation for "systemd drop-ins": 
# https://docs.docker.com/engine/admin/systemd/ 
# 

# Customize location of Docker binary (especially for development testing). 
#DOCKERD="/usr/local/bin/dockerd" 

# Use DOCKER_OPTS to modify the daemon startup options. 
DOCKER_OPTS="--insecure-registry oururl.com:5000" 

# If you need Docker to use an HTTP proxy, it can also be specified here. 
#export http_proxy="http://127.0.0.1:3128/" 

# This is also a handy place to tweak where Docker's temporary files go. 
#export DOCKER_TMPDIR="/mnt/bigdrive/docker-tmp" 

Hãy chắc chắn để sudo service docker stopsudo docker start để áp dụng các thay đổi. Sau đó, bạn có thể đẩy/kéo vào sổ đăng ký của mình.

+0

tệp này không tồn tại, minikube v0.22.2 –

Các vấn đề liên quan