The first half retrospective


Background

  • I am writing this to plan for the rest of 2024 and I have completed tasks of the first half of the year. Also a bit of duty?
  • When I write a post, I always have too many thoughts in my head which makes my writing so long. However I decided to write short for this one. Work in company, my work and self-development.


Work in Company

January to June

January

I got a new work but it changed one in middle of month. Technically it was focus on learning than doing practical work which makes me busy. I carried on with my existing tasks while also taking on new ones. It was a hectic time as I was learning new things.

Feburary to March

I did my work while communicate with other services. About that I realized communication take huge part in work and learned small things. I did previous mentioned work, resolved issues and developed small functions. By communicating with many people, I realized that communication is truly an important skill for an engineer. While I can’t say that I’ve significantly improved any specific communication skills, I feel that my fear has diminished somewhat, and I’ve developed more resilience.

April to June

Since project due was June, I worked on tasks to meet the deadline. I solved many small issues and communicated hard. We thought “Can we do this?” but we did it. Since it was a project I had been working on for quite a long time, I felt proud to have completed it. As before, I only handled small issues and minor feature development.


So how was Janurary to June?

I wrote in above… I didn’t create anything that could be considered as an achievement. I worked hard towards completing the project due in June and managed to resolve some difficult situations along the way. Found issue in terraform, add code for new database, open case for incident, make network connection by communicating with service I solved each issue step by step. I focused solely on completing the project, setting aside development related tasks. It feels satisfying to have finished it. Now I hope to tidy up the backlog and work on developing new features. (Of course, taking a break would be even better!)

Here are some things that I felt until June.

  • To engineer communication skill is as important as development skill. It involves ensuring mutual understanding, conveying tasks effectively, and comprehending requirements. If these aspects are not well executed, they ultimately affect the software product. For example miscommunication could lead to request tasks again or revisit discussions due to differing understandings.
  • Make doubt to many things. People can make mistakes and it’s necessary to examine each step of the processes are done carefully. In this context doubt doesn’t imply blaming someone, but rather recognizing that issues can arise from human inputs or similar factors, and thus it’s important to communicate to clarify. It’s necessary to have doubt not only of people but also of open-source software. Since it’s human verified, mistakes can occur and it’s important to look into issues when they arise. In fact, I’ve encountered issues in the past by always pulling the latest code. Initially, I didn’t suspect anything and could have gone down the wrong path, but I found relevant information through a search and was able to resolve it.
  • It’s not all about technical skills. Something that could be resolved in 10 minutes technically might take 10 days due to emotional issues. There was a case that work time becomes longer due to newly created process in service part even though development were done. There was a case that owner told us that they cannot corporate but we asked to high level manager to corporate it. After that issue was solved. It seems that sometimes problems can be resolved not only through development but also by communication with people.

It could be disappointed that there were no technical achievement or impressive cases. However, I feel I’ve learned a lot beyond development.

There are some things of management and administration that I could not understand. There are few things that makes me question mark on my head. Those are distribution of tasks or team members, collaboration with other departments, and assignments coming from above. I often asked to myself, “What would I have done if I were them?” while watching various high level decision makers in both the company and politics. There were more times when I felt angry, frustrated, or confused inside.

It was particularly difficult to concentrate. There were frequent interruptions while working. There were some factors such as issues arising, other work requests coming in, or changes in priorities. I wanted to focus on the tickets in the sprint but various requests and issues made it difficult to concentrate which leads to decreased productivity. Although it could be an issue of my ability, the entire team member felt the same way. I thought it would be good if this could be improved and I would like to improve it.

I’ve been feeling a bit exhausted both physically and mentally lately. There have been moments of laziness and procrastination. Also I’ve even avoided things I should have done. There were times when I focused only on my own tasks and couldn’t help others due to lack of time. I think fatigue was a factor which coupled with various things to care about. Rushing can only lead to burnout. So from now on, I plan to take breaks when I feel tired or overwhelmed.

Although I have so many stories and thoughts I want to write, I’ll stop here for now. I usually have a lot of thoughts but when I try to write them down they end up all over the place. From now on I will write them in a journal whenever they come to mind.


My Work and Self-Development

Blog

One of my favorites is my blog. I tried to make a post when I have a time. Previously I mainly wrote about what I learned and what I experienced. However nowadays I tried to write about case. Still writing a post takes so much time… At least it takes 3 hours. Since other people can read my blog, this make me to spend much time on writing a post. However spending too much time should be amended. I also write post in english which also takes much time. Nowadays I strongly depend on translator.

In the future, I plan to write about various topics. I intend to write more diverse views, including what I’ve studied, records, case studies, and more, without being constrained by format.

Game

As I wrote before, I’d like to make game and give message to users. So after work or on weekends, I tried to make time to study. Since I have already studied Unity, I am currently learning Illustrator to draw my own design resources.

