k8s
-
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를 할 수있게 만든 것이..
-
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..
-
ArgoCD와 Keycloak OIDC 연동하기K8S 2022. 11. 25. 14:14
개요 1. Keycloak 대시보드에서 argocd client를 생성한다. 2. client scope를 생성한다. 3. ArgoCDAdmin이라는 그룹을 만들고, 사용할 user를 group에 join시킨다. 4. argocd-secret에 oidc client secret 값 base64 인코딩하여 추가한다. 5. argocd-cm에 oidc.config를 추가한다. 6. argocd-rbac-cm configmap에 생성한 group명을 추가한다. 환경 argo-cd v2.2.5 1. Keycloak 대시보드에서 argocd client를 생성한다. 현 예시에서는 default realm인 Master realm에서 작업한다. 예시에서는 Root URL, valid redirect url 등을 설..
-
Keycloak client scope 정리메모 및 기타 2022. 11. 25. 12:22
OIDC 액세스 토큰이 생성되면 기본적으로 User의 모든 User role mapping이 토큰 내의 클레임으로 추가된다. 애플리케이션(클라이언트)은 이 토큰 정보를 사용하여 해당 애플리케이션이 제어하는 리소스에 대한 액세스 결정을 내린다. 만약 Application이 손상되거나 Realm에 등록된 악성 애플레케이션 클라이언트가 있는 경우, 공격자가 광범위한 권한을 가진 액세스 토큰을 얻을 수 있기 때문에 클라이언트의 권한 허용 범위를 제한할 필요가 있다. keycloak에서는 이를 client scope로 처리한다. Client scope란? Client Scope는 액세스 토큰 내 선언된 Role을 제한하는 방법이다. 클라이언트가 사용자 인증을 요청할 때, 사용자가 받은 액세스 토큰에는 client..
-
Network Trouble Shooting Pod Manifest메모 및 기타 2022. 11. 1. 20:52
traceroute, tcpdump, ping, curl, ip 등 다양한 네트워크 커맨드를 사용할 수 있는 이미지로 알아두면 유용하다. Network Pod Manifest apiVersion: v1 kind: Pod metadata: name: pod spec: containers: - name: pod image: nicolaka/netshoot command: ["tail"] args: ["-f", "/dev/null"] 접속하기 kubectl exec -it pod1 -- zsh
-
로컬 환경에서 kubelet metric 조회메모 및 기타 2022. 11. 1. 20:47
kubelet metric 조회 curl -k https://localhost:10250/metrics \ --cert /etc/kubernetes/pki/apiserver-kubelet-client.crt \ --key /etc/kubernetes/pki/apiserver-kubelet-client.key cadvisor metric 조회 curl -k https://localhost:10250/metrics/cadvisor \ --cert /etc/kubernetes/pki/apiserver-kubelet-client.crt \ --key /etc/kubernetes/pki/apiserver-kubelet-client.key
-
Cert-manager와 Traefik IngressRoute을 이용한 nginx https 배포K8S 2022. 10. 25. 22:49
틀린 내용이 있을 수도 있습니다! 틀린 내용이 있다면 댓글로 달아주시면 감사하겠습니다! 개요 IngressRoute를 이용해서 nginx를 배포한다. cert-manager를 통해 인증서를 발급하고 https를 사용한다. 구성 1. loadbalancer를 사용할 수 없는 환경인 경우, traefik service를 nodeport로 배포해서 ingressroute를 사용한다. 2. lb를 사용할 수 있다면, traefik service를 loadbalancer로 만들어 ingressroute를 사용한다. 1. NodePort를 사용하는 경우 1) helm을 이용해서 traefik chart를 설치한다. helm repo add traefik https://helm.traefik.io/traefik he..