Giả sử namespace của bản phát hành đã có một Secret tên là app-outbound-proxy. Các khóa http_proxy và https_proxy của nó chứa các URL proxy đầy đủ mà ứng dụng cần.

Một biểu đồ Helm 3 chỉ có thể giữ tên của Secret đó trong values.yaml:

outboundProxy:
  existingSecret: app-outbound-proxy

Trong mẫu Deployment của container dự định, hãy tham chiếu các khóa:

env:
  - name: HTTP_PROXY
    valueFrom:
      secretKeyRef:
        name: {{ .Values.outboundProxy.existingSecret | quote }}
        key: http_proxy
  - name: HTTPS_PROXY
    valueFrom:
      secretKeyRef:
        name: {{ .Values.outboundProxy.existingSecret | quote }}
        key: https_proxy

Đây là một đoạn của đặc tả container. Secret phải tồn tại trong namespace của Pod và chứa cả hai khóa được tham chiếu. Các giá trị của nó phải dùng giao thức, máy chủ và cổng của trình lắng nghe proxy thực tế. Với các yêu cầu công khai của ứng dụng được phép dùng proxy công khai không cần xác thực, hãy dựng các URL đó từ một ứng viên phù hợp trong danh sách proxy miễn phí; giữ lại mọi ngoại lệ trực tiếp cần thiết.

Giá trị của biểu đồ cung cấp một tên; secretKeyRef cung cấp các giá trị môi trường của container. Chỉ export HTTP_PROXY trong shell chạy helm không thêm mục env này vào mẫu Pod.

Thay đổi Secret cũng là thay đổi vòng đời

Container không làm mới môi trường của nó khi dữ liệu Secret thay đổi. Hãy sắp xếp việc khởi động lại hoặc rollout dự định để các container mới khởi động nhận được giá trị đã cập nhật. Thay đổi dữ liệu dưới cùng tên Secret tự nó không chỉnh sửa mẫu Pod của Deployment.

Ứng dụng phải hỗ trợ các biến môi trường proxy đã chọn. Truy cập kho Helm và kéo image trên node là những người dùng riêng chạy trước khi môi trường container này có thể giúp ích.

Bài viết liên quan