kubectl apply -f d-role.yaml 에러

미해결질문
厳慶一 프로필

kubectl apply -f d-role.yaml

error: error validating "d-role.yaml": error validating data: [ValidationError(ClusterRole): unknown field "apiGroup" in io.k8s.api.rbac.v1beta1.ClusterRole, ValidationError(ClusterRole): unknown field "k8s-app" in io.k8s.api.rbac.v1beta1.ClusterRole, ValidationError(ClusterRole): unknown field "name" in io.k8s.api.rbac.v1beta1.ClusterRole, ValidationError(ClusterRole): unknown field "namespace" in io.k8s.api.rbac.v1beta1.ClusterRole, ValidationError(ClusterRole): unknown field "subjects" in io.k8s.api.rbac.v1beta1.ClusterRole]; if you choose to ignore these errors, turn validation off with --validate=false

위의 명령을 실행 하면 에러가 발생합니다.

이상태에서 브라우저로 뛰우면 스킵 이라는 보튼이 보이지 않고요..

그리고 다른분에게 조언 하신것 처럼 파일을 직접 다운로드 받아서 수정하면 그 분과 동일하게 404 에러가 납니다.

혹 방법을 아시면 조언 부탁 드리겠습니다.

김태민 프로필
김태민 2달 전

혹시 Mac을 사용하시나요?

厳慶一 프로필
厳慶一 2달 전

네 맥을 사용 하고 있습니다.

김태민 프로필
김태민 2달 전

전 맥을 사용하고 있지 않아서 바로 문제를 파악해보기가 쉽지가 않네요. 

최대한 빠른 시일내로 맥을 설치해서 확인해보고 답변드릴께요.

김태민 프로필
김태민 2달 전

아 근데 그전에 한번 아래 가이드 내용을

Dashboard의 Admin권한 부여 파일 만들기

echo apiVersion: rbac.authorization.k8s.io/v1beta1>> d-role.yaml&& echo kind: ClusterRoleBinding>> d-role.yaml&& echo metadata:>> d-role.yaml&& echo   name: kubernetes-dashboard>> d-role.yaml&& echo   labels:>> d-role.yaml&& echo     k8s-app: kubernetes-dashboard>> d-role.yaml&& echo roleRef:>> d-role.yaml&& echo   apiGroup: rbac.authorization.k8s.io>> d-role.yaml&& echo   kind: ClusterRole>> d-role.yaml&& echo   name: cluster-admin>> d-role.yaml&& echo subjects:>> d-role.yaml&& echo - kind: ServiceAccount>> d-role.yaml&& echo   name: kubernetes-dashboard>> d-role.yaml&& echo   namespace: kube-system>> d-role.yaml

적용하기

kubectl apply -f d-role.yaml

이렇게 한번 해보시겠어요?

cat <<EOF | kubectl create -f -
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
  name: kubernetes-dashboard
  labels:
    k8s-app: kubernetes-dashboard
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- kind: ServiceAccount
  name: kubernetes-dashboard
  namespace: kube-system
EOF

해보시고 결과 확인 부탁드릴께요.

김태민 프로필
김태민 2달 전

그리고 Skip 버튼은 위 내용과 별개로

접속시 인증 Skip 설정
아래 명령을 통해 수정 모드로 들어가서

kubectl -n kube-system edit deployments.apps kubernetes-dashboard

아래 내용 찾아서 --enable-skip-login 추가

-------------------------------
    spec:
      containers:
      - args:
        - --auto-generate-certificates
        - --enable-skip-login
-------------------------------

이 내용을 적용 했을때 Skip 버튼이 나오는건데, 이 부분은 정상적으로 적용되었나요?

厳慶一 프로필
厳慶一 2달 전

정리를 하면 강사님이 원래 알려 주신대로 했을때도 브라우저의 화면은 나왔습니다.다만 스킵버튼이 안보였었습니다.그래서 다른 분께 알려주신대로 해 보니깐 그분하고 같은 404에러도 나오고 해서 문의를 드린겁니다.

이번에 알려 주신대로 cat명령어 그대로 복사해서 실행 한 후 프록시를 기동하고 브라우저 확인 해 보니깐 전과 같이 스킵 버튼이 보이지 않네요.

무엇이 잘못 되었을까요..ㅋㅋ 바쁘시겠지만 확인 부탁 드립니다.

쿠바네티스가 웹환경 구축보다 어려운 느낌이 드네요..ㅋ

참고로 알려주신 내용으로 실행 한 결과는 아래와 같습니다.

cat <<EOF | kubectl create -f -

> apiVersion: rbac.authorization.k8s.io/v1beta1

> kind: ClusterRoleBinding

> metadata:

>   name: kubernetes-dashboard

>   labels:

>     k8s-app: kubernetes-dashboard

> roleRef:

