GitOps 継続的デプロイメント ツールである Argo CD を初めて体験

GitOps 継続的デプロイメント ツールである Argo CD を初めて体験

[[409076]]

Argo CD は、宣言型 GitOps コンセプトに従う Kubernetes の継続的デプロイメント ツールです。 Argo CD は、Git リポジトリが変更されると、アプリケーションを自動的に同期してデプロイします。

Argo CD は GitOps モデルに従い、Git リポジトリを真のソースとして使用して、目的のアプリケーション状態を定義します。 Argo CD はさまざまな Kubernetes マニフェストをサポートしています。

  • カスタマイズ
  • ヘルムチャート
  • ksonnet アプリケーション
  • jsonnet ファイル
  • YAML/json マニフェストのプレーン ディレクトリ

構成管理プラグインとして構成されたカスタム構成管理ツール

Argo CD は、指定されたターゲット環境に目的のアプリケーション状態を自動的に展開します。アプリケーションのデプロイメントでは、ブランチやタグの更新を追跡したり、Git コミット時にマニフェストの指定されたバージョンに固定したりできます。

建築

ArgoCD アーキテクチャ

Argo CD は、実行中のアプリケーションを継続的に監視し、現在のライブ状態と目的のターゲット状態 (Git リポジトリで指定) を比較する Kubernetes コントローラーを介して実装されます。デプロイされたアプリケーションの実際の状態がターゲットの状態と異なる場合、OutOfSync と見なされます。 Argo CD はこれらの違いを報告し、状態を目的のターゲット状態に自動または手動で同期するためのツールを提供します。 Git リポジトリ内の目的のターゲット状態に加えられた変更は、指定されたターゲット環境に自動的に適用され、フィードバックされます。

以下は、Argo CD の主なコンポーネントの簡単な紹介です。

API サービス: API サービスは、Web UI、CLI、CI/CD システムで使用されるインターフェースを公開する gRPC/REST サービスです。以下の機能があります。

  • アプリケーション管理とステータスレポート
  • アプリケーション操作を実行する(例:同期、ロールバック、ユーザー定義操作)
  • ストレージ リポジトリとクラスター資格情報管理 (K8S Secrets オブジェクトとして保存)
  • 外部IDプロバイダーへの認証と承認
  • RBAC
  • Git Webhook イベントのリスナー/フォワーダー

リポジトリ サービス:リポジトリ サービスは、アプリケーション マニフェストを保持する Git リポジトリのローカル キャッシュを維持する内部サービスです。次の入力が提供された場合、Kubernetes マニフェストを生成して返す役割を担います。

  • URLの保存
  • リビジョンバージョン(コミット、タグ、ブランチ)
  • アプリケーションパス
  • テンプレート構成: パラメーター、ksonnet 環境、helm values.yaml など。

アプリケーション コントローラー:アプリケーション コントローラーは、実行中のアプリケーションを継続的に監視し、現在のライブ状態と目的のターゲット状態 (リポジトリで指定) を比較する Kubernetes コントローラーです。アプリケーションの OutOfSync 状態を検出し、状態を同期するためのアクションを実行します。ユーザー定義のライフサイクル イベント フック (PreSync、Sync、PostSync) を呼び出す役割を担います。

関数

  • 指定されたターゲット環境にアプリケーションを自動的にデプロイする
  • 複数の構成管理/テンプレート ツール (Kustomize、Helm、Ksonnet、Jsonnet、プレーン YAML) をサポート
  • 複数のクラスタを管理および展開する機能
  • SSO 統合 (OIDC、OAuth2、LDAP、SAML 2.0、GitHub、GitLab、Microsoft、LinkedIn)
  • マルチテナントと認可のためのRBACポリシー
  • Gitリポジトリにコミットされたアプリケーション構成にいつでもロールバック/ロールバックできます。
  • アプリケーションリソースの健全性状態の分析
  • 自動構成検出と視覚化
  • アプリケーションを自動または手動で希望の状態に同期する
  • アプリケーションアクティビティをリアルタイムで表示するWeb UI
  • 自動化と CI 統合のための CLI
  • Webhook 統合 (GitHub、BitBucket、GitLab)
  • 自動化のためのアクセストークン
  • 複雑なアプリケーション展開(ブルー/グリーンやカナリアリリースなど)をサポートするためのPreSync、Sync、PostSyncフック
  • アプリケーションイベントとAPI呼び出しの監査
  • Prometheus モニタリング メトリック
  • Git で ksonnet/helm パラメータを上書きするために使用されます

