---
apiVersion: v1
kind: ConfigMap
metadata:
  name: q4
  labels:
    question.kontest.amsy.dev: "4"
data:
  question: |-
    Serviceは複数個のPodに対してロードバランサ相当の機能を提供するもので、ラベルを使って転送先のPodを指定します。
    次のDeploymentに対応するServiceを作成してください。
    なお、Serviceは8181番ポートで受けて、Podの80番ポートに転送するように設定してください。
    
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx
    spec:
      replicas: 2
      selector:
        matchLabels:
          app: nginx-app
      template:
        metadata:
          labels:
            app: nginx-app
        spec:
          containers:
          - name: nginx-container
            image: amsy810/echo-nginx:v2.0

  hint: |-
    https://kubernetes.io/ja/docs/concepts/services-networking/service/
  base_content.yaml: |-
    apiVersion: v1
    kind: Service
    metadata:
      name: nginx-service
    spec:
      type: ClusterIP
      ports:
      - name: "http-port"
  answer.yaml: |-
    apiVersion: v1
    kind: Service
    metadata:
      name: nginx-service
    spec:
      type: ClusterIP
      ports:
      - name: "http-port"
        protocol: "TCP"
        port: 8181
        targetPort: 80
      selector:
        app: nginx-app
  comment: |-
    【解説 by カサレアル】
    spec.ports[].port でService自体のポート番号を、 spec.ports[].targetPort でPodのポート番号を指定します。
    併せて、負荷分散対象となるPodの条件を spec.selector で指定します。ここに指定されたlabelを持っているPodに負荷分散されます。Deploymentの spec.template.metadata.labels と、Serviceの spec.selector が一致していることを確認してください。
  author: |-
    Masaya Aoyama (@amsy810)
