アプリケーションの更新
新しいリソースが作成または更新されると、アプリケーション設定はこれらの新しいリソースを利用するように調整する必要があることがよくあります。環境変数はアプリケーション開発者が設定を保存するために人気のある選択肢であり、Kubernetesでは、デプロイメントを作成する際にcontainer 仕様のenvフィールドを通じてコンテナに環境変数を渡すことができます。
Kubernetesでこれを実現するための主な方法は2つあります:
- ConfigMap:これらはKubernetesのコアリソースであり、環境変数、テキストフィールド、その他のアイテムをキーと値の形式でポッド仕様で使用するように渡すことができます。
- Secret:デフォルトでは暗号化されていませんが(これは覚えておくことが重要です)、シークレットはパスワードなどの機密情報を保存するために使用されます。
このラボでは、cartsコンポーネントのConfigMapの更新に焦点を当てます。ローカルのDynamoDBを指す設定を削除し、代わりにCrossplaneによって作成されたDynamoDBテーブルの名前を使用します:
- Kustomize Patch
- ConfigMap/carts
- Diff
~/environment/eks-workshop/modules/automation/controlplanes/crossplane/app/kustomization.yaml
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- ../../../../../base-application/carts
patches:
- path: carts-serviceAccount.yaml
configMapGenerator:
- name: carts
namespace: carts
env: config.properties
behavior: replace
options:
disableNameSuffixHash: true
apiVersion: v1
data:
RETAIL_CART_PERSISTENCE_DYNAMODB_TABLE_NAME: ${EKS_CLUSTER_NAME}-carts-crossplane
RETAIL_CART_PERSISTENCE_PROVIDER: dynamodb
kind: ConfigMap
metadata:
name: carts
namespace: carts
apiVersion: v1
data:
- AWS_ACCESS_KEY_ID: key
- AWS_SECRET_ACCESS_KEY: secret
- RETAIL_CART_PERSISTENCE_DYNAMODB_CREATE_TABLE: "true"
- RETAIL_CART_PERSISTENCE_DYNAMODB_ENDPOINT: http://carts-dynamodb:8000
- RETAIL_CART_PERSISTENCE_DYNAMODB_TABLE_NAME: Items
+ RETAIL_CART_PERSISTENCE_DYNAMODB_TABLE_NAME: ${EKS_CLUSTER_NAME}-carts-crossplane
RETAIL_CART_PERSISTENCE_PROVIDER: dynamodb
kind: ConfigMap
metadata:
name: carts
さらに、cartsポッドにDynamoDBサービスにアクセスするための適切なIAM権限を提供する必要があります。IAMロールはすでに作成されており、IAM Roles for Service Accounts(IRSA)を使用してこれをcartsポッドに適用します:
- Kustomize Patch
- ServiceAccount/carts
- Diff
~/environment/eks-workshop/modules/automation/controlplanes/crossplane/app/carts-serviceAccount.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
name: carts
namespace: carts
annotations:
eks.amazonaws.com/role-arn: ${CARTS_IAM_ROLE}