この記事で使用したyamlファイルはGitHubに置いています。
前提条件
- Kubernetesがインストール済みである
- CentOS7環境である
手順
手順は以下の通りです。
- kubernetes dashboard のyamlをダウンロードし修正する
- 自己証明書を作成する
- 自己証明書を1でダウンロードしたyamlに埋め込む
- 3を使ってpodを起動する
- アクセス用のtokenを発行する
1 kubernetes dashboard のyamlをダウンロードし修正する
wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-rc7/aio/deploy/recommended.yaml -O dashboard.yaml
今回はこの図のような構成になります。
まずはClusterIPで起動するServiceをExternalIP向けにします。
これを
externalIPs: - 192.168.10.2
こんな風に追加します。
kind: Service apiVersion: v1 metadata: labels: k8s-app: kubernetes-dashboard name: kubernetes-dashboard namespace: kubernetes-dashboard spec: externalIPs: - 192.168.10.2 ports: - port: 443 targetPort: 8443 selector: k8s-app: kubernetes-dashboard
やっているのはdashboardを外部に公開するためのService
モジュールにExternalIP
の設定を追加しているだけです。ポート8000のServiceもありますがそちらではありませんので注意してください。
NodePort
の場合はこちら
kind: Service apiVersion: v1 metadata: labels: k8s-app: kubernetes-dashboard name: kubernetes-dashboard namespace: kubernetes-dashboard spec: externalIPs: - 192.168.10.2 type: NodePort ports: - port: 443 targetPort: 8443 nodePort: 31443 selector: k8s-app: kubernetes-dashboard
これで対象のマシンの31443ポート
でアクセスできるようになります。
2. 自己証明書を作成する
証明書を作成します。
mkdir certs # 秘密鍵とCSRの作成 openssl req -nodes -newkey rsa:2048 -keyout certs/dashboard.key -out certs/dashboard.csr -subj "/C=/ST=/L=/O=/OU=/CN=kubernetes-dashboard" # 秘密鍵でCSRを署名(自己証明書の作成) openssl x509 -req -sha256 -days 365 -in certs/dashboard.csr -signkey certs/dashboard.key -out certs/dashboard.crt
3. 自己証明書を1でダウンロードしたyamlに埋め込む
つづいて作った証明書をkubernetesのSecret
に入れたいのでyamlを用意します。
kubectl -n kubernetes-dashboard create secret generic kubernetes-dashboard-certs --from-file=certs --dry-run -o yaml
コマンドを実行すると
apiVersion: v1 data: dashboard.crt: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUN1akNDQWFJQ0NRQ0kwZjNnMkJRQlR6QU5CZ2txaGtpRzl3MEJBUXNGQURBZk1SMHdHd1lEVlFRRERCUnIKZFdKbGNtNWxkR1Z6TFdSaGMyaGliMkZ5WkRBZUZ3MHlNREEwTVRNd056TXpNVEJhRncweU1UQTBNVE13TnpNegpNVEJhTUI4eEhUQWJCZ05WQkFNTUZHdDFZbVZ5Ym1WMFpYTXRaR0Z6YUdKdllYSmtNSUlCSWpBTkJna3Foa2lHCjl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUFvelMzbGxlWk1HWjczaXlEVzk5RGlzRW1JZVBlMDIrb2NGZGoKVlkxTkl4eTJSUjh3T2tseGxQQ1l2bU9hNy92NUpjUzFlNmxtcDkwbDBtc0xPTFpsZVU4RUFJWmdVVVpVdFdJagpJd1diZFBsSzF6V2RvMkh6MFYwWmdFb3U1NmFIT0xEQVF3TnBxejhVMUxsa21IYmdLc2ZsZDdUY0NWVXVETUpjCkl3dTE0cEZPclQ2dktzS2ZBM1RMR1JjaHN2LzY2M0E1bWhyWUhsUzZYdCtNQ1NKSGYza2dxSTRlY205UUgrNGoKeXZKKzEyblVZaThjaURDNkcvdDJzZERkTStaNVRkcE1yRGxPbVNzbUNrdi94WjBwem1KS0xBVTl2RnF3VXZMKwpNU1hCVDV6TDdMYUJwU01wUUR6SS83cnVoZk16cHhiQjM5RnRlSk9ocmlOS2krTFZSd0lEQVFBQk1BMEdDU3FHClNJYjNEUUVCQ3dVQUE0SUJBUUFEVzUvQnJ2Vll3NW0vZTE0dXVqeVRYVGR2cGh1NjA4WEVGNEZVem1pMjBPZ0IKL1QxQkwyVVNqZjFPS1JaU2NoOEZZOFpGNEY2ejJBOHVsMTFNY25iRFJ4UlhXWEtzV3dOaDFHaDZpYngwWnE0UQpYL0dqNnk1OWVWWmlzN2lWUGg1enZyZTBKclNKNGZWS2F4VDU0NVVXaE96RVUrRGlaNWZ2dDVmR2h0blczTWpXCjJxRDlEaWtWM25QdExieHhEVGNQUzBDZEFudHhNeGJ0SS8rbXJkdm1QeGltQldoUytSMHpSWXV5Ukc1Ri85RWoKdjcrV29yYit4TG9OYmRQYWtFTUx6MG43K2VHU0prb2NuZ3lvenhkeGlwTitpNzgwd2p5eERYTS9yaFpJUzV3agpsbHZGbG45NXpCWGpiUlh2Ull0OXJrOW40TVFWQjFWK1cxTkU1ZnlhCi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K dashboard.csr: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURSBSRVFVRVNULS0tLS0KTUlJQ1pEQ0NBVXdDQVFBd0h6RWRNQnNHQTFVRUF3d1VhM1ZpWlhKdVpYUmxjeTFrWVhOb1ltOWhjbVF3Z2dFaQpNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUUNqTkxlV1Y1a3dabnZlTElOYjMwT0t3U1loCjQ5N1RiNmh3VjJOVmpVMGpITFpGSHpBNlNYR1U4SmkrWTVydisva2x4TFY3cVdhbjNTWFNhd3M0dG1WNVR3UUEKaG1CUlJsUzFZaU1qQlp0MCtVclhOWjJqWWZQUlhSbUFTaTducG9jNHNNQkRBMm1yUHhUVXVXU1lkdUFxeCtWMwp0TndKVlM0TXdsd2pDN1hpa1U2dFBxOHF3cDhEZE1zWkZ5R3kvL3JyY0RtYUd0Z2VWTHBlMzR3SklrZC9lU0NvCmpoNXliMUFmN2lQSzhuN1hhZFJpTHh5SU1Mb2IrM2F4ME4wejVubE4ya3lzT1U2Wkt5WUtTLy9GblNuT1lrb3MKQlQyOFdyQlM4djR4SmNGUG5NdnN0b0dsSXlsQVBNai91dTZGOHpPbkZzSGYwVzE0azZHdUkwcUw0dFZIQWdNQgpBQUdnQURBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQUpYc2N5ZmloZko2YXZaM3NQR1JZYTJZeDAySzJTdkUwCkswaEFoMitMMmlPWE9NYnhUYWQxZnJleU1BYVNwc1VpZFppRUtUeUN3MnFGTGFURTZZWkk1VVkvdlRXMHBpSm8KcDFQT2NmUHJUNnhvalRMUTFWZ2FrUzY4OVVEQVpKZmxpQW9ibWRpVGJyR3U0ZEZiWEtxSGc1QmRaY0dWYmpaZApjOWo0OEt2b1VZN1lBV3hmYzh4VC9qSnFhdk1NZE5MSWh2QU94UTRkdnIrS0pZT3I5NmVEdHd2UnpwYmJKUVB4CjNTYkJyelF3WjVUTHVVdVgxUDZBWWhmK1NRcy9IbXRPWWhwN2JIWlJUZ1BucjZaYnJIV0crRllMQmRvc01LdDkKWnZML3RLVnhBRlBLZHBiZTN3NFFGK2Q3YUl2UmJSanhiVkRWSFNsUVhGbSs3QWlmRE1ISXBRPT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUgUkVRVUVTVC0tLS0tCg== dashboard.key: LS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tCk1JSUV2d0lCQURBTkJna3Foa2lHOXcwQkFRRUZBQVNDQktrd2dnU2xBZ0VBQW9JQkFRQ2pOTGVXVjVrd1pudmUKTElOYjMwT0t3U1loNDk3VGI2aHdWMk5WalUwakhMWkZIekE2U1hHVThKaStZNXJ2Ky9rbHhMVjdxV2FuM1NYUwphd3M0dG1WNVR3UUFobUJSUmxTMVlpTWpCWnQwK1VyWE5aMmpZZlBSWFJtQVNpN25wb2M0c01CREEybXJQeFRVCnVXU1lkdUFxeCtWM3ROd0pWUzRNd2x3akM3WGlrVTZ0UHE4cXdwOERkTXNaRnlHeS8vcnJjRG1hR3RnZVZMcGUKMzR3SklrZC9lU0Nvamg1eWIxQWY3aVBLOG43WGFkUmlMeHlJTUxvYiszYXgwTjB6NW5sTjJreXNPVTZaS3lZSwpTLy9GblNuT1lrb3NCVDI4V3JCUzh2NHhKY0ZQbk12c3RvR2xJeWxBUE1qL3V1NkY4ek9uRnNIZjBXMTRrNkd1CkkwcUw0dFZIQWdNQkFBRUNnZ0VBVmx1d3dUYTg4bVZvS2RtMzhFY2xRQ2lQK3VMT3AyYXY1REg1ZCsxNjRaZHgKd3dXTHlXdlBWQll6WEpyc0F3eDdlMGFwR1RROEE1cjdSbW9wMStwN3EwTHFSVFRWaG13R3FxdXhGL2tCbDFYSwpDakp1cFdOUlZubEM0eVZkeUduUHAybXZja1krQmNVdFNwcUc1ajRRdzlKZVU0YzUzeDVaYlpyeWtnRENUNDNuCmx1dkxuajhKa3NTS2hSeVN4ZU91cFRLZ0F6OTJRSXVudXRTMytJMnpIZDNPZXFjUmd6Y0xMeUhwRFYzeXpYWHkKU0dyVmFNdzY4czVXUmh5U1kxL3RobUhpVWcvT2dMT3B5N1BmWDNKV3dqNTd1WXNJaEV0V3ZUUHVOYW1IcytUVAorZThTRU40NUJRa3VPc09Ud2piT0g0Rk9sazF3ZUdDTDEzSjNCSUszNFFLQmdRRE41YkJzc1pmQ0R3YmVDQXloCkFPbXlQOFpWZlVHRTVPa2RtNEU0QUNGaU92MjlGZ3IwUUV5YWo0d01MMHJRRHhYbkdaeEs3ejV2TDNoNkdqNUQKdnhkazIya0FMQjQ5Q1RWWVUxZFlOdktQYjNWUXhpVU9aeTN2cEs1MWV6SWt3cnpSQjQxdTlZMUVpL3lvT0plRwp3bzNUam5VRDFMbjhNeXRJNTBWSlF4eGFYd0tCZ1FESzY1WGIva2RKTWEraUJZdlcrYlN2N1NKbmFkbGpTYlRJClg2VjQxVndyNnhzeVFYMFlicUxSS0VrNlEvSnl6Sk1QdGgzOVFpM0FOR1BhK0dCcFdyQTNNejJTN1ZFdERNYjMKbXlDU0dFbWROMDI1djVmcHBsSXdBOTNsYnlpQWx6eFJUanNoUG5rcHBRTWN0OVE4RjNtaE1LL3VKZzBhQjVUZgo1cFF4djZVK0dRS0JnUURHYUV6dklOOTlpQjkwKzhxM3AzcUxZdnRMVEMxRDA1WjBDbktsdFRKMlJ5UlYvcFRGCnMrUmRtSEE3R2FOOUJOeDFXdStLSWl0RzF6YkFhdU9QUXVoWEx6dHFpQmtIZGdVcXZQelJLL25ua0Y4N1hBVS8KY053S0x1WlNuVW0vdE14Z25XZUVBaW1FWVdVeDhYN0t4RllKQkNEc2RTUlh6RE1zeUhleTFuSE8vd0tCZ1FDcwpma0x2dFdHbnFLTGlHZERidDN5UEtBZGMzUys4SlFXV1p5ZmtaWXBxa3ZxVlovSU0rTTlTK09uMnE1ZkhXbnVRCm1ZRTRyaTd4K2hjQUpxN2VJQWMzaFVsTVFvd0V2WjNORVlOSWJYajJPZkxLZVVHTGpxVEN5Q2F5U0NHbjNlZWEKUGVRcHlFOTZ4UmkyS3RZeEZzdC82RUZGTWZkbEx4aXdrL05acnMycTBRS0JnUURKdmZ5b1RSWHVJV3NnTUJObQpiMFpVWGUrQTE0SDFqSkNPamllZUYrSGZuRGNUNXVPVTh1WU0ya3BRZzBRYm1sTExZRG5wWVFYdW93WkxWQy9lCmZIaWFEQ2ZQZ3JoUTFRT0NzT2RHVmUvSDZaOTAzMWVqQWFQM2NVdzdOcjJPYzhVTEpHU2FVM2RUTXJFdGkwTUYKTjRHZWVRa3cwSHNZclJpZGo3YldpT3IvY0E9PQotLS0tLUVORCBQUklWQVRFIEtFWS0tLS0tCg== kind: Secret metadata: creationTimestamp: null name: kubernetes-dashboard-certs namespace: kubernetes-dashboard
このように証明書が含まれたyamlを作成できます。dry-runをつかっているので実際には環境にインストールなどをすることなくできるので便利です。
そうしたらここで作成したものを先ほどのdashboard.yaml
に追加します。
これを
apiVersion: v1 kind: Secret metadata: labels: k8s-app: kubernetes-dashboard name: kubernetes-dashboard-certs namespace: kubernetes-dashboard type: Opaque
こうします。(dataのところを足しているだけです)
apiVersion: v1 kind: Secret metadata: labels: k8s-app: kubernetes-dashboard name: kubernetes-dashboard-certs namespace: kubernetes-dashboard type: Opaque data: dashboard.crt: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUN1akNDQWFJQ0NRQ0kwZjNnMkJRQlR6QU5CZ2txaGtpRzl3MEJBUXNGQURBZk1SMHdHd1lEVlFRRERCUnIKZFdKbGNtNWxkR1Z6TFdSaGMyaGliMkZ5WkRBZUZ3MHlNREEwTVRNd056TXpNVEJhRncweU1UQTBNVE13TnpNegpNVEJhTUI4eEhUQWJCZ05WQkFNTUZHdDFZbVZ5Ym1WMFpYTXRaR0Z6YUdKdllYSmtNSUlCSWpBTkJna3Foa2lHCjl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUFvelMzbGxlWk1HWjczaXlEVzk5RGlzRW1JZVBlMDIrb2NGZGoKVlkxTkl4eTJSUjh3T2tseGxQQ1l2bU9hNy92NUpjUzFlNmxtcDkwbDBtc0xPTFpsZVU4RUFJWmdVVVpVdFdJagpJd1diZFBsSzF6V2RvMkh6MFYwWmdFb3U1NmFIT0xEQVF3TnBxejhVMUxsa21IYmdLc2ZsZDdUY0NWVXVETUpjCkl3dTE0cEZPclQ2dktzS2ZBM1RMR1JjaHN2LzY2M0E1bWhyWUhsUzZYdCtNQ1NKSGYza2dxSTRlY205UUgrNGoKeXZKKzEyblVZaThjaURDNkcvdDJzZERkTStaNVRkcE1yRGxPbVNzbUNrdi94WjBwem1KS0xBVTl2RnF3VXZMKwpNU1hCVDV6TDdMYUJwU01wUUR6SS83cnVoZk16cHhiQjM5RnRlSk9ocmlOS2krTFZSd0lEQVFBQk1BMEdDU3FHClNJYjNEUUVCQ3dVQUE0SUJBUUFEVzUvQnJ2Vll3NW0vZTE0dXVqeVRYVGR2cGh1NjA4WEVGNEZVem1pMjBPZ0IKL1QxQkwyVVNqZjFPS1JaU2NoOEZZOFpGNEY2ejJBOHVsMTFNY25iRFJ4UlhXWEtzV3dOaDFHaDZpYngwWnE0UQpYL0dqNnk1OWVWWmlzN2lWUGg1enZyZTBKclNKNGZWS2F4VDU0NVVXaE96RVUrRGlaNWZ2dDVmR2h0blczTWpXCjJxRDlEaWtWM25QdExieHhEVGNQUzBDZEFudHhNeGJ0SS8rbXJkdm1QeGltQldoUytSMHpSWXV5Ukc1Ri85RWoKdjcrV29yYit4TG9OYmRQYWtFTUx6MG43K2VHU0prb2NuZ3lvenhkeGlwTitpNzgwd2p5eERYTS9yaFpJUzV3agpsbHZGbG45NXpCWGpiUlh2Ull0OXJrOW40TVFWQjFWK1cxTkU1ZnlhCi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K dashboard.csr: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURSBSRVFVRVNULS0tLS0KTUlJQ1pEQ0NBVXdDQVFBd0h6RWRNQnNHQTFVRUF3d1VhM1ZpWlhKdVpYUmxjeTFrWVhOb1ltOWhjbVF3Z2dFaQpNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUUNqTkxlV1Y1a3dabnZlTElOYjMwT0t3U1loCjQ5N1RiNmh3VjJOVmpVMGpITFpGSHpBNlNYR1U4SmkrWTVydisva2x4TFY3cVdhbjNTWFNhd3M0dG1WNVR3UUEKaG1CUlJsUzFZaU1qQlp0MCtVclhOWjJqWWZQUlhSbUFTaTducG9jNHNNQkRBMm1yUHhUVXVXU1lkdUFxeCtWMwp0TndKVlM0TXdsd2pDN1hpa1U2dFBxOHF3cDhEZE1zWkZ5R3kvL3JyY0RtYUd0Z2VWTHBlMzR3SklrZC9lU0NvCmpoNXliMUFmN2lQSzhuN1hhZFJpTHh5SU1Mb2IrM2F4ME4wejVubE4ya3lzT1U2Wkt5WUtTLy9GblNuT1lrb3MKQlQyOFdyQlM4djR4SmNGUG5NdnN0b0dsSXlsQVBNai91dTZGOHpPbkZzSGYwVzE0azZHdUkwcUw0dFZIQWdNQgpBQUdnQURBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQUpYc2N5ZmloZko2YXZaM3NQR1JZYTJZeDAySzJTdkUwCkswaEFoMitMMmlPWE9NYnhUYWQxZnJleU1BYVNwc1VpZFppRUtUeUN3MnFGTGFURTZZWkk1VVkvdlRXMHBpSm8KcDFQT2NmUHJUNnhvalRMUTFWZ2FrUzY4OVVEQVpKZmxpQW9ibWRpVGJyR3U0ZEZiWEtxSGc1QmRaY0dWYmpaZApjOWo0OEt2b1VZN1lBV3hmYzh4VC9qSnFhdk1NZE5MSWh2QU94UTRkdnIrS0pZT3I5NmVEdHd2UnpwYmJKUVB4CjNTYkJyelF3WjVUTHVVdVgxUDZBWWhmK1NRcy9IbXRPWWhwN2JIWlJUZ1BucjZaYnJIV0crRllMQmRvc01LdDkKWnZML3RLVnhBRlBLZHBiZTN3NFFGK2Q3YUl2UmJSanhiVkRWSFNsUVhGbSs3QWlmRE1ISXBRPT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUgUkVRVUVTVC0tLS0tCg== dashboard.key: LS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tCk1JSUV2d0lCQURBTkJna3Foa2lHOXcwQkFRRUZBQVNDQktrd2dnU2xBZ0VBQW9JQkFRQ2pOTGVXVjVrd1pudmUKTElOYjMwT0t3U1loNDk3VGI2aHdWMk5WalUwakhMWkZIekE2U1hHVThKaStZNXJ2Ky9rbHhMVjdxV2FuM1NYUwphd3M0dG1WNVR3UUFobUJSUmxTMVlpTWpCWnQwK1VyWE5aMmpZZlBSWFJtQVNpN25wb2M0c01CREEybXJQeFRVCnVXU1lkdUFxeCtWM3ROd0pWUzRNd2x3akM3WGlrVTZ0UHE4cXdwOERkTXNaRnlHeS8vcnJjRG1hR3RnZVZMcGUKMzR3SklrZC9lU0Nvamg1eWIxQWY3aVBLOG43WGFkUmlMeHlJTUxvYiszYXgwTjB6NW5sTjJreXNPVTZaS3lZSwpTLy9GblNuT1lrb3NCVDI4V3JCUzh2NHhKY0ZQbk12c3RvR2xJeWxBUE1qL3V1NkY4ek9uRnNIZjBXMTRrNkd1CkkwcUw0dFZIQWdNQkFBRUNnZ0VBVmx1d3dUYTg4bVZvS2RtMzhFY2xRQ2lQK3VMT3AyYXY1REg1ZCsxNjRaZHgKd3dXTHlXdlBWQll6WEpyc0F3eDdlMGFwR1RROEE1cjdSbW9wMStwN3EwTHFSVFRWaG13R3FxdXhGL2tCbDFYSwpDakp1cFdOUlZubEM0eVZkeUduUHAybXZja1krQmNVdFNwcUc1ajRRdzlKZVU0YzUzeDVaYlpyeWtnRENUNDNuCmx1dkxuajhKa3NTS2hSeVN4ZU91cFRLZ0F6OTJRSXVudXRTMytJMnpIZDNPZXFjUmd6Y0xMeUhwRFYzeXpYWHkKU0dyVmFNdzY4czVXUmh5U1kxL3RobUhpVWcvT2dMT3B5N1BmWDNKV3dqNTd1WXNJaEV0V3ZUUHVOYW1IcytUVAorZThTRU40NUJRa3VPc09Ud2piT0g0Rk9sazF3ZUdDTDEzSjNCSUszNFFLQmdRRE41YkJzc1pmQ0R3YmVDQXloCkFPbXlQOFpWZlVHRTVPa2RtNEU0QUNGaU92MjlGZ3IwUUV5YWo0d01MMHJRRHhYbkdaeEs3ejV2TDNoNkdqNUQKdnhkazIya0FMQjQ5Q1RWWVUxZFlOdktQYjNWUXhpVU9aeTN2cEs1MWV6SWt3cnpSQjQxdTlZMUVpL3lvT0plRwp3bzNUam5VRDFMbjhNeXRJNTBWSlF4eGFYd0tCZ1FESzY1WGIva2RKTWEraUJZdlcrYlN2N1NKbmFkbGpTYlRJClg2VjQxVndyNnhzeVFYMFlicUxSS0VrNlEvSnl6Sk1QdGgzOVFpM0FOR1BhK0dCcFdyQTNNejJTN1ZFdERNYjMKbXlDU0dFbWROMDI1djVmcHBsSXdBOTNsYnlpQWx6eFJUanNoUG5rcHBRTWN0OVE4RjNtaE1LL3VKZzBhQjVUZgo1cFF4djZVK0dRS0JnUURHYUV6dklOOTlpQjkwKzhxM3AzcUxZdnRMVEMxRDA1WjBDbktsdFRKMlJ5UlYvcFRGCnMrUmRtSEE3R2FOOUJOeDFXdStLSWl0RzF6YkFhdU9QUXVoWEx6dHFpQmtIZGdVcXZQelJLL25ua0Y4N1hBVS8KY053S0x1WlNuVW0vdE14Z25XZUVBaW1FWVdVeDhYN0t4RllKQkNEc2RTUlh6RE1zeUhleTFuSE8vd0tCZ1FDcwpma0x2dFdHbnFLTGlHZERidDN5UEtBZGMzUys4SlFXV1p5ZmtaWXBxa3ZxVlovSU0rTTlTK09uMnE1ZkhXbnVRCm1ZRTRyaTd4K2hjQUpxN2VJQWMzaFVsTVFvd0V2WjNORVlOSWJYajJPZkxLZVVHTGpxVEN5Q2F5U0NHbjNlZWEKUGVRcHlFOTZ4UmkyS3RZeEZzdC82RUZGTWZkbEx4aXdrL05acnMycTBRS0JnUURKdmZ5b1RSWHVJV3NnTUJObQpiMFpVWGUrQTE0SDFqSkNPamllZUYrSGZuRGNUNXVPVTh1WU0ya3BRZzBRYm1sTExZRG5wWVFYdW93WkxWQy9lCmZIaWFEQ2ZQZ3JoUTFRT0NzT2RHVmUvSDZaOTAzMWVqQWFQM2NVdzdOcjJPYzhVTEpHU2FVM2RUTXJFdGkwTUYKTjRHZWVRa3cwSHNZclJpZGo3YldpT3IvY0E9PQotLS0tLUVORCBQUklWQVRFIEtFWS0tLS0tCg==
4. 3を使ってpodを起動する
叩きます。
kubectl apply -f dashboard.yaml
イメージのダウンロードに数分かかりますが、完了するとこのようになります。
[root@master k8s-dashboard]# kubectl get pods -n kubernetes-dashboard NAME READY STATUS RESTARTS AGE dashboard-metrics-scraper-dc6947fbf-tvg2k 1/1 Running 0 19s kubernetes-dashboard-5d4dc8b976-b8wn7 1/1 **Running** 0 19s [root@master k8s-dashboard]# kubectl get svc -n kubernetes-dashboard NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE dashboard-metrics-scraper ClusterIP 10.110.214.56 <none> 8000/TCP 25s kubernetes-dashboard ClusterIP 10.110.240.0 **192.168.10.2** 443/TCP 25s
RunningとEXTERNAL-IPがきちんと表示されてればOKです。
それではアクセスしてみましょう。(URLはhttps://[EXTERNA-IP])です。
するとこのような画面になります。
名前 | 内容 |
---|---|
トークン | k8sで作成したサービスアカウントに発行できるトークンを使用してログインします |
Kubeconfig | 複数のクラスタを管理するときに利用するKubeconfigを使用してログインします |
5. アクセス用のtokenを発行する
今回はadmin tokenを発行してみます。
これをapplyしましょう。
cat <<EOF > ./dashboard-account.yaml apiVersion: v1 kind: ServiceAccount metadata: name: admin-user namespace: kubernetes-dashboard --- apiVersion: rbac.authorization.k8s.io/v1beta1 kind: ClusterRoleBinding metadata: name: admin-user roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cluster-admin subjects: - kind: ServiceAccount name: admin-user namespace: kubernetes-dashboard EOF kubectl apply -f dashboard-account.yaml
そうしたらtoken
を発行します。
kubectl get secret -n kubernetes-dashboard | grep admin | awk '{print $1}' | xargs kubectl describe secret -n kubernetes-dashboard | grep token: | awk '{print $2}'
例:発行されたトークン
eyJhbGciOiJSUzI1NiIsImtpZCI6IkswbTNJRjFHX1JIcmFQWkd0RkViYWxTMS1vcThaa3BHYUNnZ1Rac3loTUkifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlcm5ldGVzLWRhc2hib2FyZCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJhZG1pbi11c2VyLXRva2VuLWYycGR0Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6ImFkbWluLXVzZXIiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiJkOTgyNWUzYS02NTFmLTRmNjctOWJhMC1mN2I0NWVkYzcxNTAiLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6a3ViZXJuZXRlcy1kYXNoYm9hcmQ6YWRtaW4tdXNlciJ9.QxZHWtiptJ4sMj152qdOqwrV1HAZTBeq9WWwTAKIBYPtXCuxFImlU0K8wRiAZiFk4W3x1nEmHmNipWiM_Vh9VUg2aZEeSguCBweTH7hGhCuYI8x09UC2IwB8y17rTQqelxLnWyXPYEPrlYwqH4-0AhBePOFTXszPV-NOGcvOMWxa97ryloJt_4ObRwxzZLCT8lNV2FZrfk0iIZv4UNOeuaQNMCf4wRQ_u4ONp-MkTXMjYR_PNcbXhS0Z1EEvEkZKuXbzMalCSCzXuIXjUSw0OPj4sTSYavbhZQ9iM2I_jYlFJsBQwt_8CzszcvqaDGWyzeVJDNPnAbL0HBJOe3ZSmA
そうしたらtokenをコピーしてここに貼り付けましょう。
そしたらログインできるはず!
お疲れ様でした