애플리케이션 업데이트
새로운 리소스가 생성되거나 업데이트되면, 애플리케이션 구성을 조정하여 이러한 새로운 리소스를 활용해야 하는 경우가 많습니다. 환경 변수는 애플리케이션 개발자가 구성을 저장하는 데 널리 사용되는 방법이며, Kubernetes에서는 배포를 생성할 때 컨테이너 스펙의 env 필드를 통해 컨테이너에 환경 변수를 전달할 수 있습니다.
Kubernetes에서 이를 달성하는 두 가지 주요 방법이 있습니다:
- ConfigMap: Kubernetes의 핵심 리소스로, 환경 변수, 텍스트 필드 및 기타 항목과 같은 구성 요소를 키-값 형식으로 전달하여 Pod 스펙에서 사용할 수 있습니다.
- Secret: 기본적으로 암호화되지 않는다는 점을 기억하는 것이 중요하지만, 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