분류 전체보기 639

github action을 로컬에서 실행해보자

1. 로컬실행이란?github action 로컬실행은 git push를 하지 않고 workflow를 로컬에서 실행하는 방법입니다.  2. 로컬실행의 장점이전에 workflow 변동사항을 확인하기 위해 시간이 매우 많이 걸렸습니다. git push를 하고 workflow가 실행될 때까지 기다려야 했습니다. 로컬 실행은 이 과정을 모두 생략하고 로컬에서 worfklow를 바로 실행하여 시간을 절약합니다. 3. 제약사항github action이 주입하는 설정이 일부 없습니다. 예로 github.event객체의 일부 이벤트필드가 없습니다. 그리고 github 관리자페이지에서 설정한 github action environment, secrets을 가져올 수 없어 별도 설정이 필요합니다. 4. 실행..

github action workflow로 cron을 실행할 때 주의사항

cron 사용방법 github action worklfow는 cron을 지원합니다. 내가 정한 시간에 workflow를 실행할 수 있습니다. 사용방법은 트리거 조건인 on에 schedule필드를 설정하면 됩니다. on: schedule: - cron: "15 4,5 * * *" cron 주의사항 cron을 운영환경에 사용할 때 3가지 주의사항이 있습니다. 치명적인거는 cron이 실행이 지연되거나 안될 수 있습니다. cron에 설정한 시간에 workflow가 실행이 안되고 지연될 수 있다. 때때로 실행이 안될 수 있다. 디폴트 브랜치(main)에 있는 workflow만 cron을 사용할 수 있다.

EKS IRSA 동작원리 톺아보기

1. IRSA란? IRSA(IAM Roles for Service Accounts)는 쿠버네티스 service account에 IAM role을 설정하는 기능입니다. pod는 service account에 설정된 IAM role을 사용하여 AWS리소스 작업을 합니다. pod가 IAM role을 사용할 때, AssumeRoleWithWebIdentity API가 호출되어 assume role이 수행됩니다. 2. 사용방법 사용방법은 매우 간단합니다. service account annotation에 IAM role arn을 설정하면 됩니다. 그리고 2가지 설정이 필요한데 다음 챕터인 [IRSA를 사용하기 위한 설정]에서 설명합니다. 예제코드: https://github.com/choisungwook/eks-..

IRSA가 등장하기 전, 설정했던 방법들

https://youtu.be/J4drta_ImfM IRSA가 등장하기 전에는 쿠버네티스 관리자 또는 개발자가 IRSA와 비슷한 로직을 구현했습니다. 구현 방법은 다양하지만 구현 원리는 아래 범위에서 벗어나지 않습니다. Access key, Secret key를 사용 IAM Assume을 사용(권장) AWS EC2 인스턴스 IAM profile 사용 이 글에서 실습한 예제는 저의 github에 공개되어 있습니다. github 링크: https://github.com/choisungwook/eks-practice/tree/main/irsa/k8s_manifests 1. Access key, Secret key를 사용한 방법(추천하지 않음) Access key, Secret key 방법은 IAM user의 ..

EKS IPv6에서 IPv4통신 원리

https://youtu.be/ieH-jTYRvPA 1. 개요 이 글은 EKS IPv6에서 IPv6 IP를 갖는 pod가 IPv4와 어떻게 통신하는지 설명합니다. 2. 선수지식 EKS IPv6는 듀얼스택 VPC를 사용합니다. 듀얼 스택 VPC에서 IPv6가 IPv4와 통신하기 위해서는, IPv4 주소 앞에 64:ff9b를 사용해야합니다. 자세한 내용은 이전 글과 유투브를 참고해주세요 VPC IPv6->IPv4통신방법 정리 글: https://malwareanalysis.tistory.com/707 VPC IPv6->IPv4통신방법 정리 영상: https://youtu.be/iyLChKT47J4?si=HDtEszDJfqy56nvv 3. IPv4 prefix가 필요없는 EKS IPv6 EKS IPv6에서 p..

EKS IPv6 pod간 통신

https://youtu.be/3c78BQ3inxM 1. 개요 EKS IPv6 pod간 통신은 IPv4원리와 동일합니다. 같은 노드 pod간 통신은 노드 route table을 사용하고 다른 노드 pod간 통신은 노드 route table과 VPC route table을 사용합니다. IPv4와 IPv6차이점이 있다면, IPv6은 IPv6 route table을 사용합니다. 2. 같은 노드 pod간 통신 VPC CNI를 사용하는 EKS에서 같은 노드의 pod간 통신은 노드 route table을 사용합니다. pod가 생성될 때마다 VPC CNI는 노드 route table을 수정합니다. 예를 들어 e09b::1 IPv6 IP를 갖는 pod가 e09b::2 pod와 통신할 때, 노드 route table을 ..

ExternalDNS로 Route53에 cname레코드 등록 방법

시작하며 종종 Route53에 cname 설정이 필요할 때가 있습니다. EKS에서 ExternalDNS를 사용하면 디폴트 설정으로 A레코드가 등록됩니다. 따라서 ExternalDNS로 cname을 설정할려면 추가 설정이 필요합니다. cname설정 방법 방법은 간단합니다. ingress annotations필드에 "external-dns.alpha.kubernetes.io/target"를 지정하면, A레코드 대신 cname이 설정됩니다. apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: nginx-ingress annotations: external-dns.alpha.kubernetes.io/hostname: nginx.example.com e..