목록분류 전체보기 (184)
후니의 IT인프라 사전
VPC 통제 3요소 - 네트워크 인터페이스의 사용- 보안그룹- 네트워크 ACL- 라우팅 테이블 접근제어 (보안그룹과 NACL)접근 제어는 컴퓨팅 서비스를 보호하는 장치이다. 온프레미스에서는 방화벽으로 사용하는 것이다. 접근제어 방식비교방화벽의 접근제어 방식을 알아보자 BlacklistWhitelist기본 정책모든 트래픽 허용 / 블랙 리스트만 차단Deny Rule1Deny Rule2All Allow모든 트래픽 차단 / 화이트 리스트만 허용Allow Rule1Allow Rule2All Deny 일반적으로는 모든 트래픽을 기본 허용하는 블랙 방식은 관리자가 차단 리스트를 모두 알아야 하는 단점이 있어 화이트 방식으로 사용하는게 좋다. 다만 뭐든 정답은 없고 상황에 맞게 하는 것이 최선이다. 정말 필요한 트..
1서브넷 그룹 1.1 단일 AZ일 경우 - 사용하는 서비스 : RDS, Redshift특징 : 서브넷의 모음, 서브넷은 특정 가용영역 속에 존재하기 때문에 그룹으로 묶어서 RDS 장애시에 옮겨갈 수 있는 다른 서브넷을 미리 지정하는 것과 같다. RDS는 가동 중에도 서브넷 그룹을 변경할 수 있다. (Aurora를 제외한 모든 엔진이 지원) 일반적으로는 같은 가용영역 내에서 이동이 가능하다. 다른 서브넷 그룹에 현재의 가용영역과 같은 곳이 없다면 이동할 수 없다. 기존 RDS 인스턴스에 퍼블릭 액세스 옵션이 켜져있다면 AWS는 서브넷 변경 전 다음 조건을 추가로 확인한다.1) 변경 대상 VPC에도 IGW가 연결됐는지 확인한다. (서브넷 라우팅 타겟에 IGW 지정 여부까지 검사하지는 않는다)2) DNS ..
기본 개념ISP(Internet Service Provider)에서 할당한 것이 Public IP이다.AWS에서는 AWS IPv4 pool에서 가지고 있는 IP를 할당하는데 여기서 할당한 IP는 동적 IP로 움직인다.그런데 정적 IP를 할당받고 싶다면 EIP(Elastic IP)를 할당하면 된다. 이는 AWS 계정에 AWS IPv4 pool에서 가지고 있는 IP를 직접 할당해 주는 방식으로 동작한다.AWS에서는 ENI라는 가상 인터페이스를 통해서 IP를 할당해 트래픽을 주고 받을 수 있도록 하고 있다. Elastic IP 서비스는 AWS 계정 내의 리전에 공인IP를 할당하는 것으로 해당 서비스를 이용하면 정적 공인 IP를 소유할 수 있다. ENI (Elastic Network Interface)온프레미..
해당 내용은 https://newstars.cloud/593 블로그를 보고 재작성한 것입니다. nativefier라는 npm 패키지를 사용하면 사이트도 앱으로 만들어서 앱처럼 접속할 수가 있는데, 마치 윈도우 바로가기 느낌입니다.먼저 npm이 없으신분은 npm 설치를 해야합니다.brew install npm -g는 전역옵션으로 nativefier를 설치합니다.npm install -g nativefier 내가 원하는 사이트를 nativefier로 만듭니다.nativefier "https://claude.ai/" --platform mac 빌드가 다 되면 해당 경로로 들어가면됩니다.
해당 내용은 kubernetes 1.23 beta에서 시행된 내용입니다.1.27 이전에는 Topology Aware Hints라는 내용으로 잘 알려져있습니다. kubernetes 공식문서에서 확인할 수 있습니다.기능가장 활용도가 높은 곳은 아무래도 multi-zone을 사용하는 환경에서 매우 좋습니다. 해당 기능의 목적은 해당 존에서 발생한 트래픽은 해당 존에서 유지되는 것을 목표로 합니다. 활용도비용적인 측면에서도 다른 AZ에 대해서 통신을 하지 않기 때문에 많이 절약할 수 있고 네트워크 홉도 줄 일 수 있게 됩니다. 아무래도 각 AZ 별로 엔드포인트가 많아야 효용이 높습니다. 활용 방법service.kubernetes.io/topology-mode=auto 라는 annotation을 service에..
문제컨테이너를 배포하였는데, 다음과 같이 no match for platform 에러가 발생한다면, 당신이 사용하는 컨테이너 이미지가 실제 컨테이너 환경의 호스트의 아키텍처와 일치하지 않기 때문에 발생하는 에러이다. Warning Failed 9s (x3 over 55s) kubelet Failed to pull image "kingdom0220/version-patch:v1": rpc error: code = NotFound desc = failed to pull and unpack image "docker.io/kingdom0220/version-patch:v1": no match for platform in manifest: not found Warning Fa..
Ingress 소개Ingress는 클러스터 내부의 서비스(Cluster IP, NodePort 등)를 외부로 노출시켜 Web Proxy 역할을 하는 쿠버네티스 오브젝트이다.기존에 NodePort는 노드 포트를 노출해야하는 단점이 있으므로 대부분 LoadBalancer 타입을 쓸 것이다.다만 문제는 LoadBalancer의 경우 L4 계층에서 동작하므로 TCP/UDP와 같은 프로토콜을 읽을 수 있으며, HTTP와 같은 프로토콜의 정보를 세부적으로 읽을 수 없다. 그래서 L7에서 동작하는 Ingress를 통해서 외부에서 들어오는 HTTP 정보도 읽을 수 있도록 설정할 수 있다. 외부 로드 밸런서AWS LoadBalancer Controller (Ingress Controller)가 Ingress 규칙을 파악..
해당 블로그 글을 참조해서 작성한다. AWS LoadBalancer Controller의 필요성과 기능AWS 로드밸런서 컨트롤러를 통해서 사용자는 좀 더 쉽게 EKS에서 service 타입으로 외부에 서비스를 노출할 수 있다. 특히 자동으로 대상 그룹에 등록할 수 있는 TargetGroupBinding이라는 CRD 항목도 제공해서 자동으로 Pod의 IP를 대상그룹으로 등록해주고 심지어는 IP가 바뀔때마다 자동으로 배포해주고 health check도 진행한다는 점에서 매우 간편하고 운영 효율성이 높아지게 된다.뿐만아니라 AWS의 WAF 등 다양한 서비스와 결합이 가능하기 때문에 매우 좋다.로드밸런서 컨트롤러는 타겟 유형에 따라서 다음과 같이 2가지 모드를 지원하고 있다. Instance 모드Instanc..
AWS VPC CNICNI는 Container Network Interface로 컨테이너 간의 소통에 반드시 필요한 플러그인이다. 쿠버네티스가 컨테이너 오케스트레이션 툴이기 때문에 사실상 CNI가 없다면 쿠버네티스 네트워크가 없다는 것과 동일한 말이다.그 중 오늘은 AWS VPC CNI에 대해서 작성해본다. AWS에서 제공하는 플러그인으로 CNI인데 컨테이너가 VPC 내부로 편입할 수 있도록 네트워킹을 구성해주는 플러그인이다. 이를 이용하면 파드와 노드의 IP 대역을 같도록 맞춰준다. 즉 같은 네트워크 대역대에서 통신하므로 원본 패킷을 그대로 유지하고 네트워크 홉을 줄일 수 있다는 장점이 있다. 공식문서에서도 확인해보기 바란다. Amazon VPC CNI - Amazon EKSThe most frequ..
Network PolicyCilium은 L3, L4 뿐 아니라 Envoy를 통해서 L7 까지 통제를 할 수가 있다. 아무래도 Envoy를 사용하기 때문에 다양한 기능이 가능한 것 같다. Cilium은 3가지 기반의 보안 레벨을 제공한다. ID(Identity-Based)기반 (L3보안)아래 그림에서 role=frontend라고 라벨을 가지고 오는 통신은 role=backend라는 라벨이 붙은 리소스에 연결을 허용한다. 해당 라벨을 ID를 말한다고 볼 수 있다. 이에 해당하는 yaml은 다음과 같다.apiVersion: "cilium.io/v2"kind: CiliumNetworkPolicymetadata: name: "l3-rule"spec: endpointSelector: matchLabels:..
배포배포방식은 공식문서에 자세하게 나와있으며 다양한 방식으로 배포할 수 있습니다.helm repo add cilium https://helm.cilium.io/helm repo update 실습 배포 helm 명령어helm install cilium cilium/cilium --version 1.16.3 --namespace kube-system \--set k8sServiceHost=192.168.10.10 --set k8sServicePort=6443 --set debug.enabled=true \--set rollOutCiliumPods=true --set routingMode=native --set autoDirectNodeRoutes=true \--set bpf.masquerade=true -..