These days my physical energy can’t keep up with my enthusiasm so I can hardly get anything done… (It breaks my heart. Oh, my body!) Still, I try to study for at least 10 minutes.

In last of this year, my goal is to publish my game. I’d like to create a game quickly to send messages and make people feeling moved and touched.

English Studying

I wish to speak many foreign languages but its not easy. I listen to english conversation when I walk or work out. Since I don’t have much time, I plan to study consistently in this way.

Major and Development Study

I have many curiosity which make me to search and study in usual day. There are many courses in company which also makes me to study. I just hope keep this habit for long.

Company DX Creator

One of my goals is to present on a big stage. So I applied to DX Creator in company and working on it now. DX Creators are employees in the DX (Device eXperience) Divison who plan, appear in, film, and edit videos of work life. It’s a step towards my goal. It feels refreshing and helpful.

I’m also actively participating here to prepare for presenting in front of the camera.


Rest 2024 Goals

It seems like this writing become long again. Whatever I briefly write my goals of rest 2024.

  • I’m working hard enough, but this year, I want to achieve something significant and also give a presentation.
  • I wrote mainly about work but health is the most important thing. Nothing is more important than health.
  • Keep work hard and live diligently.
  • Time is one of the best precious things. Focus and concentrate what I do.
  • In life there are priorities. Live according to those priorities and values. Family is important!

Reflecting on myself while writing this post. It was a quite good 6 months. I hope to spend the rest of 2024 well.

Keep live humbly and diligently always doing my best despite my shortcomings!

kubectl port-forward 사용 방법과 예제


환경

  • Kubernetes
  • kubectl


배경

  • Kubernetes 사용 시 포트 포워딩을 자주 사용하는데 사용법을 까먹어서 기억할 목적으로 정리.


kubectl port-forward

공식 문서

  • 공식 문서에 보면 예시가 잘 나와있다.
  • Pod뿐만 아니라 DeploymentService에도 사용할 수 있었다.
  • --address 옵션을 사용하면 수신할 IP 주소를 지정할 수 있다. ,로 구분되며 기본값은 localhost127.0.0.1다.

사용 방법

kubectl port-forward TYPE/NAME [options] [LOCAL_PORT:]REMOTE_PORT [...[LOCAL_PORT_N:]REMOTE_PORT_N]

예시

 # Listen on ports 5000 and 6000 locally, forwarding data to/from ports 5000 and 6000 in the pod
 kubectl port-forward pod/mypod 5000 6000
  
 # Listen on ports 5000 and 6000 locally, forwarding data to/from ports 5000 and 6000 in a pod selected by the deployment
 kubectl port-forward deployment/mydeployment 5000 6000
 
 # Listen on port 8443 locally, forwarding to the targetPort of the service's port named "https" in a pod selected by the service
 kubectl port-forward service/myservice 8443:https
 
 # Listen on port 8888 locally, forwarding to 5000 in the pod
 kubectl port-forward pod/mypod 8888:5000
 
 # Listen on port 8888 on all addresses, forwarding to 5000 in the pod
 kubectl port-forward --address 0.0.0.0 pod/mypod 8888:5000
 
 # Listen on port 8888 on localhost and selected IP, forwarding to 5000 in the pod
 kubectl port-forward --address localhost,10.19.21.23 pod/mypod 8888:5000
 
 # Listen on a random port locally, forwarding to 5000 in the pod
 kubectl port-forward pod/mypod :5000


예시별 사용 방법

Pod에 포트 포워딩

kubectl port-forward pod/[pod name] [local port]:[pod port]

Deployment에 포트 포워딩

kubectl port-forward deployment/[deployment name] [local port]:[pod port]

Service에 포트 포워딩

kubectl port-forward service/[service name] [local port]:[service port]

수신 IP 주소 지정

  • 모든 IP에 대해 수신해서 포트 포워딩
kubectl port-forward --address 0.0.0.0 pod/[pod name] [local port]:[port]
  • 로컬 및 특정 IP에 대해 수신해서 포트 포워딩
  • 아래의 경우 명령어를 실행하는 OS 인스턴스가 10.19.21.23 주소를 가지고 있다고 가정한 경우로 외부에서 접근을 제어하는 Whitelist 같은 개념이 아니라 포트를 연결할 IP 주소를 명시하는 경우로 보면 된다.
kubectl port-forward --address localhost,10.19.21.23 pod/[pod name] [local port]:[port]


참고자료

kubectl port-forward usage and example


Environment and Prerequisite

  • Kubernetes
  • kubectl


Background

  • While using Kubernetes, I frequently use port forwarding but I often forget how to use it so I post it remember it.


kubectl port-forward