コアコンセプト

  • アプリケーション: リソースリストによって定義されたKubernetesリソースのセット。CRDリソースオブジェクトです。
  • アプリケーションソースタイプ: アプリケーションの構築に使用されるツール
  • ターゲット状態: ターゲット状態は、Git リポジトリ内のファイルによって表されるアプリケーションの目的の状態を指します。
  • ライブ状態: どの Pod がデプロイされているかなど、アプリケーションのリアルタイムの状態を指します。
  • 同期ステータス: 同期ステータスは、リアルタイム ステータスがターゲット ステータスと一致しているかどうかを示します。デプロイされたアプリケーションは Git で記述されたものと同じですか?
  • 同期: 同期とは、Kubernetes クラスターに変更を適用するなどして、アプリケーションをターゲット状態に移行するプロセスを指します。
  • 同期操作ステータス: 同期操作ステータスは、同期が成功したかどうかを示します。
  • リフレッシュ: リフレッシュとは、Gitの最新コードとライブ状態を比較して、何が違うのかを調べることです。
  • 健全性: アプリケーションの健全性。正常に機能していますか?リクエストに応えられますか?
  • ツール: ツールとは、Kustomize や Ksonnet など、ファイル ディレクトリからマニフェストを作成するツールを指します。
  • 構成管理ツール: 構成管理ツール
  • 構成管理プラグイン: 構成管理プラグイン

インストール

もちろん、前提条件として、kubectl からアクセスできる Kubernetes クラスターが必要です。次のコマンドを使用してください。ここでは最新の安定バージョン v2.0.4 をインストールします。

  1. kubectl名前空間 argocdを作成します
  2. kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/v2.0.4/manifests/install.yaml

実稼働環境で使用する場合は、次のコマンドを使用して HA 高可用性バージョンをデプロイできます。

  1. kubectl名前空間 argocdを作成します
  2. kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/v2.0.4/manifests/ha/install.yaml

これにより、新しい名前空間 argocd が作成され、そこに Argo CD サービスとアプリケーション リソースがデプロイされます。

  1. $ kubectl ポッドを取得 -n argocd
  2. 名前準備完了 ステータス 再起動 年齢
  3. argocd-application-controller-0 1/1 実行中 0 15分
  4. argocd-dex-server-76ff776f97-ds7mm 1/1 実行中 0 15m
  5. argocd-redis-747b678f89-w99wf 1/1 実行中 0 15分
  6. argocd-repo-server-6fc4456c89-586zl 1/1 実行中 0 15分
  7. argocd-server-7d57bc994b-kkwsd 1/1 実行中 0 15分
  • UI、SSO、マルチクラスター管理などの機能には興味がなく、アプリケーションの変更をクラスターに同期するだけの場合は、--disable-auth フラグを使用して認証を無効にすることができます。これを実現するには、コマンド kubectl patch deploy argocd-server -n argocd -p '[{"op": "add", "path": "/spec/template/spec/containers/0/command/-", "value": "--disable-auth"}]' --type json を使用できます。

