DevOps
-
io.kubernetes.client.openapi.ApiException configmaps is forbiddenDevOps/Kubernetes 2024. 4. 8. 17:53
io.kubernetes.client.openapi.ApiException: Message: HTTP response code: 403 HTTP response body: { "kind":"Status", "apiVersion":"v1", "metadata":{}, "status":"Failure", "message":"configmaps is forbidden: User \"system:serviceaccount:default:default\" cannot list resource \"configmaps\" in API group \"\" in the namespace \"default\"", "reason":"Forbidden", "details":{"kind":"configmaps"}, "code"..
-
k8s service 에서 label 을 바꿀때의 다운타임?DevOps/Kubernetes 2022. 4. 25. 00:38
서비스에서 라벨을 바꿀 때의 다운타임Kubernetes에서 애플리케이션을 배포하고 운영하는 과정에서, 서비스의 라벨을 변경해야 하는 상황이 발생할 수 있다. 이러한 변경 과정에서 서비스의 가용성을 유지하는 것이 중요하다.새로운 Deployment 준비첫 번째 단계는 새로운 Deployment를 준비하는 것이다. 새로운 Deployment는 기존 Deployment와 동일한 역할을 수행하지만, 새로운 라벨을 가진다. 이를 통해 서비스 셀렉터가 변경될 때 새로운 Deployment로 트래픽을 라우팅할 수 있다.apiVersion: apps/v1kind: Deploymentmetadata: name: new-deploymentspec: replicas: 3 selector: matchLabels: ..
-
Deployment의 파드가 서비스의 대상이 되려면DevOps/Kubernetes 2022. 3. 30. 23:37
Kubernetes 환경에서 특정 파드를 서비스 대상으로 지정하려면, Service와 Pod 간의 라벨 셀렉터 설정이 정확히 일치해야 한다. 이를 통해 Service는 지정된 라벨을 가진 Pod로 트래픽을 라우팅할 수 있다.Service 정의 예제아래는 Kubernetes Service의 YAML 정의 예제이다. 이 Service는 특정 라벨을 가진 Pod를 대상으로 트래픽을 전달한다.apiVersion: v1kind: Servicemetadata: labels: app: test-app name: test-app namespace: defaultspec: ports: - port: 8080 protocol: TCP targetPort: 8080 selector: ..
-
clusterRole, clusterRoleBindingDevOps/Kubernetes 2021. 10. 29. 08:59
롤과 롤바인딩은 네임스페이스가 지정된 리소스로, 하나의 네임스페이스상에 상주하며 해당 네임스페이스의 리소스에 적용된다는 것을 의미한다. 일반 롤은 롤이 위치하고 있는 동일한 네임스페이스의 리소스에만 액세스할 수 있다. 다른 네임스페이스의 리소스에 누군가가 액세스 할 수 있게 하려면 해당 네임스페이스마다 롤과 롤바인딩을 만들어야 한다. 클러스터 수준 리소스에 액세스 권한을 부여하려면 클러스터롤바인딩과 클러스터롤을 사용해야 한다. 예를 들어 어떤 리소스들은 전혀 네임스페이스를 지정하지 않는데 노드, 퍼시스턴트 볼륨 등이 있다. 클러스터 롤은 네임스페이스가 지정되지 않은 리소스나 리소스가 아닌 URL에 액세스를 허용하는 클러스터 수준의 리소스로 각 네임스페이스에 동일한 롤을 재정의할 필요 없이 개별 네임스페이..
-
Kubernetes 인그레스 요청 흐름DevOps/Kubernetes 2021. 7. 19. 08:36
Kubernetes는 컨테이너화된 애플리케이션의 배포, 확장 및 운영을 자동화하는 오픈소스 플랫폼이다. 그중 Kubernetes 인그레스 요청 흐름에 대해 알아보자. 인그레스는 클러스터 외부에서 내부 서비스로의 HTTP 및 HTTPS 경로를 제공하는 역할을 한다. 이를 통해 도메인 기반의 라우팅이 가능해진다. 1. 요청 시작사용자가 웹 브라우저나 애플리케이션을 통해 인그레스 주소로 URL을 요청한다. 예를 들어, http://myapp.example.com에 접근하는 경우를 가정해보자. 사용자가 입력한 URL 요청은 인터넷을 통해 Kubernetes 클러스터로 전달된다.2. 인그레스 컨트롤러요청은 먼저 Kubernetes 클러스터에 배포된 인그레스 컨트롤러로 전달된다. 인그레스 컨트롤러는 인그레스 리소스..
-
AWS의 Cloud Front 란 ( CDN 서비스 )DevOps/AWS 2020. 9. 6. 23:24
CND이란? Cloud Front는 CDN (Contents Delivery Network)이다. 이미지나 동영상 같은 정적인 콘텐츠들을 서비스한다. 서버가 있는 데이터 센터에서 서비스를 하게 되면 네트워크 latency로 인해 성능이 저하가 된다. 따라서 전 세계의 여러 개의 데이터 센터에 서버를 넣고 ( edge Node, edge Server ) 클라이언트와 가까운 데이터 센터로부터 콘텐츠를 제공하는 서비스이다. 얼마나 많은 지역별 데이터 센터에 edge Node를 설치하고 서비스를 제공하느냐 혹은 각 edge Node의 네트워크 대역폭이나 용량 등은 충분한지에 따라 서비스의 품질을 결정하게 된다. 그 예로 Akamai와 Limelight 등의 업체가 있다. 아마존의 경우도 Cloud Front라는..
-
AWS의 Route 53 DNS 서비스DevOps/AWS 2020. 9. 4. 19:53
Route53 Route53는 AWS에서 제공하는 DNS 서비스이다. DNS란? DNS는 Domain Name(www.helloworld.com)을 IP 주소로 바꾸어 주는 일종의 DIrectionary 서비스이다. 이러한 맵핑 정보를 저장해 놓는 파일은 DNS Zone file이라고 한다. 이 서비스는 DNS 서버에 저장해놓은 파일을 기반으로 주소를 변환한다. 캐슁 DNS 서버의 특성 중에서 주의 깊게 봐야 하는 특성은 캐슁이다. 보통 DNS 서버는 클라이언트가 사용하는 로컬 네트워크에 있는 DNS를 사용하게 된다. 회사 네트워크라면 회사 내의 DNS 서버, 집과 모바일을 사용할 경우 사용할 경우 해당 통신사의 DNS 서버를 사용한다. 이 DNS 서버들은 look up을 요청한 목적 서비스 서버에 대한..
-
kubernetes Tutorials 4. 서비스를 사용해서 App을 공개하기DevOps/Kubernetes 2020. 5. 6. 02:29
지금까지 App은 컨테이너 안에서 돌며 굉장히 private 한 IP를 쓰고 네트워크 역시 isolated 된 상태였다. 따라서 밖에서 쉽게 접근할 수가 없었고 콘솔에다가 kubectl 프락시를 붙이고 그 프락시가 준 IP와 포트 뒤에다가 어떤 특정 API를 통해 POD이름을 주고 이를 통해 접속할 수 있었다. 학습목표 1. 쿠버네티스에서 말하는 서비스란? 2. 레이블과 레이블셀렉터 오브젝트들이 서비스와 어떻게 연관이 있는지 이해하기 3. 서비스를 사용해서 쿠버네티스 클러스터 밖으로 App을 노출시키기 Pods는 언젠가는 죽는다. Pods는 라이프사이클을 가진다고 한다. 어떤 워커 노드가 죽으면 그 노드에서 돌고있는 Pods 역시 사라지게 된다. 그렇게 되면 ReplicationController는 동적..