Official Document

  • There are good examples on official document.
  • Not only Pod but also Deployment and Service can be used.
  • You can use --address option to specify the IP address to listen on. It is separated by , and default values are localhost and 127.0.0.1.

Usage

kubectl port-forward TYPE/NAME [options] [LOCAL_PORT:]REMOTE_PORT [...[LOCAL_PORT_N:]REMOTE_PORT_N]

Example

 # Listen on ports 5000 and 6000 locally, forwarding data to/from ports 5000 and 6000 in the pod
 kubectl port-forward pod/mypod 5000 6000
  
 # Listen on ports 5000 and 6000 locally, forwarding data to/from ports 5000 and 6000 in a pod selected by the deployment
 kubectl port-forward deployment/mydeployment 5000 6000
 
 # Listen on port 8443 locally, forwarding to the targetPort of the service's port named "https" in a pod selected by the service
 kubectl port-forward service/myservice 8443:https
 
 # Listen on port 8888 locally, forwarding to 5000 in the pod
 kubectl port-forward pod/mypod 8888:5000
 
 # Listen on port 8888 on all addresses, forwarding to 5000 in the pod
 kubectl port-forward --address 0.0.0.0 pod/mypod 8888:5000
 
 # Listen on port 8888 on localhost and selected IP, forwarding to 5000 in the pod
 kubectl port-forward --address localhost,10.19.21.23 pod/mypod 8888:5000
 
 # Listen on a random port locally, forwarding to 5000 in the pod
 kubectl port-forward pod/mypod :5000


Usage Examples

Port forward to Pod

kubectl port-forward pod/[pod name] [local port]:[pod port]

Port forward to Deployment

kubectl port-forward deployment/[deployment name] [local port]:[pod port]

Port forward to Service

kubectl port-forward service/[service name] [local port]:[service port]

Set listen IP address

  • Listen on all IP addresses
kubectl port-forward --address 0.0.0.0 pod/[pod name] [local port]:[port]
  • Listen on local and specific IP address
  • In the example below, it is assumed that the OS instance has the address 10.19.21.23. This is like specifying the IP address for port connection rather than a concept like a whitelist that controls external access.
kubectl port-forward --address localhost,10.19.21.23 pod/[pod name] [local port]:[port]


Reference

네트워크 문제 발생 시 CloudTrail 기록 여부에 대한 정리


환경

  • AWS
  • CloudTrail


배경

  • 서비스 장애를 디버깅 중에 CloudTrail에 기록이 없는 부분을 발견하여 그 이유를 조사함.


과정

  • VPC에 서비스를 elasticloadbalancing.ap-northeast-2.amazonaws.com으로 갖는 VPC Endpoint를 생성하였으며 private_dns_enabled 옵션을 true로 설정.
  • VPC 내부에 있는 프라이빗 서브넷의 EC2 인스턴스에서 ELB 관련한 API(Endpoint의 경우 elasticloadbalancing.ap-northeast-2.amazonaws.com)를 호출.
  • private_dns_enabledtrue로 되어있기 때문에 프라이빗 서브넷에서의 API(Endpoint의 경우 elasticloadbalancing.ap-northeast-2.amazonaws.com)요청의 경우 위에서 만든 VPC Endpoint로 가도록 되어있음.
  • 위에서 만든 VPC Endpoint에 Security Group에서 막혀 Timeout이 발생했으며 CloudTrail에 로그가 남지 않음을 발견.
  • AWS Support Case에 문의.


결론

  • AWS API 사용 시 네트워크 문제로 Timeout이 발생해 API 요청이 이루어지지 않으면 CloudTrail에 로그가 남지 않는다.
  • 관련하여 AWS에 Support Case를 오픈하여 위 부분에 대한 확인 완료.


참고자료

Post about CloudTrail log result in network issue


Environment and Prerequisite

  • AWS
  • CloudTrail


Background

  • While debugging a service issue, I discovered there is no log in CloudTrail. So I investigated the reason.


Process

  • Create VPC Endpoint which service is elasticloadbalancing.ap-northeast-2.amazonaws.com and set private_dns_enabled to true.
  • Call ELB related API(in this case the endpoint is elasticloadbalancing.ap-northeast-2.amazonaws.com) from an EC2 instance in a private subnet within a VPC.
  • Because private_dns_enabled is set to true, API(in this case the endpoint is elasticloadbalancing.ap-northeast-2.amazonaws.com) call in private subnet would be forwarded to VPC Endpoint.
  • Due to above created VPC Endpoint Security Group, timeout occurs and found there was no log on CloudTrail.
  • Ask to AWS Support Case.


Conclusion

  • When there is a network issue, such as a timeout while using the AWS API, there will be no logs in CloudTrail.
  • I opened support case on AWS and checked that above fact is right.


Reference