kfctl configuration file 설정이 이렇다는 것을 이해하고, 다음을 설치하면 됩니다.
1.3 IAM Role for Service Account
여러분이 kubectl로 명령을 내릴때는 kubernetes의 User Account로 접속을 하며, admin User Account를 사용하게 됩니다.
Service Account는 Pods안의 processors가 API Server와 연동이 될 수 있는데, 이때 사용되는 것이 Service Account입니다.
IAM Role을 사용해서 Service Account를 관리하겠다는 것은, 따로 node에다가 권한을 줄 필요 없이 kf-admin-${region}-${cluster_name} 그리고 kf-user-${region}-${cluster_name} 에 권한을 줌으로서 권한 관리를 할 수 있다는 뜻입니다.
관련 문서 AWS IAM Roles for Service Account를 참조 합니다.
IAM Role for Service Account를 사용하기 위해서는 kfctl_aws.yaml 파일을 변경해야 합니다.
enablePodIamPolicy: true 로 설정해야 합니다.
region: cluster 위치의 region 설정
auth.basicAuth.username: 접속할 유저 이메일
auth.basicAuth.password: 암호
roles
만약 eksctl를 통해서 cluster를 생성했다면 다음의 명령어로 node group role에 대한 IAM Role을 찾을 수 있습니다.
aws iam list-roles \
| jq -r ".Roles[] \
| select(.RoleName \
| startswith(\"eksctl-$AWS_CLUSTER_NAME\") and contains(\"NodeInstanceRole\")) \
.RoleName"
정확하게 특정 cluster 의 node group을 확인하고자 할때는 다음과 같이 합니다.
eksctl get nodegroup --cluster=<Cluster Name> -o yaml
eksctl말고 다른 방법으로 cluster를 생성시켰다면 node group 생성시 사용한 IAM Role을 적용하면 됩니다. 본문에서는 AI-EKS-Node 를 사용했습니다.
아래쪽 1.4 에서 kfctl apply -V -f kfctl_aws.yaml 실행하고 나면,
다음 2개의 roles 그리고 service accounts 가 자동으로 생성됩니다.
다시 말하지만 자동으로 생성되기 때문에 따로 만들 필요 없습니다.
IAM Roles
kf-admin-${region}-${cluster_name}
kf-user-${region}-${cluster_name}
Kubernetes Service Accounts
kf-admin
kf-user
확인은 IAM -> Roles 그리고 kubectl 명령어로 확인 가능합니다.
1.4 Deployment of Kubeflow
kfctl_aws.yaml 수정도 완료되었다면, deploy시키고 이후 확인까지 마침니다.
1.5 Auth Dex 에러 in Kubernetes 1.21
Kubernetes 1.21에서 Auth dex 이슈가 있습니다.
이 문제가 해결되면 istio-system namespace 에서 발생하면 authservice-0 pod 이 죽는 문제도 동시에 해결이 됩니다.
Kubernetes 1.21 에서 dex 에서 jwt 파싱관련된 문제가 있었으며, 해결방법은 다음과 같이 합니다.
문제 해결
1.5 Kubeflow Dashboard
만약 ADDRESS가 None일 경우 port-forward로 접속합니다.
위의 ADDRESS 주소를 chrome에서 확인합니다
2. Configuration
2.1 Add Static User for Basic Authentication
만약 basic authentication을 사용했고 유저를 추가하고자 한다면 Dex ConfigMap 을 수정하면 됩니다.
다음의 명령어로 cluster security group을 확인 할 수 있습니다.
또는 콘솔에서는 EKS -> Clusters -> -> Networking -> Cluster security group 에서 확인 가능합니다.
Security Group은 기본적으로 다음과 같이 설정이 되어 있습니다.
추가적으로 특정 Port만 열도록 production에서는 수정이 필요합니다.
2.4 Control Plane Security Group Configuration (Optional)
Control plane security group은 Control plane 과 nodes 사이에서의 통신을 제한하는데 사용합니다.
해당 security group은 콘솔 Networking 에서 Additional security groups 이라는 이름으로 찾을 수 있습니다.
또는 아래의 명령어로 찾을 수 있습니다.
일단 중요한 점은 해당 Security Group을 다른 Cluster와 사용하면 안됩니다.
통신이 막힐수도 있고 장애가 발생할 수 있습니다.
반드시 Cluster마다 각각의 Security Group을 지정해 줘야 합니다.