ArgoCD環境構築　ArgoCDでGithubのプライベートリポジトリにhttps接続を行う方法（2022/2/12最新版）

#初めに
現場で、argoCDを用いた簡易動作の調査の依頼を受けてはまったので備忘録として残します。

#argoCDについて
Argo CDは、KubernetesのためのGitOpsに則ったCD(Continuous Delivery)ツール
"CD" という名前のとおり、継続的デリバリーに特化したツールであり、CI(Continuous Integration)の機能はありません。そのため、CIツールとは別途、他の方法で統合する必要があります。

https://openstandia.jp/oss_info/argocd/

#argoCD環境構築方法
●DockerDesktopにkubernetesをインストール

![スクリーンショット 2022-02-12 14.49.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2486920/bcabda27-858f-e0c1-805d-31dca4d8f90d.png)

画面右上の歯車マークを押下して Kubernetesを選択します。
その後、Enable Kubernetesにチェックを入れた後　Apply&Restartを押下することでインストールが完了します。
インストール後は、CLIで　kubectlコマンドが実行できるか確認してください。
※openshiftなどを使った事があるマシンで行うと実行できない場合があります。(私がそうでした)
その場合、docker configで設定を行う必要があります。

●argoCD用のnamespaceとpod作成
以下のコマンドを押下してください。

```
kubectl create namespace argocd
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
```

●port-forwardを用いてargoCDのGUI画面を作成する

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

webでlocalhost:8080で接続する事ができます。
接続できると以下のような画面が出ます。

![スクリーンショット 2022-02-12 15.11.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2486920/844bf981-ed69-714f-4894-b191db36a47f.png)


●web GUIにログインする

Usernameは固定されていて、 admin で入る事ができます。
パスワードは次のコマンドを実行することで確認する事ができます。

```
kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d
```

windowsなどを使っていてbase64が入っていなくても得られた値をネットのbase64変換サイトでデコードしたものでもログインする事ができました。

●Githubとの連携
・publicリポジトリの場合
![スクリーンショット 2022-02-12 15.51.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2486920/f1864cf0-2844-cdcb-8ab5-1685838977f7.png)
左にある歯車を押下後、Repositoriesを選択

![スクリーンショット 2022-02-12 15.52.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2486920/3542b7f9-666a-fdd5-bd7b-b41e3cd74dff.png)
CONNECT REPO USING HTTPS を押下

![スクリーンショット 2022-02-12 15.52.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2486920/38b616d5-42e3-7942-670c-14180293a0d0.png)
Repository URLに接続したいgitのHTTPSから始まるコードを入れて CONNECTを押下

・privateリポジトリの場合（※大はまりしました）
業務で導入したい方は、publicだとセキュリティ上厳しいと思いますのでこちらを参考にしていただきたいです。

![スクリーンショット 2022-02-12 15.51.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2486920/f1864cf0-2844-cdcb-8ab5-1685838977f7.png)
左にある歯車を押下後、Repositoriesを選択

![スクリーンショット 2022-02-12 15.52.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2486920/3542b7f9-666a-fdd5-bd7b-b41e3cd74dff.png)
CONNECT REPO USING HTTPS を押下

![スクリーンショット 2022-02-12 15.52.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2486920/38b616d5-42e3-7942-670c-14180293a0d0.png)

ここまではpublicと同じです。

--------------------間違えたやり方-------------------------------
privateで接続するので、URLは先ほどと同様接続したいリポジトリ(private)のURLを選択
Usernameには、githubのユーザ名
Passwordには、githubのパスワード
よし！、これでつながるだろ！！CONNECT押下
エラー　認証ができません

なんでや！！
---------------------------------------------------------------
冷静に調査してみると、気になる記事が

https://github.blog/2020-12-15-token-authentication-requirements-for-git-operations/

記事によると、GitHubでは2021年8月13日にパスワード認証が廃止されたとのこと
なんだと、、、
直近の事象だったので、Webに上がっている情報はパスワード認証前の情報ばかりだったのでそのおかげで大はまりする事ができました、ありがとうございます。（畜生、、、）

　　　　　　　　　　　　　　　　　　わかるか笑！！

じゃあどうやって連携するのかというとタイトル通りトークンで連携します。
まず、トークンを取得します。
取得方法は、以下の記事がわかりやすかったので指示に従ってください

https://qiita.com/shiro01/items/e886aa1e4beb404f9038

トークンが取得できたら以下の画面に戻り

![スクリーンショット 2022-02-12 15.52.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2486920/38b616d5-42e3-7942-670c-14180293a0d0.png)

Repository URL :接続したいprivate レポジトリのURL
Username :接続したリポジトリのアカウントのUsername
Password :先ほど取得したトークンの値(コピーしたやつです)

CONNECTを押下すると接続できると思います。 

#最後に（感想みたいなもの）
今回、直近で公式の仕様が変わってしまうとネットの記事が使い物にならなくなってしまうことを学びました。
直近で仕様が変わっても対処できるよう、ITの基礎知識と最新情報を取得していきたいと思います。