LoginSignup
1
1

More than 3 years have passed since last update.

EKSで機械学習 #8 Argo CDを利用したCD環境の構築

Last updated at Posted at 2020-03-04

はじめに

このシリーズでは Amazon EKSで機械学習を行っていきたいと思います

シリーズ目次

EKSで機械学習 #1 準備編
EKSで機械学習 #2 クラスター作成編
EKSで機械学習 #3 Managed Worker Node作成編
EKSで機械学習 #4 GPU Managed Worker Node作成編
EKSで機械学習 #5 Cluster AutoScaler設定編
EKSで機械学習 #6 HPAの設定
EKSで機械学習 #7 EFSの設定
EKSで機械学習 #8 Argo CDを利用したCD環境の構築(この記事)

この記事の目的

Argo CDを利用したCD環境の構築を行います。
Argo CDを選んだ理由は、自分の勉強を兼ねているからです。

チュートリアル

こちらを参考にしました。

namaspace, crd の設定

namespaceについて汎用性があるように、ymlにしました。

namespace.yml
kind: Namespace
apiVersion: v1
metadata:
  name: argocd
  labels:
    name: argocd

install用のマニフェストもローカルに保存して、applyしました


k apply -f namespace.yml 
wget https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
k apply -f install.yaml -n argocd

 確認


k get all -n argocd
NAME                                                 READY   STATUS    RESTARTS   AGE
pod/argocd-application-controller-7585975794-h7sc7   1/1     Running   0          20s
pod/argocd-dex-server-6dbcf9c747-7sc22               1/1     Running   0          20s
pod/argocd-redis-868b8cb57f-29wk5                    1/1     Running   0          20s
pod/argocd-repo-server-6d8cdc4878-fgbnx              1/1     Running   0          20s
pod/argocd-server-656f9b895b-f9mh6                   1/1     Running   0          20s

NAME                            TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)             AGE
service/argocd-dex-server       ClusterIP   10.100.43.115    <none>        5556/TCP,5557/TCP   20s
service/argocd-metrics          ClusterIP   10.100.249.139   <none>        8082/TCP            20s
service/argocd-redis            ClusterIP   10.100.114.180   <none>        6379/TCP            20s
service/argocd-repo-server      ClusterIP   10.100.82.88     <none>        8081/TCP,8084/TCP   20s
service/argocd-server           ClusterIP   10.100.251.101   <none>        80/TCP,443/TCP      20s
service/argocd-server-metrics   ClusterIP   10.100.239.103   <none>        8083/TCP            20s

NAME                                            READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/argocd-application-controller   1/1     1            1           20s
deployment.apps/argocd-dex-server               1/1     1            1           20s
deployment.apps/argocd-redis                    1/1     1            1           20s
deployment.apps/argocd-repo-server              1/1     1            1           20s
deployment.apps/argocd-server                   1/1     1            1           20s

NAME                                                       DESIRED   CURRENT   READY   AGE
replicaset.apps/argocd-application-controller-7585975794   1         1         1       20s
replicaset.apps/argocd-dex-server-6dbcf9c747               1         1         1       20s
replicaset.apps/argocd-redis-868b8cb57f                    1         1         1       20s
replicaset.apps/argocd-repo-server-6d8cdc4878              1         1         1       20s
replicaset.apps/argocd-server-656f9b895b                   1         1         1       20s
PowerUser:~/environment/argo-cd $ 

Argo CD CLIの設定

https://argoproj.github.io/argo-cd/cli_installation/
これを参考にしました。


VERSION=$(curl --silent "https://api.github.com/repos/argoproj/argo-cd/releases/latest" | grep '"tag_name"' | sed -E 's/.*"([^"]+)".*/\1/')
wget https://github.com/argoproj/argo-cd/releases/download/$VERSION/argocd-linux-amd64
sudo mv argocd-linux-amd64 /usr/local/bin/argocd
chmod +x /usr/local/bin/argocd

Argo CD API Serverへアクセスできるようにする

すでにサービスは起動していますが、svcは外部公開していないので、CLIが接続できません


k get svc -n argocd
NAME                    TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)             AGE
argocd-dex-server       ClusterIP   10.100.43.115    <none>        5556/TCP,5557/TCP   2m24s
argocd-metrics          ClusterIP   10.100.249.139   <none>        8082/TCP            2m24s
argocd-redis            ClusterIP   10.100.114.180   <none>        6379/TCP            2m24s
argocd-repo-server      ClusterIP   10.100.82.88     <none>        8081/TCP,8084/TCP   2m24s
argocd-server           ClusterIP   10.100.251.101   <none>        80/TCP,443/TCP      2m24s
argocd-server-metrics   ClusterIP   10.100.239.103   <none>        8083/TCP            2m24s

チュートリアルは2つ方法があり
port-forwardする方法とingressを作成する方法があるようですが、今回は port-forwardで行いたいと思います。

注意: 私の環境(cloud9)では port-forwardの方法ではArgoCDのUIにアクセスできなかったため、以下はローカル(Mac)で行っています


kubectl port-forward svc/argocd-server -n argocd 8080:443

こんなのが表示されました
image.png

初期パスワードはpod名のようなので確認します


kubectl get pods -n argocd -l app.kubernetes.io/name=argocd-server -o name | cut -d'/' -f 2
argocd-server-656f9b895b-XXXXX

CLIでログインします。

argocd login localhost:8080
WARNING: server certificate had error: x509: certificate signed by unknown authority. Proceed insecurely (y/n)? y
Username: admin
Password: 
'admin' logged in successfully
Context 'localhost:8080' updated

新しいパスワードは argocd123 としました

argocd account update-password
*** Enter current password: 
*** Enter new password: 
*** Confirm new password: 
Password updated
Context 'localhost:8080' updated

サンプルアプリケーションの登録(GUI)

チュートリアルのURL通りで問題なく動きました。

image.png

まとめ

CD環境でArgoを導入しました。
近々、CIと組み合わせて、GitOps環境を構築したいと思います。
また、カナリアデプロイもこちらで紹介されていたので、時間あるときにやってみようと思います
https://qiita.com/syogun/items/2ed4478a314bf7e4a63e

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1