ingress 상태에 아래와 같이 메시지 출력됨 / ssl-redirect:use-annotation () ssl-redirect는 정상 작동 중임 현재는 아래와 같이 manifest가 선언되어있음 apiVersion: extensions/v1beta1 kind: Ingress metadata: namespace: default name: ingress annotations: kubernetes.io/ingress.class: alb alb.ingress.kubernetes.io/certificate-arn: arn:aws:acm:us-west-2:xxxx:certificate/xxxxxx alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80}, {"HTTPS"..
jenkins 와 argocd 를 사용하여 CI/CD를 하는 Gitops를 사용하고 있다 argocd의 경우 배포용 레포가 존재하는데 해당 레포에 시크릿 데이터가 올라간다 레포에 보안을 설정하긴 하겠지만 평문(base64인코딩이며 절대 암호화가 아님)으로 저장되는것이 불안하다면 이미 여러가지 솔루션이 있다 나의 경우 간단하게 도입이가능하고 딱 레포에 시크릿을 암호화하고싶다는 니즈만 있었으므로 Sealed secrets을 사용함 https://github.com/bitnami-labs/sealed-secrets/ GitHub - bitnami-labs/sealed-secrets: A Kubernetes controller and tool for one-way encrypted Secrets A Kubern..
기본으로 설치시 구성되는 SC는 csi를 사용하지 않음 즉 과거의 방식(k8s가 직접 aws와 통신하여 볼륨을 생성하고 제어함) 임 csi드라이버(eks에서 추가기능으로 설치 가능)를 설치하고 provisioner를 ebs.csi.aws.com 로 하는 sc를 생성하여 사용한다 이경우 k8s → csi → aws로 제어되며 aws에서 직접 볼륨을 컨트롤 함 최근에는 csi를 쓰는 방식이 보편화 되어있고 k8s provisioner는 안쓰는 추세(업그레이드가 안됨)이므로 csi를 사용하도록 한다
이하 PDB 각 파드 컨트롤러에 최소/최대 유지 갯수를 설정한다 오브젝트를 따로 설정하여야함 apiVersion: policy/v1 kind: PodDisruptionBudget metadata: name: zk-pdb spec: maxUnavailable: 1 selector: matchLabels: app: zookeeper maxunavailable(최대 사용불가능한 파드)과 minavailable(최소로 살아있어야 하는 파드)을 이용하여 설정한다 관리자가 강제로 여러노드에 drain을 걸거나 했을때 일반적인 replicas로 만은 보호되지 않는 파드의 최소 구동을 보호하여 준다 다만 노드장애나 전체적인 시스템 장애등의 상황에서는 어쩔수 없고 예상가능한 상황에서의 보호장치라고 보면 될듯
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..