본문 바로가기
MLOps/Doker & Kubernetes

Udemy CKA 강의 정리 140: Article on Setting up Basic Authentication

by 공부하는 무니 2023. 1. 16.
반응형

해당 내용은 Udemy의 Certified Kubernetes Administrator (CKA) with Practice Tests 강의를 공부한 내용입니다. 내용을 그대로 번역하기보다는, 제가 이해하기 쉬운 대로 수정한 부분들이 있습니다.

⚠️ 영어 독해가 많이 부족합니다. 틀린 내용이 있으면 알려주시면 감사하겠습니다.


Setup basic authentication on Kubernetes(1.19 이후 더 이상 사용되지 않음)

참고: 프로덕션 환경에서는 권장되지 않습니다. 이는 학습 목적으로만 사용됩니다. 또한 이 접근 방식은 Kubernetes 버전 1.19이후 더 이상 사용할 수 없습니다.

kubeadm setup에서 basic authentication을 구성하려면 아래 지침을 따르세요.

user-details.csv파일을  /tmp/users/user-details.csv 에 생성합니다.

    # User File Contents
    password123,user1,u0001
    password123,user2,u0002
    password123,user3,u0003
    password123,user4,u0004
    password123,user5,u0005

kube-apiserver static pod에서 user detail을 패스하도록 edit하세요. 파일은 /etc/kubernetes/manifests/kube-apiserver.yaml 에 있습니다.

    apiVersion: v1
    kind: Pod
    metadata:
      name: kube-apiserver
      namespace: kube-system
    spec:
      containers:
      - command:
        - kube-apiserver
          <content-hidden>
        image: k8s.gcr.io/kube-apiserver-amd64:v1.11.3
        name: kube-apiserver
        volumeMounts:
        - mountPath: /tmp/users
          name: usr-details
          readOnly: true
      volumes:
      - hostPath:
          path: /tmp/users
          type: DirectoryOrCreate
        name: usr-details

basic-auth 파일을 포함하도록 kube-apiserver 시작 옵션을 수정하세요.

    apiVersion: v1
    kind: Pod
    metadata:
      creationTimestamp: null
      name: kube-apiserver
      namespace: kube-system
    spec:
      containers:
      - command:
        - kube-apiserver
        - --authorization-mode=Node,RBAC
          <content-hidden>
        - --basic-auth-file=/tmp/users/user-details.csv

이 유저들을 위한 필수 roles 과 role bindings 을 만듭니다.

    ---
    kind: Role
    apiVersion: rbac.authorization.k8s.io/v1
    metadata:
      namespace: default
      name: pod-reader
    rules:
    - apiGroups: [""] # "" indicates the core API group
      resources: ["pods"]
      verbs: ["get", "watch", "list"]
     
    ---
    # This role binding allows "jane" to read pods in the "default" namespace.
    kind: RoleBinding
    apiVersion: rbac.authorization.k8s.io/v1
    metadata:
      name: read-pods
      namespace: default
    subjects:
    - kind: User
      name: user1 # Name is case sensitive
      apiGroup: rbac.authorization.k8s.io
    roleRef:
      kind: Role #this must be Role or ClusterRole
      name: pod-reader # this must match the name of the Role or ClusterRole you wish to bind to
      apiGroup: rbac.authorization.k8s.io

생성되었다면, users credentials를 사용하여 kube-api server에 인증할 수 있습니다.

curl -v -k https://localhost:6443/api/v1/pods -u "user1:password123"
반응형

댓글