Điểm:0

Sử dụng .kube/config Client certs trong curl

lá cờ cn

Nếu bạn dùng kubectl get pod foo -v10 bạn thấy một Xoăn dòng, nhưng điều này không hoạt động.

Ví dụ:

guettli@p15:~$ curl -k -v -XGET -H "Chấp nhận: application/json;as=Table;v=v1;g=meta.k8s.io,application/json;as=Table;v=v1beta1; g=meta.k8s.io,application/json" -H "User-Agent: kubectl/v1.23.4 (linux/amd64) kubernetes/e6c093d" 'https://127.0.0.1:44529/api/v1/namespaces/ mặc định/nhóm/busybox' 

* Đang thử 127.0.0.1:44529...
* Đã kết nối với cổng 127.0.0.1 (127.0.0.1) 44529 (#0)
* ALPN, cung cấp h2
* ALPN, cung cấp http/1.1
* đặt thành công vị trí xác minh chứng chỉ:
* Tệp CA: /etc/ssl/certs/ca-certificates.crt
* Đường dẫn CA: /etc/ssl/certs
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* TLSv1.3 (IN), TLS handshake, Server hello (2):
* TLSv1.3 (IN), bắt tay TLS, Tiện ích mở rộng được mã hóa (8):
* TLSv1.3 (IN), bắt tay TLS, Yêu cầu CERT (13):
* TLSv1.3 (IN), bắt tay TLS, Chứng chỉ (11):
* TLSv1.3 (IN), bắt tay TLS, xác minh CERT (15):
* TLSv1.3 (IN), bắt tay TLS, Đã hoàn thành (20):
* TLSv1.3 (OUT), Thay đổi mật mã TLS, Thay đổi thông số mật mã (1):
* TLSv1.3 (OUT), bắt tay TLS, Chứng chỉ (11):
* TLSv1.3 (OUT), bắt tay TLS, Đã hoàn thành (20):
* Kết nối SSL sử dụng TLSv1.3/TLS_AES_256_GCM_SHA384
* ALPN, máy chủ chấp nhận sử dụng h2
* Chứng chỉ máy chủ:
* chủ đề: CN=kube-apiserver
* ngày bắt đầu: 2 tháng 2 10:34:41 2022 GMT
* ngày hết hạn: 2 tháng 2 10:34:41 2023 GMT
* nhà phát hành: CN=kubernetes
* Kết quả xác minh chứng chỉ SSL: không thể lấy chứng chỉ nhà phát hành địa phương (20), vẫn tiếp tục.
* Sử dụng HTTP2, máy chủ hỗ trợ đa dụng
* Trạng thái kết nối đã thay đổi (đã xác nhận HTTP/2)
* Sao chép dữ liệu HTTP/2 trong bộ đệm luồng sang bộ đệm kết nối sau khi nâng cấp: len=0
* Sử dụng ID luồng: 1 (xử lý dễ dàng 0x55ef6413b5e0)
> NHẬN /api/v1/namespaces/default/pods/busybox HTTP/2
> Máy chủ: 127.0.0.1:44529
> chấp nhận: application/json;as=Table;v=v1;g=meta.k8s.io,application/json;as=Table;v=v1beta1;g=meta.k8s.io,application/json
> tác nhân người dùng: kubectl/v1.23.4 (linux/amd64) kubernetes/e6c093d
> 
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
* Trạng thái kết nối đã thay đổi (MAX_CONCURRENT_STREAMS == 250)!
< HTTP/2 403 
< kiểm soát bộ đệm: không có bộ đệm, riêng tư
< loại nội dung: ứng dụng/json
< tùy chọn loại nội dung x: nosniff
< x-kubernetes-pf-flowschema-uid: d45b0ee7-7e06-463e-b8d1-6ab74852b967
< x-kubernetes-pf-prioritylevel-uid: 3be84978-2771-4afe-972d-50dec7f8b951
< độ dài nội dung: 289
< ngày: Thứ Hai, ngày 21 tháng 2 năm 2022 17:20:21 GMT
< 

{"kind":"Status","apiVersion":"v1","metadata":{},
 "status":"Không thành công",
 "message":"pods \"busybox\" bị cấm: Người dùng \"system:anonymous\" không thể lấy tài nguyên \"pods\" trong nhóm API \"\" trong không gian tên \"default\"",
 "lý do":"Bị cấm",
 "detail":{"name":"busybox","kind":"pods"},"code":403}

* Kết nối #0 đến máy chủ 127.0.0.1 còn nguyên vẹn

Làm cách nào tôi có thể sử dụng chứng chỉ ứng dụng khách trong .kube/config?

Mình dùng loại 0.11.1

lá cờ in
Chà, bạn đã thử những gì cho đến nay, ngoài việc mong đợi `curl` phân tích một tệp yaml kubeconfig một cách kỳ diệu? Ngoài ra, theo tinh thần của "vấn đề X/Y", điều này chắc chắn có vẻ như bạn đang muốn triển khai lại `kubectl` bằng cách sử dụng nhiều bash vì một số lý do
Điểm:1
lá cờ cn

Tôi tìm thấy giải pháp này:

con mèo .kube/config | yq .cluster[0].cluster.certificate-authority-data | cơ sở64 -d -> .kube/ca.pem

con mèo .kube/config | yq .users[0].user.client-cert-data | cơ sở64 -d -> .kube/user.pem

con mèo .kube/config | yq .users[0].user.client-key-data | base64 -d -> .kube/user-key.pem
curl --cert .kube/user.pem --key .kube/user-key.pem --cacert .kube/ca.pem \
  -v -XGET -H "Chấp nhận: application/json;as=Table;v=v1;g=meta.k8s.io,application/json;as=Table;v=v1beta1;g=meta.k8s.io,application /json" \
  -H "Tác nhân người dùng: kubectl/v1.23.4 (linux/amd64) kubernetes/e6c093d" \
 'https://127.0.0.1:44529/api/v1/namespaces/default/pods/busybox'
Điểm:0
lá cờ us

Tôi đã thực hiện một số nghiên cứu. giải pháp làm việc của tôi là dưới đây:

Dấu ngoặc kép là bắt buộc vì dấu gạch ngang trong tên thẻ:

con mèo ~/.kube/config | yq -r '.cluster[0].cluster."certificate-authority-data"' | cơ sở64 -d -> ~/.kube/ca.pem 
con mèo ~/.kube/config | yq -r '.users[0].user."client-certificate-data"' | cơ sở64 -d -> ~/.kube/user.pem
con mèo ~/.kube/config | yq -r '.users[0].user."client-key-data"' | base64 -d -> ~/.kube/user-key.pem

Một biến hữu ích hơn:

SERVER_URL=$(cat ~/.kube/config | yq -r .cluster[0].cluster.server)

Ví dụ cuộn tròn:

curl --cacert ~/.kube/ca.pem --cert ~/.kube/user.pem --key ~/.kube/user-key.pem -X NHẬN ${SERVER_URL}/api/v1/namespaces/ mặc định/nhóm/busybox

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.