【五日目】最小限の構成でdocker-composeからKubernetesにデプロイする勉強会


概要

表題の勉強会を行った五日目の内容を記載します。全日の内容は以下のまとめページをご覧ください。

【まとめ】最小限の構成でdocker-composeからKubernetesにデプロイする勉強会

五日目のできたこと

  • Kubernetes
    • GitLabでDeployTokenの作成
    • secretの作成

五日目の内容

四日目では公開されたイメージを元にKubernetesで動作させることができました。ただしコンテナイメージを非公開にするとプルに失敗します。これを解決するためsecretを作成します。

$ kubectl get po
NAME                           READY   STATUS         RESTARTS   AGE
express-app-7dc6d9dbcd-hqt7f   0/1     ErrImagePull   0          7s
express-app-7dc6d9dbcd-trxsf   0/1     ErrImagePull   0          7s

GitLabでDeployTokenの作成

GitLabのプロジェクトのページ(ソースが格納されている?)から
Setting > Repository > Deploy Tokensと辿っていきます。

以下のような設定でトークンを作成します。

表示されたユーザー名パスワードをメモしておきます。

secretの作成

以下のコマンドでsecretを作成します。

kubectl create secret docker-registry gitlab-secret --docker-server=registry.gitlab.com --docker-username=[ユーザー名] --docker-password=[パスワード]

作成したsecretimagePullSecretsとして設定しておきます。

■ deployment.yml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: express-app
  labels:
    app: express-app
spec:
  replicas: 2
  selector:
    matchLabels:
      app: express-app
  strategy:
    type: Recreate
  template:
    metadata:
      labels:
        app: express-app
    spec:
      containers:
      - image: registry.gitlab.com/tamoco-mocomoco/k8s-test/express
        name: express-app
        ports:
        - containerPort: 3000
          name: express-app
      imagePullSecrets:
        - name: gitlab-secret

imagePullSecretsを設定したモノをapplyしてpodを確認します。これで非公開なイメージでもデプロイすることができます。

$ kubectl apply -f deployment.yaml
deployment.apps/express-app configured

$ kubectl get po
NAME                           READY   STATUS    RESTARTS   AGE
express-app-7dc6d9dbcd-dsbw7   1/1     Running   0          37s
express-app-7dc6d9dbcd-wxmfl   1/1     Running   0          7s

五日目を振り返って

Kubernetesのサンプルアプリを調べると公開されたイメージから動作させるモノがほとんどなので、今回は非公開のイメージから動作させることにしました。一日一時間程度なのでkindなどの説明ができておらず、もう少し理解を深めつつ情報を展開していきたいところです。