OpenIM Use Harbor Build Enterprise Mirror Repositories

Requirements OpenIM provides various public image registry addresses, such as aliyun, github, Docker Hub, and more. Read https://github.com/openimsdk/open-im-server/blob/main/docs/conversions/images.md for more image building guidelines. Most enterprises choose to set up their own image repository using Harbor, integrating it into their CI/CD pipeline to eventually replace Docker Hub and further reduce image storage costs. Additionally, in a production environment, Harbor generally enables TLS, so you will also need to prepare a valid domain name....

October 25, 2023 · 5 min · 987 words · Xinwei Xiong, Me

Learn About Automated Testing

Automated testing practices and strategies for GitHub open source Go projects in the cloud native field introduce As OpenIM, a popular project on Github, how to create value in the cloud native era is very important. OpenIM is a small and high-quality team, and we do not have particularly in-depth insights in automation. Continuous Integration and Continuous Delivery (CI/CD) using GitHub Actions: GitHub Actions provides a platform to automatically build and test Go language projects....

October 14, 2023 · 59 min · 12489 words · Xinwei Xiong, Me

In-depth understanding of the components of Kubernetes Kube apisserver

Deep understanding of Kube-APIServer kube-apiserver is one of the most important core components of Kubernetes and mainly provides the following functions Provides REST API interface for cluster management, including authentication and authorization, data verification, cluster status changes, etc. Provides a hub for data interaction and communication between other modules (other modules query or modify data through API Server, only API Server directly operates etcd) apiserver main functions: Authentication: Use the cluster to determine identity....

September 28, 2023 · 23 min · 4841 words · Xinwei Xiong, Me

Deep Dive Into the Components of Kubernetes Etcd

title: ‘In-depth understanding of Kubernetes and other components ETCD’ ShowRssButtonInSectionTermList: true cover.image: date : 2023-09-26T12:03:38+08:00 draft : false showtoc: true tocopen: true type: posts author: [“Xinwei Xiong”, “Me”] keywords: [“kubernetes”, “etcd”, “raft”, “go”] tags: blog kubernetes etcd -raft -go categories: Development Blog Kubernetes description: > This article will explain ETCD and Raft in depth and throughout. And analyze ETCD in depth from the perspective of Kubernetes. Before starting ETCD is the hardest of all components in Kubernetes because ETCD is stateful, not stateless....

September 28, 2023 · 30 min · 6261 words · Xinwei Xiong, Me

Design Proposal: Simplified Port Configuration via Config Files for Kubernetes Deployment

Introduction In the current module’s execution, numerous ports (ws, api, rpc, Prometheus) are passed directly. This approach can be cumbersome and doesn’t align with Kubernetes' best practices where a pod typically exposes only one port (either 80 or 443). This proposal suggests transitioning to a configuration file-centric approach, while still retaining the capability to pass ports directly when needed. Goals Simplify the port configuration for Kubernetes deployment. Prioritize port values passed as arguments over configuration file values....

September 18, 2023 · 2 min · 402 words · Xinwei Xiong, Me

OpenIM clustering design Kubernetes deploy concludes

Conference and Reference Links Conference reference documents: https://nsddd.notion.site/2899028707604b8090b36677c031cdf8?pvs=4 Video playback: Bilibili: https://www.bilibili.com/video/BV1s8411q7Um/?spm_id_from=333.999.0.0 Comment: I think that middleware can be replaced with https://kubeblocks.io which can help you manage multiple database middlewares. im reads the configuration information, and reads the config/ directory. The config.yaml hard-coded in the code can be automatically divided into rpc for different services, and then unified directories. By default, the directory is read from the binary running path....

September 17, 2023 · 14 min · 2771 words · Xinwei Xiong, Me

The Art of Asking Questions in Open Source Communities

Before asking a question Before you ask a technical question via email, newsgroup, or chat room, please do the following: Try searching for answers in old articles on the forum where you are asking a question. Try searching online to find the answer. Try reading the manual to find the answer. Try reading the Frequently Asked Questions document (FAQ) to find the answer. Try to check or experiment on your own to find the answer....

September 17, 2023 · 48 min · 10158 words · Xinwei Xiong, Me

Open Source Contribution Guidelines

Task Assignment time:Within a week Complete first contribute, purpose: to understand the contribution process of open source projects Complete the construction of sealos development environment Understand the basic usage, core concepts, and functions of core components of kuberentes Basic usage: Create a pod and understand what a pod is Create a deployment and understand the relationship between deployment and pod Create a configmap and understand how to mount configuration files to pods Create a service and access pods in the cluster through service Core concepts and functions of core components: kubectl apiserver controller-manager scheduler kubelet kube-proxy etcd What do these components do?...

September 16, 2023 · 15 min · 3046 words · Xinwei Xiong, Me

Cross Platform Compilation

Preface https://github.com/OpenIMSDK/Open-IM-Server/issues/432 Many places now have requirements for local adaptation of services. Generally, localized platforms provide an arm version of Linux cloud environment for us to deploy services, so it is necessary to build an arm version of the image. Build plan In the above issue, we describe the general construction ideas and solution steps. Let’s take a look at the construction plan. We take the most commonly used amd machine as an example to compile arm....

September 16, 2023 · 14 min · 2788 words · Xinwei Xiong, Me

Github Actions Advanced Techniques

Create actions **actions are individual tasks that can be combined to create jobs and custom workflows. You can create your own actions, or use and customize actions shared by the GitHub community. ** Actions can be created by writing custom code that interacts with your repository in any way you like, including integrating with GitHub’s API and any publicly available third-party API. You can write your own actions for use in workflows, or share the actions you build with the GitHub community....

September 16, 2023 · 44 min · 9236 words · Xinwei Xiong, Me