0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Red Hat OpenShift on IBM CloudのクラスターをAmazon EKS ConnectorでEKSコンソールに接続する

Last updated at Posted at 2021-09-14

Amazon EKS Connector

Amazon EKS Connectorは、EKS外の既存のKubernetesクラスターをAmazon EKSコンソールで表示することができる機能です。操作ができるわけではありません。これで何がうれしいかは難しいところですが、複数のKubernetesクラスターを一見一元管理できているように見えるので、マルチクラウド環境でクラスタが乱立した際に、マネージメント向けの印象は良くなるかもしれません。

目的

今回はIBM CloudのRed Hat OpenShift on IBM Cloud(ROKS)をEKS ConnectorでEKSコンソールに表示してみます。

なお、2021年9月時点のEKS ConnectorはまだPreviewリリースのため、GA後の仕様は変更される可能性があります。

手順

公式ガイドはこちらです。

IAMポリシーの追加(AWS)

下記ファイルを作成します。

eks-connector-agent-trust-policy.json
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "SSMAccess",
            "Effect": "Allow",
            "Principal": {
                "Service": [
                    "ssm.amazonaws.com"
                ]
            },
            "Action": "sts:AssumeRole"
        }
    ]
}
eks-connector-agent-policy.json
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "SsmControlChannel",
            "Effect": "Allow",
            "Action": [
                "ssmmessages:CreateControlChannel"
            ],
            "Resource": "arn:aws:eks:*:*:cluster/*"
        },
        {
            "Sid": "ssmDataplaneOperations",
            "Effect": "Allow",
            "Action": [
                "ssmmessages:CreateDataChannel",
                "ssmmessages:OpenDataChannel",
                "ssmmessages:OpenControlChannel"
            ],
            "Resource": "*"
        }
    ]
}

IAMに登録します。

$ aws iam create-role --role-name AmazonEKSConnectorAgentRole --assume-role-policy-document file://eks-connector-agent-trust-policy.json
$ aws iam put-role-policy --role-name AmazonEKSConnectorAgentRole --policy-name AmazonEKSConnectorAgentPolicy --policy-document file://eks-connector-agent-policy.json

クラスタの登録(AWS)

今回はCLIを使います。

$ aws eks register-cluster --name roks-public-tok --connector-config roleArn=arn:aws:iam::************:role/AmazonEKSConnectorAgentRole,provider="OPENSHIFT"

EKSコンソールを確認します。一覧にクラスターが表示され、ステータスが保留中となります。

image.png

クラスターを選択するとマニフェストファイルがダウンロードできます。この操作は1回しかできませんので、必ずダウンロードしてください。

image.png

ServiceAccountの変更(IBM Cloud)

ガイドには記載がなく、OpenShift固有の手順です。EKS ConnectorのPod内にrootユーザーで実行されるコンテナがあるため、rootで実行可能なようにServiceAccountにSCCを設定します。

$ oc create ns eks-connector
namespace/eks-connector created

$ oc create sa eks-connector -n eks-connector
serviceaccount/eks-connector created

$ oc adm policy add-scc-to-user anyuid -z eks-connector -n eks-connector
clusterrole.rbac.authorization.k8s.io/system:openshift:scc:anyuid added: "eks-connector"

EKS Connectorのデプロイ(IBM Cloud)

先ほどダウンロードしたマニフェストファイルを登録します。

$ oc apply -f roks-public-tok.yaml
Warning: oc apply should be used on resource created by either oc create --save-config or oc apply
namespace/eks-connector configured
secret/eks-connector-activation-config created
role.rbac.authorization.k8s.io/eks-connector-secret-access created
serviceaccount/eks-connector created
secret/eks-connector-token created
rolebinding.rbac.authorization.k8s.io/eks-connector-secret-access created
configmap/eks-connector-agent created
statefulset.apps/eks-connector created

EKSコンソールで確認します。この段階ではエラーになりますが、ステータスがアクティブになります。

image.png

ClusterRoleの設定(IBM Cloud)

テンプレートをダウンロードします。

$ curl -o eks-connector-clusterrole.yaml https://amazon-eks.s3.us-west-2.amazonaws.com/eks-connector/manifests/eks-connector-console-roles/eks-connector-clusterrole.yaml

最下部の%IAM_ARN%を自ユーザーのARNに書き換えます。

eks-connector-clusterrole.yaml
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: eks-connector-service
subjects:
  - kind: ServiceAccount
    name: eks-connector
    namespace: eks-connector
roleRef:
  kind: ClusterRole
  name: eks-connector-service
  apiGroup: rbac.authorization.k8s.io
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: eks-connector-service
rules:
  - apiGroups: [ "" ]
    resources:
      - users
    verbs:
      - impersonate
    resourceNames:
      # TODO: 1. ADD your IAM identity arn here
      # - "%IAM_ARN%"
      - arn:aws:iam::************:user/teru

ClusterRoleを追加します。

$ oc apply -f eks-connector-clusterrole.yaml
clusterrolebinding.rbac.authorization.k8s.io/eks-connector-service created
clusterrole.rbac.authorization.k8s.io/eks-connector-service created

続いてもう1つテンプレートをダウンロードします。

$ curl -o eks-connector-console-dashboard-full-access-group.yaml https://amazon-eks.s3.us-west-2.amazonaws.com/eks-connector/manifests/eks-connector-console-roles/eks-connector-console-dashboard-full-access-group.yaml

こちらも同様に%IAM_ARN%を変更します。

eks-connector-console-dashboard-full-access-group.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: eks-connector-console-dashboard-full-access-clusterrole
rules:
- apiGroups:
  - ""
  resources:
  - nodes
  - namespaces
  - pods
  - events
  verbs:
  - get
  - list
- apiGroups:
  - apps
  resources:
  - deployments
  - daemonsets
  - statefulsets
  - replicasets
  verbs:
  - get
  - list
- apiGroups:
  - batch
  resources:
  - jobs
  verbs:
  - get
  - list
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: eks-connector-console-dashboard-full-access-clusterrole-binding
subjects:
- kind: User
  # name: "%IAM_ARN%"
  name: arn:aws:iam::************:user/teru
  apiGroup: rbac.authorization.k8s.io
roleRef:
  kind: ClusterRole
  name: eks-connector-console-dashboard-full-access-clusterrole
  apiGroup: rbac.authorization.k8s.io
---

ClusterRoleを登録します。

$ oc apply -f eks-connector-console-dashboard-full-access-group.yaml
clusterrole.rbac.authorization.k8s.io/eks-connector-console-dashboard-full-access-clusterrole created
clusterrolebinding.rbac.authorization.k8s.io/eks-connector-console-dashboard-full-access-clusterrole-binding created

EKSコンソールの確認(AWS)

画面をリロードするとROKSの状態が確認できるようになります。

image.png

image.png

まとめ

基本は公式ガイド通りですが、ROKS(OpenShift)固有でSCC設定が追加で必要となります。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?