🐈

Controller Configを利用して、CrossplaneのProviderにresourcesを設定する方法

2023/03/06に公開

内容

CrossplaneのAWS Providerを動作させるPodにresources(CPU,memory)を設定する方法を紹介します。

何が起きたか

CrossplaneをAWS EKS (Fargate)に導入していたところ、以下のようなエラーが発生し、正常にCrossplaneからAWS Resource(managed resources)を作成できなかった。

current package revision is unhealthy
failed to instantiate provider "registry.terraform.io/hashicorp/aws" to obtain schema: timeout while waiting for plugin to start

原因

上記エラーの原因として、CrossplaneのProviderを動作させているPodがリソース不足で正常に動作していないことがわかった。そのため、Providerが動作するPodにresourcesを設定して解消することにした。

Provider Settings

https://docs.crossplane.io/v1.11/getting-started/provider-aws/

上記のCrossplane公式ドキュメント通りに、AWS Providerをセッティングすると以下のようなyamlファイルになります。

---
apiVersion: aws.upbound.io/v1beta1
kind: ProviderConfig
metadata:
  name: default
spec:
  credentials:
    source: Secret
    secretRef:
      namespace: crossplane-system
      name: aws-secret
      key: creds
---
apiVersion: pkg.crossplane.io/v1
kind: Provider
metadata:
  name: upbound-provider-aws
spec:
  package: xpkg.upbound.io/upbound/provider-aws:v0.30.0

このyamlファイルのまま、applyすると、Provider kindによって作成されるPod(Deployment)にresourcesパラメーターが設定されていないため、EKS(Fargate)の場合、リソース不足で、正常にCrossplaneが動作しません。
そのため、以下のように、ControllerConfigを追加して、Providerが動作するPodに多めにリソースが割り当てられるようにしました。

---
apiVersion: aws.upbound.io/v1beta1
kind: ProviderConfig
metadata:
  name: default
spec:
  credentials:
    source: Secret
    secretRef:
      namespace: crossplane-system
      name: aws-secret
      key: creds
---
apiVersion: pkg.crossplane.io/v1
kind: Provider
metadata:
  name: upbound-provider-aws
spec:
  package: xpkg.upbound.io/upbound/provider-aws:v0.30.0
  controllerConfigRef:
    name: upbound-provider-aws-controller-config
---
apiVersion: pkg.crossplane.io/v1alpha1
kind: ControllerConfig
metadata:
  name: upbound-provider-aws-controller-config
spec:
  resources:
    limits:
      cpu: 2000m
      memory: 2Gi
    requests:
      cpu: 500m
      memory: 0.5Gi

この状態でapplyしたところ、正常にmanaged resourcesを作成できるようになりました。

EKS (Fargate)は意外と癖があった

EKS(fargate)は、nodeの管理をmanagedサービスに任せられるので運用が楽になるかと思いきや、意外と使ってみると運用コストが高くなる部分も多かったです(まだ、1週間ぐらいしか運用していませんが)。
これからも、EKSを運用していく上で発生したエラーハンドリングでzennの記事にしていきます。

note

勉強法やキャリア構築法など、エンジニアに役立つ記事をnoteで配信しています。

https://note.com/ring_belle/membership

Discussion