次に、Argo CD の操作を容易にするために CLI ツールをローカルにインストールできます。 Argo CD の最新バージョンは、Argo CD Git リポジトリのリリース ページ (https://github.com/argoproj/argo-cd/releases/latest) で確認するか、次のコマンドを実行してバージョンを取得できます。

  1. VERSION=$(curl --silent "https://api.github.com/repos/argoproj/argo-cd/releases/latest" | grep '"tag_name"' | sed -E 's/.*"([^"]+)".*/\1/')  

次のコマンドの VERSION を、ダウンロードする Argo CD のバージョンに置き換えます。

  1. curl -sSL -o /usr/ local /bin/argocd https://github.com/argoproj/argo-cd/releases/download/$VERSION/argocd-linux-amd64

argocd CLI に実行権限を付与します。

  1. $ chmod +x /usr/ローカル/bin/argocd
  2. $ argocd バージョン
  3. アルゴcd: v2.0.4+0842d44
  4. ビルド日: 2021-06-23T01:29:55Z
  5. Gitコミット: 0842d448107eb1397b251e63ec4d4bc1b4efdd6e
  6. GitTreeState: クリーン
  7. Goバージョン: go1.16
  8. コンパイラ: gc
  9. プラットフォーム: darwin/amd64
  10. argocd サーバー: v2.0.4+0842d44
  11. ビルド日: 2021-06-23T01:27:53Z
  12. Gitコミット: 0842d448107eb1397b251e63ec4d4bc1b4efdd6e
  13. GitTreeState: クリーン
  14. Goバージョン: go1.16
  15. コンパイラ: gc
  16. プラットフォーム: linux/amd64
  17. Ksonnet バージョン: v0.13.1
  18. カスタマイズバージョン: v3.9.4 2021-02-09T19:22:10Z
  19. Helm バージョン: v3.5.1+g32c2223
  20. Kubectl バージョン: v0.20.4
  21. Jsonnet バージョン: v0.17.0

これで、argocd コマンドが使用できるようになります。

Mac を使用している場合は、brew install argocd を使用して直接インストールできます。

Argo CD は、gRPC サーバー (CLI によって使用される) と HTTP/HTTPS サーバー (UI によって使用される) を実行します。両方のプロトコルは、argocd-server サーバーによって次のポートで公開されます。

  • 443 - HTTPS の実装
  • 80 - HTTP (HTTPS にリダイレクト)

Ingress を構成することでサービスを外部に公開できます。ここでも、設定には Traefik の IngressRoute を使用します。その他の Ingress コントローラーの設定については、公式ドキュメント https://argo-cd.readthedocs.io/en/stable/operator-manual/ingress/ を参照してください。

Traefik は同じポートで TCP 接続と HTTP 接続の両方を処理できるため、HTTP サービスと gRPC サービスを公開するために複数の IngressRoutes を定義する必要はありません。その後、API サービスは TLS を無効にして実行する必要があります。 argocd-server デプロイメントを編集して、argocd-server コマンドに --insecure フラグを追加します。

  1. 仕様:
  2. テンプレート:
  3. 仕様:
  4. コンテナ:
  5. -名前: argocd-server
  6. 指示:
  7. -argocd サーバー
  8. --静的アセット 
  9. - /共有/アプリ
  10. - --リポジトリサーバー 
  11. -argocd リポジトリサーバー:8081
  12. - --insecure # tls を無効にする必要があります。そうしないと、`redirected you too many times` になります。  

次に、以下に示すように IngressRoute リソース オブジェクトを作成します。 http サービスを https サービスに強制的にリダイレクトできる redirect-https ミドルウェアを作成しました。

  1. apiバージョン: traefik.containo.us/v1alpha1
  2. 種類: ミドルウェア
  3. メタデータ:
  4. 名前: リダイレクト-https
  5. 名前空間: argocd
  6. 仕様:
  7. リダイレクトスキーム:
  8. スキーム: https
  9. ---  
  10. apiバージョン: traefik.containo.us/v1alpha1
  11. 種類: IngressRoute
  12. メタデータ:
  13. 名前: argocd-server-http
  14. 名前空間: argocd
  15. 仕様:
  16. エントリーポイント:
  17. - ウェブ
  18. ルート:
  19. - 種類:ルール 
  20. 一致: ホスト(` argocd.k8s.local `)
  21. 優先度: 10
  22. ミドルウェア:
  23. -名前: リダイレクトhttps
  24. サービス:
  25. -名前: argocd-server
  26. ポート: 80
  27. - 種類:ルール 
  28. 一致: Host(`argocd.k8s. local `) && Headers(`Content-Type`, `application/grpc`)
  29. 優先度: 11
  30. ミドルウェア:
  31. -名前: リダイレクトhttps
  32. サービス:
  33. -名前: argocd-server
  34. ポート: 80
  35. スキーム: h2c
  36. ---  
  37. apiバージョン: traefik.containo.us/v1alpha1
  38. 種類: IngressRoute
  39. メタデータ:
  40. 名前: argocd-server
  41. 名前空間: argocd
  42. 仕様:
  43. エントリーポイント:
  44. -ウェブセキュア
  45. ルート:
  46. - 種類:ルール 
  47. 一致: ホスト(` argocd.k8s.local `)
  48. 優先度: 10
  49. サービス:
  50. -名前: argocd-server
  51. ポート: 80
  52. - 種類:ルール 
  53. 一致: Host(`argocd.k8s. local `) && Headers(`Content-Type`, `application/grpc`)
  54. 優先度: 11
  55. サービス:
  56. -名前: argocd-server
  57. ポート: 80
  58. スキーム: h2c
  59. TLS: いいえ
  60. certResolver:デフォルト 
  61. オプション: {}

作成が完了すると、argocd.k8s.local を通じて Argo CD サービスにアクセスできるようになります。ただし、ここで設定する証明書は自己署名されているため、初めてアクセスするときに安全ではないというメッセージが表示されることに注意してください。強制的にジャンプするだけです:

アルゴCDUI

デフォルトでは、管理者アカウントの初期パスワードは自動的に生成され、Argo CD インストールの名前空間にある password という名前の Secret オブジェクトの argocd-initial-admin-secret フィールドにプレーンテキストで保存されます。これを取得するには、次のコマンドを使用できます。

  1. kubectl -n argocd でシークレットを取得します。argocd-initial-admin-secret -o jsonpath= "{.data.password}" | base64 -d && エコー

ユーザー名 admin と上記のパスワード出力を使用してダッシュボードにログインします。 ArgoCD CLI コマンドライン ツールを使用してログインすることもできます。

  1. $ argocd ログインargocd.k8s.local  
  2.  
  3. 警告: サーバー証明書にエラーが発生しました: x509: 証明書はe2d1e856c987c94f3c918276921a61ba.6a98e1283291d1b7a23d19e240b6ee89.traefikに対して有効ですデフォルト argocd.k8sではありません地元。安全でない状態で続行しますか (y/n)?ええ
  4. ユーザー名: admin
  5. パスワード:
  6. 'admin:login' が正常にログインしました
  7. コンテキスト'argocd.k8s.local'が更新されました

CLI に正常にログインしたら、次のコマンドを使用してパスワードを変更できます。

  1. $ argocd アカウント更新-パスワード 
  2. ***現在の パスワード:
  3. *** 新しいパスワードを入力してください:
  4. *** 新しいパスワードを確認してください:
  5. パスワードが更新されました
  6. コンテキスト'argocd.k8s.local'が更新されました

クラスターの構成

Argo CD は複数のクラスターへのアプリケーションのデプロイをサポートしているため、アプリケーションを外部クラスターにデプロイする場合は、まず外部クラスターの認証情報を Argo CD に登録する必要があります。内部的にデプロイする場合 (Argo CD を実行している同じクラスター、デフォルトでは構成は不要)、アプリケーションの K8S APIServer アドレスとして https://kubernetes.default.svc を使用する必要があります。

まず、現在の kubeconfig 内のすべてのクラスター コンテキストを一覧表示します。

  1. kubectl config get-contexts -o名前 

リストからコンテキスト名を選択し、argocd cluster add CONTEXTNAME に指定します。たとえば、docker-desktop コンテキストの場合は、次を実行します。

  1. argocd クラスターdocker-desktopを追加

上記のコマンドは、ServiceAccount (argocd-manager) を kubectl コンテキストの kube-system 名前空間にインストールし、ServiceAccount を管理者レベルの ClusterRole にバインドします。 Argo CD はこの ServiceAccount トークンを使用してタスク管理 (展開/監視) を実行します。

  • argocd-manager-role は、限られた名前空間、グループ、カテゴリのセットに対してのみ作成、更新、パッチ、削除の権限を持つようにロールのルールを変更できますが、Argo CD の場合、取得、リスト、および監視の権限は ClusterRole の範囲内である必要があります。

アプリケーションを作成する

Git リポジトリ https://github.com/argoproj/argocd-example-apps.git は、Argo CD の動作を示すために使用できるゲストブック アプリケーションを含むサンプル リポジトリです。

CLI 経由でアプリケーションを作成する

argocd app create xxx コマンドを使用してアプリケーションを作成できます。

  1. $ argocd アプリ作成  - ヘルプ 
  2. アプリケーションを作成する
  3.  
  4. 使用法:
  5. argocd app create APPNAME [フラグ]
  6.  
  7. 例:
  8.  
  9. #ディレクトリアプリを作成する
  10. argocd アプリでゲストブックを作成します--repo https://github.com/argoproj/argocd-example-apps.git --path guestbook --dest-namespace default --dest-server https://kubernetes.default.svc --directory-recurse  
  11.  
  12. # Jsonnetアプリを作成する
  13. argocd アプリはjsonnet-guestbookを作成します--repo https://github.com/argoproj/argocd-example-apps.git --path jsonnet-guestbook --dest-namespace default --dest-server https://kubernetes.default.svc --jsonnet-ext-str replicas=2  
  14.  
  15. # Helmアプリを作成する
  16. argocd アプリはhelm-guestbookを作成します--repo https://github.com/argoproj/argocd-example-apps.git --path helm-guestbook --dest-namespace default --dest-server https://kubernetes.default.svc --helm-set replicaCount=2  
  17.  
  18. # HelmリポジトリからHelmアプリを作成する
  19. argocd アプリは、 nginx-ingress --repo https://kubernetes-charts.storage.googleapis.com --helm-chart nginx-ingress --revision 1.24.3 --dest-namespace default --dest-server https://kubernetes.default.svc を作成します 
  20.  
  21. # Kustomizeアプリを作成する
  22. argocd アプリは、kustomize-guestbook --repo https://github.com/argoproj/argocd-example-apps.git --path kustomize-guestbook --dest-namespace default --dest-server https://kubernetes.default.svc --kustomize-image gcr.io/heptio-images/ks-guestbook-demo:0.1 を作成します 
  23.  
  24. #カスタムツールを使用してアプリを作成します
  25. argocd アプリはksaneを作成します--repo https://github.com/argoproj/argocd-example-apps.git --path plugins/kasane --dest-namespace default --dest-server https://kubernetes.default.svc --config-management-plugin kasane  
  26.  
  27.  
  28. フラグ:
  29. ......

次のコマンドを実行するだけです。

  1. $ argocd アプリゲストブックを作成します--repo https://github.com/argoproj/argocd-example-apps.git --path guestbook --dest-server https://kubernetes.default.svc --dest-namespace default  
  2. アプリケーション「ゲストブック」が作成されました

UI 経由でアプリケーションを作成する

CLI ツールを使用してアプリケーションを作成するだけでなく、UI インターフェースを使用してアプリケーションを作成することもできます。 argocd.k8s.local ページに移動してログインし、以下に示すように「+ 新しいアプリ」ボタンをクリックします。

新しいアプリ

アプリケーションに guestbook という名前を付け、デフォルトのプロジェクトを使用し、同期ポリシーを手動に設定します。

アプリケーションを構成する

次に、リポジトリ URL を https://github.com/argoproj/argocd-example-apps.git として設定します。何らかの理由により、Gitee に移行されたリポジトリ アドレス https://gitee.com/cnych/argocd-example-apps を使用します。リビジョンを HEAD に設定し、パスを guestbook に設定します。

リポジトリを構成する

次に、下の [宛先] セクションで、クラスターを in-cluster に設定し、名前空間を default に設定します。

クラスターの構成

上記の情報を入力したら、ページ上部の「作成」をクリックしてゲストブック アプリケーションを作成します。作成が完了すると、現在のアプリケーションが OutOfSync 状態になっていることがわかります。

ゲストブックアプリケーション

アプリケーションをデプロイする

上記のアプリケーションを作成するときに使用した同期戦略は手動であるため、アプリケーションは作成後に自動的にデプロイされず、手動でアプリケーションをデプロイする必要があります。 CLI および UI インターフェイスを介して同期することもできます。

CLIを使用して同期する

アプリケーションが作成されたら、次のコマンドでそのステータスを表示できます。

  1. $ argocd アプリでゲストブックを取得
  2. 名前: ゲストブック
  3. プロジェクト:デフォルト 
  4. サーバー: https: //kubernetes.default.svc
  5. 名前空間:デフォルト 
  6. URL: https://argocd.k8s.ローカル/applications/guestbook
  7. リポジトリ: https://gitee.com/cnych/argocd-example-apps
  8. ターゲット: ヘッド
  9. パス: ゲストブック
  10. 同期ウィンドウ: 同期許可
  11. 同期ポリシー: <なし>
  12. 同期ステータス: HEADからの同期が切れています (53e28ff)
  13. 健康状態: 不明
  14.  
  15. グループ種類 名前空間名前ステータス ヘルスフック メッセージ
  16. サービスデフォルトguestbook-ui OutOfSync がありません
  17. アプリの展開のデフォルトguestbook-ui OutOfSync がありません

アプリケーションはまだデプロイされておらず、Kubernetes リソースもまだ作成されていないため、アプリケーションの状態は初期の OutOfSync 状態にあります。アプリケーションを同期 (デプロイ) するには、次のコマンドを実行します。

  1. argocd アプリ 同期 ゲストブック

このコマンドは、Git リポジトリからリソース リストを取得し、kubectl apply を実行してアプリケーションをデプロイします。上記のコマンドを実行すると、ゲストブック アプリケーションがクラスター内で実行されます。これで、リソース コンポーネント、ログ、イベントを表示し、ヘルス ステータスを評価できるようになりました。

UI経由で同期する

同期を開始するには、UI インターフェイスに同期ボタンを追加するだけです。

同期操作

同期が完了すると、リソースのステータスを確認できます。

同期完了

さまざまな視点から見ることもできます:

同期完了

kubectl を通じてデプロイされたリソースを表示することもできます。

  1. ➜ ~ kubectl ポッドを取得する
  2. 名前準備完了 ステータス 再起動 年齢
  3. guestbook-ui-6c96fb4bdc-nmk9b 1/1 実行中 0 2分22秒
  4. ➜ ~ kubectl svc を取得
  5. 名前タイプ クラスター IP 外部 IP ポート 年齢
  6. guestbook-ui ClusterIP 10.96.32.11 <なし> 80/TCP 11m
  7. kubernetes ClusterIP 10.96.0.1 <なし> 443/TCP 41d

Git リポジトリから同期した guestbook ディレクトリの下のリソース ステータスも同期されており、同期が成功したことが証明されています。

望ましい状態

<<:  Ceph分散ストレージシステムの最適化分析

>>:  プロデューサー実装ロジック - Kafka 知識システム (II)

推薦する

Mafengwo ビッグデータ プラットフォームにおける Kafka クラスターの最適化とアプリケーション拡張

Kafka は人気のあるメッセージ キュー ミドルウェアです。大量のデータをリアルタイムで処理でき、...

hostkvm: 給与付きのオーストラリアの VPS、必須のハイエンド Unicom AS9929 ネットワーク、40% 割引、月額 4.2 ドルから

2009 年に設立された Hostkvm は最近、オーストラリアの VPS 事業を開始しました。この...

Internet of Everythingを核としたエッジコンピューティングの時代が到来

Internet of Everythingの時代の到来により、IoTデバイスの数は爆発的に増加しま...

レンタカーウェブサイトの構築とメンテナンスのプロセスと内容

インターネットの発展に伴い、常に新しいものが登場しています。近年人気が高まっている「テナントグループ...

百度の入札ランキング方式とクリック価格計算の徹底分析

入札ランキングの仕組みは、すべての入札者が非常に関心を持っているトピックです。 Baidu の入札シ...

kvmla Japan 大阪データセンター VPS レビュー、無料 1G メモリ + 10% 割引コード、無料 Windows

kvmla は日本の大阪にある新しいデータセンターに移転しました。これは依然として KVM 仮想 V...

簡単な分析: インターネットマーケティングについて理解していること

インターネットの誕生以来、ブログマーケティング、フォーラムマーケティング、電子メールマーケティング、...

catalysthost-KVM 50% オフ/$5/1g メモリ/20g ハードディスク/1t トラフィック

Catalysthost は 2011 年初頭に設立され、現在は非常に評判の高い VPS プロバイダ...

Baidu のスナップショット ロールバックの原因はデータベース障害です。Web マスターはパニックになる必要はありません。

今日は木曜日なのでいい日です。ウェブサイトの改訂は1か月ほど続いていて、スパイダーは先週リリースされ...

Alibaba Cloud ハイブリッドクラウド災害復旧サービスがオンラインになりました!

デジタル変革の潮流の中で、データは企業の中核資産とみなされ、データセキュリティをどのように確保するか...

コンテナとKubernetesがあらゆるものを実行できる可能性を秘めている理由

[[281973]] 「Kubernetes がダンプ トラックである理由」では、ダンプ トラックが...

オープンソース時代に Red Hat が顧客の成功を達成する方法

「顧客の成功」という概念は古くから存在しています。 Wikipedia によると、カスタマー サクセ...

ビジネスの未来を築くデジタルと物理の統合

中国、北京、2017 年 12 月 7 日 – PTC は本日、北京で 2017 PTC Forum...

bcyhost: サンノゼ cn2 gia、1Gbps 帯域幅、月額 30 元から、新しいハードウェア KVM/DDR4/NVMe SSD

bcyhost(香港百草網絡有限公司)は、新たに設立されたVPSブランドです。コンピューター室に自社...