K8S
-
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 등을 설..
-
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..
-
Ingress traefik을 이용한 nginx http 배포K8S 2022. 10. 25. 21:00
틀린 내용이 있을 수도 있습니다! 틀린 내용이 있다면 댓글로 달아주시면 감사하겠습니다! 개요 ingress를 사용하기 위해 nginx-controller 대신 traefik을 사용한다. nginx를 traefik ingress를 통해서 배포한다. ingress는 http로 배포한다. 다음 포스팅에서 https로 배포할 것이다. 구성 1. loadbalancer를 사용할 수 없는 환경인 경우, traefik service를 nodeport로 배포해서 ingress를 사용한다. 2. lb를 사용할 수 있다면, traefik service를 loadbalancer로 사용한다. 이외에도 여기서는 다루지 않지만, traefik pod를 hostnetwork로 사용해서 배포할 수 있을 것이다. 1. NodePort..
-
Keycloak을 이용한 K8S 사용자 분리K8S 2022. 9. 4. 03:02
틀린 내용이 있을 수도 있습니다! 틀린 내용이 있다면 댓글로 달아주시면 감사하겠습니다! 이번 포스팅은 kubernetes korea group에서 진행한 [keycloak을 이용한 kubernetes 사용자 분리 방법]의 내용을 바탕으로 정리했다. 우선 keycloak이란 IAM 오픈소스로 다음과 같은 기능들을 제공한다. SSO OpenID, OAuth 2.0, SAML 2.0 LDAP, AD keycloak을 이용해서 사용자를 분리하는 방법 KeyCloak을 이용한 OIDC Flow K8S에서 keycloak을 Identity Provider로 사용함으로써 OpenID connect를 사용할 수 있다. 1. 유저는 keycloak에게 요청을 보내 keycloak이 발급한 token을 받아온다. 2. 유..
-
local 볼륨 동적 프로비저닝을 위한 PV, PVC 예제K8S 2022. 8. 26. 17:27
틀린 내용이 있을 수도 있습니다! 틀린 내용이 있다면 댓글로 달아주시면 감사하겠습니다! 엄밀히 말하면 동적 프로비저닝은 아니다! 하지만 개인 클러스터에서 default storage class를 이용한 동적 프로비저닝이 필요해서 비슷하게나마 흉내내기 위해 사용하는 예제 파일이다. 노드 하나를 정해서 다음과 같이 볼륨 역할을 할 디렉터리를 3개 만들어준다. # pv1 mkdir -p /data/volumes/pv1 chmod 777 /data/volumes/pv1 # pv2 mkdir -p /data/volumes/pv2 chmod 777 /data/volumes/pv2 # pv3 mkdir -p /data/volumes/pv3 chmod 777 /data/volumes/pv3 디렉터리를 3개 만들었으므로..
-
PV, PVC, SC 사용시 Tip!K8S 2022. 8. 17. 15:39
틀린 내용이 있을 수도 있습니다! 틀린 내용이 있다면 댓글로 달아주시면 감사하겠습니다! 1. StorageClass default로 설정하기 storage class에 다음과 같은 annotation을 추가하여 해당 storage class를 default로 설정할 수 있다. apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: annotations: storageclass.kubernetes.io/is-default-class: 'true' 만약 default storage class를 해제하고 싶다면, 이를 false로 변경한다. apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: annotati..
-
Pod Status에 Error log만 찍기K8S 2022. 8. 8. 00:23
틀린 내용이 있을 수도 있습니다! 틀린 내용이 있다면 댓글로 달아주시면 감사하겠습니다! operator를 만들던 중, pod에서 발생한 error log 값을 추출해야 했는데 이 내용을 포스팅으로 남겨놓는다. pod status 하위에는 container가 어떻게 종료되었는지에 대한 명세가 적혀 있다. containerStatuses.state.terminated 하위 값에 stdout, stderr에 따른 결과가 적혀 있는데, 특별한 설정을 하지 않는다면 다음과 같이 자세하게 나오지 않는다. status: conditions: ~~ state: terminated: containerID: docker://dd42590ac0d1d05c8675fafb3f1c32cb7256d74a6ab5bf96ec3928c..
-
kubectl Image를 이용한 pod 내에서 secret 생성하기K8S 2022. 8. 5. 16:05
틀린 내용이 있을 수도 있습니다! 틀린 내용이 있다면 댓글로 달아주시면 감사하겠습니다! pod내에서 secret을 생성해야 할 일이 있어서 나중에 내가 다시 보려고 포스팅 한다. 명시할 리소스들은 다음과 같다. Service account Role Role binding Pod apiVersion: v1 kind: ServiceAccount metadata: name: kubectl apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: create-secret-role rules: - apiGroups: [""] resources: ["secrets"] verbs: ["create", "list"] apiVersion: rbac.auth..