DevOps/k8s

DevOps/k8s

EKS VPC CNI

Amazon VPC CNI plugin for kubernetes EKS의 각 EC2에 배포되어 추가적인 ENI를 attach 함으로써각 Pod 및 서비스에 할당한다. 즉 EKS에서 실행시킨 pod의 내부 IP 주소(ex. 10.0.0.4)를 할당하기 위해 ENI를 추가한다는 것이다. 장점 기존에 사용하던 overlay network처럼 IP를 할당하는 데에 캡슐화하는 overhead가 발생하지 않는다. 단점 instance 유형에 따라 ENI를 attach 할 수 있는 상한선이 정해져있으므로 각 instance에 대해서 이를 극복하는 추가적인 할당이 불가능하다. Terraform에서 구성 방법 module "vpc_cni_irsa" { source = "terraform-aws-modules/iam/a..

DevOps/k8s

k8s dns ndots

ndots? ndots란 FDQN으로 인지하기 시작하는 .(dot)의 개수이다. $ cat /etc/resolv.conf search default.svc.cluster.local svc.cluster.local cluster.local ap-northeast-2.compute.internal nameserver 10.100.0.10 options ndots:5 위와 같이 조회할 수 있으며, ndots:5에서 5가 n의 역할을 하고 기본적으로 n의 기본값은 resolve.conf man 문서에서 다음과 같이 1이라 이야기한다. ndots:n sets a threshold for the number of dots which must appear in a name before an initial absolu..

DevOps/k8s

k8s의 보안

Service Account k8s에서는 권한을 제어하기 위해 UserAccount와 ServiceAccount를 제공한다. 이때 UserAccount는 GKE의 google 계정, EKS에서의 IAM 계정과 연결되어 있어 k8s 관리 대상이 아니다. UserAccount는 Cluster 수준에서 사용되며, 이에 반해 ServiceAccount는 네임스페이스에서 사용된다. 또한 어떠한 pod라도 반드시 SA가 하당되어야하며, 이를 통해 SA 기반 인증/인가를 진행하고 만약 이를 할당하지 않을 시 기본 account로 할당한다. 실습 $ k create serviceaccount sample-serviceaccount serviceaccount/sample-serviceaccount created $ k ..

DevOps/k8s

k8s SealedSecret 사용법

SealedSecret이란? k8s에서 가장 많이 함께 이용되는 개념 중 하나인 GitOps에서는 매니페스트를 저장소에 배치한다. 이때 배치된 저장소에는 secret도 함께 올라가게 되는데 이 소스는 Base64 encode되있을 뿐 암호화되지 않는다. 때문에 이를 암호화하여 서비스 노드에서 작동할 수 있도록 하여야하는데, 이때 사용하는 대표적인 도구가 SealedSecret이다. Problem: "I can manage all my K8s config in git, except Secrets." Solution: Encrypt your Secret into a SealedSecret, which is safe to store - even inside a public repository. > The Se..

DevOps/k8s

느슨한 결합을 위한 ExternalName 서비스

Externalname이란 k8s에서 외부 서비스를 이용할 때 externalname을 사용할 때 사용자가 k8s 컨트롤플레인에 external name질의하게되고, 질의 시에 등록한 cname 레코드가 나오게 되며 이후 요청이 처리된다. apiVersion: v1 kind: Service metadata: name: sample-externalname namespace: default spec: type: ExternalName externalName: external.example.com 질의 시에 아래이 표시된다. dig sample-externalname.default.svc.cluster.local ; DiG 9.16.1-Ubuntu sample-externalname.default.svc.cl..

DevOps/k8s

K8S server-side apply & managed fields

Server-side apply k8s에서는 기본적으로 명령어 실행 시 클라이언트측에서 매니페스트와의 차이를 계산하여 패치를 요청한다.(Client-side apply) 하지만, 이러한 방식은 여러 사용자(CI/CD, 또는 여러 명의 관리자) 가 동시에 같은 필드를 수정하는 요청을 보낼 경우 경합 현상이 발생할 수 있다. 이를 해결하기 위해 필드를 변경한 manager를 기록하고 서버 측에서 변경 사항을 계산하는 기능이 도입되었다. 예시 매니페스트 파일 내용(sample-pod.yaml) apiVersion: v1 kind: Pod metadata: name: sample-pod spec: containers: - name: nginx-container image: nginx:1.16 [user@MacB..

xlwdn98767
'DevOps/k8s' 카테고리의 글 목록