K8S
-
Nginx를 Istio Gateway로 expose하는 예제K8S 2023. 8. 11. 16:16
다음은 Nginx를 Istio Gateway로 expose하는 예제다. 플로우는 다음과 같다. apiVersion: networking.istio.io/v1alpha3 kind: Gateway metadata: name: nginx-gateway namespace: default spec: selector: istio: gateway # gateway 컨트롤러의 label을 명시한다. servers: - port: number: 80 name: http protocol: HTTP hosts: - "*" # 이 호스트에 대한 트래픽을 제어 --- apiVersion: networking.istio.io/v1alpha3 kind: VirtualService..
-
Netshoot: 컨테이너 환경에서의 네트워크 디버깅 도구K8S 2023. 8. 11. 13:31
네트워크 문제는 때때로 복잡하고 해결하기 어려울 수 있습니다. 특히 컨테이너 환경에서는 더욱 그렇습니다. `netshoot`는 네트워크 문제를 해결하고 디버깅하기 위한 Docker 이미지입니다. 이 이미지는 네트워크 유틸리티와 도구가 풍부하게 포함되어 있어, Kubernetes와 같은 컨테이너화된 환경에서 네트워크 문제를 쉽게 진단하고 해결할 수 있게 도와줍니다. Netshoot의 특징 풍부한 네트워크 도구: `netshoot`에는 `netstat`, `ifconfig`, `iperf`, `mtr`, `curl`, `traceroute` 등의 많은 네트워크 유틸리티가 포함되어 있습니다. Kubernetes와의 호환성: 문제가 있는 Pod나 노드의 네트워크를 효과적으로 진단하려면 `netshoot`를 해당..
-
Cert-manager 인증서 체인 만들기K8S 2023. 1. 10. 20:26
이번 포스팅은 cert-manager를 이용해서 인증서 체인을 만든다. 즉, 발급 받은 인증서를 CA로 사용하여 새로운 인증서를 생성할 때 이 CA 인증서로 sign한다. 1. self-signed로 root CA를 하나 만든다. apiVersion: cert-manager.io/v1 kind: ClusterIssuer metadata: name: root-selfsigned spec: selfSigned: {} 2. 위에서 생성한 root CA를 이용해서 인증서를 만든다. apiVersion: cert-manager.io/v1 kind: Certificate metadata: name: new-ca-cert namespace: cert-manager spec: secretName: new-ca-cert..
-
Kube-API 서버는 Cert-manager가 만든 인증서를 어떻게 이해할까?K8S 2022. 12. 22. 20:49
kube api server와 webhook 서버는 TLS 통신을 한다. 그리고 오퍼레이터를 만들다 보면 webhook 서버에 대한 인증서는 cert-manager를 통해서 만들기 때문에 api server와 webhook server가 들고 있는 인증서의 root CA는 달라진다. 이때 API 서버에서 webhook 서버에게 요청을 보내기 위해서는 TLS로 통신하긴 하지만 서로의 root CA는 모르기 때문에 insecure 하게 통신해야 하지 않을까? 이러한 문제는 cert-manager의 CA injector를 통해서 해결할 수 있다. 일단 cainjector는 Mutating Webhooks, Validating Webhooks, Conversion Webhooks, API Services에 대한..
-
K8S Operator indexer 사용해서 성능 높이기K8S 2022. 12. 19. 18:00
operator를 만들 때, 만약 controller가 어떤 오브젝트의 특정 필드를 자주 찾아야 한다면 go client의 인덱싱을 이용하여 성능을 높일 수 있다. go client는 제일 처음 object를 List를 한번 해오고 이후부터는 watch를 통해서 변화를 감지한다. 이후 shared index informer에서 watch해서 변화된 내용을 work queue에 담아 controller로 보낸 후, controller의 reconcile loop에서 비즈니스 로직이 수행된다. shared index informer에는 캐시를 저장하는데 이는 reconcile 루프에서 indexer를 통해서 접근할 수 있다. 여기서 indexer는 특정 키를 기준으로 캐시에 index를 할 수있게 만든 것이..
-
K8S API Call 예제K8S 2022. 12. 14. 18:31
https://iximiuz.com/en/posts/kubernetes-api-call-simple-http-client/ How To Call Kubernetes API using Simple HTTP Client There are plenty of reasons to call the Kubernetes API using a CLI or GUI HTTP client. This article will show you how to get the API server address, authenticate requests using certificates and Service Account tokens, and call the API using kubectl in the iximiuz.com test.yaml..
-
Operator-sdk 사용시 multiple controller 구조로 변경K8S 2022. 12. 5. 19:10
operator를 개발하다보면, 여러 개의 crd가 필요한 경우가 있다. 이 때는 워크로드에 따라 다르겠지만 가능하다면 하나의 operator안에 여러 개의 controller를 두어 crd를 관리하는 방법을 사용하는 것이 좋아보인다. 다음은 multi group과 관련된 참고용 URL이다. https://docs.okd.io/4.11/operators/operator_sdk/golang/osdk-golang-tutorial.html#osdk-golang-multi-group-apis_osdk-golang-tutorial Tutorial | Operators | OKD 4.11 Operator authors can develop Operators that support network proxies. Cl..
-
K8S에서 NFS 서버 없이 동적 프로비저닝 사용하기K8S 2022. 12. 2. 13:35
이번 포스팅은 nfs 서버 추가 없이 nfs 동적 프로비저닝를 사용할 수 있는 방법에 대한 내용이다. 실제 물리적인 nfs 서버를 사용하지 않기 때문에 storage class를 사용이 필요한 테스트 환경에 적합한 방법일듯하다. 우선 nfs provisoner로는 두가지 정도가 있는데, https://github.com/kubernetes-sigs/nfs-ganesha-server-and-external-provisioner/tree/nfs-server-provisioner-1.4.0 GitHub - kubernetes-sigs/nfs-ganesha-server-and-external-provisioner: NFS Ganesha Server and Volume Provisioner. NFS Ganesha..