>   apiGroup: rbac.authorization.k8s.io

>   kind: ClusterRole

>   name: cluster-admin

> subjects:

> - kind: ServiceAccount

>   name: kubernetes-dashboard

>   namespace: kube-system

> EOF

clusterrolebinding.rbac.authorization.k8s.io/kubernetes-dashboard created

김태민 프로필
김태민 2달 전

skip 버튼은 cat 명령어와 별개고요.

enable-skip-login 넣는 부분이 제대로 들어갔나요?

厳慶一 프로필
厳慶一 2달 전

kubectl -n kube-system edit deployments.apps kubernetes-dashboard

이렇게 해서 입력모드로 말씀하신대로 수정을 했는데 실제 deployment.apps 파일은 어디에 있는건지요

김태민 프로필
김태민 2달 전

그건 파일이 아니라 실제 돌아가고 있는 쿠버네티스 오브젝트입니다.

그럼 다르게 여쭤보면, 

그렇게 다시 열었을때 전에 수정해서 넣었던 enable-skip-login이 그대로 있나요?

厳慶一 프로필
厳慶一 2달 전

같은 명령으로 수 차례 반복 해도 다시 열어보면 변경이 적용이 되지 않아 있더라고요.

김태민 프로필
김태민 2달 전

그럼 대시보드를 설치하실때 아래 명령으로 설치하셨나요?

kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml

혹시 구글 클라우드 웹 화면에서 Dashboard 설치 옵션이 있는데 그걸 통해서 설치를 하셨나요?

그리고 아래 명령어 결과를 올려주시면 상황을 파악하는데 조금 도움이 됩니다.

kubectl get pods --all-namespaces

厳慶一 프로필
厳慶一 2달 전

구글로 설치 안하고 강사님 노트따라서 했습니다.

그리고 위의명령어 결과는 아래와 같습니다.

NAMESPACE     NAME                                                        READY   STATUS    RESTARTS   AGE

kube-system   event-exporter-v0.2.5-7df89f4b8f-rvgmr                      2/2     Running   0          20h

kube-system   fluentd-gcp-scaler-54ccb89d5-s4469                          1/1     Running   0          20h

kube-system   fluentd-gcp-v3.1.1-2wxwb                                    2/2     Running   0          20h

kube-system   fluentd-gcp-v3.1.1-7wpl8                                    2/2     Running   0          20h

kube-system   heapster-5dc9468777-nwv8q                                   3/3     Running   0          20h

kube-system   kube-dns-5877696fb4-kt666                                   4/4     Running   0          20h

kube-system   kube-dns-5877696fb4-wc9wm                                   4/4     Running   0          20h

kube-system   kube-dns-autoscaler-85f8bdb54-66dc9                         1/1     Running   0          20h

kube-system   kube-proxy-gke-k8s-cluster-default-pool-ef36ff7f-5jtp       1/1     Running   0          20h

kube-system   kube-proxy-gke-k8s-cluster-default-pool-ef36ff7f-5nbl       1/1     Running   0          20h

kube-system   kubernetes-dashboard-5f7b999d65-qpgsb                       1/1     Running   0          18h

kube-system   l7-default-backend-8f479dd9-rl5zf                           1/1     Running   0          20h

kube-system   metrics-server-v0.3.1-8d4c5db46-kglkg                       2/2     Running   0          20h

kube-system   prometheus-to-sd-44ddr                                      2/2     Running   0          20h

kube-system   prometheus-to-sd-mls2f                                      2/2     Running   0          20h

kube-system   stackdriver-metadata-agent-cluster-level-5747957f94-c5m8z   1/1     Running   0          20h

김태민 프로필
김태민 2달 전

그럼 Mac에서 아래 명령으로 - --enable-skip-login를 추가했을때 정상적으로 입력이 안되는게 문제라고 봐야겠네요

kubectl -n kube-system edit deployments.apps kubernetes-dashboard

대화중에 놓친 부분도 있을 수 있겠고, 저도 Mac환경을 세팅할려면 시일이 많이 소요되는 상황인데요.

이전에 문의 주신 분께서는 어떻게 해결이 되었는지 결과가 없지만

아래 내용대로 다시 한번 해보는건 어떨까요?

그리고 이 진행 화면을 저에게도 알려주시면 좋을 것 같습니다.

일단 기존에 설치된 대시보드를 아래 명령으로 삭제하시고요.

kubectl delete -f https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml

[삭제결과 로그를 알려주세요.]

그리고 위에서 이전에 실행했을 권한파일 만드는 명령도 아래 명령을 붙여넣어서 자원을 삭제합니다.

kubectl delete clusterrolebinding kubernetes-dashboard -n kube-system

[삭제결과 로그를 알려주세요.]

실제로 잘 삭제되었는지 아래 명령으로 확인

