AccessingAPI
Last updated
Last updated
μ°λ¦¬κ° k8sλ₯Ό μ€μΉν λ kubectlμ μ€μΉνμ¬ cliλ₯Ό ν΅ν΄ μμμ μ‘°ννλ κ²λ k8s api serverμ μ κ·Όνμ¬ μ‘°ννκ² λλλ° cluster λ°μ κ΄λ¦¬μλ μ¬μ©μκ° μ κ·Όνκ³ μ ν λλ μΈμ¦μ
λ₯Ό κ°μ§κ³ μλ μ¬λλ§ httpsλ‘ μ‘°νλ₯Ό ν μ μκ³ κ΄λ¦¬μκ° kubectlλͺ
λ Ήμ΄λ‘ proxy
λ₯Ό μ΄μ΄μ£Όμλ€λ©΄ httpλ‘ μΈμ¦μ μμ΄ μ κ·Όμ΄ κ°λ₯νλ€. λν, kubectlμ clusterλ΄λΏλ§μ΄ μλλΌ λ°μμλ μ€μΉκ° κ°λ₯νλ° Config
κΈ°λ₯μ νμ©νμ¬ μ¬λ¬κ°μ clusterμ μ μμ΄ κ°λ₯νκ³ μ΄λ¬ν λΆλΆλ€μ User Account
λΌκ³ νλ€.
λ§μΌ podμμ api serverμ μ κ·Όνκ³ μ νλ €κ³ νλ©΄ 보μμ λ¬Έμ κ° μκ² λκΈ° λλ¬Έμ Service Account
λ₯Ό μ΄μ©ν΄ podμμ api serverμ μ κ·Όν μ μμ΄ μΈλΆ podμμλ μ κ·Όμ΄ κ°λ₯νλ€.
k8s μ€μΉμμ kubeconfig
λΌλ ν΄λΉ clusterμ μ κ·ΌνκΈ° μν νμΌμ΄ μ‘΄μ¬νκ³ μΈμ¦μμ keyλ±μ μ 보λ₯Ό ν¬ν¨νκ³ μμ΄ μΈλΆμμ client crt/key λ₯Ό ν¬ν¨νμ¬ httpsμμ²μΌλ‘ api serverμ μ κ·Όμ΄ κ°λ₯νλ€. λν kubectl μ€μΉμμ λ΄λΆμ μΌλ‘ kubeconfigλ₯Ό 볡μ¬νμ¬ μ€μ νκΈ° λλ¬Έμ kubectlμ ν΅ν΄ api serverλ₯Ό νΈμΆν μ μκ³ Proxyμ΅μ
μ accept-hosts
μ£Όλ©΄ kubectlμ΄ μΈμ¦μλ₯Ό κ°μ§κ³ μκΈ° λλ¬Έμ μ¬μ©μλ httpμμ²μΌλ‘ μΈμ¦μμμ΄ μ κ·Όμ΄ κ°λ₯νλ€.
kubectl config setting
kubeadm / kubectl / kubelet μ€μΉ yum install -y --disableexcludes=kubernetes kubeadm-1.15.5-0.x86_64 kubectl-1.15.5-0.x86_64 kubelet-1.15.5-0.x86_64
admin.conf μΈμ¦μ 볡μ¬
proxy λμ°κΈ° nohup kubectl proxy --port=8001 --address=192.168.0.30 --accept-hosts='^*$' >/dev/null 2>&1 &
μΈλΆμ kubectlμ μ€μΉνμ¬ μ¬λ¬κ°μ clusterμ μ κ·Όνκ³ μ ν λ ν΄λΉ kubectlλ΄μ κ° clusterμ kubeconfig
νμΌμ΄ μ‘΄μ¬ν΄μΌ νλ€.
kubeconfigμμλ clusters
, users
, contexts
λ±μ μ€μ μ΄ μ‘΄μ¬νλ€.
clusters : ν΄λΉ νλͺ©μΌλ‘ ν΄λ¬μ€ν°λ₯Ό λ±λ‘μ΄ κ°λ₯νλ€.
name : ν΄λ¬μ€ν° μ΄λ¦
url : μ°κ²°μ 보 ( ip )
ca : μΈμ¦μ νμΌ
users : ν΄λΉνλͺ©μΌλ‘ μ¬μ©μλ₯Ό λ±λ‘μ΄ κ°λ₯νλ€.
name : μ¬μ©μ μ΄λ¦
crt : μ¬μ©μ μΈμ¦μ νμΌ
key : κ°μΈ ν€
contexts : ν΄λ¬μ€ν°μ user μ°κ²° μ 보
name : 컨ν μ€νΈ μ΄λ¦
cluster : μ°κ²°ν ν΄λ¬μ€ν° μ΄λ¦
user : μ°κ²°ν μ¬μ©μ μ΄λ¦
namespaceλ₯Ό λ§λ€κ² λλ©΄ νλμ default
λΌλ μ΄λ¦μ ServiceAccount
κ° λ§λ€μ΄μ§κ³ μ΄ ServiceAccountλ νλμ Secret
μ κ°μ§κ³ μλλ° λ΄μ©μΌλ‘λ μΈμ¦μ
μ token
κ°μ΄ ν¬ν¨λμ΄μλ€.
νλλ₯Ό λ§λ€κ² λλ©΄ μ΄ ServiceAccountκ° μ°κ²°μ΄ λκ³ Podλ μ΄ tokenκ°μ ν΅ν΄μ api serverμ μ°κ²°μ΄ κ°λ₯νκ³ ν΄λΉ tokenκ° λ§ μλ€λ©΄ μΈλΆμμλ μ κ·Όμ΄ κ°λ₯νλ€.
k8sκ° μμμ λν κΆνμ μ§μνλ λ°©λ²μ μ¬λ¬κ°μ§κ° μ‘΄μ¬νλ€. (RBAC, ABAC, Webhok, Node)
k8sμλ Node
, PV
, Namespace
μ κ°μ΄ cluster λ¨μλ‘ κ΄λ¦¬λλ μμκ³Ό Pod
μ Service
μ κ°μ΄ namespaceλ¨μλ‘ κ΄λ¦¬λλ μμμ΄ μ‘΄μ¬νκ³ ServiceAccount
, Role
, RoleBinding
λ μμ±μ΄ κ°λ₯νλ€. ServiceAccountμ Roleκ³Ό RoleBindingμ μ΄λ»κ² μ€μ νλλμ λ°λΌ κ°μ namespaceμ μμλ§ μ κ·Όνκ±°λ clusterμ μμμ μ κ·Όνλλ‘ λ³κ²½ν μ μλ€. Roleμ μ¬λ¬κ°λ₯Ό λ§λ€ μ μκ³ κ° Roleμλ μ½κΈ°/μ°κΈ° κΆνμ μ€ μ μμΌλ©°, RoleBindingμ Roleμ μ§μ νλ μμμΌλ‘μ¨ Roleμ νκ°λ§ μ§μ μ΄ κ°λ₯νκ³ ServiceAccountλ μ¬λ¬κ° μ§μ μ΄ κ°λ₯νλ€.
ServiceAccountμμ clusterμμμ μ κ·ΌνκΈ° μν΄μλ ClusterRoleκ³Ό clusterRoleBindingμ΄ μμ±λμ΄μΌ κ°λ₯νκ³ κΈ°λ₯μ roleκ³Ό rolebindingκ³Ό λμΌνλ€. νμ§λ§ RoleBindingμμ clusterRoleBindingμ΄ μλ ClusterRoleλ₯Ό μ§μ μ§μ μ΄ κ°λ₯νλ° μ΄κ²½μ°μλ ν΄λ¬μ€ν° μμμλ μ κ·Όμ΄ λΆκ°λ₯νκ³ κ°μ namespaceμ μμλ§ μ¬μ©μ΄ κ°λ₯νλ€.
μ΄λ roleμ λ§λ€μ΄μ¬μ©νλ κ²κ³Ό λμΌνλ° μ΄λ κ² μ¬μ©νλ μ΄μ λ λͺ¨λ namespaceλ§λ€ λκ°μ roleμ λΆμ¬νκ³ κ΄λ¦¬νλ μν©μμ roleμ λ΄μ©μ΄ λ³κ²½μ΄ λλ κ²½μ°λΌλ©΄ λͺ¨λ namespaceλ₯Ό νλνλ λ³κ²½ν΄μ£Όμ΄μΌ νμ§λ§ μ΄μ²λΌ μ¬μ©νλ©΄ clusterRoleλ§ λ³κ²½νλ©΄ λκΈ° λλ¬Έμ μ¬μ©νλ€.
Roleκ³Ό RoleBindingμ ν΅ν΄ ServiceAccountμ μ°κ²°μ ν΄μ£Όκ² λλ©΄ μΈλΆμμ Secretμ tokenκ°μ κ°μ§κ³ API Serverμ μ κ·Όν μ μκ³ , ν ν ν°μΌλ‘ ν΄λ¬μ€ν°λ¨μμ μμμ μ‘°ννκΈ° μν΄μλ ClusterRolerκ³Ό ClusterRoleBindingμ μμ±νμ¬ ClusterRoleBindingμ ServiceAccountμ μ°κ²°ν΄μ£Όλ©΄ λλ€.
ν namespaceλ΄ μμ μ κ·Ό
ν clusterλ΄ μ¬λ¬ namespace μμ μ κ·Ό