NLB에는 Security Group적용 불가 아래와 같이 Service Spec에 loadBalancerSourceRanges 를 선언하여 제한 할수 있다 loadBalancerSourceRanges: - "143.231.0.0/16" 다만 위 방법을 사용하려면 SNAT가 걸리면 안되는데 기본적으로는 nlb에 SNAT가 걸리게 되어있음 서비스에 아래의 어노테이션을 추가하여 SNAT가 안걸리도록 설정한다 service.beta.kubernetes.io/aws-load-balancer-target-group-attributes: preserve_client_ip.enabled=true 위와같이 2가지 설정을하면 nlb오브젝트 자체에 sourceranges제한을 걸어줌으로써 sg와 동일한 효과를 낼 수 있음..
EKS의 경우 클라우드답게 일반적으로 사용되는 CNI(flannel,calico등등)가 아닌 aws 자체 cni를 지원하며 이게 디폴트 값임 물론 타사 CNI를 못쓰는건 아니지만 aws-cni를 선택하게 되었는데 선택하게 된 장단점을 정리 가장큰 차이점은 aws-cni에서는 오버레이 네트워크를 사용하지 않는다는 점 이다 일반적으로 타사 cni의 경우 파드네트워크로 선언된 네트워크에 vxlan,ip-ip등을 통해 오버레이 네트워크를 구현 한다 많은 장단점이 있겠으나 당장 생각나는 부분만 정리하면 일반적인 cni사용시 장점 ip의 제한이나 네트워크의 제한없이 자유롭게 pod네트워크를 구성 할 수 있음 k8s의 networkpolicy지원(네트워크 정책도 k8s오브젝트로 컨트롤 할 수 있음) 패킷이 기본적으로..
커맨드로 secret을 생성하면 평문입력하면 자동으로 base64인코딩을 해주지만 일을하다보면 기존 secret에 데이터를 추가하는 경우가 있다 이경우는 patch나 여러가지 방법이 있겠지만 간단하게는 쉘에서 base64명령어를 이용, 인코딩해서 추가할때가 많이 있다 이런경우에 그냥 단순히 echo “word” |base64로 돌리면 줄바꿈 문자가 들어간다.. 눈으로 보이진 않으나 앱내부 구동시 \n로 표현된다 아래와 같이 echo -n 옵션으로 base64 인코딩 해야함 ybchoi@ybchoiui-MacBookPro app % echo "word" |base64 d29yZAo= ybchoi@ybchoiui-MacBookPro app % echo -n "word" |base64 d29yZA== 위와같이..
PVC(PV)의 용량이 부족할 경우 pvc를 확장 할수 있다 일반적으로 이 기능은 스토리지에서 지원해야 하며 ebs의 경우 기본 지원함 스토리지 클래스 내에 allowVolumExpansion이 true상태여야만 한다(기본값에는 아래값 없으므로 edit로 수정하여주면 됨) allowVolumeExpansion: true kubectl get pvc -n scylla NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE data-pet-i-pet-i-scylla-pet-i-scylla-dev-1 Bound pvc-02f89b78-be9e-4e6e-bf54-8abfa6e86978 5Gi RWO gp2 16h kubectl exec -it -n scylla p..
여러가지 pod 스케쥴링 기법을 적절하게 잘 활용하여야 한다 일반적인 배포방법 (deploy,statefulset,daemonset) 각각의 pod 컨트롤러를 사용하여 기본적으로 배치 deployment = 수량에 맞게 적절하게 배포됨 statefulset = 수량에 맞게 순서대로 headless서비스와 pv를 붙힐수 있음 daemonset = 모든 노드에(혹은 노드셀렉터 사용) 원하는 파드를 배치 일반적인 배포 + 노드셀렉터 사용 파드를 배치할때 노드 셀럭터를 이용하여 특정 노드나 특정 노드그룹에만 파드를 스케쥴 할 수 있음 일반적인 배포 + 어피니티 사용 어피니티를 사용하면 좀더 복잡한 전략을 사용하여 파드를 스케쥴링 할 수 있음 어피니티도 기본은 레이블링 이지만 노드/파드를 다 선택하여 파드를 배치..
configmap과 secret은 쿠버네티스의 데이터를 저장하거나 기밀 정보를 저장하는대 사용 된다 민감한 항목의 경우 secret을 기밀데이터가 아닌 경우 configmap을 사용 하면 됨 일반적으로 configmap의 경우 key: value 데이터를 secret의 경우 인증정보를 저장해놓고 pod를 생성할때 변수로 사용하거나 직접 volume으로 마운트 할 수 있음 변수는 개별 변수를 직접 선언하여 사용할수도 있고 configmap이나 secret을 통으로 변수로 불러들여 사용 할수도 있다 또한 configmap을 이용하여 key: value형식이 아닌 conf등 파일등을 저장하여 pod에 mount하여 사용할수도 있다 일반적으로 pod내 데이터는 휘발성이고 이를 유지하려면 pv를 사용하여야 한다,..
EKS에서 서비스 생성할때 별다른 설정을 안해주면 External LB타입으로 생성이 된다 외부노출이 필요하지 않는 경우 External로하면 보안 문제가 발생된다 해서 이럴때 사용할수 있는 Internal LB생성에 대한 방법 정리 먼저 서브넷에 아래와 같은 태그가 있어야 한다(보통은 프라이빗 서브넷) kubernetes.io/role/internal-elb: 1 Internal LB는 해당 태그가 붙어있는 서브넷에 생성됨 위 태그가 있는 서브넷이 있다면 서비스를 생성할때 아래와 같이 어노테이션을 주어 생성한다 metadata: annotations: service.beta.kubernetes.io/aws-load-balancer-internal: "true" service.beta.kubernetes..
기본값으로 비활성화 되어있는 인증관련설정을 활성화 함 7버전부터 인증설정이 없으면 익명사용자로 작업시 경고 메시지 출력됨 09:01:10 WARN org.elasticsearch.client.RestClient - request [GET ] returned 1 warnings: [299 Elasticsearch-7.17.1-e5acb99f822233d62d6444ce45a4543dc1c8059a "Elasticsearch built-in security features are not enabled. Without authentication, your cluster could be accessible to anyone. See to enable security." 아무런 인증없이 엘라스틱서치/키바나 사용할..