最初のコンポーネントのデプロイ
サンプルアプリケーションは、Kustomizeで簡単に適用できるように整理されたKubernetesマニフェストのセットで構成されています。Kustomizeはオープンソースのツールであり、kubectl CLIのネイティブ機能としても提供されています。このワークショップではKustomizeを使用してKubernetesマニフェストに変更を適用し、YAMLを手動で編集する必要なく、マニフェストファイルの変更を理解しやすくします。このワークショップのさまざまなモジュールを進めていく中で、Kustomizeを使用してオーバーレイとパッチを段階的に適用していきます。
サンプルアプリケーションとこのワークショップのモジュールのYAMLマニフェストを閲覧する最も簡単な方法は、IDEのファイルブラウザを使用することです:
eks-workshopを展開し、次にbase-application項目を展開すると、サンプルアプリケーションセクションで説明したサンプルアプリケーションの初期状態を構成するマニフェストを閲覧できます:
この構造は、サンプルアプリケーションセクションで説明した各アプリケーションコンポーネント用のディレクトリで構成されています。
modulesディレクトリには、後続のラボ演習で適用するマニフェストのセットが含まれています:

何かをする前に、まずEKSクラスタの現在のNamespaceを確認しましょう:
NAME STATUS AGE
default Active 1h
kube-node-lease Active 1h
kube-public Active 1h
kube-system Active 1h
リストされたエントリはすべて、事前にインストールされたシステムコンポーネント用のNamespaceです。Kubernetesラベルを使用して、Namespaceを作成したものだけにフィルタリングすることで、これらを無視します:
No resources found
最初に行うことは、カタログコンポーネントを単独でデプロイすることです。このコンポーネントのマニフェストは、~/environment/eks-workshop/base-application/catalogにあります。
configMap.yaml
deployment.yaml
kustomization.yaml
namespace.yaml
secrets.yaml
service-mysql.yaml
service.yaml
serviceAccount.yaml
statefulset-mysql.yaml
これらのマニフェストには、カタログAPIの望ましい状態を表現するカタログAPIコンポーネントのDeploymentが含まれています:
apiVersion: apps/v1
kind: Deployment
metadata:
name: catalog
labels:
app.kubernetes.io/created-by: eks-workshop
app.kubernetes.io/type: app
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: catalog
app.kubernetes.io/instance: catalog
app.kubernetes.io/component: service
template:
metadata:
annotations:
prometheus.io/path: /metrics
prometheus.io/port: "8080"
prometheus.io/scrape: "true"
labels:
app.kubernetes.io/name: catalog
app.kubernetes.io/instance: catalog
app.kubernetes.io/component: service
app.kubernetes.io/created-by: eks-workshop
spec:
serviceAccountName: catalog
securityContext:
fsGroup: 1000
containers:
- name: catalog
envFrom:
- configMapRef:
name: catalog
- secretRef:
name: catalog-db
securityContext:
capabilities:
drop:
- ALL
readOnlyRootFilesystem: true
runAsNonRoot: true
runAsUser: 1000
image: "public.ecr.aws/aws-containers/retail-store-sample-catalog:1.2.1"
imagePullPolicy: IfNotPresent
ports:
- name: http
containerPort: 8080
protocol: TCP
livenessProbe:
httpGet:
path: /health
port: 8080
initialDelaySeconds: 30
periodSeconds: 3
readinessProbe:
httpGet:
path: /health
port: 8080
successThreshold: 3
periodSeconds: 5
resources:
limits:
memory: 512Mi
requests:
cpu: 250m
memory: 512Mi
volumeMounts:
- mountPath: /tmp
name: tmp-volume
volumes:
- name: tmp-volume
emptyDir:
medium: Memory