eksctl create iamserviceaccount \
--name dynamodb-pull-sa \
--region=ap-northeast-2 \
--cluster wsi-eks-cluster \
--namespace=wsi\
--attach-policy-arn "arn:aws:iam::aws:policy/AmazonDynamoDBFullAccess" \
--override-existing-serviceaccounts \
--approve
Shell
복사
#!/bin/bash
ROLE_ARN=$(eksctl get iamserviceaccount --cluster wsi-eks-cluster --name dynamodb-pull-sa --namespace wsi --region ap-northeast-2 --output json | jq -r '.[].status.roleARN')
ROLE_NAME=$(aws iam get-role --role-name $(aws iam list-roles --query "Roles[?Arn=='$ROLE_ARN'].RoleName" --output text) --query "Role.RoleName" --output text)
keys=$(aws kms list-keys --output json)
key_ids=$(echo $keys | jq -r '.Keys[].KeyId')
for key_id in $key_ids; do
name_tag=$(aws kms list-resource-tags --key-id $key_id --query "Tags[].TagValue" --output text 2> /dev/null)
if [ "$name_tag" == "db-kms" ]; then
kms_arn=$(aws kms describe-key --key-id $key_id --query "KeyMetadata.Arn" --output text)
fi
done
aws iam put-role-policy \
--role-name $ROLE_NAME \
--policy-name AllowKMSDecrypt \
--policy-document "{
\"Version\": \"2012-10-17\",
\"Statement\": [
{
\"Effect\": \"Allow\",
\"Action\": \"kms:Decrypt\",
\"Resource\": \"${kms_arn}\"
}
]
}"
Shell
복사
apiVersion: apps/v1
kind: Deployment
metadata:
name: order
namespace: wsi
labels:
app: order
spec:
replicas: 2
selector:
matchLabels:
app: order
template:
metadata:
labels:
app: order
type: fargate
spec:
serviceAccount: dynamodb-pull-sa
containers:
- name: order-cnt
image: IMAGE
ports:
- containerPort: 8080
volumeMounts:
- name: log-volume
mountPath: /log
resources:
requests:
memory: "1Gi"
cpu: "0.5"
limits:
memory: "1Gi"
cpu: "0.5"
env:
- name: AWS_REGION
valueFrom:
secretKeyRef:
name: order-credentials
key: REGION
- name: fluent-bit-cnt
image: fluent/fluent-bit:latest
imagePullPolicy: IfNotPresent
ports:
- containerPort: 2020
name: metrics
protocol: TCP
volumeMounts:
- name: config-volume
mountPath: /fluent-bit/etc/
- name: log-volume
mountPath: /log
volumes:
- name: log-volume
emptyDir: {}
- name: config-volume
configMap:
name: order
YAML
복사
IMAGE_URL=$(aws ecr describe-repositories --repository-name order-ecr --query "repositories[].repositoryUri" --output text)
IMAGE_TAG=$(aws ecr describe-images --repository-name order-ecr --query "imageDetails[].imageTags" --output text)
IMAGE="$IMAGE_URL:$IMAGE_TAG"
Shell
복사
sed -i "s|IMAGE|$IMAGE|g" deployment.yaml
Shell
복사
kubectl apply -f deployment.yaml
Shell
복사
apiVersion: v1
kind: Service
metadata:
name: order-service
namespace: wsi
spec:
selector:
app: order
ports:
- protocol: TCP
port: 8080
targetPort: 8080
YAML
복사
kubectl apply -f service.yaml
Shell
복사
