Written by
izumiiii
on
on
アプリケーションとインフラを統合管理できるCrossPlaneを使ってみた
Cross Plane について
Crossplane はオープン ソースの CNCF プロジェクトです。
Kubernetes API を使用して、任意のクラウド サービス プロバイダーでインフラストラクチャをプロビジョニング、構成、および使用できます。
CrossPlane を使うメリット
- GitOps ベースで管理できる。
- アプリケーションとインフラストラクチャの構成を共存させることができ、CI/CD の複雑さを軽減できる。
minikube x CrossPlane を使って実際に GCP リソースを作成してみる。
minikube を起動させる。
minikube start
minikube addons enable ingress
CrossPlane のインストールを Helm 経由で行う。
kubectl create namespace crossplane-system
helm repo add crossplane-stable https://charts.crossplane.io/stable
helm repo update
helm install crossplane --namespace crossplane-system crossplane-stable/crossplane
ProviderConfig の設定を行う。
kubectl create secret generic gcp-creds -n crossplane-system --from-file=creds=./creds.json
provider.ymal
PROJECT_ID=my-project
echo "apiVersion: gcp.crossplane.io/v1beta1
kind: ProviderConfig
metadata:
name: default
spec:
projectID: ${PROJECT_ID}
credentials:
source: Secret
secretRef:
namespace: crossplane-system
name: gcp-creds
key: creds" | kubectl apply -f -
GCP の SA を作成する。
sa.yaml
apiVersion: iam.gcp.crossplane.io/v1alpha1
kind: ServiceAccount
metadata:
name: perfect-test-sa
spec:
forProvider:
displayName: "a beautiful service account test2"
description: "perfection"
deletionPolicy: Delete
providerConfigRef:
name: default
リソースを作成する。
kubectl apply -f sa.yaml
今回はリソース単体を作成しただけですが、ArgoCD だったり、既存 terraform を組み込める provider を使うことでより移行コスト、効果を得られます。