kubectl get pods --all-namespaces

[결과 로그를 알려주세요.]

아래 제 Github에 enable-skip-login과 권한추가 등을 넣어서 새로 만들었습니다

kubectl apply -f https://github.com/taemin77/k8s-examples/blob/master/beginners/gcp-dashboard.yaml

[생성 결과 로그를 알려주세요.]

끝으로 다신 한번 잘 만들어졌는지 아래 명령으로 확인

kubectl get pods --all-namespaces

4-1-3) proxy 띄우기

kubectl proxy

4-1-4) 접속 URL

http://127.0.0.1:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/.

厳慶一 프로필
厳慶一 2달 전

1. 削除結果

secret "kubernetes-dashboard-certs" deleted

serviceaccount "kubernetes-dashboard" deleted

role.rbac.authorization.k8s.io "kubernetes-dashboard-minimal" deleted

rolebinding.rbac.authorization.k8s.io "kubernetes-dashboard-minimal" deleted

deployment.apps "kubernetes-dashboard" deleted

service "kubernetes-dashboard" deleted

2. 削除結果

clusterrolebinding.rbac.authorization.k8s.io "kubernetes-dashboard" deleted

3. 削除結果

NAMESPACE     NAME                                                        READY   STATUS    RESTARTS   AGE

kube-system   event-exporter-v0.2.5-7df89f4b8f-rvgmr                      2/2     Running   0          21h

kube-system   fluentd-gcp-scaler-54ccb89d5-s4469                          1/1     Running   0          21h

kube-system   fluentd-gcp-v3.1.1-2wxwb                                    2/2     Running   0          21h

kube-system   fluentd-gcp-v3.1.1-7wpl8                                    2/2     Running   0          21h

kube-system   heapster-5dc9468777-nwv8q                                   3/3     Running   0          21h

kube-system   kube-dns-5877696fb4-kt666                                   4/4     Running   0          21h

kube-system   kube-dns-5877696fb4-wc9wm                                   4/4     Running   0          21h

kube-system   kube-dns-autoscaler-85f8bdb54-66dc9                         1/1     Running   0          21h

kube-system   kube-proxy-gke-k8s-cluster-default-pool-ef36ff7f-5jtp       1/1     Running   0          21h

kube-system   kube-proxy-gke-k8s-cluster-default-pool-ef36ff7f-5nbl       1/1     Running   0          21h

kube-system   l7-default-backend-8f479dd9-rl5zf                           1/1     Running   0          21h

kube-system   metrics-server-v0.3.1-8d4c5db46-kglkg                       2/2     Running   0          21h

kube-system   prometheus-to-sd-44ddr                                      2/2     Running   0          21h

kube-system   prometheus-to-sd-mls2f                                      2/2     Running   0          21h

kube-system   stackdriver-metadata-agent-cluster-level-5747957f94-c5m8z   1/1     Running   0          21h

4. Error

error: error parsing https://github.com/taemin77/k8s-examples/blob/master/beginners/gcp-dashboard.yaml: error converting YAML to JSON: yaml: line 118: mapping values are not allowed in this context

추가하신 118 줄에 에러가 발생하는 거 같은데요

김태민 프로필
김태민 2달 전

네 저도 그부분을 해결해보면 문제를 고칠수 있겠네요

만들고 수정하는 것과 수정한 내용으로 만드는 차이인데 왜 문제인지를 확인해 봐야겠네요.

김태민 프로필
김태민 2달 전

아래 명령으로 다시 실행시켜 보세요.

kubectl apply -f https://raw.githubusercontent.com/kubetm/kubetm.github.io/master/sample/inflearn/appendix/gcp-kubernetes-dashboard.yaml

厳慶一 프로필
厳慶一 2달 전

실행결과

secret/kubernetes-dashboard-certs created

serviceaccount/kubernetes-dashboard created

role.rbac.authorization.k8s.io/kubernetes-dashboard-minimal created

rolebinding.rbac.authorization.k8s.io/kubernetes-dashboard-minimal created

deployment.apps/kubernetes-dashboard created

service/kubernetes-dashboard created

clusterrolebinding.rbac.authorization.k8s.io/kubernetes-dashboard created

확인결과

kube-system   kubernetes-dashboard-64546965d6-cthml                       1/1     Running   0          41s

결과

스킵 버튼이 보입니다.

감사합니다.

厳慶一 프로필
厳慶一 2달 전

잘 됐습니다.

끝까지 대응 해 주셔서 감사합니다.

지식공유자 되기
많은 사람들에게 배움의 기회를 주고,
경제적 보상을 받아보세요.
지식공유참여
기업 교육을 위한 인프런
“인프런 비즈니스” 를 통해 모든 팀원이 인프런의 강의들을
자유롭게 학습하는 환경을 제공하세요.
인프런 비즈니스