配置kubernetes服務basic auth

  

  因爲一些內部服務訪問並不須要鑑權,如kubernetes-dashboard、traefik-ui,因此當咱們想經過外網域名訪問的時候會有安全問題。這裏咱們能夠爲服務配置basic auth,訪問時須要驗證,如下是配置過程:web

 

1. 建立用戶密碼文件

  這裏咱們使用htpasswd建立加密過的密碼文件。api

# htpasswd -bc basic-auth-secret username password

 

2. 建立Kubernetes Secret

# kubectl create secret generic basic-auth --from-file=basic-auth-secret --namespace=kube-system

 

3. 部署服務Ingress使其使用basic auth

 經過在Ingress中添加鑑權annotation實現服務basic auth。這裏須要注意:安全

  • Secret文件必須與Ingress規則在同一命名空間。
  • 目前只支持basic authentication。
  • Realm不可配置,默認使用traefik。
  • Secret必須只包含一個文件。
apiVersion: v1
kind: Service
metadata:
  name: traefik-web-ui
  namespace: kube-system
spec:
  selector:
    k8s-app: traefik-ingress-lb
  ports:
  - port: 80
    targetPort: 8080
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: traefik-web-ui
  namespace: kube-system
  annotations:
kubernetes.io/ingress.class: traefik ingress.kubernetes.io/auth-type: basic ingress.kubernetes.io/auth-secret: basic-auth spec: rules: - host: traefik-ui.domain.com http: paths: - backend: serviceName: traefik-web-ui servicePort: 80

  

相關文章
相關標籤/搜索