フラミナル

考え方や調べたことを書き殴ります。IT技術系記事多め

【手順】KubernetesDashboard v2.0.0をExternal IP(NodePort)で公開する

この記事で使用したyamlファイルはGitHubに置いています。

前提条件

  • Kubernetesがインストール済みである
  • CentOS7環境である

手順

手順は以下の通りです。

  1. kubernetes dashboard のyamlをダウンロードし修正する
  2. 自己証明書を作成する
  3. 自己証明書を1でダウンロードしたyamlに埋め込む
  4. 3を使ってpodを起動する
  5. アクセス用のtokenを発行する

1 kubernetes dashboard のyamlをダウンロードし修正する

wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-rc7/aio/deploy/recommended.yaml -O dashboard.yaml

今回はこの図のような構成になります。

f:id:lirlia:20200413171159p:plain

まずは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

RunningEXTERNAL-IPがきちんと表示されてればOKです。

それではアクセスしてみましょう。(URLはhttps://[EXTERNA-IP])です。

するとこのような画面になります。

f:id:lirlia:20200413175102p:plain

名前 内容
トークン 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をコピーしてここに貼り付けましょう。

f:id:lirlia:20200413175102p:plain

そしたらログインできるはず!

f:id:lirlia:20200413181250p:plain

お疲れ様でした

参考