Amazon EKS Platform Version 2の新機能を試した（うまく動かず）

# 2018/12/31 追記
[こちら](https://qiita.com/os1ma/items/7b48decb71d0c1f9ea3e) の記事で動作確認まで実施しました。

# 概要

「[EKSでkubectl topやHorizontal Pod Autoscaler (HPA) が使えない理由](https://qiita.com/os1ma/items/db9635bf7ed74ae86f53)」に書いた通り、EKSではHPAやMetrics Serverが使えませんでした。

残念に思っていたのですが、8月末にHPAとMetrics Serverに対応したバージョンがリリースされたようです。
↓
「[Amazon EKS Platform Version 2 のご紹介](
https://aws.amazon.com/jp/about-aws/whats-new/2018/08/introducing-amazon-eks-platform-version-2/)」
「[Platform Versions](https://docs.aws.amazon.com/ja_jp/eks/latest/userguide/platform-versions.html)」

そこでさっそく試してみたのですが、うまく動きませんでした。。。

# やってみた手順

## EKSの構築

「[Amazon EKS の使用開始](https://docs.aws.amazon.com/ja_jp/eks/latest/userguide/getting-started.html)」の手順でクラスタを構築しました。

![screen-shot-eks-2.png](https://qiita-image-store.s3.amazonaws.com/0/216010/1a19635b-d433-d758-0bdb-f198936e30ae.png)

たしかに、Platform versionがeks.2になっています。

## Metrics Serverの構築

HPAはMetrics Serverに依存しているので、まずはMetrics Serverがデプロイできるか試すことにしました。

Metrics Serverデプロイ前はkubectl topがエラーを吐きます。

```bash
$ kubectl top pod
Error from server (NotFound): the server could not find the requested resource (get services http:heapster:)
```

Metrics Serverをデプロイします。

```bash
$ git clone https://github.com/kubernetes-incubator/metrics-server.git
$ kubectl create -f metrics-server/deploy/1.8+/
```

kuectl topを再度試します。

```bash
$ kubectl top pod
Error from server (NotFound): the server could not find the requested resource (get services http:heapster:)
```

エラーとなってしまいました。

## エラーの原因調査

metrics-serverのログを確認すると

```
$ kubectl -n kube-system logs pod/metrics-server-55b6ff4cb7-7bn6h
I0906 11:05:34.196345       1 serving.go:273] Generated self-signed cert (apiserver.local.config/certificates/apiserver.crt, apiserver.local.config/certificates/apiserver.key)
W0906 11:05:35.092256       1 authentication.go:166] cluster doesn't provide client-ca-file in configmap/extension-apiserver-authentication in kube-system, so client certificate authentication to extension api-server won't work.
W0906 11:05:35.099494       1 authentication.go:210] cluster doesn't provide client-ca-file in configmap/extension-apiserver-authentication in kube-system, so client certificate authentication to extension api-server won't work.
[restful] 2018/09/06 11:05:35 log.go:33: [restful/swagger] listing is available at https://:443/swaggerapi
[restful] 2018/09/06 11:05:35 log.go:33: [restful/swagger] https://:443/swaggerui/ is mapped to folder /swagger-ui/
I0906 11:05:35.159295       1 serve.go:96] Serving securely on [::]:443
```

「cluster doesn't provide client-ca-file in configmap/extension-apiserver-authentication in kube-system, so client certificate authentication to extension api-server won't work.」というWARNログが出ています。

configmap/extension-apiserver-authenticationを確認すると

```bash
$ kubectl -n kube-system describe configmap extension-apiserver-authentication
Name:         extension-apiserver-authentication
Namespace:    kube-system
Labels:       <none>
Annotations:  <none>

Data
====
requestheader-group-headers:
----
["X-Remote-Group"]
requestheader-username-headers:
----
["X-Remote-User"]
requestheader-allowed-names:
----
["front-proxy-client"]
requestheader-client-ca-file:
----
-----BEGIN CERTIFICATE-----
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-----END CERTIFICATE-----

requestheader-extra-headers-prefix:
----
["X-Remote-Extra-"]
Events:  <none>
```

たしかにclient-ca-fileがありません。

kopsで構築したk8sのconfigmap/extension-apiserver-authenticationにはclient-ca-fileがあったので、これがMetrics Serverをデプロイできない原因のようです。

このあたりの仕組みは全然理解できていないので、自分が工夫すれば動くものなのかもよく分かりません。
ちゃんと調べてまとめようと思います。